added back copyright notices
added great updates given to me by Gerald Britton svn: r16402
This commit is contained in:
		@@ -1,7 +1,10 @@
 | 
			
		||||
#
 | 
			
		||||
# Gramps - a GTK+/GNOME based genealogy program
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2008-2010 Craig J. Anderson ander882@hotmail.com
 | 
			
		||||
# Copyright (C) 2000-2007 Donald N. Allingham
 | 
			
		||||
# Copyright (C) 2007-2008 Brian G. Matherly
 | 
			
		||||
# Copyright (C) 2010 Jakim Friant
 | 
			
		||||
# Copyright (C) 2009-2010 Craig J. Anderson
 | 
			
		||||
#
 | 
			
		||||
# This program is free software; you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
@@ -74,6 +77,7 @@ from libtreebase import *
 | 
			
		||||
class DescendantBoxBase(BoxBase):
 | 
			
		||||
    """  Base for all descendant boxes.
 | 
			
		||||
    Set the boxstr and some new attributes that are needed """
 | 
			
		||||
 | 
			
		||||
    def __init__(self, boxstr):
 | 
			
		||||
        BoxBase.__init__(self)
 | 
			
		||||
        self.boxstr = boxstr
 | 
			
		||||
@@ -83,6 +87,7 @@ class DescendantBoxBase(BoxBase):
 | 
			
		||||
 | 
			
		||||
    def calc_text(self, database, person, family):
 | 
			
		||||
        """  A sinble place to calculate box text """
 | 
			
		||||
 | 
			
		||||
        gui = GuiConnect()
 | 
			
		||||
        calc = gui.calc_lines(database)
 | 
			
		||||
        self.text = calc.calc_lines(person, family,
 | 
			
		||||
@@ -92,6 +97,7 @@ class PersonBox(DescendantBoxBase):
 | 
			
		||||
    """
 | 
			
		||||
    Calculates information about the box that will print on a page
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def __init__(self, level, boldable = 0):
 | 
			
		||||
        DescendantBoxBase.__init__(self, "CG2-box")
 | 
			
		||||
        self.level = level
 | 
			
		||||
@@ -104,6 +110,7 @@ class FamilyBox(DescendantBoxBase):
 | 
			
		||||
    """
 | 
			
		||||
    Calculates information about the box that will print on a page
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def __init__(self, level):
 | 
			
		||||
        DescendantBoxBase.__init__(self, "CG2-fam-box")
 | 
			
		||||
        self.level = level
 | 
			
		||||
@@ -111,6 +118,7 @@ class FamilyBox(DescendantBoxBase):
 | 
			
		||||
class PlaceHolderBox(BoxBase):
 | 
			
		||||
    """  I am a box that does not print.  I am used to make sure information
 | 
			
		||||
    does not run over areas that we don't wnat information (boxes) """
 | 
			
		||||
 | 
			
		||||
    def __init__(self, level):
 | 
			
		||||
        BoxBase.__init__(self)
 | 
			
		||||
        self.boxstr = "None"
 | 
			
		||||
@@ -128,6 +136,7 @@ class PlaceHolderBox(BoxBase):
 | 
			
		||||
#------------------------------------------------------------------------
 | 
			
		||||
class Line(LineBase):
 | 
			
		||||
    """ Our line class."""
 | 
			
		||||
 | 
			
		||||
    def __init__(self, start):
 | 
			
		||||
        LineBase.__init__(self, start)
 | 
			
		||||
        self.linestr = "CG2-line"
 | 
			
		||||
@@ -144,19 +153,18 @@ class DescendantTitleBase(TitleBox):
 | 
			
		||||
        self.database = dbase
 | 
			
		||||
    
 | 
			
		||||
    def descendant_print(self, person_list, person_list2 = []):
 | 
			
		||||
        """ calculate the Descendant title
 | 
			
		||||
        Person_list will always be passed
 | 
			
		||||
        If in the Family reports and there are two familys, person_list2
 | 
			
		||||
        will be used.
 | 
			
		||||
        """
 | 
			
		||||
        
 | 
			
		||||
        names = self._get_names(person_list)
 | 
			
		||||
        if person_list2 != []:
 | 
			
		||||
            names2 = self._get_names(person_list2)
 | 
			
		||||
        
 | 
			
		||||
        if person_list2 == []:
 | 
			
		||||
            if len(names) == 1:
 | 
			
		||||
                title = _("Descendant Chart for %(person)s") % \
 | 
			
		||||
                    {'person':  names[0] }
 | 
			
		||||
            elif len(names) == 2:
 | 
			
		||||
                title = _("Descendant Chart for %(father)s and %(mother)s") % \
 | 
			
		||||
                   {'father':  names[0],  'mother': names[1] }
 | 
			
		||||
        else:
 | 
			
		||||
            if len(person_list + person_list2) == 3:
 | 
			
		||||
        if person_list2:
 | 
			
		||||
            if len(person_list) + len(person_list2) == 3:
 | 
			
		||||
                if len(person_list) == 1:
 | 
			
		||||
                    title = _("Descendant Chart for %(person)s and "
 | 
			
		||||
                              "%(father1)s, %(mother1)s") % \
 | 
			
		||||
@@ -170,31 +178,37 @@ class DescendantTitleBase(TitleBox):
 | 
			
		||||
                              {'father1': names[0], \
 | 
			
		||||
                               'mother1': names[1], \
 | 
			
		||||
                               'person':  names2[0] }
 | 
			
		||||
            else:  #if len(person_list + person_list2) == 4:
 | 
			
		||||
            else:   #if not person_list2:
 | 
			
		||||
                title = _("Descendant Chart for %(father1)s, %(father2)s "
 | 
			
		||||
                          "and %(mother1)s, %(mother2)s") % \
 | 
			
		||||
                          {'father1':  names[0], \
 | 
			
		||||
                           'mother1':  names[1], \
 | 
			
		||||
                           'father2':  names2[0], \
 | 
			
		||||
                           'mother2':  names2[1] }
 | 
			
		||||
        else:
 | 
			
		||||
            if len(names) == 1:
 | 
			
		||||
                title = _("Descendant Chart for %(person)s") % \
 | 
			
		||||
                    {'person':  names[0] }
 | 
			
		||||
            elif len(names) == 2:
 | 
			
		||||
                title = _("Descendant Chart for %(father)s and %(mother)s") % \
 | 
			
		||||
                   {'father':  names[0],  'mother': names[1] }
 | 
			
		||||
        return title
 | 
			
		||||
    
 | 
			
		||||
    def get_parents(self, family_id):
 | 
			
		||||
        """ For a family_id, return the father and mother """
 | 
			
		||||
        
 | 
			
		||||
        family1 = self.database.get_family_from_gramps_id(family_id)
 | 
			
		||||
        father_h = family1.get_father_handle()
 | 
			
		||||
        mother_h = family1.get_mother_handle()
 | 
			
		||||
        
 | 
			
		||||
        parents = []
 | 
			
		||||
        
 | 
			
		||||
        if father_h:
 | 
			
		||||
            parents.append(self.database.get_person_from_handle(father_h))
 | 
			
		||||
        if mother_h:
 | 
			
		||||
            parents.append(self.database.get_person_from_handle(mother_h))
 | 
			
		||||
        parents = [self.database.get_person_from_handle(handle)
 | 
			
		||||
                    for handle in [father_h, mother_h] if handle]
 | 
			
		||||
        
 | 
			
		||||
        return parents
 | 
			
		||||
 | 
			
		||||
class TitleNone(TitleBox):
 | 
			
		||||
    """Family Chart Title class for the report """
 | 
			
		||||
    
 | 
			
		||||
    def __init__(self, dbase, doc):
 | 
			
		||||
        TitleBox.__init__(self, doc, "None")
 | 
			
		||||
        
 | 
			
		||||
@@ -205,6 +219,7 @@ class TitleNone(TitleBox):
 | 
			
		||||
class TitleDPY(DescendantTitleBase):
 | 
			
		||||
    """Descendant (Person yes start with parents) Chart 
 | 
			
		||||
    Title class for the report """
 | 
			
		||||
    
 | 
			
		||||
    def __init__(self, dbase, doc):
 | 
			
		||||
        DescendantTitleBase.__init__(self, dbase, doc)
 | 
			
		||||
        
 | 
			
		||||
@@ -215,29 +230,23 @@ class TitleDPY(DescendantTitleBase):
 | 
			
		||||
        family2_h = center.get_main_parents_family_handle()
 | 
			
		||||
        family2 = self.database.get_family_from_handle(family2_h)
 | 
			
		||||
        
 | 
			
		||||
        person_list = []
 | 
			
		||||
        mother2_h = father2_h = None
 | 
			
		||||
        person_list = None
 | 
			
		||||
        if family2:
 | 
			
		||||
            father2_h = family2.get_father_handle()
 | 
			
		||||
            if father2_h:
 | 
			
		||||
                person_list.append(
 | 
			
		||||
                    self.database.get_person_from_handle(father2_h))
 | 
			
		||||
            mother2_h = family2.get_mother_handle()
 | 
			
		||||
            if mother2_h:
 | 
			
		||||
                person_list.append(
 | 
			
		||||
                    self.database.get_person_from_handle(mother2_h))
 | 
			
		||||
            person_list = [self.database.get_person_from_handle(handle)
 | 
			
		||||
                            for handle in [father2_h, mother2_h] if handle]            
 | 
			
		||||
        
 | 
			
		||||
        if person_list == []:
 | 
			
		||||
            person_list.append(center)
 | 
			
		||||
        if not person_list:
 | 
			
		||||
            person_list = [center]
 | 
			
		||||
        
 | 
			
		||||
        #else:
 | 
			
		||||
        #    title = str(tmp) + " " + str(len(tmp))
 | 
			
		||||
        self.text = self.descendant_print(person_list)
 | 
			
		||||
        self.set_box_height_width()
 | 
			
		||||
 | 
			
		||||
class TitleDPN(DescendantTitleBase):
 | 
			
		||||
    """Descendant (Person no start with parents) Chart 
 | 
			
		||||
    Title class for the report """
 | 
			
		||||
    
 | 
			
		||||
    def __init__(self, dbase, doc):
 | 
			
		||||
        DescendantTitleBase.__init__(self, dbase, doc)
 | 
			
		||||
        
 | 
			
		||||
@@ -253,32 +262,25 @@ class TitleDPN(DescendantTitleBase):
 | 
			
		||||
class TitleDFY(DescendantTitleBase):
 | 
			
		||||
    """Descendant (Family yes start with parents) Chart 
 | 
			
		||||
    Title class for the report """
 | 
			
		||||
    
 | 
			
		||||
    def __init__(self, dbase, doc):
 | 
			
		||||
        DescendantTitleBase.__init__(self, dbase, doc)
 | 
			
		||||
    
 | 
			
		||||
    def get_parent_list(self, person):
 | 
			
		||||
        """ return a list of my parents.  If none, return me """
 | 
			
		||||
        if person is None:
 | 
			
		||||
        if not person:
 | 
			
		||||
            return None
 | 
			
		||||
        parent_list = []
 | 
			
		||||
        
 | 
			
		||||
        parent_list = None
 | 
			
		||||
        family_h = person.get_main_parents_family_handle()
 | 
			
		||||
        family = self.database.get_family_from_handle(family_h)
 | 
			
		||||
        if family is not None: #family = fathers parents
 | 
			
		||||
        if family: #family = fathers parents
 | 
			
		||||
            father_h = family.get_father_handle()
 | 
			
		||||
            if father_h is not None:
 | 
			
		||||
                parent_list.append(
 | 
			
		||||
                    self.database.get_person_from_handle(father_h))
 | 
			
		||||
            mother_h = family.get_mother_handle()
 | 
			
		||||
            if mother_h is not None:
 | 
			
		||||
                parent_list.append(
 | 
			
		||||
                    self.database.get_person_from_handle(mother_h))
 | 
			
		||||
        else:
 | 
			
		||||
            return [person]
 | 
			
		||||
            parent_list = [self.database.get_person_from_handle(handle)
 | 
			
		||||
                            for handle in [father_h, mother_h] if handle]
 | 
			
		||||
        
 | 
			
		||||
        if parent_list == []:
 | 
			
		||||
            return [person]
 | 
			
		||||
        else:
 | 
			
		||||
            return parent_list
 | 
			
		||||
        return parent_list or [person]
 | 
			
		||||
        
 | 
			
		||||
    def calc_title(self, family_id):
 | 
			
		||||
        """Calculate the title of the report"""
 | 
			
		||||
@@ -289,7 +291,7 @@ class TitleDFY(DescendantTitleBase):
 | 
			
		||||
        
 | 
			
		||||
        mom_parents = []
 | 
			
		||||
        if len(my_parents) > 1:
 | 
			
		||||
            if dad_parents is None:
 | 
			
		||||
            if not dad_parents:
 | 
			
		||||
                dad_parents = self.get_parent_list(my_parents[1])
 | 
			
		||||
            else:
 | 
			
		||||
                mom_parents = self.get_parent_list(my_parents[1])
 | 
			
		||||
@@ -300,6 +302,7 @@ class TitleDFY(DescendantTitleBase):
 | 
			
		||||
class TitleDFN(DescendantTitleBase):
 | 
			
		||||
    """Descendant (Family no start with parents) Chart
 | 
			
		||||
    Title class for the report """
 | 
			
		||||
    
 | 
			
		||||
    def __init__(self, dbase, doc):
 | 
			
		||||
        DescendantTitleBase.__init__(self, dbase, doc)
 | 
			
		||||
        
 | 
			
		||||
@@ -307,8 +310,7 @@ class TitleDFN(DescendantTitleBase):
 | 
			
		||||
        """Calculate the title of the report"""
 | 
			
		||||
 | 
			
		||||
        self.text = self.descendant_print(
 | 
			
		||||
            self.get_parents(family_id)
 | 
			
		||||
            )
 | 
			
		||||
            self.get_parents(family_id) )
 | 
			
		||||
        self.set_box_height_width()
 | 
			
		||||
 | 
			
		||||
