* src/docgen/Makefile.am, src/docgen/Makefile.in: Ship LPRDoc.py.

* src/plugins/GraphViz.py (dump_index): Remove utf8 to latin
conversion. Switch to FreeSans.
* src/docgen/PdfDoc.py (draw_text, rotate_text): Fix encoding.

* src/plugins/WebPage.py: Add option for using only birth date.
* src/Date.py: Switch over to lowercase function names.


svn: r3025
This commit is contained in:
Alex Roitman 2004-03-17 03:04:10 +00:00
parent d30ee3086f
commit 72ed0993e1
2 changed files with 110 additions and 48 deletions

View File

@ -1,7 +1,7 @@
# #
# Gramps - a GTK+/GNOME based genealogy program # Gramps - a GTK+/GNOME based genealogy program
# #
# Copyright (C) 2000 Donald N. Allingham # Copyright (C) 2000-2004 Donald N. Allingham
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -18,6 +18,8 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# #
# $Id$
"Support for dates" "Support for dates"
__author__ = "Donald N. Allingham" __author__ = "Donald N. Allingham"
@ -126,56 +128,56 @@ class Date:
self.stop.calendar = self.calendar self.stop.calendar = self.calendar
return self.stop return self.stop
def getLowYear(self): def get_low_year(self):
return self.start.getYear() return self.start.get_year()
def getHighYear(self): def get_high_year(self):
if self.stop == None: if self.stop == None:
return self.start.getYear() return self.start.get_year()
else: else:
return self.stop.getYear() return self.stop.get_year()
def getYear(self): def get_year(self):
return self.start.year return self.start.year
def getYearValid(self): def get_year_valid(self):
return self.start.year != UNDEF return self.start.year != UNDEF
def getMonth(self): def get_month(self):
if self.start.month == UNDEF: if self.start.month == UNDEF:
return UNDEF return UNDEF
return self.start.month return self.start.month
def getMonthValid(self): def get_month_valid(self):
return self.start.month != UNDEF return self.start.month != UNDEF
def getDay(self): def get_day(self):
return self.start.day return self.start.day
def getDayValid(self): def get_day_valid(self):
return self.start.day != UNDEF return self.start.day != UNDEF
def getValid(self): def get_valid(self):
""" Returns true if any part of the date is valid""" """ Returns true if any part of the date is valid"""
return self.start.year != UNDEF or self.start.month != UNDEF or self.start.day != UNDEF return self.start.year != UNDEF or self.start.month != UNDEF or self.start.day != UNDEF
def getIncomplete(self): def get_incomplete(self):
return self.range == 0 and self.start.year == UNDEF or \ return self.range == 0 and self.start.year == UNDEF or \
self.start.month == UNDEF or self.start.day == UNDEF self.start.month == UNDEF or self.start.day == UNDEF
def getStopYear(self): def get_stop_year(self):
if self.stop == None: if self.stop == None:
self.stop = SingleDate() self.stop = SingleDate()
self.stop.calendar = self.calendar self.stop.calendar = self.calendar
return self.stop.year return self.stop.year
def getStopMonth(self): def get_stop_month(self):
if self.stop == None: if self.stop == None:
self.stop = SingleDate() self.stop = SingleDate()
self.stop.calendar = self.calendar self.stop.calendar = self.calendar
return self.stop.month+1 return self.stop.month+1
def getStopDay(self): def get_stop_day(self):
if self.stop == None: if self.stop == None:
self.stop = SingleDate() self.stop = SingleDate()
self.stop.calendar = self.calendar self.stop.calendar = self.calendar
@ -268,14 +270,14 @@ class Date:
s = self.start s = self.start
return s.year==UNDEF and s.month==UNDEF and s.day==UNDEF and not self.text return s.year==UNDEF and s.month==UNDEF and s.day==UNDEF and not self.text
def isValid(self): def is_valid(self):
if self.range == -1: if self.range == -1:
return 0 return 0
elif self.range: elif self.range:
return self.start.getValid() and self.stop.getValid() return self.start.get_valid() and self.stop.get_valid()
return self.start.getValid() return self.start.get_valid()
def isRange(self): def is_range(self):
return self.range == 1 return self.range == 1
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
@ -300,64 +302,64 @@ class SingleDate:
self.mode = Calendar.EXACT self.mode = Calendar.EXACT
self.calendar = Gregorian.Gregorian() self.calendar = Gregorian.Gregorian()
def setMode(self,val): def set_mode(self,val):
self.mode = self.calendar.set_mode_value(val) self.mode = self.calendar.set_mode_value(val)
def setMonth(self,val): def set_month(self,val):
if val > 14 or val < 0: if val > 14 or val < 0:
self.month = UNDEF self.month = UNDEF
else: else:
self.month = val self.month = val
def setMonthVal(self,s): def set_month_val(self,s):
self.month = self.calendar.set_value(s) self.month = self.calendar.set_value(s)
def setDayVal(self,s): def set_day_val(self,s):
self.day = self.calendar.set_value(s) self.day = self.calendar.set_value(s)
def setYearVal(self,s): def set_year_val(self,s):
if s: if s:
self.year = self.calendar.set_value(s) self.year = self.calendar.set_value(s)
else: else:
self.year = UNDEF self.year = UNDEF
def getMonth(self): def get_month(self):
return self.month return self.month
def getMonthValid(self): def get_month_valid(self):
return self.month != UNDEF return self.month != UNDEF
def setDay(self,val): def set_day(self,val):
self.day = val self.day = val
def getDay(self): def get_day(self):
return self.day return self.day
def getDayValid(self): def get_day_valid(self):
return self.day != UNDEF return self.day != UNDEF
def setYear(self,val): def set_year(self,val):
self.year = val self.year = val
def getYear(self): def get_year(self):
return self.year return self.year
def getYearValid(self): def get_year_valid(self):
return self.year != UNDEF return self.year != UNDEF
def getValid(self): def get_valid(self):
""" Returns true if any part of the date is valid""" """ Returns true if any part of the date is valid"""
if self.year == UNDEF and self.month == UNDEF and self.day == UNDEF: if self.year == UNDEF and self.month == UNDEF and self.day == UNDEF:
return 1 return 1
return self.calendar.check(self.year,self.month,self.day) return self.calendar.check(self.year,self.month,self.day)
def setMonthStr(self,text): def set_month_str(self,text):
self.calendar.set_month_string(text) self.calendar.set_month_string(text)
def getMonthStr(self): def get_month_str(self):
return self.calendar.month(self.month) return self.calendar.month(self.month)
def getIsoDate(self): def get_iso_date(self):
if self.year == UNDEF: if self.year == UNDEF:
y = "????" y = "????"
else: else:
@ -385,30 +387,30 @@ class SingleDate:
else: else:
return self.calendar.quote_display(self.year, self.month, self.day, self.mode) return self.calendar.quote_display(self.year, self.month, self.day, self.mode)
def setIsoDate(self,v): def set_iso_date(self,v):
data = string.split(v) data = string.split(v)
if len(data) > 1: if len(data) > 1:
self.setMode(data[0]) self.set_mode(data[0])
v = data[1] v = data[1]
vals = string.split(v,'-') vals = string.split(v,'-')
self.setYearVal(vals[0]) self.set_year_val(vals[0])
if len(vals) > 1: if len(vals) > 1:
try: try:
self.setMonthVal(int(vals[1])) self.set_month_val(int(vals[1]))
except: except:
self.month = UNDEF self.month = UNDEF
else: else:
self.month = UNDEF self.month = UNDEF
if len(vals) > 2: if len(vals) > 2:
self.setDayVal(vals[2]) self.set_day_val(vals[2])
else: else:
self.day = UNDEF self.day = UNDEF
def getModeVal(self): def get_mode_val(self):
return self.mode return self.mode
def setModeVal(self,val): def set_mode_val(self,val):
self.mode = val self.mode = val
def set(self,text): def set(self,text):

