Add sort siblings to NarrativeWeb, and did some refactoring to WebCal with help from Gerald.

svn: r12066
This commit is contained in:
Rob G. Healey 2009-02-22 00:14:08 +00:00
parent df3e8413d1
commit 95ea123e01
2 changed files with 87 additions and 25 deletions

View File

@ -101,8 +101,16 @@ from gen.lib.eventroletype import EventRoleType
# constants # constants
# #
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# variables for alphabet_navigation
_PERSON = 0 _PERSON = 0
_PLACE = 1 _PLACE = 1
# graphics for Maiz stylesheet
_WEBBKGD = 'Web_Mainz_Bkgd.png'
_WEBHEADER = 'Web_Mainz_Header.png'
_WEBMID = 'Web_Mainz_Mid.png'
_WEBMIDLIGHT = 'Web_Mainz_MidLight.png'
_INCLUDE_LIVING_VALUE = 99 # Arbitrary number _INCLUDE_LIVING_VALUE = 99 # Arbitrary number
_NAME_COL = 3 _NAME_COL = 3
@ -2432,6 +2440,8 @@ class IndividualPage(BasePage):
# Also try to identify half-siblings # Also try to identify half-siblings
half_siblings = set() half_siblings = set()
sort_half_sibs = []
birthorder = self.report.options['birthorder']
# if we have a known father... # if we have a known father...
showallsiblings = self.report.options['showhalfsiblings'] showallsiblings = self.report.options['showhalfsiblings']
@ -2450,6 +2460,18 @@ class IndividualPage(BasePage):
# we have a new step/half sibling # we have a new step/half sibling
half_siblings.add(half_child_handle) half_siblings.add(half_child_handle)
# if sort siblings or not?
if birthorder:
half_sib = db.get_person_from_handle(half_child_handle)
birth_ref = half_sib.get_birth_ref()
birth_date = None
if birth_ref:
birth_event = db.get_event_from_handle(birth_ref.ref)
birth_date = birth_event.get_date_object()
if birth_date != None and birth_date.is_valid():
sort_half_sibs.append((birth_date, half_child_handle))
# do the same thing with the mother (see "father" just above): # do the same thing with the mother (see "father" just above):
if mother_handle and showallsiblings: if mother_handle and showallsiblings:
mother = db.get_person_from_handle(mother_handle) mother = db.get_person_from_handle(mother_handle)
@ -2462,20 +2484,39 @@ class IndividualPage(BasePage):
# we have a new half sibling # we have a new half sibling
half_siblings.add(half_child_handle) half_siblings.add(half_child_handle)
# sort siblings or not?
if birthorder:
half_sib = db.get_person_from_handle(half_child_handle)
birth_ref = half_sib.get_birth_ref()
birth_date = None
if birth_ref:
birth_event = db.get_event_from_handle(birth_ref.ref)
birth_date = birth_event.get_date_object()
if birth_date != None and birth_date.is_valid():
sort_half_sibs.append((birth_date, half_child_handle))
# now that we have all of the half-siblings, print them out # now that we have all of the half-siblings, print them out
if len(half_siblings) > 0: if len(half_siblings) > 0 or len(sort_half_sibs) > 0:
of.write('\t\t\t<tr>\n') of.write('\t\t\t<tr>\n')
of.write('\t\t\t\t<td class="ColumnAttribute">%s</td>\n' % _("Half Siblings")) of.write('\t\t\t\t<td class="ColumnAttribute">%s</td>\n' % _("Half Siblings"))
of.write('\t\t\t\t<td class="ColumnValue">\n') of.write('\t\t\t\t<td class="ColumnValue">\n')
of.write('\t\t\t\t\t<ol>\n') of.write('\t\t\t\t\t<ol>\n')
for child_handle in half_siblings: if birthorder:
self.display_child_link(of, child_handle) sort_half_sibs.sort()
for date, handle in sort_half_sibs:
self.display_child_link(of, handle)
else:
for child_handle in half_siblings:
self.display_child_link(of, child_handle)
of.write('\t\t\t\t\t</ol>\n') of.write('\t\t\t\t\t</ol>\n')
of.write('\t\t\t\t</td>\n') of.write('\t\t\t\t</td>\n')
of.write('\t\t\t</tr>\n') of.write('\t\t\t</tr>\n')
# get step-siblings # get step-siblings
step_siblings = set() step_siblings = set()
step_kids = []
if showallsiblings: if showallsiblings:
# to find the step-siblings, we need to identify # to find the step-siblings, we need to identify
@ -2541,14 +2582,31 @@ class IndividualPage(BasePage):
# we have a new step sibling # we have a new step sibling
step_siblings.add(step_child_handle) step_siblings.add(step_child_handle)
# sort siblings or not?
if birthorder:
step_sib = db.get_person_from_handle(step_child_handle)
birth_ref = step_sib.get_birth_ref()
birth_date = None
if birth_ref:
birth_event = db.get_event_from_handle(birth_ref.ref)
birth_date = birth_event.get_date_object()
if birth_date != None and birth_date.is_valid():
step_kids.append((birth_date, step_child_handle))
# now that we have all of the step-siblings, print them out # now that we have all of the step-siblings, print them out
if len(step_siblings) > 0: if len(step_siblings) > 0 or len(step_kids) > 0:
of.write('\t\t\t<tr>\n') of.write('\t\t\t<tr>\n')
of.write('\t\t\t\t<td class="ColumnAttribute">%s</td>\n' % _("Step Siblings")) of.write('\t\t\t\t<td class="ColumnAttribute">%s</td>\n' % _("Step Siblings"))
of.write('\t\t\t\t<td class="ColumnValue">\n') of.write('\t\t\t\t<td class="ColumnValue">\n')
of.write('\t\t\t\t\t<ol>\n') of.write('\t\t\t\t\t<ol>\n')
for child_handle in step_siblings:
self.display_child_link(of, child_handle) if birthorder:
for date, handle in step_kids:
self.display_child_link(of, handle)
else:
for child_handle in step_siblings:
self.display_child_link(of, child_handle)
of.write('\t\t\t\t\t</ol>\n') of.write('\t\t\t\t\t</ol>\n')
of.write('\t\t\t\t</td>\n') of.write('\t\t\t\t</td>\n')
of.write('\t\t\t</tr>\n') of.write('\t\t\t</tr>\n')
@ -2838,8 +2896,12 @@ class NavWebReport(Report):
self.use_contact = self.options['contactnote'] or \ self.use_contact = self.options['contactnote'] or \
self.options['contactimg'] self.options['contactimg']
# either include the gender graphics or not?
self.graph = self.options['graph'] self.graph = self.options['graph']
# wether to sort all siblings by birthorder or not?
self.birthorder = self.options['birthorder']
if self.use_home: if self.use_home:
self.index_fname = "index" self.index_fname = "index"
self.surname_fname = "surnames" self.surname_fname = "surnames"
@ -2976,11 +3038,7 @@ class NavWebReport(Report):
# Copy Mainz Style Images # Copy Mainz Style Images
if self.css == "Web_Mainz.css": if self.css == "Web_Mainz.css":
imgs += ["Web_Mainz_Bkgd.png", imgs += [_WEBBKGD, _WEBHEADER, _WEBMID, _WEBMIDLIGHT]
"Web_Mainz_Header.png",
"Web_Mainz_Mid.png",
"Web_Mainz_MidLight.png",
"document.png"]
# Copy the Creative Commons icon if the Creative Commons # Copy the Creative Commons icon if the Creative Commons
# license is requested??? # license is requested???
@ -3487,6 +3545,11 @@ class NavWebOptions(MenuReportOptions):
"siblings")) "siblings"))
menu.add_option(category_name, 'showhalfsiblings', showallsiblings) menu.add_option(category_name, 'showhalfsiblings', showallsiblings)
birthorder = BooleanOption(_('Show all siblings in birth order'), False)
birthorder.set_help(_('Show all siblings including half/ Step in '
'birth order or not?'))
menu.add_option(category_name, 'birthorder', birthorder)
def __archive_changed(self): def __archive_changed(self):
""" """
Update the change of storage: archive or directory Update the change of storage: archive or directory

