Difference between revisions of "Writing a plugin"
(→Write it) |
(→Share it) |
||
(13 intermediate revisions by 4 users not shown) | |||
Line 3: | Line 3: | ||
To get started writing a plugin, please see the following tutorials: | To get started writing a plugin, please see the following tutorials: | ||
− | * [[Addons | + | * [[Addons development]] - for Gramps version 3.2/3.3 |
* [[Gramplets]] | * [[Gramplets]] | ||
* [[Quick Views]] | * [[Quick Views]] | ||
Line 12: | Line 12: | ||
* [[Simple Access API]] | * [[Simple Access API]] | ||
* [[Using database API]] | * [[Using database API]] | ||
− | * [[Getting | + | * [[Getting started with GRAMPS development]] |
+ | * [[Report_API|Report API]] | ||
+ | * [[Report_Generation|Report Generation]] | ||
+ | |||
+ | == Test it == | ||
+ | |||
+ | * See [[Unit_Test_Quickstart|Unit Test Quickstart]] | ||
+ | * Check syntax issues with [http://gramps-project.org/wiki/index.php?title=Programming_Guidelines#Pylint pylint] | ||
+ | |||
+ | There is some samples of tests for localized [[Relationship_Calculator#Tests|Relationships calculators]] or [[Date_Handler#How_to_test_a_date_handler_for_your_locale|Date handlers]]: | ||
+ | if __name__ == "__main__": | ||
+ | # Test function. Call it as follows from the command line (so as to find | ||
+ | # imported modules): | ||
+ | # export PYTHONPATH=/path/to/gramps/src | ||
+ | # python src/plugins/rel/rel_it.py | ||
+ | |||
+ | """TRANSLATORS, copy this if statement at the bottom of your | ||
+ | rel_xx.py module, and test your work with: | ||
+ | python src/plugins/rel/rel_xx.py | ||
+ | """ | ||
+ | from Relationship import test | ||
+ | RC = RelationshipCalculator() | ||
+ | test(RC, True) | ||
+ | |||
+ | def _test(rc, onlybirth, inlawa, inlawb, printrelstr): | ||
+ | """ this is a generic test suite for the singular relationship | ||
+ | TRANSLATORS: do NOT translate, use __main__ ! | ||
+ | """ | ||
+ | import sys | ||
+ | import random | ||
+ | ... | ||
+ | |||
+ | cd /home/me/grampssvn | ||
+ | export PYTHONPATH=/home/me/grampssvn/src | ||
+ | python src/plugins/rel/rel_it.py | ||
+ | |||
+ | cd /home/me/grampssvn | ||
+ | export PYTHONPATH=/home/me/grampssvn/src | ||
+ | pylint src/plugins/rel/rel_it.py > /home/me/grampssvn/src/plugins/rel/it.txt | ||
== Share it== | == Share it== | ||
Line 20: | Line 58: | ||
* Create a filename.tar.gz or filename.zip file of your plugin code | * Create a filename.tar.gz or filename.zip file of your plugin code | ||
* Upload the code to this wiki | * Upload the code to this wiki | ||
− | * Add an entry of your plugin to [[ | + | * Add an entry of your plugin to [[Plugins3.4]]. See [[Plugin list legend]] for meaning of columns. Please use these meanings and pay attention to details; this page is machine readable. |
* Create a new wiki page, and refer to that page here, with a short description of what the plugin does | * Create a new wiki page, and refer to that page here, with a short description of what the plugin does | ||
− | == Internationalize it (3. | + | == Internationalize it (3.2 and later) == |
− | This section describes a method of internationalizing your code for versions of Gramps 3. | + | This section describes a method of internationalizing your code for versions of Gramps 3.2 and later. The previous section describes a new method for Gramps 3.1 and earlier. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Please see [[Addons development]] for complete details. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Also, have a look at [[Coding_for_translation#Tips_for_writing_a_translatable_report|Coding for translation]]. | Also, have a look at [[Coding_for_translation#Tips_for_writing_a_translatable_report|Coding for translation]]. | ||
Line 58: | Line 71: | ||
==== Pitfalls ==== | ==== Pitfalls ==== | ||
* We support right to left languages like Arabic, so never constructs text parts by concatenation of pieces. Always use full sentences/paragraphs with variable substitution, so that a right to left language can translate it correctly. | * We support right to left languages like Arabic, so never constructs text parts by concatenation of pieces. Always use full sentences/paragraphs with variable substitution, so that a right to left language can translate it correctly. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
[[Category:Developers/General]] [[Category:Plugins]] [[Category:Developers/Tutorials]] | [[Category:Developers/General]] [[Category:Plugins]] [[Category:Developers/Tutorials]] |
Revision as of 10:46, 8 September 2012
Write it
To get started writing a plugin, please see the following tutorials:
- Addons development - for Gramps version 3.2/3.3
- Gramplets
- Quick Views
- Report-writing tutorial
For more general GRAMPS development information, see:
- Simple Access API
- Using database API
- Getting started with GRAMPS development
- Report API
- Report Generation
Test it
- See Unit Test Quickstart
- Check syntax issues with pylint
There is some samples of tests for localized Relationships calculators or Date handlers:
if __name__ == "__main__": # Test function. Call it as follows from the command line (so as to find # imported modules): # export PYTHONPATH=/path/to/gramps/src # python src/plugins/rel/rel_it.py """TRANSLATORS, copy this if statement at the bottom of your rel_xx.py module, and test your work with: python src/plugins/rel/rel_xx.py """ from Relationship import test RC = RelationshipCalculator() test(RC, True) def _test(rc, onlybirth, inlawa, inlawb, printrelstr): """ this is a generic test suite for the singular relationship TRANSLATORS: do NOT translate, use __main__ ! """ import sys import random ...
cd /home/me/grampssvn export PYTHONPATH=/home/me/grampssvn/src python src/plugins/rel/rel_it.py
cd /home/me/grampssvn export PYTHONPATH=/home/me/grampssvn/src pylint src/plugins/rel/rel_it.py > /home/me/grampssvn/src/plugins/rel/it.txt
Have you written a plugin for GRAMPS you want to share with the world? Here's how you do it:
- Add the correct license. GRAMPS is GPLv2, you use the GRAMPS plugin system, so make sure you have the correct license at the top of your file. See Howto: Contribute to GRAMPS
- Create a filename.tar.gz or filename.zip file of your plugin code
- Upload the code to this wiki
- Add an entry of your plugin to Plugins3.4. See Plugin list legend for meaning of columns. Please use these meanings and pay attention to details; this page is machine readable.
- Create a new wiki page, and refer to that page here, with a short description of what the plugin does
Internationalize it (3.2 and later)
This section describes a method of internationalizing your code for versions of Gramps 3.2 and later. The previous section describes a new method for Gramps 3.1 and earlier.
Please see Addons development for complete details.
Also, have a look at Coding for translation.
Pitfalls
- We support right to left languages like Arabic, so never constructs text parts by concatenation of pieces. Always use full sentences/paragraphs with variable substitution, so that a right to left language can translate it correctly.