* 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 252d7dc6c8
commit e2c149f41e
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>
* src/ChooseParents.py: remove TreeModelFilter stuff.
* src/GenericFilter.py: Add a combobox that handles filter

View File

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

View File

@ -68,44 +68,6 @@ _lang_to_display = {
'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():
"""
Returns the lists supported formats for date parsers and displayers
@ -149,3 +111,24 @@ from Plugins import load_plugins
from const import 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):
"""Creates an edit window. Associates a person with the window."""
self.dp = DateHandler.create_parser()
self.dd = DateHandler.create_display()
self.dp = DateHandler.parser
self.dd = DateHandler.displayer
self.person = person
self.orig_surname = person.get_primary_name().get_group_name()
self.parent = parent

View File

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

View File

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

View File

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

View File

@ -112,7 +112,6 @@ def get_toolbar_style():
def set_calendar_date_format():
format_list = DateHandler.get_date_formats()
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")
menu = gtk.Menu()
choice = 0
for index in range(0,len(_surname_styles)):
name = _surname_styles[index]
item = gtk.MenuItem(name)

View File

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

View File

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

View File

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

View File

@ -43,8 +43,6 @@ import time
#-------------------------------------------------------------------------
import Date
import DateHandler
import GrampsCfg
import const
#-------------------------------------------------------------------------
#
@ -58,14 +56,6 @@ CONF_NORMAL = 2
CONF_LOW = 1
CONF_VERY_LOW = 0
#-------------------------------------------------------------------------
#
# Class definitions
#
#-------------------------------------------------------------------------
display = DateHandler.create_display()
parser = DateHandler.create_parser()
#-------------------------------------------------------------------------
#
# Class definitions
@ -429,24 +419,6 @@ class Person(PrimaryObject,SourceNote):
"""
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):
"""
Sets the primary name of the Person to the specified
@ -1399,12 +1371,12 @@ class Event(PrimaryObject,DataObj):
def set_date(self, date) :
"""attempts to sets the date of the Event instance"""
self.date = parser.parse(date)
self.date = DateHandler.parser.parse(date)
def get_date(self) :
"""returns a string representation of the date of the Event instance"""
if self.date:
return display.display(self.date)
return DateHandler.displayer.display(self.date)
return u""
def get_preferred_date(self) :
@ -1415,7 +1387,7 @@ class Event(PrimaryObject,DataObj):
"""returns a string representation of the date of the Event instance,
enclosing the results in quotes if it is not a valid date"""
if self.date:
return display.quote_display(self.date)
return DateHandler.displayer.quote_display(self.date)
return u""
def get_date_object(self):
@ -1639,7 +1611,7 @@ class MediaObject(PrimaryObject,SourceNote):
def get_date(self) :
"""returns a string representation of the date of the Event instance"""
if self.date:
return display.display(self.date)
return DateHandler.displayer.display(self.date)
return u""
def get_date_object(self):
@ -1650,7 +1622,7 @@ class MediaObject(PrimaryObject,SourceNote):
def set_date(self, date) :
"""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):
"""sets the Date object associated with the Event"""
@ -1720,10 +1692,6 @@ class Source(PrimaryObject):
self.pubinfo, self.note, self.media_list,
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):
"""Adds a MediaObject object to the Source instance's image list"""
self.media_list.append(media_id)
@ -1863,12 +1831,12 @@ class LdsOrd(SourceNote):
"""attempts to sets the date of the ordinance"""
if not self.date:
self.date = Date.Date()
parser.set_date(self.date,date)
DateHandler.parser.set_date(self.date,date)
def get_date(self) :
"""returns a string representation of the date of the ordinance"""
if self.date:
return display.display(self.date)
return DateHandler.displayer.display(self.date)
return u""
def get_date_object(self):
@ -2213,13 +2181,13 @@ class Address(DataObj):
def set_date(self,text):
"""attempts to sets the date that the person lived at the address
from the passed string"""
self.date = parser.parse(text)
self.date = DateHandler.parser.parse(text)
def get_date(self):
"""returns a string representation of the date that the person
lived at the address"""
if self.date:
return display.display(self.date)
return DateHandler.displayer.display(self.date)
return u""
def get_preferred_date(self):

View File

@ -242,8 +242,27 @@ class SelectChild:
node = None
for idval in person_list:
dinfo = self.db.get_person_from_handle(idval).get_display_info()
rdata = [dinfo[0],dinfo[1],dinfo[3],dinfo[5],dinfo[6]]
person = self.db.get_person_from_handle(idval)
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)
names = dinfo[0].split(',')
if len(names):

View File

@ -344,14 +344,12 @@ class SourceEditor:
self.author_field = self.get_widget("sauthor")
self.pub_field = self.get_widget("spubinfo")
self.dd = DateHandler.create_display()
self.date_entry_field = self.get_widget("sdate")
if self.source_ref:
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_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())
else:
self.date_obj = Date.Date()

View File

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