src/plugins/FamilyGroup.py: various fixes, add Marriage info

svn: r6256
This commit is contained in:
Brian Matherly 2006-04-02 05:35:25 +00:00
parent ae2486081d
commit cca50ad870
2 changed files with 146 additions and 77 deletions

View File

@ -12,6 +12,7 @@
2006-04-01 Brian Matherly <pez4brian@users.sourceforge.net> 2006-04-01 Brian Matherly <pez4brian@users.sourceforge.net>
* src/PluginUtils/_ReportUtils.py: remove use of deprecated functions * src/PluginUtils/_ReportUtils.py: remove use of deprecated functions
* src/plugins/NavWebPage.py: various fixes - should work now * src/plugins/NavWebPage.py: various fixes - should work now
* src/plugins/FamilyGroup.py: various fixes, add Marriage info
2006-04-01 Martin Hawlisch <Martin.Hawlisch@gmx.de> 2006-04-01 Martin Hawlisch <Martin.Hawlisch@gmx.de>
* src/DataViews/_PedigreeView.py: Work around the bug of * src/DataViews/_PedigreeView.py: Work around the bug of

View File

@ -95,7 +95,9 @@ class FamilyGroup(Report.Report):
self.incParAddr = options_class.handler.options_dict['incParAddr'] self.incParAddr = options_class.handler.options_dict['incParAddr']
self.incParNotes = options_class.handler.options_dict['incParNotes'] self.incParNotes = options_class.handler.options_dict['incParNotes']
self.incParNames = options_class.handler.options_dict['incParNames'] self.incParNames = options_class.handler.options_dict['incParNames']
self.incParMar = options_class.handler.options_dict['incParMar']
self.incRelDates = options_class.handler.options_dict['incRelDates'] self.incRelDates = options_class.handler.options_dict['incRelDates']
self.incChiMar = options_class.handler.options_dict['incChiMar']
def define_table_styles(self): def define_table_styles(self):
""" """
@ -200,23 +202,20 @@ class FamilyGroup(Report.Report):
self.doc.end_cell() self.doc.end_cell()
self.doc.end_row() self.doc.end_row()
def dump_parent(self,person_handle): def dump_parent(self,title,person_handle):
if not person_handle: if not person_handle and not self.missingInfo:
return return
elif not person_handle:
person = self.database.get_person_from_handle(person_handle) person = RelLib.Person()
if person.get_gender() == RelLib.Person.MALE:
the_id = _("Husband")
else: else:
the_id = _("Wife") person = self.database.get_person_from_handle(person_handle)
self.doc.start_table(the_id,'FGR-ParentTable') self.doc.start_table(title,'FGR-ParentTable')
self.doc.start_row() self.doc.start_row()
self.doc.start_cell('FGR-ParentHead',3) self.doc.start_cell('FGR-ParentHead',3)
self.doc.start_paragraph('FGR-ParentName') self.doc.start_paragraph('FGR-ParentName')
self.doc.write_text(the_id + ': ') self.doc.write_text(title + ': ')
self.doc.write_text(person.get_primary_name().get_regular_name()) self.doc.write_text(person.get_primary_name().get_regular_name())
self.doc.end_paragraph() self.doc.end_paragraph()
self.doc.end_cell() self.doc.end_cell()
@ -224,17 +223,19 @@ class FamilyGroup(Report.Report):
birth_ref = person.get_birth_ref() birth_ref = person.get_birth_ref()
birth = None birth = None
evtName = Utils.personal_events[RelLib.Event.BIRTH]
if birth_ref: if birth_ref:
birth = self.database.get_event_from_handle(birth_ref.ref) birth = self.database.get_event_from_handle(birth_ref.ref)
if birth or self.missingInfo: if birth or self.missingInfo:
self.dump_parent_event(_("Birth"),birth) self.dump_parent_event(evtName,birth)
death_ref = person.get_death_ref() death_ref = person.get_death_ref()
death = None death = None
evtName = Utils.personal_events[RelLib.Event.DEATH]
if death_ref: if death_ref:
death = self.database.get_event_from_handle(death_ref.ref) death = self.database.get_event_from_handle(death_ref.ref)
if death or self.missingInfo: if death or self.missingInfo:
self.dump_parent_event(_("Death"),death) self.dump_parent_event(evtName,death)
family_handle = person.get_main_parents_family_handle() family_handle = person.get_main_parents_family_handle()
father_name = "" father_name = ""
@ -271,7 +272,7 @@ class FamilyGroup(Report.Report):
death_ref = mother.get_death_ref() death_ref = mother.get_death_ref()
death = " " death = " "
if death_ref: if death_ref:
event = self.database.get_event_from_handle(birth_ref.ref) event = self.database.get_event_from_handle(death_ref.ref)
death = DateHandler.get_date( event ) death = DateHandler.get_date( event )
if birth_ref or death_ref: if birth_ref or death_ref:
mother_name = "%s (%s - %s)" % (mother_name,birth,death) mother_name = "%s (%s - %s)" % (mother_name,birth,death)
@ -283,13 +284,11 @@ class FamilyGroup(Report.Report):
self.dump_parent_line(_("Mother"),mother_name) self.dump_parent_line(_("Mother"),mother_name)
if self.incParEvents: if self.incParEvents:
excludeEvts = ( person.get_birth_ref(), person.get_death_ref() )
for event_ref in person.get_event_ref_list(): for event_ref in person.get_event_ref_list():
if event_ref not in excludeEvts: event = self.database.get_event_from_handle(event_ref.ref)
event = self.database.get_event_from_handle(event_ref.ref) evtType = event.get_type()
evtType = event.get_type() name = Utils.format_event( evtType )
evtName = Utils.format_event( evtType ) self.dump_parent_event(name,event)
self.dump_parent_event(evtName,event)
if self.incParAddr: if self.incParAddr:
addrlist = person.get_address_list()[:] addrlist = person.get_address_list()[:]
@ -327,6 +326,41 @@ class FamilyGroup(Report.Report):
self.doc.end_table() self.doc.end_table()
def dump_marriage(self,family):
if not family:
return
m = None
family_ref_list = family.get_event_ref_list()
for event_ref in family_ref_list:
if event_ref:
event = self.database.get_event_from_handle(event_ref.ref)
if event.get_type()[0] == RelLib.Event.MARRIAGE:
m = event
break
if m or self.missingInfo:
self.doc.start_table(_("MarriageInfo"),'FGR-ParentTable')
self.doc.start_row()
self.doc.start_cell('FGR-ParentHead',3)
self.doc.start_paragraph('FGR-ParentName')
self.doc.write_text(_("Marriage:"))
self.doc.end_paragraph()
self.doc.end_cell()
self.doc.end_row()
evtName = Utils.family_events[RelLib.Event.MARRIAGE]
self.dump_parent_event(evtName,m)
for event_ref in family_ref_list:
if event_ref:
event = self.database.get_event_from_handle(event_ref.ref)
evtType = event.get_type()
if evtType[0] != RelLib.Event.MARRIAGE:
name = Utils.format_event( evtType )
self.dump_parent_event(name,event)
self.doc.end_table()
def dump_child_event(self,text,name,event): def dump_child_event(self,text,name,event):
date = "" date = ""
place = "" place = ""
@ -373,16 +407,17 @@ class FamilyGroup(Report.Report):
else: else:
death = None death = None
spouse_count = 0; spouse_count = 0;
for family_handle in person.get_family_handle_list(): if self.incChiMar:
family = self.database.get_family_from_handle(family_handle) for family_handle in person.get_family_handle_list():
spouse_id = None family = self.database.get_family_from_handle(family_handle)
if person_handle == family.get_father_handle(): spouse_id = None
spouse_id = family.get_mother_handle() if person_handle == family.get_father_handle():
else: spouse_id = family.get_mother_handle()
spouse_id = family.get_father_handle() else:
if spouse_id: spouse_id = family.get_father_handle()
spouse_count = spouse_count + 1 if spouse_id:
spouse_count = spouse_count + 1
self.doc.start_row() self.doc.start_row()
if spouse_count != 0 or self.missingInfo or death != None or birth != None: if spouse_count != 0 or self.missingInfo or death != None or birth != None:
@ -391,11 +426,11 @@ class FamilyGroup(Report.Report):
self.doc.start_cell('FGR-TextChild2') self.doc.start_cell('FGR-TextChild2')
self.doc.start_paragraph('FGR-ChildText') self.doc.start_paragraph('FGR-ChildText')
if person.get_gender() == RelLib.Person.MALE: if person.get_gender() == RelLib.Person.MALE:
self.doc.write_text("%dM" % index) self.doc.write_text(_("%dM") % index)
elif person.get_gender() == RelLib.Person.FEMALE: elif person.get_gender() == RelLib.Person.FEMALE:
self.doc.write_text("%dF" % index) self.doc.write_text(_("%dF") % index)
else: else:
self.doc.write_text("%dU" % index) self.doc.write_text(_("%dU") % index)
self.doc.end_paragraph() self.doc.end_paragraph()
self.doc.end_cell() self.doc.end_cell()
self.doc.start_cell('FGR-ChildName',3) self.doc.start_cell('FGR-ChildName',3)
@ -411,46 +446,50 @@ class FamilyGroup(Report.Report):
else: else:
self.dump_child_event('FGR-TextChild2',_('Birth'),birth) self.dump_child_event('FGR-TextChild2',_('Birth'),birth)
if self.missingInfo or death != None: if self.missingInfo or death != None:
if spouse_count == 0: if spouse_count == 0 or not self.incChiMar:
self.dump_child_event('FGR-TextChild2',_('Death'),death) self.dump_child_event('FGR-TextChild2',_('Death'),death)
else: else:
self.dump_child_event('FGR-TextChild1',_('Death'),death) self.dump_child_event('FGR-TextChild1',_('Death'),death)
index = 0
for family_handle in person.get_family_handle_list():
index = index + 1
family = self.database.get_family_from_handle(family_handle)
for event_ref in family.get_event_ref_list():
if event_ref:
event = self.database.get_event_from_handle(event_ref.ref)
if event.get_type() == RelLib.Event.MARRIAGE:
m = event
break
else:
m = None
spouse_id = None if self.incChiMar:
if person_handle == family.get_father_handle(): index = 0
spouse_id = family.get_mother_handle() for family_handle in person.get_family_handle_list():
else: m = None
spouse_id = family.get_father_handle() index = index + 1
family = self.database.get_family_from_handle(family_handle)
if spouse_id:
self.doc.start_row() for event_ref in family.get_event_ref_list():
self.doc.start_cell('FGR-TextChild1') if event_ref:
self.doc.start_paragraph('FGR-Normal') event = self.database.get_event_from_handle(event_ref.ref)
self.doc.end_paragraph() if event.get_type()[0] == RelLib.Event.MARRIAGE:
self.doc.end_cell() m = event
self.doc.start_cell('FGR-TextContents') break
self.doc.start_paragraph('FGR-Normal')
self.doc.write_text(_("Spouse")) spouse_id = None
self.doc.end_paragraph()
self.doc.end_cell() if person_handle == family.get_father_handle():
self.doc.start_cell('FGR-TextContentsEnd',2) spouse_id = family.get_mother_handle()
self.doc.start_paragraph('FGR-Normal') else:
spouse_id = family.get_father_handle()
if spouse_id: if spouse_id:
self.doc.start_row()
if m or index != families:
self.doc.start_cell('FGR-TextChild1')
else:
self.doc.start_cell('FGR-TextChild2')
self.doc.start_paragraph('FGR-Normal')
self.doc.end_paragraph()
self.doc.end_cell()
self.doc.start_cell('FGR-TextContents')
self.doc.start_paragraph('FGR-Normal')
self.doc.write_text(_("Spouse"))
self.doc.end_paragraph()
self.doc.end_cell()
self.doc.start_cell('FGR-TextContentsEnd',2)
self.doc.start_paragraph('FGR-Normal')
spouse = self.database.get_person_from_handle(spouse_id) spouse = self.database.get_person_from_handle(spouse_id)
spouse_name = spouse.get_primary_name().get_regular_name() spouse_name = spouse.get_primary_name().get_regular_name()
if self.incRelDates: if self.incRelDates:
@ -467,15 +506,16 @@ class FamilyGroup(Report.Report):
if birth_ref or death_ref: if birth_ref or death_ref:
spouse_name = "%s (%s - %s)" % (spouse_name,birth,death) spouse_name = "%s (%s - %s)" % (spouse_name,birth,death)
self.doc.write_text(spouse_name) self.doc.write_text(spouse_name)
self.doc.end_paragraph() self.doc.end_paragraph()
self.doc.end_cell() self.doc.end_cell()
self.doc.end_row() self.doc.end_row()
if m: if m:
if index == families: evtName = Utils.family_events[RelLib.Event.MARRIAGE]
self.dump_child_event('FGR-TextChild2',_("Married"),m) if index == families:
else: self.dump_child_event('FGR-TextChild2',evtName,m)
self.dump_child_event('FGR-TextChild1',_("Married"),m) else:
self.dump_child_event('FGR-TextChild1',evtName,m)
def dump_family(self,family_handle,generation): def dump_family(self,family_handle,generation):
self.doc.start_paragraph('FGR-Title') self.doc.start_paragraph('FGR-Title')
@ -487,10 +527,16 @@ class FamilyGroup(Report.Report):
family = self.database.get_family_from_handle(family_handle) family = self.database.get_family_from_handle(family_handle)
self.dump_parent(family.get_father_handle()) self.dump_parent(_("Husband"),family.get_father_handle())
self.doc.start_paragraph("FGR-blank") self.doc.start_paragraph("FGR-blank")
self.doc.end_paragraph() self.doc.end_paragraph()
self.dump_parent(family.get_mother_handle())
if self.incParMar:
self.dump_marriage(family)
self.doc.start_paragraph("FGR-blank")
self.doc.end_paragraph()
self.dump_parent(_("Wife"),family.get_mother_handle())
length = len(family.get_child_handle_list()) length = len(family.get_child_handle_list())
if length > 0: if length > 0:
@ -551,6 +597,8 @@ class FamilyGroupOptions(ReportOptions.ReportOptions):
'incParAddr' : 0, 'incParAddr' : 0,
'incParNotes' : 0, 'incParNotes' : 0,
'incParNames' : 0, 'incParNames' : 0,
'incParMar' : 0,
'incChiMar' : 1,
'incRelDates' : 0, 'incRelDates' : 0,
} }
@ -588,6 +636,14 @@ class FamilyGroupOptions(ReportOptions.ReportOptions):
["Do not include parental names","Include parental names"], ["Do not include parental names","Include parental names"],
True), True),
'incParMar' : ("=0/1","Whether to include marriage information for parents.",
["Do not include parental marriage info","Include parental marriage info"],
False),
'incChiMar' : ("=0/1","Whether to include marriage information for children.",
["Do not include children marriage info","Include children marriage info"],
True),
'incRelDates' : ("=0/1","Whether to include dates for relatives.", 'incRelDates' : ("=0/1","Whether to include dates for relatives.",
["Do not include dates of relatives","Include dates of relatives"], ["Do not include dates of relatives","Include dates of relatives"],
True), True),
@ -664,10 +720,18 @@ class FamilyGroupOptions(ReportOptions.ReportOptions):
self.include_par_names_option = gtk.CheckButton(_("Alternate Parent Names")) self.include_par_names_option = gtk.CheckButton(_("Alternate Parent Names"))
self.include_par_names_option.set_active(self.options_dict['incParNames']) self.include_par_names_option.set_active(self.options_dict['incParNames'])
# Parental Marriage
self.include_par_marriage_option = gtk.CheckButton(_("Parent Marriage"))
self.include_par_marriage_option.set_active(self.options_dict['incParMar'])
# Relatives Dates # Relatives Dates
self.include_rel_dates_option = gtk.CheckButton(_("Dates of Relatives (father, mother, spouse)")) self.include_rel_dates_option = gtk.CheckButton(_("Dates of Relatives (father, mother, spouse)"))
self.include_rel_dates_option.set_active(self.options_dict['incRelDates']) self.include_rel_dates_option.set_active(self.options_dict['incRelDates'])
# Children Marriages
self.include_chi_marriage_option = gtk.CheckButton(_("Children Marriages"))
self.include_chi_marriage_option.set_active(self.options_dict['incChiMar'])
dialog.add_option(_("Spouse"),self.spouse_menu) dialog.add_option(_("Spouse"),self.spouse_menu)
dialog.add_option(_("Recursive"),self.recursive_option) dialog.add_option(_("Recursive"),self.recursive_option)
dialog.add_frame_option(_('Include'),'',self.include_generations_option) dialog.add_frame_option(_('Include'),'',self.include_generations_option)
@ -675,6 +739,8 @@ class FamilyGroupOptions(ReportOptions.ReportOptions):
dialog.add_frame_option(_('Include'),'',self.include_par_addr_option) dialog.add_frame_option(_('Include'),'',self.include_par_addr_option)
dialog.add_frame_option(_('Include'),'',self.include_par_notes_option) dialog.add_frame_option(_('Include'),'',self.include_par_notes_option)
dialog.add_frame_option(_('Include'),'',self.include_par_names_option) dialog.add_frame_option(_('Include'),'',self.include_par_names_option)
dialog.add_frame_option(_('Include'),'',self.include_par_marriage_option)
dialog.add_frame_option(_('Include'),'',self.include_chi_marriage_option)
dialog.add_frame_option(_('Include'),'',self.include_rel_dates_option) dialog.add_frame_option(_('Include'),'',self.include_rel_dates_option)
dialog.add_frame_option(_('Missing Information'),'',self.missing_info_option) dialog.add_frame_option(_('Missing Information'),'',self.missing_info_option)
@ -694,6 +760,8 @@ class FamilyGroupOptions(ReportOptions.ReportOptions):
self.options_dict['incParAddr'] = int(self.include_par_addr_option.get_active()) self.options_dict['incParAddr'] = int(self.include_par_addr_option.get_active())
self.options_dict['incParNotes'] = int(self.include_par_notes_option.get_active()) self.options_dict['incParNotes'] = int(self.include_par_notes_option.get_active())
self.options_dict['incParNames'] = int(self.include_par_names_option.get_active()) self.options_dict['incParNames'] = int(self.include_par_names_option.get_active())
self.options_dict['incParMar'] = int(self.include_par_marriage_option.get_active())
self.options_dict['incChiMar'] = int(self.include_chi_marriage_option.get_active())
self.options_dict['incRelDates'] = int(self.include_rel_dates_option.get_active()) self.options_dict['incRelDates'] = int(self.include_rel_dates_option.get_active())
def make_default_style(self,default_style): def make_default_style(self,default_style):