* src/DateEdit.py: use global date displayer/parser

* src/DateHandler.py: provide global date displayer/parser
instead of having a bunch of different classes have their
own handler that needs to be updated with the handlers change.
* src/EditPerson.py: use global date displayer/parser
* src/EventEdit.py: use global date displayer/parser
* src/FamilyView.py: use global date displayer/parser
* src/GenericFilter.py: use global date displayer/parser
* src/GrampsCfg.py: remove unused statements
* src/ImageSelect.py: use global date displayer/parser
* src/Marriage.py: use global date displayer/parser
* src/ReadXML.py: use global date displayer/parser
* src/RelLib.py: don't require get_display_info, eliminate
needed for importing const and GrampsCfg
* src/SelectChild.py: don't require get_display_info
* src/Sources.py: use global date displayer/parser
* src/plugins/RelCalc.py: don't require get_display_info


svn: r3841
This commit is contained in:
Don Allingham
2004-12-29 05:06:10 +00:00
parent 3400540229
commit ad337312d4
15 changed files with 129 additions and 136 deletions

View File

@@ -1,3 +1,22 @@
2004-12-28 Don Allingham <dallingham@users.sourceforge.net>
* src/DateEdit.py: use global date displayer/parser
* src/DateHandler.py: provide global date displayer/parser
instead of having a bunch of different classes have their
own handler that needs to be updated with the handlers change.
* src/EditPerson.py: use global date displayer/parser
* src/EventEdit.py: use global date displayer/parser
* src/FamilyView.py: use global date displayer/parser
* src/GenericFilter.py: use global date displayer/parser
* src/GrampsCfg.py: remove unused statements
* src/ImageSelect.py: use global date displayer/parser
* src/Marriage.py: use global date displayer/parser
* src/ReadXML.py: use global date displayer/parser
* src/RelLib.py: don't require get_display_info, eliminate
needed for importing const and GrampsCfg
* src/SelectChild.py: don't require get_display_info
* src/Sources.py: use global date displayer/parser
* src/plugins/RelCalc.py: don't require get_display_info
2004-12-27 Don Allingham <dallingham@users.sourceforge.net> 2004-12-27 Don Allingham <dallingham@users.sourceforge.net>
* src/ChooseParents.py: remove TreeModelFilter stuff. * src/ChooseParents.py: remove TreeModelFilter stuff.
* src/GenericFilter.py: Add a combobox that handles filter * src/GenericFilter.py: Add a combobox that handles filter

View File

@@ -84,16 +84,13 @@ QUAL_TEXT = (
(Date.QUAL_ESTIMATED, _('Estimated')), (Date.QUAL_ESTIMATED, _('Estimated')),
(Date.QUAL_CALCULATED, _('Calculated')) ) (Date.QUAL_CALCULATED, _('Calculated')) )
dd = DateHandler.create_display()
dp = DateHandler.create_parser()
CAL_TO_MONTHS_NAMES = { CAL_TO_MONTHS_NAMES = {
Date.CAL_GREGORIAN : dd._MONS, Date.CAL_GREGORIAN : DateHandler.displayer._MONS,
Date.CAL_JULIAN : dd._MONS, Date.CAL_JULIAN : DateHandler.displayer._MONS,
Date.CAL_HEBREW : dd._hebrew, Date.CAL_HEBREW : DateHandler.displayer._hebrew,
Date.CAL_FRENCH : dd._french, Date.CAL_FRENCH : DateHandler.displayer._french,
Date.CAL_PERSIAN : dd._persian, Date.CAL_PERSIAN : DateHandler.displayer._persian,
Date.CAL_ISLAMIC : dd._islamic } Date.CAL_ISLAMIC : DateHandler.displayer._islamic }
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@@ -148,7 +145,7 @@ class DateEdit:
text = unicode(self.text_obj.get_text()) text = unicode(self.text_obj.get_text())
if text != self.text: if text != self.text:
self.text = text self.text = text
self.date_obj.copy(dp.parse(text)) self.date_obj.copy(DateHandler.parser.parse(text))
self.check() self.check()
def invoke_date_editor(self,obj): def invoke_date_editor(self,obj):
@@ -161,7 +158,7 @@ class DateEdit:
the_date = date_dialog.return_date the_date = date_dialog.return_date
if the_date: if the_date:
self.date_obj.copy(the_date) self.date_obj.copy(the_date)
self.text_obj.set_text(dd.display(self.date_obj)) self.text_obj.set_text(DateHandler.displayer.display(self.date_obj))
self.check() self.check()
#------------------------------------------------------------------------- #-------------------------------------------------------------------------