View File

@ -69,6 +69,7 @@ _month = [
"JUL", "AUG", "SEP", "OCT", "NOV", "DEC" ] "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" ]
_hline = " " # Everything is underlined, so use blank _hline = " " # Everything is underlined, so use blank
_BORN = _('b.')
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
@ -683,7 +684,8 @@ 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, include_mini_tree, private, srccomments, include_link, include_mini_tree,
style, image_dir, template_name,use_id,id_link,gendex,ext, style, image_dir, template_name,use_id,id_link,gendex,ext,
include_alpha_links,separate_alpha,n_cols,ind_template_name,depth): include_alpha_links,separate_alpha,n_cols,ind_template_name,
depth,birth_dates,year_only):
self.db = db self.db = db
self.ext = ext self.ext = ext
self.use_id = use_id self.use_id = use_id
@ -707,6 +709,8 @@ class WebReport(Report.Report):
self.n_cols = n_cols self.n_cols = n_cols
self.ind_template_name = ind_template_name self.ind_template_name = ind_template_name
self.depth = depth self.depth = depth
self.birth_dates = birth_dates
self.year_only = year_only
def get_progressbar_data(self): def get_progressbar_data(self):
return (_("Generate HTML reports - GRAMPS"), _("Creating Web Pages")) return (_("Generate HTML reports - GRAMPS"), _("Creating Web Pages"))
@ -864,10 +868,27 @@ class WebReport(Report.Report):
col_len = n_rows col_len = n_rows
for person_id in p_id_list: for person_id in p_id_list:
name = self.db.find_person_from_if(person_id).get_primary_name().get_name() name = self.db.find_person_from_id(person_id).get_primary_name().get_name()
if self.birth_dates:
birth_id = self.db.find_person_from_id(person_id).get_birth_id()
if birth_id:
birth_event = self.db.find_event_from_id(birth_id)
if self.year_only:
birth_dobj = birth_event.get_date_object()
if birth_dobj.get_year_valid():
birth_date = birth_dobj.get_year()
else:
birth_date = ""
else:
birth_date = birth_event.get_date()
else:
birth_date = ""
doc.start_link("%s.%s" % (person_id,self.ext)) doc.start_link("%s.%s" % (person_id,self.ext))
doc.write_text(name) doc.write_text(name)
if self.birth_dates and birth_date:
doc.write_text(' (%s %s)' % (_BORN,birth_date))
doc.end_link() doc.end_link()
if col_len <= 0: if col_len <= 0:
@ -900,8 +921,25 @@ class WebReport(Report.Report):
for person_id in p_id_list: for person_id in p_id_list:
name = self.db.find_person_from_id(person_id).get_primary_name().get_name() name = self.db.find_person_from_id(person_id).get_primary_name().get_name()
if self.birth_dates:
birth_id = self.db.find_person_from_id(person_id).get_birth_id()
if birth_id:
birth_event = self.db.find_event_from_id(birth_id)
if self.year_only:
birth_dobj = birth_event.get_date_object()
if birth_dobj.get_year_valid():
birth_date = birth_dobj.get_year()
else:
birth_date = ""
else:
birth_date = birth_event.get_date()
else:
birth_date = ""
doc.start_link("%s.%s" % (person_id,self.ext)) doc.start_link("%s.%s" % (person_id,self.ext))
doc.write_text(name) doc.write_text(name)
if self.birth_dates and birth_date:
doc.write_text(' (%s %s)' % (_BORN,birth_date))
doc.end_link() doc.end_link()
if col_len <= 0: if col_len <= 0:
doc.write_raw('</td><td width="%d%%" valign="top">' % td_width) doc.write_raw('</td><td width="%d%%" valign="top">' % td_width)
@ -1034,6 +1072,8 @@ class WebReportDialog(Report.ReportDialog):
ext_msg = _("File extension") ext_msg = _("File extension")
alpha_links_msg = _("Links to alphabetical sections in index page") alpha_links_msg = _("Links to alphabetical sections in index page")
sep_alpha_msg = _("Split alphabetical sections to separate pages") sep_alpha_msg = _("Split alphabetical sections to separate pages")
birth_date_msg = _("Append birth dates to the names")
year_only_msg = _("Use only year of birth")
tree_msg = _("Include short ancestor tree") tree_msg = _("Include short ancestor tree")
self.mini_tree = gtk.CheckButton(tree_msg) self.mini_tree = gtk.CheckButton(tree_msg)
@ -1085,6 +1125,12 @@ class WebReportDialog(Report.ReportDialog):
self.ind_template.entry.set_editable(0) self.ind_template.entry.set_editable(0)
self.ind_user_template = gnome.ui.FileEntry("HTML_Template",_("Choose File")) self.ind_user_template = gnome.ui.FileEntry("HTML_Template",_("Choose File"))
self.ind_user_template.set_sensitive(0) self.ind_user_template.set_sensitive(0)
self.add_birth_date = gtk.CheckButton(birth_date_msg)
self.use_year_only = gtk.CheckButton(year_only_msg)
self.use_year_only.set_active(1)
self.use_year_only.set_sensitive(0)
self.add_birth_date.connect('toggled',self.on_birth_date_toggled)
self.add_option(imgdir_msg,self.imgdir) self.add_option(imgdir_msg,self.imgdir)
self.add_option('',self.mini_tree) self.add_option('',self.mini_tree)
@ -1109,6 +1155,8 @@ class WebReportDialog(Report.ReportDialog):
self.add_frame_option(title,None,self.use_alpha_links) self.add_frame_option(title,None,self.use_alpha_links)
self.add_frame_option(title,None,self.use_sep_alpha) self.add_frame_option(title,None,self.use_sep_alpha)
self.add_frame_option(title,_('Number of columns'),self.use_n_cols) self.add_frame_option(title,_('Number of columns'),self.use_n_cols)
self.add_frame_option(title,None,self.add_birth_date)
self.add_frame_option(title,None,self.use_year_only)
title = _('Advanced') title = _('Advanced')
self.add_frame_option(title,'',self.include_id) self.add_frame_option(title,'',self.include_id)
@ -1376,6 +1424,8 @@ class WebReportDialog(Report.ReportDialog):
else: else:
self.separate_alpha = 0 self.separate_alpha = 0
self.n_cols = self.use_n_cols.get_value() self.n_cols = self.use_n_cols.get_value()
self.birth_dates = self.add_birth_date.get_active()
self.year_only = self.use_year_only.get_active()
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
@ -1421,6 +1471,15 @@ class WebReportDialog(Report.ReportDialog):
else: else:
self.ind_user_template.set_sensitive(0) self.ind_user_template.set_sensitive(0)
def on_birth_date_toggled(self,obj):
"""Keep the 'User year only' check button in line with
the 'Add birth date' checkbox. If no mini birth date is added
then it makes no sense to worry about its format."""
if obj.get_active():
self.use_year_only.set_sensitive(1)
else:
self.use_year_only.set_sensitive(0)
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
# Functions related to creating the actual report document. # Functions related to creating the actual report document.
@ -1439,7 +1498,8 @@ class WebReportDialog(Report.ReportDialog):
self.use_id,self.id_link,self.use_gendex, self.use_id,self.id_link,self.use_gendex,
self.html_ext,self.include_alpha_links, self.html_ext,self.include_alpha_links,
self.separate_alpha,self.n_cols, self.separate_alpha,self.n_cols,
self.ind_template_name,self.depth_value) self.ind_template_name,self.depth_value,
self.birth_dates,self.year_only)
MyReport.write_report() MyReport.write_report()
except Errors.FilterError, msg: except Errors.FilterError, msg:
(m1,m2) = msg.messages() (m1,m2) = msg.messages()