* src/plugins/Makefile.am: export AncestorChart2.py
svn: r2653
This commit is contained in:
		@@ -28,6 +28,7 @@
 | 
				
			|||||||
import os
 | 
					import os
 | 
				
			||||||
import string
 | 
					import string
 | 
				
			||||||
import math
 | 
					import math
 | 
				
			||||||
 | 
					import types
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import gtk
 | 
					import gtk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -121,6 +122,9 @@ class GenChart :
 | 
				
			|||||||
    def get_xy(self,x,y):
 | 
					    def get_xy(self,x,y):
 | 
				
			||||||
        return self.array[y][x]
 | 
					        return self.array[y][x]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def set_xy(self,x,y,value):
 | 
				
			||||||
 | 
					        self.array[y][x] = value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def dimensions(self):
 | 
					    def dimensions(self):
 | 
				
			||||||
        return (len(self.array),self.max_x+1)
 | 
					        return (len(self.array),self.max_x+1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -153,7 +157,7 @@ class GenChart :
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def not_blank(self,line):
 | 
					    def not_blank(self,line):
 | 
				
			||||||
        for i in line:
 | 
					        for i in line:
 | 
				
			||||||
            if i:
 | 
					            if i and type(i) == types.TupleType:
 | 
				
			||||||
                return 1
 | 
					                return 1
 | 
				
			||||||
        return 0
 | 
					        return 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -164,7 +168,7 @@ class GenChart :
 | 
				
			|||||||
#------------------------------------------------------------------------
 | 
					#------------------------------------------------------------------------
 | 
				
			||||||
class AncestorChart:
 | 
					class AncestorChart:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __init__(self,database,person,max,display,doc,output,scale,
 | 
					    def __init__(self,database,person,max,display,doc,output,scale,compress,
 | 
				
			||||||
                 title,newpage=0):
 | 
					                 title,newpage=0):
 | 
				
			||||||
        self.doc = doc
 | 
					        self.doc = doc
 | 
				
			||||||
        self.title = title.strip()
 | 
					        self.title = title.strip()
 | 
				
			||||||
@@ -180,6 +184,7 @@ class AncestorChart:
 | 
				
			|||||||
        self.display = display
 | 
					        self.display = display
 | 
				
			||||||
        self.newpage = newpage
 | 
					        self.newpage = newpage
 | 
				
			||||||
        self.force_fit = scale
 | 
					        self.force_fit = scale
 | 
				
			||||||
 | 
					        self.compress = compress
 | 
				
			||||||
        if output:
 | 
					        if output:
 | 
				
			||||||
            self.doc.open(output)
 | 
					            self.doc.open(output)
 | 
				
			||||||
        self.standalone = output
 | 
					        self.standalone = output
 | 
				
			||||||
@@ -249,7 +254,7 @@ class AncestorChart:
 | 
				
			|||||||
                    colx += 1
 | 
					                    colx += 1
 | 
				
			||||||
                    startx += self.generations_per_page
 | 
					                    startx += self.generations_per_page
 | 
				
			||||||
                coly += 1
 | 
					                coly += 1
 | 
				
			||||||
                starty += maxh-1
 | 
					                starty += maxh
 | 
				
			||||||
        if self.standalone:
 | 
					        if self.standalone:
 | 
				
			||||||
            self.doc.close()
 | 
					            self.doc.close()
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
@@ -260,6 +265,8 @@ class AncestorChart:
 | 
				
			|||||||
        the elements on a page.
 | 
					        the elements on a page.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.add_lines()
 | 
				
			||||||
 | 
					        if self.compress:
 | 
				
			||||||
            self.genchart.compress()
 | 
					            self.genchart.compress()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.box_pad_pts = 10
 | 
					        self.box_pad_pts = 10
 | 
				
			||||||
@@ -329,14 +336,6 @@ class AncestorChart:
 | 
				
			|||||||
        if self.standalone:
 | 
					        if self.standalone:
 | 
				
			||||||
            self.doc.init()
 | 
					            self.doc.init()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_numbers(self,start,index,vals):
 | 
					 | 
				
			||||||
        if index > 4:
 | 
					 | 
				
			||||||
            return
 | 
					 | 
				
			||||||
        if self.map.has_key(start):
 | 
					 | 
				
			||||||
            vals.append(start)
 | 
					 | 
				
			||||||
        self.get_numbers(start*2,index+1,vals)
 | 
					 | 
				
			||||||
        self.get_numbers((start*2)+1,index+1,vals)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def print_page(self,startx,stopx,starty,stopy,colx,coly):
 | 
					    def print_page(self,startx,stopx,starty,stopy,colx,coly):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.doc.start_page()
 | 
					        self.doc.start_page()
 | 
				
			||||||
@@ -348,25 +347,32 @@ class AncestorChart:
 | 
				
			|||||||
            for x in range(startx,stopx):
 | 
					            for x in range(startx,stopx):
 | 
				
			||||||
                value = self.genchart.get_xy(x,y)
 | 
					                value = self.genchart.get_xy(x,y)
 | 
				
			||||||
                if value:
 | 
					                if value:
 | 
				
			||||||
 | 
					                    if type(value) == types.TupleType:
 | 
				
			||||||
                        (person,index) = value
 | 
					                        (person,index) = value
 | 
				
			||||||
                        text = string.join(self.text[index],"\n")
 | 
					                        text = string.join(self.text[index],"\n")
 | 
				
			||||||
                    self.doc.draw_box("box",text,phys_x*self.delta,phys_y*self.box_height+self.offset)
 | 
					                        self.doc.draw_box("box",text,phys_x*self.delta,
 | 
				
			||||||
                    if self.genchart.get(index*2):
 | 
					                                          phys_y*self.box_height+self.offset)
 | 
				
			||||||
                        (px,py) = self.genchart.index_to_xy(index*2)
 | 
					                    elif value == 2:
 | 
				
			||||||
                        x2 = min(self.doc.get_usable_width(),(px-startx)*self.delta)
 | 
					                        self.doc.draw_line("line",
 | 
				
			||||||
                        x1 = (x-startx)*self.delta+(0.5 * self.box_width)
 | 
					                                           phys_x*self.delta+self.box_width*0.5,
 | 
				
			||||||
                        y2 = self.box_height * (py-starty) + 0.5*self.box_height + self.offset
 | 
					                                           phys_y*self.box_height+self.offset,
 | 
				
			||||||
                        y1 = self.box_height * (y-starty) + self.offset
 | 
					                                           phys_x*self.delta+self.box_width*0.5,
 | 
				
			||||||
 | 
					                                           (phys_y+1)*self.box_height+self.offset)
 | 
				
			||||||
 | 
					                    elif value == 1:
 | 
				
			||||||
 | 
					                        x1 = phys_x*self.delta+self.box_width*0.5
 | 
				
			||||||
 | 
					                        x2 = (phys_x+1)*self.delta
 | 
				
			||||||
 | 
					                        y1 = phys_y*self.box_height+self.offset+self.box_height/2
 | 
				
			||||||
 | 
					                        y2 = (phys_y+1)*self.box_height+self.offset
 | 
				
			||||||
                        self.doc.draw_line("line",x1,y1,x1,y2)
 | 
					                        self.doc.draw_line("line",x1,y1,x1,y2)
 | 
				
			||||||
                        self.doc.draw_line("line",x1,y2,x2,y2)
 | 
					                        self.doc.draw_line("line",x1,y1,x2,y1)
 | 
				
			||||||
                    if self.genchart.get(index*2+1):
 | 
					                    elif value == 3:
 | 
				
			||||||
                        (px,py) = self.genchart.index_to_xy(index*2+1)
 | 
					                        x1 = phys_x*self.delta+self.box_width*0.5
 | 
				
			||||||
                        x2 = min(self.doc.get_usable_width(),(px-startx)*self.delta)
 | 
					                        x2 = (phys_x+1)*self.delta
 | 
				
			||||||
                        x1 = (x-startx)*self.delta+(0.5 * self.box_width)
 | 
					                        y1 = (phys_y)*self.box_height+self.offset+self.box_height/2
 | 
				
			||||||
                        y2 = self.box_height * (py-starty) + 0.5*self.box_height + self.offset
 | 
					                        y2 = (phys_y)*self.box_height+self.offset
 | 
				
			||||||
                        y1 = self.box_height * (y-starty+1) + self.offset
 | 
					 | 
				
			||||||
                        self.doc.draw_line("line",x1,y1,x1,y2)
 | 
					                        self.doc.draw_line("line",x1,y1,x1,y2)
 | 
				
			||||||
                        self.doc.draw_line("line",x1,y2,x2,y2)
 | 
					                        self.doc.draw_line("line",x1,y1,x2,y1)
 | 
				
			||||||
 | 
					                        
 | 
				
			||||||
                phys_x +=1
 | 
					                phys_x +=1
 | 
				
			||||||
            phys_y += 1
 | 
					            phys_y += 1
 | 
				
			||||||
                    
 | 
					                    
 | 
				
			||||||
@@ -377,6 +383,28 @@ class AncestorChart:
 | 
				
			|||||||
                               self.doc.get_usable_height()+0.75)
 | 
					                               self.doc.get_usable_height()+0.75)
 | 
				
			||||||
        self.doc.end_page()
 | 
					        self.doc.end_page()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def add_lines(self):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        (my,mx) = self.genchart.dimensions()
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        for y in range(0,my):
 | 
				
			||||||
 | 
					            for x in range(0,mx):
 | 
				
			||||||
 | 
					                value = self.genchart.get_xy(x,y)
 | 
				
			||||||
 | 
					                if not value:
 | 
				
			||||||
 | 
					                    continue
 | 
				
			||||||
 | 
					                if type(value) == types.TupleType:
 | 
				
			||||||
 | 
					                    (person,index) = value
 | 
				
			||||||
 | 
					                    if self.genchart.get(index*2):
 | 
				
			||||||
 | 
					                        (px,py) = self.genchart.index_to_xy(index*2)
 | 
				
			||||||
 | 
					                        self.genchart.set_xy(x,py,1)
 | 
				
			||||||
 | 
					                        for ty in range(py+1,y):
 | 
				
			||||||
 | 
					                            self.genchart.set_xy(x,ty,2)
 | 
				
			||||||
 | 
					                    if self.genchart.get(index*2+1):
 | 
				
			||||||
 | 
					                        (px,py) = self.genchart.index_to_xy(index*2+1)
 | 
				
			||||||
 | 
					                        self.genchart.set_xy(px-1,py,3)
 | 
				
			||||||
 | 
					                        for ty in range(y+1,py):
 | 
				
			||||||
 | 
					                            self.genchart.set_xy(x,ty,2)
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
#------------------------------------------------------------------------
 | 
					#------------------------------------------------------------------------
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# 
 | 
					# 
 | 
				
			||||||