class TitleF(DescendantTitleBase):
 | 
			
		||||
@@ -342,22 +344,14 @@ class TitleC(DescendantTitleBase):
 | 
			
		||||
 | 
			
		||||
        family = self.database.get_family_from_gramps_id(family_id)
 | 
			
		||||
        
 | 
			
		||||
        kids = []
 | 
			
		||||
        for kid in family.get_child_ref_list():
 | 
			
		||||
            kids.append(self.database.get_person_from_handle(kid.ref))
 | 
			
		||||
        kids = [self.database.get_person_from_handle(kid.ref)
 | 
			
		||||
                for kid in family.get_child_ref_list()]
 | 
			
		||||
 | 
			
		||||
        #ok we have the children.  Make a title off of them
 | 
			
		||||
        tmp = self._get_names(kids)
 | 
			
		||||
        
 | 
			
		||||
        title = ""
 | 
			
		||||
        while tmp != []:
 | 
			
		||||
            if title != "":
 | 
			
		||||
                title += ", "
 | 
			
		||||
            title += tmp.pop(0)
 | 
			
		||||
        self.text = _("Cousin Chart for " + ", ".join(self._get_names(kids)))
 | 
			
		||||
            
 | 
			
		||||
        title = "Cousin Chart for " + title
 | 
			
		||||
            
 | 
			
		||||
        self.text = title
 | 
			
		||||
        self.set_box_height_width()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -384,7 +378,7 @@ class RecurseDown:
 | 
			
		||||
        self.max_generations = gui.get_val('maxgen')
 | 
			
		||||
        self.max_spouses = gui.get_val('maxspouse')
 | 
			
		||||
        self.inlc_marr = gui.get_val('incmarr')
 | 
			
		||||
        if self.max_spouses == 0:
 | 
			
		||||
        if not self.max_spouses:
 | 
			
		||||
            self.inlc_marr = False
 | 
			
		||||
        
 | 
			
		||||
        #is the option even available?
 | 
			
		||||