View File

@@ -68,44 +68,6 @@ _lang_to_display = {
'en' : DateDisplay.DateDisplay, 'en' : DateDisplay.DateDisplay,
} }
#-------------------------------------------------------------------------
#
# Functions
#
#-------------------------------------------------------------------------
def create_parser():
"""
Creates a new date parser class, based on the current locale.
@returns: DateParser class specific to the locale specific. If
no parser exists for the current locale, the English language
parser is returned.
@rtype: DateParser
"""
try:
return _lang_to_parser[_lang]()
except:
import traceback
traceback.print_stack()
print "Date parser for",_lang,"not available"
return DateParser.DateParser()
def create_display():
"""
Creates a new date displayer class, based on the current locale.
@returns: DateDisplay class specific to the locale specific. If
no parser exists for the current locale, the English language
parser is returned.
@rtype: DateDisplay
"""
try:
val = GrampsGconfKeys.get_date_format(_lang_to_display[_lang].formats)
return _lang_to_display[_lang](val)
except:
print "Date displayer for",_lang,"not available"
return DateDisplay.DateDisplay(3)
def get_date_formats(): def get_date_formats():
""" """
Returns the lists supported formats for date parsers and displayers Returns the lists supported formats for date parsers and displayers
@@ -149,3 +111,24 @@ from Plugins import load_plugins
from const import datesDir from const import datesDir
load_plugins(datesDir) load_plugins(datesDir)
#-------------------------------------------------------------------------
#
# Initialize global parser
#
#-------------------------------------------------------------------------
try:
parser = _lang_to_parser[_lang]()
except:
import traceback
traceback.print_stack()
print "Date parser for",_lang,"not available, using default"
parser = DateParser.DateParser()
try:
val = GrampsGconfKeys.get_date_format(_lang_to_display[_lang].formats)
displayer = _lang_to_display[_lang](val)
except:
print "Date displayer for",_lang,"not available, using default"
displayer = DateDisplay.DateDisplay(3)

View File

@@ -100,8 +100,8 @@ class EditPerson:
def __init__(self,parent,person,db,callback=None): def __init__(self,parent,person,db,callback=None):
"""Creates an edit window. Associates a person with the window.""" """Creates an edit window. Associates a person with the window."""
self.dp = DateHandler.create_parser() self.dp = DateHandler.parser
self.dd = DateHandler.create_display() self.dd = DateHandler.displayer
self.person = person self.person = person
self.orig_surname = person.get_primary_name().get_group_name() self.orig_surname = person.get_primary_name().get_group_name()
self.parent = parent self.parent = parent

View File

@@ -81,8 +81,8 @@ class EventEditor:
self.plist = [] self.plist = []
self.pmap = {} self.pmap = {}
self.dp = DateHandler.create_parser() self.dp = DateHandler.parser
self.dd = DateHandler.create_display() self.dd = DateHandler.displayer
values = {} values = {}
for v in elist: for v in elist:

View File

