* src/RelLib.py (Family.set_mother_handle): Typo.

* src/Report.py: Use gen and pagebbg.
* src/ReportOptions.py: Use gen and pagebbg.
* src/plugins/Ancestors.py: Use gen and pagebbg.
* src/plugins/AncestorReport.py: Use gen and pagebbg.
* src/plugins/DescendReport.py: Use gen and pagebbg.
* src/plugins/FtmStyleDescendants.py: Use gen and pagebbg.
* src/plugins/FtmStyleAncestors.py: Use gen and pagebbg.
* src/plugins/IndivComplete.py: Convert to new scheme.
* src/plugins/TimeLine.py: Add custom filters to the pool.
* src/plugins/DetAncestralReport.py: Convert to new scheme.


svn: r3849
This commit is contained in:
Alex Roitman
2005-01-01 02:17:17 +00:00
parent b932aefbf2
commit 6494d8e7bb
12 changed files with 673 additions and 1227 deletions

View File

@@ -28,6 +28,13 @@
import os
from gettext import gettext as _
#------------------------------------------------------------------------
#
# Gnome/GTK modules
#
#------------------------------------------------------------------------
import gtk
#------------------------------------------------------------------------
#
# GRAMPS modules
@@ -41,49 +48,47 @@ import Report
import GenericFilter
import Errors
from QuestionDialog import ErrorDialog
#------------------------------------------------------------------------
#
# Gnome/GTK modules
#
#------------------------------------------------------------------------
import gtk
#------------------------------------------------------------------------
#
# Set up sane defaults for the book_item
#
#------------------------------------------------------------------------
_person_handle = ""
_filter_num = 0
_use_srcs = 0
_options = ( _person_handle, _filter_num, _use_srcs )
import ReportOptions
#------------------------------------------------------------------------
#
# IndivComplete
#
#------------------------------------------------------------------------
class IndivComplete(Report.Report):
class IndivCompleteReport(Report.Report):
def __init__(self,database,person,options_class):
"""
Creates the IndivCompleteReport object that produces the report.
The arguments are:
database - the GRAMPS database instance
person - currently selected person
options_class - instance of the Options class for this report
This report needs the following parameters (class variables)
that come in the options class.
filter - Filter to be applied to the people of the database.
The option class carries its number, and the function
returning the list of filters.
cites - Whether or not to include source informaiton.
"""
Report.Report.__init__(self,database,person,options_class)
self.use_srcs = options_class.handler.options_dict['cites']
filter_num = options_class.get_filter_number()
filters = options_class.get_report_filters(person)
filters.extend(GenericFilter.CustomFilters.get_filters())
self.filter = filters[filter_num]
def __init__(self,database,person,output,document,filter,use_srcs,newpage=0):
self.d = document
self.use_srcs = use_srcs
self.filter = filter
c = database.get_researcher().get_name()
self.d.creator(c)
self.doc.creator(c)
self.map = {}
self.database = database
self.person = person
self.output = output
self.setup()
self.newpage = newpage
if output:
self.standalone = 1
self.d.open(output)
self.d.init()
else:
self.standalone = 0
def setup(self):
tbl = BaseDoc.TableStyle()
@@ -91,30 +96,26 @@ class IndivComplete(Report.Report):
tbl.set_columns(2)
tbl.set_column_width(0,20)
tbl.set_column_width(1,80)
self.d.add_table_style("IDS-IndTable",tbl)
self.doc.add_table_style("IDS-IndTable",tbl)
tbl = BaseDoc.TableStyle()
tbl.set_width(100)
tbl.set_columns(2)
tbl.set_column_width(0,50)
tbl.set_column_width(1,50)
self.d.add_table_style("IDS-ParentsTable",tbl)
self.doc.add_table_style("IDS-ParentsTable",tbl)
cell = BaseDoc.TableCellStyle()
cell.set_top_border(1)
cell.set_bottom_border(1)
self.d.add_cell_style("IDS-TableHead",cell)
self.doc.add_cell_style("IDS-TableHead",cell)
cell = BaseDoc.TableCellStyle()
self.d.add_cell_style("IDS-NormalCell",cell)
self.doc.add_cell_style("IDS-NormalCell",cell)
cell = BaseDoc.TableCellStyle()
cell.set_longlist(1)
self.d.add_cell_style("IDS-ListCell",cell)
def end(self):
if self.standalone:
self.d.close()
self.doc.add_cell_style("IDS-ListCell",cell)
def write_fact(self,event):
if event == None:
@@ -140,7 +141,7 @@ class IndivComplete(Report.Report):
'place' : place }
text = '%s %s' % (text,description)
self.d.start_row()
self.doc.start_row()
self.normal_cell(name)
if self.use_srcs:
for s in event.get_source_references():
@@ -149,10 +150,10 @@ class IndivComplete(Report.Report):
text = "%s [%s]" % (text,src.get_gramps_id())
self.slist.append(s)
self.normal_cell(text)
self.d.end_row()
self.doc.end_row()
def write_p_entry(self,label,parent,rel):
self.d.start_row()
self.doc.start_row()
self.normal_cell(label)
if parent:
@@ -160,48 +161,48 @@ class IndivComplete(Report.Report):
{ 'parent' : parent, 'relation' : rel })
else:
self.normal_cell('')
self.d.end_row()
self.doc.end_row()
def write_note(self):
note = self.person.get_note()
note = self.start_person.get_note()
if note == '':
return
self.d.start_table('note','IDS-IndTable')
self.d.start_row()
self.d.start_cell('IDS-TableHead',2)
self.d.start_paragraph('IDS-TableTitle')
self.d.write_text(_('Notes'))
self.d.end_paragraph()
self.d.end_cell()
self.d.end_row()
self.doc.start_table('note','IDS-IndTable')
self.doc.start_row()
self.doc.start_cell('IDS-TableHead',2)
self.doc.start_paragraph('IDS-TableTitle')
self.doc.write_text(_('Notes'))
self.doc.end_paragraph()
self.doc.end_cell()
self.doc.end_row()
self.d.start_row()
self.d.start_cell('IDS-NormalCell',2)
format = self.person.get_note_format()
self.d.write_note(note,format,'IDS-Normal')
self.d.end_cell()
self.d.end_row()
self.doc.start_row()
self.doc.start_cell('IDS-NormalCell',2)
format = self.start_person.get_note_format()
self.doc.write_note(note,format,'IDS-Normal')
self.doc.end_cell()
self.doc.end_row()
self.d.end_table()
self.d.start_paragraph("IDS-Normal")
self.d.end_paragraph()
self.doc.end_table()
self.doc.start_paragraph("IDS-Normal")
self.doc.end_paragraph()
def write_alt_parents(self):
if len(self.person.get_parent_family_handle_list()) < 2:
if len(self.start_person.get_parent_family_handle_list()) < 2:
return
self.d.start_table("altparents","IDS-IndTable")
self.d.start_row()
self.d.start_cell("IDS-TableHead",2)
self.d.start_paragraph("IDS-TableTitle")
self.d.write_text(_("Alternate Parents"))
self.d.end_paragraph()
self.d.end_cell()
self.d.end_row()
self.doc.start_table("altparents","IDS-IndTable")
self.doc.start_row()
self.doc.start_cell("IDS-TableHead",2)
self.doc.start_paragraph("IDS-TableTitle")
self.doc.write_text(_("Alternate Parents"))
self.doc.end_paragraph()
self.doc.end_cell()
self.doc.end_row()
for (family_handle,mrel,frel) in self.person.get_parent_family_handle_list():
if family_handle == self.person.get_main_parents_family_handle():
for (family_handle,mrel,frel) in self.start_person.get_parent_family_handle_list():
if family_handle == self.start_person.get_main_parents_family_handle():
continue
family = self.database.get_family_from_handle(family_handle)
@@ -223,27 +224,27 @@ class IndivComplete(Report.Report):
else:
self.write_p_entry(_('Mother'),'','')
self.d.end_table()
self.d.start_paragraph("IDS-Normal")
self.d.end_paragraph()
self.doc.end_table()
self.doc.start_paragraph("IDS-Normal")
self.doc.end_paragraph()
def write_alt_names(self):
if len(self.person.get_alternate_names()) < 1:
if len(self.start_person.get_alternate_names()) < 1:
return
self.d.start_table("altparents","IDS-IndTable")
self.d.start_row()
self.d.start_cell("IDS-TableHead",2)
self.d.start_paragraph("IDS-TableTitle")
self.d.write_text(_("Alternate Names"))
self.d.end_paragraph()
self.d.end_cell()
self.d.end_row()
self.doc.start_table("altparents","IDS-IndTable")
self.doc.start_row()
self.doc.start_cell("IDS-TableHead",2)
self.doc.start_paragraph("IDS-TableTitle")
self.doc.write_text(_("Alternate Names"))
self.doc.end_paragraph()
self.doc.end_cell()
self.doc.end_row()
for name in self.person.get_alternate_names():
for name in self.start_person.get_alternate_names():
type = const.NameTypesMap.find_value(name.get_type())
self.d.start_row()
self.doc.start_row()
self.normal_cell(type)
text = name.get_regular_name()
if self.use_srcs:
@@ -253,43 +254,43 @@ class IndivComplete(Report.Report):
text = "%s [%s]" % (text,src.get_gramps_id())
self.slist.append(s)
self.normal_cell(text)
self.d.end_row()
self.d.end_table()
self.d.start_paragraph('IDS-Normal')
self.d.end_paragraph()
self.doc.end_row()
self.doc.end_table()
self.doc.start_paragraph('IDS-Normal')
self.doc.end_paragraph()
def write_families(self):
if not len(self.person.get_family_handle_list()):
if not len(self.start_person.get_family_handle_list()):
return
self.d.start_table("three","IDS-IndTable")
self.d.start_row()
self.d.start_cell("IDS-TableHead",2)
self.d.start_paragraph("IDS-TableTitle")
self.d.write_text(_("Marriages/Children"))
self.d.end_paragraph()
self.d.end_cell()
self.d.end_row()
self.doc.start_table("three","IDS-IndTable")
self.doc.start_row()
self.doc.start_cell("IDS-TableHead",2)
self.doc.start_paragraph("IDS-TableTitle")
self.doc.write_text(_("Marriages/Children"))
self.doc.end_paragraph()
self.doc.end_cell()
self.doc.end_row()
for family_handle in self.person.get_family_handle_list():
for family_handle in self.start_person.get_family_handle_list():
family = self.database.get_family_from_handle(family_handle)
if self.person.get_handle() == family.get_father_handle():
if self.start_person.get_handle() == family.get_father_handle():
spouse_id = family.get_mother_handle()
else:
spouse_id = family.get_father_handle()
self.d.start_row()
self.d.start_cell("IDS-NormalCell",2)
self.d.start_paragraph("IDS-Spouse")
self.doc.start_row()
self.doc.start_cell("IDS-NormalCell",2)
self.doc.start_paragraph("IDS-Spouse")
if spouse_id:
spouse = self.database.get_person_from_handle(spouse_id)
text = spouse.get_primary_name().get_regular_name()
else:
text = _("unknown")
self.d.write_text(text)
self.d.end_paragraph()
self.d.end_cell()
self.d.end_row()
self.doc.write_text(text)
self.doc.end_paragraph()
self.doc.end_cell()
self.doc.end_row()
for event_handle in family.get_event_list():
if event_handle:
@@ -298,82 +299,78 @@ class IndivComplete(Report.Report):
child_handle_list = family.get_child_handle_list()
if len(child_handle_list):
self.d.start_row()
self.doc.start_row()
self.normal_cell(_("Children"))
self.d.start_cell("IDS-ListCell")
self.d.start_paragraph("IDS-Normal")
self.doc.start_cell("IDS-ListCell")
self.doc.start_paragraph("IDS-Normal")
first = 1
for child_handle in child_handle_list:
if first == 1:
first = 0
else:
self.d.write_text('\n')
self.doc.write_text('\n')
child = self.database.get_person_from_handle(child_handle)
self.d.write_text(child.get_primary_name().get_regular_name())
self.d.end_paragraph()
self.d.end_cell()
self.d.end_row()
self.d.end_table()
self.d.start_paragraph('IDS-Normal')
self.d.end_paragraph()
self.doc.write_text(child.get_primary_name().get_regular_name())
self.doc.end_paragraph()
self.doc.end_cell()
self.doc.end_row()
self.doc.end_table()
self.doc.start_paragraph('IDS-Normal')
self.doc.end_paragraph()
def write_sources(self):
if len(self.slist) == 0:
return
self.d.start_table("three","IDS-IndTable")
self.d.start_row()
self.d.start_cell("IDS-TableHead",2)
self.d.start_paragraph("IDS-TableTitle")
self.d.write_text(_("Sources"))
self.d.end_paragraph()
self.d.end_cell()
self.d.end_row()
self.doc.start_table("three","IDS-IndTable")
self.doc.start_row()
self.doc.start_cell("IDS-TableHead",2)
self.doc.start_paragraph("IDS-TableTitle")
self.doc.write_text(_("Sources"))
self.doc.end_paragraph()
self.doc.end_cell()
self.doc.end_row()
for source in self.slist:
self.d.start_row()
self.doc.start_row()
s_handle = source.get_base_handle()
src = self.database.get_source_from_handle(s_handle)
self.normal_cell(src.get_gramps_id())
self.normal_cell(src.get_title())
self.d.end_row()
self.d.end_table()
self.doc.end_row()
self.doc.end_table()
def write_facts(self):
self.d.start_table("two","IDS-IndTable")
self.d.start_row()
self.d.start_cell("IDS-TableHead",2)
self.d.start_paragraph("IDS-TableTitle")
self.d.write_text(_("Individual Facts"))
self.d.end_paragraph()
self.d.end_cell()
self.d.end_row()
self.doc.start_table("two","IDS-IndTable")
self.doc.start_row()
self.doc.start_cell("IDS-TableHead",2)
self.doc.start_paragraph("IDS-TableTitle")
self.doc.write_text(_("Individual Facts"))
self.doc.end_paragraph()
self.doc.end_cell()
self.doc.end_row()
event_handle_list = [ self.person.get_birth_handle(), self.person.get_death_handle() ]
event_handle_list = event_handle_list + self.person.get_event_list()
event_handle_list = [ self.start_person.get_birth_handle(), self.start_person.get_death_handle() ]
event_handle_list = event_handle_list + self.start_person.get_event_list()
for event_handle in event_handle_list:
if event_handle:
event = self.database.get_event_from_handle(event_handle)
self.write_fact(event)
self.d.end_table()
self.d.start_paragraph("IDS-Normal")
self.d.end_paragraph()
self.doc.end_table()
self.doc.start_paragraph("IDS-Normal")
self.doc.end_paragraph()
def normal_cell(self,text):
self.d.start_cell('IDS-NormalCell')
self.d.start_paragraph('IDS-Normal')
self.d.write_text(text)
self.d.end_paragraph()
self.d.end_cell()
self.doc.start_cell('IDS-NormalCell')
self.doc.start_paragraph('IDS-Normal')
self.doc.write_text(text)
self.doc.end_paragraph()
self.doc.end_cell()
def write_report(self):
if self.newpage:
self.d.page_break()
#plist = self.database.get_person_handle_map().values()
plist = self.database.get_person_handles(sort_handles=False)
if self.filter:
ind_list = self.filter.apply(self.database,plist)
@@ -382,39 +379,38 @@ class IndivComplete(Report.Report):
count = 0
for person_handle in ind_list:
self.person = self.database.get_person_from_handle(person_handle)
self.start_person = self.database.get_person_from_handle(person_handle)
self.write_person(count)
count = count + 1
self.end()
def write_person(self,count):
if count != 0:
self.d.page_break()
self.doc.page_break()
self.slist = []
media_list = self.person.get_media_list()
name = self.person.get_primary_name().get_regular_name()
self.d.start_paragraph("IDS-Title")
self.d.write_text(_("Summary of %s") % name)
self.d.end_paragraph()
media_list = self.start_person.get_media_list()
name = self.start_person.get_primary_name().get_regular_name()
self.doc.start_paragraph("IDS-Title")
self.doc.write_text(_("Summary of %s") % name)
self.doc.end_paragraph()
self.d.start_paragraph("IDS-Normal")
self.d.end_paragraph()
self.doc.start_paragraph("IDS-Normal")
self.doc.end_paragraph()
if len(media_list) > 0:
object_handle = media_list[0].get_reference_handle()
object = self.database.get_object_from_handle(object_handle)
if object.get_mime_type()[0:5] == "image":
file = object.get_path()
self.d.start_paragraph("IDS-Normal")
self.d.add_media_object(file,"row",4.0,4.0)
self.d.end_paragraph()
self.doc.start_paragraph("IDS-Normal")
self.doc.add_media_object(file,"row",4.0,4.0)
self.doc.end_paragraph()
self.d.start_table("one","IDS-IndTable")
self.doc.start_table("one","IDS-IndTable")
self.d.start_row()
self.doc.start_row()
self.normal_cell("%s:" % _("Name"))
name = self.person.get_primary_name()
name = self.start_person.get_primary_name()
text = name.get_regular_name()
if self.use_srcs:
for s in name.get_source_references():
@@ -423,17 +419,17 @@ class IndivComplete(Report.Report):
src = self.database.get_source_from_handle(src_handle)
text = "%s [%s]" % (text,src.get_gramps_id())
self.normal_cell(text)
self.d.end_row()
self.doc.end_row()
self.d.start_row()
self.doc.start_row()
self.normal_cell("%s:" % _("Gender"))
if self.person.get_gender() == RelLib.Person.male:
if self.start_person.get_gender() == RelLib.Person.male:
self.normal_cell(_("Male"))
else:
self.normal_cell(_("Female"))
self.d.end_row()
self.doc.end_row()
family_handle = self.person.get_main_parents_family_handle()
family_handle = self.start_person.get_main_parents_family_handle()
if family_handle:
family = self.database.get_family_from_handle(family_handle)
father_inst_id = family.get_father_handle()
@@ -452,19 +448,19 @@ class IndivComplete(Report.Report):
father = ""
mother = ""
self.d.start_row()
self.doc.start_row()
self.normal_cell("%s:" % _("Father"))
self.normal_cell(father)
self.d.end_row()
self.doc.end_row()
self.d.start_row()
self.doc.start_row()
self.normal_cell("%s:" % _("Mother"))
self.normal_cell(mother)
self.d.end_row()
self.d.end_table()
self.doc.end_row()
self.doc.end_table()
self.d.start_paragraph("IDS-Normal")
self.d.end_paragraph()
self.doc.start_paragraph("IDS-Normal")
self.doc.end_paragraph()
self.write_alt_names()
self.write_facts()
@@ -478,300 +474,130 @@ class IndivComplete(Report.Report):
#
#
#------------------------------------------------------------------------
class IndivCompleteDialog(Report.TextReportDialog):
class IndivCompleteOptions(ReportOptions.ReportOptions):
report_options = {}
"""
Defines options and provides handling interface.
"""
def __init__(self,database,person):
Report.TextReportDialog.__init__(self,database,person,self.report_options)
def __init__(self,name,person_id=None):
ReportOptions.ReportOptions.__init__(self,name,person_id)
def add_user_options(self):
self.use_srcs = gtk.CheckButton(_('Include Source Information'))
self.use_srcs.show()
self.add_option('',self.use_srcs)
def set_new_options(self):
# Options specific for this report
self.options_dict = {
'cites' : 1,
}
self.options_help = {
'cites' : ("=0/1","Whether to cite sources.",
["Do not cite sources","Cite sources"],
True),
}
#------------------------------------------------------------------------
#
# Customization hooks
#
#------------------------------------------------------------------------
def get_title(self):
"""The window title for this dialog"""
return "%s - %s - GRAMPS" %(_("Complete Individual Report"),_("Text Reports"))
def enable_options(self):
# Semi-common options that should be enabled for this report
self.enable_dict = {
'filter' : 0,
}
def get_header(self, name):
"""The header line at the top of the dialog contents"""
return _("Complete Individual Report")
def get_target_browser_title(self):
"""The title of the window created when the 'browse' button is
clicked in the 'Save As' frame."""
return _("Save Complete Individual Report")
def get_stylesheet_savefile(self):
"""Where to save styles for this report."""
return "indiv_complete.xml"
def doc_uses_tables(self):
"""This report requires table support."""
return 1
def get_report_filters(self):
def get_report_filters(self,person):
"""Set up the list of possible content filters."""
return _get_report_filters(self.person)
#------------------------------------------------------------------------
#
# Create output styles appropriate to this report.
#
#------------------------------------------------------------------------
def make_default_style(self):
"""Make the default output style for the Individual Complete Report."""
_make_default_style(self.default_style)
def setup_report_options(self):
"""The 'Report Options' frame is not used in this dialog."""
pass
def make_report(self):
"""Create the object that will produce the Ancestor Chart.
All user dialog has already been handled and the output file
opened."""
act = self.use_srcs.get_active()
try:
MyReport = IndivComplete(self.db, self.person, self.target_path,
self.doc, self.filter, act)
MyReport.setup()
MyReport.write_report()
except Errors.FilterError, msg:
(m1,m2) = msg.messages()
ErrorDialog(m1,m2)
except Errors.ReportError, msg:
(m1,m2) = msg.messages()
ErrorDialog(m1,m2)
except:
import DisplayTrace
DisplayTrace.DisplayTrace()
def get_report_generations(self):
"""Return the default number of generations to start the
spinbox (zero to disable) and whether or not to include the
'page break between generations' check box"""
return (0, 0)
#------------------------------------------------------------------------
#
#
#
#------------------------------------------------------------------------
def report(database,person):
IndivCompleteDialog(database,person)
#------------------------------------------------------------------------
#
# Book Item Options dialog
#
#------------------------------------------------------------------------
class IndivCompleteBareReportDialog(Report.BareReportDialog):
def __init__(self,database,person,opt,stl):
self.options = opt
self.db = database
if self.options[0]:
self.person = self.db.get_person_from_handle(self.options[0])
if person:
name = person.get_primary_name().get_name()
handle = person.get_handle()
else:
self.person = person
self.style_name = stl
name = 'PERSON'
handle = ''
Report.BareReportDialog.__init__(self,database,self.person)
filt_id = GenericFilter.GenericFilter()
filt_id.set_name(name)
filt_id.add_rule(GenericFilter.HasIdOf([handle]))
self.filter_num = int(self.options[1])
self.use_srcs = int(self.options[2])
self.new_person = None
all = GenericFilter.GenericFilter()
all.set_name(_("Entire Database"))
all.add_rule(GenericFilter.Everyone([]))
self.filter_combo.set_history(self.filter_num)
self.use_srcs_checkbox.set_active(self.use_srcs)
des = GenericFilter.GenericFilter()
des.set_name(_("Descendants of %s") % name)
des.add_rule(GenericFilter.IsDescendantOf([handle,1]))
self.window.run()
ans = GenericFilter.GenericFilter()
ans.set_name(_("Ancestors of %s") % name)
ans.add_rule(GenericFilter.IsAncestorOf([handle,1]))
def make_default_style(self):
_make_default_style(self.default_style)
com = GenericFilter.GenericFilter()
com.set_name(_("People with common ancestor with %s") % name)
com.add_rule(GenericFilter.HasCommonAncestorWith([handle]))
def get_report_filters(self):
return _get_report_filters(self.person)
return [filt_id,all,des,ans,com]
def add_user_options(self):
self.use_srcs_checkbox = gtk.CheckButton(_('Include Source Information'))
self.use_srcs_checkbox.show()
self.add_option('',self.use_srcs_checkbox)
#------------------------------------------------------------------------
#
# Customization hooks
#
#------------------------------------------------------------------------
def get_title(self):
"""The window title for this dialog"""
return "%s - GRAMPS Book" % (_("Individual Complete"))
def get_header(self, name):
"""The header line at the top of the dialog contents"""
return _("Individual Complete Report for GRAMPS Book")
def get_stylesheet_savefile(self):
"""Where to save styles for this report."""
return "individual_summary.xml"
def on_cancel(self, obj):
pass
def on_ok_clicked(self, obj):
"""The user is satisfied with the dialog choices. Parse all options
and close the window."""
# Preparation
self.parse_style_frame()
self.parse_report_options_frame()
def add_user_options(self,dialog):
"""
Override the base class add_user_options task to add a menu that allows
the user to select the sort method.
"""
if self.new_person:
self.person = self.new_person
self.filter_num = self.filter_combo.get_history()
self.use_srcs = self.use_srcs_checkbox.get_active()
self.options = ( self.person.getId(), self.filter_num, self.use_srcs )
self.style_name = self.selected_style.get_name()
self.use_srcs = gtk.CheckButton(_('Include Source Information'))
self.use_srcs.set_active(self.options_dict['cites'])
dialog.add_option('',self.use_srcs)
def get_report_generations(self):
"""Return the default number of generations to start the
spinbox (zero to disable) and whether or not to include the
'page break between generations' check box"""
return (0, 0)
def parse_user_options(self,dialog):
"""
Parses the custom options that we have added.
"""
self.options_dict['cites'] = int(self.use_srcs.get_active ())
#------------------------------------------------------------------------
#
# Function to write Book Item
#
#------------------------------------------------------------------------
def write_book_item(database,person,doc,options,newpage=0):
"""Write the Individual Copmlete Report using the options set.
All user dialog has already been handled and the output file opened."""
try:
if options[0]:
person = database.get_person_from_handle(options[0])
filter_num = int(options[1])
filters = _get_report_filters(person)
the_filter = filters[filter_num]
act = int(options[2])
return IndivComplete(database, person, None, doc, the_filter, act, newpage)
except Errors.ReportError, msg:
(m1,m2) = msg.messages()
ErrorDialog(m1,m2)
except Errors.FilterError, msg:
(m1,m2) = msg.messages()
ErrorDialog(m1,m2)
except:
import DisplayTrace
DisplayTrace.DisplayTrace()
return None
#------------------------------------------------------------------------
#
# Makes the default styles
#
#------------------------------------------------------------------------
def _make_default_style(default_style):
"""Make the default output style for the Individual Complete Report."""
font = BaseDoc.FontStyle()
font.set_bold(1)
font.set_type_face(BaseDoc.FONT_SANS_SERIF)
font.set_size(16)
p = BaseDoc.ParagraphStyle()
p.set_alignment(BaseDoc.PARA_ALIGN_CENTER)
p.set_font(font)
p.set_description(_("The style used for the title of the page."))
default_style.add_style("IDS-Title",p)
font = BaseDoc.FontStyle()
font.set_bold(1)
font.set_type_face(BaseDoc.FONT_SANS_SERIF)
font.set_size(12)
font.set_italic(1)
p = BaseDoc.ParagraphStyle()
p.set_font(font)
p.set_description(_("The style used for category labels."))
default_style.add_style("IDS-TableTitle",p)
font = BaseDoc.FontStyle()
font.set_bold(1)
font.set_type_face(BaseDoc.FONT_SANS_SERIF)
font.set_size(12)
p = BaseDoc.ParagraphStyle()
p.set_font(font)
p.set_description(_("The style used for the spouse's name."))
default_style.add_style("IDS-Spouse",p)
font = BaseDoc.FontStyle()
font.set_size(12)
p = BaseDoc.ParagraphStyle()
p.set_font(font)
p.set_description(_('The basic style used for the text display.'))
default_style.add_style("IDS-Normal",p)
def make_default_style(self,default_style):
"""Make the default output style for the Individual Complete Report."""
font = BaseDoc.FontStyle()
font.set_bold(1)
font.set_type_face(BaseDoc.FONT_SANS_SERIF)
font.set_size(16)
p = BaseDoc.ParagraphStyle()
p.set_alignment(BaseDoc.PARA_ALIGN_CENTER)
p.set_font(font)
p.set_description(_("The style used for the title of the page."))
default_style.add_style("IDS-Title",p)
font = BaseDoc.FontStyle()
font.set_bold(1)
font.set_type_face(BaseDoc.FONT_SANS_SERIF)
font.set_size(12)
font.set_italic(1)
p = BaseDoc.ParagraphStyle()
p.set_font(font)
p.set_description(_("The style used for category labels."))
default_style.add_style("IDS-TableTitle",p)
#------------------------------------------------------------------------
#
# Builds filter list for this report
#
#------------------------------------------------------------------------
def _get_report_filters(person):
"""Set up the list of possible content filters."""
font = BaseDoc.FontStyle()
font.set_bold(1)
font.set_type_face(BaseDoc.FONT_SANS_SERIF)
font.set_size(12)
p = BaseDoc.ParagraphStyle()
p.set_font(font)
p.set_description(_("The style used for the spouse's name."))
default_style.add_style("IDS-Spouse",p)
name = person.get_primary_name().get_name()
filt_id = GenericFilter.GenericFilter()
filt_id.set_name(name)
filt_id.add_rule(GenericFilter.HasIdOf([person.get_handle()]))
des = GenericFilter.GenericFilter()
des.set_name(_("Descendants of %s") % name)
des.add_rule(GenericFilter.IsDescendantOf([person.get_handle(),1]))
ans = GenericFilter.GenericFilter()
ans.set_name(_("Ancestors of %s") % name)
ans.add_rule(GenericFilter.IsAncestorOf([person.get_handle(),1]))
all = GenericFilter.GenericFilter()
all.set_name(_("Entire Database"))
all.add_rule(GenericFilter.Everyone([]))
return [filt_id,des,ans,all]
font = BaseDoc.FontStyle()
font.set_size(12)
p = BaseDoc.ParagraphStyle()
p.set_font(font)
p.set_description(_('The basic style used for the text display.'))
default_style.add_style("IDS-Normal",p)
#------------------------------------------------------------------------
#
#
#
#------------------------------------------------------------------------
from Plugins import register_report, register_book_item
from Plugins import register_report
register_report(
report,
_("Complete Individual Report"),
name = 'indiv_complete',
category = const.CATEGORY_TEXT,
report_class = IndivCompleteReport,
options_class = IndivCompleteOptions,
modes = Report.MODE_GUI | Report.MODE_BKI | Report.MODE_CLI,
translated_name = _("Complete Individual Report"),
status=(_("Beta")),
category=_("Text Reports"),
description=_("Produces a complete report on the selected people."),
)
register_book_item(
_("Individual Complete"),
_("Text"),
IndivCompleteBareReportDialog,
write_book_item,
_options,
"default" ,
"individual_complete.xml",
_make_default_style
)