Difference between revisions of "DescendantsLines"

From Gramps
Jump to: navigation, search
(Issues)
(swap content with other page)
(Tag: New redirect)
 
(66 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{Third-party plugin}}
+
#REDIRECT[[Addon:DescendantsLines]]
 
 
[[Image:DescendantsLines.png|thumb|right|450px|Lines of descendants chart]]
 
[[Image:DescendantsLines-m-ep-.png|thumb|right|450px|DescendantsLines, Left-aligned text style, example Gramps data, inc_marriages and inc_places.]]
 
[[Image:JohnShakespeare-DescendantsLines.png|thumb|right|450px|Shakespeare family tree, DescendantsLines, inc_marriages]]
 
[[Image:JohnShakespeare-DescendantsLines-ep.png|thumb|right|450px|Shakespeare family tree, DescendantsLines, Left-aligned text style, including event places]]
 
 
 
'''DescendantsLines''' is an addon for Gramps which generates a graphical descendants tree using orthogonal edges and routing ("square edges").
 
 
 
DescendantsLines presents an orthogonal family tree, 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.
 
 
 
== Usage ==
 
 
 
* Open Gramps
 
* Select the report using the menu option {{man menu|Reports -> Graphical Reports -> Descendants Lines...}}
 
* Choose the output path for the {{man label|Destination:}} <code>$GRAMPSHOME/Descendants Lines.png</code>(default).
 
** Note: That ''Document Options'' {{man label|Filename:}} option will contain an empty file after the report is run.
 
* Note: If the script is run in "debug mode" it generates copious terminal output such as "Unknown event type: ..." or "Unknown spouse: ...". These warnings are harmless.
 
 
 
=== Options ===
 
 
 
DescendantsLines has the following option tabs available to change:
 
 
 
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.
 
 
 
==== Paper Options ====
 
 
 
==== Report Options ====
 
* 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)
 
{{stub}}
 
 
 
==== Display ====
 
 
 
* name_format - The name format
 
* inc_dnum - Whether to use d'Aboville descendant numbering system
 
* use_colors - Whether to use colored names indicating person gender in the output.
 
 
 
* text style - The predefined output style
 
{{stub}}
 
* inc_places - Whether to include event places in the output
 
* inc_marriages - Whether to include marriage information in the output
 
 
 
==== Replace ====
 
 
 
* Replace Display Format:  'Replace this'/'with this': ie: United States of America/USA
 
==== S & F Options ====
 
 
 
* 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 (?)
 
* SP_PAD - Length of padding spacing between spouses
 
* F_PAD - Length of padding spacing between families (?)
 
* 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)
 
 
 
==== O, C & Text Options ====
 
 
 
* OL_PAD - The number of ??? pad
 
* O_DOWN - The length of the vertical edges from spouse-bar to child-bar
 
* C_PAD - Length of padding spacing between children
 
* C_UP - The length of the vertical edges from child to child-bar
 
* MIN_C_WIDTH - Minimal width of child cells
 
* TEXT_PAD - Length of text padding
 
* TEXT_LINE_PAD - Length of text line padding
 
 
 
=== 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 Charlemagne GEDCOM at 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.
 
 
 
== Installation ==
 
=== Gramps 5.x version ===
 
Installed through the Gramps Plugin Manager.
 
 
 
=== Gramps 4.x version ===
 
Installed through the Gramps Plugin Manager.
 
 
 
=== 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/ .
 
 
 
== 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.  [https://github.com/gramps-project/addons-source/tree/master/DescendantsLines addons-source/tree/master/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 ===
 
Feel free to contribute or improve DescendantsLines.
 
 
 
* 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 arbitrary ancestries.
 
* Add option to include notes.
 
* Add option to include sources.
 
* Add option to include images.
 
* Add horizontal mode.
 
* Add optional text wrap width.
 
* Add optional text width with use of ellipses.
 
* Cairo provides hyperlink support. Names could be hyperlinks to html complete individual reports or to web report pages.
 
* This addon may with time become a general orthogonal family tree drawing resource for Gramps, for a View, etc., and outside Gramps as well. The PyCairo code can be connected to a view.
 
* The hardcoded number option limits can be altered by users, by altering the code.
 
 
 
* <s>Add option to include event places.</s>(done in Gramps-addons)
 
* <s>Add option to include marriage information.</s> (done in Gramps-addons)
 
* <s>Using the library get_event_or_fallback() methods from gen.utils.</s> (done in Gramps-addons)
 
* <s>Add optional generation limit.</s> (done in Gramps-addons)
 
* <s>Make the XML export smaller. Use filter.</s> (done in Gramps-addons)
 
* <s>Add option for output format. (PNG, SVG, PDF or PS)</s> (done in Gramps-addons)
 
* <s>Add boolean option use_colors.</s> (done in Gramps-addons)
 
* <s>Use gen.display.name.displayer.</s> (done in Gramps-addons)
 
* <s>Add option for name display format.</s> (done in Gramps-addons trunk)
 
* <s>Add style variables and option, ref. text alignment, etc.</s> (done in Gramps-addons)
 
* <s>Use Gramps family order.</s> (done in Gramps-addons)
 
* <s>Add option to use d'Aboville descendants numbering system.</s> (done in Gramps-addons trunk)
 
 
 
==== Command Line Interface ====
 
 
 
Gramps provides a cli support for running reports and tools [[Gramps 5.0 Wiki Manual - Command Line]].
 
 
 
* {{bug|4114}}: Would like to use stdin and stdout for command line import/export.
 
 
 
=== Current limitations ===
 
* The addon DescendantsLines does not use the Gramps document interface (''Document Options''). (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)
 
* 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)
 
* 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)
 
 
 
=== 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 {{bug|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 {{bug|2393}}
 
# Output path through mega-widget
 
# Clean-up, pylint, etc ...
 
 
 
==== Pass 2 (Alternate): use a DestinationOption ====
 
 
 
# Use a DestinationOption
 
# Ignore standard Filename option {{bug|5545}}
 
 
 
=== Development 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://sourceforge.net/p/gramps-addons/code/HEAD/tree/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.
 
 
 
== Issues ==
 
* See [[DescendantsLines#Current_limitations|Current limitations]]
 
 
 
* {{bug|5545}}  Add a way for CATEGORY_DRAW reports to turn Gramps Document Interface Options off
 
* {{bug|5823}} DescendentsLines does not display a marriage date when one spouse is unknown
 
* {{bug|5965}} report produced with stale name from previous gramps session
 
* {{bug|10390}} Display options in DescendantsLines graphical report do not work as advertised
 
 
 
* Help button does not link here.
 
 
 
== See also ==
 
* [[Addon:Family Tree]] - generates horizontal orthogonal graphical trees.
 
* [[Addon:TimelinePedigreeView]] - displays horizontal orthogonal graphical trees.
 
 
 
[[Category:Plugins]]
 
[[Category:Developers/General]]
 
[[Category:Reports]]
 

Latest revision as of 00:13, 17 January 2022