src/plugins/NarrativeWeb.py: Add option for number of generations in ancestor graph (bug # 0000077)
svn: r6649
This commit is contained in:
parent
9af1446b7f
commit
ee960b6457
@ -1,3 +1,7 @@
|
||||
2006-05-13 Brian Matherly <brian@gramps-project.org>
|
||||
* src/plugins/NarrativeWeb.py: Add option for number of generations in
|
||||
ancestor graph (bug # 0000077)
|
||||
|
||||
2006-05-13 Don Allingham <don@gramps-project.org>
|
||||
* src/DataViews/_FamilyView.py (FamilyView.redraw): handle history
|
||||
|
||||
|
@ -152,6 +152,7 @@ class BasePage:
|
||||
self.photo_list = photo_list
|
||||
self.exclude_private = not options.handler.options_dict['NWEBincpriv']
|
||||
self.usegraph = options.handler.options_dict['NWEBgraph']
|
||||
self.graphgens = int(options.handler.options_dict['NWEBgraphgens'])
|
||||
self.use_home = self.options.handler.options_dict['NWEBhomenote'] != ""
|
||||
self.page_title = ""
|
||||
|
||||
@ -1436,109 +1437,55 @@ class IndividualPage(BasePage):
|
||||
return person
|
||||
|
||||
def display_tree(self,of):
|
||||
family_handle = self.person.get_main_parents_family_handle()
|
||||
if not family_handle:
|
||||
if not self.person.get_main_parents_family_handle():
|
||||
return
|
||||
family = self.db.get_family_from_handle(family_handle)
|
||||
|
||||
of.write('<div id="tree">\n')
|
||||
of.write('<h4>%s</h4>\n' % _('Ancestors'))
|
||||
of.write('<div style="position: relative;" align="left">\n')
|
||||
|
||||
# self - first box, centered, flush left
|
||||
generations = self.graphgens
|
||||
|
||||
GENERATIONS = 4
|
||||
|
||||
max_in_col = 1 <<(GENERATIONS-1)
|
||||
max_in_col = 1 <<(generations-1)
|
||||
max_size = HEIGHT*max_in_col + VGAP*(max_in_col+1)
|
||||
|
||||
center0 = max_size / 2
|
||||
self.draw_box(of,center0,0,self.person)
|
||||
self.extend_line(of,center0,XOFFSET+WIDTH)
|
||||
|
||||
father_handle = family.get_father_handle()
|
||||
if father_handle:
|
||||
center1 = int(max_size/4)
|
||||
father = self.draw_connected_box(of,center0,center1,1,father_handle)
|
||||
|
||||
f_family_handle = father.get_main_parents_family_handle()
|
||||
if f_family_handle:
|
||||
self.extend_line(of,center1,XOFFSET+2*WIDTH+HGAP)
|
||||
f_family = self.db.get_family_from_handle(f_family_handle)
|
||||
|
||||
center2 = int(max_size/8)
|
||||
f_father = self.draw_connected_box(of,center1,center2,2,f_family.get_father_handle())
|
||||
|
||||
if f_father:
|
||||
ff_family_handle = f_father.get_main_parents_family_handle()
|
||||
if ff_family_handle:
|
||||
self.extend_line(of,center2,XOFFSET+3*WIDTH+2*HGAP)
|
||||
ff_family = self.db.get_family_from_handle(ff_family_handle)
|
||||
|
||||
center3 = int(max_size)/16
|
||||
self.draw_connected_box(of,center2,center3,3,ff_family.get_father_handle())
|
||||
|
||||
center3 = int(max_size)/16*3
|
||||
self.draw_connected_box(of,center2,center3,3,ff_family.get_mother_handle())
|
||||
|
||||
center2 = int(max_size/8)*3
|
||||
f_mother = self.draw_connected_box(of,center1,center2,2,f_family.get_mother_handle())
|
||||
|
||||
if f_mother:
|
||||
ff_family_handle = f_mother.get_main_parents_family_handle()
|
||||
if ff_family_handle:
|
||||
self.extend_line(of,center2,XOFFSET+3*WIDTH+2*HGAP)
|
||||
ff_family = self.db.get_family_from_handle(ff_family_handle)
|
||||
|
||||
center3 = int(max_size)/16*5
|
||||
self.draw_connected_box(of,center2,center3,3,ff_family.get_father_handle())
|
||||
|
||||
center3 = int(max_size)/16*7
|
||||
self.draw_connected_box(of,center2,center3,3,ff_family.get_mother_handle())
|
||||
|
||||
mother_handle = family.get_mother_handle()
|
||||
if mother_handle:
|
||||
center1 = int(max_size/4)*3
|
||||
mother = self.draw_connected_box(of,center0,center1,1,mother_handle)
|
||||
|
||||
m_family_handle = mother.get_main_parents_family_handle()
|
||||
if m_family_handle:
|
||||
self.extend_line(of,center1,XOFFSET+2*WIDTH+HGAP)
|
||||
m_family = self.db.get_family_from_handle(m_family_handle)
|
||||
|
||||
center2 = int(max_size/8)*5
|
||||
f_father = self.draw_connected_box(of,center1,center2,2,m_family.get_father_handle())
|
||||
|
||||
if f_father:
|
||||
ff_family_handle = f_father.get_main_parents_family_handle()
|
||||
if ff_family_handle:
|
||||
self.extend_line(of,center2,XOFFSET+3*WIDTH+2*HGAP)
|
||||
ff_family = self.db.get_family_from_handle(ff_family_handle)
|
||||
|
||||
center3 = int(max_size)/16*9
|
||||
self.draw_connected_box(of,center2,center3,3,ff_family.get_father_handle())
|
||||
|
||||
center3 = int(max_size)/16*11
|
||||
self.draw_connected_box(of,center2,center3,3,ff_family.get_mother_handle())
|
||||
|
||||
center2 = int(max_size/8)*7
|
||||
f_mother = self.draw_connected_box(of,center1,center2,2,m_family.get_mother_handle())
|
||||
|
||||
if f_mother:
|
||||
ff_family_handle = f_mother.get_main_parents_family_handle()
|
||||
if ff_family_handle:
|
||||
self.extend_line(of,center2,XOFFSET+3*WIDTH+2*HGAP)
|
||||
ff_family = self.db.get_family_from_handle(ff_family_handle)
|
||||
|
||||
center3 = int(max_size)/16*13
|
||||
self.draw_connected_box(of,center2,center3,3,ff_family.get_father_handle())
|
||||
|
||||
center3 = int(max_size)/16*15
|
||||
self.draw_connected_box(of,center2,center3,3,ff_family.get_mother_handle())
|
||||
center = int(max_size/2)
|
||||
self.draw_tree(of,1,generations,max_size,0,center,self.person.handle)
|
||||
|
||||
of.write('</div>\n')
|
||||
of.write('<table style="height: %dpx; width: %dx;"><tr><td></td></tr></table>\n' %
|
||||
(max_size,3*WIDTH+2*HGAP+2*XOFFSET))
|
||||
(max_size,XOFFSET+(generations)*WIDTH+(generations-1)*HGAP))
|
||||
|
||||
def draw_tree(self,of,gen,maxgen,max_size,old_center,new_center,phandle):
|
||||
if gen > maxgen:
|
||||
return
|
||||
gen_offset = int(max_size / pow(2,gen+1))
|
||||
person = self.db.get_person_from_handle(phandle)
|
||||
if not person:
|
||||
return
|
||||
|
||||
if gen == 1:
|
||||
self.draw_box(of,new_center,0,person)
|
||||
else:
|
||||
self.draw_connected_box(of,old_center,new_center,gen-1,phandle)
|
||||
|
||||
if gen == maxgen:
|
||||
return
|
||||
|
||||
family_handle = person.get_main_parents_family_handle()
|
||||
if family_handle:
|
||||
line_offset = XOFFSET + (gen)*WIDTH + (gen-1)*HGAP
|
||||
self.extend_line(of,new_center,line_offset)
|
||||
|
||||
gen = gen + 1
|
||||
family = self.db.get_family_from_handle(family_handle)
|
||||
|
||||
f_center = new_center-gen_offset
|
||||
f_handle = family.get_father_handle()
|
||||
self.draw_tree(of,gen,maxgen,max_size,new_center,f_center,f_handle)
|
||||
|
||||
m_center = new_center+gen_offset
|
||||
m_handle = family.get_mother_handle()
|
||||
self.draw_tree(of,gen,maxgen,max_size,new_center,m_center,m_handle)
|
||||
|
||||
def display_ind_sources(self,of):
|
||||
sreflist = self.src_refs + self.person.get_source_references()
|
||||
@ -2364,6 +2311,7 @@ class WebReportOptions(ReportOptions.ReportOptions):
|
||||
self.options_dict = {
|
||||
'NWEBarchive' : 0,
|
||||
'NWEBgraph' : 1,
|
||||
'NWEBgraphgens' : 4,
|
||||
'NWEBod' : './',
|
||||
'NWEBcopyright' : 0,
|
||||
'NWEBrestrictinfo' : 0,
|
||||
@ -2442,6 +2390,16 @@ class WebReportOptions(ReportOptions.ReportOptions):
|
||||
self.inc_graph = gtk.CheckButton(graph_msg)
|
||||
self.inc_graph.set_active(self.options_dict['NWEBgraph'])
|
||||
|
||||
self.graph_gens = gtk.combo_box_new_text()
|
||||
self.graph_gens_options = ['2','3','4','5']
|
||||
for text in self.graph_gens_options:
|
||||
self.graph_gens.append_text(text)
|
||||
def_gens = str(self.options_dict['NWEBgraphgens'])
|
||||
if def_gens in self.graph_gens_options:
|
||||
self.graph_gens.set_active(self.graph_gens_options.index(def_gens))
|
||||
else:
|
||||
self.graph_gens.set_active(0)
|
||||
|
||||
self.noid = gtk.CheckButton(_('Suppress GRAMPS ID'))
|
||||
self.noid.set_active(self.options_dict['NWEBnoid'])
|
||||
|
||||
@ -2527,6 +2485,7 @@ class WebReportOptions(ReportOptions.ReportOptions):
|
||||
dialog.add_option(_('Character set encoding'),self.encoding)
|
||||
dialog.add_option(_('Stylesheet'),self.css)
|
||||
dialog.add_option(_('Copyright'),self.copy)
|
||||
dialog.add_option(_('Ancestor graph generations'),self.graph_gens)
|
||||
dialog.add_option(None,self.inc_graph)
|
||||
|
||||
title = _("Page Generation")
|
||||
@ -2592,6 +2551,12 @@ class WebReportOptions(ReportOptions.ReportOptions):
|
||||
self.options_dict['NWEBhomenote'] = unicode(self.home_note.get_handle())
|
||||
self.options_dict['NWEBgraph'] = int(self.inc_graph.get_active())
|
||||
|
||||
index = self.graph_gens.get_active()
|
||||
generations = "4"
|
||||
if index >= 0:
|
||||
generations = self.graph_gens_options[index]
|
||||
self.options_dict['NWEBgraphgens'] = generations
|
||||
|
||||
index = self.ext.get_active()
|
||||
if index >= 0:
|
||||
html_ext = self.ext_options[index]
|
||||
|
Loading…
Reference in New Issue
Block a user