@@ -412,7 +406,7 @@ class RecurseDown:
 | 
			
		||||
            self.cols.append(None)
 | 
			
		||||
            self.__last_direct.append(None)
 | 
			
		||||
 | 
			
		||||
        if self.cols[level] is not None:
 | 
			
		||||
        if self.cols[level]:
 | 
			
		||||
            last_box = self.cols[level]
 | 
			
		||||
            last_box.next = box
 | 
			
		||||
            
 | 
			
		||||
@@ -444,15 +438,14 @@ class RecurseDown:
 | 
			
		||||
        """ Makes a person box and add that person into the Canvas. """
 | 
			
		||||
        myself = PersonBox(level)
 | 
			
		||||
        
 | 
			
		||||
        if myself.level[1] == 0 and self.bold_direct and self.bold_now != 0:
 | 
			
		||||
        if myself.level[1] == 0 and self.bold_direct and self.bold_now:
 | 
			
		||||
            if self.bold_now == 1:
 | 
			
		||||
                self.bold_now = 0
 | 
			
		||||
            myself.set_bold()
 | 
			
		||||
 | 
			
		||||
        if level[1] == 0 and father is not None and \
 | 
			
		||||
           myself.level[0] != father.level[0]:
 | 
			
		||||
        if level[1] == 0 and father and myself.level[0] != father.level[0]:
 | 
			
		||||
            #I am a child
 | 
			
		||||
            if father.line_to is None:
 | 
			
		||||
            if not father.line_to:
 | 
			
		||||
                line = Line(father)
 | 
			
		||||
                father.line_to = line
 | 
			
		||||
                self.canvas.add_line(father.line_to)
 | 
			
		||||
