0002194: redundant links in Hourglass graph

svn: r10790
This commit is contained in:
Brian Matherly 2008-06-06 00:40:53 +00:00
parent cd491e941d
commit 8c16d3b754

View File

@ -86,6 +86,7 @@ class HourGlassReport(Report):
} }
self.__db = database self.__db = database
self.__used_people = []
menu = options_class.menu menu = options_class.menu
self.max_descend = menu.get_option_by_name('maxdescend').get_value() self.max_descend = menu.get_option_by_name('maxdescend').get_value()
@ -97,7 +98,7 @@ class HourGlassReport(Report):
self.colors = colored self.colors = colored
elif self.colorize == 'filled': elif self.colorize == 'filled':
self.colors = filled self.colors = filled
self.use_roundedcorners = menu.get_option_by_name('useroundedcorners').get_value() self.roundcorners = menu.get_option_by_name('roundcorners').get_value()
def write_report(self): def write_report(self):
""" """
@ -116,13 +117,19 @@ class HourGlassReport(Report):
for family_handle in person.get_family_handle_list(): for family_handle in person.get_family_handle_list():
family = self.__db.get_family_from_handle(family_handle) family = self.__db.get_family_from_handle(family_handle)
self.add_family(family) self.add_family(family)
self.doc.add_link( person.get_gramps_id(), family.get_gramps_id(), head='normal', tail='none' ) self.doc.add_link( person.get_gramps_id(), family.get_gramps_id(),
head='normal', tail='none' )
for child_ref in family.get_child_ref_list(): for child_ref in family.get_child_ref_list():
child_handle = child_ref.get_reference_handle() child_handle = child_ref.get_reference_handle()
child = self.__db.get_person_from_handle(child_handle) if child_handle not in self.__used_people:
self.add_person(child) # Avoid going down paths twice when descendant cousins marry
self.doc.add_link(family.get_gramps_id(), child.get_gramps_id(), head='normal', tail='none' ) self.__used_people.append(child_handle)
self.traverse_down(child, gen+1) child = self.__db.get_person_from_handle(child_handle)
self.add_person(child)
self.doc.add_link(family.get_gramps_id(),
child.get_gramps_id(),
head='normal', tail='none' )
self.traverse_down(child, gen+1)
def traverse_up(self, person, gen): def traverse_up(self, person, gen):
""" """
@ -135,18 +142,23 @@ class HourGlassReport(Report):
family = self.__db.get_family_from_handle(family_handle) family = self.__db.get_family_from_handle(family_handle)
family_id = family.get_gramps_id() family_id = family.get_gramps_id()
self.add_family(family) self.add_family(family)
self.doc.add_link( family_id, person.get_gramps_id(), head='none', tail='normal' ) self.doc.add_link( family_id, person.get_gramps_id(),
head='none', tail='normal' )
father_handle = family.get_father_handle() father_handle = family.get_father_handle()
if father_handle: if father_handle and father_handle not in self.__used_people:
self.__used_people.append(father_handle)
father = self.__db.get_person_from_handle(father_handle) father = self.__db.get_person_from_handle(father_handle)
self.add_person(father) self.add_person(father)
self.doc.add_link( father.get_gramps_id(), family_id, head='none', tail='normal' ) self.doc.add_link( father.get_gramps_id(), family_id,
head='none', tail='normal' )
self.traverse_up(father, gen+1) self.traverse_up(father, gen+1)
mother_handle = family.get_mother_handle() mother_handle = family.get_mother_handle()
if mother_handle: if mother_handle and mother_handle not in self.__used_people:
self.__used_people.append(mother_handle)
mother = self.__db.get_person_from_handle( mother_handle ) mother = self.__db.get_person_from_handle( mother_handle )
self.add_person( mother ) self.add_person( mother )
self.doc.add_link( mother.get_gramps_id(), family_id, head='none', tail='normal' ) self.doc.add_link( mother.get_gramps_id(), family_id,
head='none', tail='normal' )
self.traverse_up( mother, gen+1 ) self.traverse_up( mother, gen+1 )
def add_person(self, person): def add_person(self, person):
@ -200,7 +212,7 @@ class HourGlassReport(Report):
color = "" color = ""
fill = "" fill = ""
if gender == person.FEMALE and self.use_roundedcorners: if gender == person.FEMALE and self.roundcorners:
style = "rounded" style = "rounded"
elif gender == person.UNKNOWN: elif gender == person.UNKNOWN:
shape = "hexagon" shape = "hexagon"
@ -272,7 +284,7 @@ class HourGlassOptions(MenuReportOptions):
roundedcorners.set_help( roundedcorners.set_help(
_("Use rounded corners to differentiate " _("Use rounded corners to differentiate "
"between women and men.")) "between women and men."))
menu.add_option(category_name, "useroundedcorners", roundedcorners) menu.add_option(category_name, "roundcorners", roundedcorners)
#------------------------------------------------------------------------ #------------------------------------------------------------------------