Difference between revisions of "DescendantsLines"
(maintenance) |
m (Gramps XML) |
||
| (25 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
[[Image:DescendantsLines.png|thumb|300px|Lines of descendants chart]] | [[Image:DescendantsLines.png|thumb|300px|Lines of descendants chart]] | ||
| − | [[Image:DescendantsLines-m-ep-.png|thumb|300px|DescendantsLines, example Gramps data, inc_marriages and inc_places.]] | + | [[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]] | + | [[Image:JohnShakespeare-DescendantsLines.png|thumb|300px|Shakespeare family tree, DescendantsLines, inc_marriages]] |
| − | [[Image:JohnShakespeare-DescendantsLines-ep.png|thumb|300px|Shakespeare family tree, DescendantsLines, including event places]] | + | [[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"). | '''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 == | == History == | ||
| − | 2007: Adam Sampson has written a standalone python script for parsing data.gramps ([[ | + | 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. | 2010: this script needs some updates for avoiding minor issues. | ||
| Line 24: | Line 27: | ||
# The addon DescendantsLines does not use the Gramps document interface. (perhaps the Gramps document interface options should be hidden) | # 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) | # 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 == | == Installation == | ||
| Line 48: | Line 50: | ||
* S_VPAD - Length of vertical padding spacing between spouse and spouse-bar (?) | * 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) | * 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 | + | * OL_PAD - |
* O_DOWN - The length of the vertical edges from spouse-bar to child-bar | * O_DOWN - The length of the vertical edges from spouse-bar to child-bar | ||
* C_PAD - Length of padding spacing between children | * C_PAD - Length of padding spacing between children | ||
| Line 54: | Line 56: | ||
* C_UP - The length of the vertical edges from child to child-bar | * C_UP - The length of the vertical edges from child to child-bar | ||
* SP_PAD - Length of padding spacing between spouses | * SP_PAD - Length of padding spacing between spouses | ||
| − | * MIN_C_WIDTH | + | * MIN_C_WIDTH - Minimal width of child cells |
| − | * TEXT_PAD | + | * TEXT_PAD - Length of text padding |
| − | * TEXT_LINE_PAD | + | * TEXT_LINE_PAD - Length of text line padding |
* output_fmt - The output format (PNG, SVG, PDF or PS) | * output_fmt - The output format (PNG, SVG, PDF or PS) | ||
* output_fn - The output filename | * output_fn - The output filename | ||
| Line 64: | Line 66: | ||
* inc_places - Whether to include event places in the output | * inc_places - Whether to include event places in the output | ||
* inc_marriages - Whether to include marriage information 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 | * style - The predefined output style | ||
| Line 72: | Line 75: | ||
* [[File:DescendantsLines-left.pdf]] -- DescendantsLines, Left-aligned text style, example Gramps data, use_colors, 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: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 == | == Development == | ||
| Line 88: | Line 95: | ||
* Make the XML export smaller. Use filter. (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 option for output format. (PNG, SVG, PDF or PS) (done in Gramps-addons) | ||
| − | * Add option use_colors. (done in Gramps-addons) | + | * Add boolean option use_colors. (done in Gramps-addons) |
* Use gen.display.name.displayer. (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 option for name display format. (done in Gramps-addons trunk) | ||
| − | * Add style variables and option, ref. text alignment, etc. (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. | * Think of optional tree compression algorithms. | ||
* Add option to include divorces. | * Add option to include divorces. | ||
| Line 97: | Line 106: | ||
* Add option to include spouse ancestries. | * Add option to include spouse ancestries. | ||
** Add option to include arbitrary spouse ancestries. | ** Add option to include arbitrary spouse ancestries. | ||
| + | * Add option to include arbitrary ancestries. | ||
* Add option to include notes. | * Add option to include notes. | ||
* Add option to include sources. | * Add option to include sources. | ||
* Add option to include images. | * 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. | The hardcoded number option limits can be altered by users, by altering the code. | ||
| Line 138: | Line 154: | ||
# Use a DestinationOption | # Use a DestinationOption | ||
| − | # Ignore standard Filename option | + | # Ignore standard Filename option [http://www.gramps-project.org/bugs/view.php?id=5545] |
== Command Line Interface == | == Command Line Interface == | ||
| − | Gramps provides a cli support for running reports and tools [ | + | Gramps provides a cli support for running reports and tools [[Gramps_3.4_Wiki_Manual_-_Command_Line|Gramps 3.4 Wiki Manual - Command Line]]. |
| − | + | ||
| − | + | ||
| − | + | ||
| + | * {{bug|4114}}: Would like to use stdin and stdout for command line import/export. | ||
Feel free to contribute or improve it. | Feel free to contribute or improve it. | ||
| + | == See also == | ||
| + | * [[Addon:Family Tree]] - generates horizontal orthogonal graphical trees. | ||
| + | * [[Addon:TimelinePedigreeView]] - displays horizontal orthogonal graphical trees. | ||
[[Category:Plugins]] | [[Category:Plugins]] | ||
[[Category:Developers/General]] | [[Category:Developers/General]] | ||
| + | [[Category:Reports]] | ||
Latest revision as of 01:38, 11 February 2013
DescendantsLines is an in-development addon for Gramps which generates a graphical descendants tree using orthogonal edges and routing ("square edges").
Contents |
[edit] 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.
[edit] 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]
[edit] 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.
[edit] Current limitations
- 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 [3])
- Some PDF output size limit (currently crossing this limit will result in an empty PDF file)
[edit] Installation
[edit] Gramps 3.3 version
The Gramps 3.3 version of DescendantsLines can be installed through the Gramps Plugin Manager.
[edit] 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/ .
[edit] 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.
[edit] 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 - Minimal width of child cells
- TEXT_PAD - Length of text padding
- TEXT_LINE_PAD - Length of text line padding
- 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.
[edit] 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.
[edit] 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.
[edit] 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 repository. [4]
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).
[edit] 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 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.
[edit] Needs
[edit] 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).
- 'localized' dates (does not follow last DTD, which uses english and ISO format).
FINISHED - it works fine!
[edit] Pass 2: use draw report environment
- Generate a plugins/docgen/PNGDrawDoc.py file [5]
- Move Gtk code to draw report (if possible)
- Move cairo code to draw report (if possible)
- Output path
- Clean-up, pylint, etc ...
[edit] Pass 2 (Alternate): use of user-defined (mega)-widgets
- Have a look at mega-widget request and implementation [6]
- Output path through mega-widget
- Clean-up, pylint, etc ...
[edit] Pass 2 (Alternate): use a DestinationOption
- Use a DestinationOption
- Ignore standard Filename option [7]
[edit] Command Line Interface
Gramps provides a cli support for running reports and tools Gramps 3.4 Wiki Manual - Command Line.
- 4114: Would like to use stdin and stdout for command line import/export.
Feel free to contribute or improve it.
[edit] See also
- Addon:Family Tree - generates horizontal orthogonal graphical trees.
- Addon:TimelinePedigreeView - displays horizontal orthogonal graphical trees.