3273: Standard position for child-list descendant numbering in DDR, by lcc
svn: r13382
This commit is contained in:
		@@ -43,7 +43,8 @@ from BasicUtils import name_displayer as _nd
 | 
			
		||||
from Errors import ReportError
 | 
			
		||||
from gen.lib import FamilyRelType, Person
 | 
			
		||||
from gen.plug import PluginManager
 | 
			
		||||
from gen.plug.menu import BooleanOption, NumberOption, PersonOption
 | 
			
		||||
from gen.plug.menu import (BooleanOption, NumberOption, PersonOption, 
 | 
			
		||||
                           EnumeratedListOption)
 | 
			
		||||
from gen.plug.docgen import (IndexMark, FontStyle, ParagraphStyle, 
 | 
			
		||||
                             FONT_SANS_SERIF, FONT_SERIF, 
 | 
			
		||||
                             INDEX_TYPE_TOC, PARA_ALIGN_CENTER)
 | 
			
		||||
@@ -92,8 +93,8 @@ class DetDescendantReport(Report):
 | 
			
		||||
        blankDate     - Whether to replace missing Dates with ___________.
 | 
			
		||||
        calcageflag   - Whether to compute age.
 | 
			
		||||
        dubperson     - Whether to omit duplicate ancestors (e.g. when distant cousins mary).
 | 
			
		||||
        verbose       - Whether to use complete sentences
 | 
			
		||||
        record_num    - Whether to use Record-style numbering instead of Henry-style.
 | 
			
		||||
        verbose       - Whether to use complete sentences.
 | 
			
		||||
        numbering     - The descendency numbering system to be utilized.
 | 
			
		||||
        childref      - Whether to add descendant references in child list.
 | 
			
		||||
        addimages     - Whether to include images.
 | 
			
		||||
        pid           - The Gramps ID of the center person for the report.
 | 
			
		||||
@@ -114,7 +115,7 @@ class DetDescendantReport(Report):
 | 
			
		||||
        self.calcageflag   = menu.get_option_by_name('computeage').get_value()
 | 
			
		||||
        self.dubperson     = menu.get_option_by_name('omitda').get_value()
 | 
			
		||||
        self.verbose       = menu.get_option_by_name('verbose').get_value()
 | 
			
		||||
        self.record_num    = menu.get_option_by_name('record_num').get_value()
 | 
			
		||||
        self.numbering     = menu.get_option_by_name('numbering').get_value()
 | 
			
		||||
        self.childref      = menu.get_option_by_name('desref').get_value()
 | 
			
		||||
        self.addimages     = menu.get_option_by_name('incphotos').get_value()
 | 
			
		||||
        self.inc_names     = menu.get_option_by_name('incnames').get_value()
 | 
			
		||||
@@ -168,6 +169,28 @@ class DetDescendantReport(Report):
 | 
			
		||||
                                  pid+HENRY[index], cur_gen+1)
 | 
			
		||||
                index += 1
 | 
			
		||||
 | 
			
		||||
    # Filter for d'Aboville numbering
 | 
			
		||||
    def apply_daboville_filter(self,person_handle, index, pid, cur_gen=1):
 | 
			
		||||
        if (not person_handle) or (cur_gen > self.max_generations):
 | 
			
		||||
            return
 | 
			
		||||
        self.dnumber[person_handle] = pid
 | 
			
		||||
        self.map[index] = person_handle
 | 
			
		||||
 | 
			
		||||
        if len(self.gen_keys) < cur_gen:
 | 
			
		||||
            self.gen_keys.append([index])
 | 
			
		||||
        else: 
 | 
			
		||||
            self.gen_keys[cur_gen-1].append(index)
 | 
			
		||||
 | 
			
		||||
        person = self.database.get_person_from_handle(person_handle)
 | 
			
		||||
        index = 1
 | 
			
		||||
        for family_handle in person.get_family_handle_list():
 | 
			
		||||
            family = self.database.get_family_from_handle(family_handle)
 | 
			
		||||
            for child_ref in family.get_child_ref_list():
 | 
			
		||||
                ix = max(self.map)
 | 
			
		||||
                self.apply_daboville_filter(child_ref.ref, ix+1,
 | 
			
		||||
                                  pid+"."+str(index), cur_gen+1)
 | 
			
		||||
                index += 1
 | 
			
		||||
 | 
			
		||||
    # Filter for Record-style (Modified Register) numbering
 | 
			
		||||
    def apply_mod_reg_filter_aux(self, person_handle, index, cur_gen=1):
 | 
			
		||||
        if (not person_handle) or (cur_gen > self.max_generations):
 | 
			
		||||