@@ -493,19 +486,16 @@ class RecurseDown:
 | 
			
		||||
        or we reach the max number of spouses
 | 
			
		||||
        that we want to deal with"""
 | 
			
		||||
 | 
			
		||||
        if not person_handle: return
 | 
			
		||||
        if x_level > self.max_generations: return
 | 
			
		||||
        if s_level > 0 and s_level == self.max_spouses: return
 | 
			
		||||
        if person_handle == None: return
 | 
			
		||||
        if person_handle in self.famalies_seen: return
 | 
			
		||||
 | 
			
		||||
        myself = None
 | 
			
		||||
        person = self.database.get_person_from_handle(person_handle)
 | 
			
		||||
        family_handles = person.get_family_handle_list()
 | 
			
		||||
        if s_level == 0:
 | 
			
		||||
            if family_handles == []:
 | 
			
		||||
                val = None
 | 
			
		||||
            else:
 | 
			
		||||
                val = family_handles[0]
 | 
			
		||||
            val = family_handles[0] if family_handles else None
 | 
			
		||||
            myself = self.add_person_box( (x_level, s_level),
 | 
			
		||||
                                          person_handle, val, father)
 | 
			
		||||
 | 
			
		||||
@@ -520,50 +510,38 @@ class RecurseDown:
 | 
			
		||||
                family = self.database.get_family_from_handle(family_handle)
 | 
			
		||||
                
 | 
			
		||||
                if self.inlc_marr and self.max_spouses > 0:
 | 
			
		||||
                    if s_level == 0:
 | 
			
		||||
                        marr = self.add_marriage_box((x_level, s_level+1),
 | 
			
		||||
                                               person_handle, family_handle,
 | 
			
		||||
                                               myself)
 | 
			
		||||
                    else:
 | 
			
		||||
                        marr = self.add_marriage_box((x_level, s_level+1),
 | 
			
		||||
                                               person_handle, family_handle,
 | 
			
		||||
                                               father)
 | 
			
		||||
                    marr = self.add_marriage_box((x_level, s_level+1),
 | 
			
		||||
                                           person_handle, family_handle,
 | 
			
		||||
                                           father if s_level else myself)
 | 
			
		||||
 | 
			
		||||
                spouse_handle = ReportUtils.find_spouse(person, family)
 | 
			
		||||
                if self.max_spouses > s_level and \
 | 
			
		||||
                   spouse_handle not in self.famalies_seen:
 | 
			
		||||
                    def _spouse_box(who):
 | 
			
		||||
                        self.add_person_box((x_level, s_level+1), 
 | 
			
		||||
                                            spouse_handle, family_handle, who)
 | 
			
		||||
                    if s_level > 0:
 | 
			
		||||
                        spouse = self.add_person_box((x_level, s_level+1), 
 | 
			
		||||
                                                 spouse_handle, family_handle,
 | 
			
		||||
                                                 father)
 | 
			
		||||
                        spouse = _spouse_box(father)
 | 
			
		||||
                    elif first == 1:
 | 
			
		||||
                        spouse = self.add_person_box((x_level, s_level+1),
 | 
			
		||||
                                                 spouse_handle, family_handle,
 | 
			
		||||
                                                 myself)
 | 
			
		||||
                        spouse = _spouse_box(myself)
 | 
			
		||||
                    elif self.inlc_marr:
 | 
			
		||||
                        spouse = self.add_person_box((x_level, s_level+1),
 | 
			
		||||
                                                 spouse_handle, family_handle,
 | 
			
		||||
                                                 marr)
 | 
			
		||||
                        spouse = _spouse_box(marr)
 | 
			
		||||
                    else:
 | 
			
		||||
                        spouse = self.add_person_box((x_level, s_level+1),
 | 
			
		||||
                                                 spouse_handle, family_handle,
 | 
			
		||||
                                                 myself)
 | 
			
		||||
                        spouse = _spouse_box(myself)
 | 
			
		||||
 | 
			
		||||
                mykids = []
 | 
			
		||||
                for kid in family.get_child_ref_list():
 | 
			
		||||
                    mykids.append(kid.ref)
 | 
			
		||||
                mykids = [kid.ref for kid in family.get_child_ref_list()]
 | 
			
		||||
 | 
			
		||||
                for child_ref in mykids:
 | 
			
		||||
                    if self.inlc_marr and self.max_spouses > 0:
 | 
			
		||||
                        self.recurse(child_ref, x_level+1, 0, marr)
 | 
			
		||||
                    elif spouse is not None:
 | 
			
		||||
                    elif spouse:
 | 
			
		||||
                        self.recurse(child_ref, x_level+1, 0, spouse)
 | 
			
		||||
                    else:
 | 
			
		||||
                        self.recurse(child_ref, x_level+1, 0, myself)
 | 
			
		||||
                first = 0
 | 
			
		||||
 | 
			
		||||
                if self.max_spouses > s_level and spouse_handle != None and \
 | 
			
		||||
                   self.famalies_seen.count(spouse_handle) == 0:
 | 
			
		||||
                if self.max_spouses > s_level and spouse_handle and \
 | 
			
		||||
                   self.famalies_seen.count(spouse_handle):
 | 
			
		||||
                    #spouse_handle = ReportUtils.find_spouse(person,family)
 | 
			
		||||
                    self.recurse(spouse_handle, x_level, s_level+1, spouse)
 | 
			
		||||
 | 
			
		||||
@@ -572,6 +550,7 @@ class RecurseDown:
 | 
			
		||||
        Adds a family into the canvas.
 | 
			
		||||
        only will be used for my direct grandparents, and my parents only.
 | 
			
		||||
        """
 | 
			
		||||
        
 | 
			
		||||
        family_h = family.get_handle()
 | 
			
		||||
        father_h = family.get_father_handle()
 | 
			
		||||
        mother_h = family.get_mother_handle()
 | 
			
		||||
