Difference between revisions of "DescendantsLines"

From Gramps
Jump to: navigation, search
(Needs)
(Needs)
Line 20: Line 20:
  
 
=== Needs ===
 
=== Needs ===
 +
 +
==== Pass 1 ====
 
# Enable Person selection (Gramps ID) - ''done''
 
# Enable Person selection (Gramps ID) - ''done''
 
# Generate a temp Gramps XML database matching 'IsDescendantFamilyOf' filter rule - ''done''
 
# Generate a temp Gramps XML database matching 'IsDescendantFamilyOf' filter rule - ''done''
 
# Input path - ''done''
 
# Input path - ''done''
 +
 +
* simple Gramps XML template with events, persons, families objects (only export primary event role reference).
 +
* 'localized' dates (does not follow last DTD, which uses english and ISO format)
 +
* a basic descendant families textual print for draw reports: this avoids empty returns when generating reports.
 +
''TODO'': need to fix duplicated families on generated XML file. - ''done'' - next revision
 +
fams = self.database.get_family_handles()
 +
        for child in ind_list:
 +
            person = self.database.get_person_from_handle(child)
 +
            # only family where person is the children
 +
            for handle in person.get_parent_family_handle_list():
 +
                fam = self.database.get_family_from_handle(handle)
 +
                if handle in fams:
 +
                    self.write_xml_family(fam)
 +
                    fams.remove(handle)
 +
 +
'''FINISHED''' - it works fine!
 +
 +
==== Pass 2 ====
 +
 
# Move Gtk code to draw report (if possible)
 
# Move Gtk code to draw report (if possible)
 
# Move cairo code to draw report (if possible)
 
# Move cairo code to draw report (if possible)
Line 28: Line 49:
 
# Clean-up, pylint, etc ...
 
# Clean-up, pylint, etc ...
  
* simple Gramps XML template with events, persons, families objects (only export primary event role reference).
 
* 'localized' dates (does not follow last DTD, which uses english and ISO format)
 
* a basic descendant families textual print for draw reports: this avoids empty returns when generating reports.
 
''TODO'': need to fix duplicated families on generated XML file.
 
  
 
Feel free to contribute or improve it.
 
Feel free to contribute or improve it.

Revision as of 08:15, 10 December 2010

Lines of descendants chart

DescendantsLines is an in-development plugin for Gramps which generates a graphical descendants tree using orthogonal edges.

History

2007: Adam Sampson has written a standalone python script for parsing data.gramps (GRAMPS XML). [1]

2010: this script needs some updates for avoiding minor issues.

A modified script is available on the addons repository. [2]

Limitations

The code ignores role on event (was added in 2007).

Descendants Lines

There is an experimental try for migrating this Gtk/cairo code to a draw plugin working into Gramps (font, style, path, canvas, output formats).

Draft version is available on Addons repository as very unstable (alpha). [3]

The idea will be to keep the Gramps XML parsing, but with a copy of the active database and use of current report environment (output formats, style, path).

Needs

Pass 1

  1. Enable Person selection (Gramps ID) - done
  2. Generate a temp Gramps XML database matching 'IsDescendantFamilyOf' filter rule - done
  3. Input path - done
  • simple Gramps XML template with events, persons, families objects (only export primary event role reference).
  • 'localized' dates (does not follow last DTD, which uses english and ISO format)
  • a basic descendant families textual print for draw reports: this avoids empty returns when generating reports.

TODO: need to fix duplicated families on generated XML file. - done - next revision

fams = self.database.get_family_handles()
       for child in ind_list:
           person = self.database.get_person_from_handle(child)
           # only family where person is the children
           for handle in person.get_parent_family_handle_list():
               fam = self.database.get_family_from_handle(handle)
               if handle in fams:
                   self.write_xml_family(fam)
                   fams.remove(handle)

FINISHED - it works fine!

Pass 2

  1. Move Gtk code to draw report (if possible)
  2. Move cairo code to draw report (if possible)
  3. Output path
  4. Clean-up, pylint, etc ...


Feel free to contribute or improve it.