@@ -200,10 +223,14 @@ class DetDescendantReport(Report):
 | 
			
		||||
        """
 | 
			
		||||
        This function is called by the report system and writes the report.
 | 
			
		||||
        """
 | 
			
		||||
        if self.record_num:
 | 
			
		||||
        if self.numbering == "Henry":
 | 
			
		||||
            self.apply_henry_filter(self.center_person.get_handle(), 1, "1")
 | 
			
		||||
        elif self.numbering == "d'Aboville":
 | 
			
		||||
            self.apply_daboville_filter(self.center_person.get_handle(), 1, "1")
 | 
			
		||||
        elif self.numbering == "Record (Modified Register)":
 | 
			
		||||
            self.apply_mod_reg_filter(self.center_person.get_handle())
 | 
			
		||||
        else:
 | 
			
		||||
            self.apply_henry_filter(self.center_person.get_handle(), 1, "1")
 | 
			
		||||
            raise AttributeError("no such numbering: '%s'" % self.numbering)
 | 
			
		||||
 | 
			
		||||
        name = _nd.display_name(self.center_person.get_primary_name())
 | 
			
		||||
 | 
			
		||||
@@ -502,16 +529,18 @@ class DetDescendantReport(Report):
 | 
			
		||||
                value = str(self.prev_gen_handles.get(child_handle))
 | 
			
		||||
                child_name += " [%s]" % value
 | 
			
		||||
 | 
			
		||||
            self.doc.start_paragraph("DDR-ChildList",
 | 
			
		||||
            if child_handle in self.dnumber:
 | 
			
		||||
                self.doc.start_paragraph("DDR-ChildList",
 | 
			
		||||
                        str(self.dnumber[child_handle])
 | 
			
		||||
                        + " "
 | 
			
		||||
                        + ReportUtils.roman(cnt).lower()
 | 
			
		||||
                        + ".")
 | 
			
		||||
            else:
 | 
			
		||||
                self.doc.start_paragraph("DDR-ChildList",
 | 
			
		||||
                                     ReportUtils.roman(cnt).lower() + ".")
 | 
			
		||||
            cnt += 1
 | 
			
		||||
 | 
			
		||||
            if child_handle in self.dnumber:
 | 
			
		||||
                self.doc.write_text("%s [%s]. " % (child_name,
 | 
			
		||||
                                                   self.dnumber[child_handle]),
 | 
			
		||||
                                    child_mark )
 | 
			
		||||
            else:
 | 
			
		||||
                self.doc.write_text("%s. " % child_name, child_mark)
 | 
			
		||||
            self.doc.write_text("%s. " % child_name, child_mark)
 | 
			
		||||
                
 | 
			
		||||
            self.doc.write_text(ReportUtils.born_str( self.database, child, 0, 
 | 
			
		||||
                          self.verbose, self.EMPTY_DATE, self.EMPTY_PLACE))
 | 
			
		||||
@@ -741,6 +770,15 @@ class DetDescendantOptions(MenuReportOptions):
 | 
			
		||||
        pid.set_help(_("The center person for the report"))
 | 
			
		||||
        menu.add_option(category_name, "pid", pid)
 | 
			
		||||
        
 | 
			
		||||
        numbering = EnumeratedListOption(_("Numbering system"), "Henry")
 | 
			
		||||
        numbering.set_items([
 | 
			
		||||
                ("Henry",      _("Henry numbering")), 
 | 
			
		||||
                ("d'Aboville", _("d'Aboville numbering")), 
 | 
			
		||||
                ("Record (Modified Register)", 
 | 
			
		||||
                               _("Record (Modified Register) numbering"))])
 | 
			
		||||
        numbering.set_help(_("The numbering system to be used"))
 | 
			
		||||
        menu.add_option(category_name, "numbering", numbering)
 | 
			
		||||
        
 | 
			
		||||
        generations = NumberOption(_("Generations"), 10, 1, 100)
 | 
			
		||||
        generations.set_help(_("The number of generations to include in the " \
 | 
			
		||||
                               "report"))
 | 
			
		||||
@@ -751,13 +789,6 @@ class DetDescendantOptions(MenuReportOptions):
 | 
			
		||||
                     _("Whether to start a new page after each generation."))
 | 
			
		||||
        menu.add_option(category_name, "pagebbg", pagebbg)
 | 
			
		||||
 | 
			
		||||
        record_num = BooleanOption(_("Use Record-style (Modified Register) " \
 | 
			
		||||
                                     "numbering"),
 | 
			
		||||
                                   False)
 | 
			
		||||
        record_num.set_help(_("Whether to use Record-style numbering instead" \
 | 
			
		||||
                              " of Henry-style."))
 | 
			
		||||
        menu.add_option(category_name, "record_num", record_num)
 | 
			
		||||
        
 | 
			
		||||
        category_name = _("Content")
 | 
			
		||||
 | 
			
		||||
        usecall = BooleanOption(_("Use callname for common name"), False)
 | 
			
		||||
@@ -781,7 +812,7 @@ class DetDescendantOptions(MenuReportOptions):
 | 
			
		||||
        omitda.set_help(_("Whether to omit duplicate ancestors."))
 | 
			
		||||
        menu.add_option(category_name, "omitda", omitda)
 | 
			
		||||
        
 | 
			
		||||
        verbose = BooleanOption(_("Use Complete Sentences"), True)
 | 
			
		||||
        verbose = BooleanOption(_("Use complete sentences"), True)
 | 
			
		||||
        verbose.set_help(
 | 
			
		||||
                 _("Whether to use complete sentences or succinct language."))
 | 
			
		||||
        menu.add_option(category_name, "verbose", verbose)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user