@@ -599,10 +578,8 @@ class RecurseDown:
 | 
			
		||||
        #    child_refs.append(child_ref)
 | 
			
		||||
            
 | 
			
		||||
        for child_ref in family.get_child_ref_list():
 | 
			
		||||
            if self.inlc_marr:
 | 
			
		||||
                self.recurse(child_ref.ref, level+1, 0, family_b)
 | 
			
		||||
            else:
 | 
			
		||||
                self.recurse(child_ref.ref, level+1, 0, father_b)
 | 
			
		||||
            self.recurse(child_ref.ref, level+1, 0,
 | 
			
		||||
                family_b if self.inlc_marr else father_b)
 | 
			
		||||
        
 | 
			
		||||
        #Future code.
 | 
			
		||||
        #if self.inlc_marr:
 | 
			
		||||
@@ -620,9 +597,7 @@ class RecurseDown:
 | 
			
		||||
        still we want to respect the FamaliesSeen list
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        if person_handle == None:
 | 
			
		||||
            return False
 | 
			
		||||
        if person_handle in self.famalies_seen:
 | 
			
		||||
        if not person_handle or person_handle in self.famalies_seen:
 | 
			
		||||
            return False
 | 
			
		||||
 | 
			
		||||
        person = self.database.get_person_from_handle(person_handle)
 | 
			
		||||
