Updates to all three reports.
Ancestor Descendant Family Descendant fixes error 4602, 4603 and other errors I found svn: r16626
This commit is contained in:
		@@ -62,6 +62,8 @@ from gui.plug.report import MenuReportOptions
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
from gen.display.name import displayer as name_displayer
 | 
					from gen.display.name import displayer as name_displayer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from gui.utils import ProgressMeter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PT2CM = ReportUtils.pt2cm
 | 
					PT2CM = ReportUtils.pt2cm
 | 
				
			||||||
#cm2pt = ReportUtils.cm2pt
 | 
					#cm2pt = ReportUtils.cm2pt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -92,7 +94,7 @@ class AncestorBoxBase(BoxBase):
 | 
				
			|||||||
        """ Calculate the column or generation that this person is in. """
 | 
					        """ Calculate the column or generation that this person is in. """
 | 
				
			||||||
        x_level = self.level[0]
 | 
					        x_level = self.level[0]
 | 
				
			||||||
        #Calculate which row in the column of people.
 | 
					        #Calculate which row in the column of people.
 | 
				
			||||||
        tmp_y = self.level[1] - (2**x_level)
 | 
					        tmp_y = self.level[2] - (2**x_level)
 | 
				
			||||||
        #Calculate which row in the table (yes table) of people.
 | 
					        #Calculate which row in the table (yes table) of people.
 | 
				
			||||||
        delta = (2**max_gen) // (2**(x_level))
 | 
					        delta = (2**max_gen) // (2**(x_level))
 | 
				
			||||||
        return int((delta/2) + (tmp_y*delta))
 | 
					        return int((delta/2) + (tmp_y*delta))
 | 
				
			||||||
@@ -103,7 +105,7 @@ class PersonBox(AncestorBoxBase):
 | 
				
			|||||||
    """
 | 
					    """
 | 
				
			||||||
    def __init__(self, level):
 | 
					    def __init__(self, level):
 | 
				
			||||||
        AncestorBoxBase.__init__(self, "AC2-box")
 | 
					        AncestorBoxBase.__init__(self, "AC2-box")
 | 
				
			||||||
        self.level = (X_INDEX(level), level)
 | 
					        self.level = (X_INDEX(level), 0, level)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class FamilyBox(AncestorBoxBase):
 | 
					class FamilyBox(AncestorBoxBase):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
@@ -111,13 +113,13 @@ class FamilyBox(AncestorBoxBase):
 | 
				
			|||||||
    """
 | 
					    """
 | 
				
			||||||
    def __init__(self, level):
 | 
					    def __init__(self, level):
 | 
				
			||||||
        AncestorBoxBase.__init__(self, "AC2-fam-box")
 | 
					        AncestorBoxBase.__init__(self, "AC2-fam-box")
 | 
				
			||||||
        self.level = (X_INDEX(level)+1, level)
 | 
					        self.level = (X_INDEX(level)+1, 1, level)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def y_index(self, max_gen):
 | 
					    def y_index(self, max_gen):
 | 
				
			||||||
        """ Calculate the column or generation that this person is in. """
 | 
					        """ Calculate the column or generation that this person is in. """
 | 
				
			||||||
        x_level = self.level[0] - 1
 | 
					        x_level = self.level[0] - 1
 | 
				
			||||||
        #Calculate which row in the column of people.
 | 
					        #Calculate which row in the column of people.
 | 
				
			||||||
        tmp_y = self.level[1] - (2**x_level)
 | 
					        tmp_y = self.level[2] - (2**x_level)
 | 
				
			||||||
        #Calculate which row in the table (yes table) of people.
 | 
					        #Calculate which row in the table (yes table) of people.
 | 
				
			||||||
        delta = (2**max_gen) // (2**(x_level))
 | 
					        delta = (2**max_gen) // (2**(x_level))
 | 
				
			||||||
        return int((delta/2) + (tmp_y*delta))
 | 
					        return int((delta/2) + (tmp_y*delta))
 | 
				
			||||||
@@ -128,11 +130,11 @@ class FamilyBox(AncestorBoxBase):
 | 
				
			|||||||
# Line class
 | 
					# Line class
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
#------------------------------------------------------------------------
 | 
					#------------------------------------------------------------------------
 | 
				
			||||||
class Line(LineBase):
 | 
					#class Line(LineBase):
 | 
				
			||||||
    """ Our line class."""
 | 
					#    """ Our line class."""
 | 
				
			||||||
    def __init__(self, start):
 | 
					#    def __init__(self, start):
 | 
				
			||||||
        LineBase.__init__(self, start)
 | 
					#        LineBase.__init__(self, start)
 | 
				
			||||||
        self.linestr = 'AC2-line'
 | 
					#        self.linestr = 'AC2-line'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#------------------------------------------------------------------------
 | 
					#------------------------------------------------------------------------
 | 
				
			||||||