@@ -183,7 +183,6 @@ class FamilyView:
def init_interface(self): def init_interface(self):
fv = GrampsGconfKeys.get_family_view() fv = GrampsGconfKeys.get_family_view()
self.dd = DateHandler.create_display()
self.set_widgets(fv) self.set_widgets(fv)
already_init = self.cadded[fv] already_init = self.cadded[fv]
@@ -926,18 +925,21 @@ class FamilyView:
dd = self.parent.db.get_event_from_handle(self.person.get_death_handle()) dd = self.parent.db.get_event_from_handle(self.person.get_death_handle())
if bd and dd: if bd and dd:
n = "%s [%s]\n\t%s %s\n\t%s %s " % (GrampsCfg.get_nameof()(self.person), n = "%s [%s]\n\t%s %s\n\t%s %s " % (
self.person.get_gramps_id(), GrampsCfg.get_nameof()(self.person),
_BORN,self.dd.display(bd.get_date_object()), self.person.get_gramps_id(),
_DIED,self.dd.display(dd.get_date_object())) _BORN,DateHandler.displayer.display(bd.get_date_object()),
_DIED,DateHandler.displayer.display(dd.get_date_object()))
elif bd: elif bd:
n = "%s [%s]\n\t%s %s" % (GrampsCfg.get_nameof()(self.person), n = "%s [%s]\n\t%s %s" % (
self.person.get_gramps_id(), GrampsCfg.get_nameof()(self.person),
_BORN,self.dd.display(bd.get_date_object())) self.person.get_gramps_id(),
_BORN,DateHandler.displayer.display(bd.get_date_object()))
elif dd: elif dd:
n = "%s [%s]\n\t%s %s" % (GrampsCfg.get_nameof()(self.person), n = "%s [%s]\n\t%s %s" % (
self.person.get_gramps_id(), GrampsCfg.get_nameof()(self.person),
_DIED,self.dd.display(dd.get_date_object())) self.person.get_gramps_id(),
_DIED,DateHandler.displayer.display(dd.get_date_object()))
else: else:
n = "%s [%s]" % (GrampsCfg.get_nameof()(self.person), n = "%s [%s]" % (GrampsCfg.get_nameof()(self.person),
self.person.get_gramps_id()) self.person.get_gramps_id())
@@ -976,13 +978,13 @@ class FamilyView:
sp = self.parent.db.get_person_from_handle(sp_id) sp = self.parent.db.get_person_from_handle(sp_id)
event = self.find_marriage(fm) event = self.find_marriage(fm)
if event: if event:
mdate = " - %s" % self.dd.display(event.get_date_object()) mdate = " - %s" % DateHandler.displayer.display(event.get_date_object())
else: else:
mdate = "" mdate = ""
v = "%s [%s]\n\t%s%s" % (GrampsCfg.get_nameof()(sp), v = "%s [%s]\n\t%s%s" % (
sp.get_gramps_id(), GrampsCfg.get_nameof()(sp),
const.family_relations[fm.get_relationship()][0], sp.get_gramps_id(),
mdate) const.family_relations[fm.get_relationship()][0], mdate)
self.spouse_model.set(node,0,v) self.spouse_model.set(node,0,v)
self.spouse_model.set(node,1,f) self.spouse_model.set(node,1,f)
else: else:

View File

@@ -53,8 +53,6 @@ from TransTable import TransTable
from gettext import gettext as _ from gettext import gettext as _
from Utils import for_each_ancestor from Utils import for_each_ancestor
_date_parser = DateHandler.create_parser()
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# date_cmp # date_cmp
@@ -977,7 +975,7 @@ class HasEvent(Rule):
def __init__(self,list): def __init__(self,list):
Rule.__init__(self,list) Rule.__init__(self,list)
if self.list and self.list[0]: if self.list and self.list[0]:
self.date = _date_parser.parse(self.list[0]) self.date = DateHandler.parser.parse(self.list[0])
else: else:
self.date = None self.date = None
@@ -1030,7 +1028,7 @@ class HasFamilyEvent(Rule):
def __init__(self,list): def __init__(self,list):
Rule.__init__(self,list) Rule.__init__(self,list)
if self.list and self.list[0]: if self.list and self.list[0]:
self.date = _date_parser.parse(self.list[0]) self.date = DateHandler.parser.parse(self.list[0])
else: else:
self.date = None self.date = None
@@ -1141,7 +1139,7 @@ class HasBirth(Rule):
def __init__(self,list): def __init__(self,list):
Rule.__init__(self,list) Rule.__init__(self,list)
if self.list and self.list[0]: if self.list and self.list[0]:
self.date = _date_parser.parse(self.list[0]) self.date = DateHandler.parser.parse(self.list[0])
else: else:
self.date = None self.date = None
@@ -1187,7 +1185,7 @@ class HasDeath(Rule):
def __init__(self,list): def __init__(self,list):
Rule.__init__(self,list) Rule.__init__(self,list)
if self.list and self.list[0]: if self.list and self.list[0]:
self.date = _date_parser.parse(self.list[0]) self.date = DateHandler.parser.parse(self.list[0])
else: else:
self.date = None self.date = None

