add name-format option, and deferred translation to report's second line
This commit is contained in:
		@@ -4,7 +4,7 @@
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2008-2011 Reinhard Müller
 | 
			
		||||
# Copyright (C) 2010      Jakim Friant
 | 
			
		||||
# Copyright (C) 2013      Paul Franklin
 | 
			
		||||
# Copyright (C) 2013-2015 Paul Franklin
 | 
			
		||||
#
 | 
			
		||||
# 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
 | 
			
		||||
@@ -91,11 +91,13 @@ def _find_death_date(db, person):
 | 
			
		||||
    return None
 | 
			
		||||
 | 
			
		||||
def find_records(db, filter, top_size, callname,
 | 
			
		||||
                 trans_text=glocale.translation.sgettext):
 | 
			
		||||
                 trans_text=glocale.translation.sgettext, name_format=None):
 | 
			
		||||
    """
 | 
			
		||||
    @param trans_text: allow deferred translation of strings
 | 
			
		||||
    @type trans_text: a GrampsLocale sgettext instance
 | 
			
		||||
    trans_text is a defined keyword (see po/update_po.py, po/genpot.sh)
 | 
			
		||||
    :param name_format: optional format to control display of person's name
 | 
			
		||||
    :type name_format: None or int
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    today = datetime.date.today()
 | 
			
		||||
@@ -139,7 +141,8 @@ def find_records(db, filter, top_size, callname,
 | 
			
		||||
            # Birth date unknown or incomplete, so we can't calculate any age.
 | 
			
		||||
            continue
 | 
			
		||||
 | 
			
		||||
        name = _get_styled_primary_name(person, callname)
 | 
			
		||||
        name = _get_styled_primary_name(person, callname,
 | 
			
		||||
                                        name_format=name_format)
 | 
			
		||||
 | 
			
		||||
        if death_date is None:
 | 
			
		||||
            if probably_alive(person, db):
 | 
			
		||||
@@ -238,8 +241,10 @@ def find_records(db, filter, top_size, callname,
 | 
			
		||||
        mother = db.get_person_from_handle(mother_handle)
 | 
			
		||||
 | 
			
		||||
        name = StyledText(trans_text("%(father)s and %(mother)s")) % {
 | 
			
		||||
                'father': _get_styled_primary_name(father, callname),
 | 
			
		||||
                'mother': _get_styled_primary_name(mother, callname)}
 | 
			
		||||
                'father': _get_styled_primary_name(father, callname,
 | 
			
		||||
                                                   name_format=name_format),
 | 
			
		||||
                'mother': _get_styled_primary_name(mother, callname,
 | 
			
		||||
                                                   name_format=name_format)}
 | 
			
		||||
 | 
			
		||||
        _record(None, family_mostchildren,
 | 
			
		||||
                len(family.get_child_ref_list()),
 | 
			
		||||
@@ -349,7 +354,7 @@ CALLNAME_DONTUSE = 0
 | 
			
		||||
CALLNAME_REPLACE = 1
 | 
			
		||||
CALLNAME_UNDERLINE_ADD = 2
 | 
			
		||||
 | 
			
		||||
def _get_styled(name, callname, placeholder=False):
 | 
			
		||||
def _get_styled(name, callname, placeholder=False, name_format=None):
 | 
			
		||||
    """
 | 
			
		||||
    Return a StyledText object with the name formatted according to the
 | 
			
		||||
    parameters:
 | 
			
		||||
@@ -383,7 +388,11 @@ def _get_styled(name, callname, placeholder=False):
 | 
			
		||||
                        'call':  n.call,
 | 
			
		||||
                        'first': n.first_name}
 | 
			
		||||
 | 
			
		||||
    real_format = name_displayer.get_default_format()
 | 
			
		||||
    if name_format is not None:
 | 
			
		||||
        name_displayer.set_default_format(name_format)
 | 
			
		||||
    text = name_displayer.display_name(n)
 | 
			
		||||
    name_displayer.set_default_format(real_format)
 | 
			
		||||
    tags = []
 | 
			
		||||
 | 
			
		||||
    if n.call:
 | 
			
		||||
@@ -398,7 +407,8 @@ def _get_styled(name, callname, placeholder=False):
 | 
			
		||||
 | 
			
		||||
    return StyledText(text, tags)
 | 
			
		||||
 | 
			
		||||
def _get_styled_primary_name(person, callname, placeholder=False):
 | 
			
		||||
