|
|
(114 intermediate revisions by 9 users not shown) |
Line 1: |
Line 1: |
− | [[Image:DescendantsLines.png|thumb|300px|Lines of descendants chart]]
| + | #REDIRECT[[Addon:DescendantsLines]] |
− | [[Image:DescendantsLines-m-ep-.png|thumb|300px|DescendantsLines, Left-aligned text style, example Gramps data, inc_marriages and inc_places.]]
| |
− | [[Image:JohnShakespeare-DescendantsLines.png|thumb|300px|Shakespeare family tree, DescendantsLines, inc_marriages]]
| |
− | [[Image:JohnShakespeare-DescendantsLines-ep.png|thumb|300px|Shakespeare family tree, DescendantsLines, Left-aligned text style, including event places]]
| |
− | '''DescendantsLines''' is an in-development addon for Gramps which generates a graphical descendants tree using orthogonal edges and routing ("square edges").
| |
− | | |
− | == Characteristics ==
| |
− | DescendantsLines presents an orthogonal family tree, currently in vertical mode only. In DescendantsLines, vertical mode, children in a family are ordered from left to right following the Gramps child order; and families are ordered right to left, top to bottom, following the Gramps family order.
| |
− | | |
− | == History ==
| |
− | 2007: Adam Sampson has written a standalone python script for parsing data.gramps ([[GRAMPS XML]]). [http://offog.org/darcs/misccode/familytree]
| |
− | | |
− | 2010: this script needs some updates for avoiding minor issues.
| |
− | | |
− | A modified script is available on the addons repository. [http://gramps-addons.svn.sourceforge.net/viewvc/gramps-addons/trunk/contrib/DescendantsLines/]
| |
− | | |
− | == Libraries ==
| |
− | The program DescendantsLines, as the script in which it is based, is written in Python, using PyCairo and the Python XML library. Many Gramps modules are also used.
| |
− | | |
− | == Current limitations ==
| |
− | <!-- # No option for name display format -->
| |
− | # Partial quoting of xml-syntax-like data. Data which resembles xml syntax (tags, etc) may cause error.
| |
− | # Script ignores role on event (was added in 2007)
| |
− | # Script ignores localized date handlers (using ISO date format, date quality in english)
| |
− | # Memory limitation with a large database (DOM parsing)
| |
− | # The last pixel column of each secondary line of each entry is wrong coloured (red instead black)
| |
− | # The addon DescendantsLines does not use the Gramps document interface. (perhaps the Gramps document interface options should be hidden)
| |
− | # DestinationOption does not have the usual error handling and user checking (e.g. for overwriting files)
| |
− | # Size limit: Cairo surface size limit. (32767 for height and 32767 for width [http://comments.gmane.org/gmane.comp.lib.cairo/21068])
| |
− | # Some PDF output size limit (currently crossing this limit will result in an empty PDF file)
| |
− | | |
− | == Installation ==
| |
− | === Gramps 3.3 version ===
| |
− | The Gramps 3.3 version of DescendantsLines can be installed through the Gramps Plugin Manager.
| |
− | | |
− | === Gramps 3.4 version ===
| |
− | To use the Gramps 3.4 version of DescendantsLines, on Gramps Trunk, now gramps34:
| |
− | # Create the directory $GRAMPSHOME/gramps/gramps34/plugins/DescendantsLines/ .
| |
− | # Copy the files DescendantsLines.py and DescendantsLines.gpr.py from Gramps-addons trunk svn to the directory $GRAMPSHOME/gramps/gramps34/plugins/DescendantsLines/ .
| |
− | | |
− | == Usage ==
| |
− | | |
− | # 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.
| |
− | # 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 edges from descendant to spouse-bar
| |
− | * S_UP - The length of the vertical edges from spouse-bar to spouse
| |
− | * S_VPAD - Length of vertical padding spacing between spouse and spouse-bar (?)
| |
− | * FL_PAD - Length of padding spacing between S_UP edges (vertical edges from spouse-bar to spouse) and O_DOWN edges (vertical edges from spouse-bar to child-bar)
| |
− | * OL_PAD
| |
− | * O_DOWN - The length of the vertical edges from spouse-bar to child-bar
| |
− | * C_PAD - Length of padding spacing between children
| |
− | * F_PAD - Length of padding spacing between families (?)
| |
− | * C_UP - The length of the vertical edges from child to child-bar
| |
− | * SP_PAD - Length of padding spacing between spouses
| |
− | * MIN_C_WIDTH
| |
− | * TEXT_PAD
| |
− | * TEXT_LINE_PAD
| |
− | * output_fmt - The output format (PNG, SVG, PDF or PS)
| |
− | * output_fn - The output filename
| |
− | * max_gen - Maximum number of generations to include. (0 for unlimited)
| |
− | * use_colors - Whether to use colored names indicating person gender in the output.
| |
− | * name_format - The name format
| |
− | * inc_places - Whether to include event places in the output
| |
− | * inc_marriages - Whether to include marriage information in the output
| |
− | * inc_dnum - Whether to use d'Aboville descendant numbering system
| |
− | * style - The predefined output style
| |
− | | |
− | There are option and tree combinations which may generate overlapping edges and nodes. If using the inc_marriages option the S_DOWN - S_UP difference may need to be increased by 5-15 units depending on the tree.
| |
− | | |
− | === Examples ===
| |
− | * [[File:DescendantsLines-m-ep.pdf]] -- DescendantsLines, example Gramps data, inc_marriages and inc_places, PDF output.
| |
− | * [[File:DescendantsLines-left.pdf]] -- DescendantsLines, Left-aligned text style, example Gramps data, use_colors, inc_marriages and inc_places, PDF output.
| |
− | * [[File:Charlemagne-DescendantsLines.pdf]] -- DescendantsLines addon, inc_marriages and inc_places, PDF output, presenting a family tree of Charlemagne starting from Chloderic King of Cologne.
| |
− | * [[File:PepinOfHerstal-DescendantsLines-left-dnum.pdf]] --DescendantsLines Gramps addon, Left-aligned text style, d'Aboville numbering (inc_dnum), descendants of Pepin of Herstal or Pepin II, PDF output. Data from http://www.genealogyforum.com/gedcom/gedr1434.htm.
| |
− | | |
− | == Tree compression and or modification==
| |
− | SVG format trees can be compressed and or modified manually using the program Inkscape, using the select and path tools; or using other SVG manipulating program. PNG format trees can be compressed manually by manipulating the image.
| |
− | | |
− | == Development ==
| |
− | There is an in-development migration of this Gtk/cairo code to a draw plugin working into Gramps (font, style, path, canvas, output formats). This migration, DescendantsLines, does not use the Document interface of Gramps.
| |
− | | |
− | Draft version is available on [[Addons_development|Addons]] repository. [http://gramps-addons.svn.sourceforge.net/viewvc/gramps-addons/trunk/contrib/DescendantsLines/]
| |
− | | |
− | The idea is keeping Gramps XML parsing, but with a copy of the active database and use of current report environment (output formats, style, path).
| |
− | | |
− | === Ideas ===
| |
− | | |
− | * Add option to include event places. (done in Gramps-addons)
| |
− | * Add option to include marriage information. (done in Gramps-addons)
| |
− | * Using the library get_event_or_fallback() methods from gen.utils. (done in Gramps-addons)
| |
− | * Add optional generation limit. (done in Gramps-addons)
| |
− | * Make the XML export smaller. Use filter. (done in Gramps-addons)
| |
− | * Add option for output format. (PNG, SVG, PDF or PS) (done in Gramps-addons)
| |
− | * Add boolean option use_colors. (done in Gramps-addons)
| |
− | * Use gen.display.name.displayer. (done in Gramps-addons)
| |
− | * Add option for name display format. (done in Gramps-addons trunk)
| |
− | * Add style variables and option, ref. text alignment, etc. (done in Gramps-addons)
| |
− | * Use Gramps family order. (done in Gramps-addons)
| |
− | * Add option to use d'Aboville descendants numbering system. (done in Gramps-addons trunk)
| |
− | * Think of optional tree compression algorithms.
| |
− | * Add option to include divorces.
| |
− | * Add option to include spouse parents.
| |
− | * Add option to include spouse ancestries.
| |
− | ** Add option to include arbitrary spouse ancestries.
| |
− | * Add option to include notes.
| |
− | * Add option to include sources.
| |
− | * Add option to include images.
| |
− | | |
− | The hardcoded number option limits can be altered by users, by altering the code.
| |
− | | |
− | === Needs ===
| |
− | | |
− | ==== Pass 1: generate a tmp XML with only data needed for the report, to load it as input ====
| |
− | | |
− | # Enable Person selection (Gramps ID) - ''done''
| |
− | # Generate a temp Gramps XML database matching 'IsDescendantFamilyOf' filter rule - ''done''
| |
− | # Input path - ''done'' (need to set ''@prefix@'': ''path_to_SVN/src'' on ''const.py'')
| |
− | # 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).
| |
− | <!--* 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 .-->
| |
− | | |
− | | |
− | '''FINISHED''' - it works fine!
| |
− | | |
− | ==== Pass 2: use draw report environment ====
| |
− | | |
− | # Generate a plugins/docgen/PNGDrawDoc.py file [http://www.gramps-project.org/bugs/view.php?id=4447]
| |
− | # Move Gtk code to draw report (if possible)
| |
− | # Move cairo code to draw report (if possible)
| |
− | # Output path
| |
− | # Clean-up, pylint, etc ...
| |
− | | |
− | ==== Pass 2 (Alternate): use of user-defined (mega)-widgets ====
| |
− | | |
− | # Have a look at mega-widget request and implementation [http://www.gramps-project.org/bugs/view.php?id=2393]
| |
− | # Output path through mega-widget
| |
− | # Clean-up, pylint, etc ...
| |
− | | |
− | ==== Pass 2 (Alternate): use a DestinationOption ====
| |
− | | |
− | # Use a DestinationOption
| |
− | # Ignore standard Filename option [http://www.gramps-project.org/bugs/view.php?id=5545]
| |
− | | |
− | == Command Line Interface ==
| |
− | | |
− | Gramps provides a cli support for running reports and tools [http://www.gramps-project.org/wiki/index.php?title=Gramps_3.2_Wiki_Manual_-_Command_Line].
| |
− | | |
− | * use stdin and stdout for command line import/export [http://www.gramps-project.org/bugs/view.php?id=4114]
| |
− | | |
− | | |
− | | |
− | | |
− | Feel free to contribute or improve it.
| |
− | | |
− | == See also ==
| |
− | * [[Addon:Family Tree]] - generates horizontal orthogonal graphical trees.
| |
− | | |
− | [[Category:Plugins]]
| |
− | [[Category:Developers/General]]
| |