This is speed/memory improvement number 1 for the Ancestor report
added a CalcItems helper class to calculate text for boxes. also fixed some strings that were concatinated (due to length), but did not have a space at the end or beginning. svn: r16367
This commit is contained in:
parent
121ed53c32
commit
8145163220
@ -100,13 +100,6 @@ class PersonBox(AncestorBoxBase):
|
|||||||
AncestorBoxBase.__init__(self, "AC2-box")
|
AncestorBoxBase.__init__(self, "AC2-box")
|
||||||
self.level = (self.x_index(level), level)
|
self.level = (self.x_index(level), level)
|
||||||
|
|
||||||
def calc_text(self, database, person, family):
|
|
||||||
""" Calculate the text for this box """
|
|
||||||
gui = GUIConnect()
|
|
||||||
calc = gui.calc_lines(database)
|
|
||||||
self.text = calc.calc_lines(person, family,
|
|
||||||
gui.working_lines(self.level[1]))
|
|
||||||
|
|
||||||
class FamilyBox(AncestorBoxBase):
|
class FamilyBox(AncestorBoxBase):
|
||||||
"""
|
"""
|
||||||
Calculates information about the box that will print on a page
|
Calculates information about the box that will print on a page
|
||||||
@ -115,12 +108,6 @@ class FamilyBox(AncestorBoxBase):
|
|||||||
AncestorBoxBase.__init__(self, "AC2-fam-box")
|
AncestorBoxBase.__init__(self, "AC2-fam-box")
|
||||||
self.level = (self.x_index(level)+1, level)
|
self.level = (self.x_index(level)+1, level)
|
||||||
|
|
||||||
def calc_text(self, database, person, family):
|
|
||||||
""" Calculate the text for this box """
|
|
||||||
gui = GUIConnect()
|
|
||||||
calc = gui.calc_lines(database)
|
|
||||||
self.text = calc.calc_lines(person, family, [gui.get_val('dispmarr')])
|
|
||||||
|
|
||||||
#def x_index(self):
|
#def x_index(self):
|
||||||
# """ calculate the row that this person is in """
|
# """ calculate the row that this person is in """
|
||||||
# return log2(self.level[0]) +1
|
# return log2(self.level[0]) +1
|
||||||
@ -179,10 +166,70 @@ class TitleA(TitleBox):
|
|||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# make_ancestor_tree
|
# CalcItems (helper class to calculate text)
|
||||||
|
# make_ancestor_tree (main recursive functions)
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
class MakeAncestorTree():
|
class CalcItems(object):
|
||||||
|
def __init__(self, dbase):
|
||||||
|
__gui = GUIConnect()
|
||||||
|
|
||||||
|
#calculate the printed lines for each box
|
||||||
|
#display_repl = [] #Not used in this report
|
||||||
|
#str = ""
|
||||||
|
#if self.get_val('miss_val'):
|
||||||
|
# str = "_____"
|
||||||
|
self.__calc_l = CalcLines(dbase, [])
|
||||||
|
|
||||||
|
self.__blank_father = None
|
||||||
|
self.__blank_mother = None
|
||||||
|
|
||||||
|
main = self.__calc_l.calc_lines( None, None, __gui.get_val('dispf'))
|
||||||
|
secn = self.__calc_l.calc_lines( None, None, __gui.get_val('disp_sec'))
|
||||||
|
|
||||||
|
self.disp_father = __gui.get_val('dispf')
|
||||||
|
self.__blank_father = main
|
||||||
|
self.disp_mother = __gui.get_val('dispf')
|
||||||
|
self.__blank_mother = main
|
||||||
|
if __gui.get_val('dif_sec') == 1:
|
||||||
|
self.disp_father = __gui.get_val('disp_sec')
|
||||||
|
self.__blank_father = secn
|
||||||
|
elif __gui.get_val('dif_sec') == 2:
|
||||||
|
self.disp_mother = __gui.get_val('disp_sec')
|
||||||
|
self.__blank_mother = secn
|
||||||
|
|
||||||
|
self.disp_marr = [__gui.get_val('dispmarr')]
|
||||||
|
self.__blank_marriage = \
|
||||||
|
self.__calc_l.calc_lines(None, None, self.disp_marr)
|
||||||
|
|
||||||
|
def calc_person(self, index, indi_handle, fams_handle):
|
||||||
|
working_lines = ""
|
||||||
|
if index == 1 or index % 2 == 0: #The center person always uses main
|
||||||
|
if indi_handle == fams_handle == None:
|
||||||
|
working_lines = self.__blank_father
|
||||||
|
else:
|
||||||
|
working_lines = self.disp_father
|
||||||
|
else:
|
||||||
|
if indi_handle == fams_handle == None:
|
||||||
|
working_lines = self.__blank_mother
|
||||||
|
else:
|
||||||
|
working_lines = self.disp_mother
|
||||||
|
|
||||||
|
if indi_handle == fams_handle == None:
|
||||||
|
return working_lines
|
||||||
|
else:
|
||||||
|
return self.__calc_l.calc_lines(indi_handle, fams_handle,
|
||||||
|
working_lines)
|
||||||
|
|
||||||
|
def calc_marrage(self, indi_handle, fams_handle):
|
||||||
|
if indi_handle == fams_handle == None:
|
||||||
|
return self.__blank_marriage
|
||||||
|
else:
|
||||||
|
return self.__calc_l.calc_lines(indi_handle, fams_handle,
|
||||||
|
self.disp_marr)
|
||||||
|
|
||||||
|
|
||||||
|
class MakeAncestorTree(object):
|
||||||
"""
|
"""
|
||||||
The main procedure to use recursion to make the tree based off of a person.
|
The main procedure to use recursion to make the tree based off of a person.
|
||||||
order of people inserted into Persons is important.
|
order of people inserted into Persons is important.
|
||||||
@ -196,12 +243,16 @@ class MakeAncestorTree():
|
|||||||
self.max_generations = max_gen
|
self.max_generations = max_gen
|
||||||
self.fill_out = fill_out
|
self.fill_out = fill_out
|
||||||
|
|
||||||
|
self.calc_items = CalcItems(self.database)
|
||||||
|
|
||||||
def add_person_box(self, index, indi_handle, fams_handle):
|
def add_person_box(self, index, indi_handle, fams_handle):
|
||||||
""" Makes a person box and add that person into the Canvas. """
|
""" Makes a person box and add that person into the Canvas. """
|
||||||
|
|
||||||
|
|
||||||
myself = PersonBox(index)
|
myself = PersonBox(index)
|
||||||
|
|
||||||
#calculate the text.
|
myself.text = \
|
||||||
myself.calc_text(self.database, indi_handle, fams_handle)
|
self.calc_items.calc_person(index, indi_handle, fams_handle)
|
||||||
|
|
||||||
self.canvas.add_box(myself)
|
self.canvas.add_box(myself)
|
||||||
|
|
||||||
@ -209,10 +260,13 @@ class MakeAncestorTree():
|
|||||||
|
|
||||||
def add_marriage_box(self, index, indi_handle, fams_handle):
|
def add_marriage_box(self, index, indi_handle, fams_handle):
|
||||||
""" Makes a marriage box and add that person into the Canvas. """
|
""" Makes a marriage box and add that person into the Canvas. """
|
||||||
|
|
||||||
|
|
||||||
myself = FamilyBox(index)
|
myself = FamilyBox(index)
|
||||||
|
|
||||||
#calculate the text.
|
#calculate the text.
|
||||||
myself.calc_text(self.database, indi_handle, fams_handle)
|
myself.text = \
|
||||||
|
self.calc_items.calc_marrage(indi_handle, fams_handle)
|
||||||
|
|
||||||
self.canvas.add_box(myself)
|
self.canvas.add_box(myself)
|
||||||
|
|
||||||
@ -241,7 +295,7 @@ class MakeAncestorTree():
|
|||||||
|
|
||||||
person = self.database.get_person_from_handle(person_handle)
|
person = self.database.get_person_from_handle(person_handle)
|
||||||
if person is None:
|
if person is None:
|
||||||
return self.__fill(index, None, self.fill_out) #??? +1 ???
|
return self.__fill(index, None, self.fill_out)
|
||||||
|
|
||||||
|
|
||||||
parents_handle = person.get_main_parents_family_handle()
|
parents_handle = person.get_main_parents_family_handle()
|
||||||
@ -469,31 +523,6 @@ class GUIConnect():
|
|||||||
else:
|
else:
|
||||||
return TitleA(doc)
|
return TitleA(doc)
|
||||||
|
|
||||||
#2 helper functions to calculate the box.text
|
|
||||||
def calc_lines(self, database):
|
|
||||||
#calculate the printed lines for each box
|
|
||||||
display_repl = [] #Not used in this report
|
|
||||||
#str = ""
|
|
||||||
#if self.get_val('miss_val'):
|
|
||||||
# str = "_____"
|
|
||||||
return CalcLines(database, display_repl)
|
|
||||||
|
|
||||||
def working_lines(self, index):
|
|
||||||
disp_father = self.get_val('dispf')
|
|
||||||
if index == 1: #The center person always uses main
|
|
||||||
return disp_father
|
|
||||||
disp_mother = self.get_val('dispf')
|
|
||||||
if self.get_val('dif_sec') == 1:
|
|
||||||
disp_father = self.get_val('disp_sec')
|
|
||||||
elif self.get_val('dif_sec') == 2:
|
|
||||||
disp_mother = self.get_val('disp_sec')
|
|
||||||
|
|
||||||
if index % 2 == 0:
|
|
||||||
return disp_father
|
|
||||||
else:
|
|
||||||
return disp_mother
|
|
||||||
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# AncestorTree
|
# AncestorTree
|
||||||
@ -634,6 +663,7 @@ class AncestorTree2(Report):
|
|||||||
|
|
||||||
self.doc.end_page()
|
self.doc.end_page()
|
||||||
|
|
||||||
|
|
||||||
def scale_styles(self, scale):
|
def scale_styles(self, scale):
|
||||||
"""
|
"""
|
||||||
Scale the styles for this report.
|
Scale the styles for this report.
|
||||||
@ -777,7 +807,7 @@ class AncestorTree2Options(MenuReportOptions):
|
|||||||
self.scale.connect('value-changed', self.__check_blank)
|
self.scale.connect('value-changed', self.__check_blank)
|
||||||
|
|
||||||
self.__onepage = BooleanOption(_('One page report'), True)
|
self.__onepage = BooleanOption(_('One page report'), True)
|
||||||
self.__onepage.set_help(_("Whether to scale the size of the page to" +
|
self.__onepage.set_help(_("Whether to scale the size of the page to " +
|
||||||
"the size of the report."))
|
"the size of the report."))
|
||||||
menu.add_option(category_name, "onepage", self.__onepage)
|
menu.add_option(category_name, "onepage", self.__onepage)
|
||||||
self.__onepage.connect('value-changed', self.__check_blank)
|
self.__onepage.connect('value-changed', self.__check_blank)
|
||||||
@ -854,7 +884,7 @@ class AncestorTree2Options(MenuReportOptions):
|
|||||||
font.set_type_face(FONT_SANS_SERIF)
|
font.set_type_face(FONT_SANS_SERIF)
|
||||||
para_style = ParagraphStyle()
|
para_style = ParagraphStyle()
|
||||||
para_style.set_font(font)
|
para_style.set_font(font)
|
||||||
para_style.set_description(_('The basic style used for the' +
|
para_style.set_description(_('The basic style used for the ' +
|
||||||
'text display.'))
|
'text display.'))
|
||||||
default_style.add_paragraph_style("AC2-Normal", para_style)
|
default_style.add_paragraph_style("AC2-Normal", para_style)
|
||||||
|
|
||||||
@ -864,7 +894,7 @@ class AncestorTree2Options(MenuReportOptions):
|
|||||||
para_style = ParagraphStyle()
|
para_style = ParagraphStyle()
|
||||||
para_style.set_font(font)
|
para_style.set_font(font)
|
||||||
para_style.set_alignment(PARA_ALIGN_CENTER)
|
para_style.set_alignment(PARA_ALIGN_CENTER)
|
||||||
para_style.set_description(_('The basic style used for the' +
|
para_style.set_description(_('The basic style used for the ' +
|
||||||
'title display.'))
|
'title display.'))
|
||||||
default_style.add_paragraph_style("AC2-Title", para_style)
|
default_style.add_paragraph_style("AC2-Title", para_style)
|
||||||
|
|
||||||
|
@ -155,15 +155,15 @@ class DescendantTitleBase(TitleBox):
|
|||||||
else:
|
else:
|
||||||
if len(person_list + person_list2) == 3:
|
if len(person_list + person_list2) == 3:
|
||||||
if len(person_list) == 1:
|
if len(person_list) == 1:
|
||||||
title = _("Descendant Chart for %(person)s and" + \
|
title = _("Descendant Chart for %(person)s and " + \
|
||||||
" %(father1)s, %(mother1)s") % \
|
"%(father1)s, %(mother1)s") % \
|
||||||
{'person': names[0], \
|
{'person': names[0], \
|
||||||
'father1': names2[0], \
|
'father1': names2[0], \
|
||||||
'mother1': names2[1],
|
'mother1': names2[1],
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
title = _("Descendant Chart for %(person)s, %(father1)s " + \
|
title = _("Descendant Chart for %(person)s, %(father1)s " + \
|
||||||
" and %(mother1)s") % \
|
"and %(mother1)s") % \
|
||||||
{'father1': names[0], \
|
{'father1': names[0], \
|
||||||
'mother1': names[1], \
|
'mother1': names[1], \
|
||||||
'person': names2[0] }
|
'person': names2[0] }
|
||||||
@ -1489,7 +1489,7 @@ class Descend2TreeOptions(MenuReportOptions):
|
|||||||
self.showparents = BooleanOption(
|
self.showparents = BooleanOption(
|
||||||
_('Start with the parent(s) of the selected first'), True)
|
_('Start with the parent(s) of the selected first'), True)
|
||||||
self.showparents.set_help(
|
self.showparents.set_help(
|
||||||
_("Will show the parents, brother and sisters of the" +
|
_("Will show the parents, brother and sisters of the " +
|
||||||
"selected person."))
|
"selected person."))
|
||||||
menu.add_option(category_name, "show_gparents", self.showparents)
|
menu.add_option(category_name, "show_gparents", self.showparents)
|
||||||
|
|
||||||
@ -1498,7 +1498,7 @@ class Descend2TreeOptions(MenuReportOptions):
|
|||||||
menu.add_option(category_name, "maxgen", max_gen)
|
menu.add_option(category_name, "maxgen", max_gen)
|
||||||
|
|
||||||
max_spouse = NumberOption(_("Level of Spouses"), 1, 0, 10)
|
max_spouse = NumberOption(_("Level of Spouses"), 1, 0, 10)
|
||||||
max_spouse.set_help(_("0=no Spouses, 1=include Spouses, 2=include" +
|
max_spouse.set_help(_("0=no Spouses, 1=include Spouses, 2=include " +
|
||||||
"Spouses of the spouse, etc"))
|
"Spouses of the spouse, etc"))
|
||||||
menu.add_option(category_name, "maxspouse", max_spouse)
|
menu.add_option(category_name, "maxspouse", max_spouse)
|
||||||
|
|
||||||
@ -1514,7 +1514,7 @@ class Descend2TreeOptions(MenuReportOptions):
|
|||||||
menu.add_option(category_name, "dispf", disp)
|
menu.add_option(category_name, "dispf", disp)
|
||||||
|
|
||||||
bold = BooleanOption(_('Bold direct descendants'), True)
|
bold = BooleanOption(_('Bold direct descendants'), True)
|
||||||
bold.set_help(_("Whether to bold those people that are direct" +
|
bold.set_help(_("Whether to bold those people that are direct " +
|
||||||
"(not step or half) decendants."))
|
"(not step or half) decendants."))
|
||||||
menu.add_option(category_name, "bolddirect", bold)
|
menu.add_option(category_name, "bolddirect", bold)
|
||||||
|
|
||||||
@ -1543,7 +1543,7 @@ class Descend2TreeOptions(MenuReportOptions):
|
|||||||
menu.add_option(category_name, "sdispf", sdisp)
|
menu.add_option(category_name, "sdispf", sdisp)
|
||||||
|
|
||||||
incmarr = BooleanOption(_('Include Marriage information'), True)
|
incmarr = BooleanOption(_('Include Marriage information'), True)
|
||||||
incmarr.set_help(_("Whether to include marriage information in the" +
|
incmarr.set_help(_("Whether to include marriage information in the " +
|
||||||
"report."))
|
"report."))
|
||||||
menu.add_option(category_name, "incmarr", incmarr)
|
menu.add_option(category_name, "incmarr", incmarr)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user