@@ -632,7 +607,7 @@ class RecurseDown:
 | 
			
		||||
 | 
			
		||||
                family = self.database.get_family_from_handle(family_handle)
 | 
			
		||||
 | 
			
		||||
                if family.get_child_ref_list() != []:
 | 
			
		||||
                if family.get_child_ref_list():
 | 
			
		||||
                    return True
 | 
			
		||||
        return False
 | 
			
		||||
 | 
			
		||||
@@ -641,6 +616,7 @@ class RecurseDown:
 | 
			
		||||
        Quickly check to see if we want to continue recursion
 | 
			
		||||
        still we want to respect the FamaliesSeen list
 | 
			
		||||
        """
 | 
			
		||||
        
 | 
			
		||||
        person = self.database.get_person_from_handle(person_handle)
 | 
			
		||||
 | 
			
		||||
        show = False
 | 
			
		||||
@@ -656,7 +632,7 @@ class RecurseDown:
 | 
			
		||||
        #    self.famalies_seen.append(person_handle)
 | 
			
		||||
        #    show = False
 | 
			
		||||
 | 
			
		||||
        if show == True:
 | 
			
		||||
        if show:
 | 
			
		||||
            self.bold_now = 1
 | 
			
		||||
            self.recurse(person_handle, level, 0, None)
 | 
			
		||||
 | 
			
		||||
@@ -742,6 +718,7 @@ class MakeFamilyTree(RecurseDown):
 | 
			
		||||
    order of people inserted into Persons is important.
 | 
			
		||||
    makes sure that order is done correctly.
 | 
			
		||||
    """
 | 
			
		||||
    
 | 
			
		||||
    def __init__(self, dbase, canvas):
 | 
			
		||||
        RecurseDown.__init__(self, dbase, canvas)
 | 
			
		||||
    
 | 
			
		||||
