* src/plugins/WebPage.py: added mini-ancestor tree patch from Daryle
C. Lewis svn: r1907
This commit is contained in:
parent
fa97897da1
commit
1591acbd81
@ -65,6 +65,8 @@ _month = [
|
|||||||
"", "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
|
"", "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
|
||||||
"JUL", "AUG", "SEP", "OCT", "NOV", "DEC" ]
|
"JUL", "AUG", "SEP", "OCT", "NOV", "DEC" ]
|
||||||
|
|
||||||
|
_hline = " " # Everything is underlined, so use blank
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
@ -104,7 +106,7 @@ class HtmlLinkDoc(HtmlDoc.HtmlDoc):
|
|||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
class IndividualPage:
|
class IndividualPage:
|
||||||
|
|
||||||
def __init__(self,person,photos,restrict,private,uc,link,map,
|
def __init__(self,person,photos,restrict,private,uc,link,mini_tree,map,
|
||||||
dir_name,imgdir,doc,id,idlink,ext):
|
dir_name,imgdir,doc,id,idlink,ext):
|
||||||
self.person = person
|
self.person = person
|
||||||
self.ext = ext
|
self.ext = ext
|
||||||
@ -118,6 +120,7 @@ class IndividualPage:
|
|||||||
self.usecomments = not uc
|
self.usecomments = not uc
|
||||||
self.dir = dir_name
|
self.dir = dir_name
|
||||||
self.link = link
|
self.link = link
|
||||||
|
self.mini_tree = mini_tree
|
||||||
self.slist = []
|
self.slist = []
|
||||||
self.scnt = 1
|
self.scnt = 1
|
||||||
self.image_dir = imgdir
|
self.image_dir = imgdir
|
||||||
@ -236,6 +239,19 @@ class IndividualPage:
|
|||||||
else:
|
else:
|
||||||
self.doc.write_text("%s. " % info)
|
self.doc.write_text("%s. " % info)
|
||||||
|
|
||||||
|
def write_tree(self):
|
||||||
|
if not self.mini_tree or not self.person.getMainParents(): return
|
||||||
|
self.doc.start_paragraph("FamilyTitle")
|
||||||
|
self.doc.end_paragraph()
|
||||||
|
|
||||||
|
self.doc.start_paragraph("Data")
|
||||||
|
self.doc.write_raw('<PRE>\n')
|
||||||
|
tree = MiniTree(self.person,self.doc)
|
||||||
|
for line in tree.lines:
|
||||||
|
if line: self.doc.write_raw(line + '\n')
|
||||||
|
self.doc.write_raw('</PRE>\n')
|
||||||
|
self.doc.end_paragraph()
|
||||||
|
|
||||||
def create_page(self):
|
def create_page(self):
|
||||||
"""Generate the HTML page for the specific person"""
|
"""Generate the HTML page for the specific person"""
|
||||||
|
|
||||||
@ -319,6 +335,9 @@ class IndividualPage:
|
|||||||
if self.scnt > 1:
|
if self.scnt > 1:
|
||||||
self.write_sources()
|
self.write_sources()
|
||||||
|
|
||||||
|
# draw mini-tree
|
||||||
|
self.write_tree()
|
||||||
|
|
||||||
if self.link:
|
if self.link:
|
||||||
self.doc.start_paragraph("Data")
|
self.doc.start_paragraph("Data")
|
||||||
self.doc.start_link("index.%s" % self.ext)
|
self.doc.start_link("index.%s" % self.ext)
|
||||||
@ -593,8 +612,8 @@ class IndividualPage:
|
|||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
class WebReport(Report.Report):
|
class WebReport(Report.Report):
|
||||||
def __init__(self,db,person,target_path,max_gen,photos,filter,restrict,
|
def __init__(self,db,person,target_path,max_gen,photos,filter,restrict,
|
||||||
private, srccomments, include_link, style, image_dir,
|
private, srccomments, include_link, include_mini_tree,
|
||||||
template_name,use_id,id_link,gendex,ext):
|
style, image_dir, template_name,use_id,id_link,gendex,ext):
|
||||||
self.db = db
|
self.db = db
|
||||||
self.ext = ext
|
self.ext = ext
|
||||||
self.use_id = use_id
|
self.use_id = use_id
|
||||||
@ -608,6 +627,7 @@ class WebReport(Report.Report):
|
|||||||
self.private = private
|
self.private = private
|
||||||
self.srccomments = srccomments
|
self.srccomments = srccomments
|
||||||
self.include_link = include_link
|
self.include_link = include_link
|
||||||
|
self.include_mini_tree = include_mini_tree
|
||||||
self.selected_style = style
|
self.selected_style = style
|
||||||
self.image_dir = image_dir
|
self.image_dir = image_dir
|
||||||
self.use_gendex = gendex
|
self.use_gendex = gendex
|
||||||
@ -808,8 +828,9 @@ class WebReport(Report.Report):
|
|||||||
person.getPrimaryName().getRegularName()])
|
person.getPrimaryName().getRegularName()])
|
||||||
idoc = IndividualPage(person, self.photos, self.restrict,
|
idoc = IndividualPage(person, self.photos, self.restrict,
|
||||||
self.private, self.srccomments,
|
self.private, self.srccomments,
|
||||||
self.include_link, my_map, dir_name,
|
self.include_link, self.include_mini_tree,
|
||||||
self.image_dir, tdoc, self.use_id,self.id_link,self.ext)
|
my_map, dir_name, self.image_dir, tdoc,
|
||||||
|
self.use_id,self.id_link,self.ext)
|
||||||
idoc.create_page()
|
idoc.create_page()
|
||||||
idoc.close()
|
idoc.close()
|
||||||
self.progress_bar_step()
|
self.progress_bar_step()
|
||||||
@ -862,6 +883,10 @@ class WebReportDialog(Report.ReportDialog):
|
|||||||
imgdir_msg = _("Image subdirectory")
|
imgdir_msg = _("Image subdirectory")
|
||||||
ext_msg = _("File extension")
|
ext_msg = _("File extension")
|
||||||
|
|
||||||
|
tree_msg = _("Include short ancestor tree")
|
||||||
|
self.mini_tree = gtk.CheckButton(tree_msg)
|
||||||
|
self.mini_tree.set_active(1)
|
||||||
|
|
||||||
self.use_link = gtk.CheckButton(lnk_msg)
|
self.use_link = gtk.CheckButton(lnk_msg)
|
||||||
self.use_link.set_active(1)
|
self.use_link.set_active(1)
|
||||||
self.no_private = gtk.CheckButton(priv_msg)
|
self.no_private = gtk.CheckButton(priv_msg)
|
||||||
@ -882,6 +907,7 @@ class WebReportDialog(Report.ReportDialog):
|
|||||||
'.cgi'])
|
'.cgi'])
|
||||||
|
|
||||||
self.add_option(imgdir_msg,self.imgdir)
|
self.add_option(imgdir_msg,self.imgdir)
|
||||||
|
self.add_option('',self.mini_tree)
|
||||||
self.add_option('',self.use_link)
|
self.add_option('',self.use_link)
|
||||||
|
|
||||||
title = _("Privacy")
|
title = _("Privacy")
|
||||||
@ -1112,6 +1138,7 @@ class WebReportDialog(Report.ReportDialog):
|
|||||||
user selected choices for later use."""
|
user selected choices for later use."""
|
||||||
Report.ReportDialog.parse_report_options_frame(self)
|
Report.ReportDialog.parse_report_options_frame(self)
|
||||||
self.include_link = self.use_link.get_active()
|
self.include_link = self.use_link.get_active()
|
||||||
|
self.include_mini_tree = self.mini_tree.get_active()
|
||||||
|
|
||||||
def parse_other_frames(self):
|
def parse_other_frames(self):
|
||||||
"""Parse the privacy options frame of the dialog. Save the
|
"""Parse the privacy options frame of the dialog. Save the
|
||||||
@ -1161,7 +1188,8 @@ class WebReportDialog(Report.ReportDialog):
|
|||||||
MyReport = WebReport(self.db, self.person, self.target_path,
|
MyReport = WebReport(self.db, self.person, self.target_path,
|
||||||
self.max_gen, self.photos, self.filter,
|
self.max_gen, self.photos, self.filter,
|
||||||
self.restrict, self.private, self.srccomments,
|
self.restrict, self.private, self.srccomments,
|
||||||
self.include_link, self.selected_style,
|
self.include_link, self.include_mini_tree,
|
||||||
|
self.selected_style,
|
||||||
self.img_dir_text,self.template_name,
|
self.img_dir_text,self.template_name,
|
||||||
self.use_id,self.id_link,self.use_gendex,
|
self.use_id,self.id_link,self.use_gendex,
|
||||||
self.html_ext)
|
self.html_ext)
|
||||||
@ -1169,8 +1197,69 @@ class WebReportDialog(Report.ReportDialog):
|
|||||||
except Errors.FilterError, msg:
|
except Errors.FilterError, msg:
|
||||||
(m1,m2) = msg.messages()
|
(m1,m2) = msg.messages()
|
||||||
ErrorDialog(m1,m2)
|
ErrorDialog(m1,m2)
|
||||||
|
|
||||||
|
class MiniTree:
|
||||||
|
"""
|
||||||
|
This is one dirty piece of code, that is why I made it it's own
|
||||||
|
class. I'm sure that someone with more knowledge of GRAMPS can make
|
||||||
|
it much cleaner.
|
||||||
|
"""
|
||||||
|
def __init__(self,person,doc):
|
||||||
|
self.doc = doc
|
||||||
|
self.person = person
|
||||||
|
self.lines = [ "" for i in range(9) ]
|
||||||
|
name = self.person.getPrimaryName().getRegularName()
|
||||||
|
self.lines[4] = name
|
||||||
|
indent = (len(name) - 1) / 2
|
||||||
|
self.lines[3] = self.lines[5] = self.lines[6] = ' ' * indent + '|'
|
||||||
|
self.draw_parents(person,2,6,indent,1)
|
||||||
|
|
||||||
|
def draw_parents(self, person, father_line, mother_line, indent, recurse):
|
||||||
|
family = person.getMainParents()
|
||||||
|
if not family: return
|
||||||
|
|
||||||
|
father_name = mother_name = ""
|
||||||
|
father = family.getFather()
|
||||||
|
mother = family.getMother()
|
||||||
|
if father:
|
||||||
|
father_name = father.getPrimaryName().getRegularName()
|
||||||
|
if mother:
|
||||||
|
mother_name = mother.getPrimaryName().getRegularName()
|
||||||
|
pad = len(father_name)
|
||||||
|
if pad < len(mother_name):
|
||||||
|
pad = len(mother_name)
|
||||||
|
father_name = _hline + father_name + _hline * (pad-len(father_name)+1)
|
||||||
|
mother_name = _hline + mother_name + _hline * (pad-len(mother_name)+1)
|
||||||
|
self.draw_father(father, father_name, father_line, indent)
|
||||||
|
self.draw_mother(mother, mother_name, mother_line, indent)
|
||||||
|
indent += pad+3
|
||||||
|
if recurse:
|
||||||
|
if father:
|
||||||
|
self.draw_parents(father, father_line-1, father_line-1,
|
||||||
|
indent, 0)
|
||||||
|
if mother:
|
||||||
|
self.draw_parents(mother, mother_line+1, mother_line+1,
|
||||||
|
indent, 0)
|
||||||
|
|
||||||
|
def draw_father(self, person, name, line, indent):
|
||||||
|
self.draw_string(line, indent, '|')
|
||||||
|
self.draw_string(line-1, indent+1, "")
|
||||||
|
self.draw_link(line-1, person, name)
|
||||||
|
|
||||||
|
def draw_mother(self, person, name, line, indent):
|
||||||
|
self.draw_string(line+1, indent, '|')
|
||||||
|
self.draw_link(line+1, person, name)
|
||||||
|
|
||||||
|
def draw_string(self, line, indent, text):
|
||||||
|
self.lines[line] += ' ' * (indent-len(self.lines[line])) + text
|
||||||
|
|
||||||
|
def draw_link(self, line, person, name):
|
||||||
|
if person and person.getId():
|
||||||
|
self.lines[line] += "<A HREF='%s%s'>%s</A>" % (person.getId(),
|
||||||
|
self.doc.ext, name)
|
||||||
|
else:
|
||||||
|
self.lines[line] += "<U>%s</U>" % name
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
Loading…
Reference in New Issue
Block a user