@@ -418,6 +446,10 @@ class AncestorChartDialog(Report.DrawReportDialog):
 | 
				
			|||||||
        self.title.set_text(self.get_header(self.person.getPrimaryName().getName()))
 | 
					        self.title.set_text(self.get_header(self.person.getPrimaryName().getName()))
 | 
				
			||||||
        self.title.show()
 | 
					        self.title.show()
 | 
				
			||||||
        self.add_option(_('Title'),self.title)
 | 
					        self.add_option(_('Title'),self.title)
 | 
				
			||||||
 | 
					        self.compress = gtk.CheckButton(_('Compress chart'))
 | 
				
			||||||
 | 
					        self.compress.set_active(1)
 | 
				
			||||||
 | 
					        self.compress.show()
 | 
				
			||||||
 | 
					        self.add_option('',self.compress)
 | 
				
			||||||
        self.scale = gtk.CheckButton(_('Scale to fit on a single page'))
 | 
					        self.scale = gtk.CheckButton(_('Scale to fit on a single page'))
 | 
				
			||||||
        self.scale.set_active(1)
 | 
					        self.scale.set_active(1)
 | 
				
			||||||
        self.scale.show()
 | 
					        self.scale.show()
 | 
				
			||||||
@@ -462,6 +494,7 @@ class AncestorChartDialog(Report.DrawReportDialog):
 | 
				
			|||||||
                                     self.max_gen, self.report_text,
 | 
					                                     self.max_gen, self.report_text,
 | 
				
			||||||
                                     self.doc,self.target_path,
 | 
					                                     self.doc,self.target_path,
 | 
				
			||||||
                                     self.scale.get_active(),
 | 
					                                     self.scale.get_active(),
 | 
				
			||||||
 | 
					                                     self.compress.get_active(),
 | 
				
			||||||
                                     self.title.get_text()
 | 
					                                     self.title.get_text()
 | 
				
			||||||
                                     )
 | 
					                                     )
 | 
				
			||||||
            MyReport.write_report()
 | 
					            MyReport.write_report()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user