diff --git a/gramps/gen/plug/report/stdoptions.py b/gramps/gen/plug/report/stdoptions.py index 65a05c697..c6be1b10f 100644 --- a/gramps/gen/plug/report/stdoptions.py +++ b/gramps/gen/plug/report/stdoptions.py @@ -194,9 +194,11 @@ def run_living_people_option(report, menu, llocale=glocale): :param llocale: allow deferred translation of "[Living]" :type llocale: a :class:`.GrampsLocale` instance """ - living_people = menu.get_option_by_name('living_people').get_value() + option = menu.get_option_by_name('living_people') + living_value = option.get_value() years_past_death = menu.get_option_by_name('years_past_death').get_value() - if living_people != LivingProxyDb.MODE_INCLUDE_ALL: - report.database = LivingProxyDb(report.database, living_people, + if living_value != LivingProxyDb.MODE_INCLUDE_ALL: + report.database = LivingProxyDb(report.database, living_value, years_after_death=years_past_death, llocale=llocale) + return option diff --git a/gramps/plugins/drawreport/statisticschart.py b/gramps/plugins/drawreport/statisticschart.py index c02c56ec3..8dcf26db6 100644 --- a/gramps/plugins/drawreport/statisticschart.py +++ b/gramps/plugins/drawreport/statisticschart.py @@ -730,31 +730,40 @@ class StatisticsChart(Report): database - the GRAMPS database instance options - instance of the Options class for this report user - a gen.user.User() instance - + incl_private - Whether to include private data + living_people - How to handle living people + years_past_death - Consider as living this many years after death """ Report.__init__(self, database, options, user) menu = options.menu self._user = user - stdoptions.run_private_data_option(self, menu) - - get_option_by_name = menu.get_option_by_name - get_value = lambda name: get_option_by_name(name).get_value() - lang = menu.get_option_by_name('trans').get_value() rlocale = self.set_locale(lang) # override default gettext, or English output will have "person|Title" self._ = rlocale.translation.sgettext - self.filter_option = get_option_by_name('filter') - self.filter = self.filter_option.get_filter() - filter_name = self.filter.get_name(rlocale) + stdoptions.run_private_data_option(self, menu) + living_opt = stdoptions.run_living_people_option(self, menu, rlocale) + + get_option_by_name = menu.get_option_by_name + get_value = lambda name: get_option_by_name(name).get_value() + + filter_opt = get_option_by_name('filter') + self.filter = filter_opt.get_filter() + self.fil_name = self.filter.get_name(rlocale) self.bar_items = get_value('bar_items') year_from = get_value('year_from') year_to = get_value('year_to') gender = get_value('gender') + living_value = get_value('living_people') + for (value, description) in living_opt.get_items(): + if value == living_value: + self.living_desc = '(%s)' % self._(description) + break + # title needs both data extraction method name + gender name if gender == Person.MALE: genders = self._("Men") @@ -780,7 +789,7 @@ class StatisticsChart(Report): # extract requested items from the database and count them self._user.begin_progress(_('Statistics Charts'), _('Collecting data...'), - database.get_number_of_people()) + self.database.get_number_of_people()) tables = _Extract.collect_data(self.database, self.filter, menu, gender, year_from, year_to, get_value('no_years'), @@ -799,7 +808,7 @@ class StatisticsChart(Report): # document heading heading = "%(str1)s -- %(str2)s" % {'str1' : self._(table[0]), 'str2' : span_string} - self.data.append((heading, filter_name, table[0], table[1], lookup)) + self.data.append((heading, table[0], table[1], lookup)) self._user.step_progress() self._user.end_progress() @@ -831,15 +840,15 @@ class StatisticsChart(Report): self.doc.draw_text('SC-title', '', 0, 0, mark) # put it in TOC mark = None # crock, but we only want one of them if len(data[3]) < self.bar_items: - self.output_piechart(*data[:5]) + self.output_piechart(*data[:4]) else: - self.output_barchart(*data[:5]) + self.output_barchart(*data[:4]) self.doc.end_page() self._user.step_progress() self._user.end_progress() - def output_piechart(self, title1, title2, typename, data, lookup): + def output_piechart(self, title1, typename, data, lookup): # set layout variables middle_w = self.doc.get_usable_width() / 2 @@ -852,7 +861,9 @@ class StatisticsChart(Report): mark = IndexMark(title1, INDEX_TYPE_TOC, 2) self.doc.center_text('SC-title', title1, middle_w, 0, mark) yoffset = ReportUtils.pt2cm(pstyle.get_font().get_size()) - self.doc.center_text('SC-title', title2, middle_w, yoffset) + self.doc.center_text('SC-title', self.fil_name, middle_w, yoffset) + yoffset = 2 * ReportUtils.pt2cm(pstyle.get_font().get_size()) + self.doc.center_text('SC-title', self.living_desc, middle_w, yoffset) # collect data for output color = 0 @@ -880,7 +891,7 @@ class StatisticsChart(Report): draw_legend(self.doc, legendx, yoffset, chart_data, text, 'SC-legend') - def output_barchart(self, title1, title2, typename, data, lookup): + def output_barchart(self, title1, typename, data, lookup): pt2cm = ReportUtils.pt2cm style_sheet = self.doc.get_style_sheet() @@ -907,8 +918,10 @@ class StatisticsChart(Report): mark = IndexMark(title1, INDEX_TYPE_TOC, 2) self.doc.center_text('SC-title', title1, middle, 0, mark) yoffset = pt2cm(pstyle.get_font().get_size()) - self.doc.center_text('SC-title', title2, middle, yoffset) + self.doc.center_text('SC-title', self.fil_name, middle, yoffset) yoffset = 2 * pt2cm(pstyle.get_font().get_size()) + self.doc.center_text('SC-title', self.living_desc, middle, yoffset) + yoffset = 3 * pt2cm(pstyle.get_font().get_size()) # header yoffset += (row_h + pad) @@ -975,6 +988,15 @@ class StatisticsChartOptions(MenuReportOptions): stdoptions.add_private_data_option(menu, category_name) + stdoptions.add_living_people_option(menu, category_name) + + stdoptions.add_localization_option(menu, category_name) + + ################################ + category_name = _("Report Details") + add_option = partial(menu.add_option, category_name) + ################################ + sortby = EnumeratedListOption(_('Sort chart items by'), _options.SORT_VALUE) for item_idx in range(len(_options.opt_sorts)): @@ -1018,8 +1040,6 @@ class StatisticsChartOptions(MenuReportOptions): "used instead of a bar chart.")) add_option("bar_items", bar_items) - stdoptions.add_localization_option(menu, category_name) - # ------------------------------------------------- # List of available charts on separate option tabs idx = 0