View File

@@ -112,7 +112,6 @@ def get_toolbar_style():
def set_calendar_date_format(): def set_calendar_date_format():
format_list = DateHandler.get_date_formats() format_list = DateHandler.get_date_formats()
DateHandler.set_format(GrampsGconfKeys.get_date_format(format_list)) DateHandler.set_format(GrampsGconfKeys.get_date_format(format_list))
RelLib.display.set_format(GrampsGconfKeys.get_date_format(format_list))
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@@ -279,7 +278,6 @@ class GrampsPreferences:
lastnamegen_obj = self.top.get_widget("lastnamegen") lastnamegen_obj = self.top.get_widget("lastnamegen")
menu = gtk.Menu() menu = gtk.Menu()
choice = 0
for index in range(0,len(_surname_styles)): for index in range(0,len(_surname_styles)):
name = _surname_styles[index] name = _surname_styles[index]
item = gtk.MenuItem(name) item = gtk.MenuItem(name)

View File

@@ -876,8 +876,8 @@ class GlobalMediaProperties:
def __init__(self,db,obj,update,parent,parent_window=None): def __init__(self,db,obj,update,parent,parent_window=None):
self.parent = parent self.parent = parent
self.dp = DateHandler.create_parser() self.dp = DateHandler.parser
self.dd = DateHandler.create_display() self.dd = DateHandler.displayer
if obj: if obj:
if self.parent.parent.child_windows.has_key(obj.get_handle()): if self.parent.parent.child_windows.has_key(obj.get_handle()):
self.parent.parent.child_windows[obj.get_handle()].present(None) self.parent.parent.child_windows[obj.get_handle()].present(None)

View File

@@ -84,7 +84,7 @@ class Marriage:
self.cb = callback self.cb = callback
self.update_fv = update self.update_fv = update
self.pmap = {} self.pmap = {}
self.dp = DateHandler.create_parser() self.dp = DateHandler.parser
if family: if family:
self.srcreflist = family.get_source_references() self.srcreflist = family.get_source_references()

View File

@@ -286,7 +286,7 @@ class GrampsParser:
self.gid2oid = {} self.gid2oid = {}
self.gid2sid = {} self.gid2sid = {}
self.change = change self.change = change
self.dp = DateHandler.create_parser() self.dp = DateHandler.parser
self.ord = None self.ord = None
self.objref = None self.objref = None

View File