@@ -274,13 +276,13 @@ class MakeAncestorTree(object):
 | 
				
			|||||||
        if father is None and mother is None:
 | 
					        if father is None and mother is None:
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        line = Line(person)
 | 
					        line = LineBase(person)
 | 
				
			||||||
        if father:
 | 
					        if father:
 | 
				
			||||||
            line.add_to(father)
 | 
					            line.add_to(father)
 | 
				
			||||||
        if mother:
 | 
					        if mother:
 | 
				
			||||||
            line.add_to(mother)
 | 
					            line.add_to(mother)
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        self.canvas.add_line(line)
 | 
					        person.line_to = line
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        return line
 | 
					        return line
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -516,13 +518,13 @@ class MakeReport():
 | 
				
			|||||||
        if box.width > self.doc.report_opts.max_box_width:
 | 
					        if box.width > self.doc.report_opts.max_box_width:
 | 
				
			||||||
            self.doc.report_opts.max_box_width = box.width #+ box.shadow
 | 
					            self.doc.report_opts.max_box_width = box.width #+ box.shadow
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if box.level[1] > 0:
 | 
					        if box.level[2] > 0:
 | 
				
			||||||
            if box.level[1] % 2 == 0 and box.height > self.father_ht:
 | 
					            if box.level[2] % 2 == 0 and box.height > self.father_ht:
 | 
				
			||||||
                self.father_ht = box.height
 | 
					                self.father_ht = box.height
 | 
				
			||||||
            elif box.level[1] % 2 == 1 and box.height > self.mother_ht:
 | 
					            elif box.level[2] % 2 == 1 and box.height > self.mother_ht:
 | 
				
			||||||
                self.mother_ht = box.height
 | 
					                self.mother_ht = box.height
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        tmp = log2(box.level[1])
 | 
					        tmp = log2(box.level[2])
 | 
				
			||||||
        if tmp > self.max_generations:
 | 
					        if tmp > self.max_generations:
 | 
				
			||||||
            self.max_generations = tmp
 | 
					            self.max_generations = tmp
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
@@ -612,15 +614,19 @@ class AncestorTree2(Report):
 | 
				
			|||||||
        """
 | 
					        """
 | 
				
			||||||
        Report.__init__(self, database, options_class)
 | 
					        Report.__init__(self, database, options_class)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.progress = ProgressMeter(_('Ancestor Tree'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.connect = GUIConnect()
 | 
					        self.connect = GUIConnect()
 | 
				
			||||||
        self.connect.set__opts(options_class.menu)
 | 
					        self.connect.set__opts(options_class.menu)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        style_sheet = self.doc.get_style_sheet()
 | 
					        style_sheet = self.doc.get_style_sheet()
 | 
				
			||||||
        font_normal = style_sheet.get_paragraph_style("AC2-Normal").get_font()
 | 
					        font_normal = style_sheet.get_paragraph_style("AC2-Normal").get_font()
 | 
				
			||||||
        self.doc.report_opts = ReportOptions(self.doc, font_normal)
 | 
					        self.doc.report_opts = ReportOptions(self.doc, font_normal, 'AC2-line')
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        self.canvas = Canvas(self.doc)
 | 
					        self.canvas = Canvas(self.doc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.progress.set_pass(_('Making the Tree...'), 4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #make the tree into self.canvas
 | 
					        #make the tree into self.canvas
 | 
				
			||||||
        inlc_marr = self.connect.get_val('incmarr')
 | 
					        inlc_marr = self.connect.get_val('incmarr')
 | 
				
			||||||
        self.max_generations = self.connect.get_val('maxgen')
 | 
					        self.max_generations = self.connect.get_val('maxgen')
 | 
				
			||||||
@@ -630,6 +636,8 @@ class AncestorTree2(Report):
 | 
				
			|||||||
        tree.start(self.connect.get_val('pid'))
 | 
					        tree.start(self.connect.get_val('pid'))
 | 
				
			||||||
        tree = None
 | 
					        tree = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.progress.step()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #Title
 | 
					        #Title
 | 
				
			||||||
        title = self.connect.title_class(self.doc)
 | 
					        title = self.connect.title_class(self.doc)
 | 
				
			||||||
        center = self.database.get_person_from_gramps_id(
 | 
					        center = self.database.get_person_from_gramps_id(
 | 
				
			||||||
@@ -655,6 +663,8 @@ class AncestorTree2(Report):
 | 
				
			|||||||
        almost all of this should be moved into Canvas!
 | 
					        almost all of this should be moved into Canvas!
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.progress.step()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if self.connect.get_val('use_note'):
 | 
					        if self.connect.get_val('use_note'):
 | 
				
			||||||
            note_box = NoteBox(self.doc, "AC2-fam-box", 
 | 
					            note_box = NoteBox(self.doc, "AC2-fam-box", 
 | 
				
			||||||
                               self.connect.get_val('note_local'))
 | 
					                               self.connect.get_val('note_local'))
 | 
				
			||||||
@@ -695,6 +705,7 @@ class AncestorTree2(Report):
 | 
				
			|||||||
        if prnnum:
 | 
					        if prnnum:
 | 
				
			||||||
            page_num_box = PageNumberBox(self.doc, 'AC2-box')
 | 
					            page_num_box = PageNumberBox(self.doc, 'AC2-box')
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					        self.progress.step()
 | 
				
			||||||
        #####################
 | 
					        #####################
 | 
				
			||||||
        #ok, everyone is now ready to print on the canvas.  Paginate?
 | 
					        #ok, everyone is now ready to print on the canvas.  Paginate?
 | 
				
			||||||
        self.canvas.paginate(colsperpage, one_page)
 | 
					        self.canvas.paginate(colsperpage, one_page)
 | 
				
			||||||
@@ -703,6 +714,9 @@ class AncestorTree2(Report):
 | 
				
			|||||||
        #Yeah!!!
 | 
					        #Yeah!!!
 | 
				
			||||||
        #lets finally make some pages!!!
 | 
					        #lets finally make some pages!!!
 | 
				
			||||||
        #####################
 | 
					        #####################
 | 
				
			||||||
 | 
					        pages = self.canvas.page_count(incblank)
 | 
				
			||||||
 | 
					        self.progress.set_pass(_('Printing the Tree...'), pages)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for page in self.canvas.page_iter_gen(incblank):
 | 
					        for page in self.canvas.page_iter_gen(incblank):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            self.doc.start_page()
 | 
					            self.doc.start_page()
 | 
				
			||||||
@@ -718,7 +732,10 @@ class AncestorTree2(Report):
 | 
				
			|||||||
            #Print the individual people and lines
 | 
					            #Print the individual people and lines
 | 
				
			||||||
            page.display()
 | 
					            page.display()
 | 
				
			||||||
                    
 | 
					                    
 | 
				
			||||||
 | 
					            self.progress.step()
 | 
				
			||||||
            self.doc.end_page()
 | 
					            self.doc.end_page()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.progress.close()
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def scale_styles(self, scale):
 | 
					    def scale_styles(self, scale):
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -84,7 +84,6 @@ class DescendantBoxBase(BoxBase):
 | 
				
			|||||||
        BoxBase.__init__(self)
 | 
					        BoxBase.__init__(self)
 | 
				
			||||||
        self.boxstr = boxstr
 | 
					        self.boxstr = boxstr
 | 
				
			||||||
        self.next = None
 | 
					        self.next = None
 | 
				
			||||||
        self.line_to = None
 | 
					 | 
				
			||||||
        self.father = None
 | 
					        self.father = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def calc_text(self, database, person, family):
 | 
					    def calc_text(self, database, person, family):
 | 
				
			||||||
@@ -127,6 +126,8 @@ class PlaceHolderBox(BoxBase):
 | 
				
			|||||||
        BoxBase.__init__(self)
 | 
					        BoxBase.__init__(self)
 | 
				
			||||||
        self.boxstr = "None"
 | 
					        self.boxstr = "None"
 | 
				
			||||||
        self.level = level
 | 
					        self.level = level
 | 
				
			||||||
 | 
					        self.line_to = None
 | 
				
			||||||
 | 
					        self.next = None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def calc_text(self, database, person, family):
 | 
					    def calc_text(self, database, person, family):
 | 
				
			||||||
        """ move along.  Nothing to see here """
 | 
					        """ move along.  Nothing to see here """
 | 
				
			||||||
@@ -138,12 +139,12 @@ class PlaceHolderBox(BoxBase):
 | 
				
			|||||||
# Line class
 | 
					# Line class
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
#------------------------------------------------------------------------
 | 
					#------------------------------------------------------------------------
 | 
				
			||||||
class Line(LineBase):
 | 
					#class Line(LineBase):
 | 
				
			||||||
    """ Our line class."""
 | 
					#    """ Our line class."""
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
    def __init__(self, start):
 | 
					#    def __init__(self, start):
 | 
				
			||||||
        LineBase.__init__(self, start)
 | 
					#        LineBase.__init__(self, start)
 | 
				
			||||||
        self.linestr = "CG2-line"
 | 
					#        self.linestr = "CG2-line"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#------------------------------------------------------------------------
 | 
					#------------------------------------------------------------------------
 | 
				
			||||||
@@ -162,9 +163,13 @@ class DescendantTitleBase(TitleBox):
 | 
				
			|||||||
        If in the Family reports and there are two families, person_list2
 | 
					        If in the Family reports and there are two families, person_list2
 | 
				
			||||||
        will be used.
 | 
					        will be used.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
 | 
					        if len(person_list) == len(person_list2) == 1:
 | 
				
			||||||
 | 
					            person_list = person_list + person_list2
 | 
				
			||||||
 | 
					            person_list2 = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        names = self._get_names(person_list)
 | 
					        names = self._get_names(person_list)
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
        if person_list2:
 | 
					        if person_list2:
 | 
				
			||||||
            names2 = self._get_names(person_list2)
 | 
					            names2 = self._get_names(person_list2)
 | 
				
			||||||
            if len(names) + len(names2) == 3:
 | 
					            if len(names) + len(names2) == 3:
 | 
				
			||||||
@@ -413,7 +418,7 @@ class RecurseDown:
 | 
				
			|||||||
            self.cols.append(None)
 | 
					            self.cols.append(None)
 | 
				
			||||||
            self.__last_direct.append(None)
 | 
					            self.__last_direct.append(None)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if self.cols[level]:
 | 
					        if self.cols[level]:  #if (not the first box in this column)
 | 
				
			||||||
            last_box = self.cols[level]
 | 
					            last_box = self.cols[level]
 | 
				
			||||||
            last_box.next = box
 | 
					            last_box.next = box
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
@@ -429,7 +434,11 @@ class RecurseDown:
 | 
				
			|||||||
                box.y_cm += self.canvas.doc.report_opts.box_mgap
 | 
					                box.y_cm += self.canvas.doc.report_opts.box_mgap
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            if box.level[1] == 0 and self.__last_direct[level]:
 | 
					            if box.level[1] == 0 and self.__last_direct[level]:
 | 
				
			||||||
                if box.father != self.__last_direct[level].father:
 | 
					                #ok, a new direct descendant.
 | 
				
			||||||
 | 
					                #print level, box.father is not None, self.__last_direct[level].father is not None, box.text[0], \
 | 
				
			||||||
 | 
					                # self.__last_direct[level].text[0]
 | 
				
			||||||
 | 
					                if box.father != self.__last_direct[level].father and \
 | 
				
			||||||
 | 
					                   box.father != self.__last_direct[level]:
 | 
				
			||||||
                    box.y_cm += self.canvas.doc.report_opts.box_pgap
 | 
					                    box.y_cm += self.canvas.doc.report_opts.box_pgap
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        self.cols[level] = box
 | 
					        self.cols[level] = box
 | 
				
			||||||
@@ -443,6 +452,7 @@ class RecurseDown:
 | 
				
			|||||||
    def add_person_box(self, level, indi_handle, fams_handle, father):
 | 
					    def add_person_box(self, level, indi_handle, fams_handle, father):
 | 
				
			||||||
        """ Makes a person box and add that person into the Canvas. """
 | 
					        """ Makes a person box and add that person into the Canvas. """
 | 
				
			||||||
        myself = PersonBox(level)
 | 
					        myself = PersonBox(level)
 | 
				
			||||||
 | 
					        myself.father = father
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        if myself.level[1] == 0 and self.bold_direct and self.bold_now:
 | 
					        if myself.level[1] == 0 and self.bold_direct and self.bold_now:
 | 
				
			||||||
            if self.bold_now == 1:
 | 
					            if self.bold_now == 1:
 | 
				
			||||||
@@ -451,15 +461,14 @@ class RecurseDown:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if level[1] == 0 and father and myself.level[0] != father.level[0]:
 | 
					        if level[1] == 0 and father and myself.level[0] != father.level[0]:
 | 
				
			||||||
            #I am a child
 | 
					            #I am a child
 | 
				
			||||||
            if not father.line_to:
 | 
					            if father.line_to:
 | 
				
			||||||
                line = Line(father)
 | 
					 | 
				
			||||||
                father.line_to = line
 | 
					 | 
				
			||||||
                self.canvas.add_line(father.line_to)
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                line = father.line_to
 | 
					                line = father.line_to
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                line = LineBase(father)
 | 
				
			||||||
 | 
					                father.line_to = line
 | 
				
			||||||
 | 
					                #self.canvas.add_line(line)
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
            father.line_to.end.append(myself)
 | 
					            line.end.append(myself)
 | 
				
			||||||
            myself.father = father
 | 
					 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        #calculate the text.
 | 
					        #calculate the text.
 | 
				
			||||||
        myself.calc_text(self.database, indi_handle, fams_handle)
 | 
					        myself.calc_text(self.database, indi_handle, fams_handle)
 | 
				
			||||||
@@ -528,8 +537,6 @@ class RecurseDown:
 | 
				
			|||||||
                                            spouse_handle, family_handle, who)
 | 
					                                            spouse_handle, family_handle, who)
 | 
				
			||||||
                    if s_level > 0:
 | 
					                    if s_level > 0:
 | 
				
			||||||
                        spouse = _spouse_box(father)
 | 
					                        spouse = _spouse_box(father)
 | 
				
			||||||
                    elif first == 1:
 | 
					 | 
				
			||||||
                        spouse = _spouse_box(myself)
 | 
					 | 
				
			||||||
                    elif self.inlc_marr:
 | 
					                    elif self.inlc_marr:
 | 
				
			||||||
                        spouse = _spouse_box(marr)
 | 
					                        spouse = _spouse_box(marr)
 | 
				
			||||||
                    else:
 | 
					                    else:
 | 
				
			||||||
@@ -542,6 +549,8 @@ class RecurseDown:
 | 
				
			|||||||
                for child_ref in mykids:
 | 
					                for child_ref in mykids:
 | 
				
			||||||
                    if self.inlc_marr and self.max_spouses > 0:
 | 
					                    if self.inlc_marr and self.max_spouses > 0:
 | 
				
			||||||
                        _child_recurse(marr)
 | 
					                        _child_recurse(marr)
 | 
				
			||||||
 | 
					                    elif first == 1 and s_level == 0:
 | 
				
			||||||
 | 
					                        _child_recurse(myself)
 | 
				
			||||||
                    elif spouse:
 | 
					                    elif spouse:
 | 
				
			||||||
                        _child_recurse(spouse)
 | 
					                        _child_recurse(spouse)
 | 
				
			||||||
                    else:
 | 
					                    else:
 | 
				
			||||||
@@ -586,18 +595,19 @@ class RecurseDown:
 | 
				
			|||||||
                (level, 0), None, None, father_b)
 | 
					                (level, 0), None, None, father_b)
 | 
				
			||||||
        retrn.append(mother_b)
 | 
					        retrn.append(mother_b)
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					        family_line = family_b if self.inlc_marr else father_b
 | 
				
			||||||
        for child_ref in family.get_child_ref_list():
 | 
					        for child_ref in family.get_child_ref_list():
 | 
				
			||||||
            self.recurse(child_ref.ref, level+1, 0,
 | 
					            self.recurse(child_ref.ref, level+1, 0, family_line)
 | 
				
			||||||
                family_b if self.inlc_marr else father_b)
 | 
					 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        self.bold_now = 0
 | 
					        self.bold_now = 0
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        #Future code.
 | 
					        #Set up the lines for the family
 | 
				
			||||||
        family_line = family_b if self.inlc_marr else father_b
 | 
					        if not family_line.line_to:
 | 
				
			||||||
        if family_line.line_to:
 | 
					            #no children.
 | 
				
			||||||
            if self.inlc_marr:
 | 
					            family_line.line_to = LineBase(family_line)
 | 
				
			||||||
                family_line.line_to.start.append(father_b)
 | 
					        if self.inlc_marr:
 | 
				
			||||||
            family_line.line_to.start.append(mother_b)
 | 
					            family_line.line_to.start.append(father_b)
 | 
				
			||||||
 | 
					        family_line.line_to.start.append(mother_b)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return retrn
 | 
					        return retrn
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -834,10 +844,11 @@ class MakeFamilyTree(RecurseDown):
 | 
				
			|||||||
        #make sure there is at least one child in this family.
 | 
					        #make sure there is at least one child in this family.
 | 
				
			||||||
        #if not put in a placeholder
 | 
					        #if not put in a placeholder
 | 
				
			||||||
        family1_line = family1_l[1] if self.inlc_marr else family1_l[0]
 | 
					        family1_line = family1_l[1] if self.inlc_marr else family1_l[0]
 | 
				
			||||||
        if family1_line.line_to and not family1_line.line_to.end:
 | 
					        if family1_line.line_to.end == []:
 | 
				
			||||||
            box = PlaceHolderBox((father1_b[0]+1, 0))
 | 
					            box = PlaceHolderBox((mother1_b.level[0]+1, 0))
 | 
				
			||||||
 | 
					            box.father = family1_l[0]
 | 
				
			||||||
            self.add_to_col(box)
 | 
					            self.add_to_col(box)
 | 
				
			||||||
            line.end = [box]
 | 
					            family1_line.line_to.end = [box]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #######################
 | 
					        #######################
 | 
				
			||||||
        #######################
 | 
					        #######################
 | 
				
			||||||
@@ -896,7 +907,7 @@ class MakeFamilyTree(RecurseDown):
 | 
				
			|||||||
            family2_line = family2_l[1] if self.inlc_marr else family2_l[0]
 | 
					            family2_line = family2_l[1] if self.inlc_marr else family2_l[0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            family2_line = family2_line.line_to
 | 
					            family2_line = family2_line.line_to
 | 
				
			||||||
            if family2_line.end:
 | 
					            if family2_line.end != []:
 | 
				
			||||||
                family2_line.end.insert(0, mother1_b)
 | 
					                family2_line.end.insert(0, mother1_b)
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                family2_line.end = [mother1_b]
 | 
					                family2_line.end = [mother1_b]
 | 
				
			||||||
@@ -993,36 +1004,39 @@ class MakeReport(object):
 | 
				
			|||||||
        get this family block. """
 | 
					        get this family block. """
 | 
				
			||||||
        while box:
 | 
					        while box:
 | 
				
			||||||
            left_group = []
 | 
					            left_group = []
 | 
				
			||||||
 | 
					            line = None
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            #Form the parental (left) group.
 | 
					            #Form the parental (left) group.
 | 
				
			||||||
            #am I a direct descendant?  
 | 
					            #am I a direct descendant?  
 | 
				
			||||||
            if box.level[1] == 0:
 | 
					            if box.level[1] == 0:
 | 
				
			||||||
                #I am the father/mother.  
 | 
					                #I am the father/mother.  
 | 
				
			||||||
                left_group.append(box)
 | 
					                left_group.append(box)
 | 
				
			||||||
 | 
					                if box.line_to:
 | 
				
			||||||
 | 
					                    line = box.line_to
 | 
				
			||||||
                box = box.next
 | 
					                box = box.next
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            if box 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
 | 
					                #add/start with the marriage box
 | 
				
			||||||
                left_group.append(box)
 | 
					                left_group.append(box)
 | 
				
			||||||
 | 
					                if box.line_to:
 | 
				
			||||||
 | 
					                    line = box.line_to
 | 
				
			||||||
                box = box.next
 | 
					                box = box.next
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            if box 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
 | 
					                #add/start with the spousal box
 | 
				
			||||||
                left_group.append(box)
 | 
					                left_group.append(box)
 | 
				
			||||||
 | 
					                if box.line_to:
 | 
				
			||||||
 | 
					                    line = box.line_to
 | 
				
			||||||
                box = box.next
 | 
					                box = box.next
 | 
				
			||||||
            
 | 
					
 | 
				
			||||||
            right_group = []
 | 
					            if line:
 | 
				
			||||||
            #Form the children (right) group.
 | 
					                if len(line.start) > 1 and line.start[-1].level[1] == 0:
 | 
				
			||||||
            for spouses in left_group:
 | 
					                    #a dad and mom family from RecurseDown.add_family. add mom
 | 
				
			||||||
                if spouses.line_to:
 | 
					                    left_group.append(line.start[-1])
 | 
				
			||||||
                    right_group += spouses.line_to.end
 | 
					                    box = box.next
 | 
				
			||||||
                    #will only be one.  but in the family report,
 | 
					
 | 
				
			||||||
                    #Dad and mom point to the same line
 | 
					                #we now have everyone we want
 | 
				
			||||||
                    break
 | 
					                return left_group, line.end
 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            #we now have everyone we want
 | 
					 | 
				
			||||||
            if right_group:
 | 
					 | 
				
			||||||
                return left_group, right_group
 | 
					 | 
				
			||||||
            #else
 | 
					            #else
 | 
				
			||||||
            #  no children, so no family.  go again until we find one to return.
 | 
					            #  no children, so no family.  go again until we find one to return.
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
@@ -1031,7 +1045,7 @@ class MakeReport(object):
 | 
				
			|||||||
    def __reverse_family_group(self):
 | 
					    def __reverse_family_group(self):
 | 
				
			||||||
        """ go through the n-1 to 0 cols of boxes looking for famalies
 | 
					        """ go through the n-1 to 0 cols of boxes looking for famalies
 | 
				
			||||||
        (parents with children) that may need to be moved. """
 | 
					        (parents with children) that may need to be moved. """
 | 
				
			||||||
        for x_col in range(len(self.cols)-2, -1, -1):
 | 
					        for x_col in range(len(self.cols)-1, -1, -1):
 | 
				
			||||||
            box = self.cols[x_col][0]   #The first person in this col
 | 
					            box = self.cols[x_col][0]   #The first person in this col
 | 
				
			||||||
            while box:
 | 
					            while box:
 | 
				
			||||||
                left_group, right_group = self.__next_family_group(box)
 | 
					                left_group, right_group = self.__next_family_group(box)
 | 
				
			||||||
@@ -1104,42 +1118,37 @@ class MakeReport(object):
 | 
				
			|||||||
                amt = (right_y_cm - left_y_cm)
 | 
					                amt = (right_y_cm - left_y_cm)
 | 
				
			||||||
                self.__move_col_from_here_down(left_group[0],  amt)
 | 
					                self.__move_col_from_here_down(left_group[0],  amt)
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            #6. now check to see if we are working with dad.
 | 
					            #6. now check to see if we are working with dad and mom.
 | 
				
			||||||
            #if so we need to move down mariage information
 | 
					            #if so we need to move down mariage information
 | 
				
			||||||
            #and mom!  
 | 
					            #and mom!  
 | 
				
			||||||
            left_line = left_group[0].line_to
 | 
					            left_line = left_group[0].line_to
 | 
				
			||||||
            if not left_line:
 | 
					            if not left_line:
 | 
				
			||||||
                left_line = left_group[1].line_to
 | 
					                left_line = left_group[1].line_to
 | 
				
			||||||
            left_group = left_line.start
 | 
					            #left_line = left_line.start
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            if len(left_group) > 1 and not seen_parents:
 | 
					            if len(left_line.start) > 1 and not seen_parents:
 | 
				
			||||||
 | 
					                #only do Dad and Mom.  len(left_line) > 1
 | 
				
			||||||
                seen_parents = True
 | 
					                seen_parents = True
 | 
				
			||||||
                #only do Dad and Mom.  len(left_group) > 1
 | 
					
 | 
				
			||||||
                #works great when No marriage info
 | 
					                mom_cm   = left_group[-1].y_cm + left_group[-1].height/2
 | 
				
			||||||
                #This code needs work. when there is marriage info.
 | 
					                last_child_cm = right_group[-1].y_cm
 | 
				
			||||||
                left_up = left_group[0].y_cm
 | 
					                if not self.compress_tree:
 | 
				
			||||||
                left_down = left_group[-1].y_cm + left_group[-1].height
 | 
					                    last_child_cm += right_group[-1].height/2
 | 
				
			||||||
                right_up = right_group[0].y_cm
 | 
					                move_amt = last_child_cm - mom_cm 
 | 
				
			||||||
                right_down = right_group[-1].y_cm + right_group[-1].height
 | 
					
 | 
				
			||||||
                
 | 
					                #if the moms height is less than the last childs height
 | 
				
			||||||
                #if the parents height is less than the children height
 | 
					 | 
				
			||||||
                #The 0.2 is to see if this is even worth it.
 | 
					                #The 0.2 is to see if this is even worth it.
 | 
				
			||||||
                if (left_down-left_up+0.2) < (right_down-right_up):
 | 
					                if move_amt > 0.2:
 | 
				
			||||||
                    #our children take up more space than us parents.
 | 
					                    #our children take up more space than us parents.
 | 
				
			||||||
                    #so space us parents out!
 | 
					                    #so space mom out!
 | 
				
			||||||
                    
 | 
					                    self.__move_col_from_here_down(left_group[-1], move_amt)
 | 
				
			||||||
                    #move Dad
 | 
					 | 
				
			||||||
                    if self.compress_tree:
 | 
					 | 
				
			||||||
                        left_group[0].y_cm += right_group[0].height/2
 | 
					 | 
				
			||||||
                    
 | 
					 | 
				
			||||||
                    move_amt =  right_group[-1].y_cm + right_group[-1].height/2
 | 
					 | 
				
			||||||
                    move_amt -= (left_group[-1].y_cm + left_group[-1].height/2)
 | 
					 | 
				
			||||||
                    #move Mom
 | 
					 | 
				
			||||||
                    self.__move_col_from_here_down(left_group[-1],  move_amt)
 | 
					 | 
				
			||||||
                    
 | 
					                    
 | 
				
			||||||
                    #move marriage info
 | 
					                    #move marriage info
 | 
				
			||||||
                    if self.inlc_marr:
 | 
					                    if self.inlc_marr:
 | 
				
			||||||
                        left_group[0].next.y_cm += move_amt/2
 | 
					                        left_group[1].y_cm += move_amt/2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if left_line.end[0].boxstr == 'None':
 | 
				
			||||||
 | 
					                    left_line.end = []
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def start(self):
 | 
					    def start(self):
 | 
				
			||||||
        """Make the report"""
 | 
					        """Make the report"""
 | 
				
			||||||
@@ -1268,7 +1277,7 @@ class Descend2Tree(Report):
 | 
				
			|||||||
        
 | 
					        
 | 
				
			||||||
        style_sheet = self.doc.get_style_sheet()
 | 
					        style_sheet = self.doc.get_style_sheet()
 | 
				
			||||||
        font_normal = style_sheet.get_paragraph_style("CG2-Normal").get_font()
 | 
					        font_normal = style_sheet.get_paragraph_style("CG2-Normal").get_font()
 | 
				
			||||||
        self.doc.report_opts = ReportOptions(self.doc, font_normal)
 | 
					        self.doc.report_opts = ReportOptions(self.doc, font_normal, "CG2-line")
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        self.canvas = Canvas(self.doc)
 | 
					        self.canvas = Canvas(self.doc)
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -246,6 +246,17 @@ class Canvas(Page):
 | 
				
			|||||||
        height = len(box.text) * font.get_size() * 1.5
 | 
					        height = len(box.text) * font.get_size() * 1.5
 | 
				
			||||||
        height += 1.0/2.0 * font.get_size() #funny number(s) based upon font.
 | 
					        height += 1.0/2.0 * font.get_size() #funny number(s) based upon font.
 | 
				
			||||||
        box.height = PT2CM(height)
 | 
					        box.height = PT2CM(height)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def page_count(self, incblank):
 | 
				
			||||||
 | 
					        count = 0
 | 
				
			||||||
 | 
					        if incblank:
 | 
				
			||||||
 | 
					            return self.y_pages * self.x_pages
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for y_p in range(self.y_pages):
 | 
				
			||||||
 | 
					            for x_p in range(self.x_pages):
 | 
				
			||||||
 | 
					                if self.__pages.has_key((x_p, y_p)):
 | 
				
			||||||
 | 
					                    count += 1
 | 
				
			||||||
 | 
					        return count
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def page_iter_gen(self, incblank):
 | 
					    def page_iter_gen(self, incblank):
 | 
				
			||||||
        """ generate the pages of the report.  do so in a left to right
 | 
					        """ generate the pages of the report.  do so in a left to right
 | 
				
			||||||
@@ -419,30 +430,30 @@ class Canvas(Page):
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    def __paginate_lines(self, x_page_offsets, page_y_top):
 | 
					    def __paginate_lines(self, x_page_offsets, page_y_top):
 | 
				
			||||||
        """ Step three go through the lines and put each in page(s) """
 | 
					        """ Step three go through the lines and put each in page(s) """
 | 
				
			||||||
        for line in self.lines:
 | 
					        for box1 in self.boxes:
 | 
				
			||||||
            pages = []
 | 
					            if not box1.line_to:
 | 
				
			||||||
            #if type(line.start) == type([]):
 | 
					                continue
 | 
				
			||||||
            pages = []
 | 
					
 | 
				
			||||||
 | 
					            line = box1.line_to
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            pages = [box1.page.y_page_num]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            end = line.start + line.end
 | 
					            end = line.start + line.end
 | 
				
			||||||
            #else:
 | 
					 | 
				
			||||||
            #    end = [line.start] + line.end
 | 
					 | 
				
			||||||
            #    pages = []
 | 
					 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            start_x_page = end[0].page.x_page_num
 | 
					            x_page = box1.page.x_page_num
 | 
				
			||||||
            start_y_page = end[0].page.y_page_num
 | 
					            start_y_page = end[0].page.y_page_num
 | 
				
			||||||
            end_y_page = end[0].page.y_page_num
 | 
					            end_y_page = end[0].page.y_page_num
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
            for box in end:
 | 
					            for box in end:
 | 
				
			||||||
                x_page = box.page.x_page_num
 | 
					 | 
				
			||||||
                y_page = box.page.y_page_num
 | 
					                y_page = box.page.y_page_num
 | 
				
			||||||
                if (x_page, y_page) not in pages:
 | 
					                if y_page not in pages:
 | 
				
			||||||
                    if not self.__pages.has_key((x_page, y_page)):
 | 
					                    if not self.__pages.has_key((x_page, y_page)):
 | 
				
			||||||
                        #Add the new page into the dictionary
 | 
					                        #Add the new page into the dictionary
 | 
				
			||||||
                        self.__new_page(x_page, y_page,
 | 
					                        self.__new_page(x_page, y_page,
 | 
				
			||||||
                                        x_page_offsets[x_page],
 | 
					                                        x_page_offsets[x_page],
 | 
				
			||||||
                                        page_y_top[y_page])
 | 
					                                        page_y_top[y_page])
 | 
				
			||||||
                    self.__pages[x_page, y_page].add_line(line)
 | 
					                    self.__pages[x_page, y_page].add_line(box1.line_to)
 | 
				
			||||||
                    pages.append((x_page, y_page))
 | 
					                    pages.append(y_page)
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
                if y_page < start_y_page:
 | 
					                if y_page < start_y_page:
 | 
				
			||||||
                    start_y_page = y_page
 | 
					                    start_y_page = y_page
 | 
				
			||||||
@@ -451,15 +462,15 @@ class Canvas(Page):
 | 
				
			|||||||
                    
 | 
					                    
 | 
				
			||||||
            #if len(end) = 2 & end[0].y_page = 0 & end[1].y_page = 4
 | 
					            #if len(end) = 2 & end[0].y_page = 0 & end[1].y_page = 4
 | 
				
			||||||
            #the line will not print on y_pages 1,2,3.  Fix that here.
 | 
					            #the line will not print on y_pages 1,2,3.  Fix that here.
 | 
				
			||||||
            x_page = start_x_page
 | 
					            #x_page = start_x_page
 | 
				
			||||||
            for y_page in range(start_y_page, end_y_page+1):
 | 
					            for y_page in range(start_y_page, end_y_page+1):
 | 
				
			||||||
                if (x_page, y_page) not in pages:
 | 
					                if y_page not in pages:
 | 
				
			||||||
                    if not self.__pages.has_key((x_page, y_page)):
 | 
					                    if not self.__pages.has_key((x_page, y_page)):
 | 
				
			||||||
                        #Add the new page into the dictionary
 | 
					                        #Add the new page into the dictionary
 | 
				
			||||||
                        self.__new_page(x_page, y_page,
 | 
					                        self.__new_page(x_page, y_page,
 | 
				
			||||||
                                        x_page_offsets[x_page],
 | 
					                                        x_page_offsets[x_page],
 | 
				
			||||||
                                        page_y_top[y_page])
 | 
					                                        page_y_top[y_page])
 | 
				
			||||||
                    self.__pages[x_page, y_page].add_line(line)
 | 
					                    self.__pages[x_page, y_page].add_line(box1.line_to)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def __paginate_title(self, x_page_offsets):
 | 
					    def __paginate_title(self, x_page_offsets):
 | 
				
			||||||
        #step four work with the title
 | 
					        #step four work with the title
 | 
				
			||||||
@@ -555,11 +566,16 @@ class BoxBase(object):
 | 
				
			|||||||
        #'None' will cause an error.  Sub-classes will init
 | 
					        #'None' will cause an error.  Sub-classes will init
 | 
				
			||||||
        self.boxstr = "None"
 | 
					        self.boxstr = "None"
 | 
				
			||||||
        self.text = ""
 | 
					        self.text = ""
 | 
				
			||||||
        self.level = (0,)  #which column/level am I in?  int zero based.
 | 
					        #level requires ...
 | 
				
			||||||
 | 
					        # (#  - which column am I in  (zero based)
 | 
				
			||||||
 | 
					        # ,#  - Am I a (0)direct descendant/ancestor or (>0)other
 | 
				
			||||||
 | 
					        # , ) - anything else the report needs to run
 | 
				
			||||||
 | 
					        self.level = (0,0)
 | 
				
			||||||
        self.x_cm = 0.0
 | 
					        self.x_cm = 0.0
 | 
				
			||||||
        self.y_cm = 0.0
 | 
					        self.y_cm = 0.0
 | 
				
			||||||
        self.width = 0.0
 | 
					        self.width = 0.0
 | 
				
			||||||
        self.height = 0.0
 | 
					        self.height = 0.0
 | 
				
			||||||
 | 
					        self.line_to = None
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
    def scale(self, scale_amount):
 | 
					    def scale(self, scale_amount):
 | 
				
			||||||
        """ Scale the amounts """
 | 
					        """ Scale the amounts """
 | 
				
			||||||
@@ -571,15 +587,30 @@ class BoxBase(object):
 | 
				
			|||||||
    def display(self):
 | 
					    def display(self):
 | 
				
			||||||
        """ display the box accounting for page x, y offsets
 | 
					        """ display the box accounting for page x, y offsets
 | 
				
			||||||
        Ignore any box with 'None' is boxstr """
 | 
					        Ignore any box with 'None' is boxstr """
 | 
				
			||||||
        if self.boxstr != "None":
 | 
					        if self.boxstr == "None":
 | 
				
			||||||
            text = '\n'.join(self.text)
 | 
					            return
 | 
				
			||||||
            xbegin = self.x_cm - self.page.page_x_offset
 | 
					
 | 
				
			||||||
            ybegin = self.y_cm - self.page.page_y_offset
 | 
					        text = '\n'.join(self.text)
 | 
				
			||||||
            
 | 
					        xbegin = self.x_cm - self.page.page_x_offset
 | 
				
			||||||
            self.page.doc.draw_box(self.boxstr,
 | 
					        ybegin = self.y_cm - self.page.page_y_offset
 | 
				
			||||||
                    text,
 | 
					        
 | 
				
			||||||
                    xbegin, ybegin, 
 | 
					        self.page.doc.draw_box(self.boxstr,
 | 
				
			||||||
                    self.width, self.height)
 | 
					                text,
 | 
				
			||||||
 | 
					                xbegin, ybegin, 
 | 
				
			||||||
 | 
					                self.width, self.height)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #I am responsible for my own lines. Do them here.
 | 
				
			||||||
 | 
					        if self.line_to:
 | 
				
			||||||
 | 
					            #draw my line out here.
 | 
				
			||||||
 | 
					            self.line_to.display(self.page)
 | 
				
			||||||
 | 
					        if self.page.x_page_num > 0 and self.level[1] == 0 and \
 | 
				
			||||||
 | 
					           xbegin < self.page.doc.report_opts.littleoffset*2:
 | 
				
			||||||
 | 
					            #I am a child on the first column
 | 
				
			||||||
 | 
					            yme = ybegin + self.height/2
 | 
				
			||||||
 | 
					            self.page.doc.draw_line(self.page.doc.report_opts.line_str, \
 | 
				
			||||||
 | 
					                                    0, yme, xbegin, yme)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TitleBox(BoxBase):
 | 
					class TitleBox(BoxBase):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
@@ -661,7 +692,6 @@ class PageNumberBox(BoxBase):
 | 
				
			|||||||
        self.x_cm = self.doc.get_usable_width() - self.width
 | 
					        self.x_cm = self.doc.get_usable_width() - self.width
 | 
				
			||||||
        self.y_cm = self.doc.get_usable_height() - self.height
 | 
					        self.y_cm = self.doc.get_usable_height() - self.height
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    def display(self, page):
 | 
					    def display(self, page):
 | 
				
			||||||
        """ If this is the first time I am ran, get my position
 | 
					        """ If this is the first time I am ran, get my position
 | 
				
			||||||
        then display the page number """
 | 
					        then display the page number """
 | 
				
			||||||
@@ -763,7 +793,7 @@ class LineBase(object):
 | 
				
			|||||||
    self.end are the boxes that we are drawing lines to.
 | 
					    self.end are the boxes that we are drawing lines to.
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    def __init__(self, start):
 | 
					    def __init__(self, start):
 | 
				
			||||||
        self.linestr = "None"
 | 
					        #self.linestr = "None"
 | 
				
			||||||
        self.start = [start]
 | 
					        self.start = [start]
 | 
				
			||||||
        self.end = []
 | 
					        self.end = []
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -774,7 +804,7 @@ class LineBase(object):
 | 
				
			|||||||
    def display(self, page):
 | 
					    def display(self, page):
 | 
				
			||||||
        """ display the line.  left to right line.  one start, multiple end.
 | 
					        """ display the line.  left to right line.  one start, multiple end.
 | 
				
			||||||
        page will tell us what parts of the line we can print """
 | 
					        page will tell us what parts of the line we can print """
 | 
				
			||||||
        if self.end == []:
 | 
					        if self.end == [] and len(self.start) == 1:
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        # y_cm and x_cm start points - take into account page offsets
 | 
					        # y_cm and x_cm start points - take into account page offsets
 | 
				
			||||||
@@ -783,6 +813,7 @@ class LineBase(object):
 | 
				
			|||||||
        #    self.start = [self.start]
 | 
					        #    self.start = [self.start]
 | 
				
			||||||
        start = self.start[0]
 | 
					        start = self.start[0]
 | 
				
			||||||
        doc = start.page.doc
 | 
					        doc = start.page.doc
 | 
				
			||||||
 | 
					        linestr = doc.report_opts.line_str
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        xbegin = start.x_cm + start.width - page.page_x_offset
 | 
					        xbegin = start.x_cm + start.width - page.page_x_offset
 | 
				
			||||||
        # out 3/4 of the way and x_cm end point(s)
 | 
					        # out 3/4 of the way and x_cm end point(s)
 | 
				
			||||||
@@ -796,7 +827,7 @@ class LineBase(object):
 | 
				
			|||||||
                yme = box.y_cm + box.height/2 - page.page_y_offset
 | 
					                yme = box.y_cm + box.height/2 - page.page_y_offset
 | 
				
			||||||
                if box.page.y_page_num == page.y_page_num:
 | 
					                if box.page.y_page_num == page.y_page_num:
 | 
				
			||||||
                    # and 0 < yme < usable_height and \
 | 
					                    # and 0 < yme < usable_height and \
 | 
				
			||||||
                    doc.draw_line(self.linestr, xbegin, yme, x34, yme)
 | 
					                    doc.draw_line(linestr, xbegin, yme, x34, yme)
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
            #2 - veritcal line
 | 
					            #2 - veritcal line
 | 
				
			||||||
            mid = []
 | 
					            mid = []
 | 
				
			||||||
@@ -810,7 +841,7 @@ class LineBase(object):
 | 
				
			|||||||
            if mid[1] > usable_height:
 | 
					            if mid[1] > usable_height:
 | 
				
			||||||
                mid[1] = usable_height
 | 
					                mid[1] = usable_height
 | 
				
			||||||
            #draw the connecting vertical line.
 | 
					            #draw the connecting vertical line.
 | 
				
			||||||
            doc.draw_line(self.linestr, x34, mid[0], x34, mid[1])
 | 
					            doc.draw_line(linestr, x34, mid[0], x34, mid[1])
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            x34 = 0
 | 
					            x34 = 0
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
@@ -818,7 +849,7 @@ class LineBase(object):
 | 
				
			|||||||
        for box in self.end:
 | 
					        for box in self.end:
 | 
				
			||||||
            if box.page.y_page_num == page.y_page_num:
 | 
					            if box.page.y_page_num == page.y_page_num:
 | 
				
			||||||
                yme = box.y_cm + box.height/2 - box.page.page_y_offset
 | 
					                yme = box.y_cm + box.height/2 - box.page.page_y_offset
 | 
				
			||||||
                doc.draw_line(self.linestr, x34, yme, xend, yme)
 | 
					                doc.draw_line(linestr, x34, yme, xend, yme)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#------------------------------------------------------------------------
 | 
					#------------------------------------------------------------------------
 | 
				
			||||||
@@ -835,7 +866,7 @@ class ReportOptions(object):
 | 
				
			|||||||
      the left hand spacing for spouses (Descendant report only)
 | 
					      the left hand spacing for spouses (Descendant report only)
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def __init__(self, doc, normal_font):
 | 
					    def __init__(self, doc, normal_font, normal_line):
 | 
				
			||||||
        """ initalize various report variables that are used """
 | 
					        """ initalize various report variables that are used """
 | 
				
			||||||
        self.box_pgap = PT2CM(1.25*normal_font.get_size()) #gap between persons
 | 
					        self.box_pgap = PT2CM(1.25*normal_font.get_size()) #gap between persons
 | 
				
			||||||
        self.box_mgap = self.box_pgap /2 #gap between marriage information
 | 
					        self.box_mgap = self.box_pgap /2 #gap between marriage information
 | 
				
			||||||
@@ -845,6 +876,8 @@ class ReportOptions(object):
 | 
				
			|||||||
        self.col_width = PT2CM(doc.string_width(normal_font, "(000,0)"))
 | 
					        self.col_width = PT2CM(doc.string_width(normal_font, "(000,0)"))
 | 
				
			||||||
        self.littleoffset = PT2CM(1)
 | 
					        self.littleoffset = PT2CM(1)
 | 
				
			||||||
        self.x_cm_cols = [self.littleoffset]
 | 
					        self.x_cm_cols = [self.littleoffset]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.line_str = normal_line
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        #Things that will get added later
 | 
					        #Things that will get added later
 | 
				
			||||||
        self.max_box_width = 0
 | 
					        self.max_box_width = 0
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user