From f89ee71f28b39c56c884eb268fa2d37229d3b17a Mon Sep 17 00:00:00 2001 From: Alex Roitman Date: Sat, 15 Jan 2005 05:51:48 +0000 Subject: [PATCH] * src/plugins/GraphViz.py: Restore "Place/cause when no date" option that was available before in RelGraph; rename 'show family nodes' into 'sfn'. * src/plugins/StatisticsChart.py: Rename 'sort' into 'sortby'. svn: r3913 --- ChangeLog | 6 +++ src/plugins/GraphViz.py | 79 ++++++++++++++++++++++------------ src/plugins/StatisticsChart.py | 10 ++--- 3 files changed, 62 insertions(+), 33 deletions(-) diff --git a/ChangeLog b/ChangeLog index 74651cf8e..6f97d2c57 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-01-14 Alex Roitman + * src/plugins/GraphViz.py: Restore "Place/cause when no date" + option that was available before in RelGraph; rename 'show + family nodes' into 'sfn'. + * src/plugins/StatisticsChart.py: Rename 'sort' into 'sortby'. + 2005-01-13 Alex Roitman * src/Report.py: Typos. * src/plugins/WebPage.py: Typos. diff --git a/src/plugins/GraphViz.py b/src/plugins/GraphViz.py index 5ed97b38c..3f8e29987 100644 --- a/src/plugins/GraphViz.py +++ b/src/plugins/GraphViz.py @@ -96,7 +96,7 @@ class GraphViz: returning the list of filters. font - Font to use. arrow - Arrow styles for heads and tails. - sfa - Whether to show family nodes. + sfn - Whether to show family nodes. incid - Whether to include IDs. incda - Whether to include dates. yearso - Use years only. @@ -127,8 +127,9 @@ class GraphViz: self.includeurl = self.options_class.handler.options_dict['url'] self.colorize = self.options_class.handler.options_dict['color'] self.adoptionsdashed = self.options_class.handler.options_dict['dashedl'] - self.show_families = self.options_class.handler.options_dict['sfa'] + self.show_families = self.options_class.handler.options_dict['sfn'] self.just_year = self.options_class.handler.options_dict['yearso'] + self.placecause = self.options_class.handler.options_dict['repb'] self.font = self.options_class.handler.options_dict['font'] if self.font == 'tt': self.fontname = _TT_FONT @@ -250,21 +251,13 @@ class GraphViz: birth_handle = person.get_birth_handle() if birth_handle: birth_event = self.database.get_event_from_handle(birth_handle) - if birth_event.get_date_object().get_year_valid(): - if self.just_year: - birth = '%i' % birth_event.get_date_object().get_year() - else: - birth = birth_event.get_date() + birth = self.dump_event(birth_event) else: birth = '' death_handle = person.get_death_handle() if death_handle: death_event = self.database.get_event_from_handle(death_handle) - if death_event.get_date_object().get_year_valid(): - if self.just_year: - death = '%i' % death_event.get_date_object().get_year() - else: - death = death_event.get_date() + death = self.dump_event(death_event) else: death = '' label = label + '\\n(%s - %s)' % (birth, death) @@ -304,13 +297,7 @@ class GraphViz: m = None if m: - do = m.get_date_object() - if do: - if do.get_year_valid(): - if self.just_year: - marriage = '%i' % do.get_year() - else: - marriage = m.get_date() + marriage = self.dump_event(m) if self.includeid: marriage = marriage + " (%s)" % fid self.f.write('fontname="%s", label="%s"];\n' @@ -321,6 +308,32 @@ class GraphViz: (self.arrowheadstyle, self.arrowtailstyle)) self.f.write('style=solid];\n') + def dump_event(self,event): + """ + Compile an event label. + + Based on the data availability and preferences, we select one + of the following for a given event: + year only + complete date + place name + cause + empty string + """ + if event.get_date_object().get_year_valid(): + if self.just_year: + return '%i' % event.get_date_object().get_year() + else: + return event.get_date() + elif self.placecause: + place_handle = event.get_place_handle() + place = self.database.get_place_from_handle(place_handle) + if place and place.get_title(): + return place.get_title() + else: + return event.get_cause() + return '' + def write_header(self): """ Write header listing the options used. @@ -335,7 +348,7 @@ class GraphViz: self.f.write(" * IDs : %s\n" % bool(self.includeid)) self.f.write(" * dates : %s\n" % bool(self.includedates)) self.f.write(" * just year : %s\n" % bool(self.just_year)) -# self.f.write(" * place or cause : %s\n" % self.placecause) + self.f.write(" * place or cause : %s\n" % bool(self.placecause)) self.f.write(" * colorize : %s\n" % bool(self.colorize)) self.f.write(" * dashed adoptions : %s\n" % bool(self.adoptionsdashed)) self.f.write(" * show family nodes : %s\n" % bool(self.show_families)) @@ -369,11 +382,11 @@ class GraphVizOptions(ReportOptions.ReportOptions): self.options_dict = { 'font' : 'tt', 'arrow' : 'd', - 'sfa' : 0, + 'sfn' : 0, 'incid' : 1, 'incda' : 1, 'yearso' : 0, -# 'repb' : 1, + 'repb' : 1, 'url' : 1, 'color' : 1, 'dashedl' : 1, @@ -395,7 +408,7 @@ class GraphVizOptions(ReportOptions.ReportOptions): 'da\tDescendants <-> Ancestors', '""\tDescendants - Ancestors'], False), - 'sfa' : ("=0/1","Whether to show family nodes.", + 'sfn' : ("=0/1","Whether to show family nodes.", ["Do not show family nodes","Show family nodes"], True), 'incid' : ("=0/1","Whether to include dates.", @@ -407,9 +420,9 @@ class GraphVizOptions(ReportOptions.ReportOptions): 'yearso' : ("=0/1","Whether to use years only.", ["Do not use years only","Use years only"], True), -# 'repb' : ("=0/1","Whether to cite sources.", -# ["Do not cite sources","Cite sources"], -# True), + 'repb' : ("=0/1","Whether to replace missing dates with place/cause.", + ["Do not replace blank dates","Replace blank dates"], + True), 'url' : ("=0/1","Whether to include URLs.", ["Do not include URLs","Include URLs"], True), @@ -543,6 +556,14 @@ class GraphVizOptions(ReportOptions.ReportOptions): self.includedates_cb.connect('toggled',self.toggle_date) + self.place_cause_cb = gtk.CheckButton(_("Place/cause when no date")) + self.place_cause_cb.set_active(self.options_dict['repb']) + dialog.add_frame_option(_("GraphViz Options"), '', + self.place_cause_cb, + _("When no birth, marriage, or death date " + "is available, the correspondent place field " + "(or cause field when blank place) will be used.")) + self.includeurl_cb = gtk.CheckButton(_("Include URLs")) self.includeurl_cb.set_active(self.options_dict['url']) dialog.add_frame_option(_("GraphViz Options"), '', @@ -570,7 +591,7 @@ class GraphVizOptions(ReportOptions.ReportOptions): "as dashed lines in the graph.")) self.show_families_cb = gtk.CheckButton(_("Show family nodes")) - self.show_families_cb.set_active(self.options_dict['sfa']) + self.show_families_cb.set_active(self.options_dict['sfn']) dialog.add_frame_option(_("GraphViz Options"), '', self.show_families_cb, _("Families will show up as ellipses, linked " @@ -623,6 +644,7 @@ class GraphVizOptions(ReportOptions.ReportOptions): def toggle_date(self,obj): self.just_year_cb.set_sensitive(self.includedates_cb.get_active()) + self.place_cause_cb.set_sensitive(self.includedates_cb.get_active()) def parse_user_options(self,dialog): self.options_dict['arrow'] = \ @@ -635,8 +657,9 @@ class GraphVizOptions(ReportOptions.ReportOptions): self.options_dict['dashedl'] = int(self.adoptionsdashed_cb.get_active()) self.options_dict['pagesh'] = self.hpages_sb.get_value_as_int() self.options_dict['pagesv'] = self.hpages_sb.get_value_as_int() - self.options_dict['sfa'] = int(self.show_families_cb.get_active()) + self.options_dict['sfn'] = int(self.show_families_cb.get_active()) self.options_dict['incid'] = int(self.includeid_cb.get_active()) + self.options_dict['repb'] = int(self.place_cause_cb.get_active()) self.options_dict['font'] = \ self.font_options[self.font_box.get_active()][1] if self.handler.report_name == "rel_graph2": diff --git a/src/plugins/StatisticsChart.py b/src/plugins/StatisticsChart.py index 22a8781d2..50ba48202 100755 --- a/src/plugins/StatisticsChart.py +++ b/src/plugins/StatisticsChart.py @@ -304,7 +304,7 @@ class StatisticsChart(Report.Report): self.items = _Extract.collect_data(database, filterfun, extractfun, gender, year_from, year_to, options['no_years']) # generate sorted item lookup index index - self.index_items(options['sort'], options['reverse']) + self.index_items(options['sortby'], options['reverse']) # title needs both data extraction method name + gender name if gender == Person.male: @@ -458,7 +458,7 @@ class StatisticsChartOptions(ReportOptions.ReportOptions): # Options specific for this report self.options_dict = { 'extract' : 0, - 'sort' : _SORT_VALUE, + 'sortby' : _SORT_VALUE, 'reverse' : 0, 'year_from' : 1700, 'year_to' : time.localtime()[0], @@ -469,7 +469,7 @@ class StatisticsChartOptions(ReportOptions.ReportOptions): 'extract' : ("=num", "Data to show", [item[0] for item in _Extract.extractors], True), - 'sort' : ("=num", "Sorted by", + 'sortby' : ("=num", "Sorted by", ["%d\t%s" % item for item in self._sorts], False), 'reverse' : ("=0/1", "Whether to sort in reverse order", @@ -558,7 +558,7 @@ class StatisticsChartOptions(ReportOptions.ReportOptions): for item_idx in range(len(self._sorts)): item = self._sorts[item_idx] self.sort_menu.append_text(item[1]) - if item[0] == self.options_dict['sort']: + if item[0] == self.options_dict['sortby']: self.sort_menu.set_active(item_idx) tip = _("Select how the statistical data is sorted.") dialog.add_option(_("Sorted by"), self.sort_menu, tip) @@ -606,7 +606,7 @@ class StatisticsChartOptions(ReportOptions.ReportOptions): Parses the custom options that we have added. """ self.options_dict['extract'] = self.extract_menu.get_active() - self.options_dict['sort'] = self._sorts[self.sort_menu.get_active()][0] + self.options_dict['sortby'] = self._sorts[self.sort_menu.get_active()][0] self.options_dict['reverse'] = int(self.reverse.get_active()) self.options_dict['year_to'] = int(self.to_box.get_text()) self.options_dict['year_from'] = int(self.from_box.get_text())