@@ -43,8 +43,6 @@ import time
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import Date import Date
import DateHandler import DateHandler
import GrampsCfg
import const
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@@ -58,14 +56,6 @@ CONF_NORMAL = 2
CONF_LOW = 1 CONF_LOW = 1
CONF_VERY_LOW = 0 CONF_VERY_LOW = 0
#-------------------------------------------------------------------------
#
# Class definitions
#
#-------------------------------------------------------------------------
display = DateHandler.create_display()
parser = DateHandler.create_parser()
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# Class definitions # Class definitions
@@ -429,24 +419,6 @@ class Person(PrimaryObject,SourceNote):
""" """
return self.complete return self.complete
def get_display_info(self):
"""
Returns a list consisting of the information typically used for a
display. The data consists of: Display Name, ID, Gender, Date of Birth,
Date of Death, sort name, etc.
"""
if self.gender == Person.male:
gender = const.male
elif self.gender == Person.female:
gender = const.female
else:
gender = const.unknown
bday = self.birth_handle
dday = self.death_handle
return [ GrampsCfg.get_display_name()(self), self.gramps_id,
gender, bday, dday, self.get_primary_name().get_sort_name(),
GrampsCfg.get_display_surname()(self.primary_name)]
def set_primary_name(self,name): def set_primary_name(self,name):
""" """
Sets the primary name of the Person to the specified Sets the primary name of the Person to the specified
@@ -1399,12 +1371,12 @@ class Event(PrimaryObject,DataObj):
def set_date(self, date) : def set_date(self, date) :
"""attempts to sets the date of the Event instance""" """attempts to sets the date of the Event instance"""
self.date = parser.parse(date) self.date = DateHandler.parser.parse(date)
def get_date(self) : def get_date(self) :
"""returns a string representation of the date of the Event instance""" """returns a string representation of the date of the Event instance"""
if self.date: if self.date:
return display.display(self.date) return DateHandler.displayer.display(self.date)
return u"" return u""
def get_preferred_date(self) : def get_preferred_date(self) :
@@ -1415,7 +1387,7 @@ class Event(PrimaryObject,DataObj):
"""returns a string representation of the date of the Event instance, """returns a string representation of the date of the Event instance,
enclosing the results in quotes if it is not a valid date""" enclosing the results in quotes if it is not a valid date"""
if self.date: if self.date:
return display.quote_display(self.date) return DateHandler.displayer.quote_display(self.date)
return u"" return u""
def get_date_object(self): def get_date_object(self):
@@ -1639,7 +1611,7 @@ class MediaObject(PrimaryObject,SourceNote):
def get_date(self) : def get_date(self) :
"""returns a string representation of the date of the Event instance""" """returns a string representation of the date of the Event instance"""
if self.date: if self.date:
return display.display(self.date) return DateHandler.displayer.display(self.date)
return u"" return u""
def get_date_object(self): def get_date_object(self):
@@ -1650,7 +1622,7 @@ class MediaObject(PrimaryObject,SourceNote):
def set_date(self, date) : def set_date(self, date) :
"""attempts to sets the date of the Event instance""" """attempts to sets the date of the Event instance"""
self.date = parser.parse(date) self.date = DateHandler.parser.parse(date)
def set_date_object(self,date): def set_date_object(self,date):
"""sets the Date object associated with the Event""" """sets the Date object associated with the Event"""
@@ -1720,10 +1692,6 @@ class Source(PrimaryObject):
self.pubinfo, self.note, self.media_list, self.pubinfo, self.note, self.media_list,
self.abbrev, self.change, self.datamap) = data self.abbrev, self.change, self.datamap) = data
def get_display_info(self):
return [self.title,self.gramps_id,self.author,
self.title.upper(),self.author.upper()]
def add_media_reference(self,media_id): def add_media_reference(self,media_id):
"""Adds a MediaObject object to the Source instance's image list""" """Adds a MediaObject object to the Source instance's image list"""
self.media_list.append(media_id) self.media_list.append(media_id)
@@ -1863,12 +1831,12 @@ class LdsOrd(SourceNote):
"""attempts to sets the date of the ordinance""" """attempts to sets the date of the ordinance"""
if not self.date: if not self.date:
self.date = Date.Date() self.date = Date.Date()
parser.set_date(self.date,date) DateHandler.parser.set_date(self.date,date)
def get_date(self) : def get_date(self) :
"""returns a string representation of the date of the ordinance""" """returns a string representation of the date of the ordinance"""
if self.date: if self.date:
return display.display(self.date) return DateHandler.displayer.display(self.date)
return u"" return u""
def get_date_object(self): def get_date_object(self):
@@ -2213,13 +2181,13 @@ class Address(DataObj):
def set_date(self,text): def set_date(self,text):
"""attempts to sets the date that the person lived at the address """attempts to sets the date that the person lived at the address
from the passed string""" from the passed string"""
self.date = parser.parse(text) self.date = DateHandler.parser.parse(text)
def get_date(self): def get_date(self):
"""returns a string representation of the date that the person """returns a string representation of the date that the person
lived at the address""" lived at the address"""
if self.date: if self.date:
return display.display(self.date) return DateHandler.displayer.display(self.date)
return u"" return u""
def get_preferred_date(self): def get_preferred_date(self):

