From 56d9dadf1f4a884a35585641a1e26dddd58393f4 Mon Sep 17 00:00:00 2001 From: Don Allingham Date: Thu, 22 Nov 2001 21:08:16 +0000 Subject: [PATCH] First attempt at alternate calendars svn: r576 --- src/Date.py | 557 ++++++++++++++++++++++++++------------------ src/EventEdit.py | 36 ++- src/GrampsParser.py | 10 +- src/HtmlDoc.py | 6 +- src/ReadXML.py | 4 - src/RelLib.py | 15 ++ src/WriteXML.py | 2 +- src/dialog.glade | 5 + 8 files changed, 392 insertions(+), 243 deletions(-) diff --git a/src/Date.py b/src/Date.py index 48571de2b..2592eebf6 100644 --- a/src/Date.py +++ b/src/Date.py @@ -21,9 +21,9 @@ "Support for the dates" from re import IGNORECASE, compile - import string +from Calendar import * from intl import gettext _ = gettext @@ -43,6 +43,21 @@ _cal2index = { _("Gregorian") : 0, _("Hebrew") : 2, _("French Republican"): 3 } +_fmonth = [ + "Vendemiaire", "Brumaire", "Frimaire", "Nivose", "Pluviose", + "Ventose", "Germinal", "Floreal", "Prairial", "Messidor", "Thermidor", + "Fructidor", "Extra", ] + +_fmonth2num = { + "VEND" : 1, "BRUM" : 2, "FRIM" : 3, "NIVO" : 4, "PLUV" : 5, + "VENT" : 6, "GERM" : 7, "FLOR" : 8, "PRAI" : 8, "MESS" : 10, + "THER" :11, "FRUC" :12, "EXTR" : 13 } + +_hmonth = [ + "", "Tishri", "Heshvan", "Kislev", "Tevet", "Shevat", "AdarI", + "AdarII", "Nisan", "Iyyar", "Sivan", "Tammuz", "Av", "Elul" +] + #------------------------------------------------------------------------- # # Date class @@ -69,7 +84,7 @@ class Date: def __init__(self,source=None): if source: self.start = SingleDate(source.start) - if source.start: + if source.stop: self.stop = SingleDate(source.stop) else: self.stop = None @@ -88,6 +103,9 @@ class Date: def set_calendar(self,val): self.calendar = val + self.start.convert_to(val) + if self.stop: + self.stop.convert_to(val) def get_start_date(self): return self.start @@ -95,6 +113,7 @@ class Date: def get_stop_date(self): if self.stop == None: self.stop = SingleDate() + self.stop.calendar = self.calendar return self.stop def getYear(self): @@ -118,16 +137,19 @@ class Date: def getStopYear(self): if self.stop == None: self.stop = SingleDate() + self.stop.calendar = self.calendar return self.get_stop_date().getYear() def getStopMonth(self): if self.stop == None: self.stop = SingleDate() + self.stop.calendar = self.calendar return self.get_stop_date().getMonth() def getStopDay(self): if self.stop == None: self.stop = SingleDate() + self.stop.calendar = self.calendar return self.get_stop_date().getDay() def getText(self): @@ -150,6 +172,7 @@ class Date: self.start.set(matches[1]) if self.stop == None: self.stop = SingleDate() + self.stop.calendar = self.calendar self.stop.set(matches[3]) self.range = 1 else: @@ -164,26 +187,105 @@ class Date: def getDate(self): if self.range == 0: - return _func(self.start) + return self.start.getDate() elif self.range == -1: return self.text else: - d1 = _func(self.start) - d2 = _func(self.stop) + d1 = self.start.getDate() + d2 = self.stop.getDate() + return "%s %s %s %s" % ( _("from"),d1,_("to"),d2 ) + + def getFrench(self): + if self.range == 0: + return self.start.getFrench() + elif self.range == -1: + return self.text + else: + d1 = self.start.displayFrench(self.start) + d2 = self.start.displayFrench(self.stop) + return "%s %s %s %s" % ( _("from"),d1,_("to"),d2 ) + + def getHebrew(self): + if self.range == 0: + return self.start.displayHebrew() + elif self.range == -1: + return self.text + else: + d1 = self.start.displayHebrew(self.start) + d2 = self.start.displayHebrew(self.stop) + return "%s %s %s %s" % ( _("from"),d1,_("to"),d2 ) + + def getJulian(self): + if self.range == 0: + return self.start.displayJulian() + elif self.range == -1: + return self.text + else: + d1 = self.start.displayJulian(self.start) + d2 = self.start.displayJulian(self.stop) return "%s %s %s %s" % ( _("from"),d1,_("to"),d2 ) def getQuoteDate(self): - if self.range == 0: - return _func(self.start) + if self.calendar == GREGORIAN: + return self.getGregorianQuoteDate() + elif self.calendar == JULIAN: + return self.getJulianQuoteDate() + elif self.calendar == HEBREW: + return self.getHebrewQuoteDate() + else: + return self.getFrenchQuoteDate() + + def getGregorianQuoteDate(self): + if self.range == 0: + return _func(self.start) elif self.range == -1: if self.text: return '"%s"' % self.text else: return '' - else: + else: d1 = _func(self.start) d2 = _func(self.stop) - return "%s %s %s %s" % ( _("from"),d1,_("to"), d2) + return "%s %s %s %s" % ( _("from"),d1,_("to"), d2) + + def getFrenchQuoteDate(self): + if self.range == 0: + return "%s (%s)" % (self.start.displayFrench(),_("French")) + elif self.range == -1: + if self.text: + return '"%s (%s)"' % (self.text,_("French")) + else: + return '%s' % _("French") + else: + d1 = self.start.getFrench() + d2 = self.stop.getFrench() + return "%s %s %s %s (%s)" % ( _("from"),d1,_("to"), d2,_("French")) + + def getJulianQuoteDate(self): + if self.range == 0: + return "%s (%s)" % (self.start.displayJulian(),_("Julian")) + elif self.range == -1: + if self.text: + return '"%s (%s)"' % (self.text,_("Julian")) + else: + return '%s' % _("Julian") + else: + d1 = self.start.getJulian() + d2 = self.stop.getJulian() + return "%s %s %s %s (%s)" % ( _("from"),d1,_("to"), d2,_("Julian")) + + def getHebrewQuoteDate(self): + if self.range == 0: + return "%s (%s)" % (self.start.displayHebrew(),_("Hebrew")) + elif self.range == -1: + if self.text: + return '"%s (%s)"' % (self.text,_("Hebrew")) + else: + return '%s' % _("Hebrew") + else: + d1 = self.start.getHebrew() + d2 = self.stop.getHebrew() + return "%s %s %s %s (%s)" % ( _("from"),d1,_("to"), d2,_("Hebrew")) def getSaveDate(self): if self.range == 1: @@ -213,27 +315,6 @@ class Date: else: return 0 - def quick_set(self,text): - try: - match = Date.efmt.match(text) - if match: - matches = match.groups() - self.start.set(matches[1]) - if self.stop == None: - self.stop = SingleDate() - self.stop.set(matches[3]) - self.range = 1 - else: - try: - self.start.quick_set(text) - self.range = 0 - except: - self.start.set(text) - self.range = 0 - except: - self.range = -1 - self.text = text - #------------------------------------------------------------------------- # # @@ -342,50 +423,20 @@ class SingleDate: fmt5 = compile(start + "(\d+)\s*$", IGNORECASE) fmt6 = compile(start + "(\S+)\s*$", IGNORECASE) - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def __init__(self,source=None): if source: self.month = source.month self.day = source.day self.year = source.year self.mode = source.mode + self.calendar = source.calendar else: self.month = -1 self.day = -1 self.year = -1 self.mode = SingleDate.exact + self.calendar = GREGORIAN - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- - def my__cmp__(self,other): - if other == None: - return 0 - elif self.year != other.year: - return cmp(self.year,other.year) - elif self.month != other.month: - return cmp(self.month,other.month) - elif self.day != other.day: - return cmp(self.day,other.day) - elif self.mode != other.mode: - if self.mode == SingleDate.exact: - return -1 - else: - return 1 - else: - return 0 - - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def setMode(self,val): if val == None: self.mode = SingleDate.exact @@ -393,73 +444,33 @@ class SingleDate: val = string.lower(val) self.mode = SingleDate.m2v[val] - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def setMonth(self,val): if val > 12: self.month = -1 else: self.month = val - 1 - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def getMonth(self): return self.month + 1 - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def setDay(self,val): self.day = val - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def getDay(self): return self.day - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def setYear(self,val): self.year = val - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def getYear(self): return self.year - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def setMonthStr(self,text): try: self.month = SingleDate.m2num[string.lower(text[0:3])] except KeyError: self.setMonthStrEng(text) - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def setMonthStrEng(self,text): try: self.month = SingleDate.em2num[string.lower(text[0:3])] @@ -487,11 +498,6 @@ class SingleDate: d = "-%02d" % self.day return "%s%s%s" % (y,m,d) - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def getSaveDate(self): retval = "" @@ -553,11 +559,6 @@ class SingleDate: return retval - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def getFmt2(self): if self.month == -1 and self.day == -1 and self.year == -1 : return "" @@ -588,11 +589,6 @@ class SingleDate: return retval - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def getFmt3(self): retval = "" @@ -625,11 +621,6 @@ class SingleDate: return retval - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def getFmt10(self): retval = "" @@ -661,11 +652,6 @@ class SingleDate: return retval - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def get_mmddyyyy(self,sep): retval = "" @@ -696,11 +682,6 @@ class SingleDate: return retval - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def get_yyyymmdd(self,sep): retval = "" @@ -731,35 +712,15 @@ class SingleDate: return retval - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def getFmt4(self): return self.get_mmddyyyy("/") - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def getFmt5(self): return self.get_mmddyyyy("-") - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def getFmt8(self): return self.get_mmddyyyy(".") - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def get_ddmmyyyy(self,sep): retval = "" @@ -788,52 +749,22 @@ class SingleDate: retval = "%s %s" % (_("AFTER"),retval) return retval - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- + def getFmt6(self): return self.get_ddmmyyyy("/") - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def getFmt7(self): return self.get_ddmmyyyy("-") - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def getFmt9(self): return self.get_ddmmyyyy(".") - - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def getFmt11(self): return self.get_yyyymmdd("/") - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def getFmt12(self): return self.get_yyyymmdd("-") - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def getFmt13(self): return self.get_yyyymmdd(".") @@ -846,14 +777,60 @@ class SingleDate: getFmt7, getFmt8, getFmt9, getFmt10, getFmt11, getFmt12, getFmt13] - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- + def displayFrench(self): + if self.year==-1: + if self.month == -1: + return "" + elif self.day == -1: + return _fmonth[self.month] + else: + return "%02 %s" % (self.day,_fmonth[self.month]) + elif self.month == -1: + return "%d" % self.year + elif self.day == -1: + return "%s %d" % (_fmonth[self.month],self.year) + else: + return "%02d %s %d" % (self.day,_fmonth[self.month],self.year) + + def displayHebrew(self): + if self.year==-1: + if self.month == -1: + return "" + elif self.day == -1: + return _hmonth[self.month] + else: + return "%02 %s" % (self.day,_hmonth[self.month]) + elif self.month == -1: + return "%d" % self.year + elif self.day == -1: + return "%s %d" % (_hmonth[self.month],self.year) + else: + return "%02d %s %d" % (self.day,_hmonth[self.month],self.year) + + def displayJulian(self): + if self.year==-1: + if self.month == -1: + return "" + elif self.day == -1: + return self.mname[self.month] + else: + return "%02 %s" % (self.day,self.mname[self.month]) + elif self.month == -1: + return "%d" % self.year + elif self.day == -1: + return "%s %d" % (self.mname[self.month],self.year) + else: + return "%02d %s %d" % (self.day,self.mname[self.month],self.year) + def getDate(self): - function = SingleDate.fmtFunc[Date.formatCode] - return function(self) + if self.calendar == GREGORIAN: + return _func(self) + elif self.calendar == JULIAN: + return self.displayJulian() + elif self.calendar == HEBREW: + return self.displayHebrew() + else: + return self.displayFrench() def setIsoDate(self,v): data = string.split(v) @@ -875,18 +852,12 @@ class SingleDate: else: self.day = -1 - def getModeVal(self): return self.mode def setModeVal(self,val): self.mode = val - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def getMode(self,val): if val == None: self.mode = SingleDate.exact @@ -899,12 +870,72 @@ class SingleDate: else: self.mode = SingleDate.exact - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- def set(self,text): + if self.calendar == GREGORIAN: + self.set_gregorian(text) + elif self.calendar == JULIAN: + self.set_julian(text) + elif self.calendar == HEBREW: + self.set_hebrew(text) + else: + self.set_french(text) + + def set_french(self,text): + match = SingleDate.fmt2.match(text) + if match: + matches = match.groups() + mon = string.upper(matches[2])[0:4] + if _fmonth2num.has_key(mon): + self.setYear(int(matches[3])) + self.setMonth(_fmonth2num[mon]) + self.setDay(int(matches[1])) + return + else: + self.setYear(int(matches[3])) + self.setMonth(-1) + self.setDay(-1) + return + match = SingleDate.fmt3.match(text) + if match: + matches = match.groups() + self.setYear(int(matches[3])) + self.setMonth(int(matches[2])) + self.setDay(int(matches[1])) + else: + self.setYear(-1) + self.setMonth(-1) + self.setDay(-1) + + def set_hebrew(self,text): + pass + + def set_julian(self,text): + match = SingleDate.fmt2.match(text) + if match: + matches = match.groups() + mon = string.lower(matches[2])[0:3] + if SingleDate.m2num.has_key(mon): + self.setYear(int(matches[3])) + self.setMonth(SingleDate.m2num[mon]+1) + self.setDay(int(matches[1])) + return + else: + self.setYear(int(matches[3])) + self.setMonth(-1) + self.setDay(-1) + return + match = SingleDate.fmt3.match(text) + if match: + matches = match.groups() + self.setYear(int(matches[3])) + self.setMonth(int(matches[2])) + self.setDay(int(matches[1])) + else: + self.setYear(-1) + self.setMonth(-1) + self.setDay(-1) + + def set_gregorian(self,text): match = SingleDate.fmt2.match(text) if match != None: matches = match.groups() @@ -1063,40 +1094,98 @@ class SingleDate: raise Date.Error,text - #-------------------------------------------------------------------- - # - # - # - #-------------------------------------------------------------------- - def quick_set(self,text): - match = SingleDate.quick.match(text) - if match != None: - matches = match.groups() - self.setMode(matches[0]) - self.setMonthStrEng(matches[2]) - if self.month == -1: - raise Date.Error,text - self.day = int(matches[1]) - if len(matches) == 4: - val = matches[3] - if val == None or val[0] == '?': - self.year = -1 - else: - self.year = int(val) - else: - self.year = -1 + def get_sdn(self): + if self.year == -1: + return 0 + if self.month == -1: + month = 1 else: + month = self.month + 1 + if self.day == -1: + day = 1 + else: + day = self.day + + if self.calendar == GREGORIAN: + sdn = gregorian_to_sdn(self.year,month,day) + elif self.calendar == FRENCH: + sdn = french_to_sdn(self.year,month,day) + if self.calendar == HEBREW: + sdn = jewish_to_sdn(self.year,month,day) + if self.calendar == JULIAN: + sdn = julian_to_sdn(self.year,month,day) + return sdn + + def convert_to(self,val): + if val == GREGORIAN: + self.convertGregorian() + elif val == JULIAN: + self.convertJulian() + elif val == HEBREW: + self.convertHebrew() + else: + self.convertFrench() + + def convertFrench(self): + sdn = self.get_sdn() + (y,m,d) = sdn_to_french(sdn) + self.calendar = FRENCH + if y == 0 and m == 0 and d == 0: self.year = -1 self.month = -1 self.day = -1 - raise Date.Error,text + else: + self.year = y + self.month = m-1 + self.day = d + def convertHebrew(self): + sdn = self.get_sdn() + (y,m,d) = sdn_to_jewish(sdn) + self.calendar = HEBREW + if y == 0 and m == 0 and d == 0: + self.year = -1 + self.month = -1 + self.day = -1 + else: + self.year = y + self.month = m-1 + self.day = d + + def convertJulian(self): + sdn = self.get_sdn() + self.calendar = JULIAN + (y,m,d) = sdn_to_julian(sdn) + if y == 0 and m == 0 and d == 0: + self.year = -1 + self.month = -1 + self.day = -1 + else: + self.year = y + self.month = m-1 + self.day = d + + def convertGregorian(self): + sdn = self.get_sdn() + self.calendar = GREGORIAN + (y,m,d) = sdn_to_gregorian(sdn) + if y == 0 and m == 0 and d == 0: + self.year = -1 + self.month = -1 + self.day = -1 + else: + self.year = y + self.month = m-1 + self.day = d + #------------------------------------------------------------------------- # # # #------------------------------------------------------------------------- def compare_dates(f,s): + if f.calendar != s.calendar: + return 1 if f.range == -1 and s.range == -1: return cmp(f.text,s.text) if f.range == -1 or s.range == -1: @@ -1108,10 +1197,19 @@ def compare_dates(f,s): return cmp(first.year,second.year) elif first.month != second.month: return cmp(first.month,second.month) - else: + elif f.range != 1: return cmp(first.day,second.day) + else: + first = f.get_stop_date() + second = s.get_stop_date() + if first.year != second.year: + return cmp(first.year,second.year) + elif first.month != second.month: + return cmp(first.month,second.month) + else: + return cmp(first.day,second.day) - + _func = SingleDate.fmtFunc[0] if __name__ == "__main__": @@ -1145,4 +1243,11 @@ if __name__ == "__main__": print "----------" checkit("BET. 1994 - 1999") + sdn = french_to_sdn(1,1,1) + print sdn_to_gregorian(sdn) + d = Date() + d.get_start_date().setMonth(9) + d.get_start_date().setYear(1792) + d.get_start_date().setDay(22) + print d.get_start_date().getFrench() diff --git a/src/EventEdit.py b/src/EventEdit.py index 93e3af8be..237b98543 100644 --- a/src/EventEdit.py +++ b/src/EventEdit.py @@ -26,6 +26,7 @@ from string import strip # #------------------------------------------------------------------------- import libglade +import gtk #------------------------------------------------------------------------- # @@ -36,7 +37,10 @@ import Sources import const import utils import Config +from Date import compare_dates from RelLib import * +from intl import gettext +_ = gettext #------------------------------------------------------------------------- # @@ -48,6 +52,7 @@ class EventEditor: def __init__(self,parent,name,list,trans,event,def_placename,read_only): self.parent = parent self.event = event + self.date = Date(event.getDateObj()) self.trans = trans if event: self.srcreflist = self.event.getSourceRefList() @@ -93,7 +98,7 @@ class EventEditor: self.place_field.set_text(event.getPlaceName()) if (def_placename): self.place_field.set_text(def_placename) - self.date_field.set_text(event.getDate()) + self.date_field.set_text(event.getPrefDate()) self.cause_field.set_text(event.getCause()) self.descr_field.set_text(event.getDescription()) self.priv.set_active(event.getPrivacy()) @@ -106,8 +111,9 @@ class EventEditor: if (def_placename): self.place_field.set_text(def_placename) - if (not read_only): + if not read_only: self.name_field.select_region(0, -1) + self.window.set_data("o",self) self.top.signal_autoconnect({ "destroy_passed_object" : utils.destroy_passed_object, @@ -116,13 +122,29 @@ class EventEditor: "on_source_clicked" : self.on_edit_source_clicked }) + menu = gtk.GtkMenu() + names = [ _("Gregorian"), _("Julian"), _("Hebrew"), ("French") ] + for index in range(0,len(names)): + item = gtk.GtkMenuItem(names[index]) + item.set_data("d",index) + item.connect("activate",self.on_menu_changed) + item.show() + menu.append(item) + menu.set_active(self.date.get_calendar()) + self.calendar.set_menu(menu) + + def on_menu_changed(self,obj): + self.date.set_calendar(obj.get_data("d")) + self.date_field.set_text(self.date.getDate()) + def on_edit_source_clicked(self,obj): Sources.SourceSelector(self.srcreflist,self.parent,src_changed) def on_event_edit_ok_clicked(self,obj): ename = self.name_field.get_text() - edate = self.date_field.get_text() + self.date.set(self.date_field.get_text()) + ecause = self.cause_field.get_text() eplace = strip(self.place_field.get_text()) eplace_obj = utils.get_place_from_list(self.place_combo) @@ -140,7 +162,7 @@ class EventEditor: eplace_obj.set_title(eplace) self.parent.db.addPlace(eplace_obj) - self.update_event(ename,edate,eplace_obj,edesc,enote,epriv,ecause) + self.update_event(ename,self.date,eplace_obj,edesc,enote,epriv,ecause) self.parent.redraw_event_list() utils.destroy_passed_object(obj) @@ -161,8 +183,10 @@ class EventEditor: self.event.setNote(note) self.parent.lists_changed = 1 - if self.event.getDate() != date: - self.event.setDate(date) + dobj = self.event.getDateObj() + + if compare_dates(dobj,date) != 0: + self.event.setDateObj(date) self.parent.lists_changed = 1 if self.event.getCause() != cause: diff --git a/src/GrampsParser.py b/src/GrampsParser.py index 3a50a74da..faaeb56c1 100644 --- a/src/GrampsParser.py +++ b/src/GrampsParser.py @@ -385,8 +385,8 @@ class GrampsParser: d = self.event.getDateObj() d.get_start_date().setIsoDate(attrs['start']) d.get_stop_date().setIsoDate(attrs['stop']) - if attrs.has_key("dpref"): - d.set_calendar(int(attrs['dpref'])) + if attrs.has_key("calendar"): + d.set_calendar(int(attrs['calendar'])) def start_dateval(self,attrs): if self.address: @@ -401,8 +401,8 @@ class GrampsParser: else: d.get_start_date().getMode(None) - if attrs.has_key("dpref"): - d.set_calendar(int(attrs['dpref'])) + if attrs.has_key("calendar"): + d.set_calendar(int(attrs['calendar'])) def start_datestr(self,attrs): if self.address: @@ -519,7 +519,7 @@ class GrampsParser: def stop_sdate(self,tag): date = Date() - date.quick_set(u2l(tag)) + date.set(u2l(tag)) self.source_ref.setDate(date) def stop_street(self,tag): diff --git a/src/HtmlDoc.py b/src/HtmlDoc.py index 99a0f6c1a..a21034f56 100644 --- a/src/HtmlDoc.py +++ b/src/HtmlDoc.py @@ -263,7 +263,11 @@ class HtmlDoc(TextDoc): return self.empty = 0 - im = PIL.Image.open(name) + try: + im = PIL.Image.open(name) + except: + return + nx,ny = im.size scale = float(nx)/float(ny) diff --git a/src/ReadXML.py b/src/ReadXML.py index e9bafbcd3..3362fa501 100644 --- a/src/ReadXML.py +++ b/src/ReadXML.py @@ -40,7 +40,6 @@ from gnome.ui import GnomeErrorDialog #------------------------------------------------------------------------- from RelLib import * from GrampsParser import GrampsParser, GrampsImportParser -from xml.parsers.expat import ExpatError from intl import gettext _ = gettext @@ -96,9 +95,6 @@ def importData(database, filename, callback): try: parser.parse(xml_file) - except ExpatError,msg: - errmsg = "%s\n%s" % (_("Error reading %s") % filename,str(msg)) - GnomeErrorDialog(errmsg) except IOError,msg: GnomeErrorDialog(_("Error reading %s") % filename + "\n" + str(msg)) import traceback diff --git a/src/RelLib.py b/src/RelLib.py index f1b27d3b4..35313333b 100644 --- a/src/RelLib.py +++ b/src/RelLib.py @@ -561,6 +561,11 @@ class Address(DataObj): lived at the address""" return self.date.getDate() + def getPrefDate(self): + """returns a string representation of the date that the person + lived at the address""" + return self.date.getPrefDate() + def getDateObj(self): """returns the Date object associated with the Address""" return self.date @@ -1128,6 +1133,12 @@ class Event(DataObj): return self.date.getDate() return "" + def getPrefDate(self) : + """returns a string representation of the date of the Event instance""" + if self.date: + return self.date.getDate() + return "" + def getQuoteDate(self) : """returns a string representation of the date of the Event instance, enclosing the results in quotes if it is not a valid date""" @@ -1141,6 +1152,10 @@ class Event(DataObj): self.date = Date() return self.date + def setDateObj(self,date): + """sets the Date object associated with the Event""" + self.date = date + def getSaveDate(self) : """returns the date of the Event in the form wanted by gramps XML save""" if self.date: diff --git a/src/WriteXML.py b/src/WriteXML.py index fcaf6ce68..79dc46a41 100644 --- a/src/WriteXML.py +++ b/src/WriteXML.py @@ -217,7 +217,7 @@ def write_date(g,date,indent=1): cal = date.get_calendar() if cal != 0: - calstr = 'dpref="%s"' % fix(str(cal)) + calstr = ' calendar="%s"' % fix(str(cal)) else: calstr = '' diff --git a/src/dialog.glade b/src/dialog.glade index d2c368b1c..43fb8d184 100644 --- a/src/dialog.glade +++ b/src/dialog.glade @@ -569,6 +569,11 @@ False Selects the calendar format for display True + + clicked + on_calendar_clicked + Wed, 21 Nov 2001 15:24:48 GMT + Gregorian Julian Hebrew