* src/PedView.py: Show Baptism/Burial as fallback for birth/death; Moved text generation for details view out of DispBox class so that PedigreeView can use the same string for max size calculation.
* src/PeopleModel.py: Show Baptism/Burial as fallback for birth/death. Based on patch from Jim Smart. * src/PeopleView.py: Enable makup that PeopleModel can render fallback data in italics. svn: r4299
This commit is contained in:
102
src/PedView.py
102
src/PedView.py
@ -61,6 +61,11 @@ _CANVASPAD = 3
|
||||
_PERSON = "p"
|
||||
_BORN = _('b.')
|
||||
_DIED = _('d.')
|
||||
_BAPT = _('bap.')
|
||||
_CHRI = _('chr.')
|
||||
_BURI = _('bur.')
|
||||
_CREM = _('crem.')
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -77,6 +82,7 @@ class DispBox:
|
||||
shadow = _PAD
|
||||
xpad = _PAD
|
||||
|
||||
self.db = db
|
||||
self.change = change
|
||||
self.edit = edit
|
||||
self.build_menu = build_menu
|
||||
@ -88,28 +94,9 @@ class DispBox:
|
||||
self.root = root
|
||||
|
||||
self.name = NameDisplay.displayer.display(person)
|
||||
birth_handle = self.person.get_birth_handle()
|
||||
death_handle = self.person.get_death_handle()
|
||||
if birth_handle:
|
||||
bd = db.get_event_from_handle(birth_handle).get_date()
|
||||
else:
|
||||
bd = ""
|
||||
|
||||
if death_handle:
|
||||
dd = db.get_event_from_handle(death_handle).get_date()
|
||||
else:
|
||||
dd = ""
|
||||
|
||||
if bd and dd:
|
||||
self.exp = "%s\n%s %s\n%s %s" % (self.name,_BORN,bd,_DIED,dd )
|
||||
elif bd:
|
||||
self.exp = "%s\n%s %s" % (self.name,_BORN,bd )
|
||||
elif dd:
|
||||
self.exp = "%s\n%s %s" % (self.name,_DIED,dd )
|
||||
else:
|
||||
self.exp = "%s" % self.name
|
||||
|
||||
|
||||
self.exp = build_detail_string( db, person)
|
||||
|
||||
self.group = self.root.add(CanvasGroup,x=x,y=y)
|
||||
self.shadow = self.group.add(
|
||||
CanvasRect, x1=shadow, y1=shadow, x2=w+shadow, y2=h+shadow,
|
||||
@ -130,6 +117,7 @@ class DispBox:
|
||||
self.group.connect('event',self.group_event)
|
||||
self.group.set_data(_PERSON,person.get_handle())
|
||||
|
||||
|
||||
def cleanup(self):
|
||||
self.shadow.destroy()
|
||||
self.bkgnd.destroy()
|
||||
@ -229,23 +217,12 @@ class PedigreeView:
|
||||
|
||||
for t in lst:
|
||||
if t:
|
||||
birth_handle = t[0].get_birth_handle()
|
||||
death_handle = t[0].get_death_handle()
|
||||
if birth_handle:
|
||||
birth = self.parent.db.get_event_from_handle(birth_handle).get_date()
|
||||
else:
|
||||
birth = u""
|
||||
if death_handle:
|
||||
death = self.parent.db.get_event_from_handle(death_handle).get_date()
|
||||
else:
|
||||
death = u""
|
||||
|
||||
for n in [NameDisplay.displayer.display(t[0]), u'%s %s' % (_BORN,birth),
|
||||
u'%s %s' % (_DIED,death)]:
|
||||
boxtext = build_detail_string(self.parent.db,t[0]).encode("UTF-8")
|
||||
for line in boxtext.split("\n"):
|
||||
try:
|
||||
a.set_text(n,len(n))
|
||||
a.set_text(line,len(line))
|
||||
except TypeError:
|
||||
a.set_text(n)
|
||||
a.set_text(line)
|
||||
(w1,h1) = a.get_pixel_size()
|
||||
h = max(h,h1)
|
||||
w = max(w,w1)
|
||||
@ -759,3 +736,56 @@ def find_parents(db,p):
|
||||
if mother_handle not in parentlist:
|
||||
parentlist.append(mother_handle)
|
||||
return parentlist
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Functions to build the text displayed in the details view of a DispBox
|
||||
# aditionally used by PedigreeView to get the largest area covered by a DispBox
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
def build_detail_string(db,person):
|
||||
|
||||
detail_text = NameDisplay.displayer.display(person)
|
||||
|
||||
def format_event(db, label, event):
|
||||
if not event:
|
||||
return u""
|
||||
ed = event.get_date()
|
||||
ep = None
|
||||
place_handle = event.get_place_handle()
|
||||
if place_handle:
|
||||
place_title = db.get_place_from_handle(place_handle).get_title()
|
||||
if place_title != "":
|
||||
ep = place_title
|
||||
if ep:
|
||||
return u"\n%s %s, %s" % (label,ed,ep)
|
||||
return u"\n%s %s" % (label,ed)
|
||||
|
||||
|
||||
birth_handle = person.get_birth_handle()
|
||||
if birth_handle:
|
||||
detail_text += format_event(db, _BORN, db.get_event_from_handle(birth_handle))
|
||||
else:
|
||||
for event_handle in person.get_event_list():
|
||||
event = db.get_event_from_handle(event_handle)
|
||||
if event.get_name() == "Baptism":
|
||||
detail_text += format_event(db, _BAPT, event)
|
||||
break
|
||||
if event.get_name() == "Christening":
|
||||
detail_text += format_event(db, _CHRI, event)
|
||||
break
|
||||
|
||||
death_handle = person.get_death_handle()
|
||||
if death_handle:
|
||||
detail_text += format_event(db, _DIED, db.get_event_from_handle(death_handle))
|
||||
else:
|
||||
for event_handle in person.get_event_list():
|
||||
event = db.get_event_from_handle(event_handle)
|
||||
if event.get_name() == "Burial":
|
||||
detail_text += format_event(db, _BURI, event)
|
||||
break
|
||||
if event.get_name() == "Cremation":
|
||||
detail_text += format_event(db, _CREM, event)
|
||||
break
|
||||
|
||||
return detail_text
|
||||
|
Reference in New Issue
Block a user