View File

@@ -242,8 +242,27 @@ class SelectChild:
node = None node = None
for idval in person_list: for idval in person_list:
dinfo = self.db.get_person_from_handle(idval).get_display_info() person = self.db.get_person_from_handle(idval)
rdata = [dinfo[0],dinfo[1],dinfo[3],dinfo[5],dinfo[6]] name = person.get_primary_name().get_name()
if person.gender == RelLib.Person.male:
gender = _("male")
elif person.gender == RelLib.Person.female:
gender = _("female")
else:
gender = _("unknown")
bh = person.get_birth_handle()
dh = person.get_death_handle()
if bh:
bdate = self.db.get_event_from_handle(bh).get_date()
else:
bdate = ""
if dh:
ddate = self.db.get_event_from_handle(bh).get_date()
else:
ddate = ""
rdata = [name,person.get_gramps_id(),gender,bdate,ddate]
new_node = self.refmodel.add(rdata) new_node = self.refmodel.add(rdata)
names = dinfo[0].split(',') names = dinfo[0].split(',')
if len(names): if len(names):

View File

@@ -344,14 +344,12 @@ class SourceEditor:
self.author_field = self.get_widget("sauthor") self.author_field = self.get_widget("sauthor")
self.pub_field = self.get_widget("spubinfo") self.pub_field = self.get_widget("spubinfo")
self.dd = DateHandler.create_display()
self.date_entry_field = self.get_widget("sdate") self.date_entry_field = self.get_widget("sdate")
if self.source_ref: if self.source_ref:
self.active_source = self.db.get_source_from_handle(self.source_ref.get_base_handle()) self.active_source = self.db.get_source_from_handle(self.source_ref.get_base_handle())
self.date_obj = self.source_ref.get_date() self.date_obj = self.source_ref.get_date()
self.date_entry_field.set_text(self.dd.display(self.date_obj)) self.date_entry_field.set_text(DateHandler.displayer.display(self.date_obj))
self.private.set_active(self.source_ref.get_privacy()) self.private.set_active(self.source_ref.get_privacy())
else: else:
self.date_obj = Date.Date() self.date_obj = Date.Date()

View File

@@ -42,6 +42,7 @@ import gtk.glade
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import RelLib
import Utils import Utils
import GrampsCfg import GrampsCfg
import ListModel import ListModel
@@ -88,21 +89,31 @@ class RelCalc:
self.people = self.glade.get_widget("peopleList") self.people = self.glade.get_widget("peopleList")
self.clist = ListModel.ListModel(self.people, [(_('Name'),3,150),(_('ID'),1,50), self.clist = ListModel.ListModel(self.people,
(_('Birth Date'),4,150), [(_('Name'),3,150),(_('ID'),1,50),
('',-1,0),('',-1,0)], (_('Birth Date'),4,150),
('',-1,0),('',-1,0)],
self.on_apply_clicked) self.on_apply_clicked)
self.clist.new_model() self.clist.new_model()
for key in self.db.get_person_handles(sort_handles=False): for key in self.db.get_person_handles(sort_handles=False):
p = self.db.get_person_from_handle(key) p = self.db.get_person_from_handle(key)
if p == self.person: if p == self.person:
continue continue
val = self.db.get_person_from_handle(key).get_display_info() bh = p.get_birth_handle()
event = self.db.get_event_from_handle(val[3]) if bh:
event_date = "" bdate = self.db.get_event_from_handle(bh).get_date()
if event: else:
event_date = event.get_date () bdate = ""
self.clist.add([val[0],val[1],event_date,val[5],val[6]],p.get_handle()) name = p.get_primary_name()
if p.get_gender() == RelLib.Person.male:
gender = _("male")
elif p.get_gender() == RelLib.Person.female:
gender = _("female")
else:
gender = _("unknown")
self.clist.add([name.get_name(), gender, bdate,
name.get_sort_name(), bdate],
p.get_handle())
self.clist.connect_model() self.clist.connect_model()