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
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
#
|
#
|
||||||
# To see things still missing, search for "TODO"...
|
|
||||||
#
|
#
|
||||||
# $Id$
|
# $Id$
|
||||||
|
|
||||||
@ -42,6 +41,7 @@ from TransUtils import sgettext as _
|
|||||||
|
|
||||||
# Person and relation types
|
# Person and relation types
|
||||||
from gen.lib import Person, FamilyRelType, EventType, EventRoleType
|
from gen.lib import Person, FamilyRelType, EventType, EventRoleType
|
||||||
|
from gen.lib.date import Date
|
||||||
# gender and report type names
|
# gender and report type names
|
||||||
from gen.plug.docgen import (FontStyle, ParagraphStyle, GraphicsStyle,
|
from gen.plug.docgen import (FontStyle, ParagraphStyle, GraphicsStyle,
|
||||||
FONT_SANS_SERIF, FONT_SERIF,
|
FONT_SANS_SERIF, FONT_SERIF,
|
||||||
@ -52,12 +52,237 @@ from ReportBase import Report, ReportUtils, MenuReportOptions
|
|||||||
import DateHandler
|
import DateHandler
|
||||||
from gui.utils import ProgressMeter
|
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
|
# Global options and their names
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
|
|
||||||
class _options:
|
class _options:
|
||||||
# sort type identifiers
|
# sort type identifiers
|
||||||
SORT_VALUE = 0
|
SORT_VALUE = 0
|
||||||
@ -180,7 +405,7 @@ class Extract(object):
|
|||||||
if date:
|
if date:
|
||||||
month = date.get_month()
|
month = date.get_month()
|
||||||
if month:
|
if month:
|
||||||
return [DateHandler.displayer._months[month]]
|
return [DateHandler.displayer.long_months[month]]
|
||||||
return [_("Date(s) missing")]
|
return [_("Date(s) missing")]
|
||||||
|
|
||||||
def get_place(self, event):
|
def get_place(self, event):
|
||||||
@ -284,7 +509,7 @@ class Extract(object):
|
|||||||
def estimate_age(self, person, end=None, begin=None):
|
def estimate_age(self, person, end=None, begin=None):
|
||||||
"""return estimated age (range) for given person or error message.
|
"""return estimated age (range) for given person or error message.
|
||||||
age string is padded with spaces so that it can be sorted"""
|
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:
|
if age[0] < 0 or age[1] < 0:
|
||||||
# inadequate information
|
# inadequate information
|
||||||
return _("Date(s) missing")
|
return _("Date(s) missing")
|
||||||
@ -593,14 +818,14 @@ class StatisticsChart(Report):
|
|||||||
# output data...
|
# output data...
|
||||||
radius = middle - 2*margin
|
radius = middle - 2*margin
|
||||||
yoffset += margin + radius
|
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
|
yoffset += radius + 2*margin
|
||||||
if middle == middle_h: # Landscape
|
if middle == middle_h: # Landscape
|
||||||
legendx = 1.0
|
legendx = 1.0
|
||||||
yoffset = margin
|
yoffset = margin
|
||||||
|
|
||||||
text = _("%s (persons):") % typename
|
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):
|
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"],
|
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
|
# libodfbackend
|
||||||
|
@ -45,6 +45,7 @@ from gen.plug.docgen import (IndexMark, FontStyle, ParagraphStyle,
|
|||||||
PARA_ALIGN_CENTER)
|
PARA_ALIGN_CENTER)
|
||||||
from ReportBase import Report, ReportUtils, MenuReportOptions
|
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))
|
return int(math.log10(val)/math.log10(2))
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# AncestorReport
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------
|
||||||
class AncestorReport(Report):
|
class AncestorReport(Report):
|
||||||
"""
|
"""
|
||||||
Ancestor Report class
|
Ancestor Report class
|
||||||
@ -91,6 +97,7 @@ class AncestorReport(Report):
|
|||||||
self.center_person = database.get_person_from_gramps_id(pid)
|
self.center_person = database.get_person_from_gramps_id(pid)
|
||||||
if (self.center_person == None) :
|
if (self.center_person == None) :
|
||||||
raise ReportError(_("Person %s is not in the Database") % pid )
|
raise ReportError(_("Person %s is not in the Database") % pid )
|
||||||
|
self.__narrator = Narrator(self.database)
|
||||||
|
|
||||||
def apply_filter(self, person_handle, index, generation=1):
|
def apply_filter(self, person_handle, index, generation=1):
|
||||||
"""
|
"""
|
||||||
@ -217,14 +224,10 @@ class AncestorReport(Report):
|
|||||||
primary_name = person.get_primary_name()
|
primary_name = person.get_primary_name()
|
||||||
first = primary_name.get_first_name()
|
first = primary_name.get_first_name()
|
||||||
|
|
||||||
self.doc.write_text(
|
self.doc.write_text(self.__narrator.born_str(person, first))
|
||||||
ReportUtils.born_str(self.database, person, first))
|
self.doc.write_text(self.__narrator.baptised_str( person, 0))
|
||||||
self.doc.write_text(
|
self.doc.write_text(self.__narrator.died_str(person, 0))
|
||||||
ReportUtils.baptised_str(self.database, person, 0))
|
self.doc.write_text(self.__narrator.buried_str(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.end_paragraph()
|
self.doc.end_paragraph()
|
||||||
|
|
||||||
|
@ -48,7 +48,8 @@ from gen.plug.menu import BooleanOption, NumberOption, PersonOption
|
|||||||
from ReportBase import (Report, ReportUtils, MenuReportOptions,
|
from ReportBase import (Report, ReportUtils, MenuReportOptions,
|
||||||
Bibliography, Endnotes)
|
Bibliography, Endnotes)
|
||||||
import DateHandler
|
import DateHandler
|
||||||
import Utils
|
|
||||||
|
from libnarrate import Narrator
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -126,14 +127,17 @@ class DetAncestorReport(Report):
|
|||||||
self.prev_gen_handles = {}
|
self.prev_gen_handles = {}
|
||||||
|
|
||||||
if blankdate:
|
if blankdate:
|
||||||
self.EMPTY_DATE = EMPTY_ENTRY
|
empty_date = EMPTY_ENTRY
|
||||||
else:
|
else:
|
||||||
self.EMPTY_DATE = ""
|
empty_date = ""
|
||||||
|
|
||||||
if blankplace:
|
if blankplace:
|
||||||
self.EMPTY_PLACE = EMPTY_ENTRY
|
empty_place = EMPTY_ENTRY
|
||||||
else:
|
else:
|
||||||
self.EMPTY_PLACE = ""
|
empty_place = ""
|
||||||
|
|
||||||
|
self.__narrator = Narrator(self.database, self.verbose,
|
||||||
|
empty_date, empty_place)
|
||||||
|
|
||||||
self.bibli = Bibliography(Bibliography.MODE_PAGE)
|
self.bibli = Bibliography(Bibliography.MODE_PAGE)
|
||||||
|
|
||||||
@ -242,8 +246,7 @@ class DetAncestorReport(Report):
|
|||||||
if not self.verbose:
|
if not self.verbose:
|
||||||
self.write_parents(person, first)
|
self.write_parents(person, first)
|
||||||
|
|
||||||
text = ReportUtils.born_str(self.database, person, first, self.verbose,
|
text = self.__narrator.born_str(person, first)
|
||||||
self.EMPTY_DATE, self.EMPTY_PLACE)
|
|
||||||
if text:
|
if text:
|
||||||
birth_ref = person.get_birth_ref()
|
birth_ref = person.get_birth_ref()
|
||||||
if birth_ref:
|
if birth_ref:
|
||||||
@ -253,19 +256,16 @@ class DetAncestorReport(Report):
|
|||||||
self.doc.write_text_citation(text)
|
self.doc.write_text_citation(text)
|
||||||
first = 0
|
first = 0
|
||||||
|
|
||||||
text = ReportUtils.baptised_str(self.database, person, first, self.verbose,
|
text = self.__narrator.baptised_str(person, first, self.endnotes)
|
||||||
self.endnotes, self.EMPTY_DATE, self.EMPTY_PLACE)
|
|
||||||
if text:
|
if text:
|
||||||
self.doc.write_text_citation(text)
|
self.doc.write_text_citation(text)
|
||||||
|
|
||||||
text = ReportUtils.christened_str(self.database, person, first, self.verbose,
|
text = self.__narrator.christened_str(person, first, self.endnotes)
|
||||||
self.endnotes, self.EMPTY_DATE, self.EMPTY_PLACE)
|
|
||||||
if text:
|
if text:
|
||||||
self.doc.write_text_citation(text)
|
self.doc.write_text_citation(text)
|
||||||
|
|
||||||
span = self.calc_age(person)
|
span = self.calc_age(person)
|
||||||
text = ReportUtils.died_str(self.database, person, first, self.verbose,
|
text = self.__narrator.died_str(person, first, span)
|
||||||
self.EMPTY_DATE, self.EMPTY_PLACE, span)
|
|
||||||
if text:
|
if text:
|
||||||
death_ref = person.get_death_ref()
|
death_ref = person.get_death_ref()
|
||||||
if death_ref:
|
if death_ref:
|
||||||
@ -275,12 +275,11 @@ class DetAncestorReport(Report):
|
|||||||
self.doc.write_text_citation(text)
|
self.doc.write_text_citation(text)
|
||||||
first = 0
|
first = 0
|
||||||
|
|
||||||
text = ReportUtils.buried_str(self.database, person, first, self.verbose,
|
text = self.__narrator.buried_str(person, first, self.endnotes)
|
||||||
self.endnotes, self.EMPTY_DATE, self.EMPTY_PLACE)
|
|
||||||
if text:
|
if text:
|
||||||
self.doc.write_text_citation(text)
|
self.doc.write_text_citation(text)
|
||||||
|
|
||||||
first = ReportUtils.common_name(person,self.usecall)
|
first = ReportUtils.common_name(person, self.usecall)
|
||||||
|
|
||||||
if self.verbose:
|
if self.verbose:
|
||||||
self.write_parents(person, first)
|
self.write_parents(person, first)
|
||||||
@ -458,10 +457,9 @@ class DetAncestorReport(Report):
|
|||||||
else:
|
else:
|
||||||
father_name = ""
|
father_name = ""
|
||||||
father_mark = ""
|
father_mark = ""
|
||||||
alive = Utils.probably_alive(person, self.database)
|
|
||||||
text = ReportUtils.child_str(person, father_name, mother_name,
|
text = self.__narrator.child_str(person, father_name, mother_name,
|
||||||
not alive,
|
firstName)
|
||||||
firstName,self.verbose)
|
|
||||||
if text:
|
if text:
|
||||||
self.doc.write_text(text)
|
self.doc.write_text(text)
|
||||||
if father_mark:
|
if father_mark:
|
||||||
@ -481,14 +479,11 @@ class DetAncestorReport(Report):
|
|||||||
text = ""
|
text = ""
|
||||||
spouse_mark = ReportUtils.get_person_mark(self.database, spouse)
|
spouse_mark = ReportUtils.get_person_mark(self.database, spouse)
|
||||||
|
|
||||||
text = ReportUtils.married_str(self.database,person,family,
|
text = self.__narrator.married_str(person, family, self.endnotes,
|
||||||
self.verbose,
|
is_first)
|
||||||
self.endnotes,
|
|
||||||
self.EMPTY_DATE,self.EMPTY_PLACE,
|
|
||||||
is_first)
|
|
||||||
|
|
||||||
if text:
|
if text:
|
||||||
self.doc.write_text_citation(text,spouse_mark)
|
self.doc.write_text_citation(text, spouse_mark)
|
||||||
is_first = False
|
is_first = False
|
||||||
|
|
||||||
def write_children(self, family):
|
def write_children(self, family):
|
||||||
@ -534,12 +529,8 @@ class DetAncestorReport(Report):
|
|||||||
cnt += 1
|
cnt += 1
|
||||||
|
|
||||||
self.doc.write_text("%s. " % child_name,child_mark)
|
self.doc.write_text("%s. " % child_name,child_mark)
|
||||||
self.doc.write_text(
|
self.doc.write_text(self.__narrator.born_str(child))
|
||||||
ReportUtils.born_str(self.database, child, 0,
|
self.doc.write_text(self.__narrator.died_str(child))
|
||||||
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.end_paragraph()
|
self.doc.end_paragraph()
|
||||||
|
|
||||||
@ -632,37 +623,31 @@ class DetAncestorReport(Report):
|
|||||||
first_name = ReportUtils.common_name(ind, self.usecall)
|
first_name = ReportUtils.common_name(ind, self.usecall)
|
||||||
print_name = first_name
|
print_name = first_name
|
||||||
|
|
||||||
text = ReportUtils.born_str(self.database, ind, print_name,
|
text = self.__narrator.born_str(ind, print_name)
|
||||||
self.verbose, self.EMPTY_DATE, self.EMPTY_PLACE)
|
|
||||||
if text:
|
if text:
|
||||||
self.doc.write_text(text)
|
self.doc.write_text(text)
|
||||||
print_name = 0
|
print_name = 0
|
||||||
|
|
||||||
text = ReportUtils.baptised_str(self.database, ind, print_name,
|
text = self.__narrator.baptised_str(ind, print_name,
|
||||||
self.verbose, self.endnotes, self.EMPTY_DATE,
|
self.endnotes)
|
||||||
self.EMPTY_PLACE)
|
|
||||||
if text:
|
if text:
|
||||||
self.doc.write_text_citation(text)
|
self.doc.write_text_citation(text)
|
||||||
print_name = 0
|
print_name = 0
|
||||||
|
|
||||||
text = ReportUtils.christened_str(self.database, ind, print_name,
|
text = self.__narrator.christened_str(ind, print_name,
|
||||||
self.verbose, self.endnotes, self.EMPTY_DATE,
|
self.endnotes)
|
||||||
self.EMPTY_PLACE)
|
|
||||||
if text:
|
if text:
|
||||||
self.doc.write_text_citation(text)
|
self.doc.write_text_citation(text)
|
||||||
print_name = 0
|
print_name = 0
|
||||||
|
|
||||||
span = self.calc_age(ind)
|
span = self.calc_age(ind)
|
||||||
text = ReportUtils.died_str(self.database, ind, print_name,
|
text = self.__narrator.died_str(ind, print_name, span)
|
||||||
self.verbose, self.EMPTY_DATE, self.EMPTY_PLACE,
|
|
||||||
span)
|
|
||||||
if text:
|
if text:
|
||||||
self.doc.write_text(text)
|
self.doc.write_text(text)
|
||||||
print_name = 0
|
print_name = 0
|
||||||
|
|
||||||
text = ReportUtils.buried_str(self.database, ind, print_name,
|
text = self.__narrator.buried_str(ind, print_name,
|
||||||
self.verbose, self.endnotes, self.EMPTY_DATE,
|
self.endnotes)
|
||||||
self.EMPTY_PLACE)
|
|
||||||
|
|
||||||
if text:
|
if text:
|
||||||
self.doc.write_text_citation(text)
|
self.doc.write_text_citation(text)
|
||||||
|
@ -52,6 +52,8 @@ from ReportBase import (Report, ReportUtils, MenuReportOptions,
|
|||||||
import DateHandler
|
import DateHandler
|
||||||
import Utils
|
import Utils
|
||||||
|
|
||||||
|
from libnarrate import Narrator
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Constants
|
# Constants
|
||||||
@ -85,9 +87,9 @@ class DetDescendantReport(Report):
|
|||||||
firstName - Whether to use first names instead of pronouns.
|
firstName - Whether to use first names instead of pronouns.
|
||||||
fulldate - Whether to use full dates instead of just year.
|
fulldate - Whether to use full dates instead of just year.
|
||||||
listchildren - Whether to list children.
|
listchildren - Whether to list children.
|
||||||
inc_mates - Whether to include information about spouses
|
inc_mates - Whether to include information about spouses
|
||||||
inc_notes - Whether to include notes.
|
inc_notes - Whether to include notes.
|
||||||
inc_attrs - Whether to include attributes
|
inc_attrs - Whether to include attributes
|
||||||
blankPlace - Whether to replace missing Places with ___________.
|
blankPlace - Whether to replace missing Places with ___________.
|
||||||
blankDate - Whether to replace missing Dates with ___________.
|
blankDate - Whether to replace missing Dates with ___________.
|
||||||
calcageflag - Whether to compute age.
|
calcageflag - Whether to compute age.
|
||||||
@ -136,14 +138,17 @@ class DetDescendantReport(Report):
|
|||||||
self.dnumber = {}
|
self.dnumber = {}
|
||||||
|
|
||||||
if blankdate:
|
if blankdate:
|
||||||
self.EMPTY_DATE = EMPTY_ENTRY
|
empty_date = EMPTY_ENTRY
|
||||||
else:
|
else:
|
||||||
self.EMPTY_DATE = ""
|
empty_date = ""
|
||||||
|
|
||||||
if blankplace:
|
if blankplace:
|
||||||
self.EMPTY_PLACE = EMPTY_ENTRY
|
empty_place = EMPTY_ENTRY
|
||||||
else:
|
else:
|
||||||
self.EMPTY_PLACE = ""
|
empty_place = ""
|
||||||
|
|
||||||
|
self.__narrator = Narrator(self.database, self.verbose,
|
||||||
|
empty_date, empty_place)
|
||||||
|
|
||||||
self.bibli = Bibliography(Bibliography.MODE_PAGE)
|
self.bibli = Bibliography(Bibliography.MODE_PAGE)
|
||||||
|
|
||||||
@ -429,10 +434,8 @@ class DetDescendantReport(Report):
|
|||||||
else:
|
else:
|
||||||
father_name = ""
|
father_name = ""
|
||||||
father_mark = ""
|
father_mark = ""
|
||||||
alive = Utils.probably_alive(person, self.database)
|
text = self.__narrator.child_str(person, father_name, mother_name,
|
||||||
text = ReportUtils.child_str(person, father_name, mother_name,
|
firstName)
|
||||||
not alive,
|
|
||||||
firstName,self.verbose)
|
|
||||||
if text:
|
if text:
|
||||||
self.doc.write_text(text)
|
self.doc.write_text(text)
|
||||||
if father_mark:
|
if father_mark:
|
||||||
@ -452,11 +455,8 @@ class DetDescendantReport(Report):
|
|||||||
text = ""
|
text = ""
|
||||||
spouse_mark = ReportUtils.get_person_mark(self.database, spouse)
|
spouse_mark = ReportUtils.get_person_mark(self.database, spouse)
|
||||||
|
|
||||||
text = ReportUtils.married_str(self.database, person, family,
|
text = self.__narrator.married_str(person, family, self.endnotes,
|
||||||
self.verbose,
|
is_first)
|
||||||
self.endnotes,
|
|
||||||
self.EMPTY_DATE,self.EMPTY_PLACE,
|
|
||||||
is_first)
|
|
||||||
|
|
||||||
if text:
|
if text:
|
||||||
self.doc.write_text_citation(text, spouse_mark)
|
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("%s. " % child_name, child_mark)
|
||||||
|
|
||||||
self.doc.write_text(ReportUtils.born_str( self.database, child, 0,
|
self.doc.write_text(self.__narrator.born_str(child, 0))
|
||||||
self.verbose, self.EMPTY_DATE, self.EMPTY_PLACE))
|
self.doc.write_text(self.__narrator.died_str(child, 0))
|
||||||
self.doc.write_text(ReportUtils.died_str( self.database, child, 0,
|
|
||||||
self.verbose, self.EMPTY_DATE, self.EMPTY_PLACE))
|
|
||||||
self.doc.end_paragraph()
|
self.doc.end_paragraph()
|
||||||
|
|
||||||
def __write_family_events(self, family):
|
def __write_family_events(self, family):
|
||||||
@ -595,8 +593,7 @@ class DetDescendantReport(Report):
|
|||||||
if not self.verbose:
|
if not self.verbose:
|
||||||
self.write_parents(person, first)
|
self.write_parents(person, first)
|
||||||
|
|
||||||
text = ReportUtils.born_str(self.database, person, first, self.verbose,
|
text = self.__narrator.born_str(person, first)
|
||||||
self.EMPTY_DATE, self.EMPTY_PLACE)
|
|
||||||
if text:
|
if text:
|
||||||
birth_ref = person.get_birth_ref()
|
birth_ref = person.get_birth_ref()
|
||||||
if birth_ref:
|
if birth_ref:
|
||||||
@ -606,21 +603,16 @@ class DetDescendantReport(Report):
|
|||||||
self.doc.write_text_citation(text)
|
self.doc.write_text_citation(text)
|
||||||
first = 0
|
first = 0
|
||||||
|
|
||||||
text = ReportUtils.baptised_str(self.database, person, first,
|
text = self.__narrator.baptised_str(person, first, self.endnotes)
|
||||||
self.verbose, self.endnotes,
|
|
||||||
self.EMPTY_DATE, self.EMPTY_PLACE)
|
|
||||||
if text:
|
if text:
|
||||||
self.doc.write_text_citation(text)
|
self.doc.write_text_citation(text)
|
||||||
|
|
||||||
text = ReportUtils.christened_str(self.database, person, first,
|
text = self.__narrator.christened_str(person, first, self.endnotes)
|
||||||
self.verbose, self.endnotes,
|
|
||||||
self.EMPTY_DATE, self.EMPTY_PLACE)
|
|
||||||
if text:
|
if text:
|
||||||
self.doc.write_text_citation(text)
|
self.doc.write_text_citation(text)
|
||||||
|
|
||||||
span = self.calc_age(person)
|
span = self.calc_age(person)
|
||||||
text = ReportUtils.died_str(self.database, person, first, self.verbose,
|
text = self.__narrator.died_str(person, first, span)
|
||||||
self.EMPTY_DATE, self.EMPTY_PLACE, span)
|
|
||||||
if text:
|
if text:
|
||||||
death_ref = person.get_death_ref()
|
death_ref = person.get_death_ref()
|
||||||
if death_ref:
|
if death_ref:
|
||||||
@ -630,9 +622,7 @@ class DetDescendantReport(Report):
|
|||||||
self.doc.write_text_citation(text)
|
self.doc.write_text_citation(text)
|
||||||
first = 0
|
first = 0
|
||||||
|
|
||||||
text = ReportUtils.buried_str(self.database, person, first,
|
text = self.__narrator.buried_str(person, first, self.endnotes)
|
||||||
self.verbose, self.endnotes,
|
|
||||||
self.EMPTY_DATE, self.EMPTY_PLACE)
|
|
||||||
if text:
|
if text:
|
||||||
self.doc.write_text_citation(text)
|
self.doc.write_text_citation(text)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user