def _get_styled_primary_name(person, callname,
 | 
			
		||||
                             placeholder=False, name_format=None):
 | 
			
		||||
    """
 | 
			
		||||
    Return a StyledText object with the person's name formatted according to
 | 
			
		||||
    the parameters:
 | 
			
		||||
@@ -410,4 +420,5 @@ def _get_styled_primary_name(person, callname, placeholder=False):
 | 
			
		||||
        placeholder if first name or surname are missing.
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    return _get_styled(person.get_primary_name(), callname, placeholder)
 | 
			
		||||
    return _get_styled(person.get_primary_name(), callname,
 | 
			
		||||
                       placeholder, name_format)
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2008-2011 Reinhard Müller
 | 
			
		||||
# Copyright (C) 2010      Jakim Friant
 | 
			
		||||
# Copyright (C) 2013-2014 Paul Franklin
 | 
			
		||||
# Copyright (C) 2013-2015 Paul Franklin
 | 
			
		||||
#
 | 
			
		||||
# 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
 | 
			
		||||
@@ -84,13 +84,16 @@ class RecordsReport(Report):
 | 
			
		||||
        self._lang = options.menu.get_option_by_name('trans').get_value()
 | 
			
		||||
        self._locale = self.set_locale(self._lang)
 | 
			
		||||
 | 
			
		||||
        self._nf = stdoptions.run_name_format_option(self, menu)
 | 
			
		||||
 | 
			
		||||
    def write_report(self):
 | 
			
		||||
        """
 | 
			
		||||
        Build the actual report.
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        records = find_records(self.database, self.filter, self.top_size,
 | 
			
		||||
                               self.callname, trans_text=self._)
 | 
			
		||||
        records = find_records(self.database, self.filter,
 | 
			
		||||
                               self.top_size, self.callname,
 | 
			
		||||
                               trans_text=self._, name_format=self._nf)
 | 
			
		||||
 | 
			
		||||
        self.doc.start_paragraph('REC-Title')
 | 
			
		||||
        title = self._("Records")
 | 
			
		||||
@@ -98,25 +101,9 @@ class RecordsReport(Report):
 | 
			
		||||
        self.doc.write_text(title, mark)
 | 
			
		||||
        self.doc.end_paragraph()
 | 
			
		||||
 | 
			
		||||
        if self._lang == 'default':
 | 
			
		||||
            self.doc.start_paragraph('REC-Subtitle')
 | 
			
		||||
            self.doc.write_text(self.filter.get_name())
 | 
			
		||||
            self.doc.end_paragraph()
 | 
			
		||||
        else:
 | 
			
		||||
            # The only way which I thought of to get a desired non-English
 | 
			
		||||
            # filter name if the starting UI is a non-English one, was to
 | 
			
		||||
            # change ReportUtils.get_person_filters so that it creates the
 | 
			
		||||
            # filters with English (untranslated) names, but that would mean
 | 
			
		||||
            # changing every filter.get_name() in every place that the
 | 
			
		||||
            # get_person_filters filters are used, to always translate the
 | 
			
		||||
            # get_name, and I wasn't in the mood to do that to all of them,
 | 
			
		||||
            # so until that happen -- assuming it works, since I didn't try
 | 
			
		||||
            # it to see, since the person's name will be in get_person_filters
 | 
			
		||||
            # but the deferred translation will be where the filter.get_name()
 | 
			
		||||
            # is, so it might not work at all -- but until it does, or another
 | 
			
		||||
            # way is found, there will be no translated subtitle, only a
 | 
			
		||||
            # subtitle if the report's output is in the main/UI language
 | 
			
		||||
            pass # FIXME
 | 
			
		||||
        self.doc.start_paragraph('REC-Subtitle')
 | 
			
		||||
        self.doc.write_text(self.filter.get_name(self._locale))
 | 
			
		||||
        self.doc.end_paragraph()
 | 
			
		||||
 | 
			
		||||
        for (text, varname, top) in records:
 | 
			
		||||
            if not self.include[varname]:
 | 
			
		||||
@@ -185,6 +172,9 @@ class RecordsReportOptions(MenuReportOptions):
 | 
			
		||||
        menu.add_option(category_name, "pid", self.__pid)
 | 
			
		||||
        self.__pid.connect('value-changed', self.__update_filters)
 | 
			
		||||
 | 
			
		||||
        self._nf = stdoptions.add_name_format_option(menu, category_name)
 | 
			
		||||
        self._nf.connect('value-changed', self.__update_filters)
 | 
			
		||||
 | 
			
		||||
        self.__update_filters()
 | 
			
		||||
 | 
			
		||||
        top_size = NumberOption(_("Number of ranks to display"), 3, 1, 100)
 | 
			
		||||
@@ -218,7 +208,10 @@ class RecordsReportOptions(MenuReportOptions):
 | 
			
		||||
        """
 | 
			
		||||
        gid = self.__pid.get_value()
 | 
			
		||||
        person = self.__db.get_person_from_gramps_id(gid)
 | 
			
		||||
        filter_list = ReportUtils.get_person_filters(person, False)
 | 
			
		||||
        nfv = self._nf.get_value()
 | 
			
		||||
        filter_list = ReportUtils.get_person_filters(person,
 | 
			
		||||
                                                     include_single=False,
 | 
			
		||||
                                                     name_format=nfv)
 | 
			
		||||
        self.__filter.set_filters(filter_list)
 | 
			
		||||
 | 
			
		||||
    def __filter_changed(self):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user