@@ -819,7 +796,7 @@ class MakeFamilyTree(RecurseDown):
 | 
			
		||||
                    #if the condition is true, we only want to show
 | 
			
		||||
                    #this parent again IF s/he has children
 | 
			
		||||
                    show = self.has_children(father1_h)
 | 
			
		||||
            if show == False:
 | 
			
		||||
            if not show:
 | 
			
		||||
                self.famalies_seen.append(father1_h)
 | 
			
		||||
 | 
			
		||||
            father2_id = self.add_family( 0, family2, None )
 | 
			
		||||
@@ -833,7 +810,7 @@ class MakeFamilyTree(RecurseDown):
 | 
			
		||||
        #if my father does not have parents (he is the highest)
 | 
			
		||||
        #######################
 | 
			
		||||
        #do his OTHER wives first.
 | 
			
		||||
        if family2 == None and father1:
 | 
			
		||||
        if not family2 and father1:
 | 
			
		||||
            self.recurse_if(father1_h,  1)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -842,10 +819,7 @@ class MakeFamilyTree(RecurseDown):
 | 
			
		||||
        #######################
 | 
			
		||||
        if family2:
 | 
			
		||||
            #We need to add dad to the family
 | 
			
		||||
            if self.inlc_marr:
 | 
			
		||||
                parent = family2_id
 | 
			
		||||
            else:
 | 
			
		||||
                parent = father2_id
 | 
			
		||||
            parent = family2_id if self.inlc_marr else father2_id
 | 
			
		||||
        else:
 | 
			
		||||
            parent = None
 | 
			
		||||
 | 
			
		||||
@@ -869,10 +843,10 @@ class MakeFamilyTree(RecurseDown):
 | 
			
		||||
 | 
			
		||||
        #make sure there is at least one child in this family.
 | 
			
		||||
        #if not put in a placeholder
 | 
			
		||||
        if line.end == []:
 | 
			
		||||
        if not line.end:
 | 
			
		||||
            box = PlaceHolderBox((father1_b[0]+1, 0))
 | 
			
		||||
            self.add_to_col(box)
 | 
			
		||||
            line.end.append(box)
 | 
			
		||||
            line.end = [box]
 | 
			
		||||
 | 
			
		||||
        #######################
 | 
			
		||||
        #######################
 | 
			
		||||
@@ -920,7 +894,7 @@ class MakeFamilyTree(RecurseDown):
 | 
			
		||||
        #######################
 | 
			
		||||
        #if my mother does not have parents (she is the highest)
 | 
			
		||||
        #Then do her OTHER spouses.
 | 
			
		||||
        if family2 == None and mother1:
 | 
			
		||||
        if not family2 and mother1:
 | 
			
		||||
            self.recurse_if(mother1_h,  1)
 | 
			
		||||
 | 
			
		||||
        #######################
 | 
			
		||||
@@ -1006,7 +980,7 @@ class MakeReport(object):
 | 
			
		||||
    
 | 
			
		||||
    def __move_col_from_here_down(self, box, amount):
 | 
			
		||||
        """Move me and everyone below me in this column only down"""
 | 
			
		||||
        while box is not None:
 | 
			
		||||
        while box:
 | 
			
		||||
            box.y_cm += amount
 | 
			
		||||
            box = box.next
 | 
			
		||||
        
 | 
			
		||||
@@ -1014,8 +988,8 @@ class MakeReport(object):
 | 
			
		||||
        """Move me, everyone below me in this column,
 | 
			
		||||
        and all of our children (and childrens children) down."""
 | 
			
		||||
        col = [box]
 | 
			
		||||
        while len(col) > 0:
 | 
			
		||||
            if len(col) == 1 and col[0].line_to is not None:
 | 
			
		||||
        while col:
 | 
			
		||||
            if len(col) == 1 and col[0].line_to:
 | 
			
		||||
                col.append(col[0].line_to.end[0])
 | 
			
		||||
            
 | 
			
		||||
            col[0].y_cm += amount
 | 
			
		||||
