Clean up ReportUtils: Move text strings into "Narrator" class in libnarrate. Remove unused functions. Move functions out that are only used once.
svn: r13474
This commit is contained in:
parent
e0bef1b8ac
commit
c43c3beba0
File diff suppressed because it is too large
Load Diff
@ -20,7 +20,6 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
# To see things still missing, search for "TODO"...
|
||||
#
|
||||
# $Id$
|
||||
|
||||
@ -42,6 +41,7 @@ from TransUtils import sgettext as _
|
||||
|
||||
# Person and relation types
|
||||
from gen.lib import Person, FamilyRelType, EventType, EventRoleType
|
||||
from gen.lib.date import Date
|
||||
# gender and report type names
|
||||
from gen.plug.docgen import (FontStyle, ParagraphStyle, GraphicsStyle,
|
||||
FONT_SANS_SERIF, FONT_SERIF,
|
||||
@ -52,12 +52,237 @@ from ReportBase import Report, ReportUtils, MenuReportOptions
|
||||
import DateHandler
|
||||
from gui.utils import ProgressMeter
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Private Functions
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def draw_wedge(doc, style, centerx, centery, radius, start_angle,
|
||||
end_angle, short_radius=0):
|
||||
from math import pi, cos, sin
|
||||
|
||||
while end_angle < start_angle:
|
||||
end_angle += 360
|
||||
|
||||
p = []
|
||||
|
||||
degreestoradians = pi / 180.0
|
||||
radiansdelta = degreestoradians / 2
|
||||
sangle = start_angle * degreestoradians
|
||||
eangle = end_angle * degreestoradians
|
||||
while eangle < sangle:
|
||||
eangle = eangle + 2 * pi
|
||||
angle = sangle
|
||||
|
||||
if short_radius == 0:
|
||||
if (end_angle - start_angle) != 360:
|
||||
p.append((centerx, centery))
|
||||
else:
|
||||
origx = (centerx + cos(angle) * short_radius)
|
||||
origy = (centery + sin(angle) * short_radius)
|
||||
p.append((origx, origy))
|
||||
|
||||
while angle < eangle:
|
||||
x = centerx + cos(angle) * radius
|
||||
y = centery + sin(angle) * radius
|
||||
p.append((x, y))
|
||||
angle = angle + radiansdelta
|
||||
x = centerx + cos(eangle) * radius
|
||||
y = centery + sin(eangle) * radius
|
||||
p.append((x, y))
|
||||
|
||||
if short_radius:
|
||||
x = centerx + cos(eangle) * short_radius
|
||||
y = centery + sin(eangle) * short_radius
|
||||
p.append((x, y))
|
||||
|
||||
angle = eangle
|
||||
while angle >= sangle:
|
||||
x = centerx + cos(angle) * short_radius
|
||||
y = centery + sin(angle) * short_radius
|
||||
p.append((x, y))
|
||||
angle -= radiansdelta
|
||||
doc.draw_path(style, p)
|
||||
|
||||
delta = (eangle - sangle) / 2.0
|
||||
rad = short_radius + (radius - short_radius) / 2.0
|
||||
|
||||
return ( (centerx + cos(sangle + delta) * rad),
|
||||
(centery + sin(sangle + delta) * rad))
|
||||
|
||||
|
||||
def draw_pie_chart(doc, center_x, center_y, radius, data, start=0):
|
||||
"""
|
||||
Draws a pie chart in the specified document. The data passed is plotted as
|
||||
a pie chart. The data should consist of the actual data. Percentages of
|
||||
each slice are determined by the routine.
|
||||
|
||||
@param doc: Document to which the pie chart should be added
|
||||
@type doc: BaseDoc derived class
|
||||
@param center_x: x coordinate in centimeters where the center of the pie
|
||||
chart should be. 0 is the left hand edge of the document.
|
||||
@type center_x: float
|
||||
@param center_y: y coordinate in centimeters where the center of the pie
|
||||
chart should be. 0 is the top edge of the document
|
||||
@type center_y: float
|
||||
@param radius: radius of the pie chart. The pie charts width and height
|
||||
will be twice this value.
|
||||
@type radius: float
|
||||
@param data: List of tuples containing the data to be plotted. The values
|
||||
are (graphics_format, value), where graphics_format is a BaseDoc
|
||||
GraphicsStyle, and value is a floating point number. Any other items in
|
||||
the tuple are ignored. This allows you to share the same data list with
|
||||
the L{draw_legend} function.
|
||||
@type data: list
|
||||
@param start: starting point in degrees, where the default of 0 indicates
|
||||
a start point extending from the center to right in a horizontal line.
|
||||
@type start: float
|
||||
"""
|
||||
|
||||
total = 0.0
|
||||
for item in data:
|
||||
total += item[1]
|
||||
|
||||
for item in data:
|
||||
incr = 360.0*(item[1]/total)
|
||||
draw_wedge(doc, item[0], center_x, center_y, radius, start, start + incr)
|
||||
start += incr
|
||||
|
||||
def draw_legend(doc, start_x, start_y, data, title, label_style):
|
||||
"""
|
||||
Draws a legend for a graph in the specified document. The data passed is
|
||||
used to define the legend. First item style is used for the optional
|
||||
Legend title.
|
||||
|
||||
@param doc: Document to which the legend chart should be added
|
||||
@type doc: BaseDoc derived class
|
||||
@param start_x: x coordinate in centimeters where the left hand corner
|
||||
of the legend is placed. 0 is the left hand edge of the document.
|
||||
@type start_x: float
|
||||
@param start_y: y coordinate in centimeters where the top of the legend
|
||||
should be. 0 is the top edge of the document
|
||||
@type start_y: float
|
||||
@param data: List of tuples containing the data to be used to create the
|
||||
legend. In order to be compatible with the graph plots, the first and
|
||||
third values of the tuple used. The format is (graphics_format, value,
|
||||
legend_description).
|
||||
@type data: list
|
||||
"""
|
||||
style_sheet = doc.get_style_sheet()
|
||||
if title:
|
||||
gstyle = style_sheet.get_draw_style(label_style)
|
||||
pstyle_name = gstyle.get_paragraph_style()
|
||||
pstyle = style_sheet.get_paragraph_style(pstyle_name)
|
||||
size = ReportUtils.pt2cm(pstyle.get_font().get_size())
|
||||
doc.draw_text(label_style, title, start_x + (3*size), start_y - (size*0.25))
|
||||
start_y += size * 1.3
|
||||
|
||||
for (format, size, legend) in data:
|
||||
gstyle = style_sheet.get_draw_style(format)
|
||||
pstyle_name = gstyle.get_paragraph_style()
|
||||
pstyle = style_sheet.get_paragraph_style(pstyle_name)
|
||||
size = ReportUtils.pt2cm(pstyle.get_font().get_size())
|
||||
doc.draw_box(format, "", start_x, start_y, (2*size), size)
|
||||
doc.draw_text(label_style, legend, start_x + (3*size), start_y - (size*0.25))
|
||||
start_y += size * 1.3
|
||||
|
||||
_t = time.localtime(time.time())
|
||||
_TODAY = DateHandler.parser.parse("%04d-%02d-%02d" % _t[:3])
|
||||
|
||||
def estimate_age(db, person, end_handle=None, start_handle=None, today=_TODAY):
|
||||
"""
|
||||
Estimates the age of a person based off the birth and death
|
||||
dates of the person. A tuple containing the estimated upper
|
||||
and lower bounds of the person's age is returned. If either
|
||||
the birth or death date is missing, a (-1, -1) is returned.
|
||||
|
||||
@param db: GRAMPS database to which the Person object belongs
|
||||
@type db: GrampsDbBase
|
||||
@param person: Person object to calculate the age of
|
||||
@type person: Person
|
||||
@param end_handle: Determines the event handle that determines
|
||||
the upper limit of the age. If None, the death event is used
|
||||
@type end_handle: str
|
||||
@param start_handle: Determines the event handle that determines
|
||||
the lower limit of the event. If None, the birth event is
|
||||
used
|
||||
@type start_handle: str
|
||||
@returns: tuple containing the lower and upper bounds of the
|
||||
person's age, or (-1, -1) if it could not be determined.
|
||||
@rtype: tuple
|
||||
"""
|
||||
|
||||
bhandle = None
|
||||
if start_handle:
|
||||
bhandle = start_handle
|
||||
else:
|
||||
bref = person.get_birth_ref()
|
||||
if bref:
|
||||
bhandle = bref.get_reference_handle()
|
||||
|
||||
dhandle = None
|
||||
if end_handle:
|
||||
dhandle = end_handle
|
||||
else:
|
||||
dref = person.get_death_ref()
|
||||
if dref:
|
||||
dhandle = dref.get_reference_handle()
|
||||
|
||||
# if either of the events is not defined, return an error message
|
||||
if not bhandle:
|
||||
return (-1, -1)
|
||||
|
||||
bdata = db.get_event_from_handle(bhandle).get_date_object()
|
||||
if dhandle:
|
||||
ddata = db.get_event_from_handle(dhandle).get_date_object()
|
||||
else:
|
||||
if today is not None:
|
||||
ddata = today
|
||||
else:
|
||||
return (-1, -1)
|
||||
|
||||
# if the date is not valid, return an error message
|
||||
if not bdata.get_valid() or not ddata.get_valid():
|
||||
return (-1, -1)
|
||||
|
||||
# if a year is not valid, return an error message
|
||||
if not bdata.get_year_valid() or not ddata.get_year_valid():
|
||||
return (-1, -1)
|
||||
|
||||
bstart = bdata.get_start_date()
|
||||
bstop = bdata.get_stop_date()
|
||||
|
||||
dstart = ddata.get_start_date()
|
||||
dstop = ddata.get_stop_date()
|
||||
|
||||
def _calc_diff(low, high):
|
||||
if (low[1], low[0]) > (high[1], high[0]):
|
||||
return high[2] - low[2] - 1
|
||||
else:
|
||||
return high[2] - low[2]
|
||||
|
||||
if bstop == dstop == Date.EMPTY:
|
||||
lower = _calc_diff(bstart, dstart)
|
||||
age = (lower, lower)
|
||||
elif bstop == Date.EMPTY:
|
||||
lower = _calc_diff(bstart, dstart)
|
||||
upper = _calc_diff(bstart, dstop)
|
||||
age = (lower, upper)
|
||||
elif dstop == Date.EMPTY:
|
||||
lower = _calc_diff(bstop, dstart)
|
||||
upper = _calc_diff(bstart, dstart)
|
||||
age = (lower, upper)
|
||||
else:
|
||||
lower = _calc_diff(bstop, dstart)
|
||||
upper = _calc_diff(bstart, dstop)
|
||||
age = (lower, upper)
|
||||
return age
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Global options and their names
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
|
||||
class _options:
|
||||
# sort type identifiers
|
||||
SORT_VALUE = 0
|
||||
@ -180,7 +405,7 @@ class Extract(object):
|
||||
if date:
|
||||
month = date.get_month()
|
||||
if month:
|
||||
return [DateHandler.displayer._months[month]]
|
||||
return [DateHandler.displayer.long_months[month]]
|
||||
return [_("Date(s) missing")]
|
||||
|
||||
def get_place(self, event):
|
||||
@ -284,7 +509,7 @@ class Extract(object):
|
||||
def estimate_age(self, person, end=None, begin=None):
|
||||
"""return estimated age (range) for given person or error message.
|
||||
age string is padded with spaces so that it can be sorted"""
|
||||
age = ReportUtils.estimate_age(self.db, person, end, begin)
|
||||
age = estimate_age(self.db, person, end, begin)
|
||||
if age[0] < 0 or age[1] < 0:
|
||||
# inadequate information
|
||||
return _("Date(s) missing")
|
||||
@ -593,14 +818,14 @@ class StatisticsChart(Report):
|
||||
# output data...
|
||||
radius = middle - 2*margin
|
||||
yoffset += margin + radius
|
||||
ReportUtils.draw_pie_chart(self.doc, middle_w, yoffset, radius, chart_data, -90)
|
||||
draw_pie_chart(self.doc, middle_w, yoffset, radius, chart_data, -90)
|
||||
yoffset += radius + 2*margin
|
||||
if middle == middle_h: # Landscape
|
||||
legendx = 1.0
|
||||
yoffset = margin
|
||||
|
||||
text = _("%s (persons):") % typename
|
||||
ReportUtils.draw_legend(self.doc, legendx, yoffset, chart_data, text,'SC-legend')
|
||||
draw_legend(self.doc, legendx, yoffset, chart_data, text,'SC-legend')
|
||||
|
||||
|
||||
def output_barchart(self, title, typename, data, lookup):
|
||||
|
2272
src/plugins/lib/libnarrate.py
Normal file
2272
src/plugins/lib/libnarrate.py
Normal file
File diff suppressed because it is too large
Load Diff
@ -166,6 +166,22 @@ authors = ["The Gramps project"],
|
||||
authors_email = ["http://gramps-project.org"],
|
||||
)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# libnarrate
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
register(GENERAL,
|
||||
id = 'libnarrate',
|
||||
name = "narration lib",
|
||||
description = _("Provides Textual Narration.") ,
|
||||
version = '1.0',
|
||||
status = STABLE,
|
||||
fname = 'libnarrate.py',
|
||||
authors = ["Brian Matherly"],
|
||||
authors_email = ["brian@gramps-project.org"],
|
||||
)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# libodfbackend
|
||||
|
@ -45,6 +45,7 @@ from gen.plug.docgen import (IndexMark, FontStyle, ParagraphStyle,
|
||||
PARA_ALIGN_CENTER)
|
||||
from ReportBase import Report, ReportUtils, MenuReportOptions
|
||||
|
||||
from libnarrate import Narrator
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
@ -57,6 +58,11 @@ def log2(val):
|
||||
"""
|
||||
return int(math.log10(val)/math.log10(2))
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# AncestorReport
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
class AncestorReport(Report):
|
||||
"""
|
||||
Ancestor Report class
|
||||
@ -91,6 +97,7 @@ class AncestorReport(Report):
|
||||
self.center_person = database.get_person_from_gramps_id(pid)
|
||||
if (self.center_person == None) :
|
||||
raise ReportError(_("Person %s is not in the Database") % pid )
|
||||
self.__narrator = Narrator(self.database)
|
||||
|
||||
def apply_filter(self, person_handle, index, generation=1):
|
||||
"""
|
||||
@ -217,14 +224,10 @@ class AncestorReport(Report):
|
||||
primary_name = person.get_primary_name()
|
||||
first = primary_name.get_first_name()
|
||||
|
||||
self.doc.write_text(
|
||||
ReportUtils.born_str(self.database, person, first))
|
||||
self.doc.write_text(
|
||||
ReportUtils.baptised_str(self.database, person, 0))
|
||||
self.doc.write_text(
|
||||
ReportUtils.died_str(self.database, person, 0))
|
||||
self.doc.write_text(
|
||||
ReportUtils.buried_str(self.database, person, 0))
|
||||
self.doc.write_text(self.__narrator.born_str(person, first))
|
||||
self.doc.write_text(self.__narrator.baptised_str( person, 0))
|
||||
self.doc.write_text(self.__narrator.died_str(person, 0))
|
||||
self.doc.write_text(self.__narrator.buried_str(person, 0))
|
||||
|
||||
self.doc.end_paragraph()
|
||||
|
||||
|
@ -48,7 +48,8 @@ from gen.plug.menu import BooleanOption, NumberOption, PersonOption
|
||||
from ReportBase import (Report, ReportUtils, MenuReportOptions,
|
||||
Bibliography, Endnotes)
|
||||
import DateHandler
|
||||
import Utils
|
||||
|
||||
from libnarrate import Narrator
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
@ -126,14 +127,17 @@ class DetAncestorReport(Report):
|
||||
self.prev_gen_handles = {}
|
||||
|
||||
if blankdate:
|
||||
self.EMPTY_DATE = EMPTY_ENTRY
|
||||
empty_date = EMPTY_ENTRY
|
||||
else:
|
||||
self.EMPTY_DATE = ""
|
||||
empty_date = ""
|
||||
|
||||
if blankplace:
|
||||
self.EMPTY_PLACE = EMPTY_ENTRY
|
||||
empty_place = EMPTY_ENTRY
|
||||
else:
|
||||
self.EMPTY_PLACE = ""
|
||||
empty_place = ""
|
||||
|
||||
self.__narrator = Narrator(self.database, self.verbose,
|
||||
empty_date, empty_place)
|
||||
|
||||
self.bibli = Bibliography(Bibliography.MODE_PAGE)
|
||||
|
||||
@ -242,8 +246,7 @@ class DetAncestorReport(Report):
|
||||
if not self.verbose:
|
||||
self.write_parents(person, first)
|
||||
|
||||
text = ReportUtils.born_str(self.database, person, first, self.verbose,
|
||||
self.EMPTY_DATE, self.EMPTY_PLACE)
|
||||
text = self.__narrator.born_str(person, first)
|
||||
if text:
|
||||
birth_ref = person.get_birth_ref()
|
||||
if birth_ref:
|
||||
@ -253,19 +256,16 @@ class DetAncestorReport(Report):
|
||||
self.doc.write_text_citation(text)
|
||||
first = 0
|
||||
|
||||
text = ReportUtils.baptised_str(self.database, person, first, self.verbose,
|
||||
self.endnotes, self.EMPTY_DATE, self.EMPTY_PLACE)
|
||||
text = self.__narrator.baptised_str(person, first, self.endnotes)
|
||||
if text:
|
||||
self.doc.write_text_citation(text)
|
||||
|
||||
text = ReportUtils.christened_str(self.database, person, first, self.verbose,
|
||||
self.endnotes, self.EMPTY_DATE, self.EMPTY_PLACE)
|
||||
text = self.__narrator.christened_str(person, first, self.endnotes)
|
||||
if text:
|
||||
self.doc.write_text_citation(text)
|
||||
|
||||
span = self.calc_age(person)
|
||||
text = ReportUtils.died_str(self.database, person, first, self.verbose,
|
||||
self.EMPTY_DATE, self.EMPTY_PLACE, span)
|
||||
text = self.__narrator.died_str(person, first, span)
|
||||
if text:
|
||||
death_ref = person.get_death_ref()
|
||||
if death_ref:
|
||||
@ -275,12 +275,11 @@ class DetAncestorReport(Report):
|
||||
self.doc.write_text_citation(text)
|
||||
first = 0
|
||||
|
||||
text = ReportUtils.buried_str(self.database, person, first, self.verbose,
|
||||
self.endnotes, self.EMPTY_DATE, self.EMPTY_PLACE)
|
||||
text = self.__narrator.buried_str(person, first, self.endnotes)
|
||||
if text:
|
||||
self.doc.write_text_citation(text)
|
||||
|
||||
first = ReportUtils.common_name(person,self.usecall)
|
||||
first = ReportUtils.common_name(person, self.usecall)
|
||||
|
||||
if self.verbose:
|
||||
self.write_parents(person, first)
|
||||
@ -458,10 +457,9 @@ class DetAncestorReport(Report):
|
||||
else:
|
||||
father_name = ""
|
||||
father_mark = ""
|
||||
alive = Utils.probably_alive(person, self.database)
|
||||
text = ReportUtils.child_str(person, father_name, mother_name,
|
||||
not alive,
|
||||
firstName,self.verbose)
|
||||
|
||||
text = self.__narrator.child_str(person, father_name, mother_name,
|
||||
firstName)
|
||||
if text:
|
||||
self.doc.write_text(text)
|
||||
if father_mark:
|
||||
@ -481,14 +479,11 @@ class DetAncestorReport(Report):
|
||||
text = ""
|
||||
spouse_mark = ReportUtils.get_person_mark(self.database, spouse)
|
||||
|
||||
text = ReportUtils.married_str(self.database,person,family,
|
||||
self.verbose,
|
||||
self.endnotes,
|
||||
self.EMPTY_DATE,self.EMPTY_PLACE,
|
||||
is_first)
|
||||
text = self.__narrator.married_str(person, family, self.endnotes,
|
||||
is_first)
|
||||
|
||||
if text:
|
||||
self.doc.write_text_citation(text,spouse_mark)
|
||||
self.doc.write_text_citation(text, spouse_mark)
|
||||
is_first = False
|
||||
|
||||
def write_children(self, family):
|
||||
@ -534,12 +529,8 @@ class DetAncestorReport(Report):
|
||||
cnt += 1
|
||||
|
||||
self.doc.write_text("%s. " % child_name,child_mark)
|
||||
self.doc.write_text(
|
||||
ReportUtils.born_str(self.database, child, 0,
|
||||
self.verbose, self.EMPTY_DATE, self.EMPTY_PLACE))
|
||||
self.doc.write_text(
|
||||
ReportUtils.died_str(self.database, child, 0,
|
||||
self.verbose, self.EMPTY_DATE, self.EMPTY_PLACE))
|
||||
self.doc.write_text(self.__narrator.born_str(child))
|
||||
self.doc.write_text(self.__narrator.died_str(child))
|
||||
|
||||
self.doc.end_paragraph()
|
||||
|
||||
@ -632,37 +623,31 @@ class DetAncestorReport(Report):
|
||||
first_name = ReportUtils.common_name(ind, self.usecall)
|
||||
print_name = first_name
|
||||
|
||||
text = ReportUtils.born_str(self.database, ind, print_name,
|
||||
self.verbose, self.EMPTY_DATE, self.EMPTY_PLACE)
|
||||
text = self.__narrator.born_str(ind, print_name)
|
||||
if text:
|
||||
self.doc.write_text(text)
|
||||
print_name = 0
|
||||
|
||||
text = ReportUtils.baptised_str(self.database, ind, print_name,
|
||||
self.verbose, self.endnotes, self.EMPTY_DATE,
|
||||
self.EMPTY_PLACE)
|
||||
text = self.__narrator.baptised_str(ind, print_name,
|
||||
self.endnotes)
|
||||
if text:
|
||||
self.doc.write_text_citation(text)
|
||||
print_name = 0
|
||||
|
||||
text = ReportUtils.christened_str(self.database, ind, print_name,
|
||||
self.verbose, self.endnotes, self.EMPTY_DATE,
|
||||
self.EMPTY_PLACE)
|
||||
text = self.__narrator.christened_str(ind, print_name,
|
||||
self.endnotes)
|
||||
if text:
|
||||
self.doc.write_text_citation(text)
|
||||
print_name = 0
|
||||
|
||||
span = self.calc_age(ind)
|
||||
text = ReportUtils.died_str(self.database, ind, print_name,
|
||||
self.verbose, self.EMPTY_DATE, self.EMPTY_PLACE,
|
||||
span)
|
||||
text = self.__narrator.died_str(ind, print_name, span)
|
||||
if text:
|
||||
self.doc.write_text(text)
|
||||
print_name = 0
|
||||
|
||||
text = ReportUtils.buried_str(self.database, ind, print_name,
|
||||
self.verbose, self.endnotes, self.EMPTY_DATE,
|
||||
self.EMPTY_PLACE)
|
||||
text = self.__narrator.buried_str(ind, print_name,
|
||||
self.endnotes)
|
||||
|
||||
if text:
|
||||
self.doc.write_text_citation(text)
|
||||
|
@ -52,6 +52,8 @@ from ReportBase import (Report, ReportUtils, MenuReportOptions,
|
||||
import DateHandler
|
||||
import Utils
|
||||
|
||||
from libnarrate import Narrator
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Constants
|
||||
@ -85,9 +87,9 @@ class DetDescendantReport(Report):
|
||||
firstName - Whether to use first names instead of pronouns.
|
||||
fulldate - Whether to use full dates instead of just year.
|
||||
listchildren - Whether to list children.
|
||||
inc_mates - Whether to include information about spouses
|
||||
inc_notes - Whether to include notes.
|
||||
inc_attrs - Whether to include attributes
|
||||
inc_mates - Whether to include information about spouses
|
||||
inc_notes - Whether to include notes.
|
||||
inc_attrs - Whether to include attributes
|
||||
blankPlace - Whether to replace missing Places with ___________.
|
||||
blankDate - Whether to replace missing Dates with ___________.
|
||||
calcageflag - Whether to compute age.
|
||||
@ -136,14 +138,17 @@ class DetDescendantReport(Report):
|
||||
self.dnumber = {}
|
||||
|
||||
if blankdate:
|
||||
self.EMPTY_DATE = EMPTY_ENTRY
|
||||
empty_date = EMPTY_ENTRY
|
||||
else:
|
||||
self.EMPTY_DATE = ""
|
||||
empty_date = ""
|
||||
|
||||
if blankplace:
|
||||
self.EMPTY_PLACE = EMPTY_ENTRY
|
||||
empty_place = EMPTY_ENTRY
|
||||
else:
|
||||
self.EMPTY_PLACE = ""
|
||||
empty_place = ""
|
||||
|
||||
self.__narrator = Narrator(self.database, self.verbose,
|
||||
empty_date, empty_place)
|
||||
|
||||
self.bibli = Bibliography(Bibliography.MODE_PAGE)
|
||||
|
||||
@ -429,10 +434,8 @@ class DetDescendantReport(Report):
|
||||
else:
|
||||
father_name = ""
|
||||
father_mark = ""
|
||||
alive = Utils.probably_alive(person, self.database)
|
||||
text = ReportUtils.child_str(person, father_name, mother_name,
|
||||
not alive,
|
||||
firstName,self.verbose)
|
||||
text = self.__narrator.child_str(person, father_name, mother_name,
|
||||
firstName)
|
||||
if text:
|
||||
self.doc.write_text(text)
|
||||
if father_mark:
|
||||
@ -452,11 +455,8 @@ class DetDescendantReport(Report):
|
||||
text = ""
|
||||
spouse_mark = ReportUtils.get_person_mark(self.database, spouse)
|
||||
|
||||
text = ReportUtils.married_str(self.database, person, family,
|
||||
self.verbose,
|
||||
self.endnotes,
|
||||
self.EMPTY_DATE,self.EMPTY_PLACE,
|
||||
is_first)
|
||||
text = self.__narrator.married_str(person, family, self.endnotes,
|
||||
is_first)
|
||||
|
||||
if text:
|
||||
self.doc.write_text_citation(text, spouse_mark)
|
||||
@ -541,10 +541,8 @@ class DetDescendantReport(Report):
|
||||
|
||||
self.doc.write_text("%s. " % child_name, child_mark)
|
||||
|
||||
self.doc.write_text(ReportUtils.born_str( self.database, child, 0,
|
||||
self.verbose, self.EMPTY_DATE, self.EMPTY_PLACE))
|
||||
self.doc.write_text(ReportUtils.died_str( self.database, child, 0,
|
||||
self.verbose, self.EMPTY_DATE, self.EMPTY_PLACE))
|
||||
self.doc.write_text(self.__narrator.born_str(child, 0))
|
||||
self.doc.write_text(self.__narrator.died_str(child, 0))
|
||||
self.doc.end_paragraph()
|
||||
|
||||
def __write_family_events(self, family):
|
||||
@ -595,8 +593,7 @@ class DetDescendantReport(Report):
|
||||
if not self.verbose:
|
||||
self.write_parents(person, first)
|
||||
|
||||
text = ReportUtils.born_str(self.database, person, first, self.verbose,
|
||||
self.EMPTY_DATE, self.EMPTY_PLACE)
|
||||
text = self.__narrator.born_str(person, first)
|
||||
if text:
|
||||
birth_ref = person.get_birth_ref()
|
||||
if birth_ref:
|
||||
@ -606,21 +603,16 @@ class DetDescendantReport(Report):
|
||||
self.doc.write_text_citation(text)
|
||||
first = 0
|
||||
|
||||
text = ReportUtils.baptised_str(self.database, person, first,
|
||||
self.verbose, self.endnotes,
|
||||
self.EMPTY_DATE, self.EMPTY_PLACE)
|
||||
text = self.__narrator.baptised_str(person, first, self.endnotes)
|
||||
if text:
|
||||
self.doc.write_text_citation(text)
|
||||
|
||||
text = ReportUtils.christened_str(self.database, person, first,
|
||||
self.verbose, self.endnotes,
|
||||
self.EMPTY_DATE, self.EMPTY_PLACE)
|
||||
text = self.__narrator.christened_str(person, first, self.endnotes)
|
||||
if text:
|
||||
self.doc.write_text_citation(text)
|
||||
|
||||
span = self.calc_age(person)
|
||||
text = ReportUtils.died_str(self.database, person, first, self.verbose,
|
||||
self.EMPTY_DATE, self.EMPTY_PLACE, span)
|
||||
text = self.__narrator.died_str(person, first, span)
|
||||
if text:
|
||||
death_ref = person.get_death_ref()
|
||||
if death_ref:
|
||||
@ -630,9 +622,7 @@ class DetDescendantReport(Report):
|
||||
self.doc.write_text_citation(text)
|
||||
first = 0
|
||||
|
||||
text = ReportUtils.buried_str(self.database, person, first,
|
||||
self.verbose, self.endnotes,
|
||||
self.EMPTY_DATE, self.EMPTY_PLACE)
|
||||
text = self.__narrator.buried_str(person, first, self.endnotes)
|
||||
if text:
|
||||
self.doc.write_text_citation(text)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user