Difference between revisions of "DescendantsLines"

From Gramps
Jump to: navigation, search
(Usage)
(maintenance)
Line 18: Line 18:
  
 
== Usage ==
 
== Usage ==
# Copy the files DescendantsLines.py and DescendantsLines.gpr.py from svn to your Gramps plugins directory, in this case $GRAMPSHOME/gramps/gramps33/plugins .
+
# Create the directory $GRAMPSHOME/gramps/gramps34/plugins/DescendantsLines/ .
# Create the directory $GRAMPSHOME/gramps/gramps33/plugins/DescendantsLines/ .
+
# Copy the files DescendantsLines.py and DescendantsLines.gpr.py from svn to the directory $GRAMPSHOME/gramps/gramps34/plugins/DescendantsLines/ .
# Open Gramps and generate the report -- Reports -> Graphical Reports -> Descendants Lines. Choose the output path. This output path will contain an empty file after the report is run.
+
# Open Gramps and generate the report -- Reports -> Graphical Reports -> Descendants Lines. Choose the output path on "Destination" (default $GRAMPSHOME/DescendantsLines.png). The "Filename" option will contain an empty file after the report is run.
# Look at the file $GRAMPSHOME/DescendantsLines.png. That's the real output. The path for the output is hardcoded.
 
# Rename the file DescendantsLines.png to something else, move it or remove it in order to run the plugin again.
 
 
# The script currently runs in "debug mode" so it generates copious terminal output such as "Unknown event type: ..." or "Unknown spouse: ...". These warnings are harmless.
 
# The script currently runs in "debug mode" so it generates copious terminal output such as "Unknown event type: ..." or "Unknown spouse: ...". These warnings are harmless.
 +
 +
=== Options ===
 +
The options for the addon DescendantsLines are:
 +
* S_DOWN - The length of the vertical edge from descendant to spouse-bar
 +
* S_UP - The length of the vertical edge from spouse-bar to spouse
 +
* S_VPAD
 +
* FL_PAD
 +
* OL_PAD
 +
* O_DOWN - The length of the vertical edge from spouse-bar to child-bar
 +
* C_PAD
 +
* F_PAD
 +
* C_UP - The length of the vertical edge from child to child-bar
 +
* SP_PAD
 +
* MIN_C_WIDTH
 +
* TEXT_PAD
 +
* TEXT_LINE_PAD
  
 
=== Example ===
 
=== Example ===
Line 47: Line 61:
 
* key/filter issues remain, currently export all persons to XML file.
 
* key/filter issues remain, currently export all persons to XML file.
 
* 'localized' dates (does not follow last DTD, which uses english and ISO format).
 
* 'localized' dates (does not follow last DTD, which uses english and ISO format).
* a basic persons list print for draw report: this avoids empty returns when generating the report and could help to check what is missing (see above).
+
<!--* a basic persons list print for draw report: this avoids empty returns when generating the report and could help to check what is missing (see above).
* output path and format are hardcoded: $GRAMPSHOME/DescendantsLines.png .
+
* output path and format are hardcoded: $GRAMPSHOME/DescendantsLines.png .-->
  
  
Line 67: Line 81:
 
# Clean-up, pylint, etc ...  
 
# Clean-up, pylint, etc ...  
  
 +
==== Pass 2 (Alternate): use a DestinationOption ====
 +
# Use a DestinationOption
 +
# Ignore standard Filename option
  
 
== Command Line Interface ==
 
== Command Line Interface ==

Revision as of 08:35, 14 January 2012

Lines of descendants chart

DescendantsLines is an in-development plugin for Gramps which generates a graphical descendants tree using orthogonal edges and routing ("square 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

  1. No option for name display format
  2. No quoting of xml-tag-like data. Data which resembles xml syntax may cause error.
  3. Script ignores role on event (was added in 2007)
  4. Script ignores localized date handlers (using ISO date format, date quality in english)
  5. Memory limitation with a large database (DOM parsing)
  6. The last pixel column of each secondary line of each entry is wrong coloured (red instead black)

Usage

  1. Create the directory $GRAMPSHOME/gramps/gramps34/plugins/DescendantsLines/ .
  2. Copy the files DescendantsLines.py and DescendantsLines.gpr.py from svn to the directory $GRAMPSHOME/gramps/gramps34/plugins/DescendantsLines/ .
  3. Open Gramps and generate the report -- Reports -> Graphical Reports -> Descendants Lines. Choose the output path on "Destination" (default $GRAMPSHOME/DescendantsLines.png). The "Filename" option will contain an empty file after the report is run.
  4. The script currently runs in "debug mode" so it generates copious terminal output such as "Unknown event type: ..." or "Unknown spouse: ...". These warnings are harmless.

Options

The options for the addon DescendantsLines are:

  • S_DOWN - The length of the vertical edge from descendant to spouse-bar
  • S_UP - The length of the vertical edge from spouse-bar to spouse
  • S_VPAD
  • FL_PAD
  • OL_PAD
  • O_DOWN - The length of the vertical edge from spouse-bar to child-bar
  • C_PAD
  • F_PAD
  • C_UP - The length of the vertical edge from child to child-bar
  • SP_PAD
  • MIN_C_WIDTH
  • TEXT_PAD
  • TEXT_LINE_PAD

Example

Development

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 unstable (beta). [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: generate a tmp XML with only data needed for the report, to load it as input

  1. Enable Person selection (Gramps ID) - done
  2. Generate a temp Gramps XML database matching 'IsDescendantFamilyOf' filter rule - done
  3. Input path - done (need to set @prefix@: path_to_SVN/src on const.py)
  4. Clean-up - done
  • simple Gramps XML template with events, persons, families objects (only export primary event role reference).
  • key/filter issues remain, currently export all persons to XML file.
  • 'localized' dates (does not follow last DTD, which uses english and ISO format).


FINISHED - it works fine!

Pass 2: use draw report environment

  1. Generate a plugins/docgen/PNGDrawDoc.py file [4]
  2. Move Gtk code to draw report (if possible)
  3. Move cairo code to draw report (if possible)
  4. Output path
  5. Clean-up, pylint, etc ...

Pass 2 (Alternate): use of user-defined (mega)-widgets

  1. Have a look at mega-widget request and implementation [5]
  2. Output path through mega-widget
  3. Clean-up, pylint, etc ...

Pass 2 (Alternate): use a DestinationOption

  1. Use a DestinationOption
  2. Ignore standard Filename option

Command Line Interface

Gramps provides a cli support for running reports and tools [6].

  • use stdin and stdout for command line import/export [7]



Feel free to contribute or improve it.