View File

@ -83,6 +83,12 @@ import libholiday
# constants # constants
# #
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# Mainz stylesheet graphics
# will only be used if Mainz is slected as the stylesheet
_WEBBKGD = "Web_Mainz_Bkgd.png"
_WEBHEADER = "Web_Mainz_Header.png"
_WEBMID = "Web_Mainz_Mid.png"
_WEBMIDLIGHT = "Web_Mainz_MidLight.png"
# This information defines the list of styles in the Web calendar # This information defines the list of styles in the Web calendar
# options dialog as well as the location of the corresponding SCREEN # options dialog as well as the location of the corresponding SCREEN
@ -341,17 +347,13 @@ class WebCalReport(Report):
if self.css == "Web_Mainz.css": if self.css == "Web_Mainz.css":
# Copy Mainz Style Images # Copy Mainz Style Images
imgs += ["Web_Mainz_Bkgd.png", imgs += [_WEBBKGD, _WEBHEADER, _WEBMID, _WEBMIDLIGHT]
"Web_Mainz_Header.png",
"Web_Mainz_Mid.png",
"Web_Mainz_MidLight.png",
]
# Copy GRAMPS favicon # Copy GRAMPS favicon
imgs += ['favicon.ico'] imgs += ['favicon.ico']
# copy copyright image # copy copyright image
if 0 < self.copy < len(_CC): if 0 < self.copy <= len(_CC):
imgs += ['somerights20.gif'] imgs += ['somerights20.gif']
for fname in imgs: for fname in imgs:
@ -1067,7 +1069,7 @@ class WebCalReport(Report):
spouse_name = _get_short_name(spouse) spouse_name = _get_short_name(spouse)
short_name = _get_short_name(person) short_name = _get_short_name(person)
are_married = get_marrital_status(self.database, fam) are_married = get_marital_status(self.database, fam)
if are_married is not None: if are_married is not None:
for event_ref in fam.get_event_ref_list(): for event_ref in fam.get_event_ref_list():
event = self.database.get_event_from_handle(event_ref.ref) event = self.database.get_event_from_handle(event_ref.ref)
@ -1466,12 +1468,9 @@ def get_day_list(event_date, holiday_list, bday_anniv_list):
# a birthday # a birthday
if event == 'Birthday': if event == 'Birthday':
if nyears == 0: txt_str = _(text + ', <em>'
txt_str = _('%(person)s, <em>birth</em>') % { + ('birth' if nyears == 0 else '%s old' % str(age_str))
'person' : text} + '</em>')
else:
txt_str = _('%(person)s, <em>%(age)s</em> old') % {
'person' : text, 'age' : age_str}
# an anniversary # an anniversary
elif event == 'Anniversary': elif event == 'Anniversary':
@ -1496,7 +1495,7 @@ def get_day_list(event_date, holiday_list, bday_anniv_list):
return day_list return day_list
def get_marrital_status(db, family): def get_marital_status(db, family):
""" """
Returns the marital status of two people, a couple Returns the marital status of two people, a couple