@@ -1027,7 +1001,7 @@ class MakeReport(object):
 | 
			
		||||
    def __next_family_group(self, box):
 | 
			
		||||
        """ a helper function.  Assume box is at the start of a family block.
 | 
			
		||||
        get this family block. """
 | 
			
		||||
        while box is not None:
 | 
			
		||||
        while box:
 | 
			
		||||
            left_group = []
 | 
			
		||||
            
 | 
			
		||||
            #Form the parental (left) group.
 | 
			
		||||
@@ -1037,12 +1011,12 @@ class MakeReport(object):
 | 
			
		||||
                left_group.append(box)
 | 
			
		||||
                box = box.next
 | 
			
		||||
            
 | 
			
		||||
            if box is not None and box.level[1] != 0 and self.inlc_marr:
 | 
			
		||||
            if box and box.level[1] != 0 and self.inlc_marr:
 | 
			
		||||
                #add/start with the marriage box
 | 
			
		||||
                left_group.append(box)
 | 
			
		||||
                box = box.next
 | 
			
		||||
            
 | 
			
		||||
            if box is not None and box.level[1] != 0 and self.max_spouses > 0:
 | 
			
		||||
            if box and box.level[1] != 0 and self.max_spouses > 0:
 | 
			
		||||
                #add/start with the spousal box
 | 
			
		||||
                left_group.append(box)
 | 
			
		||||
                box = box.next
 | 
			
		||||
@@ -1050,14 +1024,14 @@ class MakeReport(object):
 | 
			
		||||
            right_group = []
 | 
			
		||||
            #Form the children (right) group.
 | 
			
		||||
            for spouses in left_group:
 | 
			
		||||
                if spouses.line_to is not None:
 | 
			
		||||
                if spouses.line_to:
 | 
			
		||||
                    right_group += spouses.line_to.end
 | 
			
		||||
                    #will only be one.  but in the family report,
 | 
			
		||||
                    #Dad and mom point to the same line
 | 
			
		||||
                    break
 | 
			
		||||
            
 | 
			
		||||
            #we now have everyone we want
 | 
			
		||||
            if right_group != []:
 | 
			
		||||
            if right_group:
 | 
			
		||||
                return left_group, right_group
 | 
			
		||||
            #else
 | 
			
		||||
            #  no children, so no family.  go again until we find one to return.
 | 
			
		||||
@@ -1069,9 +1043,9 @@ class MakeReport(object):
 | 
			
		||||
        (parents with children) that may need to be moved. """
 | 
			
		||||
        for x_col in range(len(self.cols)-2, -1, -1):
 | 
			
		||||
            box = self.cols[x_col][0]   #The first person in this col
 | 
			
		||||
            while box is not None:
 | 
			
		||||
            while box:
 | 
			
		||||
                left_group, right_group = self.__next_family_group(box)
 | 
			
		||||
                if left_group is None:
 | 
			
		||||
                if not left_group:
 | 
			
		||||
                    box = None #we found the end of this col
 | 
			
		||||
                else:
 | 
			
		||||
                    yield left_group, right_group
 | 
			
		||||
@@ -1093,7 +1067,7 @@ class MakeReport(object):
 | 
			
		||||
        if self.compress_tree:
 | 
			
		||||
            #calculate a new left and right move points
 | 
			
		||||
            for left_line in left_group:
 | 
			
		||||
                if left_line.line_to is not None:
 | 
			
		||||
                if left_line.line_to:
 | 
			
		||||
                    break
 | 
			
		||||
            left_center = left_line.y_cm + (left_line.height /2)
 | 
			
		||||
            
 | 
			
		||||
@@ -1143,7 +1117,7 @@ class MakeReport(object):
 | 
			
		||||
            #if so we need to move down mariage information
 | 
			
		||||
            #and mom!  
 | 
			
		||||
            left_line = left_group[0].line_to
 | 
			
		||||
            if left_line is None:
 | 
			
		||||
            if not left_line:
 | 
			
		||||
                left_line = left_group[1].line_to
 | 
			
		||||
            left_group = left_line.start
 | 
			
		||||
            
 | 
			
		||||
@@ -1182,7 +1156,7 @@ class MakeReport(object):
 | 
			
		||||
        #Width of each column of people - self.rept_opt.box_width
 | 
			
		||||
        #width of each column (or row) of lines - self.rept_opt.col_width
 | 
			
		||||
 | 
			
		||||
        if len(self.cols[0]) == 0:
 | 
			
		||||
        if not self.cols[0]:
 | 
			
		||||
            #We wanted to print parents of starting person/family but
 | 
			
		||||
            #there were none!
 | 
			
		||||
            #remove column 0 and move everyone back one level
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user