From fe35c2ff91407b5635a77d8d6c652eb725c5176a Mon Sep 17 00:00:00 2001 From: Doug Blank Date: Sat, 19 Apr 2008 02:28:14 +0000 Subject: [PATCH] 0001931: add dates to pedigree gramplet; fixed bug in RelationView in displaying b. with no date svn: r10586 --- src/DataViews/RelationView.py | 20 +++++++--- src/plugins/DefaultGramplets.py | 69 ++++++++++++++++++++++++++++++--- 2 files changed, 77 insertions(+), 12 deletions(-) diff --git a/src/DataViews/RelationView.py b/src/DataViews/RelationView.py index 269da30fd..e524ada7e 100644 --- a/src/DataViews/RelationView.py +++ b/src/DataViews/RelationView.py @@ -983,21 +983,29 @@ class RelationshipView(PageView.PersonNavView): box.add(GrampsWidgets.BasicLabel(title)) def info_string(self, handle): - child = self.dbstate.db.get_person_from_handle(handle) - if not child: + person = self.dbstate.db.get_person_from_handle(handle) + if not person: return None - birth = ReportUtils.get_birth_or_fallback(self.dbstate.db, child) + birth = ReportUtils.get_birth_or_fallback(self.dbstate.db, person) if birth and birth.get_type != gen.lib.EventType.BIRTH: - bdate = "%s" % cgi.escape(DateHandler.get_date(birth)) + sdate = DateHandler.get_date(birth) + if sdate: + bdate = "%s" % cgi.escape(sdate) + else: + bdate = "" elif birth: bdate = cgi.escape(DateHandler.get_date(birth)) else: bdate = "" - death = ReportUtils.get_death_or_fallback(self.dbstate.db, child) + death = ReportUtils.get_death_or_fallback(self.dbstate.db, person) if death and death.get_type != gen.lib.EventType.DEATH: - ddate = "%s" % cgi.escape(DateHandler.get_date(death)) + sdate = DateHandler.get_date(death) + if sdate: + ddate = "%s" % cgi.escape(sdate) + else: + ddate = "" elif death: ddate = cgi.escape(DateHandler.get_date(death)) else: diff --git a/src/plugins/DefaultGramplets.py b/src/plugins/DefaultGramplets.py index c6d10062c..0e6a3c486 100644 --- a/src/plugins/DefaultGramplets.py +++ b/src/plugins/DefaultGramplets.py @@ -20,16 +20,18 @@ import sys import re import urllib import posixpath +import cgi -import gen.lib +from BasicUtils import name_displayer from DataViews import register, Gramplet from PluginUtils import * -from BasicUtils import name_displayer -from Utils import media_path_full from QuickReports import run_quick_report_by_name -import DateHandler +from ReportBase import ReportUtils from TransUtils import sgettext as _ +from Utils import media_path_full import Config +import DateHandler +import gen.lib # # Hello World, in Gramps Gramplets @@ -154,6 +156,8 @@ class LogGramplet(Gramplet): def on_load(self): if len(self.gui.data) > 0: self.show_duplicates = self.gui.data[0] + else: + self.show_duplicates = "no" def on_save(self): self.gui.data = [self.show_duplicates] @@ -454,12 +458,22 @@ class PedigreeGramplet(Gramplet): self.set_text(_("No Family Tree loaded.")) self.tooltip = _("Click name to make person active\n") + \ _("Right-click name to edit person") - self.max_generations = 100 self.set_use_markup(True) + self.max_generations = 100 + self.show_dates = 1 #self.set_option("max_generations", # NumberOption(_("Maximum generations"), # 100, -1, 500)) + def on_load(self): + if len(self.gui.data) > 0: + self.max_generations = int(self.gui.data[0]) + if len(self.gui.data) > 1: + self.show_dates = int(self.gui.data[1]) + + def on_save(self): + self.gui.data = [self.max_generations, self.show_dates] + def db_changed(self): """ If a person or family changes, the ancestors of active person might have @@ -518,13 +532,18 @@ class PedigreeGramplet(Gramplet): self.append_text(boxes) self.link(name_displayer.display_name(person.get_primary_name()), 'Person', person.handle) + if self.show_dates: + self.append_text(" ") + self.render_text(self.info_string(person)) self.append_text("\n") if generation not in self._generations: self._generations[generation] = [] self._generations[generation].append(handle) elif what == "a": self.append_text("o------") - self.render_text("%s" % name_displayer.display_name(person.get_primary_name())) + self.render_text("%s " % name_displayer.display_name(person.get_primary_name())) + if self.show_dates: + self.render_text(self.info_string(person)) self.append_text("\n") if generation not in self._generations: self._generations[generation] = [] @@ -540,6 +559,44 @@ class PedigreeGramplet(Gramplet): self.process_person(mother, generation + 1, "m") self.set_box(generation, 0) # regardless, turn off line if on + def info_string(self, person): + birth = ReportUtils.get_birth_or_fallback(self.dbstate.db, person) + if birth and birth.get_type != gen.lib.EventType.BIRTH: + sdate = DateHandler.get_date(birth) + if sdate: + bdate = "%s" % cgi.escape(sdate) + else: + bdate = "" + elif birth: + bdate = cgi.escape(DateHandler.get_date(birth)) + else: + bdate = "" + + death = ReportUtils.get_death_or_fallback(self.dbstate.db, person) + if death and death.get_type != gen.lib.EventType.DEATH: + sdate = DateHandler.get_date(death) + if sdate: + ddate = "%s" % cgi.escape(sdate) + else: + ddate = "" + elif death: + ddate = cgi.escape(DateHandler.get_date(death)) + else: + ddate = "" + + if bdate and ddate: + value = _("b. %(birthdate)s, d. %(deathdate)s") % { + 'birthdate' : bdate, + 'deathdate' : ddate + } + elif bdate: + value = _("b. %s") % (bdate) + elif ddate: + value = _("d. %s") % (ddate) + else: + value = "" + return value + def main(self): # return false finishes """ Generator which will be run in the background.