https://gramps-project.org/wiki/api.php?action=feedcontributions&user=PaulFranklin&feedformat=atomGramps - User contributions [en]2024-03-29T15:15:22ZUser contributionsMediaWiki 1.31.3https://gramps-project.org/wiki/index.php?title=What_to_do_for_a_release&diff=64622What to do for a release2017-09-23T04:13:12Z<p>PaulFranklin: /* Announcing the new release */</p>
<hr />
<div>{{man note|Developer notes for '''What to do for a release '''}}<br />
<br />
Note that the main use of this page will be for making<br />
a normal "minor" release. If you are making a "major"<br />
release (e.g. x.y.0) then you will need to update this<br />
page first, to change the numbers. But if you are only<br />
making an "alpha" or "beta" release, some<br />
steps may be skipped, or altered slightly.<br />
<br />
Note also that<br />
there are additional things which need to be done,<br />
which are related to making a new release, for instance<br />
making a new release-section here on the wiki, or<br />
making a new release-section on the bug tracker, or<br />
making new Debian and Mac and Windows packages, so<br />
they will need to be coordinated with the appropriate<br />
people. Probably there should be a section of this<br />
page which lists things like that ("Post-release" maybe?).<br />
<br />
==Prepare your repository==<br />
* Check out the current stable branch:<br />
git checkout maintenance/gramps{{Stable_branch}}<br />
:That branch name assumes that you're using the same name as the Github repository; if you're not (perhaps you don't use <code>maintenance</code> in the name) use your local name.<br />
* Make sure that your local copy is clean:<br />
git status<br />
: If you have any uncommitted changes, either commit them now or stash them until after you've completed the release.<br />
* Clean up any untracked files and make sure that the local repo is up to date:<br />
git clean -fdx<br />
git pull --rebase<br />
:If you had commits that hadn't been pushed yet they'll show up as "applying" messages in the output of this command. If that's the case re-run the tests and push as usual.<br />
* Build and test to make sure that everything works, then clean the repo of all build products.<br />
<br />
==Translation update==<br />
* Check for new files since the last release:<br />
cd po<br />
intltool-update -m <br />
:That will create a file called <code>missing</code>in the <code>po</code> directory if there are new files that need to be scanned for translatable strings. Examine each of the files listed in <code>missing</code>, adding each to <code>POTFILES.in</code> if it contains translatable string constants and to <code>POTFILES.skip</code> if it does not.<br />
* Generate a new template file:<br />
python3 update_po.py -p # makes a new gramps.pot template file<br />
git diff gramps.pot<br />
:Examine the changes. If they're all just comments about where a string is found you need not commit the change (so the next line will restore the official file, instead of the one you just made):<br />
git checkout gramps.pot<br />
:If there have been changes on <code>msgid</code> entries, you'll need to commit <code>gramps.pot</code> and ask translators to update their <tt>.po</tt> files before you can make a release:<br />
git add gramps.pot<br />
git commit -m "Update translation template for new release."<br />
<br />
* Check current translation files (there must be no 'fatal' errors):<br />
python3 update_po.py -k all<br />
<br />
* if all is well, return to the root directory:<br />
cd ..<br />
<br />
==Release name==<br />
Refer to (and update) the [[Previous releases of Gramps|list of previous releases]]. Previously you needed to select an appropriate name but we have not named releases for several years now. You will<br />
still need to add the release though, including things like its<br />
relevant color.<br />
<br />
==Changelog and NEWS file==<br />
<br />
[https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html#section2 Section ''2a''] of the '''G'''eneral '''P'''ublic '''L'''icense says that if you distribute a modified version of a program: ''you must cause the modified files to carry prominent notices stating that you changed the files and the date of any change''. <br />
<br />
Note that the <code>{{version}}</code> below means the ''previous'' version, not the one you're about to release (which is the<br />
<code>..</code>).<br />
git log v{{version}}.. --pretty --numstat --summary --no-merges | git2cl > ChangeLog<br />
git log v{{version}}.. --pretty --numstat --summary --no-merges -- po/*.po | git2cl > po/ChangeLog<br />
git add ChangeLog <br />
*Edit and update the <code>NEWS</code> file using the new ChangeLog entries as a guide. If this is the first branch in a new series there will be no NEWS file, so look at a previous release and mimic the format.<br />
Commit the NEWS file:<br />
git add NEWS<br />
git commit -m "Update NEWS for {{version}} release"<br />
<br />
==Working on VERSION==<br />
<br />
* Check that the <code>VERSION_TUPLE</code> in <code>[https://github.com/gramps-project/gramps/blob/master/gramps/version.py gramps/version.py]</code>reflects the release you're about to make. It should if the version was bumped after the last release. If not, fix it.<br />
<br />
* Modify <code>[https://github.com/gramps-project/gramps/blob/master/gramps/gen/const.py#L132 gramps/gen/const.py]</code> to indicate an official release:<br />
- VERSION += git_revision<br />
+ #VERSION += git_revision<br />
<br />
* Save the changes:<br />
git commit -am "Release Gramps {{version}}"<br />
<br />
* Check that the version number is correct:<br />
python3 Gramps.py -v<br />
<br />
* If everything looks good, push the changes:<br />
git push origin maintenance/gramps{{Stable_branch}}<br />
* If that fails then someone pushed a commit while you were working. Return to [https://gramps-project.org/wiki/index.php?title=What_to_do_for_a_release#Prepare_your_repository Prepare your repository] and start over.<br />
<br />
==Create a tag==<br />
Create the release tag; note the '''v''' leading the actual tag.:<br />
git tag -am "Tag {{version}}" v{{version}}<br />
<br />
==Push to repository==<br />
Push the changes to the repository:<br />
git push origin v{{version}}<br />
<br />
===Move to the new release number on branch ===<br />
<br />
Bump the version number in <code>gramps/version.py</code><br />
<br />
Update the version for the release:<br />
VERSION_TUPLE = (4, 2, ...)<br />
<br />
Revert change on <code>gramps/gen/const.py</code> so that the git revision is appended to the reported version in non-release builds:<br />
- #VERSION += get_git_revision<br />
+ VERSION += get_git_revision<br />
<br />
Save change:<br />
git commit -am "bump to <new version number>"<br />
git push<br />
<br />
===Github===<br />
* Github generates a tarball automatically when we push a tag.<br />
* Go to [https://github.com/gramps-project/gramps Github] and log in if necessary.<br />
* Select '''NN Releases''' from the line of items just above the thick line ('''NN''' is the number of releases so far).<br />
* Find the tag you just pushed and click Edit.<br />
* Copy the NEWS file contents into the '''Write''' tab. You can use the '''Preview''' tab to check your formatting.<br />
* Click '''Publish Release''' at the bottom of the edit area when you're satisfied with the contents.<br />
<br />
===SourceForge===<br />
* Go to [https://sourceforge.net/projects/gramps/files/ the SourceForge files page] and log in if necessary.<br />
* Click on '''Stable''' or '''Unstable''' depending on the class of the release you're making.<br />
* Click '''Add Folder''' and name the directory for the release version. Click "'Create'". Click your new folder to enter it.<br />
* You can either download the Github-generated tarball or create one locallly:<br />
python3 setup.py sdist<br />
* Click '''Add File''' and drag the tarball to the drop area on the web page.<br />
<br />
==Announcing the new release==<br />
* update mantisdb(Bug/issue database) and enable the new version via Admin:Projects item for reporting issues. (You will need a high-enough status on the bug tracker in order to do this, so you can ask an appropriate person if you aren't.)<br />
* announce on gramps-announce@lists.sourceforge.net, gramps-devel@lists.sourceforge.net and gramps-users@lists.sourceforge.net (You will need to be a member of all three lists first, to send to them.)<br />
* announce on Gramps [https://gramps-project.org/introduction-WP/blog/ blog] (File under: [https://gramps-project.org/introduction-WP/category/releases/ Gramps Releases] and [https://gramps-project.org/introduction-WP/category/news/ News]) (not needed for an alpha or beta release)<br />
* update [[News]] section on this wiki (not needed for an alpha or beta release)<br />
* update the list of [[Previous releases of Gramps|previous releases]]<br />
* update reference to the new version on the [[Template:Version|wiki template]] (not needed for an alpha or beta release)<br />
* update [[HeadlineNews]] (not needed for an alpha or beta release)<br />
* change the topic on the IRC channel #gramps (not needed for an alpha or beta release)<br />
<code> /TOPIC #gramps Welcome to Gramps! The latest versions are {{version}} and the legacy 3.4.9 || http://www.gramps-project.org/ || Please state OS and Gramps version when asking a question. Understand that replies can take up to 2 days depending on whose watching the channel. Please consider asking on the gramps-users mailing list. </code><br />
* update the version number at [http://en.wikipedia.org/wiki/Gramps Wikipedia] (not needed for an alpha or beta release)<br />
<br />
==Post-release==<br />
* merge forward the <code>NEWS</code> file<br />
<br />
=See also=<br />
* [[Git|Brief introduction to Git]]<br />
* [[Running a development version of Gramps]]<br />
* [[:Category:Developers/Packaging]]<br />
* [[GrampsAIO-4 package updating]] - Updating the MS-Windows package<br />
* [[:Category:AppData]] - Screenshots used by Appdata - Debian<br />
<br />
=External links=<br />
* https://github.com/gramps-project<br />
* http://gramps-project.org/cpanel<br />
* http://svn.code.sf.net/p/gramps/code/<br />
* http://sourceforge.net/projects/gramps/<br />
<br />
[[Category:Developers/General]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=What_to_do_for_a_release&diff=64613What to do for a release2017-09-16T04:46:54Z<p>PaulFranklin: /* Announcing the new release */</p>
<hr />
<div>{{man note|Developer notes for '''What to do for a release '''}}<br />
<br />
Note that the main use of this page will be for making<br />
a normal "minor" release. If you are making a "major"<br />
release (e.g. x.y.0) then you will need to update this<br />
page first, to change the numbers. But if you are only<br />
making an "alpha" or "beta" release, some<br />
steps may be skipped, or altered slightly.<br />
<br />
Note also that<br />
there are additional things which need to be done,<br />
which are related to making a new release, for instance<br />
making a new release-section here on the wiki, or<br />
making a new release-section on the bug tracker, or<br />
making new Debian and Mac and Windows packages, so<br />
they will need to be coordinated with the appropriate<br />
people. Probably there should be a section of this<br />
page which lists things like that ("Post-release" maybe?).<br />
<br />
==Prepare your repository==<br />
* Check out the current stable branch:<br />
git checkout maintenance/gramps{{Stable_branch}}<br />
:That branch name assumes that you're using the same name as the Github repository; if you're not (perhaps you don't use <code>maintenance</code> in the name) use your local name.<br />
* Make sure that your local copy is clean:<br />
git status<br />
: If you have any uncommitted changes, either commit them now or stash them until after you've completed the release.<br />
* Clean up any untracked files and make sure that the local repo is up to date:<br />
git clean -fdx<br />
git pull --rebase<br />
:If you had commits that hadn't been pushed yet they'll show up as "applying" messages in the output of this command. If that's the case re-run the tests and push as usual.<br />
* Build and test to make sure that everything works, then clean the repo of all build products.<br />
<br />
==Translation update==<br />
* Check for new files since the last release:<br />
cd po<br />
intltool-update -m <br />
:That will create a file called <code>missing</code>in the <code>po</code> directory if there are new files that need to be scanned for translatable strings. Examine each of the files listed in <code>missing</code>, adding each to <code>POTFILES.in</code> if it contains translatable string constants and to <code>POTFILES.skip</code> if it does not.<br />
* Generate a new template file:<br />
python3 update_po.py -p # makes a new gramps.pot template file<br />
git diff gramps.pot<br />
:Examine the changes. If they're all just comments about where a string is found you need not commit the change (so the next line will restore the official file, instead of the one you just made):<br />
git checkout gramps.pot<br />
:If there have been changes on <code>msgid</code> entries, you'll need to commit <code>gramps.pot</code> and ask translators to update their <tt>.po</tt> files before you can make a release:<br />
git add gramps.pot<br />
git commit -m "Update translation template for new release."<br />
<br />
* Check current translation files (there must be no 'fatal' errors):<br />
python3 update_po.py -k all<br />
<br />
* if all is well, return to the root directory:<br />
cd ..<br />
<br />
==Release name==<br />
Refer to (and update) the [[Previous releases of Gramps|list of previous releases]]. Previously you needed to select an appropriate name but we have not named releases for several years now. You will<br />
still need to add the release though, including things like its<br />
relevant color.<br />
<br />
==Changelog and NEWS file==<br />
<br />
[https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html#section2 Section ''2a''] of the '''G'''eneral '''P'''ublic '''L'''icense says that if you distribute a modified version of a program: ''you must cause the modified files to carry prominent notices stating that you changed the files and the date of any change''. <br />
<br />
Note that the <code>{{version}}</code> below means the ''previous'' version, not the one you're about to release (which is the<br />
<code>..</code>).<br />
git log v{{version}}.. --pretty --numstat --summary --no-merges | git2cl > ChangeLog<br />
git log v{{version}}.. --pretty --numstat --summary --no-merges -- po/*.po | git2cl > po/ChangeLog<br />
git add ChangeLog <br />
*Edit and update the <code>NEWS</code> file using the new ChangeLog entries as a guide. If this is the first branch in a new series there will be no NEWS file, so look at a previous release and mimic the format.<br />
Commit the NEWS file:<br />
git add NEWS<br />
git commit -m "Update NEWS for {{version}} release"<br />
<br />
==Working on VERSION==<br />
<br />
* Check that the <code>VERSION_TUPLE</code> in <code>[https://github.com/gramps-project/gramps/blob/master/gramps/version.py gramps/version.py]</code>reflects the release you're about to make. It should if the version was bumped after the last release. If not, fix it.<br />
<br />
* Modify <code>[https://github.com/gramps-project/gramps/blob/master/gramps/gen/const.py#L132 gramps/gen/const.py]</code> to indicate an official release:<br />
- VERSION += git_revision<br />
+ #VERSION += git_revision<br />
<br />
* Save the changes:<br />
git commit -am "Release Gramps {{version}}"<br />
<br />
* Check that the version number is correct:<br />
python3 Gramps.py -v<br />
<br />
* If everything looks good, push the changes:<br />
git push origin maintenance/gramps{{Stable_branch}}<br />
* If that fails then someone pushed a commit while you were working. Return to [https://gramps-project.org/wiki/index.php?title=What_to_do_for_a_release#Prepare_your_repository Prepare your repository] and start over.<br />
<br />
==Create a tag==<br />
Create the release tag; note the '''v''' leading the actual tag.:<br />
git tag -am "Tag {{version}}" v{{version}}<br />
<br />
==Push to repository==<br />
Push the changes to the repository:<br />
git push origin v{{version}}<br />
<br />
===Move to the new release number on branch ===<br />
<br />
Bump the version number in <code>gramps/version.py</code><br />
<br />
Update the version for the release:<br />
VERSION_TUPLE = (4, 2, ...)<br />
<br />
Revert change on <code>gramps/gen/const.py</code> so that the git revision is appended to the reported version in non-release builds:<br />
- #VERSION += get_git_revision<br />
+ VERSION += get_git_revision<br />
<br />
Save change:<br />
git commit -am "bump to <new version number>"<br />
git push<br />
<br />
===Github===<br />
* Github generates a tarball automatically when we push a tag.<br />
* Go to [https://github.com/gramps-project/gramps Github] and log in if necessary.<br />
* Select '''NN Releases''' from the line of items just above the thick line ('''NN''' is the number of releases so far).<br />
* Find the tag you just pushed and click Edit.<br />
* Copy the NEWS file contents into the '''Write''' tab. You can use the '''Preview''' tab to check your formatting.<br />
* Click '''Publish Release''' at the bottom of the edit area when you're satisfied with the contents.<br />
<br />
===SourceForge===<br />
* Go to [https://sourceforge.net/projects/gramps/files/ the SourceForge files page] and log in if necessary.<br />
* Click on '''Stable''' or '''Unstable''' depending on the class of the release you're making.<br />
* Click '''Add Folder''' and name the directory for the release version. Click "'Create'". Click your new folder to enter it.<br />
* You can either download the Github-generated tarball or create one locallly:<br />
python3 setup.py sdist<br />
* Click '''Add File''' and drag the tarball to the drop area on the web page.<br />
<br />
==Announcing the new release==<br />
* update mantisdb(Bug/issue database) and enable the new version via Admin:Projects item for reporting issues. (You will need a high-enough status on the bug tracker in order to do this.)<br />
* announce on gramps-announce@lists.sourceforge.net, gramps-devel@lists.sourceforge.net and gramps-users@lists.sourceforge.net (You will need to be a member of all three lists first, to send to them.)<br />
* announce on Gramps [https://gramps-project.org/introduction-WP/blog/ blog] (File under: [https://gramps-project.org/introduction-WP/category/releases/ Gramps Releases] and [https://gramps-project.org/introduction-WP/category/news/ News]) (not needed for an alpha or beta release)<br />
* update [[News]] section on this wiki (not needed for an alpha or beta release)<br />
* update the list of [[Previous releases of Gramps|previous releases]]<br />
* update reference to the new version on the [[Template:Version|wiki template]] (not needed for an alpha or beta release)<br />
* update [[HeadlineNews]] (not needed for an alpha or beta release)<br />
* change the topic on the IRC channel #gramps (not needed for an alpha or beta release)<br />
<code> /TOPIC #gramps Welcome to Gramps! The latest versions are {{version}} and the legacy 3.4.9 || http://www.gramps-project.org/ || Please state OS and Gramps version when asking a question. Understand that replies can take up to 2 days depending on whose watching the channel. Please consider asking on the gramps-users mailing list. </code><br />
* update the version number at [http://en.wikipedia.org/wiki/Gramps Wikipedia] (not needed for an alpha or beta release)<br />
<br />
==Post-release==<br />
* merge forward the <code>NEWS</code> file<br />
<br />
=See also=<br />
* [[Git|Brief introduction to Git]]<br />
* [[Running a development version of Gramps]]<br />
* [[:Category:Developers/Packaging]]<br />
* [[GrampsAIO-4 package updating]] - Updating the MS-Windows package<br />
* [[:Category:AppData]] - Screenshots used by Appdata - Debian<br />
<br />
=External links=<br />
* https://github.com/gramps-project<br />
* http://gramps-project.org/cpanel<br />
* http://svn.code.sf.net/p/gramps/code/<br />
* http://sourceforge.net/projects/gramps/<br />
<br />
[[Category:Developers/General]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=What_to_do_for_a_release&diff=64603What to do for a release2017-09-04T22:51:16Z<p>PaulFranklin: </p>
<hr />
<div>{{man note|Developer notes for '''What to do for a release '''}}<br />
<br />
Note that the main use of this page will be for making<br />
a normal "minor" release. If you are making a "major"<br />
release (e.g. x.y.0) then you will need to update this<br />
page first, to change the numbers. But if you are only<br />
making an "alpha" or "beta" release, some<br />
steps may be skipped, or altered slightly.<br />
<br />
Note also that<br />
there are additional things which need to be done,<br />
which are related to making a new release, for instance<br />
making a new release-section here on the wiki, or<br />
making a new release-section on the bug tracker, or<br />
making new Debian and Mac and Windows packages, so<br />
they will need to be coordinated with the appropriate<br />
people. Probably there should be a section of this<br />
page which lists things like that ("Post-release" maybe?).<br />
<br />
==Prepare your repository==<br />
* Check out the current stable branch:<br />
git checkout maintenance/gramps{{Stable_branch}}<br />
:That branch name assumes that you're using the same name as the Github repository; if you're not (perhaps you don't use <code>maintenance</code> in the name) use your local name.<br />
* Make sure that your local copy is clean:<br />
git status<br />
: If you have any uncommitted changes, either commit them now or stash them until after you've completed the release.<br />
* Clean up any untracked files and make sure that the local repo is up to date:<br />
git clean -fdx<br />
git pull --rebase<br />
:If you had commits that hadn't been pushed yet they'll show up as "applying" messages in the output of this command. If that's the case re-run the tests and push as usual.<br />
* Build and test to make sure that everything works, then clean the repo of all build products.<br />
<br />
==Translation update==<br />
* Check for new files since the last release:<br />
cd po<br />
intltool-update -m <br />
:That will create a file called <code>missing</code>in the <code>po</code> directory if there are new files that need to be scanned for translatable strings. Examine each of the files listed in <code>missing</code>, adding each to <code>POTFILES.in</code> if it contains translatable string constants and to <code>POTFILES.skip</code> if it does not.<br />
* Generate a new template file:<br />
python3 update_po.py -p # makes a new gramps.pot template file<br />
git diff gramps.pot<br />
:Examine the changes. If they're all just comments about where a string is found you need not commit the change (so the next line will restore the official file, instead of the one you just made):<br />
git checkout gramps.pot<br />
:If there have been changes on <code>msgid</code> entries, you'll need to commit <code>gramps.pot</code> and ask translators to update their <tt>.po</tt> files before you can make a release:<br />
git add gramps.pot<br />
git commit -m "Update translation template for new release."<br />
<br />
* Check current translation files (there must be no 'fatal' errors):<br />
python3 update_po.py -k all<br />
<br />
* if all is well, return to the root directory:<br />
cd ..<br />
<br />
==Release name==<br />
Refer to (and update) the [[Previous releases of Gramps|list of previous releases]]. Previously you needed to select an appropriate name but we have not named releases for several years now. You will<br />
still need to add the release though, including things like its<br />
relevant color.<br />
<br />
==Changelog and NEWS file==<br />
<br />
[https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html#section2 Section ''2a''] of the '''G'''eneral '''P'''ublic '''L'''icense says that if you distribute a modified version of a program: ''you must cause the modified files to carry prominent notices stating that you changed the files and the date of any change''. <br />
<br />
Note that the <code>{{version}}</code> below means the ''previous'' version, not the one you're about to release (which is the<br />
<code>..</code>).<br />
git log v{{version}}.. --pretty --numstat --summary --no-merges | git2cl > ChangeLog<br />
git log v{{version}}.. --pretty --numstat --summary --no-merges -- po/*.po | git2cl > po/ChangeLog<br />
git add ChangeLog <br />
*Edit and update the <code>NEWS</code> file using the new ChangeLog entries as a guide. If this is the first branch in a new series there will be no NEWS file, so look at a previous release and mimic the format.<br />
Commit the NEWS file:<br />
git add NEWS<br />
git commit -m "Update NEWS for {{version}} release"<br />
<br />
==Working on VERSION==<br />
<br />
* Check that the <code>VERSION_TUPLE</code> in <code>[https://github.com/gramps-project/gramps/blob/master/gramps/version.py gramps/version.py]</code>reflects the release you're about to make. It should if the version was bumped after the last release. If not, fix it.<br />
<br />
* Modify <code>[https://github.com/gramps-project/gramps/blob/master/gramps/gen/const.py#L132 gramps/gen/const.py]</code> to indicate an official release:<br />
- VERSION += git_revision<br />
+ #VERSION += git_revision<br />
<br />
* Save the changes:<br />
git commit -am "Release Gramps {{version}}"<br />
<br />
* Check that the version number is correct:<br />
python3 Gramps.py -v<br />
<br />
* If everything looks good, push the changes:<br />
git push origin maintenance/gramps{{Stable_branch}}<br />
* If that fails then someone pushed a commit while you were working. Return to [https://gramps-project.org/wiki/index.php?title=What_to_do_for_a_release#Prepare_your_repository Prepare your repository] and start over.<br />
<br />
==Create a tag==<br />
Create the release tag; note the '''v''' leading the actual tag.:<br />
git tag -am "Tag {{version}}" v{{version}}<br />
<br />
==Push to repository==<br />
Push the changes to the repository:<br />
git push origin v{{version}}<br />
<br />
===Move to the new release number on branch ===<br />
<br />
Bump the version number in <code>gramps/version.py</code><br />
<br />
Update the version for the release:<br />
VERSION_TUPLE = (4, 2, ...)<br />
<br />
Revert change on <code>gramps/gen/const.py</code> so that the git revision is appended to the reported version in non-release builds:<br />
- #VERSION += get_git_revision<br />
+ VERSION += get_git_revision<br />
<br />
Save change:<br />
git commit -am "bump to <new version number>"<br />
git push<br />
<br />
===Github===<br />
* Github generates a tarball automatically when we push a tag.<br />
* Go to [https://github.com/gramps-project/gramps Github] and log in if necessary.<br />
* Select '''NN Releases''' from the line of items just above the thick line ('''NN''' is the number of releases so far).<br />
* Find the tag you just pushed and click Edit.<br />
* Copy the NEWS file contents into the '''Write''' tab. You can use the '''Preview''' tab to check your formatting.<br />
* Click '''Publish Release''' at the bottom of the edit area when you're satisfied with the contents.<br />
<br />
===SourceForge===<br />
* Go to [https://sourceforge.net/projects/gramps/files/ the SourceForge files page] and log in if necessary.<br />
* Click on '''Stable''' or '''Unstable''' depending on the class of the release you're making.<br />
* Click '''Add Folder''' and name the directory for the release version. Click "'Create'". Click your new folder to enter it.<br />
* You can either download the Github-generated tarball or create one locallly:<br />
python3 setup.py sdist<br />
* Click '''Add File''' and drag the tarball to the drop area on the web page.<br />
<br />
==Announcing the new release==<br />
* update mantisdb(Bug/issue database) and enable the new version via Admin:Projects item for reporting issues.<br />
* announce on gramps-announce@lists.sourceforge.net, gramps-devel@lists.sourceforge.net and gramps-users@lists.sourceforge.net (You will need to be a member of all three lists first, to send to them.)<br />
* announce on Gramps [https://gramps-project.org/introduction-WP/blog/ blog] (File under: [https://gramps-project.org/introduction-WP/category/releases/ Gramps Releases] and [https://gramps-project.org/introduction-WP/category/news/ News]) (not needed for an alpha or beta release)<br />
* update [[News]] section on this wiki (not needed for an alpha or beta release)<br />
* update the list of [[Previous releases of Gramps|previous releases]]<br />
* update reference to the new version on the [[Template:Version|wiki template]] (not needed for an alpha or beta release)<br />
* update [[HeadlineNews]] (not needed for an alpha or beta release)<br />
* change the topic on the IRC channel #gramps (not needed for an alpha or beta release)<br />
<code> /TOPIC #gramps Welcome to Gramps! The latest versions are {{version}} and the legacy 3.4.9 || http://www.gramps-project.org/ || Please state OS and Gramps version when asking a question. Understand that replies can take up to 2 days depending on whose watching the channel. Please consider asking on the gramps-users mailing list. </code><br />
* update the version number at [http://en.wikipedia.org/wiki/Gramps Wikipedia] (not needed for an alpha or beta release)<br />
<br />
==Post-release==<br />
* merge forward the <code>NEWS</code> file<br />
<br />
=See also=<br />
* [[Git|Brief introduction to Git]]<br />
* [[Running a development version of Gramps]]<br />
* [[:Category:Developers/Packaging]]<br />
* [[GrampsAIO-4 package updating]] - Updating the MS-Windows package<br />
* [[:Category:AppData]] - Screenshots used by Appdata - Debian<br />
<br />
=External links=<br />
* https://github.com/gramps-project<br />
* http://gramps-project.org/cpanel<br />
* http://svn.code.sf.net/p/gramps/code/<br />
* http://sourceforge.net/projects/gramps/<br />
<br />
[[Category:Developers/General]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=What_to_do_for_a_release&diff=64602What to do for a release2017-09-03T23:30:26Z<p>PaulFranklin: </p>
<hr />
<div>{{man note|Developer notes for '''What to do for a release '''}}<br />
<br />
Note that the main use of this page will be for making<br />
a normal "minor" release. If you are making a "major"<br />
release (e.g. x.y.0) then you will need to update this<br />
page first, to change the numbers. But if you are only<br />
making an "alpha" or "beta" release, some<br />
steps may be skipped, or altered slightly.<br />
<br />
Note also that<br />
there are additional things which need to be done,<br />
which are related to making a new release, for instance<br />
making a new release-section here on the wiki, or<br />
making a new release-section on the bug tracker, or<br />
making new Debian and Mac and Windows packages, so<br />
they will need to be coordinated with the appropriate<br />
people. Probably there should be a section of this<br />
page which lists things like that ("Post-release" maybe?).<br />
<br />
==Prepare your repository==<br />
* Check out the current stable branch:<br />
git checkout maintenance/gramps{{Stable_branch}}<br />
:That branch name assumes that you're using the same name as the Github repository; if you're not (perhaps you don't use <code>maintenance</code> in the name) use your local name.<br />
* Make sure that your local copy is clean:<br />
git status<br />
: If you have any uncommitted changes, either commit them now or stash them until after you've completed the release.<br />
* Clean up any untracked files and make sure that the local repo is up to date:<br />
git clean -fdx<br />
git pull --rebase<br />
:If you had commits that hadn't been pushed yet they'll show up as "applying" messages in the output of this command. If that's the case re-run the tests and push as usual.<br />
* Build and test to make sure that everything works, then clean the repo of all build products.<br />
<br />
==Translation update==<br />
* Check for new files since the last release:<br />
cd po<br />
intltool-update -m <br />
:That will create a file called <code>missing</code>in the <code>po</code> directory if there are new files that need to be scanned for translatable strings. Examine each of the files listed in <code>missing</code>, adding each to <code>POTFILES.in</code> if it contains translatable string constants and to <code>POTFILES.skip</code> if it does not.<br />
* Generate a new template file:<br />
python3 update_po.py -p # makes a new gramps.pot template file<br />
git diff gramps.pot<br />
:Examine the changes. If they're all just comments about where a string is found you need not commit the change (so the next line will restore the official file, instead of the one you just made):<br />
git checkout gramps.pot<br />
:If there have been changes on <code>msgid</code> entries, you'll need to commit <code>gramps.pot</code> and ask translators to update their <tt>.po</tt> files before you can make a release:<br />
git add gramps.pot<br />
git commit -m "Update translation template for new release."<br />
<br />
* Check current translation files (there must be no 'fatal' errors):<br />
python3 update_po.py -k all<br />
<br />
* if all is well, return to the root directory:<br />
cd ..<br />
<br />
==Release name==<br />
Refer to (and update) the [[Previous releases of Gramps|list of previous releases]]. Previously you needed to select an appropriate name but we have not named releases for several years now. You will<br />
still need to add the release though, including things like its<br />
relevant color.<br />
<br />
==Changelog and NEWS file==<br />
<br />
[https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html#section2 Section ''2a''] of the '''G'''eneral '''P'''ublic '''L'''icense says that if you distribute a modified version of a program: ''you must cause the modified files to carry prominent notices stating that you changed the files and the date of any change''. <br />
<br />
Note that the <code>{{version}}</code> below means the ''previous'' version, not the one you're about to release (which is the<br />
<code>..</code>).<br />
git log v{{version}}.. --pretty --numstat --summary --no-merges | git2cl > ChangeLog<br />
git log v{{version}}.. --pretty --numstat --summary --no-merges -- po/*.po | git2cl > po/ChangeLog<br />
git add ChangeLog <br />
*Edit and update the <code>NEWS</code> file using the new ChangeLog entries as a guide. If this is the first branch in a new series there will be no NEWS file, so look at a previous release and mimic the format.<br />
Commit the NEWS file:<br />
git add NEWS<br />
git commit -m "Update NEWS for {{version}} release"<br />
<br />
==Working on VERSION==<br />
<br />
* Check that the <code>VERSION_TUPLE</code> in <code>[https://github.com/gramps-project/gramps/blob/master/gramps/version.py gramps/version.py]</code>reflects the release you're about to make. It should if the version was bumped after the last release. If not, fix it.<br />
<br />
* Modify <code>[https://github.com/gramps-project/gramps/blob/master/gramps/gen/const.py#L132 gramps/gen/const.py]</code> to indicate an official release:<br />
- VERSION += git_revision<br />
+ #VERSION += git_revision<br />
<br />
* Save the changes:<br />
git commit -am "Release Gramps {{version}}"<br />
<br />
* Check that the version number is correct:<br />
python3 Gramps.py -v<br />
<br />
* If everything looks good, push the changes:<br />
git push origin maintenance/gramps{{Stable_branch}}<br />
* If that fails then someone pushed a commit while you were working. Return to [https://gramps-project.org/wiki/index.php?title=What_to_do_for_a_release#Prepare_your_repository Prepare your repository] and start over.<br />
<br />
==Create a tag==<br />
Create the release tag; note the '''v''' leading the actual tag.:<br />
git tag -am "Tag {{version}}" v{{version}}<br />
<br />
==Push to repository==<br />
Push the changes to the repository:<br />
git push origin v{{version}}<br />
<br />
===Move to the new release number on branch ===<br />
<br />
Bump the version number in <code>gramps/version.py</code><br />
<br />
Update the version for the release:<br />
VERSION_TUPLE = (4, 2, ...)<br />
<br />
Revert change on <code>gramps/gen/const.py</code> so that the git revision is appended to the reported version in non-release builds:<br />
- #VERSION += get_git_revision<br />
+ VERSION += get_git_revision<br />
<br />
Save change:<br />
git commit -am "bump to <new version number>"<br />
git push<br />
<br />
===Github===<br />
* Github generates a tarball automatically when we push a tag.<br />
* Go to [https://github.com/gramps-project/gramps Github] and log in if necessary.<br />
* Select '''NN Releases''' from the line of items just above the thick line ('''NN''' is the number of releases so far).<br />
* Find the tag you just pushed and click Edit.<br />
* Copy the NEWS file contents into the '''Write''' tab. You can use the '''Preview''' tab to check your formatting.<br />
* Click '''Publish Release''' at the bottom of the edit area when you're satisfied with the contents.<br />
<br />
===SourceForge===<br />
* Go to [https://sourceforge.net/projects/gramps/files/ the SourceForge files page] and log in if necessary.<br />
* Click on '''Stable''' or '''Unstable''' depending on the class of the release you're making.<br />
* Click '''Add Folder''' and name the directory for the release version. Click "'Create'". Click your new folder to enter it.<br />
* You can either download the Github-generated tarball or create one locallly:<br />
python3 setup.py sdist<br />
* Click '''Add File''' and drag the tarball to the drop area on the web page.<br />
<br />
==Announcing the new release==<br />
* update mantisdb(Bug/issue database) and enable the new version via Admin:Projects item for reporting issues.<br />
* announce on gramps-announce@lists.sourceforge.net, gramps-devel@lists.sourceforge.net and gramps-users@lists.sourceforge.net<br />
* announce on Gramps [https://gramps-project.org/introduction-WP/blog/ blog] (File under: [https://gramps-project.org/introduction-WP/category/releases/ Gramps Releases] and [https://gramps-project.org/introduction-WP/category/news/ News]) (not needed for an alpha or beta release)<br />
* update [[News]] section on this wiki (not needed for an alpha or beta release)<br />
* update the list of [[Previous releases of Gramps|previous releases]]<br />
* update reference to the new version on the [[Template:Version|wiki template]] (not needed for an alpha or beta release)<br />
* update [[HeadlineNews]] (not needed for an alpha or beta release)<br />
* change the topic on the IRC channel #gramps (not needed for an alpha or beta release)<br />
<code> /TOPIC #gramps Welcome to Gramps! The latest versions are {{version}} and the legacy 3.4.9 || http://www.gramps-project.org/ || Please state OS and Gramps version when asking a question. Understand that replies can take up to 2 days depending on whose watching the channel. Please consider asking on the gramps-users mailing list. </code><br />
* update the version number at [http://en.wikipedia.org/wiki/Gramps Wikipedia] (not needed for an alpha or beta release)<br />
<br />
==Post-release==<br />
* merge forward the <code>NEWS</code> file<br />
<br />
=See also=<br />
* [[Git|Brief introduction to Git]]<br />
* [[Running a development version of Gramps]]<br />
* [[:Category:Developers/Packaging]]<br />
* [[GrampsAIO-4 package updating]] - Updating the MS-Windows package<br />
* [[:Category:AppData]] - Screenshots used by Appdata - Debian<br />
<br />
=External links=<br />
* https://github.com/gramps-project<br />
* http://gramps-project.org/cpanel<br />
* http://svn.code.sf.net/p/gramps/code/<br />
* http://sourceforge.net/projects/gramps/<br />
<br />
[[Category:Developers/General]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=What_to_do_for_a_release&diff=64601What to do for a release2017-09-03T16:15:36Z<p>PaulFranklin: /* Announcing the new release */</p>
<hr />
<div>{{man note|Developer notes for '''What to do for a release '''}}<br />
<br />
Note that the main use of this page will be for making<br />
a normal "minor" release. If you are making a "major"<br />
release (e.g. x.y.0) then you will need to update this<br />
page first, to change the numbers. But if you are only<br />
making an "alpha" or "beta" release, some<br />
steps may be skipped, or altered slightly.<br />
<br />
Note also that<br />
there are additional things which need to be done,<br />
which are related to making a new release, for instance<br />
making a new release-section here on the wiki, or<br />
making a new release-section on the bug tracker, or<br />
making new Debian and Mac and Windows packages, so<br />
they will need to be coordinated with the appropriate<br />
people. Probably there should be a section of this<br />
page which lists things like that ("Post-release" maybe?).<br />
<br />
==Prepare your repository==<br />
* Check out the current stable branch:<br />
git checkout maintenance/gramps{{Stable_branch}}<br />
:That branch name assumes that you're using the same name as the Github repository; if you're not (perhaps you don't use <code>maintenance</code> in the name) use your local name.<br />
* Make sure that your local copy is clean:<br />
git status<br />
: If you have any uncommitted changes, either commit them now or stash them until after you've completed the release.<br />
* Clean up any untracked files and make sure that the local repo is up to date:<br />
git clean -fdx<br />
git pull --rebase<br />
:If you had commits that hadn't been pushed yet they'll show up as "applying" messages in the output of this command. If that's the case re-run the tests and push as usual.<br />
* Build and test to make sure that everything works, then clean the repo of all build products.<br />
<br />
==Translation update==<br />
* Check for new files since the last release:<br />
cd po<br />
intltool-update -m <br />
:That will create a file called <code>missing</code>in the <code>po</code> directory if there are new files that need to be scanned for translatable strings. Examine each of the files listed in <code>missing</code>, adding each to <code>POTFILES.in</code> if it contains translatable string constants and to <code>POTFILES.skip</code> if it does not.<br />
* Generate a new template file:<br />
python3 update_po.py -p # makes a new gramps.pot template file<br />
git diff gramps.pot<br />
:Examine the changes. If they're all just comments about where a string is found you need not commit the change (so the next line will restore the official file, instead of the one you just made):<br />
git checkout gramps.pot<br />
:If there have been changes on <code>msgid</code> entries, you'll need to commit <code>gramps.pot</code> and ask translators to update their <tt>.po</tt> files before you can make a release:<br />
git add gramps.pot<br />
git commit -m "Update translation template for new release."<br />
<br />
* Check current translation files (there must be no 'fatal' errors):<br />
python3 update_po.py -k all<br />
<br />
* if all is well, return to the root directory:<br />
cd ..<br />
<br />
==Release name==<br />
Refer to (and update) the [[Previous releases of Gramps|list of previous releases]]. Previously you needed to select an appropriate name but we have not named releases for several years now. You will<br />
still need to add the release though, including things like its<br />
relevant color.<br />
<br />
==Changelog and NEWS file==<br />
<br />
[https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html#section2 Section ''2a''] of the '''G'''eneral '''P'''ublic '''L'''icense says that if you distribute a modified version of a program: ''you must cause the modified files to carry prominent notices stating that you changed the files and the date of any change''. <br />
<br />
Note that the <code>{{version}}</code> below means the ''previous'' version, not the one you're about to release (which is the<br />
<code>..</code>).<br />
git log v{{version}}.. --pretty --numstat --summary --no-merges | git2cl > ChangeLog<br />
git log v{{version}}.. --pretty --numstat --summary --no-merges -- po/*.po | git2cl > po/ChangeLog<br />
git add ChangeLog <br />
*Edit and update the <code>NEWS</code> file using the new ChangeLog entries as a guide. If this is the first branch in a new series there will be no NEWS file, so look at a previous release and mimic the format.<br />
Commit the NEWS file:<br />
git add NEWS<br />
git commit -m "Update NEWS for {{version}} release"<br />
<br />
==Working on VERSION==<br />
<br />
* Check that the <code>VERSION_TUPLE</code> in <code>[https://github.com/gramps-project/gramps/blob/master/gramps/version.py gramps/version.py]</code>reflects the release you're about to make. It should if the version was bumped after the last release. If not, fix it.<br />
<br />
* Modify <code>[https://github.com/gramps-project/gramps/blob/master/gramps/gen/const.py#L132 gramps/gen/const.py]</code> to indicate an official release:<br />
- VERSION += git_revision<br />
+ #VERSION += git_revision<br />
<br />
* Save the changes:<br />
git commit -am "Release Gramps {{version}}"<br />
<br />
* Check that the version number is correct:<br />
python3 Gramps.py -v<br />
<br />
* If everything looks good, push the changes:<br />
git push origin maintenance/gramps{{Stable_branch}}<br />
* If that fails then someone pushed a commit while you were working. Return to [https://gramps-project.org/wiki/index.php?title=What_to_do_for_a_release#Prepare_your_repository Prepare your repository] and start over.<br />
<br />
==Create a tag==<br />
Create the release tag; note the '''v''' leading the actual tag.:<br />
git tag -am "Tag {{version}}" v{{version}}<br />
<br />
==Push to repository==<br />
Push the changes to the repository:<br />
git push origin v{{version}}<br />
<br />
===Move to the new release number on branch ===<br />
<br />
Bump the version number in <code>gramps/version.py</code><br />
<br />
Update the version for the release:<br />
VERSION_TUPLE = (4, 2, ...)<br />
<br />
Revert change on <code>gramps/gen/const.py</code> so that the git revision is appended to the reported version in non-release builds:<br />
- #VERSION += get_git_revision<br />
+ VERSION += get_git_revision<br />
<br />
Save change:<br />
git commit -am "bump to <new version number>"<br />
git push<br />
<br />
===Github===<br />
* Github generates a tarball automatically when we push a tag.<br />
* Go to [https://github.com/gramps-project/gramps Github] and log in if necessary.<br />
* Select '''NN Releases''' from the line of items just above the thick line ('''NN''' is the number of releases so far).<br />
* Find the tag you just pushed and click Edit.<br />
* Copy the NEWS file contents into the '''Write''' tab. You can use the '''Preview''' tab to check your formatting.<br />
* Click '''Publish Release''' at the bottom of the edit area when you're satisfied with the contents.<br />
<br />
===SourceForge===<br />
* Go to [https://sourceforge.net/projects/gramps/files/ the SourceForge files page] and log in if necessary.<br />
* Click on '''Stable''' or '''Unstable''' depending on the class of the release you're making.<br />
* Click '''Add Folder''' and name the directory for the release version. Click "'Create'". Click your new folder to enter it.<br />
* You can either download the Github-generated tarball or create one locallly:<br />
python3 setup.py sdist<br />
* Click '''Add File''' and drag the tarball to the drop area on the web page.<br />
<br />
==Announcing the new release==<br />
* update mantisdb(Bug/issue database) and enable the new version via Admin:Projects item for reporting issues.<br />
* announce on gramps-announce@lists.sourceforge.net, gramps-devel@lists.sourceforge.net and gramps-users@lists.sourceforge.net<br />
* announce on Gramps [https://gramps-project.org/introduction-WP/blog/ blog] (File under: [https://gramps-project.org/introduction-WP/category/releases/ Gramps Releases] and [https://gramps-project.org/introduction-WP/category/news/ News])<br />
* update [[News]] section on this wiki<br />
* update the list of [[Previous releases of Gramps|previous releases]]<br />
* update reference to the new version on the [[Template:Version|wiki template]] (not needed for an alpha or beta release)<br />
* update [[HeadlineNews]] (not needed for an alpha or beta release)<br />
* change the topic on the IRC channel #gramps (not needed for an alpha or beta release)<br />
<code> /TOPIC #gramps Welcome to Gramps! The latest versions are {{version}} and the legacy 3.4.9 || http://www.gramps-project.org/ || Please state OS and Gramps version when asking a question. Understand that replies can take up to 2 days depending on whose watching the channel. Please consider asking on the gramps-users mailing list. </code><br />
* update the version number at [http://en.wikipedia.org/wiki/Gramps Wikipedia] (not needed for an alpha or beta release)<br />
<br />
==Post-release==<br />
* merge forward the <code>NEWS</code> file<br />
<br />
=See also=<br />
* [[Git|Brief introduction to Git]]<br />
* [[Running a development version of Gramps]]<br />
* [[:Category:Developers/Packaging]]<br />
* [[GrampsAIO-4 package updating]] - Updating the MS-Windows package<br />
* [[:Category:AppData]] - Screenshots used by Appdata - Debian<br />
<br />
=External links=<br />
* https://github.com/gramps-project<br />
* http://gramps-project.org/cpanel<br />
* http://svn.code.sf.net/p/gramps/code/<br />
* http://sourceforge.net/projects/gramps/<br />
<br />
[[Category:Developers/General]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Previous_releases_of_Gramps&diff=64600Previous releases of Gramps2017-09-03T07:38:31Z<p>PaulFranklin: </p>
<hr />
<div><!-- http://sourceforge.net/project/admin/editreleases.php?package_id=109309&group_id=25770 --><br />
{{man note|You may find Gramps downloads|On the following page [[Download]]}}<br />
{| class="wikitable sortable"<br />
|-<br />
!<br />
! Meaning<br />
|-<br />
| style="background-color:#fa8072;" | Red<br />
| Not supported (Update to the last release for that version)<br />
|-<br />
| style="background-color:#f0e68c;" | Yellow<br />
| Still supported (Update to the last release for that version / Strongly Recommended you upgrade to the '''Current version''')<br />
|-<br />
| style="background-color:#A0E75A;" | Green<br />
| Current version. '''Recommended for all new installs'''<br />
|-<br />
| style="background-color:#66ccff;" | Blue<br />
| Current Public testing version (Unstable/Alpha/Beta/Release Candidate)<br />
|-<br />
| style="background-color:#C0C0C0;" | Silver<br />
| Development version (Git Version - Here be dragons - Recommended only for testing the future of Gramps)<br />
|}<br />
<!-- RELEASE HISTORY --><br />
{| class="wikitable sortable"<br />
|-<br />
!Version<br />
!Release Date<br />
!Name<br />
!Notes<br />
|-<br />
| style="background-color:#C0C0C0;" |[https://github.com/gramps-project/gramps Git]||N/A||N/A||Development version (Python 3.2+ only / GTK 3.10+ / BSDDB 3)<br />
|-<br />
| style="background-color:#fa8072;" |0.1.1 || 2001-04-21 || || <br />
|-<br />
| style="background-color:#fa8072;" |0.1.2 || 2001-04-27 || || <br />
|-<br />
| style="background-color:#fa8072;" |0.1.3 || 2001-05-05 || || [http://sourceforge.net/mailarchive/message.php?msg_name=989071692.5867.0.camel%40wallace]<br />
|-<br />
| style="background-color:#fa8072;" |0.1.4 || 2001-05-19 || ||<br />
|-<br />
| style="background-color:#fa8072;" |0.1.5 || 2001-05-26 || ||<br />
|-<br />
| style="background-color:#fa8072;" |0.2.0 || 2001-06-03 || ||<br />
|-<br />
| style="background-color:#fa8072;" |0.3.0 || 2001-06-17 || ||<br />
|-<br />
| style="background-color:#fa8072;" |0.3.1 || 2001-06-23 || ||<br />
|-<br />
| style="background-color:#fa8072;" |0.3.2 || 2001-07-06 || ||<br />
|-<br />
| style="background-color:#fa8072;" |0.4.0 || 2001-08-09 || ||<br />
|- <br />
| style="background-color:#fa8072;" |0.4.1 || 2001-08-13 || ||<br />
|-<br />
| style="background-color:#fa8072;" |0.5.0 || 2001-09-19 || || [http://sourceforge.net/mailarchive/message.php?msg_name=1000858783.857.10.camel%40wallace]<br />
|-<br />
| style="background-color:#fa8072;" |0.5.1 || 2001-09-30 || ||<br />
|-<br />
| style="background-color:#fa8072;" |0.6.0 || 2001-11-09 || ||<br />
|- <br />
| style="background-color:#fa8072;" |0.6.1 || 2001-11-10 || ||<br />
|-<br />
| style="background-color:#fa8072;" |0.6.2 || 2001-11-18 || ||<br />
|-<br />
| style="background-color:#fa8072;" |0.7.0 || 2001-12-24 || || [http://sourceforge.net/mailarchive/message.php?msg_name=1009153059.18962.16.camel%40wallace]<br />
|-<br />
| style="background-color:#fa8072;" |0.7.1 || 2002-01-26 || ||<br />
|-<br />
| style="background-color:#fa8072;" |0.7.2 || 2002-03-16 || ||<br />
|-<br />
| style="background-color:#fa8072;" |0.7.3 || 2002-05-06 || ||<br />
|-<br />
| style="background-color:#fa8072;" |0.8.0 || 2002-08-20 || || [http://sourceforge.net/mailarchive/message.php?msg_name=1029808789.30044.12.camel%40feathers]<br />
|-<br />
| style="background-color:#fa8072;" |0.8.1 || 2002-12-01 || ||<br />
|-<br />
| style="background-color:#fa8072;" |0.9.0 || 2003-02-16 || || [http://gnomedesktop.org/node/940]<br />
|-<br />
| style="background-color:#fa8072;" |0.9.1 || 2003-04-20 || ||<br />
|-<br />
| style="background-color:#fa8072;" |0.9.2 || 2003-06-01 || ||<br />
|-<br />
| style="background-color:#fa8072;" |0.9.3 || 2003-07-15 || ||<br />
|-<br />
| style="background-color:#fa8072;" |0.9.4 || 2003-09-29 || This used to bug me || [http://gnomedesktop.org/node/1369]<br />
|-<br />
| style="background-color:#fa8072;" |0.9.5 || 2003-10-07 || Fix me up || [http://gnomedesktop.org/node/1385]<br />
|-<br />
| style="background-color:#fa8072;" |0.98.0 || 2003-12-08 || Round me off || [http://gnomedesktop.org/node/1509]<br />
|-<br />
| style="background-color:#fa8072;" |0.99 || 2004-01-27 || || [http://sourceforge.net/mailarchive/message.php?msg_name=1075265584.2202.20.camel%40gromit]<br />
|-<br />
! style="background-color:#fa8072;" |1.0.0 || 2004-02-11 || Stable as a tombstone || [http://gnomedesktop.org/node/1644] (Python 1.5.2+, Gnome 1.2+, PyGnome 1.0.53+ / XML )<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/1.0.1|1.0.1]] || 2004-02-18 || Revenge of Ed Wood || [https://web.archive.org/web/20061005083907/http://gnomedesktop.org/node/1659]<br />
|-<br />
| style="background-color:#fa8072;" |1.0.2 || 2004-04-02 || Pining for the fjords || [http://gnomedesktop.org/node/1732]<br />
|-<br />
| style="background-color:#fa8072;" |1.0.3 || 2004-04-22 || 'Tis but a scratch! || [http://gnomedesktop.org/node/1761]<br />
|-<br />
| style="background-color:#fa8072;" |1.0.4 || 2004-06-15 || Say no more! || [http://osdir.com/ml/genealogy.gramps.user/2004-06/msg00049.html]<br />
|-<br />
| style="background-color:#fa8072;" |1.1.0 (unstable) || 2004-06-16 ||And now for something completely different || [http://osdir.com/ml/genealogy.gramps.user/2004-06/msg00060.html]<br />
|-<br />
| style="background-color:#fa8072;" |1.0.5 || 2004-07-31 || Weighs the same as a duck || [http://osdir.com/ml/genealogy.gramps.user/2004-07/msg00136.html]<br />
|-<br />
| style="background-color:#fa8072;" |1.0.6 || 2004-08-13 || Pink frilly edges || [http://osdir.com/ml/genealogy.gramps.user/2004-08/msg00070.html]<br />
|-<br />
| style="background-color:#fa8072;" |1.0.7 || 2004-08-14 || Run away! Run away! || [http://osdir.com/ml/genealogy.gramps.user/2004-08/msg00072.html]<br />
|-<br />
| style="background-color:#fa8072;" |1.1.1 (unstable) || 2004-09-27 || Rat cake, rat sorbet, rat pudding, or strawberry tart || [http://osdir.com/ml/genealogy.gramps.user/2004-09/msg00075.html]<br />
|-<br />
| style="background-color:#fa8072;" |1.0.8 || 2004-10-31 || Sideways completely unexpected deposit || [http://osdir.com/ml/genealogy.gramps.user/2004-10/msg00080.html]<br />
|-<br />
| style="background-color:#fa8072;" |1.1.2 (unstable) ||2004-12-06|| Confuse-a-cat || [http://osdir.com/ml/genealogy.gramps.user/2004-12/msg00024.html]<br />
|-<br />
| style="background-color:#fa8072;" |1.1.3 (unstable) ||2005-01-18 || Splunge: this is a great idea, but possibly lousy, and I’m not being indecisive || [http://osdir.com/ml/genealogy.gramps.user/2005-01/msg00015.html]<br />
|-<br />
| style="background-color:#fa8072;" |1.0.9 || 2005-01-29 || Ekki-Ekki-Ekki-Ekki-PTANG. Zoom-Boing. Z'nourrwringmm || [http://osdir.com/ml/genealogy.gramps.user/2005-01/msg00037.html]<br />
|-<br />
| style="background-color:#fa8072;" |1.0.10 || 2005-01-30 || Migrating coconuts || [http://osdir.com/ml/genealogy.gramps.user/2005-01/msg00038.html]<br />
|-<br />
| style="background-color:#fa8072;" |1.1.90 (unstable) ||2005-02-21|| Successful encyclopedia salesman || [http://osdir.com/ml/genealogy.gramps.user/2005-02/msg00062.html]<br />
|-<br />
| style="background-color:#fa8072;" |1.0.11 || 2005-03-19 || What have the Romans done for us? || [http://osdir.com/ml/genealogy.gramps.user/2005-03/msg00041.html]<br />
|-<br />
| style="background-color:#fa8072;" |1.1.95 (unstable) ||2005-04-11|| When danger reared its ugly head, he bravely turned his tail and fled || [http://osdir.com/ml/genealogy.gramps.user/2005-04/msg00026.html]<br />
|-<br />
| style="background-color:#fa8072;" |1.1.99 (unstable) ||2005-04-24|| What… is your favourite colour? || [http://osdir.com/ml/genealogy.gramps.devel/2005-04/msg00200.html]<br />
|-<br />
! style="background-color:#fa8072;" |2.0.0 || 2005-05-10 || The bright side of life || [http://gnomedesktop.org/node/2246] [http://osdir.com/ml/genealogy.gramps.user/2005-05/msg00032.html] ( Python 2.3+ /Gnome 2.8+ /PyGTK2 2.4+ /Gnome-python 2.6 + / BSDDB )<br />
|-<br />
| style="background-color:#fa8072;" |2.0.1 || 2005-05-23 || None shall pass || [http://osdir.com/ml/genealogy.gramps.user/2005-05/msg00087.html]<br />
|-<br />
| style="background-color:#fa8072;" |2.0.2 || 2005-06-04 || Little fermented curd will do the trick || [http://osdir.com/ml/genealogy.gramps.user/2005-06/msg00007.html]<br />
|-<br />
| style="background-color:#fa8072;" |2.0.3 || 2005-06-04 || Mynd you, møøse bites Kan be pretty nasti... || [http://osdir.com/ml/genealogy.gramps.user/2005-06/msg00010.html]<br />
|-<br />
| style="background-color:#fa8072;" |2.0.4 || 2005-06-27 || That's enough music for now, lads. || [http://osdir.com/ml/genealogy.gramps.user/2005-06/msg00039.html]<br />
|-<br />
| style="background-color:#fa8072;" |2.0.5 || 2005-07-05 || It's certainly uncontaminated by cheese || [http://gnomedesktop.org/node/2313] [http://osdir.com/ml/genealogy.gramps.user/2005-07/msg00011.html]<br />
|-<br />
| style="background-color:#fa8072;" |2.0.6 || 2005-08-15 || Just like my dear papa! || [http://osdir.com/ml/genealogy.gramps.user/2005-08/msg00007.html]<br />
|-<br />
| style="background-color:#fa8072;" |2.0.7 || 2005-09-04 || Romanes eunt domus || [http://osdir.com/ml/genealogy.gramps.user/2005-09/msg00003.html]<br />
|-<br />
| style="background-color:#fa8072;" |2.0.8 || 2005-09-05 || Romani ite domum || [http://osdir.com/ml/genealogy.gramps.user/2005-09/msg00010.html]<br />
|-<br />
| style="background-color:#fa8072;" |2.0.9 || 2005-12-11 || Nobody expects the Spanish inquisition! || [http://osdir.com/ml/genealogy.gramps.user/2005-12/msg00009.html]<br />
|-<br />
| style="background-color:#fa8072;" |2.0.10 || 2006-02-27 || Holy Hand Grenade of Antioch || [http://osdir.com/ml/genealogy.gramps.user/2006-02/msg00051.html]<br />
|-<br />
| style="background-color:#fa8072;" |2.0.11 || 2006-04-29 || I will not buy this record, it is scratched || [http://osdir.com/ml/genealogy.gramps.user/2006-04/msg00078.html]<br />
|-<br />
| style="background-color:#fa8072;" |2.1.0 (unstable) || 2006-04-29 || What are you going to do, bleed on me? || [http://osdir.com/ml/genealogy.gramps.user/2006-04/msg00080.html]<br />
|-<br />
| style="background-color:#fa8072;" |2.1.91 (unstable) || 2006-08-13 || Strange women lying in ponds distributing swords is no basis for a system of government || [http://www.nabble.com/GRAMPS-2.1.91-released-t2101226.html]<br />
|-<br />
| style="background-color:#fa8072;" |2.1.95 (unstable) || 2006-08-27 || Listen! I can't give it to you now. It says, 'in the event of death'. Uh. Oh! Ah. Ah. Eh. || [http://www.nabble.com/GRAMPS-2.1.95-Beta-released-t2174953.html]<br />
|-<br />
| style="background-color:#fa8072;" |2.2.0rc1 (unstable) || 2006-10-12 || Help, Help! I'm being repressed!|| [http://thread.gmane.org/gmane.comp.genealogy.gramps.user/3018]<br />
|-<br />
| style="background-color:#fa8072;" |2.2.0rc2 (unstable) || 2006-10-24 || What is your quest? || [http://thread.gmane.org/gmane.comp.genealogy.gramps.user/3079]<br />
|-<br />
| style="background-color:#fa8072;" |2.2.1 || 2006-10-29 || One, two, five! || [http://osdir.com/ml/genealogy.gramps.user/2006-10/msg00107.html] (This release added support for MS-Windows.)<br />
|-<br />
| style="background-color:#fa8072;" |2.2.2 || 2006-11-02 || We interrupt this program to annoy you and make things generally irritating || [http://osdir.com/ml/genealogy.gramps.user/2006-11/msg00008.html]<br />
|-<br />
| style="background-color:#fa8072;" |2.2.3 || 2006-11-26 || My philosophy, like color television, is all there in black and white || [http://osdir.com/ml/genealogy.gramps.user/2006-11/msg00069.html]<br />
|-<br />
| style="background-color:#fa8072;" |2.2.4 || 2006-12-24 || When you're chewing on life's gristle, Don't grumble, give a whistle || [http://osdir.com/ml/genealogy.gramps.user/2006-12/msg00112.html]<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/2.2.5|2.2.5]] || 2007-01-28 || Now go away or I shall taunt you a second time || [http://sourceforge.net/mailarchive/message.php?msg_name=1170014849.5125.10.camel%40gromit.hsd1.co.comcast.net.]<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/2.2.6|2.2.6]] || 2007-01-29 || Summarize Proust Competition || [http://sourceforge.net/mailarchive/message.php?msg_name=1170093157.19476.8.camel%40shaun]<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/2.2.7|2.2.7]] || 2007-04-22 || Well, I didn't vote for you. || [http://sourceforge.net/mailarchive/message.php?msg_name=528057.58505.qm%40web52901.mail.re2.yahoo.com]<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/2.2.8|2.2.8]] || 2007-05-27 || You sons of a silly person || [http://sourceforge.net/mailarchive/message.php?msg_name=1180325674.6710.10.camel%40gromit.hsd1.co.comcast.net.]<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/2.2.9|2.2.9]] || 2007-10-18 || Here's your ninepence || [http://sourceforge.net/mailarchive/message.php?msg_name=1e15d0630710180845m5be854f5l7cff75c5856798a8%40mail.gmail.com]<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/2.2.10|2.2.10]] || 2008-01-13 || Lemon Curry? || [http://sourceforge.net/mailarchive/message.php?msg_name=1e15d0630801132242s57f981a1x2140df7010d75b87%40mail.gmail.com]<br />
|-<br />
| style="background-color:#fa8072;" |2.90.0 (unstable) || 2008-01-16 || || [http://sourceforge.net/mailarchive/message.php?msg_name=1e15d0630801162244m3d1bed7dnc5def6a8fc8251fa%40mail.gmail.com]<br />
|-<br />
! style="background-color:#fa8072;" |[[Template:Releases/3.0.0|3.0.0]] || 2008-03-24 || It was just getting interesting. || (Python 2.5+ / PyGTK2 2.10+ / BSDDB ) <br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.0.1|3.0.1]] || 2008-05-17 || Don't call me "Señor!" ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.0.2|3.0.2]] || 2008-09-27 || You look like a milkman to me. ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.0.3|3.0.3]] || 2008-10-19 || I have this terrible feeling of déjà vu. ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.0.4|3.0.4]] || 2008-12-06 || All the children sing ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.1.0|3.1.0]] || 2009-03-07 || I am the director of a publishing company. ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.1.1|3.1.1]] || 2009-03-09 || Spam, bacon, sausage and spam ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.1.2|3.1.2]] || 2009-06-06 || Skip the impersonations ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.1.3|3.1.3]] || 2009-12-06 || What Name? ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.2.0|3.2.0]] || 2010-03-15 || I am your father ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.2.1|3.2.1]] || 2010-04-21 || One of those men is my father ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.2.2|3.2.2]] || 2010-04-25 || Mea navis aëricumbens anguillis abundat ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.2.3|3.2.3]] || 2010-05-16 || I used to eat there. Really good noodles. ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.2.4|3.2.4]] || 2010-10-10 || Tententen ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.2.4|3.2.4]] || 2010-10-11 || Tententen || (Re-released due to missing .css file.)<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.2.5|3.2.5]] || 2010-11-17 || I intend to live forever. ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.2.6|3.2.6]] || 2011-04-30 || So far, so good. ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.3.0|3.3.0]] || 2011-06-12 || Prelude to the next version ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.3.1|3.3.1]] || 2011-10-01 || The Tenth Anniversary Edition ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.3.2|3.3.2]] || 2012-05-18 || The Knights who say 'Ni' ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.4.0|3.4.0]] || 2012-05-21 || The "always look on the bright side of life" feature release. ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.4.1|3.4.1]] || 2012-08-23 || A tiger? In Africa?! ||[https://gramps-project.org/2012/07/in-memory-of-rob-g-healey/ In Memory of Rob G. Healey].<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.4.2|3.4.2]] || 2012-10-28 || We're all individuals! ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.0.0alpha1|4.0.0-alpha1]] (unstable)|| 2012-12-21 || ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.0.0alpha2|4.0.0-alpha2]] (unstable)|| 2012-12-31 || ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.0.0alpha3|4.0.0-alpha3]] (unstable)|| 2013-01-03 || ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.0.0alpha4|4.0.0-alpha4]] (unstable)|| 2013-01-26 || ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.0.0alpha5|4.0.0-alpha5]] (unstable)|| 2013-03-06 || ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.4.3|3.4.3]] || 2013-03-19 || Whenever life gets you down, Mrs. Brown ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.0.0beta|4.0.0-beta]] (unstable)|| 2013-04-06 || ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.4.4|3.4.4]] ||2013-05-15||The Ministry of Silly Names||<br />
|-<br />
! style="background-color:#fa8072;" |[[Template:Releases/4.0.0|4.0.0]] ||2013-05-21||The Miracle Of Birth || (Python 2.7+ or Python 3.2+ / GTK 3.0+ / BSDDB )<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.4.5|3.4.5]] ||2013-05-22||We have also developed a tomato which can eject itself when an accident is imminent||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.0.1|4.0.1]] ||2013-06-24||What is washing when we are on the verge of a great scientific breakthrough?||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.4.6|3.4.6]] ||2013-10-28||The Answer to the Ultimate Question||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.0.2|4.0.2]] ||2013-11-08||Welcome to our humble abode||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.4.7|3.4.7]] ||2014-01-27||Ask me tomorrow, but not today||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.0.3|4.0.3]] ||2014-01-27||It's tomorrow, ask me now||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.0.4|4.0.4]] ||2014-05-22||Not the comfy chair||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/3.4.8|3.4.8]] ||2014-05-29||Forget about your sin, give the audience a grin||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.1.0|4.1.0]] ||2014-06-16||Name go in book|| (Full Python 3 support added)<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.1.1|4.1.1]] ||2014-10-24||MachineThatGoes...Ping!||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.1.2|4.1.2]] ||2015-02-28||That's no ordinary rabbit ||<br />
|-<br />
| style="background-color:#f0e68c;" |[[Template:Releases/3.4.9|3.4.9]] ||2015-04-30||I am no longer infected ||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.1.3|4.1.3]] ||2015-05-01||Thou shalt not count to five||<br />
|-<br />
| style="background-color:#fa8072;" |4.2.0beta1 (unstable)||2015-06-21|| || [http://sourceforge.net/p/gramps/mailman/message/34226994/]<br />
|-<br />
| style="background-color:#fa8072;" |4.2.0beta2 (unstable)||2015-07-08|| || [http://gramps.1791082.n4.nabble.com/Gramps-4-2-Release-schedule-tp4670805p4671491.html]<br />
|-<br />
! style="background-color:#fa8072;" |[[Template:Releases/4.2.0|4.2.0]]||2015-08-02|||| (Python 3.2+ only / GTK 3.10+ / BSDDB 3)<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.2.1|4.2.1]]||2015-10-12||||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.2.2|4.2.2]]||2016-01-06||||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.2.3|4.2.3]]||2016-04-10||||<br />
|-<br />
| style="background-color:#fa8072;" |[https://github.com/gramps-project/gramps/releases/tag/v5.0.0-alpha1 5.0.0-alpha1 (unstable)]||2016-06-04|| [http://gramps.1791082.n4.nabble.com/Re-Gramps-5-0-alpha-announcement-draft-td4675918.html]<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.2.4|4.2.4]]||2016-09-04|||[https://sourceforge.net/p/gramps/mailman/message/35340899/]||<br />
|-<br />
| style="background-color:#fa8072;" |[[Template:Releases/4.2.5|4.2.5]]||2016-12-15|||<br />
|-<br />
| style="background-color:#fa8072;" |[https://github.com/gramps-project/gramps/releases/tag/v5.0.0-alpha2 5.0.0-alpha2 (unstable)]||2017-06-10|| [http://gramps.1791082.n4.nabble.com/Gramps-5-0-0-alpha2-released-tt4680209.html]<br />
|-<br />
| style="background-color:#A0E75A;" |[[Template:Releases/4.2.6|4.2.6]]||2017-08-01|||<br />
|-<br />
| style="background-color:#66ccff;" |[https://github.com/gramps-project/gramps/releases/tag/v5.0.0-alpha3 5.0.0-alpha3 (unstable)]||2017-09-02||<br />
|-<br />
|}<br />
<br />
== See also ==<br />
* [[News|Changelog]]<br />
* [[History of Gramps]]<br />
* [[Features#Checklist]] - table<br />
* [[Gramps XML]] - Database version<br />
* [[What to do for a release]]<br />
<br />
[[Category:Community/General]]<br />
[[Category:Documentation]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=What_to_do_for_a_release&diff=64593What to do for a release2017-08-27T05:18:25Z<p>PaulFranklin: </p>
<hr />
<div>{{man note|Developer notes for '''What to do for a release '''}}<br />
<br />
Note that the main use of this page will be for making<br />
a normal "minor" release. If you are making a "major"<br />
release (e.g. x.y.0) then you will need to update this<br />
page first, to change the numbers. But if you are only<br />
making an "alpha" or "beta" release, some<br />
steps may be skipped, or altered slightly.<br />
<br />
Note also that<br />
there are additional things which need to be done,<br />
which are related to making a new release, for instance<br />
making a new release-section here on the wiki, or<br />
making a new release-section on the bug tracker, or<br />
making new Debian and Mac and Windows packages, so<br />
they will need to be coordinated with the appropriate<br />
people. Probably there should be a section of this<br />
page which lists things like that ("Post-release" maybe?).<br />
<br />
==Prepare your repository==<br />
* Check out the current stable branch:<br />
git checkout maintenance/gramps{{Stable_branch}}<br />
:That branch name assumes that you're using the same name as the Github repository; if you're not (perhaps you don't use <code>maintenance</code> in the name) use your local name.<br />
* Make sure that your local copy is clean:<br />
git status<br />
: If you have any uncommitted changes, either commit them now or stash them until after you've completed the release.<br />
* Clean up any untracked files and make sure that the local repo is up to date:<br />
git clean -fdx<br />
git pull --rebase<br />
:If you had commits that hadn't been pushed yet they'll show up as "applying" messages in the output of this command. If that's the case re-run the tests and push as usual.<br />
* Build and test to make sure that everything works, then clean the repo of all build products.<br />
<br />
==Translation update==<br />
* Check for new files since the last release:<br />
cd po<br />
intltool-update -m <br />
:That will create a file called <code>missing</code>in the <code>po</code> directory if there are new files that need to be scanned for translatable strings. Examine each of the files listed in <code>missing</code>, adding each to <code>POTFILES.in</code> if it contains translatable string constants and to <code>POTFILES.skip</code> if it does not.<br />
* Generate a new template file:<br />
python3 update_po.py -p # makes a new gramps.pot template file<br />
git diff gramps.pot<br />
:Examine the changes. If they're all just comments about where a string is found you need not commit the change (so the next line will restore the official file, instead of the one you just made):<br />
git checkout gramps.pot<br />
:If there have been changes on <code>msgid</code> entries, you'll need to commit <code>gramps.pot</code> and ask translators to update their <tt>.po</tt> files before you can make a release:<br />
git add gramps.pot<br />
git commit -m "Update translation template for new release."<br />
<br />
* Check current translation files (there must be no 'fatal' errors):<br />
python3 update_po.py -k all<br />
<br />
* if all is well, return to the root directory:<br />
cd ..<br />
<br />
==Release name==<br />
Refer to (and update) the [[Previous releases of Gramps|list of previous releases]]. Previously you needed to select an appropriate name but we have not named releases for several years now. You will<br />
still need to add the release though, including things like its<br />
relevant color.<br />
<br />
==Changelog and NEWS file==<br />
<br />
[https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html#section2 Section ''2a''] of the '''G'''eneral '''P'''ublic '''L'''icense says that if you distribute a modified version of a program: ''you must cause the modified files to carry prominent notices stating that you changed the files and the date of any change''. <br />
<br />
Note that the <code>{{version}}</code> below means the ''previous'' version, not the one you're about to release (which is the<br />
<code>..</code>).<br />
git log v{{version}}.. --pretty --numstat --summary --no-merges | git2cl > ChangeLog<br />
git log v{{version}}.. --pretty --numstat --summary --no-merges -- po/*.po | git2cl > po/ChangeLog<br />
git add ChangeLog <br />
*Edit and update the <code>NEWS</code> file using the new ChangeLog entries as a guide. If this is the first branch in a new series there will be no NEWS file, so look at a previous release and mimic the format.<br />
Commit the NEWS file:<br />
git add NEWS<br />
git commit -m "Update NEWS for {{version}} release"<br />
<br />
==Working on VERSION==<br />
<br />
* Check that the <code>VERSION_TUPLE</code> in <code>[https://github.com/gramps-project/gramps/blob/master/gramps/version.py gramps/version.py]</code>reflects the release you're about to make. It should if the version was bumped after the last release. If not, fix it.<br />
<br />
* Modify <code>[https://github.com/gramps-project/gramps/blob/master/gramps/gen/const.py#L132 gramps/gen/const.py]</code> to indicate an official release:<br />
- VERSION += git_revision<br />
+ #VERSION += git_revision<br />
<br />
* Save the changes:<br />
git commit -am "Release Gramps {{version}}"<br />
<br />
* Check that the version number is correct:<br />
python3 Gramps.py -v<br />
<br />
* If everything looks good, push the changes:<br />
git push origin maintenance/gramps{{Stable_branch}}<br />
* If that fails then someone pushed a commit while you were working. Return to [https://gramps-project.org/wiki/index.php?title=What_to_do_for_a_release#Prepare_your_repository Prepare your repository] and start over.<br />
<br />
==Create a tag==<br />
Create the release tag; note the '''v''' leading the actual tag.:<br />
git tag -am "Tag {{version}}" v{{version}}<br />
<br />
==Push to repository==<br />
Push the changes to the repository:<br />
git push origin v{{version}}<br />
<br />
===Move to the new release number on branch ===<br />
<br />
Bump the version number in <code>gramps/version.py</code><br />
<br />
Update the version for the release:<br />
VERSION_TUPLE = (4, 2, ...)<br />
<br />
Revert change on <code>gramps/gen/const.py</code> so that the git revision is appended to the reported version in non-release builds:<br />
- #VERSION += get_git_revision<br />
+ VERSION += get_git_revision<br />
<br />
Save change:<br />
git commit -am "bump to <new version number>"<br />
git push<br />
<br />
===Github===<br />
* Github generates a tarball automatically when we push a tag.<br />
* Go to [https://github.com/gramps-project/gramps Github] and log in if necessary.<br />
* Select '''NN Releases''' from the line of items just above the thick line ('''NN''' is the number of releases so far).<br />
* Find the tag you just pushed and click Edit.<br />
* Copy the NEWS file contents into the '''Write''' tab. You can use the '''Preview''' tab to check your formatting.<br />
* Click '''Publish Release''' at the bottom of the edit area when you're satisfied with the contents.<br />
<br />
===SourceForge===<br />
* Go to [https://sourceforge.net/projects/gramps/files/ the SourceForge files page] and log in if necessary.<br />
* Click on '''Stable''' or '''Unstable''' depending on the class of the release you're making.<br />
* Click '''Add Folder''' and name the directory for the release version. Click "'Create'". Click your new folder to enter it.<br />
* You can either download the Github-generated tarball or create one locallly:<br />
python3 setup.py sdist<br />
* Click '''Add File''' and drag the tarball to the drop area on the web page.<br />
<br />
==Announcing the new release==<br />
* announce on gramps-announce@lists.sourceforge.net, gramps-devel@lists.sourceforge.net and gramps-users@lists.sourceforge.net<br />
* announce on Gramps [https://gramps-project.org/introduction-WP/blog/ blog] (File under: [https://gramps-project.org/introduction-WP/category/releases/ Gramps Releases] and [https://gramps-project.org/introduction-WP/category/news/ News])<br />
* update [[News]] section on this wiki<br />
* update the list of [[Previous releases of Gramps|previous releases]]<br />
* update reference to the new version on the [[Template:Version|wiki template]]<br />
* update [[HeadlineNews]]<br />
* change the topic on the IRC channel #gramps<br />
<code> /TOPIC #gramps Welcome to Gramps! The latest versions are {{version}} and the legacy 3.4.9 || http://www.gramps-project.org/ || Please state OS and Gramps version when asking a question. Understand that replies can take up to 2 days depending on whose watching the channel. Please consider asking on the gramps-users mailing list. </code><br />
* update the version number at [http://en.wikipedia.org/wiki/Gramps Wikipedia]<br />
* update mantisdb(Bug/issue database) and enable the new version via Admin:Projects item for reporting issues.<br />
<br />
==Post-release==<br />
* merge forward the <code>NEWS</code> file<br />
<br />
=See also=<br />
* [[Git|Brief introduction to Git]]<br />
* [[Running a development version of Gramps]]<br />
* [[:Category:Developers/Packaging]]<br />
* [[GrampsAIO-4 package updating]] - Updating the MS-Windows package<br />
* [[:Category:AppData]] - Screenshots used by Appdata - Debian<br />
<br />
=External links=<br />
* https://github.com/gramps-project<br />
* http://gramps-project.org/cpanel<br />
* http://svn.code.sf.net/p/gramps/code/<br />
* http://sourceforge.net/projects/gramps/<br />
<br />
[[Category:Developers/General]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=What_to_do_for_a_release&diff=64578What to do for a release2017-08-21T21:29:17Z<p>PaulFranklin: /* Translation update */</p>
<hr />
<div>{{man note|Developer notes for '''What to do for a release '''}}<br />
<br />
Note that the main use of this page will be for making<br />
a normal "minor" release. If you are making a "major"<br />
release (e.g. x.y.0) then you will need to update this<br />
page first, to change the numbers. But if you are only<br />
making an "alpha" or "beta" release, some<br />
steps may be skipped, or altered slightly.<br />
<br />
Note also that<br />
there are additional things which need to be done,<br />
which are related to making a new release, for instance<br />
making a new release-section here on the wiki, or<br />
making a new release-section on the bug tracker, so<br />
they will need to be coordinated with the appropriate<br />
people. Probably there should be a section of this<br />
page which lists things like that.<br />
<br />
=Updated guidelines for Git =<br />
<br />
==Translation update==<br />
Run the following steps:<br />
git checkout gramps{{Stable_branch}}<br />
git pull<br />
<br />
* Translations stuff<br />
cd po<br />
intltool-update -m # then add any missing files to POTFILES.*<br />
python3 update_po.py -p # makes a new gramps.pot template file<br />
git diff gramps.pot<br />
<br />
If there have been changes on <code>msgid</code> entries, you'll need to commit <code>gramps.pot</code> and ask translators to update their <tt>.po</tt> files before you can make a release.<br />
<br />
Check current translation files (there must be no 'fatal' errors):<br />
python3 update_po.py -k all<br />
<br />
==Release name==<br />
Refer to (and update) the [[Previous releases of Gramps|list of previous releases]] to select an appropriate name.<br />
<br />
==Changelog and NEWS file==<br />
Look at the changelog:<br />
git log v{{version}}..<br />
<br />
Edit and update the <code>NEWS</code> file.<br />
Commit the NEWS file:<br />
git commit -am "update for {{version}} release"<br />
<br />
==Working on VERSION==<br />
<br />
Check <code>[https://github.com/gramps-project/gramps/blob/master/gramps/version.py gramps/version.py]</code> to indicate an official release:<br />
gedit gramps/version.py <br />
<br />
and if need, update the version for the release:<br />
VERSION_TUPLE = (4, 2, 0)<br />
<br />
Modify <code>[https://github.com/gramps-project/gramps/blob/master/gramps/gen/const.py#L132 gramps/gen/const.py]</code> to indicate an official release:<br />
- VERSION += git_revision<br />
+ #VERSION += git_revision<br />
<br />
Save change:<br />
git commit -am "make official release"<br />
<br />
The version number should be the same on "about" dialog:<br />
python3 Gramps.py<br />
or<br />
python3 Gramps.py -v<br />
<br />
==Create a tag==<br />
Create the release tag:<br />
git tag -am "tag {{version}}" v{{version}}<br />
<br />
Tags should be prefixed with the letter v.<br />
<br />
==Include ChangeLog files==<br />
<br />
[https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html#section2 Section ''2a''] of the '''G'''eneral '''P'''ublic '''L'''icense says that if you distribute a modified version of a program: ''you must cause the modified files to carry prominent notices stating that you changed the files and the date of any change''. <br />
<br />
git checkout <tag><br />
git log v{{version}}.. --pretty --numstat --summary --no-merges | git2cl > ChangeLog<br />
git log v{{version}}.. --pretty --numstat --summary --no-merges -- po/*.po | git2cl > po/ChangeLog<br />
git commit -am "Update ChangeLog files"<br />
git push<br />
<br />
The <code>Changelog</code> files generated with <code>git2cl</code>.<br />
<br />
Should be included on tarball generated by [[#Github|Github]].<br />
<br />
==Push to repository==<br />
Push the changes to the repository:<br />
git push origin v{{version}}<br />
<br />
==Work on tag ==<br />
<br />
===Move to the new release number on branch ===<br />
<br />
Bump the version number in <code>gramps/version.py</code><br />
<br />
Update the version for the release:<br />
VERSION_TUPLE = (4, 2, ...)<br />
<br />
Revert change on <code>gramps/gen/const.py</code> to indicate git revision:<br />
- #VERSION += get_git_revision<br />
+ VERSION += get_git_revision<br />
<br />
Save change:<br />
git commit -am "bump to <new version number>"<br />
git push<br />
<br />
===Release from tag===<br />
<br />
git checkout <tag> -b <new_branch_name><br />
<br />
==Making the source tarball available==<br />
<br />
The source tarball is generated by github in relation with the created tag.<br />
<br />
===Github===<br />
* Automatically created when tagged<br />
<br />
https://github.com/gramps-project/gramps/releases<br />
<br />
Previous way for creating the official source tarball:<br />
<br />
python3 setup.py sdist<br />
<br />
* Edit the tag and publish the release<br />
<br />
==Announcing the new release==<br />
* announce on gramps-announce@lists.sourceforge.net, gramps-devel@lists.sourceforge.net and gramps-users@lists.sourceforge.net<br />
* announce on Gramps [https://gramps-project.org/introduction-WP/blog/ blog] (File under: [https://gramps-project.org/introduction-WP/category/releases/ Gramps Releases] and [https://gramps-project.org/introduction-WP/category/news/ News])<br />
* update [[News]] section on this wiki<br />
* update the list of [[Previous releases of Gramps|previous releases]]<br />
* update reference to the new version on the [[Template:Version|wiki template]]<br />
* update [[HeadlineNews]]<br />
* change the topic on the IRC channel #gramps<br />
<code> /TOPIC #gramps Welcome to Gramps! The latest versions are {{version}} and the legacy 3.4.9 || http://www.gramps-project.org/ || Please state OS and Gramps version when asking a question. Understand that replies can take up to 2 days depending on whose watching the channel. Please consider asking on the gramps-users mailing list. </code><br />
* update the version number at [http://en.wikipedia.org/wiki/Gramps Wikipedia]<br />
* update mantisdb(Bug/issue database) and enable the new version via Admin:Projects item for reporting issues.<br />
<br />
==Post-release==<br />
* merge forward the <code>NEWS</code> file<br />
<br />
=See also=<br />
* [[Git|Brief introduction to Git]]<br />
* [[Running a development version of Gramps]]<br />
* [[:Category:Developers/Packaging]]<br />
* [[GrampsAIO-4 package updating]] - Updating the MS-Windows package<br />
* [[:Category:AppData]] - Screenshots used by Appdata - Debian<br />
<br />
=External links=<br />
* https://github.com/gramps-project<br />
* http://gramps-project.org/cpanel<br />
* http://svn.code.sf.net/p/gramps/code/<br />
* http://sourceforge.net/projects/gramps/<br />
<br />
[[Category:Developers/General]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=What_to_do_for_a_release&diff=64577What to do for a release2017-08-21T20:16:25Z<p>PaulFranklin: </p>
<hr />
<div>{{man note|Developer notes for '''What to do for a release '''}}<br />
<br />
Note that the main use of this page will be for making<br />
a normal "minor" release. If you are making a "major"<br />
release (e.g. x.y.0) then you will need to update this<br />
page first, to change the numbers. But if you are only<br />
making an "alpha" or "beta" release, some<br />
steps may be skipped, or altered slightly.<br />
<br />
Note also that<br />
there are additional things which need to be done,<br />
which are related to making a new release, for instance<br />
making a new release-section here on the wiki, or<br />
making a new release-section on the bug tracker, so<br />
they will need to be coordinated with the appropriate<br />
people. Probably there should be a section of this<br />
page which lists things like that.<br />
<br />
=Updated guidelines for Git =<br />
<br />
==Translation update==<br />
Run the following steps:<br />
git checkout gramps{{Stable_branch}}<br />
git pull<br />
<br />
* Translations stuff<br />
cd po<br />
python3 update_po.py -p <br />
git diff gramps.pot<br />
<br />
If there have been changes on <code>msgid</code> entries, you'll need to commit <code>gramps.pot</code> and ask translators to update their <tt>.po</tt> files before you can make a release.<br />
<br />
Check current translation files (there must be no 'fatal' errors):<br />
python3 update_po.py -k all<br />
<br />
==Release name==<br />
Refer to (and update) the [[Previous releases of Gramps|list of previous releases]] to select an appropriate name.<br />
<br />
==Changelog and NEWS file==<br />
Look at the changelog:<br />
git log v{{version}}..<br />
<br />
Edit and update the <code>NEWS</code> file.<br />
Commit the NEWS file:<br />
git commit -am "update for {{version}} release"<br />
<br />
==Working on VERSION==<br />
<br />
Check <code>[https://github.com/gramps-project/gramps/blob/master/gramps/version.py gramps/version.py]</code> to indicate an official release:<br />
gedit gramps/version.py <br />
<br />
and if need, update the version for the release:<br />
VERSION_TUPLE = (4, 2, 0)<br />
<br />
Modify <code>[https://github.com/gramps-project/gramps/blob/master/gramps/gen/const.py#L132 gramps/gen/const.py]</code> to indicate an official release:<br />
- VERSION += git_revision<br />
+ #VERSION += git_revision<br />
<br />
Save change:<br />
git commit -am "make official release"<br />
<br />
The version number should be the same on "about" dialog:<br />
python3 Gramps.py<br />
or<br />
python3 Gramps.py -v<br />
<br />
==Create a tag==<br />
Create the release tag:<br />
git tag -am "tag {{version}}" v{{version}}<br />
<br />
Tags should be prefixed with the letter v.<br />
<br />
==Include ChangeLog files==<br />
<br />
[https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html#section2 Section ''2a''] of the '''G'''eneral '''P'''ublic '''L'''icense says that if you distribute a modified version of a program: ''you must cause the modified files to carry prominent notices stating that you changed the files and the date of any change''. <br />
<br />
git checkout <tag><br />
git log v{{version}}.. --pretty --numstat --summary --no-merges | git2cl > ChangeLog<br />
git log v{{version}}.. --pretty --numstat --summary --no-merges -- po/*.po | git2cl > po/ChangeLog<br />
git commit -am "Update ChangeLog files"<br />
git push<br />
<br />
The <code>Changelog</code> files generated with <code>git2cl</code>.<br />
<br />
Should be included on tarball generated by [[#Github|Github]].<br />
<br />
==Push to repository==<br />
Push the changes to the repository:<br />
git push origin v{{version}}<br />
<br />
==Work on tag ==<br />
<br />
===Move to the new release number on branch ===<br />
<br />
Bump the version number in <code>gramps/version.py</code><br />
<br />
Update the version for the release:<br />
VERSION_TUPLE = (4, 2, ...)<br />
<br />
Revert change on <code>gramps/gen/const.py</code> to indicate git revision:<br />
- #VERSION += get_git_revision<br />
+ VERSION += get_git_revision<br />
<br />
Save change:<br />
git commit -am "bump to <new version number>"<br />
git push<br />
<br />
===Release from tag===<br />
<br />
git checkout <tag> -b <new_branch_name><br />
<br />
==Making the source tarball available==<br />
<br />
The source tarball is generated by github in relation with the created tag.<br />
<br />
===Github===<br />
* Automatically created when tagged<br />
<br />
https://github.com/gramps-project/gramps/releases<br />
<br />
Previous way for creating the official source tarball:<br />
<br />
python3 setup.py sdist<br />
<br />
* Edit the tag and publish the release<br />
<br />
==Announcing the new release==<br />
* announce on gramps-announce@lists.sourceforge.net, gramps-devel@lists.sourceforge.net and gramps-users@lists.sourceforge.net<br />
* announce on Gramps [https://gramps-project.org/introduction-WP/blog/ blog] (File under: [https://gramps-project.org/introduction-WP/category/releases/ Gramps Releases] and [https://gramps-project.org/introduction-WP/category/news/ News])<br />
* update [[News]] section on this wiki<br />
* update the list of [[Previous releases of Gramps|previous releases]]<br />
* update reference to the new version on the [[Template:Version|wiki template]]<br />
* update [[HeadlineNews]]<br />
* change the topic on the IRC channel #gramps<br />
<code> /TOPIC #gramps Welcome to Gramps! The latest versions are {{version}} and the legacy 3.4.9 || http://www.gramps-project.org/ || Please state OS and Gramps version when asking a question. Understand that replies can take up to 2 days depending on whose watching the channel. Please consider asking on the gramps-users mailing list. </code><br />
* update the version number at [http://en.wikipedia.org/wiki/Gramps Wikipedia]<br />
* update mantisdb(Bug/issue database) and enable the new version via Admin:Projects item for reporting issues.<br />
<br />
==Post-release==<br />
* merge forward the <code>NEWS</code> file<br />
<br />
=See also=<br />
* [[Git|Brief introduction to Git]]<br />
* [[Running a development version of Gramps]]<br />
* [[:Category:Developers/Packaging]]<br />
* [[GrampsAIO-4 package updating]] - Updating the MS-Windows package<br />
* [[:Category:AppData]] - Screenshots used by Appdata - Debian<br />
<br />
=External links=<br />
* https://github.com/gramps-project<br />
* http://gramps-project.org/cpanel<br />
* http://svn.code.sf.net/p/gramps/code/<br />
* http://sourceforge.net/projects/gramps/<br />
<br />
[[Category:Developers/General]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Gramps_4.2_Wiki_Manual_-_Settings&diff=64549Gramps 4.2 Wiki Manual - Settings2017-08-15T17:44:17Z<p>PaulFranklin: </p>
<hr />
<div>{{man index|Gramps 4.2 Wiki Manual - Tools|Gramps 4.2 Wiki Manual - Filters|4.2}}<br />
{{languages|Gramps_4.2_Wiki_Manual_-_Settings}}<br />
{{#vardefine:chapter|13}}<br />
{{#vardefine:figure|0}}<br />
This section deals with various settings you can manage within Gramps.<br />
<br />
== Preferences ==<br />
<br />
[[File:EditPreferencesTabsOnly-42.png|right|thumb|650px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} The tabs on the top of Preferences]]<br />
<br />
Most of the settings in Gramps are configured in the {{man label|Preferences}} dialog. To invoke it, select the menu {{man menu|Edit ->Preferences...}}.<br />
<br />
The tabs on the top display the available option categories.<br />
{{-}}<br />
=== General ===<br />
<br />
[[File:Edit-preferences-general-tab-42.png|Right|thumb|550px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} General Preferences]]<br />
<br />
This tab contains preferences relevant to the general operation of the program. Options are:<br />
<br />
*{{checkbox|0}}{{man label|Use alternate Font handler for GUI and Reports}}: This checkbox option affects the appearance of Unicode characters when those characters are not part of the font in use. The standard Windows font handler uses substitute fonts when characters are not available. For some users, the alternate font handler does a better job of substituting the fonts. This option only appears on and effects Windows users. If you have characters on your screen or report that display incorrectly (typically look like a little box with numbers in it), try selecting this setting. You must restart Gramps for this setting to take effect.<br />
*{{checkbox|0}}{{man label|Add default source on GEDCOM import}}: This checkbox option affects the importing of [[Gramps_4.2_Wiki_Manual_-_Manage_Family_Trees#GEDCOM_import|GEDCOM data]]. If this is set, each item that is imported will contain a source reference to the imported file.<br />
{{man menu| Note - Adding a default source can significantly slow down the importing of your GEDCOM data.}}<br />
*{{checkbox|0}}{{man label|Add tag on import}}: Checkbox (Default: <code>Imported %Y/%m/%d %H:%M:%S</code> )<br />
*{{checkbox|0}}{{man label|Enable spelling checker}}: This checkbox option controls the enabling and disabling of the spelling checker for notes. The '''gtkspell''' package must be loaded for this to have an effect.<br />
*{{checkbox|0}}{{man label|Display Tip of the Day}}: This checkbox option controls the enabling and disabling of the {{man label|[[Gramps_4.2_Wiki_Manual_-_Settings#Tip_of_the_Day_dialog|Tip of the Day]]}} dialog at startup.<br />
*{{checkbox|0}}{{man label|Remember last view displayed}}: This checkbox option controls the enabling and disabling of the the display of the last view. Enabling will bring you to the view where you stopped the program the last time.<br />
*{{man label|Max Generations for Relationships:}} You can enter the number of generations used to determine relationships. The default value is '''<code>15</code>'''.<br />
*{{man label|Base path for relative media paths:}} Here you can fill in a base path for the media objects. Selecting the {{man button|Directory}} button gives you a {{man label|Select media directory}} editor where you can fill in the required path.<br />
*{{man label|Check for updates:}} Select the frequency that Gramps checks for updates to [[4.2_Addons#Installing_Addons_in_Gramps|Addons]]. Default: ''Never''<br />
*{{man label|What to check:}} Default: ''New addons only''<br />
*{{man label|Where to check:}} Default: <code>https://raw.githubusercontent.com/gramps-project/addons/master/gramps42</code><br />
*{{checkbox|1}}{{man label|Do not ask about previously notified addons}}: Checkbox selected by default<br />
*{{man button|Check now}}: Button to force a check for Addons, if Addons are available you will then be presented the {{man label|[[Gramps_4.2_Wiki_Manual_-_Settings#Available_Gramps_Updates_for_Addons|Available Gramps Updates for Addons]]}} window where you choose and install them from.<br />
{{-}}<br />
<br />
=====Available Gramps Updates for Addons=====<br />
[[File:AvailableGrampsUpdatesforAddons-example-listing-gramps42.png|Right|thumb|550px|"Available Gramps Updates for Addons" window showing example listing output for Gramps 4.2]]<br />
<br />
The {{man label|Available Gramps Updates for Addons}} window you will be shown a list broken down by '''Type''' that you can view by selecting the "Select" column expand out each "Type".<br />
* You can then select the check box of those Addons you want to install.<br />
* Then select the {{man button|Install Selected Addons}} button to download those Addons from the ''Internet''.<br />
* Once downloaded from the {{man label|Done downloading and installing addons}} dialog select the {{man button|Close}} button<br />
* From the {{man label|Preferences}} dialog select {{man button|Close}} button.<br />
* To use the Addons you need to {{man menu|Family Trees>Quit}} and restart Gramps.<br />
<br />
{{-}}<br />
<br />
====Tip of the Day dialog====<br />
<br />
[[File:Tip-of-the-day-dialog-42.png|Right|thumb|400px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Tip of the Day dialog]]<br />
<br />
When enabled in {{man menu|Edit > Preferences}} {{man label|General}} tab the {{man label|Tip of the Day}} dialog shows helpful hints.<br />
<br />
The following options are available:<br />
*{{checkbox|1}} {{man label|Display on startup}} (check box checked by default - once enabled) - uncheck to stop further tips appearing.<br />
*{{man button|Forward}} - Advance to the next tip.<br />
*{{man button|Close}} - exit for this session until the Gramps program is restarted.<br />
{{-}}<br />
<br />
=== Family Tree ===<br />
<br />
[[File:EditPreferencesDatabase-40.png|right|thumb|400px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Family Tree Preferences]]<br />
<br />
This tab contains preferences relevant to the Family Tree Database path.<br />
<br />
*{{man label|Family Tree Database path:}} The default path where the Databases are stored is '''home directory<code>/.gramps/grampsdb</code>'''. Unless you absolutely want to change this, stay with the default path. This path will be located in the relevant Operating Systems [[Gramps_4.2_Wiki_Manual_-_User_Directory|User Directory]].<br />
*{{checkbox|0}}{{man label|Automatically load last family tree}}: This checkbox option controls the enabling and disabling of the loading on start up of the last used database.<br />
{{-}}<br />
<br />
=== Display ===<br />
<br />
[[File:Edit-Preferences-Display-tab-defaults-41.png|right|thumb|400px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Display Preferences]]<br />
<br />
This tab contains preferences relevant to the display of data and names. Options are:<br />
<br />
*{{man label|Name format:}} This option controls the display of names. In Gramps there are two type of name display formats: the predefined formats, and the user defined custom formats. Several different predefined name formats are available: Given - Prefix Patronymic, Suffix Given - Prefix Surname, Given Patronymic Suffix etc. <br />
** Clicking on the right hand side {{man button|Edit...}} button will bring up a {{man label|[[Gramps_4.2_Wiki_Manual_-_Settings#Display_Name_Editor|Display Name Editor]]}} window where the available list of options is shown. The format is given as well as an example. When predefined formats are not suitable one can define one's own format. You can use the {{man button|Add}} button to add a Name format to the list. Clicking once will give you a '''SURNAME,Given Suffix(call)''' format and as example : '''SMITH, Edwin Jose Sr (Ed)'''. If you added new name formats to the list the {{man button|Remove}} and {{man button|Edit}} buttons become available to change the name format list. <br />
***{{checkbox|0}}{{man label|Consider single pa/matronymic as surname}}: Checkbox unselected by default. If selected enables Gramps to consider patronymic and matronymic names as surnames.<br />
<br />
{{man note|1=Note|2=Besides the system wide setting Gramps allows deciding the name display format individually for every single name via the {{man label|Display Name Editor}} dialog}}<br />
<br />
*{{man label|Date format:}} This option controls the display of dates. Several different formats are available, which may be dependent on your locale. Default: '''YYYY-MM-DD (ISO)'''<br />
<br />
*{{man label|Age display precision(requires restart):}} '''Years'''(default)<br />
<br />
*{{man label|Calendar on reports:}} '''Gregorian'''(default). This option controls the display of calendar on reports, tools, gramplets, views. Several different calendars are available (see [[Gramps_4.2_Wiki_Manual_-_Entering_and_Editing_Data:_Detailed_-_part_1#Editing_dates|Date Edition]]). Two dates with two different calendars will not properly display timeline or period, (e.g. Using the Gregorian calendar as the default displayed calendar, users will have a better coherency for displaying dates on period).<br />
<br />
*{{man label|Surname Guessing:}} This option affects the initial family name of a child when he/she is added to the database. The default {{man label|Father's surname}} will use the family name of the father. Selecting {{man label|None}} means that no surname guessing will be attempted. Selecting {{man label|Combination of mother's and father's surname}} will use the father's name followed by the mother's name. Finally, {{man label|Icelandic style}} will use the father's given name followed by the "sson" suffix (e.g. the son of Edwin will be guessed as Edwin''sson'').<br />
<br />
{{man tip|1=Tip |2=The {{man label|Surname Guessing:}} option only affects the initial family name guessed by Gramps when the {{man label|Edit Person}} dialog is launched.<br />
You can modify that name the way you see fit. Set this option to the value that you will most frequently use, as it will save you a lot of typing.}}<br />
<br />
*{{man label|Default family relationship:}} <br />
** '''Unknown'''(default)<br />
** Married <br />
** Unmarried <br />
** Civil Union<br />
<br />
*{{man label|Height multiple surname box(pixels):}} Default:'''150'''<br />
<br />
*{{man label|Status bar:}} This option controls the information displayed in the status bar. This can be either the '''Active person's name and ID'''(default) or '''Relationship to home person'''.<br />
<br />
*{{checkbox|1}}{{man label|Show text in sidebar buttons(requires restart)}} ''checked'' (default) This checkbox controls whether or not a text description is displayed next to the icon in the Navigator sidebar. This option takes effect after the program has been restarted.<br />
<br />
*{{checkbox|0}}{{man label|Show close button in gramplet bar tabs}} ''unchecked''(default)<br />
<br />
====Display Name Editor====<br />
<br />
{{man note|1=Note|2=Custom name display formats are stored in the Family Trees, thus before loading any Family Tree the {{man label|Custom format details}} expander is disabled.}}<br />
<br />
[[File:Edit-preferences-display-tab-display-name-editor-42.png|right|thumb|460px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Display Name Editor]]<br />
<br />
The following keywords are replaced with the appropriate name parts:<br />
* <b>Given</b> - given name (first name) <br />
* <b>Title</b> - title (Dr., Mrs.) <br />
* <b>Call</b> - call name <br />
* <b>Initials</b> - first letters of Given <br />
* <b>Primary, Primary[pre] or [sur] or [con]</b>- full primary surname, prefix, surname only, connector <br />
* <b>Patronymic, or [pre] or [sur] or [con]</b> - full pa/matronymic surname, prefix, surname only, connector <br />
* <b>Familynick</b> - family nick name <br />
* <b>Rest</b> - non primary surnames <br />
* <b>Rawsurnames</b>- surnames (no prefixes and connectors)<br />
* <b>Surname</b> - surnames (with prefix and connectors)<br />
* <b>Suffix</b> - suffix (Jr., Sr.)<br />
* <b>Nickname</b> - nick name<br />
* <b>Common</b> - nick name, otherwise first of Given<br />
* <b>Prefix</b> - all prefixes (von, de) <br />
* <b>Notpatronymic</b>- all surnames, except pa/matronymic &amp; primary<br />
<br />
{{man menu|UPPERCASE versions of these keywords forces uppercase to be displayed.}} Extra parentheses, commas are removed. Other text appears literally.<br />
<br />
Example: 'Dr. Edwin Jose von der Smith and Weston Wilson Sr ("Ed") - Underhills'<br><i>Edwin Jose</i> is given name, <i>von der</i> is the prefix, <i>Smith</i> and <i>Weston</i> surnames,<br><i>and</i> a connector, <i>Wilson</i> patronymic surname, <i>Dr.</i> title, <i>Sr</i> suffix, <i>Ed</i> nick name,<br><i>Underhills</i> family nick name, <i>Jose</i> callname.<br />
{{-}}<br />
<br />
=== Places ===<br />
<br />
{{man note|New Feature - introduced in Gramps 4.1|[[Hierarchical Place Structure]]}}<br />
<br />
[[File:EditPreferencesPlaces-42.png|right|thumb|400px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Menu: Edit > Preferences... - Places tab]]<br />
<br />
This tab contains preferences relevant to how Places should be shown. <br />
<br />
*{{checkbox|1}} {{man label|Enable automatic place title generation}} (checkbox checked by default)<br />
*{{checkbox|0}} {{man label|Suppress comma after house number}} (checkbox unchecked by default) - For this option to work, the street must have the [[Gramps_4.2_Wiki_Manual_-_Entering_and_editing_data:_detailed_-_part_2#Place_Editor_dialog|'''Type''']] ''Street'' and house number must have the '''Type''' ''Number''.<br />
*{{checkbox|0}} {{man label|Reverse display order}} (checkbox unchecked by default)<br />
* Drop down list {{man label|Restrict}} with the following options:<br />
** '''Full place name''' (Default)<br />
** ''-> Hamelet/VillageTown/City''<br />
** ''Hamlet/VillageTown/City ->''<br />
*{{man label|Language:}} (Empty by Default)<br />
<br />
<br />
See also:<br />
* [[Gramps_4.2_Wiki_Manual_-_Entering_and_editing_data:_detailed_-_part_2#Place_Editor_dialog|Place Editor dialog]]<br />
* [[Gramps_4.2_Wiki_Manual_-_Entering_and_editing_data:_detailed_-_part_2#Place_Name_Editor_dialog|Place Name Editor dialog]]<br />
{{-}}<br />
<br />
=== Text ===<br />
<br />
[[File:EditPreferencesText-40.png|right|thumb|350px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Text Preferences]]<br />
<br />
This tab contains preferences relevant to how missing and private names and records should be shown.<br />
<br />
*{{man label|Missing surname:}} in the input field you can determine how a missing surname should be displayed. Default value is '''<code>[Missing Surname]</code>'''. You can change this to [--] or whatever is most convenient for you.<br />
*{{man label|Missing given name}} in the input field you can determine how a missing given name should be displayed. Default value is '''<code>[Missing Given Name]</code>'''. You can change this to whatever you want.<br />
*{{man label|Missing record:}} Default: <code>[Missing Record]</code><br />
*{{man label|Private surname:}} Default: <code>[Living]</code><br />
*{{man label|Private given name:}} Default: <code>[Living]</code><br />
*{{man label|Private record:}} Default: <code>[Private Record]</code><br />
{{-}}<br />
=== ID Formats ===<br />
<br />
{{man tip|ID Prefixes |The ID prefixes use formatting conventions common for C, Python, and other programming languages. For example, the <code>%04d</code> expands to an integer, prepended with zeros to have the total width of four digits. If you would like IDs to be 1, 2, 3, etc., simply set the formatting parameter to <code>%d</code>, the 'd' specifies Decimal Integer, outputting the number in base 10.<br /><br />See: Python [https://docs.python.org/3.4/library/string.html#format-specification-mini-language (String) Format Specification Mini-Language]}}<br />
<br />
[[File:EditPreferencesIDFormats-40.png|right|thumb|350px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} ID Formats Preferences]]<br />
<br />
This tab contains preferences relevant to the automatic generation of Gramps IDs.<br />
<br />
*{{man label|Person:}} Provides the template for generating IDs for a Person. Default value: <code>I%04d</code><br />
*{{man label|Family:}} Provides the template for generating IDs for a Family. Default value: <code>F%04d</code><br />
*{{man label|Place:}} Provides the template for generating IDs for a Place. Default value: <code>P%04d</code><br />
*{{man label|Source:}} Provides the template for generating IDs for a Source. Default value: <code>S%04d</code><br />
*{{man label|Citation:}} Provides the template for generating IDs for a Citation. Default value: <code>C%04d</code><br />
*{{man label|Media Object:}} Provides the template for generating IDs for a Media Object. Default value: <code>O%04d</code><br />
*{{man label|Event:}} Provides the template for generating IDs for an Event. Default value: <code>E%04d</code><br />
*{{man label|Repository:}} Provides the template for generating IDs for a Repository. Default value: <code>R%04d</code><br />
*{{man label|Note:}} Provides the template for generating IDs for a Note. Default value: <code>N%04d</code><br />
<br />
<br />
You can use the [[Gramps_4.2_Wiki_Manual_-_Tools#Reorder_Gramps_ID|Reorder Gramps ID]] tool to change the format.<br />
{{-}}<br />
<br />
=== Dates ===<br />
<br />
[[File:EditPreferencesDates-40.png|right|thumb|350px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Dates Preferences]]<br />
<br />
*{{man label|Date about range:}} Default: <code>50</code><br />
*{{man label|Date after range:}} Default: <code>50</code><br />
*{{man label|Date before range:}} Default: <code>50</code><br />
*{{man label|Maximum age probably alive:}} Default: <code>110</code><br />
*{{man label|Maximum sibling age difference:}} Default: <code>20</code><br />
*{{man label|Minimum years between generations:}} Default: <code>13</code><br />
*{{man label|Average years between generations:}} Default: <code>20</code><br />
*{{man label|Markup for invalid date format:}} Default: <code>&lt;b>%s&lt;/b></code><br />
** Convenience markups are:<br />
*** <b>&lt;b&gt;Bold&lt;/b&gt;</b> (Default)<br />
*** <big>&lt;big&gt;Makes font relatively larger&lt;/big&gt;</big><br />
*** <i>&lt;i&gt;Italic&lt;/i&gt;</i><br />
*** <s>&lt;s&gt;Strikethrough&lt;/s&gt;</s><br />
*** <sub>&lt;sub&gt;Subscript&lt;/sub&gt;</sub><br />
*** <sup>&lt;sup&gt;Superscript&lt;/sup&gt;</sup><br />
*** <small>&lt;small&gt;Makes font relatively smaller&lt;/small&gt;</small><br />
*** <tt>&lt;tt&gt;Monospace font&lt;/tt&gt;</tt><br />
*** <u>&lt;u&gt;Underline&lt;/u&gt;</u><br />
**** For example: &lt;u&gt;&lt;b&gt;%s&lt;/b&gt;&lt;/u&gt; will display <u><b>Underlined bold date</b></u>.<br />
{{-}}<br />
<br />
=== Researcher ===<br />
<br />
[[File:EditPreferencesResearcher-40.png|right|thumb|350px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Researcher Preferences]]<br />
Allows you to {{man label|Enter your information so people can contact you when you distribute your Family Tree}} in the corresponding text entry fields. Although Gramps requests information about you, this information is used only so that Gramps can create valid GEDCOM output files. A valid GEDCOM file requires information about the file's creator. If you choose, you may leave the information empty, however none of your exported GEDCOM files will be valid.<br />
<br />
The available text entry fields are (by default all fields are blank):<br />
*{{man label|Name:}}<br />
*{{man label|Address:}}<br />
*{{man label|Locality:}}<br />
*{{man label|City:}}<br />
*{{man label|State/County:}}<br />
*{{man label|Country:}}<br />
*{{man label|ZIP/Postal Code:}}<br />
*{{man label|Phone:}}<br />
*{{man label|Email:}}<br />
<br />
The information entered under this preference acts as default value for family tree specific values that can be adjusted with the [[Gramps_4.2_Wiki_Manual_-_Tools#Edit_Database_Owner_Information|Edit Database Owner Information]] tool.<br />
{{-}}<br />
<br />
=== Warnings ===<br />
<br />
[[File:EditPreferencesWarnings-40.png|right|thumb|350px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Warning Preferences]]<br />
<br />
This tab controls the display of warning dialogs, allowing the re-enabling of dialogs that have been disabled.<br />
<br />
*{{checkbox|1}}{{man label|Suppress warning when adding parents to a child.}} Checkbox checked by Default (See [[Gramps_4.2_Wiki_Manual_-_Error_and_Warning_Reference#Suppress_warning_when_adding_parents_to_a_child|Dialog]])<br />
*{{checkbox|0}}{{man label|Suppress warning when cancelling with changed data.}} Checkbox unchecked by Default (See [[Gramps_4.2_Wiki_Manual_-_Error_and_Warning_Reference#Suppress_warning_when_cancelling_with_changed_data|Dialog]])<br />
*{{checkbox|0}}{{man label|Suppress warning about missing researcher when exporting to GEDCOM.}} Checkbox unchecked by Default (See [[Gramps_4.2_Wiki_Manual_-_Error_and_Warning_Reference#Suppress_warning_about_missing_researcher_when_exporting_to_GEDCOM|Dialog]])<br />
*{{checkbox|0}}{{man label|Show plugin status dialog on plugin load error.}} Checkbox unchecked by Default (See [[Gramps_4.2_Wiki_Manual_-_Error_and_Warning_Reference#Module_not_loaded_warnings|Dialog]])<br />
<br />
<br />
See the [[Gramps_4.2_Wiki_Manual_-_Error_and_Warning_Reference|Error and Warning Reference]] page for examples.<br />
{{-}}<br />
<br />
=== Colors ===<br />
<br />
[[File:EditPreferencesColors-40.png|right|thumb|450px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Color Preferences]]<br />
<br />
This tab allows you to ''Set the colors used for boxes in the graphical views''<br />
{{-}}<br />
==== Pick a Color selector ====<br />
<br />
[[File:Pick-a-color-42.png|right|thumb|450px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Pick a Color selector]]<br />
<br />
Select a color from the color pallet area, or select the {{man label|Custom}} {{man button|+}} button to create your own color either via direct 'color Hex color code'; the slider or mouse click.<br />
{{-}}<br />
<br />
== Other settings ==<br />
<br />
Besides {{man label|Preferences}} dialog, there are other settings available in Gramps. For various reasons they have been made more readily accessible, as listed below.<br />
<br />
===Column Editor===<br />
<br />
{{man note| Column Editor |The Column Editor is available in all Views and works the same way in each.}}<br />
<br />
[[Image:Column-editor-40.png|right|thumb|250px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Column Editor Dialog]]<br />
<br />
The columns of the list views may be added, removed, or reordered in a {{man label|Column Editor}} dialog. To use the {{man label|Column Editor }} dialog, choose via the menu {{man menu|View ->Configure View...}} or click on toolbar {{man button|Configure View...}} button. Only checked columns will be shown in the view. You can also change the position of a column in People View by clicking and dragging it to a new position in the Editor ([http://en.wikipedia.org/wiki/Drag-and-drop ''drag and drop'']). Once you have made the changes you want, click {{man button|OK}} to exit the Editor and see your changes in the View.<br />
<br />
By default, the View List, displays several columns of information about the respective category. You can add or remove columns to and from the display <br />
<br />
The default sort key for the view [always ascending] is the left-most field [i.e. at the top in the Column Editor], so changing which field is in that position affects default sorting.<br />
<br />
{{man tip|1=Column Editor|2=The {{man label|Column Editor}} is available and works in the same way for all list views. Specifically, it is available for People View, Family View (children list). Sources View, Citations View, Places View, Media View, Repositories View and the Notes View.}}<br />
{{-}}<br />
=== Sorting columns ===<br />
<br />
[[File:People-category-list-view-sort-birth-date-column-example-42.png|right|thumb|400px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Example of sorting "Birth Date" column in People Category - List View]]<br />
<br />
Clicking once sorts in ascending order, clicking again sorts in descending order. The {{man label|Column Editor}} dialog can be used to add, remove and rearrange the displayed columns, or to change the default sorting of the view [though always ascending].<br />
{{-}}<br />
===Setting Home person===<br />
<br />
To set the Home person, select the People Category and make the desired person active and then choose via the menu {{man menu|Edit ->Set Home Person}}.<br />
<br />
[[File:MenuEdit-SetHomePerson-40.png|right|thumb|400px|Menu showing ''Set Home Person'']]<br />
<br />
The Home person is the default person who becomes active when one of the following occurs:<br />
*the Family tree database is opened<br />
*when the toolbar {{man button|Home}} button is clicked<br />
*the Home menu item is selected from either the {{man button|Go}} menu or the right-click context menu in selected views<br />
*the [[Gramps_4.2_Wiki_Manual_-_Keybindings#15|keybinding]] {{Man key press|ALT|Home}} is used to return to the '''Home Person'''. <br />
<br />
The toolbar {{man button|Home}} button is available in the People Category, Relationships Category, and Pedigree Category.<br />
<br />
* [[Gramps_4.2_Wiki_Manual_-_Navigation#Setting_the_Home_Person|Setting the Home Person]]<br />
{{-}}<br />
===Adjusting viewing controls===<br />
<br />
Whether the toolbar, the sidebar, or the filter (not available on Pedigree and Relationships Views) are displayed in the main window is adjusted through the View menu.<br />
<br />
In the different views clicking the {{man menu|[[Gramps_4.2_Wiki_Manual_-_Navigation#View|View]]}} menu will shows for boxes you can click:<br />
*Navigator<br />
*Toolbar<br />
*Sidebar<br />
*Bottombar<br />
*Full Screen {{man key press|F11}}<br />
<br />
Additionally, depending on the view you are in, other options will be available on {{man label|Configure}}.<br />
<br />
*Gramplets:<br />
**Set Columns to 1<br />
**Set Columns to 2<br />
**Set Columns to 3<br />
*Relationships:<br />
**Show Siblings<br />
**Show Details<br />
*Geography:<br />
**Time period<br />
**Layout<br />
<br />
All other Views: the [[Gramps_4.2_Wiki_Manual_-_Settings#Column_Editor|column editor]].<br />
<br />
===Export View===<br />
<br />
[[Image:Export_view_ods-31.png|right|thumb|400px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Export to ODS]]<br />
<br />
On most Views, displayed data could be exported, choose via the [[Gramps_4.2_Wiki_Manual_-_Navigation#Main_Menus|menu]] {{man menu|Family Trees ->Export View...}}.<br />
<br />
Gramps will export data on screen according your choice: '''CSV''' or '''Open Document''' spreadsheet format.<br />
<br />
The example shows an export to a Libreoffice Spreadsheet in the ODS format.<br />
<br />
This is a powerful function (''no limitations''), like a report.<br />
{{-}}<br />
===Modularity and plugins===<br />
<br />
See [[Gramps_4.2_Wiki_Manual_-_Plugin_Manager|Plugin Manager]] and [[Plugins4.2|Third-Party Addons]].<br />
{{-}}<br />
<br />
===Customize report output formats===<br />
{{stub}}<br />
[[File:Text-reports-document-options-42.png|thumb|right|350px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Document Options - tab defaults for Text Reports example]]<br />
<br />
What does it do? It allows you to change the fonts, font sizes, font color, background color of the text and alignment of paragraphs on the report.<br />
<br />
For most report dialogs in the top part are options related that specific report and in the lower part you will see the {{man label|[[Gramps_4.2_Wiki_Manual_-_Reports_-_part_6#Document_Options|Document Options]]}} section. <br />
<br />
From the {{man label|Style:}} drop down list you can choose an existing custom style. Or to make your own {{man label|Style:}} select the {{man button|Style Editor...}} button to show the {{man label|Document Style}} dialog and then select the {{man button|Add a new style}} button to show the {{man label|Style editor}} dialog.<br />
{{-}}<br />
====Document Styles dialog====<br />
<br />
[[File:Document-styles-dialog-42.png|thumb|right|350px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Document Styles dialog]]<br />
<br />
The {{man label|Document Styles}} dialog, list the ''default'' style and any custom styles for that report and allows you to edit or delete any custom styles you have created. Select the {{man button|Add a new style}} button to show the {{man label|Style editor}} dialog.<br />
{{-}}<br />
====Style editor dialog====<br />
<br />
The {{man label|Style editor}} dialog allow you to customize the document style specific to each report.<br />
<br />
Change the {{man label|Style sheet name:}} (<code>New Style</code>default) field to a unique name as it will appear in {{man label|Document Options}} {{man label|Style:}} drop down list.<br />
<br />
Once changes for your custom style have been finalized select the {{man button|OK}} button to save the changes or {{man button|Cancel}} to exit.<br />
<br />
{{-}}<br />
=====Style editor dialog tabs=====<br />
On the left hand side you will see the {{man label|Style}} column that list the paragraph options specific to that report that you may modify. For example the {{man label|Ahnentafel Report}} shows the style options for AHN-Entry, AHN-Generation and AHN-Title.<br />
<br />
On the right hand side are three tabs associated with each style listed in the left hand column:<br />
{{-}}<br />
======Description======<br />
<br />
[[File:Style-editor-dialog-description-options-tab-example-42.png|thumb|right|350px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Description options - (default styles for Ahnentafel Report)]]<br />
<br />
*{{man label|Description}} : The description describes what each paragraph is all about. Here the style used for the AHN-Entry.<br />
{{-}}<br />
======Font options======<br />
<br />
[[File:Style-editor-dialog-font-options-tab-example-42.png|thumb|right|350px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Font Options]]<br />
<br />
*{{man label|Font options}} : Here you can set the {{man label|Type face}} Roman or Swiss, the {{man label|Size}} of the font in pt., the {{man label|Color}} of the font and some {{man label|Options}} like Bold, Italic or Underline.<br />
{{-}}<br />
======Paragraph options======<br />
<br />
[[File:Style-editor-dialog-paragraph-options-tab-example-42.png|thumb|right|350px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} Paragraph Options]]<br />
<br />
*{{man label|Paragraph options}} : Here you set the {{man label|Alignment}}, the {{man label|Background color}}, {{man label|Indentation}}, {{man label|Spacing}} and {{man label|Borders}} of your style.<br />
{{-}}<br />
== Customizing ==<br />
Here are some ways that you can customize Gramps.<br />
=== Preferences ===<br />
<br />
See [[Gramps_4.2_Wiki_Manual_-_Settings#Preferences|Preferences]]<br />
<br />
=== Language ===<br />
<br />
Gramps has been translated into a number of [[Portal:Translators|languages]]. Usually Gramps automatically starts in your local language, as chosen for other applications, but sometimes this may not be right for you. <br />
<br />
{{stub}} '''{{man warn|tbd|Describe for each main platform how the normal language is determined and how the user can [[Howto:Change_the_language_of_reports#Run_Gramps_in_a_different_language|choose a different language]].'''}}<br />
<br />
==== Linux ====<br />
{{stub}}<br />
<br />
If you want to choose a locale 'variant' for sorting that is not the default variant, then you can start Gramps from the terminal (or console) with a different LC_COLLATE environment. For example, the default sorting (collation) variant for Swedish is "reformed", but you can instead choose "standard" by typing:<br />
export LC_COLLATE="sv_SE.UTF-8@collation=standard"<br />
python Gramps.py<br />
<br />
==== Mac OS X ====<br />
<br />
For Mac OS X see [[Mac_OS_X:Application_package#Advanced_setup|Advanced setup]] for details on how the language is normally chosen, and how to choose a special, non-default setting for the language, the sorting order or the format of such things as day and month names and number separators.<br />
<br />
==== MS Windows ====<br />
<br />
===Add Windows OS Menu Item===<br />
To make Gramps work in your selected language (See table below for your language code), complete the following:<br />
* Using your mouse right button click on the "GrampsAIOxx 4.x.x" icon on Desktop and from menu choose: Copy.<br />
* Right click anywhere on Desktop and from menu choose: Paste shortcut<br />
* New icon will be created with name: "GrampsAIOxx 4.x.x (2)"<br />
* Right click on that and from menu choose: Properties<br />
* A new window will open, click on first tab called General and change text from "GrampsAIOxx 4.x.x (2)" to something more descriptive like: "GrampsAIO Danish"<br />
** Click on second tab called Shortcut, change text in first entry called Target from (note path will vary depending on Gramps version used):<br />
***<code>"C:\Program Files(xxx)\GrampsAIOxx-4.x.x\bin\grampsw.exe"</code> to:<br />
***<code>%comspec% /c set LANG=da_DK.UTF-8 && start grampsw.exe"</code><br />
* Click OK and now when you click on that icon Gramps will start in Danish.<br />
<br />
===Change the windows LANG variables===<br />
Another option if you want Gramps to always load in say:French Canadian language, you can go to Windows > System Properties, and add the LANG variable in the user section of the environment variables dialog with the appropriate Value. <br />
<br />
The value to add is:<br />
<pre><br />
Name: LANG<br />
Value: fr_CA.UTF-8<br />
</pre><br />
<br />
===Language codes===<br />
Select from the following table of [[Portal:Translators|languages Gramps]] has been translated into:<br />
<br />
{| {{prettytable}}<br />
!Language<br />
!ISO code<br />
!Example<br />
!Notes<br />
|-<br />
| Dutch<br />
| nl_BE.UTF-8<br />
|<br />
|<br />
|-<br />
| English (British)<br />
| en_GB.UTF-8<br />
|<br />
|<br />
|-<br />
| Finnish<br />
| fi-UTF-8<br />
|<br />
|<br />
|-<br />
| French Canadian<br />
| fr_CA.UTF-8<br />
|<br />
|<br />
|-<br />
| Russian<br />
| ru_RU.UTF-8<br />
|<br />
|<br />
|-<br />
|}<br />
*The language codes are two-letter lowercase ISO language codes (such as "da") as defined by [https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes ISO 639-1].<br />
*The country codes are two-letter uppercase ISO country codes (such as "BE") as defined by [https://en.wikipedia.org/wiki/ISO_3166-1 ISO 3166-1].<br />
<br />
===Advanced manipulation of settings===<br />
{{stub}}<!--need to move to its own appendix section--><br />
<br />
Beyond the settings in Preferences, you may also wish to explore the advanced settings. These are stored in a file called gramps.ini that can be found in your personal .gramps folder in your home or user directory.<br />
<br />
{{man warn| Warning |The contents of this section is outside the scope of interest of a general user of Gramps. If you proceed with tweaking the options on the low level you may damage your Gramps installation. Be careful. '''YOU HAVE BEEN WARNED!'''}}<br />
<br />
[[Image:Gramps.ini-Example-40.png|right|thumb|400px|Fig. {{#var:chapter}}.{{#vardefineecho:figure|{{#expr:{{#var:figure}}+1}}}} The gramps.ini file]]<br />
<br />
Gramps 4.2 uses '''INI keys''' stored in the file ''gramps.ini'' under ''.gramps'' (gramplets, keys) for managing user preferences. <br />
<br />
The list has following sub-items:<br />
*behavior: typical Key names are: betawarn, enable-autobackup, use-tips...<br />
*export: export and import dirs<br />
*interface: a lot of keys regarding height and width of the different Views: e.g. event-height: 450, event-ref-height: 585, event-ref-width: 728, event-width: 712...<br />
*paths: keys related to recent imported files and dirs<br />
*preferences: keys related to preferences: all the common prefixes , todo -colors..<br />
*researcher: all information regarding the researcher<br />
<br />
{{-}}<br />
<br />
{{man index|Gramps 4.2 Wiki Manual - Tools|Gramps 4.2 Wiki Manual - Filters|4.2}}<br />
<br />
{{languages|Gramps_4.2_Wiki_Manual_-_Settings}}<br />
<br />
{{grampsmanualcopyright}}<br />
<br />
[[Category:Documentation]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=What_to_do_for_a_release&diff=64439What to do for a release2017-08-01T18:41:31Z<p>PaulFranklin: /* Work on tag */</p>
<hr />
<div>{{man note|Developer notes for '''What to do for a release '''}}<br />
=Updated guidelines for Git =<br />
<br />
==Translation update==<br />
Run the following steps:<br />
git checkout gramps{{Stable_branch}}<br />
git pull<br />
<br />
* Translations stuff<br />
cd po<br />
python3 update_po.py -p <br />
git diff gramps.pot<br />
<br />
If there have been changes on <code>msgid</code> entries, you'll need to commit <code>gramps.pot</code> and ask translators to update their <tt>.po</tt> files before you can make a release.<br />
<br />
Check current translation files (there must be no 'fatal' errors):<br />
python3 update_po.py -k all<br />
<br />
==Release name==<br />
Refer to (and update) the [[Previous releases of Gramps|list of previous releases]] to select an appropriate name.<br />
<br />
==Changelog and NEWS file==<br />
Look at the changelog:<br />
git log v{{version}}..<br />
<br />
Edit and update the <code>NEWS</code> file.<br />
Commit the NEWS file:<br />
git commit -am "update for {{version}} release"<br />
<br />
==Working on VERSION==<br />
<br />
Check <code>[https://github.com/gramps-project/gramps/blob/master/gramps/version.py gramps/version.py]</code> to indicate an official release:<br />
gedit gramps/version.py <br />
<br />
and if need, update the version for the release:<br />
VERSION_TUPLE = (4, 2, 0)<br />
<br />
Modify <code>[https://github.com/gramps-project/gramps/blob/master/gramps/gen/const.py#L132 gramps/gen/const.py]</code> to indicate an official release:<br />
- VERSION += git_revision<br />
+ #VERSION += git_revision<br />
<br />
Save change:<br />
git commit -am "make official release"<br />
<br />
The version number should be the same on "about" dialog:<br />
python3 Gramps.py<br />
or<br />
python3 Gramps.py -v<br />
<br />
==Create a tag==<br />
Create the release tag:<br />
git tag -am "tag {{version}}" v{{version}}<br />
<br />
Tags should be prefixed with the letter v.<br />
<br />
==Include ChangeLog files==<br />
<br />
[https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html#section2 Section ''2a''] of the '''G'''eneral '''P'''ublic '''L'''icense says that if you distribute a modified version of a program: ''you must cause the modified files to carry prominent notices stating that you changed the files and the date of any change''. <br />
<br />
git checkout <tag><br />
git log v{{version}}.. --pretty --numstat --summary --no-merges | git2cl > ChangeLog<br />
git log v{{version}}.. --pretty --numstat --summary --no-merges -- po/*.po | git2cl > po/ChangeLog<br />
git commit -am "Update ChangeLog files"<br />
git push<br />
<br />
The <code>Changelog</code> files generated with <code>git2cl</code>.<br />
<br />
Should be included on tarball generated by [[#Github|Github]].<br />
<br />
==Push to repository==<br />
Push the changes to the repository:<br />
git push origin v{{version}}<br />
<br />
==Work on tag ==<br />
<br />
===Move to the new release number on branch ===<br />
<br />
Bump the version number in <code>gramps/version.py</code><br />
<br />
Update the version for the release:<br />
VERSION_TUPLE = (4, 2, ...)<br />
<br />
Revert change on <code>gramps/gen/const.py</code> to indicate git revision:<br />
- #VERSION += get_git_revision<br />
+ VERSION += get_git_revision<br />
<br />
Save change:<br />
git commit -am "bump to <new version number>"<br />
git push<br />
<br />
===Release from tag===<br />
<br />
git checkout <tag> -b <new_branch_name><br />
<br />
==Making the source tarball available==<br />
<br />
The source tarball is generated by github in relation with the created tag.<br />
<br />
===Github===<br />
* Automatically created when tagged<br />
<br />
https://github.com/gramps-project/gramps/releases<br />
<br />
Previous way for creating the official source tarball:<br />
<br />
python3 setup.py sdist<br />
<br />
* Edit the tag and publish the release<br />
<br />
==Announcing the new release==<br />
* announce on gramps-announce@lists.sourceforge.net, gramps-devel@lists.sourceforge.net and gramps-users@lists.sourceforge.net<br />
* announce on Gramps blog<br />
* update [[News]] section on this wiki<br />
* update the list of [[Previous releases of Gramps|previous releases]]<br />
* update reference to the new version on the [[Template:Version|wiki template]]<br />
* update [[HeadlineNews]]<br />
* change the topic on the IRC channel #gramps<br />
<code> /TOPIC #gramps Welcome to Gramps! The latest versions are {{version}} and the legacy 3.4.9 || http://www.gramps-project.org/ || Please state OS and Gramps version when asking a question. Understand that replies can take up to 2 days depending on whose watching the channel. Please consider asking on the gramps-users mailing list. </code><br />
* update the version number at [http://en.wikipedia.org/wiki/Gramps Wikipedia]<br />
* update mantisdb(Bug/issue database) and enable the new version via Admin:Projects item for reporting issues.<br />
<br />
==Post-release==<br />
* merge forward the <code>NEWS</code> file<br />
<br />
=See also=<br />
* [[Git|Brief introduction to Git]]<br />
* [[Running a development version of Gramps]]<br />
* [[:Category:Developers/Packaging]]<br />
* [[GrampsAIO-4 package updating]] - Updating the MS-Windows package<br />
* [[:Category:AppData]] - Screenshots used by Appdata - Debian<br />
<br />
=External links=<br />
* https://github.com/gramps-project<br />
* http://gramps-project.org/cpanel<br />
* http://svn.code.sf.net/p/gramps/code/<br />
* http://sourceforge.net/projects/gramps/<br />
<br />
[[Category:Developers/General]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=What_to_do_for_a_release&diff=64438What to do for a release2017-08-01T18:40:31Z<p>PaulFranklin: /* Translation update */</p>
<hr />
<div>{{man note|Developer notes for '''What to do for a release '''}}<br />
=Updated guidelines for Git =<br />
<br />
==Translation update==<br />
Run the following steps:<br />
git checkout gramps{{Stable_branch}}<br />
git pull<br />
<br />
* Translations stuff<br />
cd po<br />
python3 update_po.py -p <br />
git diff gramps.pot<br />
<br />
If there have been changes on <code>msgid</code> entries, you'll need to commit <code>gramps.pot</code> and ask translators to update their <tt>.po</tt> files before you can make a release.<br />
<br />
Check current translation files (there must be no 'fatal' errors):<br />
python3 update_po.py -k all<br />
<br />
==Release name==<br />
Refer to (and update) the [[Previous releases of Gramps|list of previous releases]] to select an appropriate name.<br />
<br />
==Changelog and NEWS file==<br />
Look at the changelog:<br />
git log v{{version}}..<br />
<br />
Edit and update the <code>NEWS</code> file.<br />
Commit the NEWS file:<br />
git commit -am "update for {{version}} release"<br />
<br />
==Working on VERSION==<br />
<br />
Check <code>[https://github.com/gramps-project/gramps/blob/master/gramps/version.py gramps/version.py]</code> to indicate an official release:<br />
gedit gramps/version.py <br />
<br />
and if need, update the version for the release:<br />
VERSION_TUPLE = (4, 2, 0)<br />
<br />
Modify <code>[https://github.com/gramps-project/gramps/blob/master/gramps/gen/const.py#L132 gramps/gen/const.py]</code> to indicate an official release:<br />
- VERSION += git_revision<br />
+ #VERSION += git_revision<br />
<br />
Save change:<br />
git commit -am "make official release"<br />
<br />
The version number should be the same on "about" dialog:<br />
python3 Gramps.py<br />
or<br />
python3 Gramps.py -v<br />
<br />
==Create a tag==<br />
Create the release tag:<br />
git tag -am "tag {{version}}" v{{version}}<br />
<br />
Tags should be prefixed with the letter v.<br />
<br />
==Include ChangeLog files==<br />
<br />
[https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html#section2 Section ''2a''] of the '''G'''eneral '''P'''ublic '''L'''icense says that if you distribute a modified version of a program: ''you must cause the modified files to carry prominent notices stating that you changed the files and the date of any change''. <br />
<br />
git checkout <tag><br />
git log v{{version}}.. --pretty --numstat --summary --no-merges | git2cl > ChangeLog<br />
git log v{{version}}.. --pretty --numstat --summary --no-merges -- po/*.po | git2cl > po/ChangeLog<br />
git commit -am "Update ChangeLog files"<br />
git push<br />
<br />
The <code>Changelog</code> files generated with <code>git2cl</code>.<br />
<br />
Should be included on tarball generated by [[#Github|Github]].<br />
<br />
==Push to repository==<br />
Push the changes to the repository:<br />
git push origin v{{version}}<br />
<br />
==Work on tag ==<br />
<br />
===Move to the new release number on branch ===<br />
<br />
Bump the version number in <code>gramps/version.py</code><br />
<br />
Update the version for the release:<br />
VERSION_TUPLE = (4, 0, ...)<br />
<br />
Revert change on <code>gramps/gen/const.py</code> to indicate git revision:<br />
- #VERSION += get_git_revision<br />
+ VERSION += get_git_revision<br />
<br />
Save change:<br />
git commit -am "bump to <new version number>"<br />
git push<br />
<br />
===Release from tag===<br />
<br />
git checkout <tag> -b <new_branch_name><br />
<br />
==Making the source tarball available==<br />
<br />
The source tarball is generated by github in relation with the created tag.<br />
<br />
===Github===<br />
* Automatically created when tagged<br />
<br />
https://github.com/gramps-project/gramps/releases<br />
<br />
Previous way for creating the official source tarball:<br />
<br />
python3 setup.py sdist<br />
<br />
* Edit the tag and publish the release<br />
<br />
==Announcing the new release==<br />
* announce on gramps-announce@lists.sourceforge.net, gramps-devel@lists.sourceforge.net and gramps-users@lists.sourceforge.net<br />
* announce on Gramps blog<br />
* update [[News]] section on this wiki<br />
* update the list of [[Previous releases of Gramps|previous releases]]<br />
* update reference to the new version on the [[Template:Version|wiki template]]<br />
* update [[HeadlineNews]]<br />
* change the topic on the IRC channel #gramps<br />
<code> /TOPIC #gramps Welcome to Gramps! The latest versions are {{version}} and the legacy 3.4.9 || http://www.gramps-project.org/ || Please state OS and Gramps version when asking a question. Understand that replies can take up to 2 days depending on whose watching the channel. Please consider asking on the gramps-users mailing list. </code><br />
* update the version number at [http://en.wikipedia.org/wiki/Gramps Wikipedia]<br />
* update mantisdb(Bug/issue database) and enable the new version via Admin:Projects item for reporting issues.<br />
<br />
==Post-release==<br />
* merge forward the <code>NEWS</code> file<br />
<br />
=See also=<br />
* [[Git|Brief introduction to Git]]<br />
* [[Running a development version of Gramps]]<br />
* [[:Category:Developers/Packaging]]<br />
* [[GrampsAIO-4 package updating]] - Updating the MS-Windows package<br />
* [[:Category:AppData]] - Screenshots used by Appdata - Debian<br />
<br />
=External links=<br />
* https://github.com/gramps-project<br />
* http://gramps-project.org/cpanel<br />
* http://svn.code.sf.net/p/gramps/code/<br />
* http://sourceforge.net/projects/gramps/<br />
<br />
[[Category:Developers/General]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Translating_Gramps&diff=49934Translating Gramps2014-06-26T16:17:33Z<p>PaulFranklin: /* Updating your translation */</p>
<hr />
<div>{{languages|Translating Gramps}}<br />
<br />
Tips for translators of the Gramps program.<br />
<br />
The page [[Coding_for_translation|coding for translation]] may also be of interest to translators.<br />
<br />
[[Category:Translators/Categories]][[Category:Developers/General]]<br />
<br />
==Gettext file format==<br />
<br />
===Header===<br />
<br />
''msginit'' is a GNU utility, called on /po directory, which generates a header for gettext file template : '''gramps.pot'''.<br />
<br />
"Project-Id-Version: PACKAGE VERSION\n"<br />
"Report-Msgid-Bugs-To: \n"<br />
"POT-Creation-Date: 2004-12-30 10:52-0500\n"<br />
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"<br />
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"<br />
"Language-Team: LANGUAGE <LL@li.org>\n"<br />
"MIME-Version: 1.0\n"<br />
"Content-Type: text/plain; charset=CHARSET\n"<br />
"Content-Transfer-Encoding: 8bit\n"<br />
"Plural-Forms: nplurals=2; plural=(n != 1);\n"<br />
<br />
* ''Project-Id-Version'' : this is the name and version of the package. Fill it in if it has not already been filled in by xgettext. <br />
* ''Report-Msgid-Bugs-To'' : this has already been filled in by xgettext. It contains an email address or URL where you can report bugs in the untranslated strings:<br />
** Strings which are not entire sentences, see the maintainer guidelines in Preparing Strings.<br />
** Strings which use unclear terms or require additional context to be understood.<br />
** Strings which make invalid assumptions about notation of date, time or money.<br />
** Pluralisation problems.<br />
** Incorrect English spelling.<br />
** Incorrect formatting. <br />
* ''POT-Creation-Date'' : this has already been filled in by xgettext.<br />
* ''PO-Revision-Date'' : You don't need to fill this in. It will be filled by the PO file editor when you save the file.<br />
* ''Last-Translator'' : fill in your name and email address (without double quotes).<br />
* ''Language-Team'' : fill in the English name of the language, and the email address or homepage URL of the language team you are part of. Before starting a translation, it is a good idea to get in touch with your translation team, not only to make sure you don't do duplicated work, but also to coordinate difficult linguistic issues. In the Free Translation Project, each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's [http://translationproject.org/ homepage], in the "Teams" area.<br />
<br />
=== msgid / msgstr / comment / fuzzy ===<br />
<br />
#: gramps.py:10<br />
#, fuzzy<br />
msgid "File not found"<br />
msgstr ""<br />
<br />
* text after ''#'' provides a comment.<br />
** The file reference and the line number after ''#:'' <br />
** A comment on code or the main string (''msgid'') after ''#.''<br />
** A comment on your translation (''msgstr'') after ''#''<br />
This will help translator but is optional for having a translation.<br />
* ''#, fuzzy'' could be added because string is not up-to-date. It means that there was a change somewhere (a string has been added, removed or modified) and ''xgettext'' did a guess on what the translation should be. This guess is most likely not entirely correct, but it is often very close.<br />
''fuzzy'' strings are ignored, english string (''msgid'') will be used ! Need to correct/validate entry on your translation editor.<br />
* msgid is the string, present on gramps' code<br />
* msgstr is your translation string<br />
<br />
==Tips for translators==<br />
===Getting started===<br />
<br />
# Always save your translations in UTF-8 encoding '''without [https://en.wikipedia.org/wiki/Byte-order_mark BOM]''' ([http://achilles-keep-moving.blogspot.de/2011/10/msgfmt-fatal-error-with-utf-8-with-bom.html take care with ''NotePad''])<br />
# Don't overwrite the English strings, your translation should be below the original string<br />
# Take heed on special characters. You must have the same number of and types as the original string.<br />
# Verify spelling and grammar on your translation.<br />
# Don't translate "too freely". Your translation should be as close match to the original as possible<br />
# Be consistent with your translations. If you decide on a specific word/phrase for something, stick to that throughout the translation.<br />
# If possible, try the translation before sending<br />
<br />
Translating Gramps into a new language means translating English strings used in the Gramps interface. To put it shortly, this amounts to<br />
# obtaining the gramps.pot file with the strings to be translated,<br />
# translating the strings in the template, and<br />
# getting the translated file uploaded into the Gramps Git repository.<br />
Another avenue of translation is translating the documentation. This is a different and lengthy process and it is described in our [[Translating the Gramps User manual]] page. Here we will concentrate on the interface translation only.<br />
<br />
===Obtaining gramps.pot===<br />
* Download <code>gramps.pot</code> from Gramps Git repository, see [[Brief_introduction_to_Git| the introduction to Git]].<br />
You can also download files by browsing via [http://sourceforge.net/p/gramps/source/ref/master/branches/ SourceForge web interface].<br />
* Look for <code>gramps.pot</code> in the '''po''' directory.<br />
<br />
===Translating messages===<br />
* Copy <code>gramps.pot</code> to the file named <code>lang.po</code>, according to the language you are translating into (<code>fr.po</code> for French, <code>ru.po</code> for Russian, etc.)<br />
* Use [http://gtranslator.sourceforge.net GTtranslator] (GNOME, windows), [http://i18n.kde.org/tools/ KBabel] (KDE), [http://userbase.kde.org/Lokalize Lokalize] (KDE, windows), Emacs po-mode, [http://translate.sourceforge.net/wiki/pootling/index pootling] (GNU/Linux, windows), [http://www.poedit.net/ poedit] (GNU/Linux, OSX, windows), or any similar tool designed for translating <code>.po</code> files. If you do not like any of these tools, you can use any text editor to translate messages. If using vim, properly setting the "langmap" option will significantly speed up your work.<br />
* Even though GRAMPS uses UNICODE (UTF-8) for its character set, you may use your native character set for your translation. Just make sure you specify the character set you are using in the <code>Content-Type</code> line in the <code>.po</code> file. Gramps will handle the conversion to UNICODE.<br />
* If there are non ASCII characters in the original English string, try to preserve them by copying them, if applicable.<br />
<br />
===Context===<br />
As an extension to standard gettext, strings in Gramps can have a context prefix. This prefix should '''not''' be translated, and just be deleted in the translation. More info and an example [[#Translation context|further down]].<br />
<br />
As a special context, you will see the manual context, eg :<br />
'manual|Editing_Dates'<br />
these strings should only be translated if a wiki manual is available in your language, eg in Dutch :<br />
'Datums_aanpassen' <br />
<br />
The string refers to a section, eg [[Gramps_3.3_Wiki_Manual_-_Entering_and_Editing_Data:_Detailed_-_part_1#Editing_dates |Editing_Dates]] in Dutch becomes [[Gramps_3.3_Wiki_Manual_-_Entering_and_Editing_Data:_Detailed_-_part_1/de#Daten_bearbeiten|Datums_aanpassen]].<br />
<br />
===Testing your <code>.po</code> file===<br />
In the <code>po</code> directory run the command: <pre>make</pre> If there are errors in your po file, this will fail and give you an error message. You should correct these errors. If you have trouble understanding the error, try to run the next test, which might give a more verbose output.<br />
<br />
====check_po====<br />
In the <code>po</code> directory run the command: <br />
<br />
./check_po --skip-fuzzy lang.po <br />
or <br />
python check_po --skip-fuzzy lang.po > lang<br />
where lang is your language code. This will give you errors in your translation, information on badly translated phrases, ... the output could resemble something like this..<br />
<br />
File: nl.po<br />
Template total: 3816<br />
PO total: 3671<br />
Fuzzy: 125<br />
Untranslated: 12<br />
%s mismatches: 0<br />
%d mismatches: 2<br />
%() name mismatches:9<br />
%() missing s/d: 0<br />
Runaway context: 0<br />
XML special chars: 0<br />
Last character: 15<br />
Shortcut in msgstr: 16<br />
PO Coverage: 99.67%<br />
Template Coverage: 95.89%<br />
Localized at: 97% (previous gramps.pot)<br />
<br />
If you get ''previous gramps.pot'', then you are not using the last ''gramps.pot'', see [[#Updating_your_translation|update your translation]]. ''fuzzy'' and untranslated strings will be ignored, Gramps will use main strings in english.<br />
<br />
-------- %d mismatches --------------<br />
You can see that there are 3816 strings to be translated and the coverage is around 96 %. There are still 12 untranslated strings and some 120 fuzzies. The last one can be ok, but should be checked. Additional information shows e.g. that in 15 strings there is a mismatch with the 'last character':<br />
-------- last character not identical ---------<br />
msg nr: 98, lineno: 602<br />
msgid "Could not make database directory: "<br />
msgstr "Kon geen gegevensbestandsmap aanmaken"<br />
<br />
This is very valuable information, because you can easily see what the problem is, even if you do not understand the language! Clearly the last characters must be ": "<br />
<br />
====statistics====<br />
<br />
In the <code>po</code> directory run the command: <pre>msgfmt --statistics lang.po</pre> or <pre>msgfmt.exe --statistics lang.po</pre> where lang is your language code. This should not throw an error.<br />
Basically this gives the same info in a condensed format: 3533 translated messages, 125 fuzzy translations, 12 untranslated messages.<br />
<br />
====GNU `gettext' utilities====<br />
<br />
[http://www.gnu.org/software/gettext/ GNU `gettext' utilities] provides a few stand-alone programs to massage in various ways the sets of translatable strings, or already translated strings:<br />
<br />
msgattrib - attribute matching and manipulation on message catalog<br />
msgcat - combines several message catalogs<br />
msgcmp - compare message catalog and template<br />
msgcomm - match two message catalogs<br />
msgconv - character set conversion for message catalog<br />
msgen - create English message catalog<br />
msgexec - process translations of message catalog<br />
msgfilter - edit translations of message catalog<br />
msgfmt - compile message catalog to binary format (.po->.mo)<br />
msggrep - pattern matching on message catalog<br />
msginit - initialize a message catalog<br />
msgmerge - merge message catalog and template<br />
msgunfmt - uncompile message catalog from binary format<br />
msguniq - unify duplicate translations in message catalog<br />
<br />
For checking syntax (header, format, domain) :<br />
msgfmt -c nl.po<br />
<br />
msgfmt.exe -c nl.po<br />
<br />
For checking keyboard accelerators (underscore) :<br />
msgfmt --check-accelerators=_ nl.po<br />
<br />
msgfmt.exe --check-accelerators=_ nl.po<br />
<br />
====Gettext lint====<br />
<br />
[http://gettext-lint.sourceforge.net/ Gettext lint] is a collection of tools for checking the validity, consistency and spelling of PO. Some python scripts do not work anymore with last expat version.<br />
<br />
====Pology (KDE)====<br />
<br />
[http://pology.nedohodnik.net/ Pology] is a Python library and collection of command-line tools for in-depth processing of PO files, the translation file format of the GNU Gettext software translation system. Pology functionality ranges from precision operations on individual PO messages, to cross-file operations on large collections of PO files. Pology is used by the [http://websvn.kde.org/trunk/l10n-support/pology/ KDE] translation teams for checking syntax.<br />
<br />
====Translate Toolkit====<br />
<br />
[http://translate.sourceforge.net/wiki/toolkit/index Translate Toolkit] is a collection of useful tools for localisation. It can help to improve the quality of your localisation, including tools to help check, validate, merge and extract messages from your localizations.<br />
<br />
===Save as .mo file===<br />
<br />
If possible and when you are finished translating, go to '''File -> Save as...''' to generate a ''.mo'' file for testing syntax.<br />
<br />
* Under poedit, you can set to always compile a ''.mo'' file when saving changes by clicking '''File -> Preferences''' and on the '''Editor tab''' check the '''Automatically compile ''.mo'' file on save box'''. A dialog will warn you if there is a syntax error on your ''.po'' file.<br />
<br />
* Lokalize, GTranslator also provide a syntax check when saving. If an error occured we can navigate to messages which contain errors. <br />
<br />
Please, enable this feature to avoid errors on compilation process.<br />
<br />
===Formatting (compiling) <code>.po</code> file===<br />
* Currently, [[Coding_for_translation#How_it_works|formatting (msgfmt) is performed during build time]], so you should not have to worry about it. The translated <code>.po</code> file is the product of your work. However, try to [[Translating_Gramps#Save_as_.mo_file|check syntax]] before any commit.<br />
<br />
===Send your contribution===<br />
<br />
Check it into Git if you obtained the permission to do so.<br />
<br />
The following configuration option simplifies pushing a branch back to the server:<br />
$ git config --global push.default upstream<br />
<br />
Otherwise you can [http://sourceforge.net/p/gramps/source/fork fork] gramps repository with a SourceForge account and pull a [http://sourceforge.net/p/gramps/source/merge-requests/ merge request].<br />
<br />
===Updating your translation===<br />
If you have submitted a translation, it may well be that after some weeks/months, new strings are added to Gramps, implying you need to update your translation file. <br />
<br />
Assuming you have obtained originally the Gramps source tree as explained in [[Brief introduction to Git]]. Now:<br />
* Update your Gramps tree from Git. This can be done by executing the command <pre>git pull</pre> from the root Gramps directory. This will download an updated <code>gramps.pot</code> file.<br />
* Use your outdated translation to translate the strings that did not change:<pre>msgmerge lang.po gramps.pot -o newlang.po</pre> or <pre>msgmerge --no-wrap lang.po gramps.pot -o newlang.po</pre> where <code>lang</code> is your language code. The <code>--no-wrap</code> option will prevent changes due to automatic word wrapping, use it if your previous po file was constructed like that. The <code>--no-wrap</code> options allows for more readable Git diffs.<br />
* Check fuzzy messages and translate all untranslated messages in <code>newlang.po</code>. When you are sure everything is right, rename <code>newlang.po</code> as <code>lang.po</code> and check it into Git as you did with the original file.<br />
* If command <code>msgmerge</code> is not available on your system, you have to install the <code>}gettext</code> package. For [http://wiki.wxpython.org/index.cgi/Internationalization#How_to_get_gettext_tools_for_Win32 windows users].<br />
* To back-port translations, e.g., to merge master branch translations onto an earlier branch, do this on the earlier branch (assuming gramps.pot is updated):<br />
<pre>msgmerge -C lang.po master-lang.po gramps.pot -o newlang.po</pre>. Then resolve the fuzzies as usual.<br />
<br />
There is also the make target that does the following:<br />
* Create new <code>gramps.pot</code> template from the source code files<br />
cd po<br />
./genpot.sh or python update_po.py -p see [[Talk:Translation_environment4|differences between tools]].<br />
* Updates each <code>po</code> file in the source tree<br />
It may be an overkill for you, but if you feel like using it, you can run:<br />
cd po<br />
python update_po -m all <br />
in the <code>po</code> directory. This assumes that you have already succesfully configured the source. Note, this command ignores <code>--no-wrap</code> option, so not practical for Git diffs.<br />
<br />
{{man warn|Environment change|For Gramps 4.0 and master, see [[Translation_environment4|new environment]].}}<br />
<br />
===Testing your update===<br />
<br />
You can test your update easily with the above mentioned '''check_po''' file. If you downloaded this file, just do:<br />
python check_po --skip-fuzzy newlang.po<br />
If everything is ok, the output will be something like this:<br />
File: newlang.po<br />
Template total: 3075<br />
PO total: 3075<br />
Fuzzy: 0<br />
Untranslated: 0<br />
%s mismatches: 0<br />
%d mismatches: 0<br />
%() name mismatches:0<br />
%() missing s/d: 0<br />
Runaway context: 0<br />
XML special chars: 0<br />
Last character: 0<br />
Shortcut in msgstr: 0<br />
PO Coverage: 100.00%<br />
Template Coverage: 100.00%<br />
<br />
===Installing your translation===<br />
<br />
{{man warn|Environment change|For Gramps 4.0 and master, see [[Translation_environment4|new environment]].}}<br />
<br />
You want to use the new translation immediately, and systemwide?<br />
You can by installing just the contents of the po directory, but you will need to build the source first, so:<br />
./autogen.sh<br />
make<br />
cd po<br />
make --prefix=/usr install #as root !<br />
<br />
This should install your translations to ''/usr/share/locale/{lang}/LC_MESSAGES/gramps.mo'', with {lang} being your language. You could of course copy your files manually to that dir with the gramps.mo name.<br />
<br />
Make sure you only install from within the po directory, or you will install the development version of Gramps, which is not supported and for testing only!<br />
<br />
==== Running the master branch with your translation ====<br />
<br />
The i18n data are often under ''../share/locale'' according to the default prefix.<br />
<br />
So you can use:<br />
<br />
python setup.py build<br />
python setup.py install #as root !<br />
<br />
This will install the .mo files under ''../share/locale/xx/LC_MESSAGES'', according to the default prefix set.<br />
<br />
or <br />
<br />
python setup.py build<br />
python setup.py install --root=/home/joe/gramps<br />
--prefix="/home/joe/gramps4" <br />
--enable-packager-mode #as simple user !<br />
<br />
This will install Gramps and translations under your ''/home/...'' directory.<br />
<br />
===== $GRAMPSI18N (for your locale) =====<br />
<br />
Actually you don't even need to install the files in order to test them. This is useful because you can develop Gramps without needing superuser privileges. Bear in mind the Gramps i18n process goes something like this when you use the master branch:<br />
<br />
* when you type <code>python build</code> in the source tree root (/home/user/Gramps e.g.) all the po/*.po files are compiled into build/mo/{lang}/*.mo files.<br />
* when you type <code>python install</code> inside the po directory, these .mo files are copied to {prefix}/share/locale/{lang}/LC_MESSAGES as gramps.mo files.<br />
<br />
But you can change the place where Gramps looks for these files by altering the environment variable $GRAMPSI18N. So you could also for instance do something like this and avoid the <code>python setup install</code> step: (if you are using csh or tcsh the syntax would be a little different)<br />
<br />
[user@localhost /home/user/Gramps]$ mkdir -p po/en_GB/LC_MESSAGES<br />
[user@localhost /home/user/Gramps]$ cp po/en_GB.gmo po/en_GB/LC_MESSAGES/gramps.mo<br />
[user@localhost /home/user/Gramps]$ cd gramps<br />
[user@localhost /home/user/Gramps/src]$ GRAMPSI18N=$PWD/../po LANG=en_GB.UTF-8 python gramps.py<br />
<br />
===== gramps.sh =====<br />
<br />
On a gramps launcher (copy from ''{prefix}/bin/gramps'') you can set :<br />
export GRAMPSDIR=/...<br />
export GRAMPSI18N=/...<br />
<br />
Where the environment variable ''$GRAMPSDIR'' is the path to your ''gramps'' directory.<br />
<br />
Where the environment variable ''$GRAMPSI18N'' is the path to your ''gramps locale'' directory.<br />
<br />
===== Just testing your translation =====<br />
<br />
If you don't want to compile all translations, you may save your ''.po'' file as ''.mo'' file, or use ''msgfmt'' utility on /po directory:<br />
<br />
msgfmt -o gramps.mo your_lang.po<br />
<br />
msgfmt.exe -o gramps.mo your_lang.po<br />
<br />
this will create a ''gramps.mo'' file, a compiled version of your ''.po'' file.<br />
Put it on your translation path (''see above'').<br />
<br />
==Hard to translate phrases==<br />
Some things are just hard to translate. Below are a few of the more difficult items, along with some suggestions on how to handle them.<br />
===LDS terminology===<br />
The Church of Jesus Christ of Latter Day Saints (a.k.a. Mormons) maintains a lot of genealogy data. In the United States, they are probably the non-government organization with the most detailed records available. Genealogical research is important to the Mormon church. They are responsible for defining the [[GEDCOM]] format.<br />
<br />
The LDS Church has some specific terminology that can present difficulty in translating. There are two approaches to handling the information.<br />
# If the LDS Church has a presence in your country, contact the LDS Temple in your area and ask them what the correct terminology is in your native language<br />
# If the LDS Church does not have a presence in your country, it would probably be safe to simply not translate the phrases.<br />
These terms include:<br />
# LDS Ordinance names:<br />
#* Sealed to Parents<br />
#* Sealed to Spouse<br />
#* LDS Baptism<br />
#* Endowment<br />
# LDS Status names for Ordinances:<br />
#* Child<br />
#* Cleared<br />
#* Completed<br />
#* Infant<br />
#* Pre-1970<br />
#* Qualified<br />
#* Stillborn<br />
#* Submitted<br />
#* Uncleared<br />
#* BIC (Born In the Covenant)<br />
#* DNS (Do Not Submit)<br />
#* Canceled<br />
#* DNS/CAN (Do Not Submit/Previous sealing cancelled)<br />
<br />
==Advanced issues==<br />
===Format line parameters===<br />
Format line parameters such as <nowiki>%s</nowiki> and <nowiki>%d</nowiki> '''should not''' be translated. The order of these parameters '''should not''' be changed. Examples:<br />
<br />
English:<br />
Long widowhood: %s was a widow %d years.<br />
<br />
Translation (using Backward English as an example :-):<br />
Gnol doohwodiw: %s saw a wodiw %d sraey.<br />
<br />
Named format line parameters such as <nowiki>%(something)s and %(something)d</nowiki> also '''should not''' be translated. Feel free to change the order of named parameters to correctly phrase the message in your language. Also, use hints provided by the names. Examples:<br />
<br />
English:<br />
Baptized before birth: %(male_name)s<br />
born %(byear)d, baptized %(bapyear)d.<br />
<br />
Translation into Backward English:<br />
Dezitpab erofeb htrib: %(byear)d<br />
nrob %(male_name)s, dezitpab %(bapyear)d.<br />
<br />
In the above example, the verb "born" should be in masculine form (if verbs in your language have gender, that is), since the person born is apparently a male.<br />
<br />
Sometimes those <nowiki>%(something)s</nowiki> are positioned in a text without spaces, like in the example below:<br />
<br />
English:<br />
This person was baptised%(endnotes)s.<br />
<br />
Translation into Backward English:<br />
Siht nosrep saw desitpab%(endnotes)s.<br />
<br />
===Translation context===<br />
In some cases, two different concepts can be expressed by the same word in English and yet require different translations. For example, the '''title of the book''' and the nobility '''title of the person''' are expressed by the same '''Title''' word. However, in other languages different words are needed to describe the book title and the person's title.<br />
<br />
To mitigate such problems, a context can be added to the translation string. A context-enabled string has a vertical line separating the context from the string:<br />
book|Title<br />
person|Title<br />
The correct translation '''should not''' include either the context or the separator. The context is to give the translator idea of what the string means. However, '''both the context and the separator must not be in the translated string''', so in backward english the above is translated into<br />
Eltitkoob<br />
Eltitnosrep<br />
<br />
If you are a Gramps translator and need a developer to help you add a context to the Gramps source files, please ask for it on the gramps-devel list.<br />
<br />
====Translation context in GUI labels====<br />
If there is a string in the Glade GUI (i.e., in a .glade source file) that requires the translation context, it's impossible to have it translated statically. In this case, one needs to add runtime code to the corresponding dialog initialization to override the label string with the text obtained with an sgettext call. I.e.,<br />
<br />
* Verify the relevant widget has a meaningful id in the .glade file (as opposed to a silly autogenerated one). Modify the id if needed and make sure no existing code used the old widget id! E.g., change<br />
<object class="GtkLabel" id="label3"><br />
:into<br />
<object class="GtkLabel" id="place_name_label"><br />
* Add a context to the translatable string in the .glade file. This way, when you look at the POT file or a PO file derived from it, you see a reference to this place, along with the actual place in the .py file(s) which also has the same context string. E.g., change<br />
<property name="label" translatable="yes">Name:</property><br />
:into<br />
<property name="label" translatable="yes">place|Name:</property><br />
* In the corresponding dialog initialization, add code to set the string to the correct translation during runtime, e.g.:<br />
:globally in the file:<br />
PLACE_NAME = _('place|Name:')<br />
:in the MergePlace.__init__ method:<br />
for widget_name in ('name_btn1', 'name_btn2'):<br />
self.get_widget(widget_name).set_label(PLACE_NAME)<br />
:The exact method to call on the Gtk control will be different based on the actual GUI element affected. E.g., a GtkButton has a set_label method, whereas a GtkLabel has a set_text.<br />
* Regenerate the POT, translate the new PO strings, and test your work.<br />
<br />
===Plural forms===<br />
<br />
There was requests for [http://www.gnu.org/software/gettext/manual/html_node/gettext_150.html#Plural-forms plural forms] support.<br />
<br />
First, translators need to check if information is available on .po header :''"Plural-Forms:\n"''. (See [http://translate.sourceforge.net/wiki/l10n/pluralforms samples])<br />
<br />
# msgid contains the singular string in english<br />
# msgid_plural contains the plural string in english<br />
# msgstr[0] contains the singular translated version (for 1 and sometimes 0, set on header)<br />
# msgstr[1] contains the plural version (for 1 + 1 = 2 )<br />
# msgstr[2] contains the plural form (for 2 + 1 = 3)<br />
<br />
*For language with one form (singular=plural, ''Plural-Forms: nplurals=1; plural=0''), like Chinese, Hungarian or Turkish:<br />
<br />
msgid "%d second"<br />
msgid_plural "%d seconds"<br />
msgstr [0] "%d 秒"<br />
<br />
*For language with one plural form (''Plural-Forms: nplurals=2; plural=n != 1;''), like english:<br />
<br />
msgid "%d hour"<br />
msgid_plural "%d hours"<br />
msgstr [0] "%d hour"<br />
msgstr [1] "%d hours"<br />
<br />
*For language with more plural forms (like Czech):<br />
<br />
msgid "%d second"<br />
msgid_plural "%d seconds"<br />
msgstr [0] "%d sekunda"<br />
msgstr [1] "%d sekundy"<br />
msgstr [2] "%d sekund"<br />
<br />
As a final check, please do ensure that the following command does not throw any errors:<br />
<br />
msgfmt -c filename.po<br />
<br />
===Translating mnemonics keys(Keyboard Shortcut keys)===<br />
Mnemonics are accelerator keys (also known as Keyboard Shortcut keys) you find in labels, accessible by pressing the {{man key press|ALT}} key together with the mnemonic. You see then in the translated text with a low line, eg '_Help' is shown as 'Help' with a line under the H, and can be put to focus/selected by pressing {{man key press|ALT|h}}.<br />
<br />
It is nice if mnemonics on a screen are unique, but it is not required. If you use twice the same mnemonic, the user must press repeatedly the accelerator to switch between the different entries. However, note the following rule:<br />
*"If duplication of access keys in a window is unavoidable, you should still refrain from duplicating the access keys for any of these buttons that appear in the same window: {{man button|OK}}, {{man button|Cancel}}, {{man button|Close}}, {{man button|Apply}} or {{man button|Help}}."<br />
<br />
So you should check in your language what the mnemonic key is for those buttons, and avoid using the same in translated text<br />
<br />
'''Warning''': some fonts family will not properly display mnemonics on "g", "j", "p", "q" or "y" as these print the letter over the line under it making it very hard to distinguish the small line. Please avoid to use mnemonics key bindings on these letters. Also try to avoid i and l, as people have difficulty distinguishing between those.<br />
<br />
Capital letters are no problem though, underlining eg G will work just fine as the letter does not write over the line.<br />
<br />
===Translating relationships===<br />
Translating relationships is not done within the <code>.po</code> files, except for occasional <code>father</code> and <code>mother</code> strings here and there in the interfaces and reports. Complete translation of all relationships for the language/culture is done inside a relationship calculator plugin.<br />
<br />
In short, the need for a plugin comes from the impossibility to translate "first cousin twice removed" in languages such as, e.g., German or Russian. See the [[Relationship Calculator]] page for details on why and how to create such a plugin.<br />
<br />
===Translating dates===<br />
Handling date translation is not entirely done within the <code>.po</code> files. Complete handling of date translation for each language/culture is done inside a dedicated date handler module.<br />
<br />
The need for a separate module comes from the requirements to handle culture-specific parsing and displaying of dates. For example, the month and day order is different between most European countries and the US. Also, each language has its own set of acceptable modifier and qualifiers for the date: things like "from X to Y" or "between X and Y" may have different word order. Same with "around", "calculated", "estimated". Add to this calendar names, and you have a compelling need for a dedicated module. See the [[Date Handler]] page for details on why and how to create such a module.<br />
<br />
==Translating man pages==<br />
<br />
{{man warn|Environment change|For gramps 4.0 and master, see [[Translation_environment4#Translating_man_pages|new environment]].}}<br />
<br />
You can also translated the man pages into your own language.<br />
<br />
For the development version (master branch) you can find the required starting files under the directory data/man. You will find the files<br />
*Makefile.am<br />
*gramps.1.in<br />
<br />
First off all you must make a directory for your language under data/man.<br />
<code><br />
cd data/man<br />
</code><br />
<br />
and do <code><br />
mkdir xx<br />
</code><br />
<br />
where xx is your languagecode (fr for French, sv for Swedish, etc.) You should use Git. See [[Brief_introduction_to_Git| the introduction to Git]].<br />
<br />
Next step is to copy the Makefile.am and gramps.1.in from data/man to your new directory. Translate all relevant strings in the data/man/xx/gramps.1.in file. Change the file data/man/xx/Makefile.am:<br />
*add the line mandir = @mandir@/xx<br />
*change the line && CONFIG_FILES=data/man/xx/$@ $(SHELL)<br />
<br />
Next step: change the file data/man/Makefile: <br />
*add xx to the line SUBDIRS = fr nl sv<br />
<br />
The final step is to alter the file ''Configure.in '':<br />
*add data/man/xx/Makefile to the line AC_CONFIG_FILES([<br />
<br />
All changes must be committed and pushed to the server:<br />
git commit -am "Add man page for xx"<br />
git push<br />
<br />
You should see no errors when you run the <code><br />
./configure<br />
make<br />
</code> scripts.<br />
<br />
{{man warn|Install|This last step must be done only in the data/man/xx directory. If not, your normal gramps installation will be overwritten. And this step must be done as superuser(su)}}<br />
<code><br />
sudo make install<br />
</code><br />
This will put the gramps.1.gz file into /usr/local/share/man/xx/man1 directory. You could also use a prefix. Then you do:<code><br />
sudo make --prefix=/usr/share install<br />
</code><br />
<br />
To see the result of your work, do:<code><br />
man -L xx gramps<br />
</code><br />
<br />
==Translating wiki manual==<br />
To have the link working in Gramps, you need to have or edit the GrampsDisplay.py file to contain your language.<br />
On line 30 of that file, you see:<br />
<br />
MANUALS = {<br />
'nl' : '/nl',<br />
}<br />
<br />
This maps a language code to the extension used on the wiki, so to add french, change this too:<br />
<br />
MANUALS = {<br />
'nl' : '/nl',<br />
'fr': '/fr',<br />
}<br />
<br />
*Every 'manual|...' entry in the gramp.pot file refers to a section in the manual, so make sure to use good section headings so this does not change too much over time.<br />
Note that reports/tools link to a section in the page with the same name as the report name in Gramps.<br />
<br />
*You should be able to edit directly on wiki or using tools like [http://translate.sourceforge.net/wiki/toolkit/txt2po txt2po] or [http://po4a.alioth.debian.org/ po4a]. Also previous gettext file for the manual and [http://en.wikipedia.org/wiki/Translation_memory Translation Memory] may help you to upgrade deprecated/old gettext files. eg, store existing entries from ''/usr/share/locale''.<br />
<br />
==Language specific pages==<br />
Check out the pages which cover some aspects of translation into a specific language, such as the glossary.<br />
<br />
*[[Translation into Finnish|Finnish]]<br />
*[[Translation into French|French (Français)]]<br />
*[[Translation into Russian|Russian]]<br />
<br />
==Translating addon plugins==<br />
<br />
* See [[Addons_development#Get_translators_to_translate_your_addon_into_multiple_languages|3rd-party addon for Gramps]].</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Recover_corrupted_family_tree&diff=48594Recover corrupted family tree2014-04-02T00:22:43Z<p>PaulFranklin: /* The environment is lost */</p>
<hr />
<div>{{grampsmanualcopyright}}<br />
<br />
{{languages|Recover_corrupted_family_tree}}<br />
<br />
Explanation of '''family tree''' and '''GRDB corruption''', how to recover from it, and how to avoid it in the future.<br />
<br />
== Family Tree corruption == <br />
=== What causes this corruption? ===<br />
Not really known. Database corruption with family trees is however far less likely than with the previous format of storing your family tree Gramps version 2.2.x uses<br />
<br />
=== How do you know about it? ===<br />
<br />
Gramps might give you on startup that recovery is needed via a dialog box:<br />
<br />
Gramps has detected a problem in the underlying Berkeley database.<br />
This can be repaired by from the Family Tree Manager.<br />
Select the database and click on the Repair button<br />
<br />
But it might happen no {{man button|Repair}} button is present, or you obtain the error (visible in terminal)<br />
<br />
(-30975, 'DB_RUNRECOVERY: Fatal error, run database recovery -- PANIC: Invalid argument').<br />
<br />
=== What to do now? ===<br />
<br />
It is advisable not to click the repair button right away. It should work, but GRAMPS might believe an error is present while this is in reality not true. Repairing your tree then will lead to loss of the last typed changes.<br />
<br />
Instead, take a backup of the family tree that is given problems. In a terminal do:<br />
<br />
gramps -l <br />
<br />
This will give you a list with all family trees and the directory where they are stored, normally somewhere in the directory ~/.gramps/grampsdb. Look at your [[Gramps_4.0_Wiki_Manual_-_User_Directory|user directory]]. Copy the directory of the tree with problems so as to have a backup:<br />
<br />
cp -a <target directory> <backup directory><br />
<br />
If the recover button was present on the Gramps family tree, click it. All should work again. If you notice you lost information, or the repair button does not work, then do the following.<br />
If recovery worked, but you do not like the result, backup this data and place your backup taken above back in its original position. You now have again the bad family tree to work on. Next, obtain the bsddb recovery tools, see your distributions package search page. The program is called db4.8_recover, where 4.8 might be an older or newer version number. See your BSDDB version into {{man menu|Help -> About}} dialog or with <code> gramps -v</code> command. <br />
<br />
Run this tool as follows:<br />
<br />
cd /home/<user>/.gramps/grampsdb/<target directory><br />
db4.8_recover -c<br />
<br />
That should do the trick, and allow GRAMPS to load the family tree. If not, then start a ticket on the gramps bug tracker.<br />
<br />
====Windows OS====<br />
{{out of date|says # ...TO_COMPLETE...}}<br />
<br />
# download Oracle tools on: http://www.oracle.com/technetwork/products/berkeleydb/downloads/index-082944.html<br />
# ...TO_COMPLETE...<br />
<br />
=== I have backup gbkp files ===<br />
If you have a backup, you can try to recover the backup gbkp files. Do the following steps:<br />
The procedure to recover your data from gbkp files is:<br />
# Copy the gbkp files to a new directory in your database directory, eg directory ''a1111''<br />
# Copy name.txt, open it in the new directory and set the content to a unique name.<br />
# Create a file with name '''need_recover'''. Mind the underscore and the lack of an extension. The content of that file is unimportant.<br />
# Start Gramps, click on the family tree with the name you adjusted in step 2. There should be a red stop sign with that filename. Click on the Recover button. The red stop sign should disappear and you should be able to load that family tree.<br />
<br />
=== Implement more security ===<br />
Your genealogy data contains a lot of work and man hours. So '''work out a backup scheme''' <br />
<br />
If you work on Gramps regularly: backup the directory holding the family tree databases. These are very large files however.<br />
<br />
If you know you work on GRAMPS sporadically only, or have no space to backup your trees regularly, then do [[How_to_make_a_backup|backup]] in XML format (the .gramps format). Do not forget to disable privacy filters...<br />
The XML format will open up just fine over many years on another computer with another OS. This will probably '''not''' be the case for the databases a family tree is stored in. XML is machine- and human-readable. It is completely self-sufficient. It is also small. The following are good practices of [[How_to_make_a_backup|backups]] :<br />
<br />
1. Export to XML from time to time, especially after large edits.<br />
2. Export to XML before making big changes, such as importing new data into an existing database from e.g. GEDCOM, merging records, running tools that may heavily modify the data, etc.<br />
3. Export to XML before upgrading GRAMPS to a newer version. Apparently, export to XML with old version before you install the new one!<br />
4. Export to XML before upgrading your OS. <br />
<br />
Also, use XML format for any data migration. Moving to another machine, sending data to grandma, copying to another user on the same machine -- all of these cases should use XML, as there is no binary specific data. <br />
<br />
Note that XML does not contain your media files. The gpkg output format contains XML and your media files, with the disadvantage of this being very large. If you already have a backup scheme for your media files, there is no need to also backup gpkg files.<br />
<br />
=== ACI not ACID, upgrade, downgrade ===<br />
Gramps protects your data using an ACI database. This means the last commit can be lost on an error, but not more than that. You should before an upgrade make sure Gramps closed your family tree correctly however.<br />
<br />
There should be no error in opening a family tree with a newer version. See the long research in {{bug|3975}}, which does indicate version 4.7.25 of Bsddb contains a bug that can give a strange error message.<br />
<br />
Trying to open a family tree after a downgrade is not supported. You will obtain an error that the database is created with a newer version.<br />
<br />
== Version 2.2.x: GRDB corruption ==<br />
===What causes this corruption?===<br />
The leading cause of grdb corruption is moving the grdb file from its original location. Whether you move the file to another directory, rename it, copy into another file, transfer to another machine, or another user account -- all of those will "corrupt" the file.<br />
<br />
What happens is that the grdb file needs its database environment -- a directory with log files, lock files, temp files, etc. The 2.2.x gramps releases uses grdb files and stores the environment for each file, under a tree in a <code>~/.gramps/env</code> directory. If your grdb file is <code>/home/user/genealogy/MyData.grdb</code> then its environment is in the <code>/home/user/.gramps/env/home/user/genealogy/MyData.grdb</code> directory.<br />
<br />
So moving, copying, or renaming the file will copy the file's bytes, but not its environment. This is why the moved file appears corrupted.<br />
<br />
Another cause can be an upgrade or downgrade of your operating system to a bsddb database backend that does not support fully the previous form of the database (eg, changed hash versions). This will also seem like a corruption in GRAMPS, but actually means the bsddb tools must be used to convert to data to a new version.<br />
<br />
Not being able to open a /tmp/... file in GRAMPS 3.0.x on opening grdb files indicates database corruption. This is because the grdb file you want to open is copied to the /tmp dir, and then opened. All failure results in the '/tmp/tmpxxxxx could not be opened'<br />
<br />
===What do I do now?===<br />
The answer depends on whether or not you have the environment for that database. If you just copied one file into another then the environment may still work. If you modified the original database since then, the original environment has changed and there's no good environment for the new file. If you removed your <code>.gramps</code> directory (why oh why?) then all environments are lost. So act depending on the situation, as explained below.<br />
<br />
====The environment still exists====<br />
If you have environment directory for that file, copy it under the above gudelines.<br />
;Example: You copied <code>/home/user/genealogy/MyData.grdb</code> to <code>/home/user/genealogy/backup/BackupData.grdb</code> and the new file is not working.<br />
;Solution: Copy <code>/home/user/.gramps/env/home/user/genealogy/MyData.grdb</code> directory into <code>/home/user/.gramps/env/home/user/genealogy/backup/BackupData.grdb</code> and this should fix the problem.<br />
<br />
====The environment is lost====<br />
If you don't have the original environment for that file, you may try dumping and loading your data using Berkeley DB tools. Depending on your system, they may be called <code>db_dump</code> and <code>db_load</code>, <code>db41_dump</code> and <code>db41_load</code>, <code>db4.4_dump</code> and <code>db4.4_load</code>, ... In Ubuntu you find them in the package <code>db4.8-util</code>. You might need more recent versions depending on the version your distribution uses in its python package. So for eg Ubuntu Hardy created files, you will need <code>db4.8-util</code>. Whatever they are called, there should be a dump tool and a load tool, and they should be version 4 or later. For Fedora 17 this is 'db4-utils-4.8.30-10.fc17'. For Fedora 18 this is 'libdb4-utils-4.8.30-5.fc18' (note the new package name).<br />
<br />
Basically, you just dump the grdb into a text file, then create a new grdb from that text file:<br />
$ db4.8_dump BackupData.grdb > somefile.txt<br />
$ db4.8_load newfile.grdb < somefile.txt<br />
and then cross your heart and hope that <code>newfile.grdb</code> will open in Gramps.<br />
If you obtain the error: <br />
<br />
db4.4_dump: eidtrans: unsupported hash version: 9<br />
<br />
this is an indication you need a more recent version. So use db4.8 tools: <br />
$ db4.8_dump BackupData.grdb > somefile.txt<br />
$ db4.8_load newfile.grdb < somefile.txt<br />
<br />
Note: If you downgrade your distribution, it might be needed to do dump with 4.6 tools, and load with 4.4 or 4.5 tools.<br />
<br />
===How to prevent corruption?===<br />
While moving the file is the leading cause of corruption, apparently there are other less frequent causes that we don't fully know. So preventing corruption is not always possible.<br />
<br />
What is possible though is to [[How_to_make_a_backup|backup]] the data regularly. The [[How_to_make_a_backup|backups]] should be in XML format (the <code>.gramps</code> format). XML is machine- and human-readable. It is completely self-sufficient. It is also small. The following are good practices of backups:<br />
# Export to XML from time to time, especially after large edits.<br />
# Export to XML before making big changes, such as importing new data into an existing database from e.g. GEDCOM, merging records, running tools that may heavily modify the data, etc.<br />
# Export to XML before upgrading GRAMPS to a newer version. Apparently, export to XML with old version before you install the new one!<br />
# Export to XML before upgrading your OS.<br />
<br />
Also, use XML format for any data migration. Moving to another machine, sending data to grandma, copying to another user on the same machine -- all of these cases should use XML.<br />
<br />
{{languages|Recover_corrupted_family_tree}}<br />
<br />
[[Category:How do I...]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Gramps_3.3_Wiki_Manual_-_Reports_-_part_4&diff=33232Gramps 3.3 Wiki Manual - Reports - part 42011-12-20T18:06:41Z<p>PaulFranklin: </p>
<hr />
<div>This section describes the different Graphical Reports available in Gramps.<br />
<br />
{{man index|Gramps 3.3 Wiki Manual - Reports - part 3|Gramps 3.3 Wiki Manual - Reports - part 5|3.3}}<br />
<br />
{{grampsmanualcopyright}}<br />
<br />
{{languages|Gramps_3.3_Wiki_Manual_-_Reports - part 4}}<br />
<br />
Back to [[Gramps_3.3_Wiki_Manual_-_Reports|Index of Reports]].<br />
<br />
==Graphical Reports==<br />
<br />
Graphical reports represent information in forms of charts and graphs. Most of the options are common among graphical reports, therefore they will be described only once, at the end of this section. The few options which are specific to a given report will be described directly in that report's entry. See also [[Gramps_3.3_Wiki_Manual_-_Reports_-_part_2|substitution values]].<br />
<br />
The following graphical reports are currently available in Gramps:<br />
<br />
===<u>Ancestor Tree</u>===<br />
<br />
This report generates the chart of people who are ancestors of the Active Person. <br />
<br />
====Paper Options====<br />
With the {{man label|Paper Options}} you can change Paper format (Size and Orientation) and margins (Left, Right, Top and Bottom) and use metric values or not.<br />
<br />
====Document Options====<br />
Choose the output format: Open Document Text, PDF document, PostScript, Print..., or SVG (Scalable Vector Graphics). A {{man label|check box}} is available where you can indicate to open the made document with [http://www.documentfoundation.org/download/ LibreOffice] Word Processor or a Document Viewer (PDF file).<br />
<br />
==== Tree Options tab ====<br />
<br />
[[Image:Ancestor_tree_tab.png|right|thumb|350px|Tree Options tab]]<br />
<br />
The {{man button|Center Person}} is chosen here. The Active person will be the default.<br />
<br />
With the input field {{man label|Generations}} you can change the number of generations considered.<br />
<br />
{{man label|Display unknown generations}} will allow you to select how many generations of empty boxes to display when the tree is not completely full.<br />
<br />
Here is also the check box {{man label|Compress tree}}.<br />
<br />
{{man label|Center person uses which format:}} allows you to specify if the center person uses the father display format or the mother display format found on the Display tab.<br />
<br />
==== Display tab ====<br />
<br />
[[Image:Ancestor_display_tab.png|right|thumb|250px|Display tab]]<br />
<br />
This tab allows you to determine the {{man label|Father Display Format}} to be used for the report. All fathers, grandfathers, etc. will use this format.<br />
<br />
The {{man label|Mother Display Format}} to be used for all mothers, grandmothers, etc. will use this format.<br />
<br />
The {} around the death information line states that this entire line will display ONLY when there is death information. See [[Gramps_3.3_Wiki_Manual_-_Reports_-_part_2|Substitution Values]] for more information, including how to include places and attributes, and format names and dates and places.<br />
<br />
{{man label|Include Marriage box}} specifies to display an extra box between a father and mother that contains marriage information. {{man label|The Marriage Display Format}} (see [[Gramps_3.3_Wiki_Manual_-_Reports_-_part_2|Substitution Values]]) specifies what will print in this box.<br />
<br />
==== Size tab ====<br />
<br />
[[Image:Ancestor_sizes_tab.png|right|thumb|250px|Sizes tab]]<br />
<br />
{{man label|Scale tree to fit}} will make the tree larger or smaller to fit the page as desired. The options are:<br />
* Do not Scale the tree<br />
* Scale tree to fit page width only<br />
* Scale tree to fit the size of the page<br />
<br />
where {{man label|Resize page to fit tree}} will make the page larger or smaller to fit the tree <br />
<br />
If both are selected, the options happen in that order; scale the tree first, then the page.<br />
<br />
These two options are better described in [[Gramps_3.3_Wiki_Manual_-_Reports_-_part_4.2|Size options]] with tips for making nicer reports.<br />
<br />
==== Include tab ====<br />
<br />
[[Image:Ancestor_include_tab.png|right|thumb|250px|Note tab]]<br />
<br />
This tab gives you the option to include other items on the report.<br />
<br />
{{man label|Report title}} allows you to choose a title for the report. <br />
* ''Do not print a title''<br />
* ''Include Report Title''<br />
<br />
And this tab also includes check boxes for {{man label|Include a border}}, {{man label|Include page numbers}}, and {{man label|Include blank pages}}.<br />
<br />
This tab also allows you to {{man label|Include a note}} to one of the corners of the report.<br />
<br />
“$T” within the note will display the day that the report was made. Regular date formatting (see [[Gramps_3.3_Wiki_Manual_-_Reports_-_part_2|Substitution Values]]) applies.<br />
<br />
Currently a note will be attached to a corner. If a person box writes over it, the note box will not move. Select another corner to see the note tab if this happens.<br />
<br />
====Final Result====<br />
<br />
[[Image:Ancestor chart.png|thumb|left|500x|Fig. 8.2 PDF Output ancestor tree]]<br />
<br />
Fig. 8.2 shows the final output result.<br />
<br />
{{-}}<br />
<br />
===<u>Calendar</u>===<br />
<br />
This report produces a calendar with birthdays and anniversaries on a page by month.<br />
<br />
====Paper Options====<br />
<br />
[[Image:Calendarreport1.png|right|thumb|350px|Fig. 8.3 Calendar Paper Options]]<br />
<br />
With the Paper Options you can change<br />
* Paper format (Size and Orientation)<br />
* Margins (Left, Right, Top and Bottom) <br />
and whether to use metric values or not.<br />
<br />
{{-}}<br />
<br />
====Document options====<br />
<br />
[[Image:Calendarreport4.png|right|thumb|350px|Fig. 8.4 Calendar Document Options]]<br />
<br />
* Output Format: choose the output format: <br />
** Open Document Text<br />
** PDF document<br />
** PostScript<br />
** Print...<br />
** SVG (Scalable Vector Graphics). A {{man label|check box}} is available where you can indicate to open the made document with [http://www.documentfoundation.org/download/ LibreOffice] Word Processor or a Document Viewer (PDF file).<br />
* Filename: default value is ''/home/<username>/calendar.pdf''.<br />
* Style: default ''default style'' . With the {{man button|Style Editor...}} you can add Document Styles.<br />
<br />
{{-}}<br />
<br />
====Report Options====<br />
<br />
[[Image:Calendarreport2.png|right|thumb|250px|Fig. 8.5 Calendar Report Options]]<br />
<br />
* Year of calendar: for which year you want the calendar to be build.<br />
* Filter: select filter to restrict people that appear on the calendar<br />
** Entire Database : not recommended!<br />
** Descendants of ...<br />
** Descendant Families of ...<br />
** Ancestors of ...<br />
** People with common ancestors with ...<br />
** any custom filter who have made<br />
* Center Person: the center person for the report<br />
* Name Format: Select the format to display names: choose between:<br />
** Surname, Given Patronymic<br />
** Given Surname<br />
** Patronymic, Given<br />
** Given<br />
* Country for holidays: Select the country to see associated holidays choose between:<br />
** Don't include holidays: default value<br />
** Canada / China / Deutschland / Finland / France / Sverige - röda dagar / United States / Ceska republika<br />
* First day of week:<br />
* Birthday surname:<br />
* Checkboxes:<br />
** Include only living people: include only living people in the calendar<br />
** Include birthdays: include birthdays in the calendar<br />
** Include anniversaries: include anniversaries in the calendar<br />
<br />
{{-}}<br />
<br />
====Calendar Text Options====<br />
<br />
[[Image:Calendarreport3.png|right|thumb|250px|Fig. 8.6 Calendar Text Options]]<br />
<br />
Here you can fill in three lines of text that will be put at the bottom of the page.<br />
* Text Area 1: First line of text at bottom of calendar default value : ''My Calendar''<br />
* Text Area 2: Second line of text at bottom of calendar default value: ''Produced by Gramps''<br />
* Text Area 3: Third line of text at bottom of calendar default value: '' http://gramps-project.org/''<br />
<br />
{{-}}<br />
<br />
====Final Result====<br />
<br />
[[Image:Calendarreport5.png|right|thumb|450px|Fig. 8.7 Calendar Result]]<br />
<br />
The final result can be seen on the right side.<br />
<br />
[[Calendar_tools_holidays|Calendar tools holidays]] explains how to add or change the holidays appearing on the output of the calendar plugin.<br />
<br />
{{-}}<br />
<br />
===<u>Descendant Tree</u>===<br />
<br />
This report generates a graph of people who are descendants of the Active Person. Specific options include the format of the displayed entries.<br />
<br />
====Paper Options====<br />
With the Paper Options you can change<br />
* Paper format (Size and Orientation)<br />
* Margins (Left, Right, Top and Bottom) <br />
and whether to use metric values or not.<br />
<br />
====Document Options====<br />
* Output Format: choose the output format: <br />
** Open Document Text<br />
** PDF document<br />
** PostScript<br />
** Print...<br />
** SVG (Scalable Vector Graphics). A {{man label|check box}} is available where you can indicate to open the made document with [http://www.documentfoundation.org/download/ LibreOffice] Word Processor or a Document Viewer (PDF file).<br />
* Filename: default value is ''/home/<username>/descend_chart.pdf''.<br />
* Style: default ''default style'' . With the {{man button|Style Editor...}} you can add Document Styles.<br />
<br />
==== Descendant report Tree tab ====<br />
<br />
[[Image:descend_treeP_tab.png|right|thumb|250px|Descendant Options tab]]<br />
<br />
{{man button|Report for:}} option will select the center person for this report. The currently home person will be the default person displayed. <br />
<br />
{{man label|Start with the parent(s) of the selected first}} will display parents of the center person if the parents are known. As such any siblings of the center person will be displayed too.<br />
<br />
This is broken apart from the tree tab as the 'Family Descendant Report' only differs in this one part on this tab.<br />
<br />
==== Tree tab ====<br />
<br />
[[Image:descend_tree2_tab.png|right|thumb|250px|Descendant Options tab]]<br />
<br />
Both of the Descendant Tree and Family Descendant Tree reports share these features on the Tree tab:<br />
<br />
The number of {{man label|Generations}} to see on the report (from the center person/family). If {{man label|Start with the parent(s) of the selected first}} is selected, this number is effectively increased by one.<br />
<br />
{{man label|Level of spouses}} specifies the how deep to display spouses. <br />
<br />
For the example: <br />
<br />
* Abe is a direct descendant<br />
** Abe has/had married Barbra and had two children<br />
** Abe also married Bridget and had one child<br />
*** Bridget has/had married Carl. <br />
**** Carl and Denise had a child.<br />
<br />
Given the above example, this is what will be displayed for the first three {{man label|Level of spouses}} options.<br />
* 0 means that only direct descendants will be shown. Nothing on the Secondary tab will be shown (Spousal information or Marriage information). For the example above, only Abe will be shown with three children directly under him<br />
* 1 means that only spouses of the direct descendants will be shown. For the example above, Abe will be shown with two pieces of marriage information. Under the first will be two children and one child under the second.<br />
* 2 means that spouses of spouses are shown. Same as 1 but Bridget will also show her other marriage. If they had any children, they would be shown too.<br />
* 3 means that everyone in the example above will be displayed.<br />
Any option above 1 is very hard to read on the report without the {{man label|Indent Spouses}} option on the Secondary tab.<br />
And last but not least is the {{man label|Compress Tree}} option which tries to move everyone up as far as they can go (compress) and still have a readable report.<br />
<br />
==== Display tab ====<br />
<br />
[[Image:descend_display_tab.png|right|thumb|250px|Descendant Display tab]]<br />
<br />
{{man label|Descendant Display Format}} sets the display for all descendants in the tree. The default is:<br />
<pre>$n<br />
b. $b<br />
{d. $d}</pre><br />
<br />
The {} around the death information line states that this entire line will display ONLY when there is death information. See [[Gramps_3.3_Wiki_Manual_-_Reports_-_part_2|Substitution Values]] for more information, including how to include places and attributes, and format names and dates and places.<br />
<br />
And the check box {{man label|Bold direct descendants}} can also make the report easier to read.<br />
<br />
You can set the {{man label|Spousal Display format}}. If you do not wish to have the separate marital box, the spousal box can be used for marriage information. This option defaults as above.<br />
<br />
{{man label|Indent spouses}} will offset spouses a little from each other making it easier to know who has married who.<br />
<br />
{{man label|Include marriage box}} will display a separate box on the tree for marriage information. The display for this box is set in {{man label|Marriage Display format}}.<br />
<br />
{{-}}<br />
<br />
==== Replace tab ====<br />
<br />
[[Image:descend_replace_tab.png|right|thumb|250px|Descendant Replace tab]]<br />
<br />
This allows you to put in pairs of strings separated by '/' that state what you want to replace and what you want to replace it with. <br />
<br />
{{-}}<br />
<br />
Example:<br />
<pre>The United States of America/USA<br />
United Kingdom of Great Britain and Northern Ireland/UK<br />
Llanfair&shy;pwllgwyn&shy;gyllgo&shy;gerychwyrn&shy;drobwll&shy;llanty&shy;silio&shy;gogogoch/Llanfairpwll</pre><br />
Every column width is defined by the widest box in the report. So if one box happens to be a lot wider than all of the others, a lot of space will be wasted. This option allows you to remove or abbreviate parts of the string that is not needed or can be cut down so the amount of space wasted is minimal.<br />
<br />
==== Include tab ====<br />
<br />
[[Image:Ancestor_include_tab.png|right|thumb|250px|Descendant Replace tab]]<br />
<br />
{{man label|Report title}} allows you to choose a title for the report. <br />
* ''Do not print a title''<br />
* ''Descendant Chart for [selected person(s)]''<br />
<br />
And this tab also includes check boxes to {{man label|Include a border}}, {{man label|Include page numbers}}, and {{man label|Include blank pages}}.<br />
<br />
This tab also allows you to {{man label|Include a note}} to one of the corners of the report. <br />
<br />
“$T” within the report will display the day that the report was made.<br />
Regular date formatting (see [[Gramps_3.3_Wiki_Manual_-_Reports_-_part_2|Substitution Values]]) applies.<br />
<br />
Currently a note will be attached to a corner. If a person box writes over it, the note box will not move. Select another corner to see the note tab if this happens.<br />
<br />
====Final Result====<br />
<br />
[[Image:Descendant_tree2.png|right|thumb|400px|Fig. 8.9 Descendant Tree Result]]<br />
<br />
The final result can be seen on the right side.<br />
<br />
{{-}}<br />
<br />
===<u>Family Descendant Tree</u>===<br />
<br />
{{man note|Shared options with the [[#Descendant Tree|Descendant Tree report]]|This report only has three differences from the 'Descendant Tree' report. The only differences are:<br />
# this report runs off of a family instead of a person (differences on the tree tab)<br />
# More options for a report title (on the Include tab)<br />
# the final result<br />
}}<br />
<br />
==== Tree Tab ====<br />
<br />
[[Image:descend_treeF_tab.png|right|thumb|250px|Descendant Options tab]]<br />
<br />
{{man button|Report for:}} option will select the center family (Father and Mother) for this report. The currently active family will be the default family displayed.<br />
<br />
Choosing {{man label|Start with the parent(s) of the selected first}} may display two sets of parents (if the parents of both the father and mother are known). One set of parents for the father, and another set of parents for the mother of the family (ie grandparents of the children). As such, any siblings of the father will be shown on the fathers side and any siblings with the mother will be displayed with her. So the children of the center family will see their grandparents, parents, uncles and aunts and even cousins if there are any.<br />
<br />
==== Include Tab ====<br />
The {{man label|Report Title}}: has these additional options:<br />
# ''Do not print a title''<br />
# ''Descendant Chart for [selected person(s)]''<br />
# ''Family Chart for [names of chosen family]''<br />
# ''Cousin Chart for [names of children]'' (Only available if {{man label|Start with the parent(s) of the selected first}} is chosen)<br />
<br />
==== Final Result ====<br />
<br />
[[Image:Family_Descendant_chart.png|right|thumb|400px|Family Descendant Tree Result]]<br />
<br />
The final result can be seen on the right side.<br />
<br />
Note: The parents for Alice Paula are not shown because they are unknown (not in the database). Otherwise her parents, siblings and nieces/nephews could be shown.<br />
<br />
{{-}}<br />
<br />
===<u>Fan Chart</u>===<br />
<br />
This report produces a chart resembling a fan, with Active person in the center, parents the semicircle next to it, grandparents in the next semicircle, and so on, for a total of five generations.<br />
<br />
====Paper Options====<br />
With the {{man label|Paper Options}} you can change Paper format (Size and Orientation) and margins (Left, Right, Top and Bottom) and use metric values or not.<br />
<br />
====Document Options====<br />
Choose the output format: Open Document Text, PDF document, PostScript, Print..., or SVG (Scalable Vector Graphics). A {{man label|check box}} is available where you can indicate to open the made document with [http://www.documentfoundation.org/download/ LibreOffice] Word Processor or a Document Viewer (PDF file).<br />
<br />
====Report Options====<br />
<br />
[[Image:Fanchartoptions.png|right|thumb|250px|Fig. 8.10 Options Fan chart]]<br />
[[Image:Fanchartpdf.png|left|thumb|250px|Fig. 8.11 Fan chart]]<br />
<br />
First the Center Person is displayed. Using the {{man button|Edit}} button you can select a different person. With the next input field {{man label|Generations}} you can change the number of generations considered.<br />
Next input field {{man label|Type of graph}}: choose via the drop down menu: full, half , or quarter circle.<br />
Next input field {{man label|Background color}}: choose white or generation dependant.<br />
Next input field {{man label|Orientation of radial text}} : choose upright or roundabout<br />
<br />
{{-}}<br />
<br />
===<u>Statistics Chart</u>===<br />
<br />
This report can collect and display a wealth of statistical data about your database. Specific options include filter, sorting methods, and additional birth- and gender-based limit for inclusion into statistics. You can also set the minimum number of items to qualify for the bar chart, so that the charts with fewer items will generate a pie chart instead. The '''Chart Selection''' tab allows you to check which charts you want to include in your report.<br />
<br />
{{-}}<br />
<br />
====Paper Options====<br />
<br />
With the {{man label|Paper Options}} you can change Paper format (Size and Orientation) and margins (Left, Right, Top and Bottom) and use metric values or not.<br />
<br />
====Document Options====<br />
<br />
Document options: choose the output format: Open Document Text, PDF document, PostScript, Print..., or SVG (Scalable Vector Graphics). A {{man label|check box}} is available where you can indicate to open the made document with [http://www.documentfoundation.org/download/ LibreOffice] Word Processor or a Document Viewer (PDF file).<br />
<br />
====Report Options====<br />
<br />
[[Image:Statistic.png|right|thumb|250px|right|Fig. 8.12 Report Options]]<br />
<br />
* Filter: determines what people are included in the report. You can choose the entire Database, or descendants of a certain person, people with a common ancestor as... or a default/common made filter.<br />
* Filter person: The center person for the filter: only available if as filter not entire database selected. {{man button|Edit}} button let you choose another filter person.<br />
* Sort chart items by: Select how the statistical data is sorted: Choose Item count or item name from the drop down list.<br />
* check box: sort in reverse order<br />
* People born after: Birth year from which to include people: fill in a year to start from<br />
* People born before: Birth year until which to include people: fill in a year<br />
* check box: Whether to include people without known birth years<br />
* Gender included: Select which genders are included into statistics. Choose both, men, or women.<br />
* Max. items for a pie: With fewer items pie chart and legend will be used instead of a bar chart. Choose a number from the drop down list.<br />
<br />
{{-}}<br />
<br />
====Chart Options====<br />
<br />
[[Image:Statistic1.png|right|thumb|350px|Fig. 8.13 Statistics chart options]]<br />
<br />
* Charts 1: 9 check boxes are available to include charts with indicated data:<br />
<br />
[[Image:Statgraftaart.png|right|thumb|350px|Fig. 8.14 Results]]<br />
<br />
[[Image:Statistic2.png|right|thumb|350px|Fig. 8.15 Results]]<br />
<br />
** Age<br />
** Death place<br />
** Death month<br />
** Age when first child born<br />
** Title<br />
** Age when last child born<br />
** Birth month<br />
** Age at marriage<br />
** Age at death<br />
* Charts 2: 10 check boxes are available to include charts with indicated data:<br />
** Event type<br />
** Number of children<br />
** Marriage place <br />
** Number of relationships<br />
** Surname<br />
** Death year<br />
** Gender<br />
** Forename<br />
** Birth year<br />
** Birth place<br />
<br />
If all needed info is filled in click on {{man button|OK}} to start the data collecting. A progress bar will be shown: Collecting Data... ->Sorting Data...->Saving charts...<br />
<br />
The (Fig. 8.15) shows the result of '''Age of first child''' for all women born between 1500 and 2008. For most (576) persons personal information was missing, for some birth information was missing, but for 33 women their first child was born at age 20. With the detailed information further analysis can be done: calculate average, std. dev. etc.<br />
<br />
{{-}}<br />
<br />
===<u>Timeline Chart</u>===<br />
<br />
This report outputs the list of people with their lifetimes represented by intervals on a common chronological scale. Specific options include filter, sorting method, and the title of the report.<br />
<br />
====Paper Options====<br />
<br />
With the {{man label|Paper Options}} you can change Paper format (Size and Orientation) and margins (Left, Right, Top and Bottom) and use metric values or not.<br />
<br />
====Document Options====<br />
<br />
Document options: choose the output format: Open Document Text, PDF document, PostScript, Print..., or SVG (Scalable Vector Graphics). A {{man label|check box}} is available where you can indicate to open the made document with [http://www.documentfoundation.org/download/ LibreOffice] Word Processor or a Document Viewer (PDF file).<br />
<br />
Back to [[Gramps_3.3_Wiki_Manual_-_Reports|Index of Reports]].<br />
<br />
{{-}}<br />
<br />
{{man index|Gramps 3.3 Wiki Manual - Reports - part 3|Gramps 3.3 Wiki Manual - Reports - part 5|3.3}}<br />
<br />
{{languages}}<br />
<br />
[[Category:Documentation]]<br />
[[Category:Plugins]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Gramps_3.4_Wiki_Manual_-_Reports_-_part_4&diff=35112Gramps 3.4 Wiki Manual - Reports - part 42011-12-20T18:06:41Z<p>PaulFranklin: </p>
<hr />
<div>This section describes the different Graphical Reports available in Gramps.<br />
<br />
{{man index|Gramps 3.4 Wiki Manual - Reports - part 3|Gramps 3.4 Wiki Manual - Reports - part 5|3.4}}<br />
<br />
{{grampsmanualcopyright}}<br />
<br />
{{languages|Gramps_3.4_Wiki_Manual_-_Reports - part 4}}<br />
<br />
Back to [[Gramps_3.4_Wiki_Manual_-_Reports|Index of Reports]].<br />
<br />
==Graphical Reports==<br />
<br />
Graphical reports represent information in forms of charts and graphs. Most of the options are common among graphical reports, therefore they will be described only once, at the end of this section. The few options which are specific to a given report will be described directly in that report's entry. See also [[Gramps_3.4_Wiki_Manual_-_Reports_-_part_2|substitution values]].<br />
<br />
The following graphical reports are currently available in Gramps:<br />
<br />
===<u>Ancestor Tree</u>===<br />
<br />
This report generates the chart of people who are ancestors of the Active Person. <br />
<br />
====Paper Options====<br />
With the {{man label|Paper Options}} you can change Paper format (Size and Orientation) and margins (Left, Right, Top and Bottom) and use metric values or not.<br />
<br />
====Document Options====<br />
Choose the output format: Open Document Text, PDF document, PostScript, Print..., or SVG (Scalable Vector Graphics). A {{man label|check box}} is available where you can indicate to open the made document with [http://www.documentfoundation.org/download/ LibreOffice] Word Processor or a Document Viewer (PDF file).<br />
<br />
==== Tree Options tab ====<br />
<br />
[[Image:Ancestor_tree_tab.png|right|thumb|350px|Tree Options tab]]<br />
<br />
The {{man button|Center Person}} is chosen here. The Active person will be the default.<br />
<br />
With the input field {{man label|Generations}} you can change the number of generations considered.<br />
<br />
{{man label|Display unknown generations}} will allow you to select how many generations of empty boxes to display when the tree is not completely full.<br />
<br />
Here is also the check box {{man label|Compress tree}}.<br />
<br />
{{man label|Center person uses which format:}} allows you to specify if the center person uses the father display format or the mother display format found on the Display tab.<br />
<br />
==== Display tab ====<br />
<br />
[[Image:Ancestor_display_tab.png|right|thumb|250px|Display tab]]<br />
<br />
This tab allows you to determine the {{man label|Father Display Format}} to be used for the report. All fathers, grandfathers, etc. will use this format.<br />
<br />
The {{man label|Mother Display Format}} to be used for all mothers, grandmothers, etc. will use this format.<br />
<br />
The {} around the death information line states that this entire line will display ONLY when there is death information. See [[Gramps_3.4_Wiki_Manual_-_Reports_-_part_2|Substitution Values]] for more information, including how to include places and attributes, and format names and dates and places.<br />
<br />
{{man label|Include Marriage box}} specifies to display an extra box between a father and mother that contains marriage information. {{man label|The Marriage Display Format}} (see [[Gramps_3.4_Wiki_Manual_-_Reports_-_part_2|Substitution Values]]) specifies what will print in this box.<br />
<br />
==== Size tab ====<br />
<br />
[[Image:Ancestor_sizes_tab.png|right|thumb|250px|Sizes tab]]<br />
<br />
{{man label|Scale tree to fit}} will make the tree larger or smaller to fit the page as desired. The options are:<br />
* Do not Scale the tree<br />
* Scale tree to fit page width only<br />
* Scale tree to fit the size of the page<br />
<br />
where {{man label|Resize page to fit tree}} will make the page larger or smaller to fit the tree <br />
<br />
If both are selected, the options happen in that order; scale the tree first, then the page.<br />
<br />
These two options are better described in [[Gramps_3.4_Wiki_Manual_-_Reports_-_part_4.2|Size options]] with tips for making nicer reports.<br />
<br />
==== Include tab ====<br />
<br />
[[Image:Ancestor_include_tab.png|right|thumb|250px|Note tab]]<br />
<br />
This tab gives you the option to include other items on the report.<br />
<br />
{{man label|Report title}} allows you to choose a title for the report. <br />
* ''Do not print a title''<br />
* ''Include Report Title''<br />
<br />
And this tab also includes check boxes for {{man label|Include a border}}, {{man label|Include page numbers}}, and {{man label|Include blank pages}}.<br />
<br />
This tab also allows you to {{man label|Include a note}} to one of the corners of the report.<br />
<br />
“$T” within the note will display the day that the report was made. Regular date formatting (see [[Gramps_3.4_Wiki_Manual_-_Reports_-_part_2|Substitution Values]]) applies.<br />
<br />
Currently a note will be attached to a corner. If a person box writes over it, the note box will not move. Select another corner to see the note tab if this happens.<br />
<br />
====Final Result====<br />
<br />
[[Image:Ancestor chart.png|thumb|left|500x|Fig. 8.2 PDF Output ancestor tree]]<br />
<br />
Fig. 8.2 shows the final output result.<br />
<br />
{{-}}<br />
<br />
===<u>Calendar</u>===<br />
<br />
This report produces a calendar with birthdays and anniversaries on a page by month.<br />
<br />
====Paper Options====<br />
<br />
[[Image:Calendarreport1.png|right|thumb|350px|Fig. 8.3 Calendar Paper Options]]<br />
<br />
With the Paper Options you can change<br />
* Paper format (Size and Orientation)<br />
* Margins (Left, Right, Top and Bottom) <br />
and whether to use metric values or not.<br />
<br />
{{-}}<br />
<br />
====Document options====<br />
<br />
[[Image:Calendarreport4.png|right|thumb|350px|Fig. 8.4 Calendar Document Options]]<br />
<br />
* Output Format: choose the output format: <br />
** Open Document Text<br />
** PDF document<br />
** PostScript<br />
** Print...<br />
** SVG (Scalable Vector Graphics). A {{man label|check box}} is available where you can indicate to open the made document with [http://www.documentfoundation.org/download/ LibreOffice] Word Processor or a Document Viewer (PDF file).<br />
* Filename: default value is ''/home/<username>/calendar.pdf''.<br />
* Style: default ''default style'' . With the {{man button|Style Editor...}} you can add Document Styles.<br />
<br />
{{-}}<br />
<br />
====Report Options====<br />
<br />
[[Image:Calendarreport2.png|right|thumb|250px|Fig. 8.5 Calendar Report Options]]<br />
<br />
* Year of calendar: for which year you want the calendar to be build.<br />
* Filter: select filter to restrict people that appear on the calendar<br />
** Entire Database : not recommended!<br />
** Descendants of ...<br />
** Descendant Families of ...<br />
** Ancestors of ...<br />
** People with common ancestors with ...<br />
** any custom filter who have made<br />
* Center Person: the center person for the report<br />
* Name Format: Select the format to display names: choose between:<br />
** Surname, Given Patronymic<br />
** Given Surname<br />
** Patronymic, Given<br />
** Given<br />
* Country for holidays: Select the country to see associated holidays choose between:<br />
** Don't include holidays: default value<br />
** Canada / China / Deutschland / Finland / France / Sverige - röda dagar / United States / Ceska republika<br />
* First day of week:<br />
* Birthday surname:<br />
* Checkboxes:<br />
** Include only living people: include only living people in the calendar<br />
** Include birthdays: include birthdays in the calendar<br />
** Include anniversaries: include anniversaries in the calendar<br />
<br />
{{-}}<br />
<br />
====Calendar Text Options====<br />
<br />
[[Image:Calendarreport3.png|right|thumb|250px|Fig. 8.6 Calendar Text Options]]<br />
<br />
Here you can fill in three lines of text that will be put at the bottom of the page.<br />
* Text Area 1: First line of text at bottom of calendar default value : ''My Calendar''<br />
* Text Area 2: Second line of text at bottom of calendar default value: ''Produced by Gramps''<br />
* Text Area 3: Third line of text at bottom of calendar default value: '' http://gramps-project.org/''<br />
<br />
{{-}}<br />
<br />
====Final Result====<br />
<br />
[[Image:Calendarreport5.png|right|thumb|450px|Fig. 8.7 Calendar Result]]<br />
<br />
The final result can be seen on the right side.<br />
<br />
[[Calendar_tools_holidays|Calendar tools holidays]] explains how to add or change the holidays appearing on the output of the calendar plugin.<br />
<br />
{{-}}<br />
<br />
===<u>Descendant Tree</u>===<br />
<br />
This report generates a graph of people who are descendants of the Active Person. Specific options include the format of the displayed entries.<br />
<br />
====Paper Options====<br />
With the Paper Options you can change<br />
* Paper format (Size and Orientation)<br />
* Margins (Left, Right, Top and Bottom) <br />
and whether to use metric values or not.<br />
<br />
====Document Options====<br />
* Output Format: choose the output format: <br />
** Open Document Text<br />
** PDF document<br />
** PostScript<br />
** Print...<br />
** SVG (Scalable Vector Graphics). A {{man label|check box}} is available where you can indicate to open the made document with [http://www.documentfoundation.org/download/ LibreOffice] Word Processor or a Document Viewer (PDF file).<br />
* Filename: default value is ''/home/<username>/descend_chart.pdf''.<br />
* Style: default ''default style'' . With the {{man button|Style Editor...}} you can add Document Styles.<br />
<br />
==== Descendant report Tree tab ====<br />
<br />
[[Image:descend_treeP_tab.png|right|thumb|250px|Descendant Options tab]]<br />
<br />
{{man button|Report for:}} option will select the center person for this report. The currently home person will be the default person displayed. <br />
<br />
{{man label|Start with the parent(s) of the selected first}} will display parents of the center person if the parents are known. As such any siblings of the center person will be displayed too.<br />
<br />
This is broken apart from the tree tab as the 'Family Descendant Report' only differs in this one part on this tab.<br />
<br />
==== Tree tab ====<br />
<br />
[[Image:descend_tree2_tab.png|right|thumb|250px|Descendant Options tab]]<br />
<br />
Both of the Descendant Tree and Family Descendant Tree reports share these features on the Tree tab:<br />
<br />
The number of {{man label|Generations}} to see on the report (from the center person/family). If {{man label|Start with the parent(s) of the selected first}} is selected, this number is effectively increased by one.<br />
<br />
{{man label|Level of spouses}} specifies the how deep to display spouses. <br />
<br />
For the example: <br />
<br />
* Abe is a direct descendant<br />
** Abe has/had married Barbra and had two children<br />
** Abe also married Bridget and had one child<br />
*** Bridget has/had married Carl. <br />
**** Carl and Denise had a child.<br />
<br />
Given the above example, this is what will be displayed for the first three {{man label|Level of spouses}} options.<br />
* 0 means that only direct descendants will be shown. Nothing on the Secondary tab will be shown (Spousal information or Marriage information). For the example above, only Abe will be shown with three children directly under him<br />
* 1 means that only spouses of the direct descendants will be shown. For the example above, Abe will be shown with two pieces of marriage information. Under the first will be two children and one child under the second.<br />
* 2 means that spouses of spouses are shown. Same as 1 but Bridget will also show her other marriage. If they had any children, they would be shown too.<br />
* 3 means that everyone in the example above will be displayed.<br />
Any option above 1 is very hard to read on the report without the {{man label|Indent Spouses}} option on the Secondary tab.<br />
And last but not least is the {{man label|Compress Tree}} option which tries to move everyone up as far as they can go (compress) and still have a readable report.<br />
<br />
==== Display tab ====<br />
<br />
[[Image:descend_display_tab.png|right|thumb|250px|Descendant Display tab]]<br />
<br />
{{man label|Descendant Display Format}} sets the display for all descendants in the tree. The default is:<br />
<pre>$n<br />
b. $b<br />
{d. $d}</pre><br />
<br />
The {} around the death information line states that this entire line will display ONLY when there is death information. See [[Gramps_3.4_Wiki_Manual_-_Reports_-_part_2|Substitution Values]] for more information, including how to include places and attributes, and format names and dates and places.<br />
<br />
And the check box {{man label|Bold direct descendants}} can also make the report easier to read.<br />
<br />
You can set the {{man label|Spousal Display format}}. If you do not wish to have the separate marital box, the spousal box can be used for marriage information. This option defaults as above.<br />
<br />
{{man label|Indent spouses}} will offset spouses a little from each other making it easier to know who has married who.<br />
<br />
{{man label|Include marriage box}} will display a separate box on the tree for marriage information. The display for this box is set in {{man label|Marriage Display format}}.<br />
<br />
{{-}}<br />
<br />
==== Replace tab ====<br />
<br />
[[Image:descend_replace_tab.png|right|thumb|250px|Descendant Replace tab]]<br />
<br />
This allows you to put in pairs of strings separated by '/' that state what you want to replace and what you want to replace it with. <br />
<br />
{{-}}<br />
<br />
Example:<br />
<pre>The United States of America/USA<br />
United Kingdom of Great Britain and Northern Ireland/UK<br />
Llanfair&shy;pwllgwyn&shy;gyllgo&shy;gerychwyrn&shy;drobwll&shy;llanty&shy;silio&shy;gogogoch/Llanfairpwll</pre><br />
Every column width is defined by the widest box in the report. So if one box happens to be a lot wider than all of the others, a lot of space will be wasted. This option allows you to remove or abbreviate parts of the string that is not needed or can be cut down so the amount of space wasted is minimal.<br />
<br />
==== Include tab ====<br />
<br />
[[Image:Ancestor_include_tab.png|right|thumb|250px|Descendant Replace tab]]<br />
<br />
{{man label|Report title}} allows you to choose a title for the report. <br />
* ''Do not print a title''<br />
* ''Descendant Chart for [selected person(s)]''<br />
<br />
And this tab also includes check boxes to {{man label|Include a border}}, {{man label|Include page numbers}}, and {{man label|Include blank pages}}.<br />
<br />
This tab also allows you to {{man label|Include a note}} to one of the corners of the report. <br />
<br />
“$T” within the report will display the day that the report was made.<br />
Regular date formatting (see [[Gramps_3.4_Wiki_Manual_-_Reports_-_part_2|Substitution Values]]) applies.<br />
<br />
Currently a note will be attached to a corner. If a person box writes over it, the note box will not move. Select another corner to see the note tab if this happens.<br />
<br />
====Final Result====<br />
<br />
[[Image:Descendant_tree2.png|right|thumb|400px|Fig. 8.9 Descendant Tree Result]]<br />
<br />
The final result can be seen on the right side.<br />
<br />
{{-}}<br />
<br />
===<u>Family Descendant Tree</u>===<br />
<br />
{{man note|Shared options with the [[#Descendant Tree|Descendant Tree report]]|This report only has three differences from the 'Descendant Tree' report. The only differences are:<br />
# this report runs off of a family instead of a person (differences on the tree tab)<br />
# More options for a report title (on the Include tab)<br />
# the final result<br />
}}<br />
<br />
==== Tree Tab ====<br />
<br />
[[Image:descend_treeF_tab.png|right|thumb|250px|Descendant Options tab]]<br />
<br />
{{man button|Report for:}} option will select the center family (Father and Mother) for this report. The currently active family will be the default family displayed.<br />
<br />
Choosing {{man label|Start with the parent(s) of the selected first}} may display two sets of parents (if the parents of both the father and mother are known). One set of parents for the father, and another set of parents for the mother of the family (ie grandparents of the children). As such, any siblings of the father will be shown on the fathers side and any siblings with the mother will be displayed with her. So the children of the center family will see their grandparents, parents, uncles and aunts and even cousins if there are any.<br />
<br />
==== Include Tab ====<br />
The {{man label|Report Title}}: has these additional options:<br />
# ''Do not print a title''<br />
# ''Descendant Chart for [selected person(s)]''<br />
# ''Family Chart for [names of chosen family]''<br />
# ''Cousin Chart for [names of children]'' (Only available if {{man label|Start with the parent(s) of the selected first}} is chosen)<br />
<br />
==== Final Result ====<br />
<br />
[[Image:Family_Descendant_chart.png|right|thumb|400px|Family Descendant Tree Result]]<br />
<br />
The final result can be seen on the right side.<br />
<br />
Note: The parents for Alice Paula are not shown because they are unknown (not in the database). Otherwise her parents, siblings and nieces/nephews could be shown.<br />
<br />
{{-}}<br />
<br />
===<u>Fan Chart</u>===<br />
<br />
This report produces a chart resembling a fan, with Active person in the center, parents the semicircle next to it, grandparents in the next semicircle, and so on, for a total of five generations.<br />
<br />
====Paper Options====<br />
With the {{man label|Paper Options}} you can change Paper format (Size and Orientation) and margins (Left, Right, Top and Bottom) and use metric values or not.<br />
<br />
====Document Options====<br />
Choose the output format: Open Document Text, PDF document, PostScript, Print..., or SVG (Scalable Vector Graphics). A {{man label|check box}} is available where you can indicate to open the made document with [http://www.documentfoundation.org/download/ LibreOffice] Word Processor or a Document Viewer (PDF file).<br />
<br />
====Report Options====<br />
<br />
[[Image:Fanchartoptions.png|right|thumb|250px|Fig. 8.10 Options Fan chart]]<br />
[[Image:Fanchartpdf.png|left|thumb|250px|Fig. 8.11 Fan chart]]<br />
<br />
First the Center Person is displayed. Using the {{man button|Edit}} button you can select a different person. With the next input field {{man label|Generations}} you can change the number of generations considered.<br />
Next input field {{man label|Type of graph}}: choose via the drop down menu: full, half , or quarter circle.<br />
Next input field {{man label|Background color}}: choose white or generation dependant.<br />
Next input field {{man label|Orientation of radial text}} : choose upright or roundabout<br />
<br />
{{-}}<br />
<br />
===<u>Statistics Chart</u>===<br />
<br />
This report can collect and display a wealth of statistical data about your database. Specific options include filter, sorting methods, and additional birth- and gender-based limit for inclusion into statistics. You can also set the minimum number of items to qualify for the bar chart, so that the charts with fewer items will generate a pie chart instead. The '''Chart Selection''' tab allows you to check which charts you want to include in your report.<br />
<br />
{{-}}<br />
<br />
====Paper Options====<br />
<br />
With the {{man label|Paper Options}} you can change Paper format (Size and Orientation) and margins (Left, Right, Top and Bottom) and use metric values or not.<br />
<br />
====Document Options====<br />
<br />
Document options: choose the output format: Open Document Text, PDF document, PostScript, Print..., or SVG (Scalable Vector Graphics). A {{man label|check box}} is available where you can indicate to open the made document with [http://www.documentfoundation.org/download/ LibreOffice] Word Processor or a Document Viewer (PDF file).<br />
<br />
====Report Options====<br />
<br />
[[Image:Statistic.png|right|thumb|250px|right|Fig. 8.12 Report Options]]<br />
<br />
* Filter: determines what people are included in the report. You can choose the entire Database, or descendants of a certain person, people with a common ancestor as... or a default/common made filter.<br />
* Filter person: The center person for the filter: only available if as filter not entire database selected. {{man button|Edit}} button let you choose another filter person.<br />
* Sort chart items by: Select how the statistical data is sorted: Choose Item count or item name from the drop down list.<br />
* check box: sort in reverse order<br />
* People born after: Birth year from which to include people: fill in a year to start from<br />
* People born before: Birth year until which to include people: fill in a year<br />
* check box: Whether to include people without known birth years<br />
* Gender included: Select which genders are included into statistics. Choose both, men, or women.<br />
* Max. items for a pie: With fewer items pie chart and legend will be used instead of a bar chart. Choose a number from the drop down list.<br />
<br />
{{-}}<br />
<br />
====Chart Options====<br />
<br />
[[Image:Statistic1.png|right|thumb|350px|Fig. 8.13 Statistics chart options]]<br />
<br />
* Charts 1: 9 check boxes are available to include charts with indicated data:<br />
<br />
[[Image:Statgraftaart.png|right|thumb|350px|Fig. 8.14 Results]]<br />
<br />
[[Image:Statistic2.png|right|thumb|350px|Fig. 8.15 Results]]<br />
<br />
** Age<br />
** Death place<br />
** Death month<br />
** Age when first child born<br />
** Title<br />
** Age when last child born<br />
** Birth month<br />
** Age at marriage<br />
** Age at death<br />
* Charts 2: 10 check boxes are available to include charts with indicated data:<br />
** Event type<br />
** Number of children<br />
** Marriage place <br />
** Number of relationships<br />
** Surname<br />
** Death year<br />
** Gender<br />
** Forename<br />
** Birth year<br />
** Birth place<br />
<br />
If all needed info is filled in click on {{man button|OK}} to start the data collecting. A progress bar will be shown: Collecting Data... ->Sorting Data...->Saving charts...<br />
<br />
The (Fig. 8.15) shows the result of '''Age of first child''' for all women born between 1500 and 2008. For most (576) persons personal information was missing, for some birth information was missing, but for 33 women their first child was born at age 20. With the detailed information further analysis can be done: calculate average, std. dev. etc.<br />
<br />
{{-}}<br />
<br />
===<u>Timeline Chart</u>===<br />
<br />
This report outputs the list of people with their lifetimes represented by intervals on a common chronological scale. Specific options include filter, sorting method, and the title of the report.<br />
<br />
====Paper Options====<br />
<br />
With the {{man label|Paper Options}} you can change Paper format (Size and Orientation) and margins (Left, Right, Top and Bottom) and use metric values or not.<br />
<br />
====Document Options====<br />
<br />
Document options: choose the output format: Open Document Text, PDF document, PostScript, Print..., or SVG (Scalable Vector Graphics). A {{man label|check box}} is available where you can indicate to open the made document with [http://www.documentfoundation.org/download/ LibreOffice] Word Processor or a Document Viewer (PDF file).<br />
<br />
Back to [[Gramps_3.4_Wiki_Manual_-_Reports|Index of Reports]].<br />
<br />
{{-}}<br />
<br />
{{man index|Gramps 3.4 Wiki Manual - Reports - part 3|Gramps 3.4 Wiki Manual - Reports - part 5|3.4}}<br />
<br />
{{languages}}<br />
<br />
[[Category:Documentation]]<br />
[[Category:Plugins]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Gramps_3.3_Wiki_Manual_-_Reports_-_part_2&diff=33231Gramps 3.3 Wiki Manual - Reports - part 22011-12-20T17:24:28Z<p>PaulFranklin: /* Control Variables */</p>
<hr />
<div>This section describes the substitution values that can be used in the different reports available in Gramps.<br />
<br />
{{man index|Gramps 3.3 Wiki Manual - Reports - part 1|Gramps 3.3 Wiki Manual - Reports- part 3|3.3}}<br />
<br />
{{grampsmanualcopyright}}<br />
<br />
{{languages|Gramps_3.3_Wiki_Manual_-_Reports - part 2}}<br />
<br />
Back to [[Gramps_3.3_Wiki_Manual_-_Reports|Index of Reports]].<br />
<br />
= Substitution Values =<br />
<br />
Many of the graphical reports allow you to customize the information that is displayed on the reports. Variable substitution is the method that is used to substitute a particular symbol (key) for specific information about the person in the database.<br />
<br />
{|<br />
|-<br />
|Example: <br />
|Will show as: (the person is alive)<br />
|-<br />
|<pre>$n<br />
b. $b $B<br />
d. $d $D</pre><br />
|<pre>Smith, Edwin Michael<br />
b. 1961-05-24 San Jose, Santa Clara Co., CA<br />
d.</pre><br />
|}<br />
<br />
== The Substitution Keys ==<br />
<br />
{|<br />
|-<br />
| colspan="2"|'''Personal variables'''<br />
| colspan="2"|'''Marital variables'''<br />
|-<br />
|$n<br />
|Displays the person's name<br />
|$s<br />
|Displays the name of the person's spouse<br />
|-<br />
|$i<br />
|Displays the GRAMPS ID for the person.<br />
|$j<br />
|Displays the GRAMPS ID for the marriage.<br />
|-<br />
|$b<br />
|Displays the person's date of birth <br />
|$m<br />
|Displays the marriage date of the person and the spouse.<br />
|-<br />
|$B<br />
|Displays the person's place of birth <br />
|$M<br />
|Displays the place of the marriage of the person and the spouse.<br />
|-<br />
|$d<br />
|Displays the person's date of death <br />
|$v<br />
|Displays the divorce date of the person and the spouse.<br />
|-<br />
|$D<br />
|Displays the person's place of death <br />
|$V<br />
|Displays the place of the divorce of the person and the spouse.<br />
|-<br />
|$a<br />
|Displays an attribute about the person.<br />
see [[#Attributes|Attributes]] for more<br />
|$u<br />
|Displays an attribute about the marriage.<br />
see [[#Attributes|Attributes]] for more<br />
|-<br />
|$e<br />
|Displays event information about the person.<br />
See [[#Events|Events]] for more<br />
|$t<br />
|Displays an event information about the marriage.<br />
See [[#Events|Events]] for more<br />
|}<br />
<br />
All of the Marital variables are defined by the person's preferred spouse in Gramps. If the person has never been married, then these variables will not display anything.<br />
<br />
----<br />
=== Default displayed formats ===<br />
<br />
{|<br />
|-<br />
|$n $s<br />
|Names will be displayed as set in 'Name format:' on the Display tab in Gramps preferences<br />
|-<br />
|$B $D $M $V<br />
|Places will display the Place title by default<br />
|-<br />
|$b $d $m $v<br />
|Dates will be displayed as set in 'Date format:' on the Display tab in Gramps preferences<br />
|-<br />
|$e $t<br />
|Events will display the description by default<br />
|}<br />
<br />
----<br />
{|<br />
|-<br />
|1<br />
|If you wish to display names, date, or place information differently, you may use [[#Format Strings|Format Strings]] to accomplish this.<br />
|-<br />
|2<br />
|There are also [[#Control Variables|Control Variables]] to display special characters (like the dollar sign).<br />
|-<br />
|3<br />
|You can also use [[#Grouping|Grouping]] to optionally display information or whole lines<br />
|-<br />
|4<br />
|Along with [[#Events|Events]] you can print almost anything.<br />
|-<br />
|5<br />
|Finally, [[#Separators|Separators]], to make your life complete.<br />
|-<br />
|}<br />
<br />
----<br />
<br />
=== Deprecated variables ===<br />
<br />
Some of the old variables were deprecated because [[#Format Strings|Format Strings]] have replaced them. So here is a list of those variables and how to achieve their results:<br />
<br />
{| {{prettytable}}<br />
|-<br />
!Old Variable<br />
!How to display it now<br />
!What is displayed<br />
|-<br />
|$f<br />
|$n<br />
|Name - as by Gramps name display under Preferences<br />
|-<br />
|$n<br />
|$n(g f)<br />
|Name - FirstName LastName<br />
|-<br />
|$N<br />
|$n(f, g)<br />
|Name - LastName, FirstName (note the explicit comma)<br />
|-<br />
|$nC<br />
|$n(g F)<br />
|Name - FirstName LastName in UPPER case<br />
|-<br />
|$NC<br />
|$n(F, g)<br />
|Name - LastName in UPPER case, FirstName<br />
|-<br />
|$by<br />
|$b(yyyy)<br />
|Date of birth, year only<br />
|-<br />
|$dy<br />
|$d(yyyy)<br />
|Date of death, year only<br />
|-<br />
|$my<br />
|$m(yyyy)<br />
|Date of preferred marriage, year only<br />
|-<br />
|$p<br />
|$s<br />
|Preferred spouse's name as by Gramps name display under Preferences<br />
|-<br />
|$s<br />
|$s(g f)<br />
|Preferred spouse's name - FirstName LastName<br />
|-<br />
|$S<br />
|$s(f, g)<br />
|Preferred spouse's name - LastName, FirstName<br />
|-<br />
|$sC<br />
|$s(g F)<br />
|Preferred spouse's name - FirstName LastName in UPPER case<br />
|-<br />
|$SC<br />
|$s(F, g)<br />
|Preferred spouse's name - LastName in UPPER case, FirstName<br />
|}<br />
<br />
== Format Strings ==<br />
<br />
Format strings are used to display names and dates differently than those assigned under Gramps Preferences. Here is the syntax for a format string:<br />
<br />
$''<span style="background: #c0c0c0">key</span>''(format string)<br />
where: ''<span style="background: #c0c0c0">key</span>'' is one of the following characters: 'nsijbmBMdvDVauet'<br />
<br />
A format string is any text, separators or format codes (defined below) to display information about the person.<br />
<br />
=== Formatting names ===<br />
<br />
For names ($n $s) you may use the following formatting codes to display the name differently.<br />
<br />
{|<br />
|-<br />
|t<br />
|Title<br />
|<br />
|f<br />
|Given name<br />
|-<br />
|x<br />
|Common name. Call name if existing, otherwise first first name<br />
|<br />
|c<br />
|Call name<br />
|-<br />
|n<br />
|Nick name<br />
|<br />
|s<br />
|Suffix<br />
|-<br />
|l<br />
|Surname<br />
|<br />
|g<br />
|Family nickname<br />
|}<br />
<br />
These codes can be uppercased to uppercase the result.<br />
<br />
{|<br />
|-<br />
|Example code<br />
|Displays<br />
|-<br />
|<pre>$n(L, f) ($n(c)), $n(L, f){ ($n(c))}<br />
$s(f l s)</pre><br />
|<pre>SMITH, Edwin Michael (), SMITH, Edwin Michael<br />
Janice Ann Adams</pre><br />
|}<br />
<br />
<br />
<blockquote>Note:<br />
If you want to print a character 'c' within the format string (or any one of the other format codes), you will need to first add a '&#92;' in front of it. See [[#Control Variables|Control Variables]] for more.</blockquote><br />
<br />
<blockquote>Note:<br />
the curly brackets { } are used to hide information. Here it is used around ' ($n(c))' to not display ' ()' if the person does not have a call name. See [[#Grouping|Grouping]] for more.</blockquote><br />
<br />
----<br />
<br />
=== Formatting Dates ===<br />
<br />
For all of the date variables ($b $d $m $v) you may use the following formatting codes:<br />
<br />
{|<br />
|-<br />
|yyyy<br />
|The year as a four digit number<br />
|<br />
|yyy<br />
|The year, with a minimum of three digits<br />
|-<br />
|yy<br />
|The year, from 00 to 99<br />
|<br />
|y<br />
|The year, from 0 to 99<br />
|-<br />
|mmmm<BR><br />
MMMM<br />
|The full name of the month<BR><br />
The full name IN CAPS<br />
|<br />
|mmm<BR><br />
MMM<br />
|The abbreviated name of the month<BR><br />
The abbreviated name IN CAPS<br />
|-<br />
|mm<br />
|The month, from 00 to 12<br />
|<br />
|m<br />
|The month, from 0 to 12<br />
|-<br />
|dd<br />
|The day, from 00 to 31<br />
|<br />
|d<br />
|The day, from 0 to 31<br />
|-<br />
|o<br />
|The date type (modifier)<br />
|<br />
|<br />
|<br />
|}<br />
<br />
{|<br />
|-<br />
|Example code<br />
|displays<br />
|-<br />
|<pre>$b(mmm-dd yy)<br />
$m(yyyy/mmm/d)<br />
$b(mmm-dd yy)</pre><br />
|<pre>May-24 61<br />
1995/May/27<br />
Jun-04 85</pre><br />
|}<br />
<br />
{{man note| For date types (modifier) |Only "Before", "After", and "About" are supported at this time. all others will not display anything.<BR><br />
And for date span and date ranges, only the starting (first) date is displayed.}}<br />
<br />
----<br />
<br />
=== Formatting Places ===<br />
<br />
For all of the place variables ($B $D $M $V) you may use the following formatting codes:<br />
<br />
{|<br />
|-<br />
|e<br />
|Street<br />
|<br />
|l<br />
|Locality<br />
|-<br />
|c<br />
|City<br />
|<br />
|u<br />
|County<br />
|-<br />
|s<br />
|State<br />
|<br />
|p<br />
|Postal Code<br />
|-<br />
|n<br />
|Country<br />
|<br />
|t<br />
|Title<br />
|-<br />
|x<br />
|Longitude<br />
|<br />
|y<br />
|Latitude<br />
|}<br />
These codes can be uppercased to uppercase the result. <br />
<br />
{|<br />
|-<br />
|Example code<br />
|displays<br />
|-<br />
|<pre>$B<br />
$B(c, s, N)</pre><br />
|<pre>St Judes Hospital<br />
Carmel, IN, USA</pre><br />
|}<br />
<br />
----<br />
<br />
=== Rules for format strings. ===<br />
<br />
{|<br />
|-<br />
|1<br />
|Anything will print inside a format string<br />
|-<br />
|1a<br />
|you will have to use [[#Control Variables|Control Variables]] to display things like ')' and format codes<br />
|-<br />
|2<br />
|Separators can be within format strings.<br />
|-<br />
|3<br />
|At least ONE format code has to display something for the ENTIRE format string to display<br />
|}<br />
<br />
----<br />
<br />
=== Examples ===<br />
<br />
{|<br />
|-<br />
|code<br />
|gives<br />
|-<br />
|<pre>$n(f l)<br />
b. $b {at $B<br />
{d. $d $D</pre><br />
|<pre>Edwin Michael Smith<br />
b. 1961-05-24 at San Jose, Santa Clara Co., CA</pre>The person is still alive (or has no information present) so the line was removed.<br />
|}<br />
<br />
<br />
<br />
== Control Variables ==<br />
<br />
Control variables allow you to print characters that are special to Substitution values within a display.<br />
<br />
For example the dollar character '$' is used to note the start of a variable. If you wish to print a dollar character you would use a control character like '&#92;$'<br />
<br />
Control Variables<br />
<br />
{|<br />
|-<br />
|&#92;$<br />
|Displays a single '$'<br />
|<br />
|&#92;&#92;<br />
|Displays a single '&#92;'<br />
|-<br />
|&#92;(<br />
|Displays a single '('<br />
|<br />
|&#92;)<br />
|Displays a single ')'<br />
|-<br />
|&#92;{<br />
|Displays a single '{'<br />
|<br />
|&#92;}<br />
|Displays a single '}'<br />
|-<br />
|&#92;<<br />
|Displays a single '<'<br />
|<br />
|&#92;><br />
|Displays a single '>'<br />
|}<br />
<br />
Basically anything that comes after a '&#92;' will be printed.<br />
<br />
----<br />
Note:<br />
When you are inside a format string, you may need to use this to display a character that would normally be a format code. <br />
<br />
{|<br />
|-<br />
|Example:<br />
|would give<br />
|-<br />
|<pre>$b(m hi mom)<br />
$b(m hi \mo\m)</pre><br />
|<pre>5 hi 5o5<br />
5 hi mom</pre><br />
|}<br />
<br />
as this person was born on the fifth month.<br />
<br />
== Grouping ==<br />
<br />
There are instances where you do not want certain text to be displayed. Take the example:<br />
<br />
{|<br />
|-<br />
|Code<br />
|Only date is known<br />
|Only place is known<br />
|-<br />
|<pre>died on $d at $D</pre><br />
|<pre>died on 1975-06-26 at </pre> <br />
|<pre>died on at Reno, Washoe Co., NV</pre><br />
|-<br />
| colspan="3"|Neither of these are very acceptable.<br />
|-<br />
| colspan="3"|But with groups (denoted by {}), you can optionally print information if a variable within contains information.<br />
|-<br />
| colspan="3"|For example:<br />
|-<br />
|Code<br />
|Only date is known<br />
|Only place is known<br />
|-<br />
|<pre>died {on $d }{at $D}</pre><br />
|<pre>died on 1975-06-26</pre><br />
|<pre>died at Reno, Washoe Co., NV</pre><br />
|}<br />
<br />
which is what we want.<br />
<br />
----<br />
=== Rules for groups ===<br />
<br />
A group will only display if there is at least one variable that displays something. So if a group only has text and/or variables where the information is not known, the entire group will not print.<br />
<br />
Groups can also be nested. If this happens (like below), the outer group will only display if there is at least one variable that displays something within the outer group or any of the sub groups.<br />
<br />
Groups can also be used to remove an entire line from a display. A '{' at the start of a line will remove the entire line from the display if the above rule is true.<br />
<br />
If you do not wish to have the display code above (for death information) displayed (the person is alive, or you do not yet know the information), modify the code to look like<br />
<pre>{died {on $d }{at $D}</pre><br />
<br />
<blockquote>To have an entire line be blank instead of removing the line simply start the line with a space ' {' or make sure there is a space after the group (you will have to close the group first)</blockquote><br />
<br />
----<br />
=== Examples: ===<br />
<br />
This will hide '(' and ')' if the divorce information is not known (or still married).<br />
<br />
<pre>m. $m $M {- ($v(yyyy))</pre><br />
<br />
<br />
Only display some spouse information if married or remove the entire line if never married:<br />
<pre>{$s $m(yyyy) {- $v(\(yyyy\))}}</pre><br />
<br />
<br />
<br />
== Attributes ==<br />
<br />
Attributes do not have a format string. Instead the attribute name is placed inside []. Here is the syntax for an attribute:<br />
<br />
$''<span style="background: #c0c0c0">key</span>''[attribute name] where: ''<span style="background: #c0c0c0">key</span>'' is one of the following characters: 'au'<br />
<br />
Example:<br />
<br />
{|<br />
|-<br />
|<pre>$a[Profession]<br />
$a[Social Security Number]<br />
$a[Total \$ bequeathed]</pre><br />
|<pre>Programmer<br />
7A3-29-F1C6<br />
3.00USD</pre><br />
|}<br />
<br />
<br />
----<br />
== Events ==<br />
<br />
Events have the same starting structure as attributes, $e or $t and the event name in [] but events have an extra format string after the name to display the description, date, place, id, and attributes associated with it. Each of these items can be displayed with a , a 'n', 'd', 'D', 'i', and 'a' respectively in the format string. Here is the syntax for an event:<br />
<br />
$''<span style="background: #c0c0c0">key</span>''[attribute name](format string) where: ''<span style="background: #c0c0c0">key</span>'' is one of the following characters: 'et'<br />
<br />
=== Event format strings ===<br />
<br />
The Event format string is used to display information about the event. Here are the format codes to display parts of the event:<br />
<br />
{|<br />
|-<br />
|n<br />
|Description<br />
|<br />
|i<br />
|Event ID<br />
|-<br />
|d<br />
|Event Date&#42;<br />
|<br />
|D<br />
|Event Place&#42;<br />
|-<br />
|a<br />
|An attributes for the event&#42;&#42;<br />
|<br />
|<br />
|<br />
|}<br />
<br />
&#42;These variables can themselves have format strings. Date and a place can be formatted with format string as defined in [[#Format strings|Format strings]].<br />
<br />
&#42;&#42;Attribute needs to have the attribute name in [] and are formatted as above.<br />
<br />
Example:<br />
<br />
{|<br />
|-<br />
|<pre>$e[First Communion](d(yyyy-mm-d))<br />
$e[Bar Mitzvah](n&lt; at &gt; D)<br />
$e[Birth](d(yyyy mm/dd) D)</pre><br />
|<pre>2009-11-6<br />
Jerry's Bar Mitzah at Opas house<br />
2007 05/23 Grandmothers house</pre><br />
|}<br />
<br />
<br />
And:<br />
<br />
{|<br />
|-<br />
|<pre>$b(yyyy-Mmm-dd)<br />
$M</pre><br />
|is the same as<br />
|<pre>$e[Birth](d(yyyy-Mmm-dd))<br />
$t[Marriage](D)</pre><br />
|}<br />
<br />
<br />
----<br />
<br />
=== Notes for attributes and events: ===<br />
<br />
{|<br />
|-<br />
|1<br />
|Attribute and event names are mandatory. '$a' or '$a[]' will not display anything.<br />
|-<br />
|2<br />
|Attributes and event names may have special characters within them. Most notably ']' and ')'. If this is the case, you will need to use [[#Control Variables|Control Variables]]<br />
|}<br />
<br />
== Separators ==<br />
<br />
Separators are special 'text only' groups inside '&lt;' and '&gt;' that conditionally display a separator (like ', ' or ' - ') between two variables, format codes or text.<br />
<br />
Separators are displayed conditionally depending on these rules:<br />
<br />
# A variable that does '''not''' display anything will remove itself and a separator that is to the left of it from the display line only.<br />
# If there is not a separator to the left, the same variable will remove itself and a separator that is to the right of it from the displayed line. <br />
# If there are two separators together, the left one will be removed from the display line and the right is kept.<br />
# Separators at the start or end of the display line (or format strings) are removed<br />
<br />
=== Example: ===<br />
<br />
$s(f l)&lt;, &gt;$m(yyyy)&lt; @ &gt;$M&lt; - &gt;$v(&#92;(yyyy&#92;))<br />
<br />
Here are some things that may happen:<br />
<br />
{|<br />
|-<br />
|If '''none''' of the variables are known<br />
|None of the separators will display<br />
|-<br />
|If only one variable '''is''' known<br />
|Only that variable will print. No separators will print.<br />
|-<br />
|If only the spouse's name '''is not''' known<br />
|The first separator will not display<br />
|-<br />
|If only the marriage date '''is not''' known<br />
|The first separator does not display. We will be left with:<br />
Jane Doe&lt; - &gt;{ … }And only the divorce date needs to be known to print the second separator.<br />
|-<br />
|If only the divorce date '''is not''' known<br />
|the second separator will not display<br />
|}<br />
<br />
<br />
Separators can be inside format strings:<br />
<br />
$n(&lt;0&gt;T&lt; &gt;L&lt;, &gt;f&lt; &gt;s)<br />
<br />
Unlike groups, separators can not cross over/out of format strings. So the separator &lt;0&gt; will NEVER display. No matter what is on the left hand side of the variable.<br />
<br />
Back to [[Gramps_3.3_Wiki_Manual_-_Reports|Index of Reports]].<br />
<br />
{{-}}<br />
<br />
{{man index|Gramps 3.3 Wiki Manual - Reports - part 1|Gramps 3.3 Wiki Manual - Reports- part 3|3.3}}<br />
<br />
{{languages}}<br />
<br />
[[Category:Documentation]]<br />
[[Category:Plugins]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Gramps_3.4_Wiki_Manual_-_Reports_-_part_2&diff=35106Gramps 3.4 Wiki Manual - Reports - part 22011-12-20T17:24:28Z<p>PaulFranklin: /* Control Variables */</p>
<hr />
<div>This section describes the substitution values that can be used in the different reports available in Gramps.<br />
<br />
{{man index|Gramps 3.4 Wiki Manual - Reports - part 1|Gramps 3.4 Wiki Manual - Reports- part 3|3.4}}<br />
<br />
{{grampsmanualcopyright}}<br />
<br />
{{languages|Gramps_3.4_Wiki_Manual_-_Reports - part 2}}<br />
<br />
Back to [[Gramps_3.4_Wiki_Manual_-_Reports|Index of Reports]].<br />
<br />
= Substitution Values =<br />
<br />
Many of the graphical reports allow you to customize the information that is displayed on the reports. Variable substitution is the method that is used to substitute a particular symbol (key) for specific information about the person in the database.<br />
<br />
{|<br />
|-<br />
|Example: <br />
|Will show as: (the person is alive)<br />
|-<br />
|<pre>$n<br />
b. $b $B<br />
d. $d $D</pre><br />
|<pre>Smith, Edwin Michael<br />
b. 1961-05-24 San Jose, Santa Clara Co., CA<br />
d.</pre><br />
|}<br />
<br />
== The Substitution Keys ==<br />
<br />
{|<br />
|-<br />
| colspan="2"|'''Personal variables'''<br />
| colspan="2"|'''Marital variables'''<br />
|-<br />
|$n<br />
|Displays the person's name<br />
|$s<br />
|Displays the name of the person's spouse<br />
|-<br />
|$i<br />
|Displays the GRAMPS ID for the person.<br />
|$j<br />
|Displays the GRAMPS ID for the marriage.<br />
|-<br />
|$b<br />
|Displays the person's date of birth <br />
|$m<br />
|Displays the marriage date of the person and the spouse.<br />
|-<br />
|$B<br />
|Displays the person's place of birth <br />
|$M<br />
|Displays the place of the marriage of the person and the spouse.<br />
|-<br />
|$d<br />
|Displays the person's date of death <br />
|$v<br />
|Displays the divorce date of the person and the spouse.<br />
|-<br />
|$D<br />
|Displays the person's place of death <br />
|$V<br />
|Displays the place of the divorce of the person and the spouse.<br />
|-<br />
|$a<br />
|Displays an attribute about the person.<br />
see [[#Attributes|Attributes]] for more<br />
|$u<br />
|Displays an attribute about the marriage.<br />
see [[#Attributes|Attributes]] for more<br />
|-<br />
|$e<br />
|Displays event information about the person.<br />
See [[#Events|Events]] for more<br />
|$t<br />
|Displays an event information about the marriage.<br />
See [[#Events|Events]] for more<br />
|}<br />
<br />
All of the Marital variables are defined by the person's preferred spouse in Gramps. If the person has never been married, then these variables will not display anything.<br />
<br />
----<br />
=== Default displayed formats ===<br />
<br />
{|<br />
|-<br />
|$n $s<br />
|Names will be displayed as set in 'Name format:' on the Display tab in Gramps preferences<br />
|-<br />
|$B $D $M $V<br />
|Places will display the Place title by default<br />
|-<br />
|$b $d $m $v<br />
|Dates will be displayed as set in 'Date format:' on the Display tab in Gramps preferences<br />
|-<br />
|$e $t<br />
|Events will display the description by default<br />
|}<br />
<br />
----<br />
{|<br />
|-<br />
|1<br />
|If you wish to display names, date, or place information differently, you may use [[#Format Strings|Format Strings]] to accomplish this.<br />
|-<br />
|2<br />
|There are also [[#Control Variables|Control Variables]] to display special characters (like the dollar sign).<br />
|-<br />
|3<br />
|You can also use [[#Grouping|Grouping]] to optionally display information or whole lines<br />
|-<br />
|4<br />
|Along with [[#Events|Events]] you can print almost anything.<br />
|-<br />
|5<br />
|Finally, [[#Separators|Separators]], to make your life complete.<br />
|-<br />
|}<br />
<br />
----<br />
<br />
=== Deprecated variables ===<br />
<br />
Some of the old variables were deprecated because [[#Format Strings|Format Strings]] have replaced them. So here is a list of those variables and how to achieve their results:<br />
<br />
{| {{prettytable}}<br />
|-<br />
!Old Variable<br />
!How to display it now<br />
!What is displayed<br />
|-<br />
|$f<br />
|$n<br />
|Name - as by Gramps name display under Preferences<br />
|-<br />
|$n<br />
|$n(g f)<br />
|Name - FirstName LastName<br />
|-<br />
|$N<br />
|$n(f, g)<br />
|Name - LastName, FirstName (note the explicit comma)<br />
|-<br />
|$nC<br />
|$n(g F)<br />
|Name - FirstName LastName in UPPER case<br />
|-<br />
|$NC<br />
|$n(F, g)<br />
|Name - LastName in UPPER case, FirstName<br />
|-<br />
|$by<br />
|$b(yyyy)<br />
|Date of birth, year only<br />
|-<br />
|$dy<br />
|$d(yyyy)<br />
|Date of death, year only<br />
|-<br />
|$my<br />
|$m(yyyy)<br />
|Date of preferred marriage, year only<br />
|-<br />
|$p<br />
|$s<br />
|Preferred spouse's name as by Gramps name display under Preferences<br />
|-<br />
|$s<br />
|$s(g f)<br />
|Preferred spouse's name - FirstName LastName<br />
|-<br />
|$S<br />
|$s(f, g)<br />
|Preferred spouse's name - LastName, FirstName<br />
|-<br />
|$sC<br />
|$s(g F)<br />
|Preferred spouse's name - FirstName LastName in UPPER case<br />
|-<br />
|$SC<br />
|$s(F, g)<br />
|Preferred spouse's name - LastName in UPPER case, FirstName<br />
|}<br />
<br />
== Format Strings ==<br />
<br />
Format strings are used to display names and dates differently than those assigned under Gramps Preferences. Here is the syntax for a format string:<br />
<br />
$''<span style="background: #c0c0c0">key</span>''(format string)<br />
where: ''<span style="background: #c0c0c0">key</span>'' is one of the following characters: 'nsijbmBMdvDVauet'<br />
<br />
A format string is any text, separators or format codes (defined below) to display information about the person.<br />
<br />
=== Formatting names ===<br />
<br />
For names ($n $s) you may use the following formatting codes to display the name differently.<br />
<br />
{|<br />
|-<br />
|t<br />
|Title<br />
|<br />
|f<br />
|Given name<br />
|-<br />
|x<br />
|Common name. Call name if existing, otherwise first first name<br />
|<br />
|c<br />
|Call name<br />
|-<br />
|n<br />
|Nick name<br />
|<br />
|s<br />
|Suffix<br />
|-<br />
|l<br />
|Surname<br />
|<br />
|g<br />
|Family nickname<br />
|}<br />
<br />
These codes can be uppercased to uppercase the result.<br />
<br />
{|<br />
|-<br />
|Example code<br />
|Displays<br />
|-<br />
|<pre>$n(L, f) ($n(c)), $n(L, f){ ($n(c))}<br />
$s(f l s)</pre><br />
|<pre>SMITH, Edwin Michael (), SMITH, Edwin Michael<br />
Janice Ann Adams</pre><br />
|}<br />
<br />
<br />
<blockquote>Note:<br />
If you want to print a character 'c' within the format string (or any one of the other format codes), you will need to first add a '&#92;' in front of it. See [[#Control Variables|Control Variables]] for more.</blockquote><br />
<br />
<blockquote>Note:<br />
the curly brackets { } are used to hide information. Here it is used around ' ($n(c))' to not display ' ()' if the person does not have a call name. See [[#Grouping|Grouping]] for more.</blockquote><br />
<br />
----<br />
<br />
=== Formatting Dates ===<br />
<br />
For all of the date variables ($b $d $m $v) you may use the following formatting codes:<br />
<br />
{|<br />
|-<br />
|yyyy<br />
|The year as a four digit number<br />
|<br />
|yyy<br />
|The year, with a minimum of three digits<br />
|-<br />
|yy<br />
|The year, from 00 to 99<br />
|<br />
|y<br />
|The year, from 0 to 99<br />
|-<br />
|mmmm<BR><br />
MMMM<br />
|The full name of the month<BR><br />
The full name IN CAPS<br />
|<br />
|mmm<BR><br />
MMM<br />
|The abbreviated name of the month<BR><br />
The abbreviated name IN CAPS<br />
|-<br />
|mm<br />
|The month, from 00 to 12<br />
|<br />
|m<br />
|The month, from 0 to 12<br />
|-<br />
|dd<br />
|The day, from 00 to 31<br />
|<br />
|d<br />
|The day, from 0 to 31<br />
|-<br />
|o<br />
|The date type (modifier)<br />
|<br />
|<br />
|<br />
|}<br />
<br />
{|<br />
|-<br />
|Example code<br />
|displays<br />
|-<br />
|<pre>$b(mmm-dd yy)<br />
$m(yyyy/mmm/d)<br />
$b(mmm-dd yy)</pre><br />
|<pre>May-24 61<br />
1995/May/27<br />
Jun-04 85</pre><br />
|}<br />
<br />
{{man note| For date types (modifier) |Only "Before", "After", and "About" are supported at this time. all others will not display anything.<BR><br />
And for date span and date ranges, only the starting (first) date is displayed.}}<br />
<br />
----<br />
<br />
=== Formatting Places ===<br />
<br />
For all of the place variables ($B $D $M $V) you may use the following formatting codes:<br />
<br />
{|<br />
|-<br />
|e<br />
|Street<br />
|<br />
|l<br />
|Locality<br />
|-<br />
|c<br />
|City<br />
|<br />
|u<br />
|County<br />
|-<br />
|s<br />
|State<br />
|<br />
|p<br />
|Postal Code<br />
|-<br />
|n<br />
|Country<br />
|<br />
|t<br />
|Title<br />
|-<br />
|x<br />
|Longitude<br />
|<br />
|y<br />
|Latitude<br />
|}<br />
These codes can be uppercased to uppercase the result. <br />
<br />
{|<br />
|-<br />
|Example code<br />
|displays<br />
|-<br />
|<pre>$B<br />
$B(c, s, N)</pre><br />
|<pre>St Judes Hospital<br />
Carmel, IN, USA</pre><br />
|}<br />
<br />
----<br />
<br />
=== Rules for format strings. ===<br />
<br />
{|<br />
|-<br />
|1<br />
|Anything will print inside a format string<br />
|-<br />
|1a<br />
|you will have to use [[#Control Variables|Control Variables]] to display things like ')' and format codes<br />
|-<br />
|2<br />
|Separators can be within format strings.<br />
|-<br />
|3<br />
|At least ONE format code has to display something for the ENTIRE format string to display<br />
|}<br />
<br />
----<br />
<br />
=== Examples ===<br />
<br />
{|<br />
|-<br />
|code<br />
|gives<br />
|-<br />
|<pre>$n(f l)<br />
b. $b {at $B<br />
{d. $d $D</pre><br />
|<pre>Edwin Michael Smith<br />
b. 1961-05-24 at San Jose, Santa Clara Co., CA</pre>The person is still alive (or has no information present) so the line was removed.<br />
|}<br />
<br />
<br />
<br />
== Control Variables ==<br />
<br />
Control variables allow you to print characters that are special to Substitution values within a display.<br />
<br />
For example the dollar character '$' is used to note the start of a variable. If you wish to print a dollar character you would use a control character like '&#92;$'<br />
<br />
Control Variables<br />
<br />
{|<br />
|-<br />
|&#92;$<br />
|Displays a single '$'<br />
|<br />
|&#92;&#92;<br />
|Displays a single '&#92;'<br />
|-<br />
|&#92;(<br />
|Displays a single '('<br />
|<br />
|&#92;)<br />
|Displays a single ')'<br />
|-<br />
|&#92;{<br />
|Displays a single '{'<br />
|<br />
|&#92;}<br />
|Displays a single '}'<br />
|-<br />
|&#92;<<br />
|Displays a single '<'<br />
|<br />
|&#92;><br />
|Displays a single '>'<br />
|}<br />
<br />
Basically anything that comes after a '&#92;' will be printed.<br />
<br />
----<br />
Note:<br />
When you are inside a format string, you may need to use this to display a character that would normally be a format code. <br />
<br />
{|<br />
|-<br />
|Example:<br />
|would give<br />
|-<br />
|<pre>$b(m hi mom)<br />
$b(m hi \mo\m)</pre><br />
|<pre>5 hi 5o5<br />
5 hi mom</pre><br />
|}<br />
<br />
as this person was born on the fifth month.<br />
<br />
== Grouping ==<br />
<br />
There are instances where you do not want certain text to be displayed. Take the example:<br />
<br />
{|<br />
|-<br />
|Code<br />
|Only date is known<br />
|Only place is known<br />
|-<br />
|<pre>died on $d at $D</pre><br />
|<pre>died on 1975-06-26 at </pre> <br />
|<pre>died on at Reno, Washoe Co., NV</pre><br />
|-<br />
| colspan="3"|Neither of these are very acceptable.<br />
|-<br />
| colspan="3"|But with groups (denoted by {}), you can optionally print information if a variable within contains information.<br />
|-<br />
| colspan="3"|For example:<br />
|-<br />
|Code<br />
|Only date is known<br />
|Only place is known<br />
|-<br />
|<pre>died {on $d }{at $D}</pre><br />
|<pre>died on 1975-06-26</pre><br />
|<pre>died at Reno, Washoe Co., NV</pre><br />
|}<br />
<br />
which is what we want.<br />
<br />
----<br />
=== Rules for groups ===<br />
<br />
A group will only display if there is at least one variable that displays something. So if a group only has text and/or variables where the information is not known, the entire group will not print.<br />
<br />
Groups can also be nested. If this happens (like below), the outer group will only display if there is at least one variable that displays something within the outer group or any of the sub groups.<br />
<br />
Groups can also be used to remove an entire line from a display. A '{' at the start of a line will remove the entire line from the display if the above rule is true.<br />
<br />
If you do not wish to have the display code above (for death information) displayed (the person is alive, or you do not yet know the information), modify the code to look like<br />
<pre>{died {on $d }{at $D}</pre><br />
<br />
<blockquote>To have an entire line be blank instead of removing the line simply start the line with a space ' {' or make sure there is a space after the group (you will have to close the group first)</blockquote><br />
<br />
----<br />
=== Examples: ===<br />
<br />
This will hide '(' and ')' if the divorce information is not known (or still married).<br />
<br />
<pre>m. $m $M {- ($v(yyyy))</pre><br />
<br />
<br />
Only display some spouse information if married or remove the entire line if never married:<br />
<pre>{$s $m(yyyy) {- $v(\(yyyy\))}}</pre><br />
<br />
<br />
<br />
== Attributes ==<br />
<br />
Attributes do not have a format string. Instead the attribute name is placed inside []. Here is the syntax for an attribute:<br />
<br />
$''<span style="background: #c0c0c0">key</span>''[attribute name] where: ''<span style="background: #c0c0c0">key</span>'' is one of the following characters: 'au'<br />
<br />
Example:<br />
<br />
{|<br />
|-<br />
|<pre>$a[Profession]<br />
$a[Social Security Number]<br />
$a[Total \$ bequeathed]</pre><br />
|<pre>Programmer<br />
7A3-29-F1C6<br />
3.00USD</pre><br />
|}<br />
<br />
<br />
----<br />
== Events ==<br />
<br />
Events have the same starting structure as attributes, $e or $t and the event name in [] but events have an extra format string after the name to display the description, date, place, id, and attributes associated with it. Each of these items can be displayed with a , a 'n', 'd', 'D', 'i', and 'a' respectively in the format string. Here is the syntax for an event:<br />
<br />
$''<span style="background: #c0c0c0">key</span>''[attribute name](format string) where: ''<span style="background: #c0c0c0">key</span>'' is one of the following characters: 'et'<br />
<br />
=== Event format strings ===<br />
<br />
The Event format string is used to display information about the event. Here are the format codes to display parts of the event:<br />
<br />
{|<br />
|-<br />
|n<br />
|Description<br />
|<br />
|i<br />
|Event ID<br />
|-<br />
|d<br />
|Event Date&#42;<br />
|<br />
|D<br />
|Event Place&#42;<br />
|-<br />
|a<br />
|An attributes for the event&#42;&#42;<br />
|<br />
|<br />
|<br />
|}<br />
<br />
&#42;These variables can themselves have format strings. Date and a place can be formatted with format string as defined in [[#Format strings|Format strings]].<br />
<br />
&#42;&#42;Attribute needs to have the attribute name in [] and are formatted as above.<br />
<br />
Example:<br />
<br />
{|<br />
|-<br />
|<pre>$e[First Communion](d(yyyy-mm-d))<br />
$e[Bar Mitzvah](n&lt; at &gt; D)<br />
$e[Birth](d(yyyy mm/dd) D)</pre><br />
|<pre>2009-11-6<br />
Jerry's Bar Mitzah at Opas house<br />
2007 05/23 Grandmothers house</pre><br />
|}<br />
<br />
<br />
And:<br />
<br />
{|<br />
|-<br />
|<pre>$b(yyyy-Mmm-dd)<br />
$M</pre><br />
|is the same as<br />
|<pre>$e[Birth](d(yyyy-Mmm-dd))<br />
$t[Marriage](D)</pre><br />
|}<br />
<br />
<br />
----<br />
<br />
=== Notes for attributes and events: ===<br />
<br />
{|<br />
|-<br />
|1<br />
|Attribute and event names are mandatory. '$a' or '$a[]' will not display anything.<br />
|-<br />
|2<br />
|Attributes and event names may have special characters within them. Most notably ']' and ')'. If this is the case, you will need to use [[#Control Variables|Control Variables]]<br />
|}<br />
<br />
== Separators ==<br />
<br />
Separators are special 'text only' groups inside '&lt;' and '&gt;' that conditionally display a separator (like ', ' or ' - ') between two variables, format codes or text.<br />
<br />
Separators are displayed conditionally depending on these rules:<br />
<br />
# A variable that does '''not''' display anything will remove itself and a separator that is to the left of it from the display line only.<br />
# If there is not a separator to the left, the same variable will remove itself and a separator that is to the right of it from the displayed line. <br />
# If there are two separators together, the left one will be removed from the display line and the right is kept.<br />
# Separators at the start or end of the display line (or format strings) are removed<br />
<br />
=== Example: ===<br />
<br />
$s(f l)&lt;, &gt;$m(yyyy)&lt; @ &gt;$M&lt; - &gt;$v(&#92;(yyyy&#92;))<br />
<br />
Here are some things that may happen:<br />
<br />
{|<br />
|-<br />
|If '''none''' of the variables are known<br />
|None of the separators will display<br />
|-<br />
|If only one variable '''is''' known<br />
|Only that variable will print. No separators will print.<br />
|-<br />
|If only the spouse's name '''is not''' known<br />
|The first separator will not display<br />
|-<br />
|If only the marriage date '''is not''' known<br />
|The first separator does not display. We will be left with:<br />
Jane Doe&lt; - &gt;{ … }And only the divorce date needs to be known to print the second separator.<br />
|-<br />
|If only the divorce date '''is not''' known<br />
|the second separator will not display<br />
|}<br />
<br />
<br />
Separators can be inside format strings:<br />
<br />
$n(&lt;0&gt;T&lt; &gt;L&lt;, &gt;f&lt; &gt;s)<br />
<br />
Unlike groups, separators can not cross over/out of format strings. So the separator &lt;0&gt; will NEVER display. No matter what is on the left hand side of the variable.<br />
<br />
Back to [[Gramps_3.4_Wiki_Manual_-_Reports|Index of Reports]].<br />
<br />
{{-}}<br />
<br />
{{man index|Gramps 3.4 Wiki Manual - Reports - part 1|Gramps 3.4 Wiki Manual - Reports- part 3|3.4}}<br />
<br />
{{languages}}<br />
<br />
[[Category:Documentation]]<br />
[[Category:Plugins]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=User_manual_translations&diff=30219User manual translations2011-09-13T17:21:35Z<p>PaulFranklin: /* Technical info */</p>
<hr />
<div>{{languages}}<br />
<br />
From GRAMPS 3.0.x, the manual is no longer distributed with GRAMPS, and only available online, so you need an internet connection to be able to read the manual. It is available from within GRAMPS by pressing F1, or through the help menu, and provides in depth instructions on the use of GRAMPS.<br />
<br />
==GRAMPS 3.3.x Manual==<br />
<br />
* English: [[Gramps 3.3 Wiki Manual | GRAMPS 3.3 Manual]] - Download:[http://gramps-project.org/wiki/images/d/d6/GRAMPS_3_3_Prince.pdf Offline Version] 7.11 MB<br />
* Bulgarian: [[Gramps_3.3_Wiki_Manual/bg| GRAMPS 3.3 Manual]]<br />
* Deutsch: [[De:Gramps_3.3_Wiki_Handbuch | GRAMPS 3.3 Handbuch]]<br />
* Spanish: [[Gramps_3.3_Wiki_Manual/es|Manual Wiki para Gramps 3.3]]<br />
* Finnish: [[Gramps_3.3_Wiki_Manual/fi| Gramps 3.3 Käyttöohje]]<br />
* Français: [[Gramps 3.3 Wiki Manual/fr | Manuel GRAMPS 3.3]]<br />
* Italian: [[Gramps_3.3_Wiki_Manual/it| GRAMPS manuale 3.3]]<br />
* Macedonian: [[Gramps_3.3_Wiki_Manual/mk| Упатство за GRAMPS 3.3]]<br />
* Norwegian (bokmål): [[Gramps_3.3_Wiki_Manual/nb| GRAMPS manualen 3.3]]<br />
* Nederlands: [[Gramps 3.3 Wiki Manual/nl | Gramps 3.3 Wiki Handleiding]]<br />
* Polish: [[Gramps_3.3_Wiki_Manual/pl| Podręcznik GRAMPS 3.3]]<br />
* Portuguese: [[Gramps_3.3_Wiki_Manual/pt|Manual Wiki GRAMPS 3.3]]<br />
* Russian: [[Gramps_3.3_Wiki_Manual/ru| Руководство GRAMPS 3.3]]<br />
* Slovak : download GrampsManual32_SK.pdf, 1.9MB [[Media: GrampsManual32_SK.pdf|offline version]]<br />
* Slovenian: [[Gramps_3.3_Wiki_Manual/sl| GRAMPS različice 3.3]]<br />
* Albanian: [[Gramps_3.3_Wiki_Manual/sq| Doracak per GRAMPS 3.3]]<br />
<br />
==GRAMPS 3.2.x Manual==<br />
<br />
* English: [[Gramps 3.2 Wiki Manual | GRAMPS 3.2 Manual]]<br />
* Bulgarian: [[Gramps_3.2_Wiki_Manual/bg| GRAMPS 3.3 Manual]]<br />
* Deutsch: [[De:Gramps_3.2_Wiki_Handbuch | GRAMPS 3.2 Handbuch]]<br />
* Spanish: [[Gramps_3.2_Wiki_Manual/es|Manual Wiki para Gramps 3.2]]<br />
* Finnish: [[Gramps_3.2_Wiki_Manual/fi| Gramps 3.2 Käyttöohje]]<br />
* Français: [[Gramps 3.2 Wiki Manual/fr | Manuel GRAMPS 3.2]]<br />
* Italian: [[Gramps_3.2_Wiki_Manual/it| GRAMPS manuale 3.2]]<br />
* Macedonian: [[Gramps_3.2_Wiki_Manual/mk| Упатство за GRAMPS 3.2]]<br />
* Norwegian (bokmål): [[Gramps_3.2_Wiki_Manual/nb| GRAMPS manualen 3.2]]<br />
* Nederlands: [[Gramps 3.2 Wiki Manual/nl | Gramps 3.2 Wiki Handleiding]]<br />
* Polish: [[Gramps_3.2_Wiki_Manual/pl| Podręcznik GRAMPS 3.2]]<br />
* Portuguese: [[Gramps_3.2_Wiki_Manual/pt|Manual Wiki GRAMPS 3.2]]<br />
* Russian: [[Gramps_3.2_Wiki_Manual/ru| Руководство GRAMPS 3.2]]<br />
* Slovak : download GrampsManual32_SK.pdf, 1.9MB [[Media: GrampsManual32_SK.pdf|offline version]]<br />
* Slovenian: [[Gramps_3.2_Wiki_Manual/sl| GRAMPS različice 3.2]]<br />
* Albanian: [[Gramps_3.2_Wiki_Manual/sq| Doracak per GRAMPS 3.2]]<br />
<br />
==GRAMPS 3.1.x Manual==<br />
<br />
The 3.1.x Manual is at the moment only available in wiki format (with the exception of English in HTML and Slovak in pdf). <br />
<br />
NOTE: As at 23 January 2009, these pages have simply been 'rolled over' from the 3.0 manuals, with search/replace to make the titles and references to 3.1. Only after translators and developers have completed more work will they be better representations of version 3.1...<br />
<br />
* English: [[Gramps 3.1 Wiki Manual | GRAMPS 3.1 Manual]], download [[Media:Manual.tar.gz|offline version (draft)]]. Please, see [[Manual Generation 3.0|Manual Generation]].<br />
* Albanian : [[Sq:Gramps 3.1 Wiki Manual| Doracak per GRAMPS 3.1]]<br />
* Norsk (bokmål) : [[Gramps_3.1_Wiki_Manual/nb| GRAMPS manualen 3.1]]<br />
* Dansk : [[Da:Gramps_3.1_brugsanvisning| GRAMPS 3.1 brugsanvisning]]<br />
* Deutsch: [[De:Gramps_3.1_Wiki_Handbuch | GRAMPS 3.1 Handbuch]]<br />
* Finnish: [[Fi:Gramps 3.1 Wiki Käyttöohje | Gramps 3.1 Käyttöohje]]<br />
* Français: [[Gramps 3.1 Wiki Manual/fr | Manuel GRAMPS 3.1]], download [[Media:Manuel.tar.gz|offline version (draft)]]. Please, see [[Manual Generation 3.0|Manual Generation]].<br />
* Italian : [[IT:Manuale_wiki_per_Gramps_3.1| GRAMPS manuale 3.1]]<br />
* Nederlands: [[Nl:Gramps 3.1 Wiki Handleiding|GRAMPS 3.1 Handleiding]]<br />
* Polish: [[Gramps 3.1 Wiki Manual/pl | Podręcznik GRAMPS 3.1]]<br />
* Macedonian : [[Gramps 3.1 Wiki Manual/mk | Упатство за GRAMPS 3.1]]<br />
* Russian : [[Gramps 3.1 Wiki Manual/ru| Руководство GRAMPS 3.1]]<br />
* Slovak : download Gramps_3.1_SK.pdf, 149 strán, 1.6MB [[Media:Gramps_3.1_SK.pdf|offline version]]<br />
* Slovene : [[Gramps_3.1_Wiki_Manual/sl| GRAMPS različice 3.1]]<br />
* Português : [[PT:Manual Wiki GRAMPS 3.1|Manual Wiki GRAMPS 3.1]]<br />
<br />
Note that for distribution reasons, all edits to this manual must be dual-license: as GPL and GNU Free Documentation License.<br />
<br />
The aim is to be also able to create a distributable manual. See [[Manual Generation 3.0]] for ideas on how to do this.<br />
<br />
The motivation for a wiki manual is that it is editable by all users and allows cross linking to normal wiki content, greatly improving the quality of the manuals. It does make translating the manual harder. Ideas are welcome to improve this.<br />
<br />
==GRAMPS 3.0.x Manual==<br />
<br />
The 3.0.x Manual is at the moment only available in wiki format (with the exception of Slovak file in pdf and English in HTML). <br />
<br />
* English: [[Gramps 3.0 Wiki Manual | GRAMPS 3.0 Manual]], download [[Media:Gramps_manual.zip|offline version]]<br />
* Albanian : [[Sq:Gramps 3.0 Wiki Manual| Doracak per GRAMPS 3.0]]<br />
* Dano-Norwegian (bokmål) : [[Gramps_3.0_Wiki_Manual/nb| GRAMPS manualen 3.0]]<br />
* Deutsch: [[De:Gramps_3.0_Wiki_Handbuch | GRAMPS 3.0 Handbuch]]<br />
* Français: [[Gramps 3.0 Wiki Manual/fr | Manuel GRAMPS 3.0]]<br />
* Italian : [[IT:Manuale_wiki_per_Gramps_3.0| GRAMPS manuale 3.0]]<br />
* Nederlands: [[Nl:Gramps 3.0 Wiki Handleiding|GRAMPS 3.0 Handleiding]]<br />
* Polish: [[Gramps 3.0 Wiki Manual/pl | Podręcznik GRAMPS 3.0]]<br />
* Macedonian : [[Gramps 3.0 Wiki Manual/mk | Упатство за GRAMPS 3.0]]<br />
* Russian : [[Gramps 3.0 Wiki Manual/ru| Руководство GRAMPS 3.0]]<br />
* Slovak : download complete Gramps_3.0_SK.pdf [[Media:Manual30gramps_SK.pdf|offline version]]<br />
* Slovene : [[Gramps_3.0_Wiki_Manual/sl| GRAMPS različice 3.0]]<br />
<br />
Note that for distribution reasons, all edits to this manual must be dual-license: as GPL and GNU Free Documentation License.<br />
<br />
The aim is to be also able to create a distributable manual. See [[Manual Generation 3.0]] for ideas on how to do this.<br />
<br />
The motivation for a wiki manual is that it is editable by all users and allows cross linking to normal wiki content, greatly improving the quality of the manuals. It does make translating the manual harder. Ideas are welcome to improve this.<br />
<br />
==GRAMPS 2.2.x Manual==<br />
The GRAMPS 2.2.x manual has been translated into 3 languages: French, Dutch and Slovak. You can browse the manuals online or download a pdf in book format (2.5 Mb download, 100 pages, 55 figures).<br />
<br />
;Français: GRAMPS est une application Open Source définie pour la recherche généalogique.<br />
;Nederlands: GRAMPS is een open source, gratis genealogish software pakket. De handleiding is vertaald in het nederlands, en kan hier geraadpleegd worden<br />
;Slovak: GRAMPS je software typu Open Source určený pre genealogický výskum. Úplné verzie manuálu sú len vo formáte PDF.<br />
<br />
{| {{prettytable}}<br />
|+ Manual links<br />
|-<br />
| English<br />
| [http://gramps-project.org/gramps-manual/2.2/en/index.html Online Manual]<br />
| PDF in [http://gramps-project.org/gramps-manual/2.2/gramps-manual-2.2-en-USletter.pdf letter] and [http://gramps-project.org/gramps-manual/2.2/gramps-manual-2.2-en-A4.pdf A4] size<br />
|-<br />
|Français<br />
| [http://gramps-project.org/gramps-manual/2.2/fr/index.html HTML Manuel]<br />
| [http://gramps-project.org/gramps-manual/2.2/gramps-manual-2.2-fr-A4.pdf PDF en format A4]<br />
|-<br />
| Nederlands<br />
| [http://gramps-project.org/gramps-manual/2.2/nl/index.html HTML Handleiding]<br />
| [http://gramps-project.org/gramps-manual/2.2/gramps-manual-nl-A4.pdf PDF in A4 formaat]<br />
|-<br />
|Slovak<br />
| [http://gramps-project.org/gramps-manual/2.2/sk/index.html HTML Manuál]<br />
| [http://gramps-project.org/gramps-manual/2.2/gramps-manual-sk-A4.pdf A4 PDF]<br />
|}<br />
<br />
<br />
<br />
If you encounter an error or have a question about GRAMPS, please feel free to [[Contact]] us.<br />
<br />
==Technical info==<br />
Some technical info related to the manuals:<br />
* How do we go from one version of the manual to the next one? See: [[Rollover for the manual]]<br />
* How the 3.3 offline English manual was made -- see [[Manual Generation 3.0 Prince|this page]]<br />
<br />
<br />
{{languages}}<br />
[[Category:Documentation]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Plugins_Command_Line&diff=29940Plugins Command Line2011-08-23T17:36:08Z<p>PaulFranklin: </p>
<hr />
<div>{{languages}}<br />
This page lists available options on command line for reports and tools.<br />
<br />
==Overview==<br />
<br />
The detailed lists below are somewhat out of date.<br />
Please feel free to update any of them.<br />
<br />
However, in general the process for learning about a command line<br />
option is easy.<br />
<br />
First, learn the name of all the reports or tools:<br />
gramps -O "My Family Tree" -a report<br />
gramps -O "My Family Tree" -a tool<br />
<br />
Second, learn all the options of the particular report or tool.<br />
gramps -O "My Family Tree" -a report -p name=a_report,show=all<br />
gramps -O "My Family Tree" -a tool -p name=a_tool,show=all<br />
<br />
Third, learn what a particular option is.<br />
gramps -O "My Family Tree" -a report -p name=a_report,show=some_option<br />
gramps -O "My Family Tree" -a tool -p name=a_tool,show=some_option<br />
<br />
See [[Gramps_3.3_Wiki_Manual_-_Command_Line#report_action_option|Command Line]] for more information.<br />
<br />
==Reports==<br />
===Common Options===<br />
<br />
*pid:<br />
<br />
The center person for the filter<br />
<br />
I4 Smith, Ingeman<br />
<br />
I18 Smith, John Hjalmar<br />
<br />
I38 Hansdotter, Kerstina<br />
<br />
I39 Smith, Martin<br />
<br />
I28 Streiffert, Anna<br />
<br />
I40 Smith, Marjorie Alice<br />
<br />
I22 Smith, Martin<br />
<br />
I11 Smith, Hanna<br />
<br />
I41 Green, Janis Elaine<br />
<br />
I15 Smith, Gus<br />
<br />
I8 Smith, Hjalmar<br />
<br />
I3 Smith, Magnes<br />
<br />
I5 Smith, Mason Michael<br />
<br />
I10 Smith, Hans Peter<br />
<br />
I24 Smith, Gustaf Sr.<br />
<br />
I20 Smith, Carl Emil<br />
<br />
I17 Jones, Lillie Harriet<br />
<br />
I23 Smith, Astrid Shermanna Augusta<br />
<br />
I1 Smith, Keith Lloyd<br />
<br />
I37 Smith, Edwin Michael<br />
<br />
I19 Smith, Eric Lloyd<br />
<br />
I25 Ericsdotter, Marta<br />
<br />
I29 Smith, Craig Peter<br />
<br />
I2 Smith, Amber Marie<br />
<br />
I33 Smith, Lloyd<br />
<br />
I32 Horne, Darcy<br />
<br />
I26 Smith, Kirsti Marie<br />
<br />
I35 Smith, Lars Peter<br />
<br />
I30 Adams, Janice Ann<br />
<br />
I0 Hansdotter, Anna<br />
<br />
I31 Ohman, Marjorie<br />
<br />
I12 Nielsen, Herman Julius<br />
<br />
I9 Smith, Emil<br />
<br />
I27 Smith, Ingeman<br />
<br />
I36 Jefferson, Elna<br />
<br />
I21 Smith, Hjalmar<br />
<br />
I34 Perkins, Alice Paula<br />
<br />
I14 Smith, Marjorie Lee<br />
<br />
I7 Smith, Ingar<br />
<br />
I6 Willard, Edwin<br />
<br />
I16 Anderson, Jennifer<br />
<br />
I13 Michaels, Evelyn<br />
<br />
*callname:<br />
<br />
0 Don't use call name<br />
<br />
1 Replace first name with call name<br />
<br />
2 Underline call name in first name / add call name to first name<br />
<br />
*person_youngestmarried:<br />
<br />
0 no<br />
<br />
1 yes<br />
<br />
*person_youngestdivorced:<br />
<br />
0 no<br />
<br />
1 yes<br />
<br />
*style: =name<br />
<br />
Style name.<br />
<br />
Value: ''''<br />
<br />
*family_youngestmarried:<br />
<br />
0 no<br />
<br />
1 yes<br />
<br />
*person_oldestmother:<br />
<br />
0 no<br />
<br />
1 yes<br />
<br />
*papero: =num<br />
<br />
Paper orientation number.<br />
<br />
Value: ''''<br />
<br />
*person_oldestdivorced:<br />
<br />
0 no<br />
<br />
1 yes<br />
<br />
*person_youngestfather:<br />
<br />
0 no<br />
<br />
1 yes<br />
<br />
*template: =name<br />
<br />
Template name (HTML only).<br />
<br />
Value: ''''<br />
<br />
*papers: =name<br />
<br />
Paper size name.<br />
<br />
Value: ''''<br />
<br />
*person_youngestliving:<br />
<br />
0 no<br />
<br />
1 yes<br />
<br />
*family_longest:<br />
<br />
0 no<br />
<br />
1 yes<br />
<br />
*person_oldestliving:<br />
<br />
0 no<br />
<br />
1 yes<br />
<br />
*person_oldestfather:<br />
<br />
0 no<br />
<br />
1 yes<br />
<br />
*family_mostchildren:<br />
<br />
0 no<br />
<br />
1 yes<br />
<br />
*family_oldestmarried:<br />
<br />
0 no<br />
<br />
1 yes<br />
<br />
*person_oldestmarried:<br />
<br />
0 no<br />
<br />
1 yes<br />
<br />
*off: =format<br />
<br />
Output file format.<br />
<br />
Value: ''''<br />
<br />
*of: =filename<br />
<br />
Output file name. MANDATORY<br />
<br />
Value: ''''<br />
<br />
*person_oldestdied:<br />
<br />
0 no<br />
<br />
1 yes<br />
<br />
*person_youngestmother:<br />
<br />
0 no<br />
<br />
1 yes<br />
<br />
*filter:<br />
<br />
Determines what people are included in the report<br />
<br />
0 Entire Database<br />
<br />
1 Descendants of Smith, Edwin Michael<br />
<br />
2 Descendant Families of Smith, Edwin Michael<br />
<br />
3 Ancestors of Smith, Edwin Michael<br />
<br />
4 People with common ancestor with Smith, Edwin Michael<br />
<br />
*family_shortest:<br />
<br />
0 no<br />
<br />
1 yes<br />
<br />
*person_youngestdied:<br />
<br />
0 no<br />
<br />
1 yes<br />
===Records Report===<br />
<br />
*name:<br />
<br />
records<br />
<br />
*family_longest:<br />
<br />
<br />
*family_youngestmarried:<br />
<br />
<br />
*family_mostchildren:<br />
<br />
<br />
*person_oldestmother:<br />
<br />
<br />
*person_oldestmarried:<br />
<br />
<br />
*person_oldestdivorced:<br />
<br />
<br />
*person_oldestfather:<br />
<br />
<br />
*person_oldestdied:<br />
<br />
<br />
*person_youngestmother:<br />
<br />
<br />
*filter:<br />
<br />
Determines what people are included in the report<br />
<br />
*person_youngestfather:<br />
<br />
<br />
*pid:<br />
<br />
The center person for the filter<br />
<br />
*person_oldestliving:<br />
<br />
<br />
*person_youngestliving:<br />
<br />
<br />
*callname:<br />
<br />
<br />
*family_shortest:<br />
<br />
<br />
*person_youngestdivorced:<br />
<br />
<br />
*person_youngestmarried:<br />
<br />
<br />
*family_oldestmarried:<br />
<br />
<br />
*person_youngestdied:<br />
<br />
===Common Options===<br />
<br />
*bookname: =name<br />
<br />
Name of the book. MANDATORY<br />
===Narrated Web Site===<br />
<br />
*name:<br />
<br />
navwebpage<br />
<br />
*encoding:<br />
<br />
The encoding to be used for the web files<br />
<br />
*pid:<br />
<br />
The center person for the filter<br />
<br />
*archive:<br />
<br />
Whether to store the web pages in an archive file<br />
<br />
*living:<br />
<br />
How to handle living people<br />
<br />
*graphgens:<br />
<br />
The number of generations to include in the ancestor graph<br />
<br />
*title:<br />
<br />
The title of the web site<br />
<br />
*incpriv:<br />
<br />
Whether to include private objects<br />
<br />
*graph:<br />
<br />
Whether to include an ancestor graph on each individual page<br />
<br />
*footernote:<br />
<br />
A note to be used as the page footer<br />
<br />
*yearsafterdeath:<br />
<br />
This allows you to restrict information on people who have not been dead for very long<br />
<br />
*nogid:<br />
<br />
Whether to include the Gramps ID of objects<br />
<br />
*contactnote:<br />
<br />
A note to be used as the publisher contact<br />
<br />
*showbirth:<br />
<br />
Whether to include a birth column<br />
<br />
*cright:<br />
<br />
The copyright to be used for the web files<br />
<br />
*css:<br />
<br />
The stylesheet to be used for the web page<br />
<br />
*incdownload:<br />
<br />
Whether to include a database download option<br />
<br />
*showparents:<br />
<br />
Whether to include a parents column<br />
<br />
*showdeath:<br />
<br />
Whether to include a death column<br />
<br />
*homenote:<br />
<br />
A note to be used on the home page<br />
<br />
*showspouse:<br />
<br />
Whether to include a partners column<br />
<br />
*headernote:<br />
<br />
A note to be used as the page header<br />
<br />
*showhalfsiblings:<br />
<br />
Whether to include half and/ or step-siblings with the parents and siblings<br />
<br />
*gallery:<br />
<br />
Whether to include a gallery of media objects<br />
<br />
*homeimg:<br />
<br />
An image to be used on the home page<br />
<br />
*webcal_link:<br />
<br />
Choose your link to Web Calendars if you want?<br />
<br />
*linkhome:<br />
<br />
Whether to include a link to the home person<br />
<br />
*introimg:<br />
<br />
An image to be used as the introduction<br />
<br />
*filter:<br />
<br />
Select filter to restrict people that appear on web site<br />
<br />
*ext:<br />
<br />
The extension to be used for the web files<br />
<br />
*intronote:<br />
<br />
A note to be used as the introduction<br />
<br />
*target:<br />
<br />
The destination directory for the web files<br />
<br />
*contactimg:<br />
<br />
An image to be used as the publisher contact<br />
===Family Lines Graph===<br />
<br />
*name:<br />
<br />
familylines_graph<br />
<br />
*color:<br />
<br />
Males will be shown with blue, females with red, unless otherwise set above for filled. If the sex of an individual is unknown it will be shown with gray.<br />
<br />
*surnamecolors:<br />
<br />
Colours to use for various family lines.<br />
<br />
*incplaces:<br />
<br />
Whether to include placenames for people and families.<br />
<br />
*usesubgraphs:<br />
<br />
Subgraphs can help GraphViz position certain linked nodes closer together, but with non-trivial graphs will result in longer lines and larger graphs.<br />
<br />
*justyears:<br />
<br />
Prints just dates' year, neither month or day nor date approximation or interval are shown.<br />
<br />
*limitparents:<br />
<br />
The maximum number of ancestors to include.<br />
<br />
*colorunknown:<br />
<br />
The colour to use when the gender is unknown.<br />
<br />
*colorfemales:<br />
<br />
The colour to use to display women.<br />
<br />
*gidlist:<br />
<br />
People of interest are used as a starting point when determining "family lines".<br />
<br />
*followchild:<br />
<br />
Children will be considered when determining "family lines".<br />
<br />
*incprivate:<br />
<br />
Whether to include names, dates, and families that are marked as private.<br />
<br />
*followpar:<br />
<br />
Parents and their ancestors will be considered when determining "family lines".<br />
<br />
*incdates:<br />
<br />
Whether to include dates for people and families.<br />
<br />
*colorfamilies:<br />
<br />
The colour to use to display families.<br />
<br />
*maxparents:<br />
<br />
The maximum number of ancestors to include.<br />
<br />
*limitchildren:<br />
<br />
The maximum number of children to include.<br />
<br />
*imageonside:<br />
<br />
Where the thumbnail image should appear relative to the name<br />
<br />
*useroundedcorners:<br />
<br />
Use rounded corners to differentiate between women and men.<br />
<br />
*removeextra:<br />
<br />
People and families not directly related to people of interest will be removed when determining "family lines".<br />
<br />
*maxchildren:<br />
<br />
The maximum number of children to include.<br />
<br />
*incimages:<br />
<br />
The maximum number of children to include.<br />
<br />
*incchildcnt:<br />
<br />
Whether to include the number of children for families with more than 1 child.<br />
<br />
*colormales:<br />
<br />
The colour to use to display men.<br />
===Relationship Graph===<br />
<br />
*name:<br />
<br />
rel_graph<br />
<br />
*filter:<br />
<br />
Determines what people are included in the graph<br />
<br />
*use_place:<br />
<br />
When no birth, marriage, or death date is available, the correspondent place field will be used.<br />
<br />
*incid:<br />
<br />
Include individual and family IDs.<br />
<br />
*imageOnTheSide:<br />
<br />
Where the thumbnail image should appear relative to the name<br />
<br />
*justyears:<br />
<br />
Prints just dates' year, neither month or day nor date approximation or interval are shown.<br />
<br />
*color:<br />
<br />
Males will be shown with blue, females with red. If the sex of an individual is unknown it will be shown with gray.<br />
<br />
*colorunknown:<br />
<br />
The colour to use when the gender is unknown.<br />
<br />
*incdate:<br />
<br />
Include the dates that the individual was born, got married and/or died in the graph labels.<br />
<br />
*pid:<br />
<br />
The center person for the filter<br />
<br />
*includeImages:<br />
<br />
Whether to include thumbnails of people.<br />
<br />
*colorfamilies:<br />
<br />
The colour to use to display families.<br />
<br />
*url:<br />
<br />
Include a URL in each graph node so that PDF and imagemap files can be generated that contain active links to the files generated by the 'Narrated Web Site' report.<br />
<br />
*arrow:<br />
<br />
Choose the direction that the arrows point.<br />
<br />
*dashed:<br />
<br />
Non-birth relationships will show up as dotted lines in the graph.<br />
<br />
*colorfemales:<br />
<br />
The colour to use to display women.<br />
<br />
*colormales:<br />
<br />
The colour to use to display men.<br />
<br />
*showfamily:<br />
<br />
Families will show up as ellipses, linked to parents and children.<br />
<br />
*useroundedcorners:<br />
<br />
Use rounded corners to differentiate between women and men.<br />
===Hourglass Graph===<br />
<br />
*name:<br />
<br />
hourglass_graph<br />
<br />
*color:<br />
<br />
Males will be shown with blue, females with red. If the sex of an individual is unknown it will be shown with gray.<br />
<br />
*maxascend:<br />
<br />
The number of generations of ancestors to include in the graph<br />
<br />
*roundcorners:<br />
<br />
Use rounded corners to differentiate between women and men.<br />
<br />
*pid:<br />
<br />
The Center person for the graph<br />
<br />
*maxdescend:<br />
<br />
The number of generations of descendants to include in the graph<br />
===Detailed Ancestral Report===<br />
<br />
*name:<br />
<br />
det_ancestor_report<br />
<br />
*repdate:<br />
<br />
Whether to replace missing Dates with blanks.<br />
<br />
*verbose:<br />
<br />
Whether to use complete sentences or succinct language.<br />
<br />
*usecall:<br />
<br />
Whether to use the call name as the first name.<br />
<br />
*incsources:<br />
<br />
Whether to include source references.<br />
<br />
*incattrs:<br />
<br />
Whether to include attributes.<br />
<br />
*pid:<br />
<br />
The center person for the report<br />
<br />
*pagebbg:<br />
<br />
Whether to start a new page after each generation.<br />
<br />
*incaddresses:<br />
<br />
Whether to include addresses.<br />
<br />
*incphotos:<br />
<br />
Whether to include images.<br />
<br />
*desref:<br />
<br />
Whether to add descendant references in child list.<br />
<br />
*computeage:<br />
<br />
Whether to compute age.<br />
<br />
*fulldates:<br />
<br />
Whether to use full dates instead of just year.<br />
<br />
*incnames:<br />
<br />
Whether to include other names.<br />
<br />
*repplace:<br />
<br />
Whether to replace missing Places with blanks.<br />
<br />
*incevents:<br />
<br />
Whether to include events.<br />
<br />
*incnotes:<br />
<br />
Whether to include notes.<br />
<br />
*omitda:<br />
<br />
Whether to omit duplicate ancestors.<br />
<br />
*gen:<br />
<br />
The number of generations to include in the report<br />
<br />
*listc:<br />
<br />
Whether to list children.<br />
===Marker Report===<br />
<br />
*name:<br />
<br />
marker_report<br />
<br />
*marker:<br />
<br />
The marker to use for the report<br />
===Family Group Report===<br />
<br />
*name:<br />
<br />
family_group<br />
<br />
*incParAddr:<br />
<br />
Whether to include addresses for parents.<br />
<br />
*incParNames:<br />
<br />
Whether to include alternate names for parents.<br />
<br />
*recursive:<br />
<br />
Create reports for all descendants of this family.<br />
<br />
*incChiMar:<br />
<br />
Whether to include marriage information for children.<br />
<br />
*incRelDates:<br />
<br />
Whether to include dates for relatives (father, mother, spouse).<br />
<br />
*missinginfo:<br />
<br />
Whether to include fields for missing information.<br />
<br />
*family_id:<br />
<br />
The center family for the report<br />
<br />
*incParEvents:<br />
<br />
Whether to include events for parents.<br />
<br />
*incParMar:<br />
<br />
Whether to include marriage information for parents.<br />
<br />
*incParNotes:<br />
<br />
Whether to include notes for parents.<br />
<br />
*incattrs:<br />
<br />
Whether to include attributes.<br />
<br />
*generations:<br />
<br />
Whether to include the generation on each report (recursive only).<br />
===Descendant Report===<br />
<br />
*name:<br />
<br />
descend_report<br />
<br />
*pid:<br />
<br />
The center person for the report<br />
<br />
*gen:<br />
<br />
The number of generations to include in the report<br />
===Kinship Report===<br />
<br />
*name:<br />
<br />
kinship_report<br />
<br />
*inccousins:<br />
<br />
Whether to include cousins<br />
<br />
*pid:<br />
<br />
The center person for the report<br />
<br />
*maxdescend:<br />
<br />
The maximum number of descendant generations<br />
<br />
*maxascend:<br />
<br />
The maximum number of ancestor generations<br />
<br />
*incaunts:<br />
<br />
Whether to include aunts/uncles/nephews/nieces<br />
<br />
*incspouses:<br />
<br />
Whether to include spouses<br />
===Detailed Descendant Report===<br />
<br />
*name:<br />
<br />
det_descendant_report<br />
<br />
*repdate:<br />
<br />
Whether to replace missing Dates with blanks.<br />
<br />
*pagebbg:<br />
<br />
Whether to start a new page after each generation.<br />
<br />
*verbose:<br />
<br />
Whether to use complete sentences or succinct language.<br />
<br />
*usecall:<br />
<br />
Whether to use the call name as the first name.<br />
<br />
*incsources:<br />
<br />
Whether to include source references.<br />
<br />
*incattrs:<br />
<br />
Whether to include attributes.<br />
<br />
*incmates:<br />
<br />
Whether to include detailed spouse information.<br />
<br />
*pid:<br />
<br />
The center person for the report<br />
<br />
*incaddresses:<br />
<br />
Whether to include addresses.<br />
<br />
*incphotos:<br />
<br />
Whether to include images.<br />
<br />
*desref:<br />
<br />
Whether to add descendant references in child list.<br />
<br />
*computeage:<br />
<br />
Whether to compute age.<br />
<br />
*fulldates:<br />
<br />
Whether to use full dates instead of just year.<br />
<br />
*incnames:<br />
<br />
Whether to include other names.<br />
<br />
*repplace:<br />
<br />
Whether to replace missing Places with blanks.<br />
<br />
*incevents:<br />
<br />
Whether to include events.<br />
<br />
*record_num:<br />
<br />
Whether to use Record-style numbering instead of Henry-style.<br />
<br />
*incnotes:<br />
<br />
Whether to include notes.<br />
<br />
*omitda:<br />
<br />
Whether to omit duplicate ancestors.<br />
<br />
*gen:<br />
<br />
The number of generations to include in the report<br />
<br />
*listc:<br />
<br />
Whether to list children.<br />
===Database Summary Report===<br />
<br />
*name:<br />
<br />
summary<br />
===Number of Ancestors Report===<br />
<br />
*name:<br />
<br />
number_of_ancestors_report<br />
<br />
*pid:<br />
<br />
The center person for the report<br />
===Ahnentafel Report===<br />
<br />
*name:<br />
<br />
ancestor_report<br />
<br />
*maxgen:<br />
<br />
The number of generations to include in the report<br />
<br />
*pagebbg:<br />
<br />
Whether to start a new page after each generation.<br />
<br />
*pid:<br />
<br />
The center person for the report<br />
<br />
*namebrk:<br />
<br />
Indicates if a line break should follow the name.<br />
===Birthday and Anniversary Report===<br />
<br />
*name:<br />
<br />
birthday_report<br />
<br />
*relationships:<br />
<br />
Include relationships to center person (slower)<br />
<br />
*filter:<br />
<br />
Select filter to restrict people that appear on calendar<br />
<br />
*anniversaries:<br />
<br />
Include anniversaries in the calendar<br />
<br />
*start_dow:<br />
<br />
Select the first day of the week for the calendar<br />
<br />
*name_format:<br />
<br />
Select the format to display names<br />
<br />
*maiden_name:<br />
<br />
Select married women's displayed surname<br />
<br />
*country:<br />
<br />
Select the country to see associated holidays<br />
<br />
*birthdays:<br />
<br />
Include birthdays in the calendar<br />
<br />
*pid:<br />
<br />
The center person for the report<br />
<br />
*alive:<br />
<br />
Include only living people in the calendar<br />
<br />
*text2:<br />
<br />
Second line of text at bottom of calendar<br />
<br />
*text3:<br />
<br />
Third line of text at bottom of calendar<br />
<br />
*text1:<br />
<br />
First line of text at bottom of calendar<br />
<br />
*year:<br />
<br />
Year of calendar<br />
<br />
*titletext:<br />
<br />
Title of calendar<br />
===End of Line Report===<br />
<br />
*name:<br />
<br />
endofline_report<br />
<br />
*pid:<br />
<br />
The center person for the report<br />
===Complete Individual Report===<br />
<br />
*name:<br />
<br />
indiv_complete<br />
<br />
*filter:<br />
<br />
Select the filter to be applied to the report<br />
<br />
*pid:<br />
<br />
The center person for the filter<br />
<br />
*cites:<br />
<br />
Whether to cite sources.<br />
===Place Report===<br />
<br />
*name:<br />
<br />
place_report<br />
<br />
*filter:<br />
<br />
Select places using a filter<br />
<br />
*places:<br />
<br />
List of places to report on<br />
===Descendant Tree===<br />
<br />
*name:<br />
<br />
descend_chart<br />
<br />
*maxgen:<br />
<br />
The number of generations to include in the tree<br />
<br />
*singlep:<br />
<br />
Whether to scale to fit on a single page.<br />
<br />
*pid:<br />
<br />
The center person for the tree<br />
<br />
*incblank:<br />
<br />
Whether to include pages that are blank.<br />
<br />
*dispf:<br />
<br />
Display format for the outputbox.<br />
<br />
*shows:<br />
<br />
Whether to show spouses in the tree.<br />
===Ancestor Tree===<br />
<br />
*name:<br />
<br />
ancestor_chart<br />
<br />
*maxgen:<br />
<br />
The number of generations to include in the tree<br />
<br />
*pid:<br />
<br />
The center person for the tree<br />
<br />
*singlep:<br />
<br />
Whether to scale to fit on a single page.<br />
<br />
*compress:<br />
<br />
Whether to compress the tree.<br />
<br />
*incblank:<br />
<br />
Whether to include pages that are blank.<br />
<br />
*dispf:<br />
<br />
Display format for the outputbox.<br />
===Fan Chart===<br />
<br />
*name:<br />
<br />
fan_chart<br />
<br />
*maxgen:<br />
<br />
The number of generations to include in the report<br />
<br />
*pid:<br />
<br />
The center person for the report<br />
<br />
*circle:<br />
<br />
The form of the graph: full circle, half circle, or quarter circle.<br />
<br />
*background:<br />
<br />
Background color is either white or generation dependent<br />
<br />
*radial:<br />
<br />
Print radial texts upright or roundabout<br />
===Statistics Charts===<br />
<br />
*name:<br />
<br />
statistics_chart<br />
<br />
*data_sname:<br />
<br />
Include charts with indicated data<br />
<br />
*data_age:<br />
<br />
Include charts with indicated data<br />
<br />
*data_ccount:<br />
<br />
Include charts with indicated data<br />
<br />
*bar_items:<br />
<br />
With fewer items pie chart and legend will be used instead of a bar chart.<br />
<br />
*data_byear:<br />
<br />
Include charts with indicated data<br />
<br />
*data_etypes:<br />
<br />
Include charts with indicated data<br />
<br />
*data_dmonth:<br />
<br />
Include charts with indicated data<br />
<br />
*data_mage:<br />
<br />
Include charts with indicated data<br />
<br />
*year_from:<br />
<br />
Birth year from which to include people<br />
<br />
*data_mcount:<br />
<br />
Include charts with indicated data<br />
<br />
*data_title:<br />
<br />
Include charts with indicated data<br />
<br />
*data_bmonth:<br />
<br />
Include charts with indicated data<br />
<br />
*data_fname:<br />
<br />
Include charts with indicated data<br />
<br />
*data_dplace:<br />
<br />
Include charts with indicated data<br />
<br />
*data_fchild:<br />
<br />
Include charts with indicated data<br />
<br />
*pid:<br />
<br />
The center person for the filter<br />
<br />
*data_lchild:<br />
<br />
Include charts with indicated data<br />
<br />
*data_dage:<br />
<br />
Include charts with indicated data<br />
<br />
*data_mplace:<br />
<br />
Include charts with indicated data<br />
<br />
*data_dyear:<br />
<br />
Include charts with indicated data<br />
<br />
*data_bplace:<br />
<br />
Include charts with indicated data<br />
<br />
*reverse:<br />
<br />
Check to reverse the sorting order.<br />
<br />
*gender:<br />
<br />
Select which genders are included into statistics.<br />
<br />
*filter:<br />
<br />
Determines what people are included in the report<br />
<br />
*no_years:<br />
<br />
Whether to include people without known birth years<br />
<br />
*sortby:<br />
<br />
Select how the statistical data is sorted.<br />
<br />
*year_to:<br />
<br />
Birth year until which to include people<br />
<br />
*data_gender:<br />
<br />
Include charts with indicated data<br />
===Calendar===<br />
<br />
*name:<br />
<br />
calendar<br />
<br />
*filter:<br />
<br />
Select filter to restrict people that appear on calendar<br />
<br />
*anniversaries:<br />
<br />
Include anniversaries in the calendar<br />
<br />
*start_dow:<br />
<br />
Select the first day of the week for the calendar<br />
<br />
*name_format:<br />
<br />
Select the format to display names<br />
<br />
*maiden_name:<br />
<br />
Select married women's displayed surname<br />
<br />
*country:<br />
<br />
Select the country to see associated holidays<br />
<br />
*birthdays:<br />
<br />
Include birthdays in the calendar<br />
<br />
*pid:<br />
<br />
The center person for the report<br />
<br />
*alive:<br />
<br />
Include only living people in the calendar<br />
<br />
*text2:<br />
<br />
Second line of text at bottom of calendar<br />
<br />
*text3:<br />
<br />
Third line of text at bottom of calendar<br />
<br />
*text1:<br />
<br />
First line of text at bottom of calendar<br />
<br />
*year:<br />
<br />
Year of calendar<br />
===Timeline Chart===<br />
<br />
*name:<br />
<br />
timeline<br />
<br />
*filter:<br />
<br />
Determines what people are included in the report<br />
<br />
*calendar:<br />
<br />
The calendar which determines the year span<br />
<br />
*pid:<br />
<br />
The center person for the filter<br />
<br />
*sortby:<br />
<br />
Sorting method to use<br />
<br />
==Tools==<br />
<br />
===Common Options===<br />
<br />
*id: =ID<br />
<br />
Gramps ID of a central person.<br />
<br />
I4 Smith, Ingeman<br />
<br />
I18 Smith, John Hjalmar<br />
<br />
I38 Hansdotter, Kerstina<br />
<br />
I39 Smith, Martin<br />
<br />
I28 Streiffert, Anna<br />
<br />
I40 Smith, Marjorie Alice<br />
<br />
I22 Smith, Martin<br />
<br />
I11 Smith, Hanna<br />
<br />
I41 Green, Janis Elaine<br />
<br />
I15 Smith, Gus<br />
<br />
I8 Smith, Hjalmar<br />
<br />
I3 Smith, Magnes<br />
<br />
I5 Smith, Mason Michael<br />
<br />
I10 Smith, Hans Peter<br />
<br />
I24 Smith, Gustaf Sr.<br />
<br />
I20 Smith, Carl Emil<br />
<br />
I17 Jones, Lillie Harriet<br />
<br />
I23 Smith, Astrid Shermanna Augusta<br />
<br />
I1 Smith, Keith Lloyd<br />
<br />
I37 Smith, Edwin Michael<br />
<br />
I19 Smith, Eric Lloyd<br />
<br />
I25 Ericsdotter, Marta<br />
<br />
I29 Smith, Craig Peter<br />
<br />
I2 Smith, Amber Marie<br />
<br />
I33 Smith, Lloyd<br />
<br />
I32 Horne, Darcy<br />
<br />
I26 Smith, Kirsti Marie<br />
<br />
I35 Smith, Lars Peter<br />
<br />
I30 Adams, Janice Ann<br />
<br />
I0 Hansdotter, Anna<br />
<br />
I31 Ohman, Marjorie<br />
<br />
I12 Nielsen, Herman Julius<br />
<br />
I9 Smith, Emil<br />
<br />
I27 Smith, Ingeman<br />
<br />
I36 Jefferson, Elna<br />
<br />
I21 Smith, Hjalmar<br />
<br />
I34 Perkins, Alice Paula<br />
<br />
I14 Smith, Marjorie Lee<br />
<br />
I7 Smith, Ingar<br />
<br />
I6 Willard, Edwin<br />
<br />
I16 Anderson, Jennifer<br />
<br />
I13 Michaels, Evelyn<br />
===Check and Repair Database===<br />
<br />
*name:<br />
<br />
check<br />
===Rebuild Reference Maps===<br />
<br />
*name:<br />
<br />
rebuild_refmap<br />
===Check Localized Date Displayer and Parser===<br />
<br />
*name:<br />
<br />
test_for_date_parser_and_displayer<br />
===Rename Event Types===<br />
<br />
*name:<br />
<br />
chtype<br />
<br />
*fromtype: =str<br />
<br />
Type of events to replace<br />
<br />
Value: ''Event type string''<br />
<br />
*totype: =str<br />
<br />
New type replacing the old one<br />
<br />
Value: ''Event type string''<br />
===Dump Gender Statistics===<br />
<br />
*name:<br />
<br />
dgenstats<br />
===Generate Testcases for Persons and Families===<br />
<br />
*name:<br />
<br />
testcasegenerator<br />
<br />
*add_linebreak: =0/1<br />
<br />
Wheter to add a line break to every text field<br />
<br />
No linebreak<br />
<br />
Add line break<br />
<br />
*person_count: =int<br />
<br />
Number of dummy persons to generate<br />
<br />
Value: ''Number of persons''<br />
<br />
*no_trans: =0/1<br />
<br />
Wheter to use one transaction or multiple small ones<br />
<br />
One transaction<br />
<br />
Multiple transactions<br />
<br />
*long_names: =0/1<br />
<br />
Wheter to create short or long names<br />
<br />
Short names<br />
<br />
Long names<br />
<br />
*bugs: =0/1<br />
<br />
Whether to create invalid database references.<br />
<br />
Skip test<br />
<br />
Create invalid Database references<br />
<br />
*persons: =0/1<br />
<br />
Whether to create a bunch of dummy persons<br />
<br />
Dont create persons<br />
<br />
Create dummy persons<br />
<br />
*add_serial: =0/1<br />
<br />
Wheter to add a serial number to every text field<br />
<br />
No serial<br />
<br />
Add serial number<br />
<br />
*specialchars: =0/1<br />
<br />
Wheter to ass some special characters to every text field<br />
<br />
No special characters<br />
<br />
Add special characters<br />
===Verify the Data===<br />
<br />
*name:<br />
<br />
verify<br />
<br />
*lngwdw: =num<br />
<br />
Maximum number of consecutive years of widowhood before next marriage<br />
<br />
Value: ''Number of years''<br />
<br />
*mxchildmom: =num<br />
<br />
Maximum number of children for a woman<br />
<br />
Value: ''Number of children''<br />
<br />
*wedder: =num<br />
<br />
Maximum number of spouses for a person<br />
<br />
Value: ''Number of spouses''<br />
<br />
*oldunm: =num<br />
<br />
Maximum age for an unmarried personNumber of years<br />
<br />
*mxchilddad: =num<br />
<br />
Maximum number of children for a man<br />
<br />
Value: ''Number of chidlren''<br />
<br />
*estimate_age: =0/1<br />
<br />
Whether to estimate missing dates<br />
<br />
Do not estimate<br />
<br />
Estimate dates<br />
<br />
*yngmar: =num<br />
<br />
Minimum age to marry<br />
<br />
Value: ''Age in years''<br />
<br />
*oldmar: =num<br />
<br />
Maximum age to marry<br />
<br />
Value: ''Age in years''<br />
<br />
*cbspan: =num<br />
<br />
Maximum span of years for all children<br />
<br />
Value: ''Span in years''<br />
<br />
*oldage: =num<br />
<br />
Maximum age<br />
<br />
Value: ''Age in years''<br />
<br />
*olddad: =num<br />
<br />
Maximum age to father a child<br />
<br />
Value: ''Age in years''<br />
<br />
*hwdif: =num<br />
<br />
Maximum husband-wife age difference<br />
<br />
Value: ''Age difference in years''<br />
<br />
*invdate: =0/1<br />
<br />
Whether to check for invalid datesDo not identify invalid dates<br />
<br />
Value: ''Identify invalid dates''<br />
<br />
*yngmom: =num<br />
<br />
Minimum age to bear a child<br />
<br />
Value: ''Age in years''<br />
<br />
*yngdad: =num<br />
<br />
Minimum age to father a child<br />
<br />
Value: ''Age in years''<br />
<br />
*oldmom: =num<br />
<br />
Maximum age to bear a child<br />
<br />
Value: ''Age in years''<br />
<br />
*cspace: =num<br />
<br />
Maximum number of years between children<br />
<br />
Value: ''Number of years''<br />
===Rebuild Secondary Indices===<br />
<br />
*name:<br />
<br />
rebuild<br />
===Generate Commandline Plugin Reference===<br />
<br />
*name:<br />
<br />
cmdref<br />
<br />
*include: =0/1<br />
<br />
Whether to include into the manual<br />
<br />
Do not include<br />
<br />
Include<br />
<br />
*target: =str<br />
<br />
Pathname to the target file<br />
<br />
Value: ''Any valid pathname''<br />
<br />
===Reorder GRAMPS IDs===<br />
<br />
*name:<br />
<br />
reorder_ids<br />
<br />
[[Category:Documentation]]<br />
[[Category:Plugins]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=What_to_do_for_a_release&diff=29925What to do for a release2011-08-21T05:37:56Z<p>PaulFranklin: </p>
<hr />
<div>'''What to do for a release'''<br />
<br />
These notes are based on version 3.3.0, released in June 2011. The steps assume a working <tt>gramps33</tt> source directory. See [[Running a development version of Gramps]] if this is not the case.<br />
<br />
==Translation update==<br />
Run the following steps:<br />
cd gramps33<br />
svn update<br />
cd po<br />
make gramps.pot<br />
svn diff gramps.pot<br />
If there have been changes, you'll need to commit <tt>gramps.pot</tt> and ask translators to update their <tt>.po</tt> files before you can make a release.<br />
<br />
==Release name==<br />
Refer to (and update) the [[Previous releases|list of previous releases]] to select an appropriate name.<br />
<br />
==Changelog and NEWS file==<br />
Create the changelog files:<br />
svn2cl --reparagraph --include-rev --authors=src/data/authors.xml<br />
cd po<br />
svn2cl --reparagraph --include-rev --authors=../src/data/authors.xml<br />
cd ..<br />
<br />
Using the <tt>Changelog</tt> files generated with <tt>svn2cl</tt> in the step above, edit and update the <tt>NEWS</tt> file.<br />
Commit the NEWS file. Note the svn commit revision number, which you'll need in the next step when you create the subversion tag:<br />
svn commit -m "update for 3.3.0 release"<br />
Committed revision 17751.<br />
<br />
==Subversion tag==<br />
Using the previous commit revision number, create a tag for the new release:<br />
svn copy -r 17751 https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps33 https://gramps.svn.sourceforge.net/svnroot/gramps/tags/gramps-3.3.0 -m "tag 3.3.0"<br />
Committed revision 17752.<br />
<br />
==Working on the tag==<br />
Check out the new tag:<br />
cd ..<br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/tags/gramps-3.3.0<br />
cd gramps-3.3.0<br />
<br />
Modify <tt>configure.in</tt> to indicate an official release:<br />
gedit configure.in<br />
There are two changes to make:<br />
:1) Change the following line:<br />
-RELEASE=0.SVN$(svnversion -n .)<br />
+dnl RELEASE=0.SVN$(svnversion -n .)<br />
:2) And change this line:<br />
-dnl RELEASE=1<br />
+RELEASE=1<br />
Save these two changes.<br />
svn commit -m "make official release" configure.in<br />
Now run the following and check the version number in the "about" dialog:<br />
./autogen.sh<br />
make<br />
python src/gramps.py<br />
<br />
==Changelog and source tarball==<br />
Re-create (or copy from above) the 2 Changelog files. The Changelog files are required for the source tarball, but do not commit to subversion:<br />
svn2cl --reparagraph --include-rev --authors=src/data/authors.xml<br />
cd po<br />
svn2cl --reparagraph --include-rev --authors=../src/data/authors.xml<br />
cd ..<br />
Create the official source tarball:<br />
make distcheck<br />
<br />
Note you should now have the file <tt>gramps-3.3.0.tar.gz</tt>, approximately 8 MB in size.<br />
<br />
==Making the source tarball available==<br />
* access the "Sourceforge Project Admin->File Manager" page at https://sourceforge.net/projects/gramps/<br />
* create a new folder in the "Stable" hierarchy<br />
* upload the <tt>gramps-*.tar.gz</tt> file to the new folder<br />
<br />
==Announcing the new release==<br />
* announce on gramps-announce@lists.sourceforge.net, gramps-devel@lists.sourceforge.net and gramps-users@lists.sourceforge.net<br />
* update [[News]] section on this wiki<br />
* update the list of [[previous releases]]<br />
* update reference to the new version on the [[Template:Version|wiki template]]<br />
* change the topic on the IRC channel #gramps<br />
* update the version number at [http://en.wikipedia.org/wiki/GRAMPS Wikipedia]<br />
<br />
==Post-release==<br />
* in <tt>gramps33</tt>, bump the version number in <tt>configure.in</tt> and <tt>src/const.py.in</tt><br />
* in <tt>trunk</tt>, merge forward the <tt>NEWS</tt> file<br />
<br />
==See also==<br />
* [[Brief introduction to SVN]]<br />
* [[Running a development version of Gramps]]<br />
* [[:Category:Developers/Packaging]]<br />
<br />
==External links==<br />
* http://gramps.svn.sourceforge.net/viewvc/gramps/<br />
* http://gramps-project.org/cpanel<br />
* http://sourceforge.net/projects/gramps/<br />
<br />
[[Category:Developers/General]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Committing_policies&diff=29865Committing policies2011-08-12T16:46:45Z<p>PaulFranklin: </p>
<hr />
<div>==Log messages==<br />
Every commit to Subversion must be accompanied by a log message. These messages will be generated into a ChangeLog when a release is made and should conform to the following guidelines:<br />
<br />
* Messages should attempt to describe how the change affects the functionality from the user's perspective.<br />
* It is not necessary to describe minute details about the change nor the files that are affected because that information is already stored by Subversion.<br />
* If the commit fixes a bug on the [http://bugs.gramps-project.org bug tracker], the log message shall include the bug ID and summary from the tracker.<br />
* When committing contributed code, the log message shall list the contributor's name and email.<br />
<br />
You can see the last changes with the svn log command, an example usage of this command:<br />
svn log -r BASE:10240 | head -n 40<br />
Change 10240 to a more recent version to have the command take less time.<br />
<br />
You can also limit the number of entries shown by passing in the '''--limit''' flag to svn. Add '''-v''' to see the files affected by the commit:<br />
<br />
svn log --limit 5<br />
<br />
==Adding new files==<br />
All the files with the translatable strings '''must''' be listed in the po/POTFILES.in or po/POTFILES.skip files. This means that most new files must have their names added to these files.<br />
<br />
All the files that need to be released '''must''' be listed in the Makefile.am in the same directory. Please remember to do this for new files that you add to SVN.<br />
<br />
===Check===<br />
<br />
You can make a test on a local copy:<br />
./autogen.sh<br />
PYTHONPATH=../../trunk/src python po/test/po_test.py<br />
<br />
where ../.. is the path to your local copy<br />
<br />
===Properties===<br />
You'll also need to set several properties for new files. For .py files, try the following:<br />
svn propset svn:mime-type text/plain src/somefile.py<br />
svn propset svn:eol-style native src/somefile.py<br />
svn propset svn:keywords 'Id' src/somefile.py<br />
<br />
==Removing files==<br />
Remember to remove references to the file from the po/POTFILES.in and Makefile.am files.<br />
<br />
==Bugfixes in branches==<br />
Whenever a bug is fixed in a branch, it is the committer's responsibility to make sure the fix is also committed to the trunk. This can be accomplished using one of three methods. All methods require a working copy of trunk and the branch.<br />
<br />
;Using svn merge<br />
The most common way to move changes between branches is by using the svn merge command. Assuming you have a working copy of trunk in ~/gramps/trunk and a working copy of the 3.3 branch in ~gramps/gramps33:<br />
gramps33$ svn commit<br />
gramps33$ cd ../trunk<br />
trunk$ svn merge -c REVISION https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps33/<br />
trunk$ svn commit<br />
<br />
;Using svn diff<br />
You can also create a patch on gramps33 branch and apply it to trunk:<br />
gramps33$ svn diff -r PREV > ~/mypatch.patch<br />
gramps33$ cd ../trunk<br />
trunk$ patch -p0 < ~/mypatch.patch<br />
<br />
Then you may have to fix things that could not be applied due to conflicts. The patch program would mark the conflicts with the <<<<<<, ======, and >>>>>> signs. You will then need to commit your changes:<br />
trunk$ ./svnci<br />
<br />
;Manually<br />
Make the change in the branch. Commit the change to the branch. <br />
<br />
Make the change in trunk. Commit the change to trunk.<br />
<br />
More info: http://svnbook.red-bean.com/<br />
<br />
[[Category:Developers/General]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Gramps_3.3_Wiki_Manual_-_FAQ&diff=29727Gramps 3.3 Wiki Manual - FAQ2011-08-05T19:07:03Z<p>PaulFranklin: /* Does GRAMPS work on the Mac? */</p>
<hr />
<div>This appendix contains the list of questions that frequently come up in mailing list discussions and forums. This list is by no means complete. If you would like to add questions/answers to this list, please email your suggestions to the gramps-devel@lists.sourceforge.net list.<br />
<br />
{{grampsmanualcopyright}}<br />
<br />
{{man index|Gramps 3.3 Wiki Manual - Filters|Gramps 3.3 Wiki Manual - Keybindings|3.3}}<br />
<br />
{{languages|Gramps_3.3_Wiki_Manual_-_FAQ}}<br />
<br />
<br />
Also consider having a look at:<br />
*[[:Category:How do I...|How do I...]]<br />
*[[:Category:Tutorials|GRAMPS Tutorials]]<br />
<br />
<br />
[[Category:Documentation]]<br />
<br />
==General==<br />
<br />
=== What is GRAMPS? ===<br />
GRAMPS is the Genealogical Research and Analysis Management Program System. In other words, it is a personal genealogy program letting you store, edit, and research genealogical data using the powers of your computer, see [[GRAMPS:About|About]].<br />
<br />
===Where do I get it and how much does it cost?===<br />
GRAMPS can be [[Installation|installed]] at no charge. GRAMPS is an Open Source project covered by the GNU General Public License. You have full access to the source code and are allowed to distribute the program and source code freely.<br />
<br />
===Does GRAMPS exist in other languages?===<br />
Yes, at the moment GRAMPS is translated in 23 languages, see [[GRAMPS translations]].<br />
<br />
===How do I keep backups?===<br />
Use a recent version of GRAMPS! From 2.2.5 onwards there is an automatic backup utility.<br />
<br />
It is extremely important to keep backups of your data, and keep them in a safe place. GRAMPS has a specific portable file format which is small, and human readable, denoted by <code>.gramps</code>. <br />
<br />
You can copy this backup file from time to time to a save location (eg a usb stick). <br />
[Note: The .gramps files are compressed. Clicking them will open GRAMPS. To see the XML select them and open them with a decompressing utility (like ark, gunzip), after which you can extract the XML file which is human readable, see [[Generate_XML#How_do_I_uncompress_the_file?|details]].<br />
<br />
GRAMPS does a quick hidden binary backup to allow restore if an error is noted. If the correct package is installed you can use a revision system.<br />
<br />
Another method is to backup the hidden directory ''/.gramps''. This directory is situated in your home directory on Linux systems. Backing up this directory will backup your databases and revisions.<br />
<br />
'''Do not keep backups in GEDCOM'''. Not all information GRAMPS stores can be written in the GEDCOM. Hence, an export/import operation GRAMPS --> GEDCOM --> GRAMPS, will mean you '''lose''' data. Use the <code>.gramps</code> file format for backups!<br />
<br />
'''Do not keep backups in GRDB format'''. GRDB is a database, which might be computer dependent (read, not working on a different PC). Small damage to a GRDB file can also not be repaired. Use the <code>.gramps</code> file format for backups!<br />
<br />
=== Does Gramps support Unicode fonts? ===<br />
<br />
In particular, does it support non-Roman Unicode fonts? Yes. GRAMPS works internally with Unicode (UTF-8), so all alphabets can be used on all entry fields. All reports fully support this, although for PDF/PS you need to work with gnome-print or [http://www.documentfoundation.org/download/ LibreOffice].<br />
<br />
==Installation==<br />
<br />
===What is needed to install GRAMPS under Linux, Solaris, or FreeBSD?===<br />
<br />
GRAMPS is a [http://en.wikipedia.org/wiki/Gtk GTK] application. GRAMPS needs to have the [http://en.wikipedia.org/wiki/Pygtk pygtk] libraries installed on the system. As long as these libraries are installed, GRAMPS should function. It will operate under the GNOME desktop, KDE desktop, or any other desktop. If the GNOME bindings for Python are installed on the system, GRAMPS will have additional functionality. The GRAMPS project recommends version 2.8 or higher of GTK.<br />
<br />
===Does GRAMPS work on Windows?===<br />
<br />
Yes, many people use it on Windows. Probably the easiest thing<br />
is to [[Download]] the [[Gramps Software Bundle for Windows|GrampsAIO]] software "bundle" for Windows,<br />
as that is an all-in-one package of GRAMPS with the other programs it needs, and so<br />
may be installed very trivially.<br />
<br />
We will do our best to solve Windows-related problems. See [[Contact|here]].<br />
<br />
See [[GRAMPS and Windows]] for a summary of hints to use GRAMPS on a Windows PC.<br />
<br />
Also, the [[Linux Genealogy CD]] can function as a live CD that you boot directly from. You can then run Linux and GRAMPS off the CD, even if your computer is entirely Windows.<br />
<br />
A [[Windows installer]] is available, for the technically sophisticated.<br />
<br />
===Does GRAMPS work on the Mac?===<br />
<br />
Yes, Mac is a supported platform for GRAMPS.<br />
See [[Using GRAMPS on Apple Mac|here]].<br />
<br />
===What are the Minimum Specs to run GRAMPS?===<br />
<br />
We would recommend at least an 800x600 video display. For GRAMPS 3.3, the memory requirements have been reduced, and GRAMPS can run quite efficiently on a 256MB system, holding considerably more people. A system with 512MB should be able to hold around 200,000 people. Disk space requirements for databases are however considerably larger, with a typical database being several megabytes in size. For 120.000 people you must consider already 530Mb for the database. Pictures are stored on disk separately, so a large harddisk is necessary.<br />
<br />
===How do I upgrade GRAMPS?===<br />
<br />
GNU/Linux operating systems will typically deal with upgrade issues for you. If they do not then you need to ask users of your prefered GNU/Linux distribution.<br />
<br />
The Windows port of GRAMPS needs to be updated manually.<br />
<br />
(incomplete answer)<br />
<br />
==Preferences==<br />
<br />
===Can I change the dates in reports to 'day month year'?===<br />
<br />
Yes, change in the preferences ("Edit->Preferences") the date for GRAMPS to the required format (eg YYYY-MM-DD or day month year), and make the report. Your global date preferences will be used.<br />
<br />
==Collaboration-Portability==<br />
<br />
===Is GRAMPS compatible with other genealogical software?===<br />
<br />
GRAMPS makes every effort to maintain compatibility with [[GEDCOM]], the general standard of recording genealogical information. We have import and export filters that enable GRAMPS to read and write GEDCOM files.<br />
<br />
It is important to understand that the GEDCOM standard is poorly implemented -- virtually every genealogical software has its own "flavor" of GEDCOM. As we learn about new flavor, the import/export filters can be created very quickly. However, finding out about the unknown flavors requires [[Contact|user feedback]]. Please feel free to inform us about any GEDCOM flavor not supported by GRAMPS, and we will do our best to support it!<br />
<br />
===Can GRAMPS read files created by other genealogy programs? ===<br />
<br />
See above.<br />
<br />
===Can GRAMPS write files readable by other genealogy programs? ===<br />
See above.<br />
<br />
===What standards does GRAMPS support?===<br />
<br />
The nice thing about standards is that there never is a shortage of them. GRAMPS is tested to support the following flavors of GEDCOM: GEDCOM5.5, Brother's Keeper, Family Origins, Family Tree Maker, Ftree, GeneWeb, Legacy, Personal Ancestral File, Pro-Gen, Reunion, and Visual Genealogie.<br />
<br />
===How do I import data from another genealogy program into GRAMPS?===<br />
<br />
The best way is to create a new family tree, and select the import option in the file menu. Here you select the GEDCOM you generated with the other program, and import it. <br />
<br />
===Can I install GRAMPS on a Linux Web Server and use it via a web browser? ===<br />
<br />
This would enable my relations worldwide to access and update it.<br />
While GRAMPS can generate web sites, it does not provide a web interface that allows for editing. If this is a requirement, then [http://geneweb.org GeneWeb] or [http://phpgedview.sourceforge.net PhpGedView] are programs more likely to meet your needs. Also have a look at experimental [[GEPS_013:_GRAMPS_Webapp|gramps-connect]]. However, you may wish to ask yourself the following questions:<br />
# Do I really want relatives or other people to directly edit my genealogy database?<br />
# Do I implicitly trust, without verification, any data that people may enter?<br />
# Do these people have the same understanding of good genealogy practice that I have?<br />
A better approach may be to provide a web form interface that allows others to enter data that is then held for your examination. You can then decide if the information should be entered into your database.<br />
<br />
You may also want to consider the effects of possible downtime of your site if you cannot afford yourself a premium webhosting service.<br />
<br />
==Reports==<br />
<br />
===Can GRAMPS print a genealogical tree for my family?===<br />
<br />
Yes. Different people have different ideas of what a genealogical tree is. Some think of it as a chart going from the distant ancestor and listing all his/her descendants and their families. Others think it should be a chart going from the person back in time, listing the ancestors and their families. Yet other people think of a table, text report, etc.<br />
<br />
GRAMPS can produce any of the above, and many more different charts and reports. Moreover, the plugin architecture enables users (you) to create their own plugins which could be new reports, charts, or research tools.<br />
<br />
===In what formats can GRAMPS output its reports?===<br />
<br />
Text reports are available in HTML, PDF, ODT, LaTeX, and RTF formats. Graphical reports (charts and diagrams) are available in PostScript, PDF, SVG, ODS, and GraphViz formats.<br />
<br />
===How can I change the default language in reports?===<br />
<br />
The reports are in the language of your linux installation. You can change it by installing extra language packs, see [[Howto: Change the language of reports]]<br />
<br />
===Is GRAMPS compatible with the Internet? ===<br />
<br />
GRAMPS can store web addresses and direct your browser to them. It can import data that you download from the Internet. It can export data that you could send over the Internet. GRAMPS is familiar with the standard file formats widely used on the Internet (e.g. JPEG, PNG, and GIF images, MP3, OGG, and WAV sound files, QuickTime, MPEG, and AVI movie files, etc). Other than that, there is little that a genealogical program can do with the Internet.<br />
<br />
===Can I create custom reports/filters/whatever?===<br />
Yes. There are many levels of customization. One is creating or modifying the templates used for the reports. This gives you some control over the fonts, colors, and some layout of the reports. You can also use GRAMPS controls in the report dialogs to tell what contents should be used for a particular report. In addition to this, you have an ability to create your own filters -- this is useful in selecting people based on criteria set by you. You can combine these filters to create new, more complex filters. Finally, you have an option to create your own plugins. These may be new reports, research tools, import/export filters, etc. This assumes some knowledge of programming in Python.<br />
<br />
===Why are non-Latin characters displayed as garbage in PDF/PS reports? ===<br />
<br />
This is a limitation of the built-in fonts of PS and PDF formats. To print non-Latin text, use the Print... in the format selection menu of the report dialog. This will use the <code>gnome-print</code> backend, which supports PS and PDF creation, as well as direct printing. (Note: you might need to install gnome-print separately as it is not required for GRAMPS).<br />
<br />
If you only have Latin text, the PDF option will produce a smaller PDF compared to that created by gnome-print, simply because no font information will be embedded.<br />
<br />
===I would like to contribute to GRAMPS by writing my favorite report. How do I do that? ===<br />
<br />
The easiest way to contribute to reports, filters, tools, etc. is to copy an existing GRAMPS report, filter, or tool. If you can create what you want by modifying existing code -- great! If your idea does not fit into the logic of any existing GRAMPS tool, you will need to write your own plugin from scratch. Help is available on the [[Portal:Developers|Developers Portal]], or on the [[Contact|Developers mailing list]]: gramps-devel@lists.sourceforge.net.<br />
<br />
To test your work in progress, you may save your plugin under $HOME/.gramps/plugins directory and it should be found and imported on startup. The correctly written plugin will register itself with GRAMPS, create menu item, and so on.<br />
<br />
If you are happy with your plugin and would like to contribute your code back to the GRAMPS project, you are very welcome to do so by contacting us at gramps-devel@lists.sourceforge.net<br />
<br />
==Database - GRAMPS file formats==<br />
<br />
===What is the maximum database size (bytes) GRAMPS can handle?===<br />
<br />
GRAMPS has no hard limits on the size of a database that it can handle. Starting with 2.0.0 release, GRAMPS no longer loads all data into memory, which allows it to work with a much larger database than before. In reality, however, there are practical limits. The main limiting factors are the available memory on the system and the cache size used for BSDDB database access. With common memory sizes these days, GRAMPS should have no problem using databases with [[GRAMPS Performance|tens of thousands of people]].<br />
<br />
===How many people can GRAMPS database handle? ===<br />
<br />
See above. Again, this is dependent on how much memory you have, see [[GRAMPS Performance]].<br />
<br />
===My database is really big. Is there a way around loading all the data into memory?===<br />
<br />
Starting with 2.0.0 release, GRAMPS no longer loads all data into memory, which allows it to work with a much larger database than before. The fileformat used is <code>.grdb</code> which means gramps database.<br />
<br />
===Can I run GRAMPS from a database on a NFS share?===<br />
<br />
Yes you can.<br />
<br />
===What does "portable" mean?===<br />
<br />
A GRAMPS 3 database (and any .grdb file) is very dependent on the software versions that created it. For example, you can't just move your GRAMPS data in these formats to a different operating system (or even a different version of an operating system) and expect that you will be able to read your data. The data is not "portable". Therefore, you can't just rely on backups of these formats, but you should also occasionally export into a format that is portable. There are two possible portable formats: GEDCOM and GRAMPS XML (.gramps or .gpkg). But only GRAMPS XML is recommended, as it faithfully saves all of your data.<br />
<br />
===Why is the database format (GRDB) not portable?===<br />
<br />
The biggest issue with GRAMPS portability lies with 'transactions'. With<br />
GRAMPS 2.2, we added support for atomic transactions to protect data.<br />
With atomic transactions, multiple changes are committed as a single<br />
unit. Either all the changes make it, or none of the changes make it.<br />
You are never left in a situation with a partial set of changes. A side<br />
benefit of using transactions is that database access (reads and writes)<br />
are faster.<br />
<br />
The problem with transactions (at least using BSDDB) is that it does not<br />
allow all the data to be stored in a single file. Logging files are<br />
needed to keep track of things. These logging files are kept in a DB<br />
Environment directory. We need a separate directory for each file,<br />
otherwise the log files can interfere with each other.<br />
<br />
In 2.2, we keep the log files under the ~/.gramps/<path> directory,<br />
creating a unique directory for each database. The problem is that your<br />
GRDB file needs the log files, which are in a different directory.<br />
Copying the GRDB file is only copying a portion of the database.<br />
<br />
==Bugs and requests==<br />
<br />
===What do I do if I have found a bug?===<br />
<br />
The best thing you can do is to fix the bug and send the patch to gramps-devel@lists.sourceforge.net :-)<br />
<br />
If that is not possible, you should [[How to report bugs|submit a bug report]]<br />
<br />
A good bug report would include:<br />
# Version of gramps you were using when you encountered the bug (available through Help → About menu item).<br />
# Language under which gramps was run (available by executing <code> echo $LANG</code> in your terminal).<br />
# Symptoms indicating that this is indeed a bug.<br />
# Any Traceback messages, error messages, warnings, etc, that showed up in your terminal or a in separate traceback window.<br />
<br />
Most problems can be fixed quickly provided there is enough information. To ensure this, please follow up on your bug reports. Then we will have a way of contacting you should we need more information.<br />
<br />
===Requests===<br />
<br />
*GRAMPS should be a .... type of application<br />
<br />
It is obvious that GRAMPS absolutely needs to become a (client-server/web-based/PHP/weblog/Javascript/C++/distributed/KDE/Motif/Tcl/Win32/C#/You-name-it) application. When is this going to happen?<br />
<br />
The surest way to see it happen is to get it done by yourself. Since GRAMPS is free/open source, nobody prevents you from taking all of the code and continuing its development in whatever direction you see fit. In doing so, you may consider giving your new project another name to avoid confusion with the continuing GRAMPS development. If you would like the GRAMPS project to provide advice, expertise, filters, etc., we will gladly cooperate with your new project, to ensure compatibility or import/export options to your new format of a project.<br />
<br />
If, however, you would like the GRAMPS project to adopt your strategy, you would need to convince GRAMPS developers that your strategy is good for GRAMPS and superior to the present development strategy.<br />
<br />
==GRAMPS Webhosting ==<br />
<br />
===How can I publish web sites generated by GRAMPS?===<br />
<br />
Since GRAMPS generates HTML pages, you can upload the pages to your personal web site. If you do not have a personal web site, and still wish to have your pages available on the internet, the GRAMPS project can provide space for you at the http://library.gramps-project.org, see [[GRAMPS:Webhosting|the webhosting article]].<br />
<br />
===How do I submit my pages to the GRAMPS library site (http://library.gramps-project.org)?===<br />
<br />
If you wish to submit pages to the GRAMPS library site, you will need to contact the GRAMPS project, typically by sending a message to the gramps-users mailing list. You will then be given a username and password that will allow you to upload your files to the site. After you upload the files (in a gzip'ed tar file), the GRAMPS project will install the pages for you on the site.<br />
<br />
===After I upload my Family Web Page to library.gramps-project.org, is the password used for write privileges only or read privileges?===<br />
<br />
In order to prevent abuse of the library.gramps-project.org site, the password given allows uploads only. If you wish to have a username and password combination to restrict read access to your pages, you will need to contact the GRAMPS project, and we could set this up for you. However, the read and write accounts will be separate accounts.<br />
<br />
===Do I view the Family Web Page with a url into my browser?===<br />
<br />
Or through a link on a list of Family Web Pages on the GRAMPS-Project.org site?<br />
The main page on the library.gramps-project.org site will contain an index of the available family sites. However, there will be a unique URL for each site as well.<br />
<br />
==Adding to and editing my database==<br />
<br />
===What is the difference between a residence and an address?===<br />
<br />
A residence is a place where someone lived for a period of time. An address is the name of a residence formatted in the way expected by the postal system. Therefore each residence can also have an address if that is useful.<br />
<br />
===How do I change the order of children?===<br />
<br />
Children can be moved in the [[Gramps_3.3_Wiki_Manual_-_Main_Window#Relationships_View| Family Editor]] by dragging and dropping or using the up and down buttons.<br />
<br />
===How do I change the order of spouses?===<br />
<br />
Spouses can be reordered from the [[Gramps_3.3_Wiki_Manual_-_Main_Window#Relationships_View |Relationship View]] by selecting the 'Reorder' button in the toolbar.<br />
<br />
{{man index|Gramps 3.3 Wiki Manual - Filters|Gramps 3.3 Wiki Manual - Keybindings|3.3}}<br />
<br />
[[Category:Documentation]]<br />
<br />
{{languages|Gramps_3.3_Wiki_Manual_-_FAQ}}</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Gramps_3.3_Wiki_Manual_-_FAQ&diff=29726Gramps 3.3 Wiki Manual - FAQ2011-08-05T19:04:42Z<p>PaulFranklin: </p>
<hr />
<div>This appendix contains the list of questions that frequently come up in mailing list discussions and forums. This list is by no means complete. If you would like to add questions/answers to this list, please email your suggestions to the gramps-devel@lists.sourceforge.net list.<br />
<br />
{{grampsmanualcopyright}}<br />
<br />
{{man index|Gramps 3.3 Wiki Manual - Filters|Gramps 3.3 Wiki Manual - Keybindings|3.3}}<br />
<br />
{{languages|Gramps_3.3_Wiki_Manual_-_FAQ}}<br />
<br />
<br />
Also consider having a look at:<br />
*[[:Category:How do I...|How do I...]]<br />
*[[:Category:Tutorials|GRAMPS Tutorials]]<br />
<br />
<br />
[[Category:Documentation]]<br />
<br />
==General==<br />
<br />
=== What is GRAMPS? ===<br />
GRAMPS is the Genealogical Research and Analysis Management Program System. In other words, it is a personal genealogy program letting you store, edit, and research genealogical data using the powers of your computer, see [[GRAMPS:About|About]].<br />
<br />
===Where do I get it and how much does it cost?===<br />
GRAMPS can be [[Installation|installed]] at no charge. GRAMPS is an Open Source project covered by the GNU General Public License. You have full access to the source code and are allowed to distribute the program and source code freely.<br />
<br />
===Does GRAMPS exist in other languages?===<br />
Yes, at the moment GRAMPS is translated in 23 languages, see [[GRAMPS translations]].<br />
<br />
===How do I keep backups?===<br />
Use a recent version of GRAMPS! From 2.2.5 onwards there is an automatic backup utility.<br />
<br />
It is extremely important to keep backups of your data, and keep them in a safe place. GRAMPS has a specific portable file format which is small, and human readable, denoted by <code>.gramps</code>. <br />
<br />
You can copy this backup file from time to time to a save location (eg a usb stick). <br />
[Note: The .gramps files are compressed. Clicking them will open GRAMPS. To see the XML select them and open them with a decompressing utility (like ark, gunzip), after which you can extract the XML file which is human readable, see [[Generate_XML#How_do_I_uncompress_the_file?|details]].<br />
<br />
GRAMPS does a quick hidden binary backup to allow restore if an error is noted. If the correct package is installed you can use a revision system.<br />
<br />
Another method is to backup the hidden directory ''/.gramps''. This directory is situated in your home directory on Linux systems. Backing up this directory will backup your databases and revisions.<br />
<br />
'''Do not keep backups in GEDCOM'''. Not all information GRAMPS stores can be written in the GEDCOM. Hence, an export/import operation GRAMPS --> GEDCOM --> GRAMPS, will mean you '''lose''' data. Use the <code>.gramps</code> file format for backups!<br />
<br />
'''Do not keep backups in GRDB format'''. GRDB is a database, which might be computer dependent (read, not working on a different PC). Small damage to a GRDB file can also not be repaired. Use the <code>.gramps</code> file format for backups!<br />
<br />
=== Does Gramps support Unicode fonts? ===<br />
<br />
In particular, does it support non-Roman Unicode fonts? Yes. GRAMPS works internally with Unicode (UTF-8), so all alphabets can be used on all entry fields. All reports fully support this, although for PDF/PS you need to work with gnome-print or [http://www.documentfoundation.org/download/ LibreOffice].<br />
<br />
==Installation==<br />
<br />
===What is needed to install GRAMPS under Linux, Solaris, or FreeBSD?===<br />
<br />
GRAMPS is a [http://en.wikipedia.org/wiki/Gtk GTK] application. GRAMPS needs to have the [http://en.wikipedia.org/wiki/Pygtk pygtk] libraries installed on the system. As long as these libraries are installed, GRAMPS should function. It will operate under the GNOME desktop, KDE desktop, or any other desktop. If the GNOME bindings for Python are installed on the system, GRAMPS will have additional functionality. The GRAMPS project recommends version 2.8 or higher of GTK.<br />
<br />
===Does GRAMPS work on Windows?===<br />
<br />
Yes, many people use it on Windows. Probably the easiest thing<br />
is to [[Download]] the [[Gramps Software Bundle for Windows|GrampsAIO]] software "bundle" for Windows,<br />
as that is an all-in-one package of GRAMPS with the other programs it needs, and so<br />
may be installed very trivially.<br />
<br />
We will do our best to solve Windows-related problems. See [[Contact|here]].<br />
<br />
See [[GRAMPS and Windows]] for a summary of hints to use GRAMPS on a Windows PC.<br />
<br />
Also, the [[Linux Genealogy CD]] can function as a live CD that you boot directly from. You can then run Linux and GRAMPS off the CD, even if your computer is entirely Windows.<br />
<br />
A [[Windows installer]] is available, for the technically sophisticated.<br />
<br />
===Does GRAMPS work on the Mac?===<br />
<br />
Yes, Mac is a supported platform for GRAMPS.<br />
<br />
===What are the Minimum Specs to run GRAMPS?===<br />
<br />
We would recommend at least an 800x600 video display. For GRAMPS 3.3, the memory requirements have been reduced, and GRAMPS can run quite efficiently on a 256MB system, holding considerably more people. A system with 512MB should be able to hold around 200,000 people. Disk space requirements for databases are however considerably larger, with a typical database being several megabytes in size. For 120.000 people you must consider already 530Mb for the database. Pictures are stored on disk separately, so a large harddisk is necessary.<br />
<br />
===How do I upgrade GRAMPS?===<br />
<br />
GNU/Linux operating systems will typically deal with upgrade issues for you. If they do not then you need to ask users of your prefered GNU/Linux distribution.<br />
<br />
The Windows port of GRAMPS needs to be updated manually.<br />
<br />
(incomplete answer)<br />
<br />
==Preferences==<br />
<br />
===Can I change the dates in reports to 'day month year'?===<br />
<br />
Yes, change in the preferences ("Edit->Preferences") the date for GRAMPS to the required format (eg YYYY-MM-DD or day month year), and make the report. Your global date preferences will be used.<br />
<br />
==Collaboration-Portability==<br />
<br />
===Is GRAMPS compatible with other genealogical software?===<br />
<br />
GRAMPS makes every effort to maintain compatibility with [[GEDCOM]], the general standard of recording genealogical information. We have import and export filters that enable GRAMPS to read and write GEDCOM files.<br />
<br />
It is important to understand that the GEDCOM standard is poorly implemented -- virtually every genealogical software has its own "flavor" of GEDCOM. As we learn about new flavor, the import/export filters can be created very quickly. However, finding out about the unknown flavors requires [[Contact|user feedback]]. Please feel free to inform us about any GEDCOM flavor not supported by GRAMPS, and we will do our best to support it!<br />
<br />
===Can GRAMPS read files created by other genealogy programs? ===<br />
<br />
See above.<br />
<br />
===Can GRAMPS write files readable by other genealogy programs? ===<br />
See above.<br />
<br />
===What standards does GRAMPS support?===<br />
<br />
The nice thing about standards is that there never is a shortage of them. GRAMPS is tested to support the following flavors of GEDCOM: GEDCOM5.5, Brother's Keeper, Family Origins, Family Tree Maker, Ftree, GeneWeb, Legacy, Personal Ancestral File, Pro-Gen, Reunion, and Visual Genealogie.<br />
<br />
===How do I import data from another genealogy program into GRAMPS?===<br />
<br />
The best way is to create a new family tree, and select the import option in the file menu. Here you select the GEDCOM you generated with the other program, and import it. <br />
<br />
===Can I install GRAMPS on a Linux Web Server and use it via a web browser? ===<br />
<br />
This would enable my relations worldwide to access and update it.<br />
While GRAMPS can generate web sites, it does not provide a web interface that allows for editing. If this is a requirement, then [http://geneweb.org GeneWeb] or [http://phpgedview.sourceforge.net PhpGedView] are programs more likely to meet your needs. Also have a look at experimental [[GEPS_013:_GRAMPS_Webapp|gramps-connect]]. However, you may wish to ask yourself the following questions:<br />
# Do I really want relatives or other people to directly edit my genealogy database?<br />
# Do I implicitly trust, without verification, any data that people may enter?<br />
# Do these people have the same understanding of good genealogy practice that I have?<br />
A better approach may be to provide a web form interface that allows others to enter data that is then held for your examination. You can then decide if the information should be entered into your database.<br />
<br />
You may also want to consider the effects of possible downtime of your site if you cannot afford yourself a premium webhosting service.<br />
<br />
==Reports==<br />
<br />
===Can GRAMPS print a genealogical tree for my family?===<br />
<br />
Yes. Different people have different ideas of what a genealogical tree is. Some think of it as a chart going from the distant ancestor and listing all his/her descendants and their families. Others think it should be a chart going from the person back in time, listing the ancestors and their families. Yet other people think of a table, text report, etc.<br />
<br />
GRAMPS can produce any of the above, and many more different charts and reports. Moreover, the plugin architecture enables users (you) to create their own plugins which could be new reports, charts, or research tools.<br />
<br />
===In what formats can GRAMPS output its reports?===<br />
<br />
Text reports are available in HTML, PDF, ODT, LaTeX, and RTF formats. Graphical reports (charts and diagrams) are available in PostScript, PDF, SVG, ODS, and GraphViz formats.<br />
<br />
===How can I change the default language in reports?===<br />
<br />
The reports are in the language of your linux installation. You can change it by installing extra language packs, see [[Howto: Change the language of reports]]<br />
<br />
===Is GRAMPS compatible with the Internet? ===<br />
<br />
GRAMPS can store web addresses and direct your browser to them. It can import data that you download from the Internet. It can export data that you could send over the Internet. GRAMPS is familiar with the standard file formats widely used on the Internet (e.g. JPEG, PNG, and GIF images, MP3, OGG, and WAV sound files, QuickTime, MPEG, and AVI movie files, etc). Other than that, there is little that a genealogical program can do with the Internet.<br />
<br />
===Can I create custom reports/filters/whatever?===<br />
Yes. There are many levels of customization. One is creating or modifying the templates used for the reports. This gives you some control over the fonts, colors, and some layout of the reports. You can also use GRAMPS controls in the report dialogs to tell what contents should be used for a particular report. In addition to this, you have an ability to create your own filters -- this is useful in selecting people based on criteria set by you. You can combine these filters to create new, more complex filters. Finally, you have an option to create your own plugins. These may be new reports, research tools, import/export filters, etc. This assumes some knowledge of programming in Python.<br />
<br />
===Why are non-Latin characters displayed as garbage in PDF/PS reports? ===<br />
<br />
This is a limitation of the built-in fonts of PS and PDF formats. To print non-Latin text, use the Print... in the format selection menu of the report dialog. This will use the <code>gnome-print</code> backend, which supports PS and PDF creation, as well as direct printing. (Note: you might need to install gnome-print separately as it is not required for GRAMPS).<br />
<br />
If you only have Latin text, the PDF option will produce a smaller PDF compared to that created by gnome-print, simply because no font information will be embedded.<br />
<br />
===I would like to contribute to GRAMPS by writing my favorite report. How do I do that? ===<br />
<br />
The easiest way to contribute to reports, filters, tools, etc. is to copy an existing GRAMPS report, filter, or tool. If you can create what you want by modifying existing code -- great! If your idea does not fit into the logic of any existing GRAMPS tool, you will need to write your own plugin from scratch. Help is available on the [[Portal:Developers|Developers Portal]], or on the [[Contact|Developers mailing list]]: gramps-devel@lists.sourceforge.net.<br />
<br />
To test your work in progress, you may save your plugin under $HOME/.gramps/plugins directory and it should be found and imported on startup. The correctly written plugin will register itself with GRAMPS, create menu item, and so on.<br />
<br />
If you are happy with your plugin and would like to contribute your code back to the GRAMPS project, you are very welcome to do so by contacting us at gramps-devel@lists.sourceforge.net<br />
<br />
==Database - GRAMPS file formats==<br />
<br />
===What is the maximum database size (bytes) GRAMPS can handle?===<br />
<br />
GRAMPS has no hard limits on the size of a database that it can handle. Starting with 2.0.0 release, GRAMPS no longer loads all data into memory, which allows it to work with a much larger database than before. In reality, however, there are practical limits. The main limiting factors are the available memory on the system and the cache size used for BSDDB database access. With common memory sizes these days, GRAMPS should have no problem using databases with [[GRAMPS Performance|tens of thousands of people]].<br />
<br />
===How many people can GRAMPS database handle? ===<br />
<br />
See above. Again, this is dependent on how much memory you have, see [[GRAMPS Performance]].<br />
<br />
===My database is really big. Is there a way around loading all the data into memory?===<br />
<br />
Starting with 2.0.0 release, GRAMPS no longer loads all data into memory, which allows it to work with a much larger database than before. The fileformat used is <code>.grdb</code> which means gramps database.<br />
<br />
===Can I run GRAMPS from a database on a NFS share?===<br />
<br />
Yes you can.<br />
<br />
===What does "portable" mean?===<br />
<br />
A GRAMPS 3 database (and any .grdb file) is very dependent on the software versions that created it. For example, you can't just move your GRAMPS data in these formats to a different operating system (or even a different version of an operating system) and expect that you will be able to read your data. The data is not "portable". Therefore, you can't just rely on backups of these formats, but you should also occasionally export into a format that is portable. There are two possible portable formats: GEDCOM and GRAMPS XML (.gramps or .gpkg). But only GRAMPS XML is recommended, as it faithfully saves all of your data.<br />
<br />
===Why is the database format (GRDB) not portable?===<br />
<br />
The biggest issue with GRAMPS portability lies with 'transactions'. With<br />
GRAMPS 2.2, we added support for atomic transactions to protect data.<br />
With atomic transactions, multiple changes are committed as a single<br />
unit. Either all the changes make it, or none of the changes make it.<br />
You are never left in a situation with a partial set of changes. A side<br />
benefit of using transactions is that database access (reads and writes)<br />
are faster.<br />
<br />
The problem with transactions (at least using BSDDB) is that it does not<br />
allow all the data to be stored in a single file. Logging files are<br />
needed to keep track of things. These logging files are kept in a DB<br />
Environment directory. We need a separate directory for each file,<br />
otherwise the log files can interfere with each other.<br />
<br />
In 2.2, we keep the log files under the ~/.gramps/<path> directory,<br />
creating a unique directory for each database. The problem is that your<br />
GRDB file needs the log files, which are in a different directory.<br />
Copying the GRDB file is only copying a portion of the database.<br />
<br />
==Bugs and requests==<br />
<br />
===What do I do if I have found a bug?===<br />
<br />
The best thing you can do is to fix the bug and send the patch to gramps-devel@lists.sourceforge.net :-)<br />
<br />
If that is not possible, you should [[How to report bugs|submit a bug report]]<br />
<br />
A good bug report would include:<br />
# Version of gramps you were using when you encountered the bug (available through Help → About menu item).<br />
# Language under which gramps was run (available by executing <code> echo $LANG</code> in your terminal).<br />
# Symptoms indicating that this is indeed a bug.<br />
# Any Traceback messages, error messages, warnings, etc, that showed up in your terminal or a in separate traceback window.<br />
<br />
Most problems can be fixed quickly provided there is enough information. To ensure this, please follow up on your bug reports. Then we will have a way of contacting you should we need more information.<br />
<br />
===Requests===<br />
<br />
*GRAMPS should be a .... type of application<br />
<br />
It is obvious that GRAMPS absolutely needs to become a (client-server/web-based/PHP/weblog/Javascript/C++/distributed/KDE/Motif/Tcl/Win32/C#/You-name-it) application. When is this going to happen?<br />
<br />
The surest way to see it happen is to get it done by yourself. Since GRAMPS is free/open source, nobody prevents you from taking all of the code and continuing its development in whatever direction you see fit. In doing so, you may consider giving your new project another name to avoid confusion with the continuing GRAMPS development. If you would like the GRAMPS project to provide advice, expertise, filters, etc., we will gladly cooperate with your new project, to ensure compatibility or import/export options to your new format of a project.<br />
<br />
If, however, you would like the GRAMPS project to adopt your strategy, you would need to convince GRAMPS developers that your strategy is good for GRAMPS and superior to the present development strategy.<br />
<br />
==GRAMPS Webhosting ==<br />
<br />
===How can I publish web sites generated by GRAMPS?===<br />
<br />
Since GRAMPS generates HTML pages, you can upload the pages to your personal web site. If you do not have a personal web site, and still wish to have your pages available on the internet, the GRAMPS project can provide space for you at the http://library.gramps-project.org, see [[GRAMPS:Webhosting|the webhosting article]].<br />
<br />
===How do I submit my pages to the GRAMPS library site (http://library.gramps-project.org)?===<br />
<br />
If you wish to submit pages to the GRAMPS library site, you will need to contact the GRAMPS project, typically by sending a message to the gramps-users mailing list. You will then be given a username and password that will allow you to upload your files to the site. After you upload the files (in a gzip'ed tar file), the GRAMPS project will install the pages for you on the site.<br />
<br />
===After I upload my Family Web Page to library.gramps-project.org, is the password used for write privileges only or read privileges?===<br />
<br />
In order to prevent abuse of the library.gramps-project.org site, the password given allows uploads only. If you wish to have a username and password combination to restrict read access to your pages, you will need to contact the GRAMPS project, and we could set this up for you. However, the read and write accounts will be separate accounts.<br />
<br />
===Do I view the Family Web Page with a url into my browser?===<br />
<br />
Or through a link on a list of Family Web Pages on the GRAMPS-Project.org site?<br />
The main page on the library.gramps-project.org site will contain an index of the available family sites. However, there will be a unique URL for each site as well.<br />
<br />
==Adding to and editing my database==<br />
<br />
===What is the difference between a residence and an address?===<br />
<br />
A residence is a place where someone lived for a period of time. An address is the name of a residence formatted in the way expected by the postal system. Therefore each residence can also have an address if that is useful.<br />
<br />
===How do I change the order of children?===<br />
<br />
Children can be moved in the [[Gramps_3.3_Wiki_Manual_-_Main_Window#Relationships_View| Family Editor]] by dragging and dropping or using the up and down buttons.<br />
<br />
===How do I change the order of spouses?===<br />
<br />
Spouses can be reordered from the [[Gramps_3.3_Wiki_Manual_-_Main_Window#Relationships_View |Relationship View]] by selecting the 'Reorder' button in the toolbar.<br />
<br />
{{man index|Gramps 3.3 Wiki Manual - Filters|Gramps 3.3 Wiki Manual - Keybindings|3.3}}<br />
<br />
[[Category:Documentation]]<br />
<br />
{{languages|Gramps_3.3_Wiki_Manual_-_FAQ}}</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Download&diff=29725Download2011-08-05T18:41:50Z<p>PaulFranklin: </p>
<hr />
<div>{{languages}}<br />
===The latest released version===<br />
* Version '''GRAMPS''' {{version}} was released. All releases of GRAMPS are available from [https://sourceforge.net/projects/gramps/files/ the download page on SourceForge].<br />
<br />
Visit the following page for instructions on:<br />
* [[Installation]]<br />
* [[Installation#Upgrading_GRAMPS|Upgrading]]<br />
* [[3.2 Addons|Addons]] - third-party plugins<br />
<br />
===Officially supported===<br />
* Only the Linux platform is officially supported as [[Portal:Developers|GRAMPS developers]] use and test the '''source code''' on that platform, fixing any problems that arise due to upgrades.<br />
<br />
{| {{Prettytable}}<br />
! Platform<br />
! GRAMPS<br>Release<br />
! Download<br />
! Note<br />
|-<br />
|<!-- Platform -->Linux<br />
|<!-- GRAMPS<br>Release -->Assorted<br />
|<!-- Download -->[[Installation#Installing_GRAMPS_from_source_code|Installation from source]]<br />
|<!-- Note -->Building of GRAMPS from source required<br />
|}<br />
<br />
===Community supported===<br />
*A platform is community supported when users have created an installable version for that platform. Full functionality of GRAMPS is not guaranteed and some components may be disabled. Developers are dependent on the community to fix any issues that arise. The GRAMPS developers aim to have GRAMPS working on all platforms, but have no resources to do specific testing to assure this is the case on release of a new version.<br />
<br />
{| {{Prettytable}}<br />
! Platform<br />
! GRAMPS<br>Release<br />
! Download<br />
! Note<br />
|-<br />
|<!-- Platform -->Windows<br />
|<!-- GRAMPS<br>Release -->{{version_windows_AIO32}}<br>(All In One)<br>[[Gramps_3.3_Wiki_Manual_-_Manage_Family_Trees#Backing_up_a_Family_Tree|Needs backup]]<br />
|<!-- Download -->[http://sourceforge.net/projects/gramps/files/Stable/3.3.0/ GrampsAIO-{{version_windows_AIO32}}-2.exe]<br>(41.3 MB)<br />
|<!-- Note --> [[Gramps Software Bundle for Windows |All In One GRAMPS]] includes all dependencies required for Windows<br>By Josip - '''Please report issues to the author.''' (2011-06-21)<br />
|-<br />
|<!-- Platform -->Windows<br />
|<!-- GRAMPS<br>Release -->{{version_windowsOS}}<br />
|<!-- Download -->[http://sourceforge.net/projects/gramps/files/Stable/{{version_windowsOS}} gramps-{{version_windowsOS}}-1.exe] (8.2 MB)<br />
|<!-- Note -->[[Windows_installer#Installation|Download and install Windows dependencies first]]<br />
|-<br />
|<!-- Platform -->Windows<br />
|<!-- GRAMPS<br>Release -->{{version_windows_portable}}<br>[[Gramps_3.2_Wiki_Manual_-_Manage_Family_Trees#Backing_up_a_Family_Tree|Needs backup]]<br />
|<!-- Download -->[http://sourceforge.net/projects/portableapps/files/Gramps%20Portable/ GrampsPortable_{{version_windows_portable}}.paf.exe]<br>(17.4 MB)<br />
|<!-- Note -->[http://portableapps.com/apps/education/gramps_portable Portable GRAMPS from PortableApps.com] includes all dependencies required for Windows.<br>''Note:You can install it on C: then to run Gramps type C:\PortableApps\GrampsPortable\GrampsPortable.exe (Or the path you installed it to) or make a shortcut to that file on your desktop or start-menu.''<br>By Bart.S - '''Please report issues to the author.''' (2011-05-17)<br />
|-<br />
|<!-- Platform -->Windows<br>(64 Bit)<br />
|<!-- GRAMPS<br>Release -->{{version_windows_AIO64}}<br>(All In One)<br>[[Gramps_3.2_Wiki_Manual_-_Manage_Family_Trees#Backing_up_a_Family_Tree|Needs backup]]<br />
|<!-- Download -->[http://rapidshare.com/users/K65PY0/ GrampsAIO64-{{version_windows_AIO64}}-1.exe]<br>(42.5 MB)<br />
|<!-- Note --> [[Gramps Software Bundle for Windows |All In One GRAMPS]] includes all dependencies required for Windows<br>''Only for installation on 64 bit windows. If you have installed the 32bit version uninstall first then install this version''<br>[http://gramps.1791082.n4.nabble.com/GrampsAIO-64bit-td3167217.html 64bit version Under Development] By Josip - '''Please report issues to the author.''' (2011-06-05)<br />
|-<br />
|<!-- Platform --><br />
|<!-- GRAMPS<br>Release --><br />
|<!-- Download --><br />
|<!-- Note --><br />
|-<br />
|<!-- Platform -->Linux<br />
|<!-- GRAMPS<br>Release -->{{version}}<br />
|<!-- Download -->[[Installation#Automatic_download_and_install_of_GRAMPS|Automatic installation]]<br />
|<!-- Note -->Depends on version of Linux used<br />
|-<br />
|<!-- Platform -->Linux<br />
|<!-- GRAMPS<br>Release -->{{version}}<br />
|<!-- Download -->[[Installation#Manual_download_and_install_of_GRAMPS|Manual installation]]<br />
|<!-- Note -->Depends on version of Linux used<br />
|-<br />
|<!-- Platform --><br />
|<!-- GRAMPS<br>Release --><br />
|<!-- Download --><br />
|<!-- Note --><br />
|-<br />
|<!-- Platform -->Linux Live CD<br />
|<!-- GRAMPS<br>Release -->3.2.5<br />
|<!-- Download -->[[Linux_Genealogy_CD#Obtaining_the_CD|ubuntu10.10 lgenealogy-6.1-desktop-i386.iso]]<br>(727 MB)<br />
|<!-- Note -->[[Linux Genealogy CD|Linux Genealogy CD based on Ubuntu 10.10 (Maverick Meerkat)]]<br />
|-<br />
|<!-- Platform --><br />
|<!-- GRAMPS<br>Release --><br />
|<!-- Download --><br />
|<!-- Note --><br />
|-<br />
|<!-- Platform -->BSD<br />
|<!-- GRAMPS<br>Release -->{{version_BSD}}<br />
|<!-- Download -->[http://portsmon.freebsd.org/portoverview.py?category=science&portname=gramps FreeBSD port]<br />
|<!-- Note -->[[BSD page|BSD information]]<br />
|-<br />
|<!-- Platform --><br />
|<!-- GRAMPS<br>Release --><br />
|<!-- Download --><br />
|<!-- Note --><br />
|-<br />
|<!-- Platform -->Solaris<br />
|<!-- GRAMPS<br>Release -->3.0.1<br />
|<!-- Download -->[[Solaris page|Solaris platforms]]<br />
|<!-- Note -->Building of GRAMPS from source required<br />
|-<br />
|<!-- Platform --><br />
|<!-- GRAMPS<br>Release --><br />
|<!-- Download --><br />
|<!-- Note --><br />
|-<br />
|<!-- Platform --> Mac OS X<br />
|<!-- GRAMPS<br>Release -->{{version_MacPort}}<br />
|<!-- Download -->[[Mac OS X MacPorts]]<br />
|<!-- Note -->New and relatively untested (March 2010)<br />
|-<br />
|<!-- Platform -->Mac OS X<br />
|<!-- GRAMPS<br>Release -->{{version_Mac}}<br />
|<!-- Download -->[[Using GRAMPS on Apple Mac]] (37MB)<br />
|<!-- Note -->Was new (in 2010) but is now well-tested<br />
|}<br />
<br />
[[Category:Documentation]]<br />
[[Category:Developers/Installation]]<br />
[[Category:Developers/Packaging]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=All_In_One_Gramps_Software_Bundle_for_Windows&diff=29694All In One Gramps Software Bundle for Windows2011-08-04T17:07:23Z<p>PaulFranklin: </p>
<hr />
<div>{{man warn| This is a work in progress... |Any files listed here may be '''not suitable''' for normal every day use! (My lawyer advised me to say that, but many people are using this and have reported no problems at all.)<br/>Any comments and help (e.g. on wiki pages) are welcome. Josip}}<br />
<br />
The '''Gramps "software bundle" for Windows''' or '''GrampsAIO''' is an all-in-one (a.k.a. "AIO") installation package of Gramps which includes all dependencies for the Windows platform. (See also [[GRAMPS_and_Windows|GRAMPS and Windows]].)<br />
<br />
Not only are all dependencies included ("bundled"), so that users do not have to first manually install each one of them, but they are<br />
installed in such a fashion that Gramps can easily find them.<br />
<br />
(Technical details: The<br />
logic for this bundle is that in Windows the first entry in the search path is the current working directory (the one in which the program is started), so if any Gramps dependency is in that same directory there is thus no need to look for that dependency in a system folder and possibly load an incompatible one -- thus "dependency hell" is avoided. This is also the reason why GrampsAIO must be started from its own folder. Also, in newer Windows versions there may be security restriction with shell scripts so GrampsAIO does not use one.)<br />
<br />
For the technically sophisticated, GrampsAIO is rebuild-able: it contains an install script which can make a new installable program from the installed one.<br />
For example somebody might like to repackage Gramps with their code changes, or favorite addons, or even their own family trees, etc. <br />
<br />
==Installation Folder==<br />
This distribution is directory based, which means it loads all dependencies from the directory in which they have been installed.<br />
<br />
That folder's location depends on whether the person doing the<br />
installation has administrative rights on the Windows machine. If<br />
an administrator installs it the directory may be chosen, with the<br />
default suggestion being %ProgramFiles%\GrampsAIO (for example C:\Program Files\GrampsAIO). If a non-administrator installs it, it will be placed in the user's personal tree, in %APPDATA%\GrampsAIO<br />
(for example C:\Documents and Settings\Jones\Application Data\GrampsAIO).<br />
<br />
So if you want to use it from the console/terminal (dos/cmd.exe prompt) you must first go to the directory where those dependencies were installed (GrampsAIO\bin); for example:<br />
<code><br />
cd C:\GrampsAIO\bin; python -EO ..\share\gramps\gramps.py<br />
</code><br />
(but the installation may have been put somewhere else and so you should probably first search for the GrampsAIO\bin folder to make sure).<br />
<br />
==Why GrampsAIO was made==<br />
* easy installation:<br />
** no searching web for appropriate packages<br />
** one click install<br />
* no dependency hell:<br />
** all libraries work together<br />
** on upgrade of a library all other libraries are rebuilt with that version<br />
<br />
==How GrampsAIO was made==<br />
* put all software Gramps needs in one package:<br />
# all core non-python library and applications<br />
# any optional non-python library and applications<br />
# python bindings for core libraries<br />
# python bindings for optional libraries<br />
* use NSIS (Nullsoft Script-able Install System)<br />
<br />
==Software releases:==<br />
<br />
The preferred way to get the GrampsAIO bundle is<br />
to download it from the official Gramps software<br />
repository. See [[Download#Community supported|Download]]<br />
for the current version and link to it.<br />
<br />
Older versions or developmental versions are available<br />
directly from the GrampsAIO bundle's author. See below.<br />
<br />
===Gramps AIO (32bit)===<br />
<br />
<!-- update last version numbers on[[Template:version_windows_AIO32]]--><br />
<br />
{|align="top" cellspacing="20" width=80%<br />
|+'''[http://rapidshare.com/users/K65PY0 Gramps AIO Releases]'''<br />
!|GrampsAIO<br />
|-<br />
|{{Release/Box-header|AIO 3.2.5-1|'''2010-12-04'''}}<br />
|-<br />
|{{Release/Box-header|AIO 3.2.5-2|'''2010-12-04'''}}<br />
|-<br />
|{{Release/Box-header|AIO 3.2.5-3|'''2010-12-21'''}}<br />
|-<br />
|{{Release/Box-header|AIO 3.2.5-4|'''2011-01-01'''}} <br />
|-<br />
|{{Release/Box-header|AIO 3.2.5-5|'''2011-01-08'''}} <br />
|-<br />
|{{Release/Box-header|AIO 3.2.6-1|'''2011-05-01'''}}<br />
|-<br />
|{{Release/Box-header|AIO 3.3.0|'''2011-06-21''' <br>Includes: Gramps 3.3.0, Python (2.7.2), GTK & PyGTK ... plus GhostScript for reports, GraphViz and goocanvas for graphs, GtkSpell and various dictionaries for spell-checking, osmgpsmap for GeographyView, pyexiv2, convert and jhead for ImageMetadata}} <br />
|}<br />
<br />
===Gramps AIO (64bit)===<br />
<br />
<!-- update last version numbers on [[Template:version_windows_AIO64]] --><br />
<br />
{|align="top" cellspacing="20" width=80%<br />
|+'''[http://rapidshare.com/users/K65PY0 Gramps AIO Releases]'''<br />
!|GrampsAIO64<br />
|-<br />
|{{Release/Box-header|AIO64 3.2.5-1|'''2010-12-29'''}}<br />
|-<br />
|{{Release/Box-header|AIO64 3.2.5-2|'''2010-12-29'''}}<br />
|-<br />
|{{Release/Box-header|AIO64 3.2.5-3|'''2010-12-31'''}}<br />
|-<br />
|{{Release/Box-header|AIO64 3.2.5-4|'''2011-01-06'''}}<br />
|-<br />
|<br />
|-<br />
|{{Release/Box-header|AIO64 3.2.6-1|'''2011-06-05'''}} <br />
|-<br />
|{{Release/Box-header|AIO64 3.3.0_beta-1|'''2011-05-29''' <br>Includes: Gramps 3.3.0, Python (2.7.2), GTK & PyGTK ... plus GhostScript for reports, GraphViz and goocanvas for graphs, GtkSpell and various dictionaries for spell-checking, osmgpsmap for GeographyView, pyexiv2, convert and jhead for ImageMetadata}} <br />
|}<br />
<br />
<br />
[[Category:Developers/Packaging]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Download&diff=29665Download2011-08-03T20:39:56Z<p>PaulFranklin: /* Community supported */</p>
<hr />
<div>{{languages}}<br />
===The latest released version===<br />
* Version '''GRAMPS''' {{version}} was released. All releases of GRAMPS are available from [https://sourceforge.net/projects/gramps/files/ the download page on SourceForge].<br />
<br />
Visit the following page for instructions on:<br />
* [[Installation]]<br />
* [[Installation#Upgrading_GRAMPS|Upgrading]]<br />
* [[3.2 Addons|Addons]] - third-party plugins<br />
<br />
===Officially supported===<br />
* Only the Linux platform is officially supported as [[Portal:Developers|GRAMPS developers]] use and test the '''source code''' on that platform, fixing any problems that arise due to upgrades.<br />
<br />
{| {{Prettytable}}<br />
! Platform<br />
! GRAMPS<br>Release<br />
! Download<br />
! Note<br />
|-<br />
|<!-- Platform -->Linux<br />
|<!-- GRAMPS<br>Release -->Assorted<br />
|<!-- Download -->[[Installation#Installing_GRAMPS_from_source_code|Installation from source]]<br />
|<!-- Note -->Building of GRAMPS from source required<br />
|}<br />
<br />
===Community supported===<br />
*A platform is community supported when users have created an installable version for that platform. Full functionality of GRAMPS is not guaranteed and some components may be disabled. Developers are dependent on the community to fix any issues that arise. The GRAMPS developers aim to have GRAMPS working on all platforms, but have no resources to do specific testing to assure this is the case on release of a new version.<br />
<br />
{| {{Prettytable}}<br />
! Platform<br />
! GRAMPS<br>Release<br />
! Download<br />
! Note<br />
|-<br />
|<!-- Platform -->Windows<br />
|<!-- GRAMPS<br>Release -->{{version_windows_AIO32}}<br>(All In One)<br>[[Gramps_3.3_Wiki_Manual_-_Manage_Family_Trees#Backing_up_a_Family_Tree|Needs backup]]<br />
|<!-- Download -->[http://sourceforge.net/projects/gramps/files/Stable/3.3.0/ GrampsAIO-{{version_windows_AIO32}}-2.exe]<br>(41.3 MB)<br />
|<!-- Note --> [[Gramps Software Bundle for Windows |All In One GRAMPS]] includes all dependencies required for Windows<br>By Josip - '''Please report issues to the author.''' (2011-06-21)<br />
|-<br />
|<!-- Platform -->Windows<br />
|<!-- GRAMPS<br>Release -->{{version_windowsOS}}<br />
|<!-- Download -->[http://sourceforge.net/projects/gramps/files/Stable/{{version_windowsOS}} gramps-{{version_windowsOS}}-1.exe] (8.2 MB)<br />
|<!-- Note -->[[Windows_installer#Installation|Download and install Windows dependencies first]]<br />
|-<br />
|<!-- Platform -->Windows<br />
|<!-- GRAMPS<br>Release -->{{version_windows_portable}}<br>[[Gramps_3.2_Wiki_Manual_-_Manage_Family_Trees#Backing_up_a_Family_Tree|Needs backup]]<br />
|<!-- Download -->[http://sourceforge.net/projects/portableapps/files/Gramps%20Portable/ GrampsPortable_{{version_windows_portable}}.paf.exe]<br>(17.4 MB)<br />
|<!-- Note -->[http://portableapps.com/apps/education/gramps_portable Portable GRAMPS from PortableApps.com] includes all dependencies required for Windows.<br>''Note:You can install it on C: then to run Gramps type C:\PortableApps\GrampsPortable\GrampsPortable.exe (Or the path you installed it to) or make a shortcut to that file on your desktop or start-menu.''<br>By Bart.S - '''Please report issues to the author.''' (2011-05-17)<br />
|-<br />
|<!-- Platform -->Windows<br>(64 Bit)<br />
|<!-- GRAMPS<br>Release -->{{version_windows_AIO64}}<br>(All In One)<br>[[Gramps_3.2_Wiki_Manual_-_Manage_Family_Trees#Backing_up_a_Family_Tree|Needs backup]]<br />
|<!-- Download -->[http://rapidshare.com/users/K65PY0/ GrampsAIO64-{{version_windows_AIO64}}-1.exe]<br>(42.5 MB)<br />
|<!-- Note --> [[Gramps Software Bundle for Windows |All In One GRAMPS]] includes all dependencies required for Windows<br>''Only for installation on 64 bit windows. If you have installed the 32bit version uninstall first then install this version''<br>[http://gramps.1791082.n4.nabble.com/GrampsAIO-64bit-td3167217.html 64bit version Under Development] By Josip - '''Please report issues to the author.''' (2011-06-05)<br />
|-<br />
|<!-- Platform --><br />
|<!-- GRAMPS<br>Release --><br />
|<!-- Download --><br />
|<!-- Note --><br />
|-<br />
|<!-- Platform -->Linux<br />
|<!-- GRAMPS<br>Release -->{{version}}<br />
|<!-- Download -->[[Installation#Automatic_download_and_install_of_GRAMPS|Automatic installation]]<br />
|<!-- Note -->Depends on version of Linux used<br />
|-<br />
|<!-- Platform -->Linux<br />
|<!-- GRAMPS<br>Release -->{{version}}<br />
|<!-- Download -->[[Installation#Manual_download_and_install_of_GRAMPS|Manual installation]]<br />
|<!-- Note -->Depends on version of Linux used<br />
|-<br />
|<!-- Platform --><br />
|<!-- GRAMPS<br>Release --><br />
|<!-- Download --><br />
|<!-- Note --><br />
|-<br />
|<!-- Platform -->Linux Live CD<br />
|<!-- GRAMPS<br>Release -->3.2.5<br />
|<!-- Download -->[[Linux_Genealogy_CD#Obtaining_the_CD|ubuntu10.10 lgenealogy-6.1-desktop-i386.iso]]<br>(727 MB)<br />
|<!-- Note -->[[Linux Genealogy CD|Linux Genealogy CD based on Ubuntu 10.10 (Maverick Meerkat)]]<br />
|-<br />
|<!-- Platform --><br />
|<!-- GRAMPS<br>Release --><br />
|<!-- Download --><br />
|<!-- Note --><br />
|-<br />
|<!-- Platform -->BSD<br />
|<!-- GRAMPS<br>Release -->{{version_BSD}}<br />
|<!-- Download -->[http://portsmon.freebsd.org/portoverview.py?category=science&portname=gramps FreeBSD port]<br />
|<!-- Note -->[[BSD page|BSD information]]<br />
|-<br />
|<!-- Platform --><br />
|<!-- GRAMPS<br>Release --><br />
|<!-- Download --><br />
|<!-- Note --><br />
|-<br />
|<!-- Platform -->Solaris<br />
|<!-- GRAMPS<br>Release -->3.0.1<br />
|<!-- Download -->[[Solaris page|Solaris platforms]]<br />
|<!-- Note -->Building of GRAMPS from source required<br />
|-<br />
|<!-- Platform --><br />
|<!-- GRAMPS<br>Release --><br />
|<!-- Download --><br />
|<!-- Note --><br />
|-<br />
|<!-- Platform --> Mac OS X<br />
|<!-- GRAMPS<br>Release -->{{version_MacPort}}<br />
|<!-- Download -->[[Mac OS X MacPorts]]<br />
|<!-- Note -->New and relatively untested (March 2010)<br />
|-<br />
|<!-- Platform -->Mac OS X<br />
|<!-- GRAMPS<br>Release -->{{version_Mac}}<br />
|<!-- Download -->[[Using GRAMPS on Apple Mac]] (37MB)<br />
|<!-- Note -->New and relatively untested (October 2010).<br />
|}<br />
<br />
[[Category:Documentation]]<br />
[[Category:Developers/Installation]]<br />
[[Category:Developers/Packaging]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Gramps_and_Windows&diff=29664Gramps and Windows2011-08-03T20:11:04Z<p>PaulFranklin: </p>
<hr />
<div>{{languages}}<br />
<br />
{{man warn|Attention:|This page is somewhat old. It would benefit from some updating. <br> If you are a Windows user of GRAMPS please edit it or enhance it. Thanks!}}<br />
<br />
GRAMPS version 3.0.x and higher runs well on a Windows PC.<br />
<br />
{{man warn|Attention:|Before trying something, make a backup of your data. All the following details are for information purposes only. <br> Nobody guarantees anything at all!}}<br />
<br />
==Installation==<br />
The original<br />
instructions for installation on Windows are given [[Windows installer|here]], but they were written when a Windows user also had to (manually) install various other programs ("dependencies") in order to get GRAMPS to work. A more-modern way (and a much easier way) to install GRAMPS on Windows is to use the "all-in-one" [[Gramps_Software_Bundle_for_Windows|installer]], since it has all the needed programs ("bundled").<br />
<br />
Many of the comments on this wiki page were written for that first/original installation method, when many things had to be manually done or configured. Here are two examples of that (which may be safely ignored if you have used the all-in-one ([[Gramps_Software_Bundle_for_Windows|GrampsAIO]]) method.<br />
<br />
To enable the use of the graphical reports and use PDF export see [[Windows installer#Additional plugins |"Additional plugins"]]<br />
<br />
The graphics reports of GRAMPS are available only if you also set the right path in your environment.<br />
The related lines of a .CMD or .BAT file may look like this (based on the default installation of Graphviz 2.26):<br />
<br />
@rem for the graphics reports<br />
set path=%PATH%;C:\Programme\Graphviz 2.26\bin;<br />
<br />
==Problems and Help==<br />
For known problems or problem reports go to the [http://www.gramps-project.org/bugs/main_page.php Gramps Bugtracker]. <br />
For discussions about GRAMPS on Windows visit the <br />
gramps-users mailing list (or gramps-devel if you are a developer).<br />
<br />
(In the distant past GRAMPS on Windows used to be less supported and had a separate gramps-windows mailing list, but by May 2011 <br />
it had enough active developers that the decision was made to use the regular mailing lists instead. So an<br />
[http://gramps.1791082.n4.nabble.com/GRAMPS-Windows-f1806612.html archive] of that mailing list exists but current problems or comments should be on the regular users or developers lists.)<br />
<br />
==Environmental Variables==<br />
Here is another comment written for that first/original installation method, when many things had to be manually done or configured (which again may be safely ignored if you have used the all-in-one ([[Gramps_Software_Bundle_for_Windows|GrampsAIO]]) method.<br />
<br />
GRAMPS looks during the start-up-phase for some environment variables to control several features. It's better to use a ".CMD" or ".BAT" file to control this environment variable instead of a permanent setting in the windows registry, to have the possibility to go back to the GRAMPS standard values (especially to go back to the GRAMPS standard language - English) in the case you want to report about a problem or a bug.<br />
<br />
==Setting the working language==<br />
GRAMPS looks during the start-up-phase for an environment variable (called LANG) to switch to a special language. It's better to use a ".CMD" or ".BAT" file to control this environment variable instead a permanent setting in the windows registry, to have the possibility to go back to the GRAMPS standard language (English) in the case you want to report about a problem or a bug.<br />
<br />
One may use a ".CMD" file having this content:<br />
<br />
@rem it's to switch to GERMAN<br />
SET LANG=de_DE.UTF-8<br />
@rem following the discussion of [http://www.gramps-project.org/bugs/view.php?id=2111] there was added the next line<br />
SET LANGUAGE=de_DE.UTF-8<br />
gramps.py<br />
<br />
''Hints:''<br />
You have to place the ".CMD" file into the same folder as the file "gramps.py" or to set your environment variable PATH to include the path to the file "gramps.py". At least in one case there was a problem using a line "phytonw.exe gramps.py" in a ".CMD" file: The usage of the environment and STDIN, SDTOUT and STDERROR does not work properly. May be, there is any where a Phyton-Windows specialist who knows more about this topic or is able to solve the problem.<br />
<br />
For the LANG variable may be used also other values (see rel_xx.py, "register_relcalc(RelationshipCalculator,[...])) having the same effect. You should not use "LANG=de_UTF-8" as suggested before, because this value does not effect all necessary parts of GRAMPS (particularly the relationship translation may not work) only.<br />
<br />
==Setting the configuration path==<br />
<br />
During the boot process of GRAMPS there is a check for an environment variable called GRAMPSHOME. <br />
Without this environment variable GRAMPS uses the default Windows path to handle (at the first time: to place) all configuration files there:<br />
<system drive>\<userpath>\<application data>\gramps<br />
For a German Windows it may look like this (if the system drive is 'C:' and the lock-in user name is 'Paul'):<br />
C:\Dokumente und Einstellungen\Paul\Anwendungsdaten\gramps <br />
For an English Windows the example shoot look like this:<br />
C:\Documents and Settings\Paul\Application Data\gramps<br />
<br />
If the variable GRAMPSHOME is available, than GRAMPS uses the value to look for a directory 'gramps' inside to handle (at the first time: to place) all configuration files there.<br />
So, (together with the build-in setting for the storage place of the database files: Edit --> Preferences --> Database) it's a nice way to have the complete database including all family trees at one global place for backups or for a transfer from one PC to an other.<br />
<br />
But be sure what you are doing! You may loose the link to the GRAMPS databases, if you play with this values without moving or copying related files already written by GRAMPS (e.g. your family trees or your configuration files!). There will be no problem if you change these settings without having any family tree (before editing any thing first time or before importing any file first time). <br />
<br />
Here is an example for the related .CMD file command lines<br />
@rem set the path for GRAMPS configuration files<br />
set GRAMPSHOME=E:\GRAMPS<br />
<br />
==Updating GRAMPS==<br />
You should first read the instructions (and warnings) in [[Installation#Upgrading GRAMPS|Upgrading GRAMPS]], as they are true for all platforms (including Windows).<br />
<br />
The following comment is another which was written for that first/original installation method, when many things had to be manually done or configured. It perhaps may be safely ignored if you have used the all-in-one ([[Gramps_Software_Bundle_for_Windows|GrampsAIO]]) method,<br />
since probably just installing the latest all-in-one version <br />
on top of the old one<br />
will work.<br />
<br />
Windows users will need to check the version of all dependencies for each version update. The [[Windows installer]] page lists the versions you will need. If you have trouble seeing which version you have, just install the recommended version to be sure.<br />
<br />
Don't forget to adjust the environment path for Graphviz (see section "Installation"), because the default path for the binaries of this tool changes by every new version.<br />
<br />
Since Version 3.0.4 there is available an installer providing also the possibility to update an existing GRAMPS version.<br />
<br />
==Building from source==<br />
See the documentation for more information to get the newest Python files ([[Installation]], see chapter 'Obtaining the source'). As usual in this community the update includes only the GRAMPS part of the software. But if one did run first all steps of the installation there should be no problems using the update.<br />
<br />
At least up to version 3.0.2 you have also to compile and replace your language file.<br />
You have to compile a new .mo file based on the .po file using a POcompiler:<br />
#Get your special .po file from the upgrade package (e.g. de.po for German) from the folder called "po"<br />
#Get the tools from http://translate.sourceforge.net [http://sourceforge.net] (e.g. Translate-Toolkit-1.2.0-setup.exe as a complete setup for MS Windows; but may be, there is a later version).<br />
#Use the compiler (e.g.: C:\Programme\translate-toolkit\pocompile.exe de.po gramps.mo)<br />
#Replace the old gramps.mo by the new one. It should be placed in "...\lang\de\LC_MESSAGES" (e.g. C:\Programme\gramps_prog)<br />
<br />
==Opening media files==<br />
===From GRAMPS version 3.1.x:===<br />
To open any media file GRAMPS uses the default application as defined for each file type inside MS Windows.<br />
<br />
===GRAMPS version 3.0.4 and earlier===<br />
<br />
GRAMPS has some predefined MIME types for some file types (e.g. ".JPG", ".BMP" or ".PDF") and uses the MIME definitions of your Windows System, to select the external application accessing the media file. This is not the usual way of the Windows Explorer where only the file's extension defines the default application for the file (the method is usual called File Associations)! <br />
<br />
If GRAMPS knows the MIME type of a special file this MIME type will be shown in the column "Type" of the table "Media". But it may be, that this MIME type is an unknown or incomplete MIME type of your system. In this case one has to define the correct MIME type. It’s possible but really not easy. So, a better way would be, to find an application where the MIME definition for file type of your choice will be defined as a MIME type or to focus onto the build-in file types of GRAMPS.<br />
<br />
There is a general limitation for GRAMPS using MIME definitions: GRAMPS is not able to handle MIME definitions where the command "OPEN" is defined by using the method DDE. Because e.g. PaintShopPro in version 6.0.0 is using DDE, it works not as image viewer for GRAMPS.<br />
<br />
Note: Up to release 3.0.1 for file and folder names standard ASCII letters are allowed only (e.g. no 'Ü', 'Ä', .... on a German Windows)! This issue is fixed in the 3.0.2 release (see [http://www.gramps-project.org/bugs/view.php?id=2246])<br />
<br />
==Archiving==<br />
The new possibilities for archiving versions of a GRAMPS database are available since GRAMPS version 3.0.2 but lost it's support in GRAMPS 3.1.x (see http://www.gramps-project.org/bugs/view.php?id=3124) <br />
There are some special hints to use the functionality:<br />
# Get RCS for Windows from the internet: [http://www.cs.purdue.edu/homes/trinkle/RCS/]<br />
# Build the correct Windows Environment:<br />
## GRAMPS needs to find the executables of RCS. That's why one should add the path to these files to the environment variable PATH. It's better only to change temporary the PATH variable by using a ".CMD" or ".BAT" file. And it's also better to place the "RCS-path" at the beginning of the value of the variable PATH. This is because other programs could use executable files having equal names as RCS executables. Known is CVS for Windows which uses it's own version of rlog.exe.<br />
## RCS needs an environment variable (called TZ) for your time zone, e.g.: "TZ=CET-1" for Central European Time less one hour (that’s for instance for MUNICH).<br />
<br />
So the complete “.CMD” may look like this:<br />
<code><br />
@rem for the graphics reports<br />
set path=%PATH%;C:\Programme\Graphviz 2.26\bin;<br />
@rem it's to switch to GERMAN<br />
SET LANG=de_DE.UTF8<br />
@rem following the discussion of [http://bugs.gramps-project.org/view.php?id=2111] there was added the next line<br />
SET LANGUAGE=de_DE.UTF8<br />
<br />
@rem RCS environment start<br />
@rem the time zone for RCS<br />
SET TZ=CET-1<br />
@rem set the path to RCS bin files for Windows<br />
SET PATH=C:\Programme\rcs\bin\win32;%PATH%<br />
@rem RCS environment end<br />
<br />
@rem set the path for GRAMPS configuration files<br />
set GRAMPSHOME=E:\GRAMPS<br />
<br />
@rem The following -O option prevent the developer mode for GRAMPS.<br />
@rem This mode provides additional non-translated menu entries <br />
@rem to be used for developer only.<br />
python -O gramps.py<br />
</code><br />
<br />
[[Category:Documentation]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=All_In_One_Gramps_Software_Bundle_for_Windows&diff=29663All In One Gramps Software Bundle for Windows2011-08-03T19:11:38Z<p>PaulFranklin: </p>
<hr />
<div>{{man warn| This is a work in progress... |Any files listed here may be '''not suitable''' for normal every day use! (My lawyer advised me to say that, but many people are using this and have reported no problems at all.)<br/>Any comments and help (e.g. on wiki pages) are welcome. Josip}}<br />
<br />
The Gramps "software bundle" is an all-in-one (a.k.a. "AIO") installation package of Gramps which includes all dependencies for the Windows platform. (See also [[GRAMPS_and_Windows|GRAMPS and Windows]].)<br />
<br />
Not only are all dependencies included ("bundled"), so that users do not have to first manually install each one of them, but they are<br />
installed in such a fashion that Gramps can easily find them.<br />
<br />
(Technical details: The<br />
logic for this bundle is that in Windows the first entry in the search path is the current working directory (the one in which the program is started), so if any Gramps dependency is in that same directory there is thus no need to look for that dependency in a system folder and possibly load an incompatible one -- thus "dependency hell" is avoided. This is also the reason why GrampsAIO must be started from its own folder. Also,<br />
in newer Windows versions there my be security restriction with shell scripts so GrampsAIO does not use one.)<br />
<br />
For the technically sophisticated, GrampsAIO is rebuild-able: it contains an install script which can make a new installable program from the installed one.<br />
For example somebody might like to repackage Gramps with their code changes, or favorite addons, or even their own family trees, etc. <br />
<br />
This distribution is directory based, which means it loads all dependencies from the directory in which they have been installed. So if you want to use it from console/terminal (dos/cmd.exe prompt) you must first go to their directory (GrampsAIO\bin); for example: cd C:\GrampsAIO\bin; python -EO ..\share\gramps\gramps.py -- but the installation may have been put somewhere else and so you should probably first search for the GrampsAIO\bin folder to make sure.<br />
<br />
==Why:==<br />
* easy installation:<br />
** no searching web for appropriate packages<br />
** one click install<br />
* no dependency hell:<br />
** all libraries can work one together<br />
** on upgrade version of library rebuild all others with that version<br />
<br />
==How:==<br />
* put all software Gramps needs in one package:<br />
# all core non-python library and applications<br />
# any optional non-python library and applications<br />
# python bindings for core libraries<br />
# python bindings for optional libraries<br />
* use NSIS (Nullsoft Script-able Install System)<br />
<br />
==Software releases:==<br />
<br />
The preferred way to get the GrampsAIO bundle is<br />
to download it from the official Gramps software<br />
repository. See [[Download#Community supported|Download]]<br />
for the current version and link to it.<br />
<br />
Older versions or developmental versions are available<br />
directly from the GrampsAIO bundle's author. See below.<br />
<br />
===Gramps AIO (32bit)===<br />
<br />
<!-- update last version numbers on[[Template:version_windows_AIO32]]--><br />
<br />
{|align="top" cellspacing="20" width=80%<br />
|+'''[http://rapidshare.com/users/K65PY0 Gramps AIO Releases]'''<br />
!|GrampsAIO<br />
|-<br />
|{{Release/Box-header|AIO 3.2.5-1|'''2010-12-04'''}}<br />
|-<br />
|{{Release/Box-header|AIO 3.2.5-2|'''2010-12-04'''}}<br />
|-<br />
|{{Release/Box-header|AIO 3.2.5-3|'''2010-12-21'''}}<br />
|-<br />
|{{Release/Box-header|AIO 3.2.5-4|'''2011-01-01'''}} <br />
|-<br />
|{{Release/Box-header|AIO 3.2.5-5|'''2011-01-08'''}} <br />
|-<br />
|{{Release/Box-header|AIO 3.2.6-1|'''2011-05-01'''}}<br />
|-<br />
|{{Release/Box-header|AIO 3.3.0|'''2011-06-21''' <br>Includes: Gramps 3.3.0, Python (2.7.2), GTK & PyGTK ... plus GhostScript for reports, GraphViz and goocanvas for graphs, GtkSpell and various dictionaries for spell-checking, osmgpsmap for GeographyView, pyexiv2, convert and jhead for ImageMetadata}} <br />
|}<br />
<br />
===Gramps AIO (64bit)===<br />
<br />
<!-- update last version numbers on [[Template:version_windows_AIO64]] --><br />
<br />
{|align="top" cellspacing="20" width=80%<br />
|+'''[http://rapidshare.com/users/K65PY0 Gramps AIO Releases]'''<br />
!|GrampsAIO64<br />
|-<br />
|{{Release/Box-header|AIO64 3.2.5-1|'''2010-12-29'''}}<br />
|-<br />
|{{Release/Box-header|AIO64 3.2.5-2|'''2010-12-29'''}}<br />
|-<br />
|{{Release/Box-header|AIO64 3.2.5-3|'''2010-12-31'''}}<br />
|-<br />
|{{Release/Box-header|AIO64 3.2.5-4|'''2011-01-06'''}}<br />
|-<br />
|<br />
|-<br />
|{{Release/Box-header|AIO64 3.2.6-1|'''2011-06-05'''}} <br />
|-<br />
|{{Release/Box-header|AIO64 3.3.0_beta-1|'''2011-05-29''' <br>Includes: Gramps 3.3.0, Python (2.7.2), GTK & PyGTK ... plus GhostScript for reports, GraphViz and goocanvas for graphs, GtkSpell and various dictionaries for spell-checking, osmgpsmap for GeographyView, pyexiv2, convert and jhead for ImageMetadata}} <br />
|}<br />
<br />
<br />
[[Category:Developers/Packaging]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Windows_installer&diff=29662Windows installer2011-08-03T18:06:13Z<p>PaulFranklin: /* Installation */</p>
<hr />
<div>{{languages}}<br />
<br />
Because Gramps has been designed and written in multi-platform resources (including Python and GTK), we have created a Windows installer that has been reported to work without any obvious issues. <br />
<br />
We do suggest the following:<br />
<br />
* Work with ''a copy'' of your main database and keep regular backups in the [[GRAMPS_XML|GRAMPS XML]] format.<br />
* Join the [https://lists.sourceforge.net/lists/listinfo/gramps-users GRAMPS Users mailing list] to share your experiences, especially if you are a developer able to contribute to a Windows port.<br />
* See also [[GRAMPS and Windows]] for a collection of hints to run GRAMPS on MS Windows.<br />
* Report any issues you find to help make Gramps better.<br />
<br />
==Installation==<br />
These instructions are specific to the GRAMPS (minimal) installer, which requires you to independently install GRAMPS dependencies prior to installing GRAMPS. Please ignore these instructions if you are using either the GRAMPS AIO installer or Portable GRAMPS application.<br />
<br />
(The GRAMPS AIO ("all-in-one") installer contains all the dependencies GRAMPS needs and many people find it much easier to install GRAMPS that way. See [[Gramps Software Bundle for Windows|GrampsAIO]] for more information.)<br />
<br />
When you need to install the dependencies for GRAMPS there is the easy way and the hard way. You would only use the hard way if you have specific requirements ( such as specific versions ) that are not covered by the easy way.<br />
<br />
The essential dependencies that GRAMPS requires to run are:<br />
* Python 2.6.x or later (GRAMPS has not yet been ported to Python 3.x)<br />
* GTK runtime<br />
* GTK python bindings ( PyGTK, PyGObject, PyCario)<br />
<br />
=== Dependencies - The easy way ===<br />
Select the correct version of Python dependent on your operating system.<br />
{{man tip|Tip: |Currently (2011-6-20) the minimal installer only comes in a '''32 bit''' version, if you are running on a 64 bit operating system '''select a 32 bit Python installer'''}}<br />
<br />
<br />
;For Gramps 3.1.x and later<br />
{| {{prettytable}}<br />
!Order<br />
!Package Name<br />
!Download<br />
!Size<br />
!From<br />
!Comment<br />
|-<br />
|<!--Order-->1<br />
|<!--Package Name-->Python 2.6.6<br />
or later<br />
|<!--Download-->[http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi python-2.6.6.msi]<br />
|<!--Size-->11 MB<br />
|<!--From-->[http://www.python.org python.org]<br />
|<!--Comment-->Python 2.6 has performance issues for some people.<br />
|-<br />
|<!--Order-->2<br />
|<!--Package Name-->PyGTK-all-in-one<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.22/ PyGTK-all-in-one GTK 2.22] <br />
|<!--Size-->Approx 32M<br />
|<!--From-->[http://www.pygtk.org/downloads.html PyGTK]<br />
|<!--Comment--> Select the version that matches your version of python. Note: while pygtk-all-in-one-2.24.x.win32-py2.x has been released it is recommended to still use pygtk-all-in-one-2.22.6.win32-py2.x due to bugs in gtk version 2.24.<br />
|}<br />
<br />
'''3.''' Install GRAMPS for Windows. You can download the most recent stable version from [https://sourceforge.net/projects/gramps/files/ SourceForge].<br />
<br />
=== Dependencies - The hard way ===<br />
'''1.''' Close any gtk-based applications that are running, such as the GIMP or Pidgin. See ''Common Problems'' below.<br />
<br />
'''2.''' Install the packages in the following order:<br />
<br />
;For Gramps 3.1.x and later<br />
{| {{prettytable}}<br />
!Order<br />
!Package Name<br />
!Download<br />
!Size<br />
!From<br />
!Comment<br />
|-<br />
|<!--Order-->1<br />
|<!--Package Name-->Python 2.6.6<br />
or later<br />
|<!--Download-->[http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi python-2.6.6.msi]<br />
|<!--Size-->11 MB<br />
|<!--From-->[http://www.python.org python.org]<br />
|<!--Comment-->Python 2.6 has performance issues for some people.<br />
|-<br />
|<!--Order-->2<br />
|<!--Package Name-->GTK+ 2.16.6 or later<br />
|<!--Download-->[http://downloads.sourceforge.net/gtk-win/gtk2-runtime-2.16.6-2010-02-24-ash.exe GTK+ 2.16.6] <br />
|<!--Size-->7MB<br />
|<!--From-->[http://gtk-win.sourceforge.net gtk-win]<br />
|<!--Comment-->From Gramps 3.2.0 onwards, Glade is no longer a requirement for Gramps. The windows GTK runtime listed here is a viable alternative to the gtk-dev package. Note: If you receive a "libglib-2.0-0.dll not found" error in step 6, you will need to rerun the GTK installer and select "Compatibility DLLs" when installing.<br />
|- <br />
|<!--Order-->3<br />
|<!--Package Name-->pygtk 2.16.0 <br />
or later<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.16/pygtk-2.16.0.win32-py2.6.exe pygtk-2.16.0.win32-py2.6.exe]<br />
|<!--Size-->1.9 MB<br />
|<!--From-->[http://ftp.gnome.org/ ftp.gnome.org]<br />
|<!--Comment-->See ''Common Problems'' and ''Note'' below. "Run as admin" on Vista & later.<br />
|-<br />
|<!--Order-->4<br />
|<!--Package Name-->pygobject 2.20.0 <br />
or later<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.20/pygobject-2.20.0.win32-py2.6.exe pygobject-2.20.0.win32-py2.6.exe]<br />
|<!--Size-->163 KB<br />
|<!--From-->[http://ftp.gnome.org/ ftp.gnome.org]<br />
|<!--Comment-->"Run as admin" on Vista & later.<br />
|-<br />
|<!--Order-->5<br />
|<!--Package Name-->pycairo 1.4.12<br />
or later<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/1.4/pycairo-1.4.12-2.win32-py2.6.exe pycairo-1.4.12-2.win32-py2.6.exe]<br />
|<!--Size-->86 KB<br />
|<!--From-->[http://ftp.gnome.org/ ftp.gnome.org]<br />
|<!--Comment-->"Run as admin" on Vista & later.<br />
|-<br />
|<!--Order-->6<br />
|<!--Package Name-->Validate Install<br />
|<!--Download-->NA<br />
|<!--Size-->NA<br />
|<!--From-->NA<br />
|<!--Comment--><br />
The following recommendations are for the validation <br />
of the proper installation of the above listed <br />
GRAMPS software prerequisites. <br />
<br />
After installing the items above on a VISTA 64 bit <br />
Ultimate System; GRAMPS could not locate any of <br />
the above software except for Python. This caused <br />
the installer to not install GRAMPS.<br />
<br />
After some time researching the issue I found <br />
the solution to my problem in a post by <br />
"steve geo at [http://old.nabble.com/3.1.1-install-program-problem-td22636394.html old.nabble.com]".<br />
<br />
NOTE:<br />
These steps should validate an installation on XP, <br />
Vista and Windows 7 with the caveat that the command <br />
window on Vista and Windows 7 should be opened using <br />
the "Run as Administrator" (Set your mouse pointer <br />
over the command prompt icon and right-click your <br />
mouse button to display the menu. Click on the <br />
"Run as Administrator" item.)<br />
<br />
1. Open up command window (see note above)<br />
<br />
2. If you installed the gtk-runtime software in <br />
row 2 above (SKIP to ahead to 3.)<br />
Type gtk-demo and press the enter key.<br />
<br />
a) If the gtk demo program does not load <br />
then it is likely you do not have the<br />
gtk bin directory in your path correctly.<br />
(Add your installation directory to your<br />
path environment variable) <br />
<br />
3. Change to the directory where you installed the <br />
Python application. By default it is likely <br />
installed at C:\Python26. Once in this folder type <br />
python and press the enter key<br />
<br />
a) Your command window should show you information <br />
about the version of Python installed on your <br />
computer and your prompt should be different <br />
and will likely look like ">>>"<br />
b) If you do not have a <br />
"drive:\[your python install directory]" you <br />
should run the python installation program. <br />
c) If your prompt does not change. Re-install <br />
python and watch closely for errors or a <br />
different drive and directory for the installation. <br />
<br />
4. At the Python prompt - likely ">>>"<br />
<br />
a) import pygtk<br />
b) import gtk<br />
c) import gobject<br />
The above items should complete without errors.<br />
5. If you are updating from a prevous GTK version, make sure you have "Graphviz" folder path AFTER the "GTK2 runtime 2.16" folder.<br />
It should look like this (in this order) PATH=... C:\Program files\GTK2 Runtime\bin;C:\Program files\Graphviz2.26\bin;C:\Program files\GS\GS8.64\bin. If "Graphviz" is located before "GTK2 Runtime 2.16" in the PATH folder order GRAMPS will not start.<br />
<br />
6. Reboot your computer. After reboot run GRAMPS install.<br />
|-<br />
|<!--Order-->Optional<br />
|<!--Package Name-->Graphviz<br />
|<!--Download-->[http://www.graphviz.org/pub/graphviz/stable/windows/graphviz-2.26.msi graphviz-2.26.msi]<br />
|<!--Size-->31 MB<br />
|<!--From-->[http://www.graphviz.org/ graphviz.org]<br />
|<!--Comment-->Needed to be able to generate relationship graphs (single page PDFs only)<br />
|-<br />
|<!--Order-->Optional<br />
|<!--Package Name-->GhostScript<br />
|<!--Download-->[http://mirror.cs.wisc.edu/pub/mirrors/ghost/GPL/gs864/gs864w32.exe gs864w32.exe]<br />
|<!--Size-->11.9 MB<br />
|<!--From-->[http://pages.cs.wisc.edu/~ghost/ pages.cs.wisc.edu/~ghost]<br />
|<!--Comment-->Needed to be able to generate PDFs through Ghostscript (multiple pages PDFs) Need to add manually gs\gs8.64\bin folder to system path!<br />
|}<br />
<br />
'''Note''': For Gramps 3.0.x and earlier use:<br />
* GTK+ 2.10.11 => [http://downloads.sourceforge.net/gladewin32/gtk-dev-2.10.11-win32-1.exe?download gtk-dev-2.10.11-win32-1.exe] (11.9 MB) <br />
* pygtk 2.10.6 => [http://ftp.acc.umu.se/pub/GNOME/binaries/win32/pygtk/2.10/pygtk-2.10.6-1.win32-py2.5.exe pygtk-2.10.6-1.win32-py2.5.exe] (1.8 MB, from [http://www.acc.umu.se www.acc.umu.se])<br />
<br />
'''3.''' Re-boot the computer after installing the above dependencies, prior to installing GRAMPS.<br />
<br />
'''4.''' Install GRAMPS for Windows. You can download the most recent stable version from [https://sourceforge.net/projects/gramps/files/ SourceForge].<br />
<br />
==Common problems==<br />
<br />
===Installer complains pygtk is missing===<br />
This is a very common error to see when all dependencies are not installed or installed correctly. Please make sure that each of the packages required have installed correctly, and re-boot the computer prior to running the GRAMPS installer. We often see users attempting to use other packages to satisfy these requirements that omit something necessary (e.g., glade) which produce this error.<br />
<br />
In rare occasions, the installer will complain that pygtk is not installed even though everything is correct. Canceling and re-running the installer seems to fix this problem, although if it happens repeatedly, the error is the more severe situation discussed above. (Anyone know why? Please tell us on the [https://lists.sourceforge.net/lists/listinfo/gramps-windows gramps-windows email list].)<br />
<br />
===GTK+ installer error===<br />
If you already have GTK+ installed, perhaps because you have installed [http://gimp-win.sourceforge.net/stable.html The GIMP], [http://www.pidgin.im/ Pidgin], or [http://gnucash.org Gnu Cash], the GTK+ installer will not be able to write to some files if one of those applications is running. If you see errors with the GTK+ installer, select Cancel, shut down the other GTK+ applications and run the installer again. (This issue has been reported as [http://sourceforge.net/tracker/index.php?func=detail&aid=1852930&group_id=98754&atid=621933 GTK+ Installer doesn't handle locked files well] to the kind people who make the GTK+ installer for windows.)<br />
<br />
===ImportError: DLL load failed:===<br />
This error is becoming increasingly common on recent GTK+/Windows combinations. Gramps does not have DLL's itself, it is usually caused by one of Gramps dependencies (Most likely Gtk+ runtime, not finding a required dependency). As this issue is more complicated to diagnose we have another page [[ImportError: DLL load failed| ''ImportError: DLL load failed'']] dedicated to discussing the issue.<br />
<br />
===Hang when started===<br />
In some environments GRAMPS may be unresponsive after displaying its window after being started, particularly after the first time. This can be worked around by running GRAMPS via a BAT file which first sets GRAMPSHOME to an accessible directory, as discussed on the [[GRAMPS_and_Windows#Setting_the_configuration_path|''GRAMPS and Windows'' page]].<br />
<br />
==Additional plugins==<br />
<br />
There are some features of Gramps that need additional programs to work. There are several different kinds of reports, and the following features need extra configuration to work on Windows. <br />
<br />
* The Relationship Graph reports (both graphical report and code generator) need an installation of [http://www.graphviz.org Graphviz]. There is a bug in the current stable release, see this [[Howto:_Make_a_relationship_chart#Example_3.2C_Generating_the_graph_by_using_the_Graphviz_command_line_tool |example]].<br />
* The Relationship Graph can not use PDF as output format unless there is an installation of [http://pages.cs.wisc.edu/~ghost/ ghostscript]. After installation, if gswin32.exe or gswin32c.exe is in the path, PDF should appear as one of the formats in the graphical Relationship Graph report.<br />
* '''Spell-checking:'''<br />
*# For spell-checking to work you first need [http://www.abisource.com/projects/enchant/ Enchant library] and python bindings [http://www.rfk.id.au/software/pyenchant/ PyEnchant]. Enchant appears to be a generic spell checking library. You can request dictionaries from it, ask if a word is correctly spelled, get corrections for a misspelled word, etc... PyEnchant is a set of language bindings and some wrapper classes to make the excellent Enchant spellchecker available as a Python module. Both are available for windows as single setup file:<br />
*#* [http://pypi.python.org/packages/any/p/pyenchant/pyenchant-1.5.3.win32.exe pyenchant-1.5.3.win32.exe]<br />
*# Secondly you need [http://www.pygtk.org/pygtkspell/ PyGTKSpell] from [http://www.pygtk.org/about.html gnome-python-extras] which is bindings allowing to run Python programs using the [http://gtkspell.sourceforge.net/ GtkSpell library], that extends GTK+'s GtkTextView widget with support for spell-checking. Depending of yours Python version download and install one of these:<br />
*#* [[Media:PyGTKSpell-2.25.3.win32-py2.6.zip|PyGTKSpell-2.25.3.win32-py2.6.exe]] or [http://nascent-project.org/barts/Spellchecker_for_Gramps_Portable_3.2.5_Development_Test_1.paf.exe pyenchant 1.5.3, PyGTKSpell 2.25.3] for Python 2.6<br />
*# To install additional dictionaries read tutorial on PyEnchant site:<br />
*#* http://www.rfk.id.au/software/pyenchant/tutorial.html#installation-dicts<br />
* GeoView needs WebKit and python-WebKit.<br />
Experimental versions are available [[GeoView#windows_XP.2FVista|for tests with python 2.6 under Windows]].<br />
<br />
==Limitations==<br />
<br />
When this minimal Windows installer was first written, there was no intent to package all the dependencies and the GRAMPS package into one installer. It is very complex to coordinate dependencies between GRAMPS and these other projects. It also means a single 30+ MB download every version change. However, later such a package was created and many people find it easier than personally installing all the dependencies; see [[Gramps_Software_Bundle_for_Windows | GrampsAIO]] for more information.<br />
<br />
There have been discussions about trying to install compiled distillations (dynamic link libraries) of these core dependencies to avoid having to install the entire Python and GTK environment, but this work never progressed beyond discussion. For more about this and other Windows issues, see the [https://lists.sourceforge.net/lists/listinfo/gramps-windows email list] archive.<br />
<br />
On Windows Vista you will need to save the executable using "save as" and run it as administrator, otherwise the programs will not be able to write to the registry on installation. To do that right click the saved file and choose "run as administrator".<br />
<br />
== See also ==<br />
* [[GRAMPS and Windows]] describes users experiences using GRAMPS on Windows.<br />
* [https://lists.sourceforge.net/lists/listinfo/gramps-users GRAMPS users mailing list]<br />
<br />
[[Category:Documentation]][[Category:Developers/Packaging]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Windows_installer&diff=29661Windows installer2011-08-03T18:03:45Z<p>PaulFranklin: /* Limitations */</p>
<hr />
<div>{{languages}}<br />
<br />
Because Gramps has been designed and written in multi-platform resources (including Python and GTK), we have created a Windows installer that has been reported to work without any obvious issues. <br />
<br />
We do suggest the following:<br />
<br />
* Work with ''a copy'' of your main database and keep regular backups in the [[GRAMPS_XML|GRAMPS XML]] format.<br />
* Join the [https://lists.sourceforge.net/lists/listinfo/gramps-users GRAMPS Users mailing list] to share your experiences, especially if you are a developer able to contribute to a Windows port.<br />
* See also [[GRAMPS and Windows]] for a collection of hints to run GRAMPS on MS Windows.<br />
* Report any issues you find to help make Gramps better.<br />
<br />
==Installation==<br />
These instructions are specific to the GRAMPS (minimal) installer, which requires you to independently install GRAMPS dependencies prior to installing GRAMPS. Please ignore these instructions if you are using either the GRAMPS AIO installer or Portable GRAMPS application.<br />
<br />
(The GRAMPS AIO ("all-in-one") installer contains all the dependencies GRAMPS needs and many people find it much easier to install GRAMPS that way. See [[Gramps Software Bundle for Windows]] for more information.)<br />
<br />
When you need to install the dependencies for GRAMPS there is the easy way and the hard way. You would only use the hard way if you have specific requirements ( such as specific versions ) that are not covered by the easy way.<br />
<br />
The essential dependencies that GRAMPS requires to run are:<br />
* Python 2.6.x or later (GRAMPS has not yet been ported to Python 3.x)<br />
* GTK runtime<br />
* GTK python bindings ( PyGTK, PyGObject, PyCario)<br />
<br />
=== Dependencies - The easy way ===<br />
Select the correct version of Python dependent on your operating system.<br />
{{man tip|Tip: |Currently (2011-6-20) the minimal installer only comes in a '''32 bit''' version, if you are running on a 64 bit operating system '''select a 32 bit Python installer'''}}<br />
<br />
<br />
;For Gramps 3.1.x and later<br />
{| {{prettytable}}<br />
!Order<br />
!Package Name<br />
!Download<br />
!Size<br />
!From<br />
!Comment<br />
|-<br />
|<!--Order-->1<br />
|<!--Package Name-->Python 2.6.6<br />
or later<br />
|<!--Download-->[http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi python-2.6.6.msi]<br />
|<!--Size-->11 MB<br />
|<!--From-->[http://www.python.org python.org]<br />
|<!--Comment-->Python 2.6 has performance issues for some people.<br />
|-<br />
|<!--Order-->2<br />
|<!--Package Name-->PyGTK-all-in-one<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.22/ PyGTK-all-in-one GTK 2.22] <br />
|<!--Size-->Approx 32M<br />
|<!--From-->[http://www.pygtk.org/downloads.html PyGTK]<br />
|<!--Comment--> Select the version that matches your version of python. Note: while pygtk-all-in-one-2.24.x.win32-py2.x has been released it is recommended to still use pygtk-all-in-one-2.22.6.win32-py2.x due to bugs in gtk version 2.24.<br />
|}<br />
<br />
'''3.''' Install GRAMPS for Windows. You can download the most recent stable version from [https://sourceforge.net/projects/gramps/files/ SourceForge].<br />
<br />
=== Dependencies - The hard way ===<br />
'''1.''' Close any gtk-based applications that are running, such as the GIMP or Pidgin. See ''Common Problems'' below.<br />
<br />
'''2.''' Install the packages in the following order:<br />
<br />
;For Gramps 3.1.x and later<br />
{| {{prettytable}}<br />
!Order<br />
!Package Name<br />
!Download<br />
!Size<br />
!From<br />
!Comment<br />
|-<br />
|<!--Order-->1<br />
|<!--Package Name-->Python 2.6.6<br />
or later<br />
|<!--Download-->[http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi python-2.6.6.msi]<br />
|<!--Size-->11 MB<br />
|<!--From-->[http://www.python.org python.org]<br />
|<!--Comment-->Python 2.6 has performance issues for some people.<br />
|-<br />
|<!--Order-->2<br />
|<!--Package Name-->GTK+ 2.16.6 or later<br />
|<!--Download-->[http://downloads.sourceforge.net/gtk-win/gtk2-runtime-2.16.6-2010-02-24-ash.exe GTK+ 2.16.6] <br />
|<!--Size-->7MB<br />
|<!--From-->[http://gtk-win.sourceforge.net gtk-win]<br />
|<!--Comment-->From Gramps 3.2.0 onwards, Glade is no longer a requirement for Gramps. The windows GTK runtime listed here is a viable alternative to the gtk-dev package. Note: If you receive a "libglib-2.0-0.dll not found" error in step 6, you will need to rerun the GTK installer and select "Compatibility DLLs" when installing.<br />
|- <br />
|<!--Order-->3<br />
|<!--Package Name-->pygtk 2.16.0 <br />
or later<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.16/pygtk-2.16.0.win32-py2.6.exe pygtk-2.16.0.win32-py2.6.exe]<br />
|<!--Size-->1.9 MB<br />
|<!--From-->[http://ftp.gnome.org/ ftp.gnome.org]<br />
|<!--Comment-->See ''Common Problems'' and ''Note'' below. "Run as admin" on Vista & later.<br />
|-<br />
|<!--Order-->4<br />
|<!--Package Name-->pygobject 2.20.0 <br />
or later<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.20/pygobject-2.20.0.win32-py2.6.exe pygobject-2.20.0.win32-py2.6.exe]<br />
|<!--Size-->163 KB<br />
|<!--From-->[http://ftp.gnome.org/ ftp.gnome.org]<br />
|<!--Comment-->"Run as admin" on Vista & later.<br />
|-<br />
|<!--Order-->5<br />
|<!--Package Name-->pycairo 1.4.12<br />
or later<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/1.4/pycairo-1.4.12-2.win32-py2.6.exe pycairo-1.4.12-2.win32-py2.6.exe]<br />
|<!--Size-->86 KB<br />
|<!--From-->[http://ftp.gnome.org/ ftp.gnome.org]<br />
|<!--Comment-->"Run as admin" on Vista & later.<br />
|-<br />
|<!--Order-->6<br />
|<!--Package Name-->Validate Install<br />
|<!--Download-->NA<br />
|<!--Size-->NA<br />
|<!--From-->NA<br />
|<!--Comment--><br />
The following recommendations are for the validation <br />
of the proper installation of the above listed <br />
GRAMPS software prerequisites. <br />
<br />
After installing the items above on a VISTA 64 bit <br />
Ultimate System; GRAMPS could not locate any of <br />
the above software except for Python. This caused <br />
the installer to not install GRAMPS.<br />
<br />
After some time researching the issue I found <br />
the solution to my problem in a post by <br />
"steve geo at [http://old.nabble.com/3.1.1-install-program-problem-td22636394.html old.nabble.com]".<br />
<br />
NOTE:<br />
These steps should validate an installation on XP, <br />
Vista and Windows 7 with the caveat that the command <br />
window on Vista and Windows 7 should be opened using <br />
the "Run as Administrator" (Set your mouse pointer <br />
over the command prompt icon and right-click your <br />
mouse button to display the menu. Click on the <br />
"Run as Administrator" item.)<br />
<br />
1. Open up command window (see note above)<br />
<br />
2. If you installed the gtk-runtime software in <br />
row 2 above (SKIP to ahead to 3.)<br />
Type gtk-demo and press the enter key.<br />
<br />
a) If the gtk demo program does not load <br />
then it is likely you do not have the<br />
gtk bin directory in your path correctly.<br />
(Add your installation directory to your<br />
path environment variable) <br />
<br />
3. Change to the directory where you installed the <br />
Python application. By default it is likely <br />
installed at C:\Python26. Once in this folder type <br />
python and press the enter key<br />
<br />
a) Your command window should show you information <br />
about the version of Python installed on your <br />
computer and your prompt should be different <br />
and will likely look like ">>>"<br />
b) If you do not have a <br />
"drive:\[your python install directory]" you <br />
should run the python installation program. <br />
c) If your prompt does not change. Re-install <br />
python and watch closely for errors or a <br />
different drive and directory for the installation. <br />
<br />
4. At the Python prompt - likely ">>>"<br />
<br />
a) import pygtk<br />
b) import gtk<br />
c) import gobject<br />
The above items should complete without errors.<br />
5. If you are updating from a prevous GTK version, make sure you have "Graphviz" folder path AFTER the "GTK2 runtime 2.16" folder.<br />
It should look like this (in this order) PATH=... C:\Program files\GTK2 Runtime\bin;C:\Program files\Graphviz2.26\bin;C:\Program files\GS\GS8.64\bin. If "Graphviz" is located before "GTK2 Runtime 2.16" in the PATH folder order GRAMPS will not start.<br />
<br />
6. Reboot your computer. After reboot run GRAMPS install.<br />
|-<br />
|<!--Order-->Optional<br />
|<!--Package Name-->Graphviz<br />
|<!--Download-->[http://www.graphviz.org/pub/graphviz/stable/windows/graphviz-2.26.msi graphviz-2.26.msi]<br />
|<!--Size-->31 MB<br />
|<!--From-->[http://www.graphviz.org/ graphviz.org]<br />
|<!--Comment-->Needed to be able to generate relationship graphs (single page PDFs only)<br />
|-<br />
|<!--Order-->Optional<br />
|<!--Package Name-->GhostScript<br />
|<!--Download-->[http://mirror.cs.wisc.edu/pub/mirrors/ghost/GPL/gs864/gs864w32.exe gs864w32.exe]<br />
|<!--Size-->11.9 MB<br />
|<!--From-->[http://pages.cs.wisc.edu/~ghost/ pages.cs.wisc.edu/~ghost]<br />
|<!--Comment-->Needed to be able to generate PDFs through Ghostscript (multiple pages PDFs) Need to add manually gs\gs8.64\bin folder to system path!<br />
|}<br />
<br />
'''Note''': For Gramps 3.0.x and earlier use:<br />
* GTK+ 2.10.11 => [http://downloads.sourceforge.net/gladewin32/gtk-dev-2.10.11-win32-1.exe?download gtk-dev-2.10.11-win32-1.exe] (11.9 MB) <br />
* pygtk 2.10.6 => [http://ftp.acc.umu.se/pub/GNOME/binaries/win32/pygtk/2.10/pygtk-2.10.6-1.win32-py2.5.exe pygtk-2.10.6-1.win32-py2.5.exe] (1.8 MB, from [http://www.acc.umu.se www.acc.umu.se])<br />
<br />
'''3.''' Re-boot the computer after installing the above dependencies, prior to installing GRAMPS.<br />
<br />
'''4.''' Install GRAMPS for Windows. You can download the most recent stable version from [https://sourceforge.net/projects/gramps/files/ SourceForge].<br />
<br />
==Common problems==<br />
<br />
===Installer complains pygtk is missing===<br />
This is a very common error to see when all dependencies are not installed or installed correctly. Please make sure that each of the packages required have installed correctly, and re-boot the computer prior to running the GRAMPS installer. We often see users attempting to use other packages to satisfy these requirements that omit something necessary (e.g., glade) which produce this error.<br />
<br />
In rare occasions, the installer will complain that pygtk is not installed even though everything is correct. Canceling and re-running the installer seems to fix this problem, although if it happens repeatedly, the error is the more severe situation discussed above. (Anyone know why? Please tell us on the [https://lists.sourceforge.net/lists/listinfo/gramps-windows gramps-windows email list].)<br />
<br />
===GTK+ installer error===<br />
If you already have GTK+ installed, perhaps because you have installed [http://gimp-win.sourceforge.net/stable.html The GIMP], [http://www.pidgin.im/ Pidgin], or [http://gnucash.org Gnu Cash], the GTK+ installer will not be able to write to some files if one of those applications is running. If you see errors with the GTK+ installer, select Cancel, shut down the other GTK+ applications and run the installer again. (This issue has been reported as [http://sourceforge.net/tracker/index.php?func=detail&aid=1852930&group_id=98754&atid=621933 GTK+ Installer doesn't handle locked files well] to the kind people who make the GTK+ installer for windows.)<br />
<br />
===ImportError: DLL load failed:===<br />
This error is becoming increasingly common on recent GTK+/Windows combinations. Gramps does not have DLL's itself, it is usually caused by one of Gramps dependencies (Most likely Gtk+ runtime, not finding a required dependency). As this issue is more complicated to diagnose we have another page [[ImportError: DLL load failed| ''ImportError: DLL load failed'']] dedicated to discussing the issue.<br />
<br />
===Hang when started===<br />
In some environments GRAMPS may be unresponsive after displaying its window after being started, particularly after the first time. This can be worked around by running GRAMPS via a BAT file which first sets GRAMPSHOME to an accessible directory, as discussed on the [[GRAMPS_and_Windows#Setting_the_configuration_path|''GRAMPS and Windows'' page]].<br />
<br />
==Additional plugins==<br />
<br />
There are some features of Gramps that need additional programs to work. There are several different kinds of reports, and the following features need extra configuration to work on Windows. <br />
<br />
* The Relationship Graph reports (both graphical report and code generator) need an installation of [http://www.graphviz.org Graphviz]. There is a bug in the current stable release, see this [[Howto:_Make_a_relationship_chart#Example_3.2C_Generating_the_graph_by_using_the_Graphviz_command_line_tool |example]].<br />
* The Relationship Graph can not use PDF as output format unless there is an installation of [http://pages.cs.wisc.edu/~ghost/ ghostscript]. After installation, if gswin32.exe or gswin32c.exe is in the path, PDF should appear as one of the formats in the graphical Relationship Graph report.<br />
* '''Spell-checking:'''<br />
*# For spell-checking to work you first need [http://www.abisource.com/projects/enchant/ Enchant library] and python bindings [http://www.rfk.id.au/software/pyenchant/ PyEnchant]. Enchant appears to be a generic spell checking library. You can request dictionaries from it, ask if a word is correctly spelled, get corrections for a misspelled word, etc... PyEnchant is a set of language bindings and some wrapper classes to make the excellent Enchant spellchecker available as a Python module. Both are available for windows as single setup file:<br />
*#* [http://pypi.python.org/packages/any/p/pyenchant/pyenchant-1.5.3.win32.exe pyenchant-1.5.3.win32.exe]<br />
*# Secondly you need [http://www.pygtk.org/pygtkspell/ PyGTKSpell] from [http://www.pygtk.org/about.html gnome-python-extras] which is bindings allowing to run Python programs using the [http://gtkspell.sourceforge.net/ GtkSpell library], that extends GTK+'s GtkTextView widget with support for spell-checking. Depending of yours Python version download and install one of these:<br />
*#* [[Media:PyGTKSpell-2.25.3.win32-py2.6.zip|PyGTKSpell-2.25.3.win32-py2.6.exe]] or [http://nascent-project.org/barts/Spellchecker_for_Gramps_Portable_3.2.5_Development_Test_1.paf.exe pyenchant 1.5.3, PyGTKSpell 2.25.3] for Python 2.6<br />
*# To install additional dictionaries read tutorial on PyEnchant site:<br />
*#* http://www.rfk.id.au/software/pyenchant/tutorial.html#installation-dicts<br />
* GeoView needs WebKit and python-WebKit.<br />
Experimental versions are available [[GeoView#windows_XP.2FVista|for tests with python 2.6 under Windows]].<br />
<br />
==Limitations==<br />
<br />
When this minimal Windows installer was first written, there was no intent to package all the dependencies and the GRAMPS package into one installer. It is very complex to coordinate dependencies between GRAMPS and these other projects. It also means a single 30+ MB download every version change. However, later such a package was created and many people find it easier than personally installing all the dependencies; see [[Gramps_Software_Bundle_for_Windows | GrampsAIO]] for more information.<br />
<br />
There have been discussions about trying to install compiled distillations (dynamic link libraries) of these core dependencies to avoid having to install the entire Python and GTK environment, but this work never progressed beyond discussion. For more about this and other Windows issues, see the [https://lists.sourceforge.net/lists/listinfo/gramps-windows email list] archive.<br />
<br />
On Windows Vista you will need to save the executable using "save as" and run it as administrator, otherwise the programs will not be able to write to the registry on installation. To do that right click the saved file and choose "run as administrator".<br />
<br />
== See also ==<br />
* [[GRAMPS and Windows]] describes users experiences using GRAMPS on Windows.<br />
* [https://lists.sourceforge.net/lists/listinfo/gramps-users GRAMPS users mailing list]<br />
<br />
[[Category:Documentation]][[Category:Developers/Packaging]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Windows_installer&diff=29660Windows installer2011-08-03T17:55:29Z<p>PaulFranklin: /* See also */</p>
<hr />
<div>{{languages}}<br />
<br />
Because Gramps has been designed and written in multi-platform resources (including Python and GTK), we have created a Windows installer that has been reported to work without any obvious issues. <br />
<br />
We do suggest the following:<br />
<br />
* Work with ''a copy'' of your main database and keep regular backups in the [[GRAMPS_XML|GRAMPS XML]] format.<br />
* Join the [https://lists.sourceforge.net/lists/listinfo/gramps-users GRAMPS Users mailing list] to share your experiences, especially if you are a developer able to contribute to a Windows port.<br />
* See also [[GRAMPS and Windows]] for a collection of hints to run GRAMPS on MS Windows.<br />
* Report any issues you find to help make Gramps better.<br />
<br />
==Installation==<br />
These instructions are specific to the GRAMPS (minimal) installer, which requires you to independently install GRAMPS dependencies prior to installing GRAMPS. Please ignore these instructions if you are using either the GRAMPS AIO installer or Portable GRAMPS application.<br />
<br />
(The GRAMPS AIO ("all-in-one") installer contains all the dependencies GRAMPS needs and many people find it much easier to install GRAMPS that way. See [[Gramps Software Bundle for Windows]] for more information.)<br />
<br />
When you need to install the dependencies for GRAMPS there is the easy way and the hard way. You would only use the hard way if you have specific requirements ( such as specific versions ) that are not covered by the easy way.<br />
<br />
The essential dependencies that GRAMPS requires to run are:<br />
* Python 2.6.x or later (GRAMPS has not yet been ported to Python 3.x)<br />
* GTK runtime<br />
* GTK python bindings ( PyGTK, PyGObject, PyCario)<br />
<br />
=== Dependencies - The easy way ===<br />
Select the correct version of Python dependent on your operating system.<br />
{{man tip|Tip: |Currently (2011-6-20) the minimal installer only comes in a '''32 bit''' version, if you are running on a 64 bit operating system '''select a 32 bit Python installer'''}}<br />
<br />
<br />
;For Gramps 3.1.x and later<br />
{| {{prettytable}}<br />
!Order<br />
!Package Name<br />
!Download<br />
!Size<br />
!From<br />
!Comment<br />
|-<br />
|<!--Order-->1<br />
|<!--Package Name-->Python 2.6.6<br />
or later<br />
|<!--Download-->[http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi python-2.6.6.msi]<br />
|<!--Size-->11 MB<br />
|<!--From-->[http://www.python.org python.org]<br />
|<!--Comment-->Python 2.6 has performance issues for some people.<br />
|-<br />
|<!--Order-->2<br />
|<!--Package Name-->PyGTK-all-in-one<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.22/ PyGTK-all-in-one GTK 2.22] <br />
|<!--Size-->Approx 32M<br />
|<!--From-->[http://www.pygtk.org/downloads.html PyGTK]<br />
|<!--Comment--> Select the version that matches your version of python. Note: while pygtk-all-in-one-2.24.x.win32-py2.x has been released it is recommended to still use pygtk-all-in-one-2.22.6.win32-py2.x due to bugs in gtk version 2.24.<br />
|}<br />
<br />
'''3.''' Install GRAMPS for Windows. You can download the most recent stable version from [https://sourceforge.net/projects/gramps/files/ SourceForge].<br />
<br />
=== Dependencies - The hard way ===<br />
'''1.''' Close any gtk-based applications that are running, such as the GIMP or Pidgin. See ''Common Problems'' below.<br />
<br />
'''2.''' Install the packages in the following order:<br />
<br />
;For Gramps 3.1.x and later<br />
{| {{prettytable}}<br />
!Order<br />
!Package Name<br />
!Download<br />
!Size<br />
!From<br />
!Comment<br />
|-<br />
|<!--Order-->1<br />
|<!--Package Name-->Python 2.6.6<br />
or later<br />
|<!--Download-->[http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi python-2.6.6.msi]<br />
|<!--Size-->11 MB<br />
|<!--From-->[http://www.python.org python.org]<br />
|<!--Comment-->Python 2.6 has performance issues for some people.<br />
|-<br />
|<!--Order-->2<br />
|<!--Package Name-->GTK+ 2.16.6 or later<br />
|<!--Download-->[http://downloads.sourceforge.net/gtk-win/gtk2-runtime-2.16.6-2010-02-24-ash.exe GTK+ 2.16.6] <br />
|<!--Size-->7MB<br />
|<!--From-->[http://gtk-win.sourceforge.net gtk-win]<br />
|<!--Comment-->From Gramps 3.2.0 onwards, Glade is no longer a requirement for Gramps. The windows GTK runtime listed here is a viable alternative to the gtk-dev package. Note: If you receive a "libglib-2.0-0.dll not found" error in step 6, you will need to rerun the GTK installer and select "Compatibility DLLs" when installing.<br />
|- <br />
|<!--Order-->3<br />
|<!--Package Name-->pygtk 2.16.0 <br />
or later<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.16/pygtk-2.16.0.win32-py2.6.exe pygtk-2.16.0.win32-py2.6.exe]<br />
|<!--Size-->1.9 MB<br />
|<!--From-->[http://ftp.gnome.org/ ftp.gnome.org]<br />
|<!--Comment-->See ''Common Problems'' and ''Note'' below. "Run as admin" on Vista & later.<br />
|-<br />
|<!--Order-->4<br />
|<!--Package Name-->pygobject 2.20.0 <br />
or later<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.20/pygobject-2.20.0.win32-py2.6.exe pygobject-2.20.0.win32-py2.6.exe]<br />
|<!--Size-->163 KB<br />
|<!--From-->[http://ftp.gnome.org/ ftp.gnome.org]<br />
|<!--Comment-->"Run as admin" on Vista & later.<br />
|-<br />
|<!--Order-->5<br />
|<!--Package Name-->pycairo 1.4.12<br />
or later<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/1.4/pycairo-1.4.12-2.win32-py2.6.exe pycairo-1.4.12-2.win32-py2.6.exe]<br />
|<!--Size-->86 KB<br />
|<!--From-->[http://ftp.gnome.org/ ftp.gnome.org]<br />
|<!--Comment-->"Run as admin" on Vista & later.<br />
|-<br />
|<!--Order-->6<br />
|<!--Package Name-->Validate Install<br />
|<!--Download-->NA<br />
|<!--Size-->NA<br />
|<!--From-->NA<br />
|<!--Comment--><br />
The following recommendations are for the validation <br />
of the proper installation of the above listed <br />
GRAMPS software prerequisites. <br />
<br />
After installing the items above on a VISTA 64 bit <br />
Ultimate System; GRAMPS could not locate any of <br />
the above software except for Python. This caused <br />
the installer to not install GRAMPS.<br />
<br />
After some time researching the issue I found <br />
the solution to my problem in a post by <br />
"steve geo at [http://old.nabble.com/3.1.1-install-program-problem-td22636394.html old.nabble.com]".<br />
<br />
NOTE:<br />
These steps should validate an installation on XP, <br />
Vista and Windows 7 with the caveat that the command <br />
window on Vista and Windows 7 should be opened using <br />
the "Run as Administrator" (Set your mouse pointer <br />
over the command prompt icon and right-click your <br />
mouse button to display the menu. Click on the <br />
"Run as Administrator" item.)<br />
<br />
1. Open up command window (see note above)<br />
<br />
2. If you installed the gtk-runtime software in <br />
row 2 above (SKIP to ahead to 3.)<br />
Type gtk-demo and press the enter key.<br />
<br />
a) If the gtk demo program does not load <br />
then it is likely you do not have the<br />
gtk bin directory in your path correctly.<br />
(Add your installation directory to your<br />
path environment variable) <br />
<br />
3. Change to the directory where you installed the <br />
Python application. By default it is likely <br />
installed at C:\Python26. Once in this folder type <br />
python and press the enter key<br />
<br />
a) Your command window should show you information <br />
about the version of Python installed on your <br />
computer and your prompt should be different <br />
and will likely look like ">>>"<br />
b) If you do not have a <br />
"drive:\[your python install directory]" you <br />
should run the python installation program. <br />
c) If your prompt does not change. Re-install <br />
python and watch closely for errors or a <br />
different drive and directory for the installation. <br />
<br />
4. At the Python prompt - likely ">>>"<br />
<br />
a) import pygtk<br />
b) import gtk<br />
c) import gobject<br />
The above items should complete without errors.<br />
5. If you are updating from a prevous GTK version, make sure you have "Graphviz" folder path AFTER the "GTK2 runtime 2.16" folder.<br />
It should look like this (in this order) PATH=... C:\Program files\GTK2 Runtime\bin;C:\Program files\Graphviz2.26\bin;C:\Program files\GS\GS8.64\bin. If "Graphviz" is located before "GTK2 Runtime 2.16" in the PATH folder order GRAMPS will not start.<br />
<br />
6. Reboot your computer. After reboot run GRAMPS install.<br />
|-<br />
|<!--Order-->Optional<br />
|<!--Package Name-->Graphviz<br />
|<!--Download-->[http://www.graphviz.org/pub/graphviz/stable/windows/graphviz-2.26.msi graphviz-2.26.msi]<br />
|<!--Size-->31 MB<br />
|<!--From-->[http://www.graphviz.org/ graphviz.org]<br />
|<!--Comment-->Needed to be able to generate relationship graphs (single page PDFs only)<br />
|-<br />
|<!--Order-->Optional<br />
|<!--Package Name-->GhostScript<br />
|<!--Download-->[http://mirror.cs.wisc.edu/pub/mirrors/ghost/GPL/gs864/gs864w32.exe gs864w32.exe]<br />
|<!--Size-->11.9 MB<br />
|<!--From-->[http://pages.cs.wisc.edu/~ghost/ pages.cs.wisc.edu/~ghost]<br />
|<!--Comment-->Needed to be able to generate PDFs through Ghostscript (multiple pages PDFs) Need to add manually gs\gs8.64\bin folder to system path!<br />
|}<br />
<br />
'''Note''': For Gramps 3.0.x and earlier use:<br />
* GTK+ 2.10.11 => [http://downloads.sourceforge.net/gladewin32/gtk-dev-2.10.11-win32-1.exe?download gtk-dev-2.10.11-win32-1.exe] (11.9 MB) <br />
* pygtk 2.10.6 => [http://ftp.acc.umu.se/pub/GNOME/binaries/win32/pygtk/2.10/pygtk-2.10.6-1.win32-py2.5.exe pygtk-2.10.6-1.win32-py2.5.exe] (1.8 MB, from [http://www.acc.umu.se www.acc.umu.se])<br />
<br />
'''3.''' Re-boot the computer after installing the above dependencies, prior to installing GRAMPS.<br />
<br />
'''4.''' Install GRAMPS for Windows. You can download the most recent stable version from [https://sourceforge.net/projects/gramps/files/ SourceForge].<br />
<br />
==Common problems==<br />
<br />
===Installer complains pygtk is missing===<br />
This is a very common error to see when all dependencies are not installed or installed correctly. Please make sure that each of the packages required have installed correctly, and re-boot the computer prior to running the GRAMPS installer. We often see users attempting to use other packages to satisfy these requirements that omit something necessary (e.g., glade) which produce this error.<br />
<br />
In rare occasions, the installer will complain that pygtk is not installed even though everything is correct. Canceling and re-running the installer seems to fix this problem, although if it happens repeatedly, the error is the more severe situation discussed above. (Anyone know why? Please tell us on the [https://lists.sourceforge.net/lists/listinfo/gramps-windows gramps-windows email list].)<br />
<br />
===GTK+ installer error===<br />
If you already have GTK+ installed, perhaps because you have installed [http://gimp-win.sourceforge.net/stable.html The GIMP], [http://www.pidgin.im/ Pidgin], or [http://gnucash.org Gnu Cash], the GTK+ installer will not be able to write to some files if one of those applications is running. If you see errors with the GTK+ installer, select Cancel, shut down the other GTK+ applications and run the installer again. (This issue has been reported as [http://sourceforge.net/tracker/index.php?func=detail&aid=1852930&group_id=98754&atid=621933 GTK+ Installer doesn't handle locked files well] to the kind people who make the GTK+ installer for windows.)<br />
<br />
===ImportError: DLL load failed:===<br />
This error is becoming increasingly common on recent GTK+/Windows combinations. Gramps does not have DLL's itself, it is usually caused by one of Gramps dependencies (Most likely Gtk+ runtime, not finding a required dependency). As this issue is more complicated to diagnose we have another page [[ImportError: DLL load failed| ''ImportError: DLL load failed'']] dedicated to discussing the issue.<br />
<br />
===Hang when started===<br />
In some environments GRAMPS may be unresponsive after displaying its window after being started, particularly after the first time. This can be worked around by running GRAMPS via a BAT file which first sets GRAMPSHOME to an accessible directory, as discussed on the [[GRAMPS_and_Windows#Setting_the_configuration_path|''GRAMPS and Windows'' page]].<br />
<br />
==Additional plugins==<br />
<br />
There are some features of Gramps that need additional programs to work. There are several different kinds of reports, and the following features need extra configuration to work on Windows. <br />
<br />
* The Relationship Graph reports (both graphical report and code generator) need an installation of [http://www.graphviz.org Graphviz]. There is a bug in the current stable release, see this [[Howto:_Make_a_relationship_chart#Example_3.2C_Generating_the_graph_by_using_the_Graphviz_command_line_tool |example]].<br />
* The Relationship Graph can not use PDF as output format unless there is an installation of [http://pages.cs.wisc.edu/~ghost/ ghostscript]. After installation, if gswin32.exe or gswin32c.exe is in the path, PDF should appear as one of the formats in the graphical Relationship Graph report.<br />
* '''Spell-checking:'''<br />
*# For spell-checking to work you first need [http://www.abisource.com/projects/enchant/ Enchant library] and python bindings [http://www.rfk.id.au/software/pyenchant/ PyEnchant]. Enchant appears to be a generic spell checking library. You can request dictionaries from it, ask if a word is correctly spelled, get corrections for a misspelled word, etc... PyEnchant is a set of language bindings and some wrapper classes to make the excellent Enchant spellchecker available as a Python module. Both are available for windows as single setup file:<br />
*#* [http://pypi.python.org/packages/any/p/pyenchant/pyenchant-1.5.3.win32.exe pyenchant-1.5.3.win32.exe]<br />
*# Secondly you need [http://www.pygtk.org/pygtkspell/ PyGTKSpell] from [http://www.pygtk.org/about.html gnome-python-extras] which is bindings allowing to run Python programs using the [http://gtkspell.sourceforge.net/ GtkSpell library], that extends GTK+'s GtkTextView widget with support for spell-checking. Depending of yours Python version download and install one of these:<br />
*#* [[Media:PyGTKSpell-2.25.3.win32-py2.6.zip|PyGTKSpell-2.25.3.win32-py2.6.exe]] or [http://nascent-project.org/barts/Spellchecker_for_Gramps_Portable_3.2.5_Development_Test_1.paf.exe pyenchant 1.5.3, PyGTKSpell 2.25.3] for Python 2.6<br />
*# To install additional dictionaries read tutorial on PyEnchant site:<br />
*#* http://www.rfk.id.au/software/pyenchant/tutorial.html#installation-dicts<br />
* GeoView needs WebKit and python-WebKit.<br />
Experimental versions are available [[GeoView#windows_XP.2FVista|for tests with python 2.6 under Windows]].<br />
<br />
==Limitations==<br />
<br />
At this time, there is no intent to package all the dependencies and the GRAMPS package into one installer. This creates a very complex coordination condition between GRAMPS and these other projects. It also means a single 30+ MB download every version change. However work is started to create installable [[Gramps_Software_Bundle_for_Windows | bundle]] of core dependencies.<br />
<br />
There have been discussions about trying to install compiled distillations (dynamic link libraries) of these core dependencies to avoid having to install the entire Python and GTK environment, but this work never progressed beyond discussion. For more about this and other Windows issues, see the [https://lists.sourceforge.net/lists/listinfo/gramps-windows email list] archive.<br />
<br />
On Windows Vista you will need to save the executable using "save as" and run it as administrator, otherwise the programs will not be able to write to the registry on installation. To do that right click the saved file and choose "run as administrator".<br />
<br />
== See also ==<br />
* [[GRAMPS and Windows]] describes users experiences using GRAMPS on Windows.<br />
* [https://lists.sourceforge.net/lists/listinfo/gramps-users GRAMPS users mailing list]<br />
<br />
[[Category:Documentation]][[Category:Developers/Packaging]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Windows_installer&diff=29659Windows installer2011-08-03T17:54:33Z<p>PaulFranklin: /* See also */</p>
<hr />
<div>{{languages}}<br />
<br />
Because Gramps has been designed and written in multi-platform resources (including Python and GTK), we have created a Windows installer that has been reported to work without any obvious issues. <br />
<br />
We do suggest the following:<br />
<br />
* Work with ''a copy'' of your main database and keep regular backups in the [[GRAMPS_XML|GRAMPS XML]] format.<br />
* Join the [https://lists.sourceforge.net/lists/listinfo/gramps-users GRAMPS Users mailing list] to share your experiences, especially if you are a developer able to contribute to a Windows port.<br />
* See also [[GRAMPS and Windows]] for a collection of hints to run GRAMPS on MS Windows.<br />
* Report any issues you find to help make Gramps better.<br />
<br />
==Installation==<br />
These instructions are specific to the GRAMPS (minimal) installer, which requires you to independently install GRAMPS dependencies prior to installing GRAMPS. Please ignore these instructions if you are using either the GRAMPS AIO installer or Portable GRAMPS application.<br />
<br />
(The GRAMPS AIO ("all-in-one") installer contains all the dependencies GRAMPS needs and many people find it much easier to install GRAMPS that way. See [[Gramps Software Bundle for Windows]] for more information.)<br />
<br />
When you need to install the dependencies for GRAMPS there is the easy way and the hard way. You would only use the hard way if you have specific requirements ( such as specific versions ) that are not covered by the easy way.<br />
<br />
The essential dependencies that GRAMPS requires to run are:<br />
* Python 2.6.x or later (GRAMPS has not yet been ported to Python 3.x)<br />
* GTK runtime<br />
* GTK python bindings ( PyGTK, PyGObject, PyCario)<br />
<br />
=== Dependencies - The easy way ===<br />
Select the correct version of Python dependent on your operating system.<br />
{{man tip|Tip: |Currently (2011-6-20) the minimal installer only comes in a '''32 bit''' version, if you are running on a 64 bit operating system '''select a 32 bit Python installer'''}}<br />
<br />
<br />
;For Gramps 3.1.x and later<br />
{| {{prettytable}}<br />
!Order<br />
!Package Name<br />
!Download<br />
!Size<br />
!From<br />
!Comment<br />
|-<br />
|<!--Order-->1<br />
|<!--Package Name-->Python 2.6.6<br />
or later<br />
|<!--Download-->[http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi python-2.6.6.msi]<br />
|<!--Size-->11 MB<br />
|<!--From-->[http://www.python.org python.org]<br />
|<!--Comment-->Python 2.6 has performance issues for some people.<br />
|-<br />
|<!--Order-->2<br />
|<!--Package Name-->PyGTK-all-in-one<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.22/ PyGTK-all-in-one GTK 2.22] <br />
|<!--Size-->Approx 32M<br />
|<!--From-->[http://www.pygtk.org/downloads.html PyGTK]<br />
|<!--Comment--> Select the version that matches your version of python. Note: while pygtk-all-in-one-2.24.x.win32-py2.x has been released it is recommended to still use pygtk-all-in-one-2.22.6.win32-py2.x due to bugs in gtk version 2.24.<br />
|}<br />
<br />
'''3.''' Install GRAMPS for Windows. You can download the most recent stable version from [https://sourceforge.net/projects/gramps/files/ SourceForge].<br />
<br />
=== Dependencies - The hard way ===<br />
'''1.''' Close any gtk-based applications that are running, such as the GIMP or Pidgin. See ''Common Problems'' below.<br />
<br />
'''2.''' Install the packages in the following order:<br />
<br />
;For Gramps 3.1.x and later<br />
{| {{prettytable}}<br />
!Order<br />
!Package Name<br />
!Download<br />
!Size<br />
!From<br />
!Comment<br />
|-<br />
|<!--Order-->1<br />
|<!--Package Name-->Python 2.6.6<br />
or later<br />
|<!--Download-->[http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi python-2.6.6.msi]<br />
|<!--Size-->11 MB<br />
|<!--From-->[http://www.python.org python.org]<br />
|<!--Comment-->Python 2.6 has performance issues for some people.<br />
|-<br />
|<!--Order-->2<br />
|<!--Package Name-->GTK+ 2.16.6 or later<br />
|<!--Download-->[http://downloads.sourceforge.net/gtk-win/gtk2-runtime-2.16.6-2010-02-24-ash.exe GTK+ 2.16.6] <br />
|<!--Size-->7MB<br />
|<!--From-->[http://gtk-win.sourceforge.net gtk-win]<br />
|<!--Comment-->From Gramps 3.2.0 onwards, Glade is no longer a requirement for Gramps. The windows GTK runtime listed here is a viable alternative to the gtk-dev package. Note: If you receive a "libglib-2.0-0.dll not found" error in step 6, you will need to rerun the GTK installer and select "Compatibility DLLs" when installing.<br />
|- <br />
|<!--Order-->3<br />
|<!--Package Name-->pygtk 2.16.0 <br />
or later<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.16/pygtk-2.16.0.win32-py2.6.exe pygtk-2.16.0.win32-py2.6.exe]<br />
|<!--Size-->1.9 MB<br />
|<!--From-->[http://ftp.gnome.org/ ftp.gnome.org]<br />
|<!--Comment-->See ''Common Problems'' and ''Note'' below. "Run as admin" on Vista & later.<br />
|-<br />
|<!--Order-->4<br />
|<!--Package Name-->pygobject 2.20.0 <br />
or later<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.20/pygobject-2.20.0.win32-py2.6.exe pygobject-2.20.0.win32-py2.6.exe]<br />
|<!--Size-->163 KB<br />
|<!--From-->[http://ftp.gnome.org/ ftp.gnome.org]<br />
|<!--Comment-->"Run as admin" on Vista & later.<br />
|-<br />
|<!--Order-->5<br />
|<!--Package Name-->pycairo 1.4.12<br />
or later<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/1.4/pycairo-1.4.12-2.win32-py2.6.exe pycairo-1.4.12-2.win32-py2.6.exe]<br />
|<!--Size-->86 KB<br />
|<!--From-->[http://ftp.gnome.org/ ftp.gnome.org]<br />
|<!--Comment-->"Run as admin" on Vista & later.<br />
|-<br />
|<!--Order-->6<br />
|<!--Package Name-->Validate Install<br />
|<!--Download-->NA<br />
|<!--Size-->NA<br />
|<!--From-->NA<br />
|<!--Comment--><br />
The following recommendations are for the validation <br />
of the proper installation of the above listed <br />
GRAMPS software prerequisites. <br />
<br />
After installing the items above on a VISTA 64 bit <br />
Ultimate System; GRAMPS could not locate any of <br />
the above software except for Python. This caused <br />
the installer to not install GRAMPS.<br />
<br />
After some time researching the issue I found <br />
the solution to my problem in a post by <br />
"steve geo at [http://old.nabble.com/3.1.1-install-program-problem-td22636394.html old.nabble.com]".<br />
<br />
NOTE:<br />
These steps should validate an installation on XP, <br />
Vista and Windows 7 with the caveat that the command <br />
window on Vista and Windows 7 should be opened using <br />
the "Run as Administrator" (Set your mouse pointer <br />
over the command prompt icon and right-click your <br />
mouse button to display the menu. Click on the <br />
"Run as Administrator" item.)<br />
<br />
1. Open up command window (see note above)<br />
<br />
2. If you installed the gtk-runtime software in <br />
row 2 above (SKIP to ahead to 3.)<br />
Type gtk-demo and press the enter key.<br />
<br />
a) If the gtk demo program does not load <br />
then it is likely you do not have the<br />
gtk bin directory in your path correctly.<br />
(Add your installation directory to your<br />
path environment variable) <br />
<br />
3. Change to the directory where you installed the <br />
Python application. By default it is likely <br />
installed at C:\Python26. Once in this folder type <br />
python and press the enter key<br />
<br />
a) Your command window should show you information <br />
about the version of Python installed on your <br />
computer and your prompt should be different <br />
and will likely look like ">>>"<br />
b) If you do not have a <br />
"drive:\[your python install directory]" you <br />
should run the python installation program. <br />
c) If your prompt does not change. Re-install <br />
python and watch closely for errors or a <br />
different drive and directory for the installation. <br />
<br />
4. At the Python prompt - likely ">>>"<br />
<br />
a) import pygtk<br />
b) import gtk<br />
c) import gobject<br />
The above items should complete without errors.<br />
5. If you are updating from a prevous GTK version, make sure you have "Graphviz" folder path AFTER the "GTK2 runtime 2.16" folder.<br />
It should look like this (in this order) PATH=... C:\Program files\GTK2 Runtime\bin;C:\Program files\Graphviz2.26\bin;C:\Program files\GS\GS8.64\bin. If "Graphviz" is located before "GTK2 Runtime 2.16" in the PATH folder order GRAMPS will not start.<br />
<br />
6. Reboot your computer. After reboot run GRAMPS install.<br />
|-<br />
|<!--Order-->Optional<br />
|<!--Package Name-->Graphviz<br />
|<!--Download-->[http://www.graphviz.org/pub/graphviz/stable/windows/graphviz-2.26.msi graphviz-2.26.msi]<br />
|<!--Size-->31 MB<br />
|<!--From-->[http://www.graphviz.org/ graphviz.org]<br />
|<!--Comment-->Needed to be able to generate relationship graphs (single page PDFs only)<br />
|-<br />
|<!--Order-->Optional<br />
|<!--Package Name-->GhostScript<br />
|<!--Download-->[http://mirror.cs.wisc.edu/pub/mirrors/ghost/GPL/gs864/gs864w32.exe gs864w32.exe]<br />
|<!--Size-->11.9 MB<br />
|<!--From-->[http://pages.cs.wisc.edu/~ghost/ pages.cs.wisc.edu/~ghost]<br />
|<!--Comment-->Needed to be able to generate PDFs through Ghostscript (multiple pages PDFs) Need to add manually gs\gs8.64\bin folder to system path!<br />
|}<br />
<br />
'''Note''': For Gramps 3.0.x and earlier use:<br />
* GTK+ 2.10.11 => [http://downloads.sourceforge.net/gladewin32/gtk-dev-2.10.11-win32-1.exe?download gtk-dev-2.10.11-win32-1.exe] (11.9 MB) <br />
* pygtk 2.10.6 => [http://ftp.acc.umu.se/pub/GNOME/binaries/win32/pygtk/2.10/pygtk-2.10.6-1.win32-py2.5.exe pygtk-2.10.6-1.win32-py2.5.exe] (1.8 MB, from [http://www.acc.umu.se www.acc.umu.se])<br />
<br />
'''3.''' Re-boot the computer after installing the above dependencies, prior to installing GRAMPS.<br />
<br />
'''4.''' Install GRAMPS for Windows. You can download the most recent stable version from [https://sourceforge.net/projects/gramps/files/ SourceForge].<br />
<br />
==Common problems==<br />
<br />
===Installer complains pygtk is missing===<br />
This is a very common error to see when all dependencies are not installed or installed correctly. Please make sure that each of the packages required have installed correctly, and re-boot the computer prior to running the GRAMPS installer. We often see users attempting to use other packages to satisfy these requirements that omit something necessary (e.g., glade) which produce this error.<br />
<br />
In rare occasions, the installer will complain that pygtk is not installed even though everything is correct. Canceling and re-running the installer seems to fix this problem, although if it happens repeatedly, the error is the more severe situation discussed above. (Anyone know why? Please tell us on the [https://lists.sourceforge.net/lists/listinfo/gramps-windows gramps-windows email list].)<br />
<br />
===GTK+ installer error===<br />
If you already have GTK+ installed, perhaps because you have installed [http://gimp-win.sourceforge.net/stable.html The GIMP], [http://www.pidgin.im/ Pidgin], or [http://gnucash.org Gnu Cash], the GTK+ installer will not be able to write to some files if one of those applications is running. If you see errors with the GTK+ installer, select Cancel, shut down the other GTK+ applications and run the installer again. (This issue has been reported as [http://sourceforge.net/tracker/index.php?func=detail&aid=1852930&group_id=98754&atid=621933 GTK+ Installer doesn't handle locked files well] to the kind people who make the GTK+ installer for windows.)<br />
<br />
===ImportError: DLL load failed:===<br />
This error is becoming increasingly common on recent GTK+/Windows combinations. Gramps does not have DLL's itself, it is usually caused by one of Gramps dependencies (Most likely Gtk+ runtime, not finding a required dependency). As this issue is more complicated to diagnose we have another page [[ImportError: DLL load failed| ''ImportError: DLL load failed'']] dedicated to discussing the issue.<br />
<br />
===Hang when started===<br />
In some environments GRAMPS may be unresponsive after displaying its window after being started, particularly after the first time. This can be worked around by running GRAMPS via a BAT file which first sets GRAMPSHOME to an accessible directory, as discussed on the [[GRAMPS_and_Windows#Setting_the_configuration_path|''GRAMPS and Windows'' page]].<br />
<br />
==Additional plugins==<br />
<br />
There are some features of Gramps that need additional programs to work. There are several different kinds of reports, and the following features need extra configuration to work on Windows. <br />
<br />
* The Relationship Graph reports (both graphical report and code generator) need an installation of [http://www.graphviz.org Graphviz]. There is a bug in the current stable release, see this [[Howto:_Make_a_relationship_chart#Example_3.2C_Generating_the_graph_by_using_the_Graphviz_command_line_tool |example]].<br />
* The Relationship Graph can not use PDF as output format unless there is an installation of [http://pages.cs.wisc.edu/~ghost/ ghostscript]. After installation, if gswin32.exe or gswin32c.exe is in the path, PDF should appear as one of the formats in the graphical Relationship Graph report.<br />
* '''Spell-checking:'''<br />
*# For spell-checking to work you first need [http://www.abisource.com/projects/enchant/ Enchant library] and python bindings [http://www.rfk.id.au/software/pyenchant/ PyEnchant]. Enchant appears to be a generic spell checking library. You can request dictionaries from it, ask if a word is correctly spelled, get corrections for a misspelled word, etc... PyEnchant is a set of language bindings and some wrapper classes to make the excellent Enchant spellchecker available as a Python module. Both are available for windows as single setup file:<br />
*#* [http://pypi.python.org/packages/any/p/pyenchant/pyenchant-1.5.3.win32.exe pyenchant-1.5.3.win32.exe]<br />
*# Secondly you need [http://www.pygtk.org/pygtkspell/ PyGTKSpell] from [http://www.pygtk.org/about.html gnome-python-extras] which is bindings allowing to run Python programs using the [http://gtkspell.sourceforge.net/ GtkSpell library], that extends GTK+'s GtkTextView widget with support for spell-checking. Depending of yours Python version download and install one of these:<br />
*#* [[Media:PyGTKSpell-2.25.3.win32-py2.6.zip|PyGTKSpell-2.25.3.win32-py2.6.exe]] or [http://nascent-project.org/barts/Spellchecker_for_Gramps_Portable_3.2.5_Development_Test_1.paf.exe pyenchant 1.5.3, PyGTKSpell 2.25.3] for Python 2.6<br />
*# To install additional dictionaries read tutorial on PyEnchant site:<br />
*#* http://www.rfk.id.au/software/pyenchant/tutorial.html#installation-dicts<br />
* GeoView needs WebKit and python-WebKit.<br />
Experimental versions are available [[GeoView#windows_XP.2FVista|for tests with python 2.6 under Windows]].<br />
<br />
==Limitations==<br />
<br />
At this time, there is no intent to package all the dependencies and the GRAMPS package into one installer. This creates a very complex coordination condition between GRAMPS and these other projects. It also means a single 30+ MB download every version change. However work is started to create installable [[Gramps_Software_Bundle_for_Windows | bundle]] of core dependencies.<br />
<br />
There have been discussions about trying to install compiled distillations (dynamic link libraries) of these core dependencies to avoid having to install the entire Python and GTK environment, but this work never progressed beyond discussion. For more about this and other Windows issues, see the [https://lists.sourceforge.net/lists/listinfo/gramps-windows email list] archive.<br />
<br />
On Windows Vista you will need to save the executable using "save as" and run it as administrator, otherwise the programs will not be able to write to the registry on installation. To do that right click the saved file and choose "run as administrator".<br />
<br />
== See also ==<br />
* [[GRAMPS and Windows]] describes users experiences using GRAMPS on Windows.<br />
* [http://apps.sourceforge.net/mediawiki/gramps4win/index.php?title=Main_Page GRAMPS for Windows] Wiki and Downloads - SourceForge.net<br />
* [https://lists.sourceforge.net/lists/listinfo/gramps-users GRAMPS users mailing list]<br />
<br />
[[Category:Documentation]][[Category:Developers/Packaging]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Windows_installer&diff=29658Windows installer2011-08-03T17:51:41Z<p>PaulFranklin: /* Installation */</p>
<hr />
<div>{{languages}}<br />
<br />
Because Gramps has been designed and written in multi-platform resources (including Python and GTK), we have created a Windows installer that has been reported to work without any obvious issues. <br />
<br />
We do suggest the following:<br />
<br />
* Work with ''a copy'' of your main database and keep regular backups in the [[GRAMPS_XML|GRAMPS XML]] format.<br />
* Join the [https://lists.sourceforge.net/lists/listinfo/gramps-users GRAMPS Users mailing list] to share your experiences, especially if you are a developer able to contribute to a Windows port.<br />
* See also [[GRAMPS and Windows]] for a collection of hints to run GRAMPS on MS Windows.<br />
* Report any issues you find to help make Gramps better.<br />
<br />
==Installation==<br />
These instructions are specific to the GRAMPS (minimal) installer, which requires you to independently install GRAMPS dependencies prior to installing GRAMPS. Please ignore these instructions if you are using either the GRAMPS AIO installer or Portable GRAMPS application.<br />
<br />
(The GRAMPS AIO ("all-in-one") installer contains all the dependencies GRAMPS needs and many people find it much easier to install GRAMPS that way. See [[Gramps Software Bundle for Windows]] for more information.)<br />
<br />
When you need to install the dependencies for GRAMPS there is the easy way and the hard way. You would only use the hard way if you have specific requirements ( such as specific versions ) that are not covered by the easy way.<br />
<br />
The essential dependencies that GRAMPS requires to run are:<br />
* Python 2.6.x or later (GRAMPS has not yet been ported to Python 3.x)<br />
* GTK runtime<br />
* GTK python bindings ( PyGTK, PyGObject, PyCario)<br />
<br />
=== Dependencies - The easy way ===<br />
Select the correct version of Python dependent on your operating system.<br />
{{man tip|Tip: |Currently (2011-6-20) the minimal installer only comes in a '''32 bit''' version, if you are running on a 64 bit operating system '''select a 32 bit Python installer'''}}<br />
<br />
<br />
;For Gramps 3.1.x and later<br />
{| {{prettytable}}<br />
!Order<br />
!Package Name<br />
!Download<br />
!Size<br />
!From<br />
!Comment<br />
|-<br />
|<!--Order-->1<br />
|<!--Package Name-->Python 2.6.6<br />
or later<br />
|<!--Download-->[http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi python-2.6.6.msi]<br />
|<!--Size-->11 MB<br />
|<!--From-->[http://www.python.org python.org]<br />
|<!--Comment-->Python 2.6 has performance issues for some people.<br />
|-<br />
|<!--Order-->2<br />
|<!--Package Name-->PyGTK-all-in-one<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.22/ PyGTK-all-in-one GTK 2.22] <br />
|<!--Size-->Approx 32M<br />
|<!--From-->[http://www.pygtk.org/downloads.html PyGTK]<br />
|<!--Comment--> Select the version that matches your version of python. Note: while pygtk-all-in-one-2.24.x.win32-py2.x has been released it is recommended to still use pygtk-all-in-one-2.22.6.win32-py2.x due to bugs in gtk version 2.24.<br />
|}<br />
<br />
'''3.''' Install GRAMPS for Windows. You can download the most recent stable version from [https://sourceforge.net/projects/gramps/files/ SourceForge].<br />
<br />
=== Dependencies - The hard way ===<br />
'''1.''' Close any gtk-based applications that are running, such as the GIMP or Pidgin. See ''Common Problems'' below.<br />
<br />
'''2.''' Install the packages in the following order:<br />
<br />
;For Gramps 3.1.x and later<br />
{| {{prettytable}}<br />
!Order<br />
!Package Name<br />
!Download<br />
!Size<br />
!From<br />
!Comment<br />
|-<br />
|<!--Order-->1<br />
|<!--Package Name-->Python 2.6.6<br />
or later<br />
|<!--Download-->[http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi python-2.6.6.msi]<br />
|<!--Size-->11 MB<br />
|<!--From-->[http://www.python.org python.org]<br />
|<!--Comment-->Python 2.6 has performance issues for some people.<br />
|-<br />
|<!--Order-->2<br />
|<!--Package Name-->GTK+ 2.16.6 or later<br />
|<!--Download-->[http://downloads.sourceforge.net/gtk-win/gtk2-runtime-2.16.6-2010-02-24-ash.exe GTK+ 2.16.6] <br />
|<!--Size-->7MB<br />
|<!--From-->[http://gtk-win.sourceforge.net gtk-win]<br />
|<!--Comment-->From Gramps 3.2.0 onwards, Glade is no longer a requirement for Gramps. The windows GTK runtime listed here is a viable alternative to the gtk-dev package. Note: If you receive a "libglib-2.0-0.dll not found" error in step 6, you will need to rerun the GTK installer and select "Compatibility DLLs" when installing.<br />
|- <br />
|<!--Order-->3<br />
|<!--Package Name-->pygtk 2.16.0 <br />
or later<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.16/pygtk-2.16.0.win32-py2.6.exe pygtk-2.16.0.win32-py2.6.exe]<br />
|<!--Size-->1.9 MB<br />
|<!--From-->[http://ftp.gnome.org/ ftp.gnome.org]<br />
|<!--Comment-->See ''Common Problems'' and ''Note'' below. "Run as admin" on Vista & later.<br />
|-<br />
|<!--Order-->4<br />
|<!--Package Name-->pygobject 2.20.0 <br />
or later<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.20/pygobject-2.20.0.win32-py2.6.exe pygobject-2.20.0.win32-py2.6.exe]<br />
|<!--Size-->163 KB<br />
|<!--From-->[http://ftp.gnome.org/ ftp.gnome.org]<br />
|<!--Comment-->"Run as admin" on Vista & later.<br />
|-<br />
|<!--Order-->5<br />
|<!--Package Name-->pycairo 1.4.12<br />
or later<br />
|<!--Download-->[http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/1.4/pycairo-1.4.12-2.win32-py2.6.exe pycairo-1.4.12-2.win32-py2.6.exe]<br />
|<!--Size-->86 KB<br />
|<!--From-->[http://ftp.gnome.org/ ftp.gnome.org]<br />
|<!--Comment-->"Run as admin" on Vista & later.<br />
|-<br />
|<!--Order-->6<br />
|<!--Package Name-->Validate Install<br />
|<!--Download-->NA<br />
|<!--Size-->NA<br />
|<!--From-->NA<br />
|<!--Comment--><br />
The following recommendations are for the validation <br />
of the proper installation of the above listed <br />
GRAMPS software prerequisites. <br />
<br />
After installing the items above on a VISTA 64 bit <br />
Ultimate System; GRAMPS could not locate any of <br />
the above software except for Python. This caused <br />
the installer to not install GRAMPS.<br />
<br />
After some time researching the issue I found <br />
the solution to my problem in a post by <br />
"steve geo at [http://old.nabble.com/3.1.1-install-program-problem-td22636394.html old.nabble.com]".<br />
<br />
NOTE:<br />
These steps should validate an installation on XP, <br />
Vista and Windows 7 with the caveat that the command <br />
window on Vista and Windows 7 should be opened using <br />
the "Run as Administrator" (Set your mouse pointer <br />
over the command prompt icon and right-click your <br />
mouse button to display the menu. Click on the <br />
"Run as Administrator" item.)<br />
<br />
1. Open up command window (see note above)<br />
<br />
2. If you installed the gtk-runtime software in <br />
row 2 above (SKIP to ahead to 3.)<br />
Type gtk-demo and press the enter key.<br />
<br />
a) If the gtk demo program does not load <br />
then it is likely you do not have the<br />
gtk bin directory in your path correctly.<br />
(Add your installation directory to your<br />
path environment variable) <br />
<br />
3. Change to the directory where you installed the <br />
Python application. By default it is likely <br />
installed at C:\Python26. Once in this folder type <br />
python and press the enter key<br />
<br />
a) Your command window should show you information <br />
about the version of Python installed on your <br />
computer and your prompt should be different <br />
and will likely look like ">>>"<br />
b) If you do not have a <br />
"drive:\[your python install directory]" you <br />
should run the python installation program. <br />
c) If your prompt does not change. Re-install <br />
python and watch closely for errors or a <br />
different drive and directory for the installation. <br />
<br />
4. At the Python prompt - likely ">>>"<br />
<br />
a) import pygtk<br />
b) import gtk<br />
c) import gobject<br />
The above items should complete without errors.<br />
5. If you are updating from a prevous GTK version, make sure you have "Graphviz" folder path AFTER the "GTK2 runtime 2.16" folder.<br />
It should look like this (in this order) PATH=... C:\Program files\GTK2 Runtime\bin;C:\Program files\Graphviz2.26\bin;C:\Program files\GS\GS8.64\bin. If "Graphviz" is located before "GTK2 Runtime 2.16" in the PATH folder order GRAMPS will not start.<br />
<br />
6. Reboot your computer. After reboot run GRAMPS install.<br />
|-<br />
|<!--Order-->Optional<br />
|<!--Package Name-->Graphviz<br />
|<!--Download-->[http://www.graphviz.org/pub/graphviz/stable/windows/graphviz-2.26.msi graphviz-2.26.msi]<br />
|<!--Size-->31 MB<br />
|<!--From-->[http://www.graphviz.org/ graphviz.org]<br />
|<!--Comment-->Needed to be able to generate relationship graphs (single page PDFs only)<br />
|-<br />
|<!--Order-->Optional<br />
|<!--Package Name-->GhostScript<br />
|<!--Download-->[http://mirror.cs.wisc.edu/pub/mirrors/ghost/GPL/gs864/gs864w32.exe gs864w32.exe]<br />
|<!--Size-->11.9 MB<br />
|<!--From-->[http://pages.cs.wisc.edu/~ghost/ pages.cs.wisc.edu/~ghost]<br />
|<!--Comment-->Needed to be able to generate PDFs through Ghostscript (multiple pages PDFs) Need to add manually gs\gs8.64\bin folder to system path!<br />
|}<br />
<br />
'''Note''': For Gramps 3.0.x and earlier use:<br />
* GTK+ 2.10.11 => [http://downloads.sourceforge.net/gladewin32/gtk-dev-2.10.11-win32-1.exe?download gtk-dev-2.10.11-win32-1.exe] (11.9 MB) <br />
* pygtk 2.10.6 => [http://ftp.acc.umu.se/pub/GNOME/binaries/win32/pygtk/2.10/pygtk-2.10.6-1.win32-py2.5.exe pygtk-2.10.6-1.win32-py2.5.exe] (1.8 MB, from [http://www.acc.umu.se www.acc.umu.se])<br />
<br />
'''3.''' Re-boot the computer after installing the above dependencies, prior to installing GRAMPS.<br />
<br />
'''4.''' Install GRAMPS for Windows. You can download the most recent stable version from [https://sourceforge.net/projects/gramps/files/ SourceForge].<br />
<br />
==Common problems==<br />
<br />
===Installer complains pygtk is missing===<br />
This is a very common error to see when all dependencies are not installed or installed correctly. Please make sure that each of the packages required have installed correctly, and re-boot the computer prior to running the GRAMPS installer. We often see users attempting to use other packages to satisfy these requirements that omit something necessary (e.g., glade) which produce this error.<br />
<br />
In rare occasions, the installer will complain that pygtk is not installed even though everything is correct. Canceling and re-running the installer seems to fix this problem, although if it happens repeatedly, the error is the more severe situation discussed above. (Anyone know why? Please tell us on the [https://lists.sourceforge.net/lists/listinfo/gramps-windows gramps-windows email list].)<br />
<br />
===GTK+ installer error===<br />
If you already have GTK+ installed, perhaps because you have installed [http://gimp-win.sourceforge.net/stable.html The GIMP], [http://www.pidgin.im/ Pidgin], or [http://gnucash.org Gnu Cash], the GTK+ installer will not be able to write to some files if one of those applications is running. If you see errors with the GTK+ installer, select Cancel, shut down the other GTK+ applications and run the installer again. (This issue has been reported as [http://sourceforge.net/tracker/index.php?func=detail&aid=1852930&group_id=98754&atid=621933 GTK+ Installer doesn't handle locked files well] to the kind people who make the GTK+ installer for windows.)<br />
<br />
===ImportError: DLL load failed:===<br />
This error is becoming increasingly common on recent GTK+/Windows combinations. Gramps does not have DLL's itself, it is usually caused by one of Gramps dependencies (Most likely Gtk+ runtime, not finding a required dependency). As this issue is more complicated to diagnose we have another page [[ImportError: DLL load failed| ''ImportError: DLL load failed'']] dedicated to discussing the issue.<br />
<br />
===Hang when started===<br />
In some environments GRAMPS may be unresponsive after displaying its window after being started, particularly after the first time. This can be worked around by running GRAMPS via a BAT file which first sets GRAMPSHOME to an accessible directory, as discussed on the [[GRAMPS_and_Windows#Setting_the_configuration_path|''GRAMPS and Windows'' page]].<br />
<br />
==Additional plugins==<br />
<br />
There are some features of Gramps that need additional programs to work. There are several different kinds of reports, and the following features need extra configuration to work on Windows. <br />
<br />
* The Relationship Graph reports (both graphical report and code generator) need an installation of [http://www.graphviz.org Graphviz]. There is a bug in the current stable release, see this [[Howto:_Make_a_relationship_chart#Example_3.2C_Generating_the_graph_by_using_the_Graphviz_command_line_tool |example]].<br />
* The Relationship Graph can not use PDF as output format unless there is an installation of [http://pages.cs.wisc.edu/~ghost/ ghostscript]. After installation, if gswin32.exe or gswin32c.exe is in the path, PDF should appear as one of the formats in the graphical Relationship Graph report.<br />
* '''Spell-checking:'''<br />
*# For spell-checking to work you first need [http://www.abisource.com/projects/enchant/ Enchant library] and python bindings [http://www.rfk.id.au/software/pyenchant/ PyEnchant]. Enchant appears to be a generic spell checking library. You can request dictionaries from it, ask if a word is correctly spelled, get corrections for a misspelled word, etc... PyEnchant is a set of language bindings and some wrapper classes to make the excellent Enchant spellchecker available as a Python module. Both are available for windows as single setup file:<br />
*#* [http://pypi.python.org/packages/any/p/pyenchant/pyenchant-1.5.3.win32.exe pyenchant-1.5.3.win32.exe]<br />
*# Secondly you need [http://www.pygtk.org/pygtkspell/ PyGTKSpell] from [http://www.pygtk.org/about.html gnome-python-extras] which is bindings allowing to run Python programs using the [http://gtkspell.sourceforge.net/ GtkSpell library], that extends GTK+'s GtkTextView widget with support for spell-checking. Depending of yours Python version download and install one of these:<br />
*#* [[Media:PyGTKSpell-2.25.3.win32-py2.6.zip|PyGTKSpell-2.25.3.win32-py2.6.exe]] or [http://nascent-project.org/barts/Spellchecker_for_Gramps_Portable_3.2.5_Development_Test_1.paf.exe pyenchant 1.5.3, PyGTKSpell 2.25.3] for Python 2.6<br />
*# To install additional dictionaries read tutorial on PyEnchant site:<br />
*#* http://www.rfk.id.au/software/pyenchant/tutorial.html#installation-dicts<br />
* GeoView needs WebKit and python-WebKit.<br />
Experimental versions are available [[GeoView#windows_XP.2FVista|for tests with python 2.6 under Windows]].<br />
<br />
==Limitations==<br />
<br />
At this time, there is no intent to package all the dependencies and the GRAMPS package into one installer. This creates a very complex coordination condition between GRAMPS and these other projects. It also means a single 30+ MB download every version change. However work is started to create installable [[Gramps_Software_Bundle_for_Windows | bundle]] of core dependencies.<br />
<br />
There have been discussions about trying to install compiled distillations (dynamic link libraries) of these core dependencies to avoid having to install the entire Python and GTK environment, but this work never progressed beyond discussion. For more about this and other Windows issues, see the [https://lists.sourceforge.net/lists/listinfo/gramps-windows email list] archive.<br />
<br />
On Windows Vista you will need to save the executable using "save as" and run it as administrator, otherwise the programs will not be able to write to the registry on installation. To do that right click the saved file and choose "run as administrator".<br />
<br />
== See also ==<br />
* [[GRAMPS and Windows]] describes users experiences using GRAMPS on Windows.<br />
* [http://apps.sourceforge.net/mediawiki/gramps4win/index.php?title=Main_Page GRAMPS for Windows] Wiki and Downloads - SourceForge.net<br />
* [https://lists.sourceforge.net/lists/listinfo/gramps-windows GRAMPS Windows mailing list]<br />
<br />
[[Category:Documentation]][[Category:Developers/Packaging]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Download&diff=29656Download2011-08-03T17:09:04Z<p>PaulFranklin: /* Community supported */</p>
<hr />
<div>{{languages}}<br />
===The latest released version===<br />
* Version '''GRAMPS''' {{version}} was released. All releases of GRAMPS are available from [https://sourceforge.net/projects/gramps/files/ the download page on SourceForge].<br />
<br />
Visit the following page for instructions on:<br />
* [[Installation]]<br />
* [[Installation#Upgrading_GRAMPS|Upgrading]]<br />
* [[3.2 Addons|Addons]] - third-party plugins<br />
<br />
===Officially supported===<br />
* Only the Linux platform is officially supported as [[Portal:Developers|GRAMPS developers]] use and test the '''source code''' on that platform, fixing any problems that arise due to upgrades.<br />
<br />
{| {{Prettytable}}<br />
! Platform<br />
! GRAMPS<br>Release<br />
! Download<br />
! Note<br />
|-<br />
|<!-- Platform -->Linux<br />
|<!-- GRAMPS<br>Release -->Assorted<br />
|<!-- Download -->[[Installation#Installing_GRAMPS_from_source_code|Installation from source]]<br />
|<!-- Note -->Building of GRAMPS from source required<br />
|}<br />
<br />
===Community supported===<br />
*A platform is community supported when users have created an installable version for that platform. Full functionality of GRAMPS is not guaranteed and some components may be disabled. Developers are dependent on the community to fix any issues that arise. The GRAMPS developers aim to have GRAMPS working on all platforms, but have no resources to do specific testing to assure this is the case on release of a new version.<br />
<br />
{| {{Prettytable}}<br />
! Platform<br />
! GRAMPS<br>Release<br />
! Download<br />
! Note<br />
|-<br />
|<!-- Platform -->Windows<br />
|<!-- GRAMPS<br>Release -->{{version_windows_AIO32}}<br>(All In One)<br>[[Gramps_3.3_Wiki_Manual_-_Manage_Family_Trees#Backing_up_a_Family_Tree|Needs backup]]<br />
|<!-- Download -->[http://sourceforge.net/projects/gramps/files/Stable/3.3.0/ GrampsAIO-{{version_windows_AIO32}}-1.exe]<br>(41.3 MB)<br />
|<!-- Note --> [[Gramps Software Bundle for Windows |All In One GRAMPS]] includes all dependencies required for Windows<br>By Josip - '''Please report issues to the author.''' (2011-06-21)<br />
|-<br />
|<!-- Platform -->Windows<br />
|<!-- GRAMPS<br>Release -->{{version_windowsOS}}<br />
|<!-- Download -->[http://sourceforge.net/projects/gramps/files/Stable/{{version_windowsOS}} gramps-{{version_windowsOS}}-1.exe] (8.2 MB)<br />
|<!-- Note -->[[Windows_installer#Installation|Download and install Windows dependencies first]]<br />
|-<br />
|<!-- Platform -->Windows<br />
|<!-- GRAMPS<br>Release -->{{version_windows_portable}}<br>[[Gramps_3.2_Wiki_Manual_-_Manage_Family_Trees#Backing_up_a_Family_Tree|Needs backup]]<br />
|<!-- Download -->[http://sourceforge.net/projects/portableapps/files/Gramps%20Portable/ GrampsPortable_{{version_windows_portable}}.paf.exe]<br>(17.4 MB)<br />
|<!-- Note -->[http://portableapps.com/apps/education/gramps_portable Portable GRAMPS from PortableApps.com] includes all dependencies required for Windows.<br>''Note:You can install it on C: then to run Gramps type C:\PortableApps\GrampsPortable\GrampsPortable.exe (Or the path you installed it to) or make a shortcut to that file on your desktop or start-menu.''<br>By Bart.S - '''Please report issues to the author.''' (2011-05-17)<br />
|-<br />
|<!-- Platform -->Windows<br>(64 Bit)<br />
|<!-- GRAMPS<br>Release -->{{version_windows_AIO64}}<br>(All In One)<br>[[Gramps_3.2_Wiki_Manual_-_Manage_Family_Trees#Backing_up_a_Family_Tree|Needs backup]]<br />
|<!-- Download -->[http://rapidshare.com/users/K65PY0/ GrampsAIO64-{{version_windows_AIO64}}-1.exe]<br>(42.5 MB)<br />
|<!-- Note --> [[Gramps Software Bundle for Windows |All In One GRAMPS]] includes all dependencies required for Windows<br>''Only for installation on 64 bit windows. If you have installed the 32bit version uninstall first then install this version''<br>[http://gramps.1791082.n4.nabble.com/GrampsAIO-64bit-td3167217.html 64bit version Under Development] By Josip - '''Please report issues to the author.''' (2011-06-05)<br />
|-<br />
|<!-- Platform --><br />
|<!-- GRAMPS<br>Release --><br />
|<!-- Download --><br />
|<!-- Note --><br />
|-<br />
|<!-- Platform -->Linux<br />
|<!-- GRAMPS<br>Release -->{{version}}<br />
|<!-- Download -->[[Installation#Automatic_download_and_install_of_GRAMPS|Automatic installation]]<br />
|<!-- Note -->Depends on version of Linux used<br />
|-<br />
|<!-- Platform -->Linux<br />
|<!-- GRAMPS<br>Release -->{{version}}<br />
|<!-- Download -->[[Installation#Manual_download_and_install_of_GRAMPS|Manual installation]]<br />
|<!-- Note -->Depends on version of Linux used<br />
|-<br />
|<!-- Platform --><br />
|<!-- GRAMPS<br>Release --><br />
|<!-- Download --><br />
|<!-- Note --><br />
|-<br />
|<!-- Platform -->Linux Live CD<br />
|<!-- GRAMPS<br>Release -->3.2.5<br />
|<!-- Download -->[[Linux_Genealogy_CD#Obtaining_the_CD|ubuntu10.10 lgenealogy-6.1-desktop-i386.iso]]<br>(727 MB)<br />
|<!-- Note -->[[Linux Genealogy CD|Linux Genealogy CD based on Ubuntu 10.10 (Maverick Meerkat)]]<br />
|-<br />
|<!-- Platform --><br />
|<!-- GRAMPS<br>Release --><br />
|<!-- Download --><br />
|<!-- Note --><br />
|-<br />
|<!-- Platform -->BSD<br />
|<!-- GRAMPS<br>Release -->{{version_BSD}}<br />
|<!-- Download -->[http://portsmon.freebsd.org/portoverview.py?category=science&portname=gramps FreeBSD port]<br />
|<!-- Note -->[[BSD page|BSD information]]<br />
|-<br />
|<!-- Platform --><br />
|<!-- GRAMPS<br>Release --><br />
|<!-- Download --><br />
|<!-- Note --><br />
|-<br />
|<!-- Platform -->Solaris<br />
|<!-- GRAMPS<br>Release -->3.0.1<br />
|<!-- Download -->[[Solaris page|Solaris platforms]]<br />
|<!-- Note -->Building of GRAMPS from source required<br />
|-<br />
|<!-- Platform --><br />
|<!-- GRAMPS<br>Release --><br />
|<!-- Download --><br />
|<!-- Note --><br />
|-<br />
|<!-- Platform --> Mac OS X<br />
|<!-- GRAMPS<br>Release -->{{version_MacPort}}<br />
|<!-- Download -->[[Mac OS X MacPorts]]<br />
|<!-- Note -->New and relatively untested (March 2010)<br />
|-<br />
|<!-- Platform -->Mac OS X<br />
|<!-- GRAMPS<br>Release -->{{version_Mac}}<br />
|<!-- Download -->[[Using GRAMPS on Apple Mac]] (37MB)<br />
|<!-- Note -->New and relatively untested (October 2010).<br />
|}<br />
<br />
[[Category:Documentation]]<br />
[[Category:Developers/Installation]]<br />
[[Category:Developers/Packaging]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Installation&diff=29508Installation2011-07-02T15:51:18Z<p>PaulFranklin: /* Fedora */</p>
<hr />
<div>{{languages}}<br />
[[Category:Documentation]][[Category:Developers/Installation]][[Category:Developers/Packaging]]<br />
<br />
== Latest released version ==<br />
<br />
The latest released version is '''GRAMPS''' {{version}}. This version may not yet be available for installation on your platform. Please visit the [[Download]] page for more information.<br />
<br />
== Upgrading GRAMPS ==<br />
<br />
If you are '''Upgrading GRAMPS''' from a previous version you should first:<br />
<br />
# Use your '''old version of GRAMPS''' to '''export''' your Family Trees to GRAMPS XML ('''uncheck privacy options''' on Exporter Assistant)<br />
# '''Uninstall''' your old version of GRAMPS<br />
# '''Install''' the new version of GRAMPS by following the instructions below<br />
# '''Create''' a new Family Tree<br />
# '''Import''' your old GRAMPS XML data<br />
<br />
==Additional software GRAMPS can benefit from==<br />
GRAMPS does not rely on the following programs, however, having them will increase your productivity:<br />
<br />
* '''Spell checking''': Installing gnome-python2-extras and python-enchant provides the gtkspell module and the enchant module, which adds spell checking in the notes<br />
* '''[http://www.graphviz.org Graphviz]''', '''Inkscape''': Gramps can make nice Genealogical trees (relationship graphs). These are generated by the Graphviz package, which defines a code (dot), as well as programs to produce graphs (dotty, to be called from command line). This gives you as researcher most power over how your tree will look, but has a learning curve. An alternative is to make a graphical report, converting the tree to an svg file, which you then can open/edit/refine in eg Inkscape.<br />
* '''ttf-freefont''': Useful as a font that supports a large subset of the unicode and is a true type. This works well with both print and graphviz output.<br />
* '''[http://portland.freedesktop.org/wiki/ XdgUtils]''' is a set of command line tools that assist applications with a variety of desktop integration tasks. About half of the tools focus on tasks commonly required during the installation of a desktop application and the other half focuses on integration with the desktop environment while the application is running. Even if the desktop components of your application are limited to an installer, configuration or management tool, Xdg-utils provides you with an easy way to enhance the usage experience of your customers by improving the integration of these components in the user's environment.<br />
* '''[http://tilloy.net/dev/pyexiv2/overview.html pyexiv2]''' is a module that allows Gramps to read and write metadata embedded in image files. It is used in the Metadata Viewer and Edit Exif Metadata gramplets.<br />
* '''[http://nzjrs.github.com/osm-gps-map/ osmgpsmap]''' is a library which provides GPS mapping functionality. It is used in the Geography views.<br />
<br />
Other packages might also be useful:<br />
<br />
* '''desktop-file-utils''': see list of programs to open a media file on right click on an image<br />
<br />
==Linux==<br />
===Automatic download and install of GRAMPS===<br />
Before downloading GRAMPS from this site, see if your operating system's repository makes the current version available. To see what the current version is, visit [http://sourceforge.net/projects/gramps/files/Stable/ GRAMPS stable on Sourceforge] and look at the version number of the top package.<br />
<br />
To check what is available specifically for your Linux operating system some methods are listed below:<br />
{|{{prettytable}}<br />
!Linux Operating System<br />
!Command Line<br />
|-<br />
|<!--Linux Operating System-->Debian based systems<br>(Ubuntu & variants, Mepis,...)<br />
|<!--Command Line--><code>sudo apt-get install gramps</code><br />
|-<br />
|<!--Linux Operating System-->Gentoo (and Sabayon)<br />
|<!--Command Line--><code>sudo emerge gramps </code><br />
|-<br />
|<!--Linux Operating System-->Mandriva<br />
|<!--Command Line--><code>sudo urpmi gramps</code><br />
|-<br />
|<!--Linux Operating System-->Redhat based systems<br>(Fedora, CentOS...)<br />
|<!--Command Line--><code>sudo yum install gramps</code><br />
|-<br />
|<!--Linux Operating System-->OpenSUSE<br />
|<!--Command Line--><code>sudo zypper install gramps</code><br />
|}<br />
<br />
===Manual download and install of GRAMPS===<br />
If your Linux operating systems repository does not have the current version, then you may be able to download it from this site. Some helpful users of GRAMPS have made packages for various systems. If you are lucky you'll find your system below. If it's missing you can contact the developers email list for advice.<br />
<br />
====Ubuntu and derivatives====<br />
Repository packages for '''Ubuntu''' and derivatives (Kubuntu, Mephis, LinuxMint, ...): are available on [http://sourceforge.net/projects/gramps/files/Stable/ GRAMPS download page].<br />
<br />
{|{{prettytable}}<br />
!Ubuntu (Version)<br />
! GRAMPS<br>Release<br />
!Download<br />
|-<br />
|<!-- Ubuntu (Version) --> (10.10)<br />
|<!-- GRAMPS<br>Release -->3.3.0<br />
|<!-- Download -->[http://sourceforge.net/projects/gramps/files/Stable/3.3.0/gramps_3.3.0-1_Ubuntu.deb/download gramps_3.3.0-1.deb] <br />
|-<br />
|<!-- Ubuntu (Version) --> (10.04)<br />
|<!-- GRAMPS<br>Release -->3.3.0<br />
|<!-- Download -->[http://sourceforge.net/projects/gramps/files/Stable/3.3.0/gramps_3.3.0-1_Ubuntu.deb/download gramps_3.3.0-1.deb] <br />
|-<br />
|<!-- Ubuntu (Version) --> (9.10)<br />
|<!-- GRAMPS<br>Release -->3.2.2<br />
|<!-- Download -->[http://sourceforge.net/projects/gramps/files/Stable/3.2.2/gramps_3.2.2-1_ubuntu09.deb/download gramps_3.2.2-1_Ubuntu09.deb] <br />
|-<br />
|<!-- Ubuntu (Version) -->Jaunty Jackalope (9.04)<br />
|<!-- GRAMPS<br>Release -->3.2.2<br />
|<!-- Download -->[http://sourceforge.net/projects/gramps/files/Stable/3.2.2/gramps_3.2.2-1_ubuntu09.deb/download gramps_3.2.2-1_Ubuntu09.deb] <br />
|-<br />
|<!-- Ubuntu (Version) -->Intrepid Ibex (8.10)<br />
|<!-- GRAMPS<br>Release -->3.1.3<br />
|<!-- Download -->[http://sourceforge.net/projects/gramps/files/Stable/3.1.3/gramps-3.1.3-1_Ubuntu.deb/download gramps-3.1.3-1_Ubuntu.deb] <br />
|-<br />
|<!-- Ubuntu (Version) -->Hardy (8.04)<br />
|<!-- GRAMPS<br>Release -->3.1.3<br />
|<!-- Download -->[http://sourceforge.net/projects/gramps/files/Stable/3.1.3/gramps-3.1.3-1_Ubuntu.deb/download gramps-3.1.3-1_Ubuntu.deb]<br />
|-<br />
|<!-- Ubuntu (Version) -->Gutsy (7.10)<br />
|<!-- GRAMPS<br>Release -->3.0.3<br />
|<!-- Download -->[http://sourceforge.net/project/showfiles.php?group_id=25770 gramps_3.0.3-1_ubuntu710.deb]<br />
|-<br />
|<!-- Ubuntu (Version) -->Feisty (7.04)<br />
|<!-- GRAMPS<br>Release -->2.2.10<br />
|<!-- Download -->Download [http://sourceforge.net/project/showfiles.php?group_id=25770 gramps_2.2.10-1_all.deb]<br>and [http://sourceforge.net/project/showfiles.php?group_id=25770 gramps-help_2.2.10-1_all.deb], and install with your package manager.<br />
|-<br />
|<!-- Ubuntu (Version) -->Dapper, Edgy<br> and earlier versions of Ubuntu<br />
|<!-- GRAMPS<br>Release -->2.2.8<br />
|<!-- Download -->Download [http://sourceforge.net/project/showfiles.php?group_id=25770 gramps_2.2.8-1dapper1_all.deb]<br>and [http://sourceforge.net/project/showfiles.php?group_id=25770 gramps-help_2.2.8-1dapper1_all.deb], and install with your package manager.<br />
|}<br />
<br />
====Debian====<br />
'''Debian''': the latest version should be in the ''unstable'' repository ([http://packages.debian.org/sid/gramps Sid Gramps]) and can be upgraded from your package manager. The ''testing'' repository is updated 10 days later (except near a new stable release), see [http://packages.debian.org/testing/gramps Testing Gramps]. Released versions of Debian (''etch'' and ''lenny'') contain older versions of GRAMPS, see the list of [http://packages.debian.org/search?keywords=gramps versions of GRAMPS in Debian].<br />
<br />
====SuSE====<br />
'''SuSE''': Richard Bos has been providing the GRAMPS releases for OpenSUSE. The repository for OpenSUSE 11.1 is available from [http://download.opensuse.org/repositories/Education/openSUSE_11.1/] or [http://download.opensuse.org/repositories/home:/cornelisbb/]. Note that at the time of writing this repository is not the same as that in the repository list as "Education" and must be added as a URL. The repository for 11.0 is [http://download.opensuse.org/repositories/Education/openSUSE_11.0/] and 10.3 is [http://download.opensuse.org/repositories/Education/openSUSE_10.3/]. For earlier versions of OpenSUSE (10.2) see the forum entry about [http://www.suseforums.net/index.php?s=22f80a050a1e3cffffd590db0813dea9&showtopic=28727&pid=152093&st=0&#entry152093 satisfying GRAMPS dependencies for SuSE with the ''rbos'' and SMART]. Also, there is [[OpenSUSE_RPM|an other alternative using openSUSE BuildService]].<br />
<br />
====Mandriva====<br />
'''Mandriva''': Newer versions of GRAMPS are sometimes backported. To install backports you must enable the ''backports'' repository (make sure you understand the instructions on the [http://wiki.mandriva.com/en/Docs/Basic_tasks/Installing_and_removing_software#Advanced_use:_Backports_and_candidate_updates Mandriva wiki]). If the latest version is not in the ''backports'' repository you cab try the ''contrib'' repository.<br />
<br />
====Fedora====<br />
'''Fedora''': For Fedora look on the [http://sourceforge.net/project/showfiles.php?group_id=25770 GRAMPS download page] for a package containing ''fc'' with your number and ending with ''.rpm''. The alternative to installing from source is to [[fedora rpm|build a package]] from an rpm spec file, or install a binary from fedora testing.<br />
<br />
===Slackware===<br />
'''Slackware 13.0''': Gramps 3.2.3 is available via [http://www.linuxpackages.net/pkg_details.php?id=13253 LinuxPackages].<br />
<br />
====Different GNU/Linux distributions====<br />
Different GNU/Linux distributions have other preferred ways to download and install packages for GRAMPS. Please read the installation instructions specific to your distribution before downloading.<br />
<br />
In all other cases, you must [http://sourceforge.net/project/showfiles.php?group_id=25770 download] the source package (the file ending with '.tar.gz') and install GRAMPS manually. See the section about installing from source for details.<br />
<br />
===Gnome and KDE===<br />
You can use both, but GRAMPS fits in better with GNOME.<br />
<br />
For KDE there are some minor issues due to some (GTK) issues outside of GRAMPS. Check the [[KDE page]] to know what these problems might be.<br />
<br />
For GNOME, there are some issues due to some (ATK/GAIL) issues outside of GRAMPS. Check the [[Known_issues|Known issues]] to know what these problems might be.<br />
<br />
Also, you might look at [http://portland.freedesktop.org/wiki/ XdgUtils].<br />
<br />
===GRAMPS on handhelds===<br />
GRAMPS can run fine on some small-factor devices. Users have been successful in using GRAMPS on: <br />
* [[Gramps on the Eee|Asus Eee PC]]<br />
* [http://gramps-project.org/2011/01/gramps-mobile-interface-part-i/ Gramps Mobile Interface – part I] & [http://gramps-project.org/2011/01/gramps-mobile-interface-%E2%80%93-part-ii/ part II]<br />
<br />
===Live Genealogy CD===<br />
If you are interested in GRAMPS, but are afraid to actually install it or unable to install it (not your PC, windows, no internet at home, work laptop, ...), then try out our [[Linux Genealogy CD]]. It runs without installing on the hard disk and contains a collection of open source, free, genealogy programs. You can then install [http://www.ubuntulinux.org/ Ubuntu 10.10] and GRAMPS from the CD anytime you like.<br />
<br />
==Windows, FreeBSD, Mac OS X, Solaris==<br />
===Windows===<br />
Be aware there is a least 3 different ways you can install/use GRAMPS under windows. The method you choose will be dependent on ''your'' requirements and how much extra work you wish to put into setting up your environment.<br />
In order of difficulty:<br />
* GRAMPS All-in-one installer (AIO) - While still under development the AIO installer has the lowest barrier of entry, see [[ Gramps Software Bundle for Windows]] for more information.<br />
* GRAMPS Portable - Allows you to Run GRAMPS from a portable drive and can be installed to the local hard drive see the [http://portableapps.com/apps/education/gramps_portable PortableApps.com Gramps Portable] page for more information.<br />
* GRAMPS installer (minimal) - Stable installer, however it requires you to install all of GRAMPS dependencies prior to installing GRAMPS. see [[Windows_installer#Installation | Installing Windows dependencies first.]]<br />
<br />
<br />
More information of each of these installation methods can be seen on the [[download]] page.<br />
<br />
*Additional information for Windows users is on page [[GRAMPS and Windows]].<br />
<br />
====Building from source====<br />
<br />
Fortunately for users of Microsoft Windows, some users have made a [[Windows installer]]. So far there have not been any reports of serious differences between the official builds of GRAMPS and the Windows Installer, so the future looks promising, but please, use this at your own risk.<br />
<br />
===Mac OS X===<br />
<br />
====Ready-built binary application====<br />
<br />
A new port of Gramps to Mac is available (September 2010). This is relatively untested and it is wise to back up data carefully before running it. It's available as a ready-built binary application for both Intel and PPC Macs.<br />
<br />
Mac for Gramps is described at [[Using Gramps on Apple Mac]].<br />
<br />
====Building from source====<br />
<br />
The pre-built binary version is also available as a build environment and can be built from scratch by any Mac with the Apple Xcode toolset.<br />
<br />
Macports and Fink versions of Gramps have been used. An overview of installing GRAMPS from source on the Mac is given under [[Mac_OS_X|Installing from source code on Mac OS X]].<br />
<br />
The latest version of MacPorts Gramps is '''{{version_MacPort}}'''.<br />
The latest official stable fink version is '''1.0.10''' for Mac OS X 10.4. <br />
The latest official unstable fink version is '''3.0.4''' for Mac OS X 10.5.<br />
<br />
===Free/OpenBSD and Solaris===<br />
<br />
For FreeBSD and Solaris there are experimental install instructions.<br />
* For FreeBSD use the [http://portsmon.freebsd.org/portoverview.py?category=science&portname=gramps /usr/ports/science/gramps] port. In case of error on FreeBSD 8.0, read [http://www.gramps-project.org/bugs/view.php?id=3228 ticket 3228].<br />
* For OpenBSD use the [http://openports.se/misc/gramps gramps port]<br />
* Installing on BSD is as straightforward as on Linux, apart from some minor issues like tools having different names. See the [[BSD Platforms|BSD page]] for details.<br />
* GRAMPS has been successfully installed from source on both Solaris 10 (SPARC) and OpenSolaris X86 (2008.05). Please see the [[Solaris Platforms|Solaris page]] for step-by-step details.<br />
<br />
==Installing GRAMPS from source code==<br />
===General requirements===<br />
<br />
GRAMPS {{version}} requires python 2.6 or greater, pygtk 2.16 or greater and librsvg2<br />
<br />
==== Linux package requirements ====<br />
{|{{Prettytable}}<br />
|-<br />
!Debian /Ubuntu <br />
!Fedora /Redhat<br />
!Comment<br />
|-<br />
|python<br />
|python <br />
|Required (needs version 2.6 or later)<br />
|-<br />
|python-gtk2<br />
|pygtk2<br />
|Required (needs 2.16 or greater)<br />
|-<br />
|[http://docs.python.org/library/bsddb.html BSDDB]<br />
|[http://docs.python.org/library/bsddb.html BSDDB]<br />
|Current backend<br />
|-<br />
|librsvg2-common<br />
|librsvg2<br />
|Required for building<br />
|-<br />
|libglib2.0-dev<br />
|glib2-devel<br />
|Required for building<br />
|-<br />
|<br />
|librsvg2-devel<br />
|Required for building<br />
|-<br />
|intltool<br />
|intltool<br />
|Required for building<br />
|-<br />
|<br />
|gcc make gettext<br />
|Required for building<br />
|-<br />
|<br />
|-<br />
|xdg-utils<br />
|xdg-utils<br />
|Required for Gramps-3.1.x or later<br />
|-<br />
|rcs<br />
|rcs<br />
|Suggested for running<br />
|-<br />
|python-gtkspell<br />
|gnome-python2-gtkspell<br />
|Suggested for running (spell check). Included in the python-gnome2-extras package in older Debian distributions.<br />
|-<br />
| python-webkit python-gtkmozembed<br />
| WebKitgtk pywebkitgtk<br />
| Required for the HTML view<br />
|-<br />
| python-pygoocanvas<br />
| goocanvas pygoocanvas<br />
| Required for [[Graph View]]<br />
|-<br />
| graphviz<br />
| graphviz graphviz-python<br />
| Required for some reports and views<br />
|-<br />
|<br />
| Django<br />
| Required for http://gramps-connect.org<br />
|-<br />
| python-pyexiv2<br />
| pyexiv2<br />
| Required for the Metadata Viewer and Edit Exif Metadata gramplets<br />
|-<br />
| libosmgpsmap-dev python-osmgpsmap<br />
| osm-gps-map<br />
| Required for the Geography views<br />
|}<br />
<br />
Under Redhat/Fedora you can install all of the above with:<br />
<br />
<pre><br />
sudo yum install python pygtk2 xdg-utils rcs gnome-python2-gtkspell librsvg2 \<br />
librsvg2-devel intltool gnome-doc-utils gcc automake autoconf autogen \<br />
gettext WebKitgtk pywebkitgtk goocanvas pygoocanvas graphviz graphviz-python \ Django pyexiv2 inkscape ImageMagick<br />
</pre><br />
<br />
====Obtaining the source====<br />
<br />
There are two ways to get the source code: download a stable version source, or checkout the source from svn. Please, now is the time to read the [http://gramps.svn.sourceforge.net/viewvc/gramps/trunk/INSTALL?view=markup INSTALL] and [http://gramps.svn.sourceforge.net/viewvc/gramps/trunk/README?view=markup README] files accompanying the code. They come with the most recent information. Details on each download method:<br />
<br />
'''1. Download a stable version'''<br />
<br />
* The latest stable version of GRAMPS can be downloaded from the [http://sourceforge.net/projects/gramps GRAMPS SourceForge page]. Eg: gramps-{{version}}.tar.gz. Extract this file into a directory:<br />
<code><br />
tar xzvf gramps-zzz.tar.gz<br />
</code> and then go into this directory:<code><br />
cd gramps-zzz<br />
</code><br />
* If you are interested in testing out the very latest development versions of GRAMPS, they can be obtained from SVN, see [[Brief introduction to SVN#Unstable_development:_.22trunk.22|Brief introduction to SVN]]. The SVN versions of GRAMPS are potentially very dangerous as they have not been extensively tested - especially the "trunk" version which contains features that may still be partly implemented. Be aware that they may be prone to crashing and cause extensive data loss. Please use with extreme caution - and only ever on a copy of your data!<br />
<br />
'''2. Download from SVN'''<br />
<br />
You can get a branch version (similar as above) or the latest bleeding-edge version through SVN, such as:<br />
<br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps gramps<br />
or<br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/tags/gramps-3.2.5 gramps<br />
<br />
for the most recent development version, see [[Running a development version of Gramps]].<br />
<br />
'''3. Tarball from SVN'''<br />
<br />
You can get tarball for last sources.<br />
<br />
* [http://gramps.svn.sourceforge.net/viewvc/gramps/branches/maintenance/gramps32/?view=tar 3.2.x]<br />
<br />
* [http://gramps.svn.sourceforge.net/viewvc/gramps/branches/maintenance/gramps33/?view=tar 3.3.x]<br />
<br />
* [http://gramps.svn.sourceforge.net/viewvc/gramps/trunk/?view=tar Trunk]<br />
<br />
====Upgrading GRAMPS====<br />
<br />
If you have an older version of the GRAMPS source code installed you need to make a decision what you want to do with it before installing a later version. If you wish to keep the old version, make sure that you read the instructions in the INSTALL file regarding the use of the --prefix option to specify where the new version gets installed.<br />
<br />
Should you just want to do a straightforward replacement instead, make sure that you remove the older version before you install the new version. Do not install over the top of the old version. As new versions of Gramps are developed, some functionality is occasionally rewritten in different ways. If you install over the top of an existing installation you run the risk that the old code left behind from the old version may be used instead of the new, sometimes with unintended consequences. If you installed from source, the best way of removing the old version is to run<code><br />
make uninstall</code><br />
<br />
as root '''from where you installed the old version'''. Use your distribution's package manager to uninstall if your old version was installed as a package.<br />
<br />
'''Note that you should use your old GRAMPS version to export backup copies to GRAMPS XML before removing the old version.'''<br />
<br />
===Linux===<br />
<br />
GRAMPS provides a script that can be used to prepare the code for building. This script automatically calls the standard configure script:<code><br />
./autogen.sh </code> # as regular user<br />
<br />
This script will report any missing dependencies. Install these (see also INSTALL file). Building from source code typically requires that the development versions of the required libraries be installed. You might consider setting a prefix path with autogen.sh, see the INSTALL file for instructions. Standard install is in /usr/local.<br />
<br />
Once a successful run of autogen.sh has been completed, you can run the typical make procedure. <code><br />
make </code> # as regular user<br />
<br />
then <code><br />
make install </code> # as root<br />
<br />
Local installation without root privileges is possible, instructions are available on the INSTALL file, most importantly one needs to supply a <code>--prefix=</code> and a <code>--with-mime-dir=</code> argument to <code>autogen.sh</code>.</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Gramps_3.3_Wiki_Manual_-_Reports_-_part_2&diff=29152Gramps 3.3 Wiki Manual - Reports - part 22011-06-10T23:22:05Z<p>PaulFranklin: </p>
<hr />
<div>This section describes the substitution values that can be used in the different reports available in GRAMPS.<br />
{{man index|Gramps 3.3 Wiki Manual - Reports - part 1|Gramps 3.3 Wiki Manual - Reports- part 3|3.3}}<br />
<br />
<br />
[[Category:Documentation]][[Category:Plugins]]<br />
<br />
<br />
{{grampsmanualcopyright}}<br />
<br />
{{languages|Gramps_3.3_Wiki_Manual_-_Reports - part 2}}<br />
<br />
Back to [[Gramps_3.3_Wiki_Manual_-_Reports|Index of Reports]].<br />
<br />
= Substitution Values =<br />
<br />
Many of the graphical reports allow you to customize the information that is displayed on the reports. Variable substitution is the method that is used to substitute a particular symbol (key) for specific information about the person in the database.<br />
<br />
{|<br />
|-<br />
|Example: <br />
|Will show as: (the person is alive)<br />
|-<br />
|<pre>$n<br />
b. $b $B<br />
d. $d $D</pre><br />
|<pre>Smith, Edwin Michael<br />
b. 1961-05-24 San Jose, Santa Clara Co., CA<br />
d.</pre><br />
|}<br />
<br />
== The Substitution Keys ==<br />
<br />
{|<br />
|-<br />
| colspan="2"|'''Personal variables'''<br />
| colspan="2"|'''Marital variables'''<br />
|-<br />
|$n<br />
|Displays the person's name<br />
|$s<br />
|Displays the name of the person's spouse<br />
|-<br />
|$i<br />
|Displays the GRAMPS ID for the person.<br />
|$j<br />
|Displays the GRAMPS ID for the marriage.<br />
|-<br />
|$b<br />
|Displays the person's date of birth <br />
|$m<br />
|Displays the marriage date of the person and the spouse.<br />
|-<br />
|$B<br />
|Displays the person's place of birth <br />
|$M<br />
|Displays the place of the marriage of the person and the spouse.<br />
|-<br />
|$d<br />
|Displays the person's date of death <br />
|$v<br />
|Displays the divorce date of the person and the spouse.<br />
|-<br />
|$D<br />
|Displays the person's place of death <br />
|$V<br />
|Displays the place of the divorce of the person and the spouse.<br />
|-<br />
|$a<br />
|Displays an attribute about the person.<br />
see [[#Attributes|Attributes]] for more<br />
|$u<br />
|Displays an attribute about the marriage.<br />
see [[#Attributes|Attributes]] for more<br />
|-<br />
|$e<br />
|Displays event information about the person.<br />
See [[#Events|Events]] for more<br />
|$t<br />
|Displays an event information about the marriage.<br />
See [[#Events|Events]] for more<br />
|}<br />
<br />
All of the Marital variables are defined by the person's preferred spouse in Gramps. If the person has never been married, then these variables will not display anything.<br />
<br />
----<br />
=== Default displayed formats ===<br />
<br />
{|<br />
|-<br />
|$n $s<br />
|Names will be displayed as set in 'Name format:' on the Display tab in Gramps preferences<br />
|-<br />
|$B $D $M $V<br />
|Places will display the Place title by default<br />
|-<br />
|$b $d $m $v<br />
|Dates will be displayed as set in 'Date format:' on the Display tab in Gramps preferences<br />
|-<br />
|$e $t<br />
|Events will display the description by default<br />
|}<br />
<br />
----<br />
{|<br />
|-<br />
|1<br />
|If you wish to display names, date, or place information differently, you may use [[#Format Strings|Format Strings]] to accomplish this.<br />
|-<br />
|2<br />
|There are also [[#Control Variables|Control Variables]] to display special characters (like the dollar sign).<br />
|-<br />
|3<br />
|You can also use [[#Grouping|Grouping]] to optionally display information or whole lines<br />
|-<br />
|4<br />
|Along with [[#Events|Events]] you can print almost anything.<br />
|-<br />
|5<br />
|Finally, [[#Separators|Separators]], to make your life complete.<br />
|-<br />
|}<br />
<br />
----<br />
<br />
=== Deprecated variables ===<br />
<br />
Some of the old variables were deprecated because [[#Format Strings|Format Strings]] have replaced them. So here is a list of those variables and how to achieve their results:<br />
<br />
{| cellspacing="3" border="1"<br />
|-<br />
|old Variable<br />
|how to display it now<br />
|What is displayed<br />
|-<br />
|$f<br />
|$n<br />
|Name - as by Gramps name display under Preferences<br />
|-<br />
|$n<br />
|$n(g f)<br />
|Name - FirstName LastName<br />
|-<br />
|$N<br />
|$n(f, g)<br />
|Name - LastName, FirstName (note the explicit comma)<br />
|-<br />
|$nC<br />
|$n(g F)<br />
|Name - FirstName LastName in UPPER case<br />
|-<br />
|$NC<br />
|$n(F, g)<br />
|Name - LastName in UPPER case, FirstName<br />
|-<br />
|$by<br />
|$b(yyyy)<br />
|Date of birth, year only<br />
|-<br />
|$dy<br />
|$d(yyyy)<br />
|Date of death, year only<br />
|-<br />
|$my<br />
|$m(yyyy)<br />
|Date of preferred marriage, year only<br />
|-<br />
|$p<br />
|$s<br />
|Preferred spouse's name as by Gramps name display under Preferences<br />
|-<br />
|$s<br />
|$s(g f)<br />
|Preferred spouse's name - FirstName LastName<br />
|-<br />
|$S<br />
|$s(f, g)<br />
|Preferred spouse's name - LastName, FirstName<br />
|-<br />
|$sC<br />
|$s(g F)<br />
|Preferred spouse's name - FirstName LastName in UPPER case<br />
|-<br />
|$SC<br />
|$s(F, g)<br />
|Preferred spouse's name - LastName in UPPER case, FirstName<br />
|}<br />
<br />
== Format Strings ==<br />
<br />
Format strings are used to display names and dates differently than those assigned under Gramps Preferences. Here is the syntax for a format string:<br />
<br />
$''<span style="background: #c0c0c0">key</span>''(format string)<br />
where: ''<span style="background: #c0c0c0">key</span>'' is one of the following characters: 'nsijbmBMdvDVauet'<br />
<br />
A format string is any text, separators or format codes (defined below) to display information about the person.<br />
<br />
=== Formatting names ===<br />
<br />
For names ($n $s) you may use the following formatting codes to display the name differently.<br />
<br />
{|<br />
|-<br />
|t<br />
|Title<br />
|<br />
|f<br />
|Given name<br />
|-<br />
|x<br />
|Common name. Call name if existing, otherwise first first name<br />
|<br />
|c<br />
|Call name<br />
|-<br />
|n<br />
|Nick name<br />
|<br />
|s<br />
|Suffix<br />
|-<br />
|l<br />
|Surname<br />
|<br />
|g<br />
|Family nickname<br />
|}<br />
<br />
These codes can be uppercased to uppercase the result.<br />
<br />
{|<br />
|-<br />
|Example code<br />
|Displays<br />
|-<br />
|<pre>$n(L, f) ($n(c)), $n(L, f){ ($n(c))}<br />
$s(f l s)</pre><br />
|<pre>SMITH, Edwin Michael (), SMITH, Edwin Michael<br />
Janice Ann Adams</pre><br />
|}<br />
<br />
<br />
<blockquote>Note:<br />
If you want to print a character 'c' within the format string (or any one of the other format codes), you will need to first add a '&#92;' in front of it. See [[#Control Variables|Control Variables]] for more.</blockquote><br />
<br />
<blockquote>Note:<br />
the curly brackets { } are used to hide information. Here it is used around ' ($n(c))' to not display ' ()' if the person does not have a call name. See [[#Grouping|Grouping]] for more.</blockquote><br />
<br />
----<br />
<br />
=== Formatting Dates ===<br />
<br />
For all of the date variables ($b $d $m $v) you may use the following formatting codes:<br />
<br />
{|<br />
|-<br />
|yyyy<br />
|The year as a four digit number<br />
|<br />
|yyy<br />
|The year, with a minimum of three digits<br />
|-<br />
|yy<br />
|The year, from 00 to 99<br />
|<br />
|y<br />
|The year, from 0 to 99<br />
|-<br />
|mmmm<BR><br />
MMMM<br />
|The full name of the month<BR><br />
The full name IN CAPS<br />
|<br />
|mmm<BR><br />
MMM<br />
|The abbreviated name of the month<BR><br />
The abbreviated name IN CAPS<br />
|-<br />
|mm<br />
|The month, from 00 to 12<br />
|<br />
|m<br />
|The month, from 0 to 12<br />
|-<br />
|dd<br />
|The day, from 00 to 31<br />
|<br />
|d<br />
|The day, from 0 to 31<br />
|-<br />
|o<br />
|The date type (modifier)<br />
|<br />
|<br />
|<br />
|}<br />
<br />
{|<br />
|-<br />
|Example code<br />
|displays<br />
|-<br />
|<pre>$b(mmm-dd yy)<br />
$m(yyyy/mmm/d)<br />
$b(mmm-dd yy)</pre><br />
|<pre>May-24 61<br />
1995/May/27<br />
Jun-04 85</pre><br />
|}<br />
<br />
{{man note| For date types (modifier) |Only "Before", "After", and "About" are supported at this time. all others will not display anything.<BR><br />
And for date span and date ranges, only the starting (first) date is displayed.}}<br />
<br />
----<br />
<br />
=== Formatting Places ===<br />
<br />
For all of the place variables ($B $D $M $V) you may use the following formatting codes:<br />
<br />
{|<br />
|-<br />
|e<br />
|Street<br />
|<br />
|l<br />
|Locality<br />
|-<br />
|c<br />
|City<br />
|<br />
|u<br />
|County<br />
|-<br />
|s<br />
|State<br />
|<br />
|p<br />
|Postal Code<br />
|-<br />
|n<br />
|Country<br />
|<br />
|t<br />
|Title<br />
|-<br />
|x<br />
|Longitude<br />
|<br />
|y<br />
|Latitude<br />
|}<br />
These codes can be uppercased to uppercase the result. <br />
<br />
{|<br />
|-<br />
|Example code<br />
|displays<br />
|-<br />
|<pre>$B<br />
$B(c, s, N)</pre><br />
|<pre>St Judes Hospital<br />
Carmel, IN, USA</pre><br />
|}<br />
<br />
----<br />
<br />
=== Rules for format strings. ===<br />
<br />
{|<br />
|-<br />
|1<br />
|Anything will print inside a format string<br />
|-<br />
|1a<br />
|you will have to use [[#Control Variables|Control Variables]] to display things like ')' and format codes<br />
|-<br />
|2<br />
|Separators can be within format strings.<br />
|-<br />
|3<br />
|At least ONE format code has to display something for the ENTIRE format string to display<br />
|}<br />
<br />
----<br />
<br />
=== Examples ===<br />
<br />
{|<br />
|-<br />
|code<br />
|gives<br />
|-<br />
|<pre>$n(f l)<br />
b. $b {at $B<br />
{d. $d $D</pre><br />
|<pre>Edwin Michael Smith<br />
b. 1961-05-24 at San Jose, Santa Clara Co., CA</pre>The person is still alive (or has no information present) so the line was removed.<br />
|}<br />
<br />
<br />
<br />
== Control Variables ==<br />
<br />
Control variables allow you to print characters that are special to Substitution values within a display.<br />
<br />
For example the dollar character '$' is used to note the start of a variable. If you wish to print a dollar character you would use a control character like '&#92;$'<br />
<br />
Control Variables<br />
<br />
{|<br />
|-<br />
|&#92;$<br />
|Displays a single '$'<br />
|<br />
|&#92;&#92;<br />
|Displays a single '&#92;'<br />
|-<br />
|&#92;(<br />
|Displays a single '('<br />
|<br />
|&#92;)<br />
|Displays a single ')'<br />
|-<br />
|&#92;{<br />
|Displays a single '{'<br />
|<br />
|&#92;}<br />
|Displays a single '}'<br />
|}<br />
<br />
Basically anything that comes after a '&#92;' will be printed.<br />
<br />
----<br />
Note:<br />
When you are inside a format string, you may need to use this to display a character that would normally be a format code. <br />
<br />
{|<br />
|-<br />
|Example:<br />
|would give<br />
|-<br />
|<pre>$b(m hi mom)<br />
$b(m hi \mo\m)</pre><br />
|<pre>5 hi 5o5<br />
5 hi mom</pre><br />
|}<br />
<br />
as this person was born on the fifth month. <br />
<br />
<br />
== Grouping ==<br />
<br />
There are instances where you do not want certain text to be displayed. Take the example:<br />
<br />
{|<br />
|-<br />
|Code<br />
|Only date is known<br />
|Only place is known<br />
|-<br />
|<pre>died on $d at $D</pre><br />
|<pre>died on 1975-06-26 at </pre> <br />
|<pre>died on at Reno, Washoe Co., NV</pre><br />
|-<br />
| colspan="3"|Neither of these are very acceptable.<br />
|-<br />
| colspan="3"|But with groups (denoted by {}), you can optionally print information if a variable within contains information.<br />
|-<br />
| colspan="3"|For example:<br />
|-<br />
|Code<br />
|Only date is known<br />
|Only place is known<br />
|-<br />
|<pre>died {on $d }{at $D}</pre><br />
|<pre>died on 1975-06-26</pre><br />
|<pre>died at Reno, Washoe Co., NV</pre><br />
|}<br />
<br />
which is what we want.<br />
<br />
----<br />
=== Rules for groups ===<br />
<br />
A group will only display if there is at least one variable that displays something. So if a group only has text and/or variables where the information is not known, the entire group will not print.<br />
<br />
Groups can also be nested. If this happens (like below), the outer group will only display if there is at least one variable that displays something within the outer group or any of the sub groups.<br />
<br />
Groups can also be used to remove an entire line from a display. A '{' at the start of a line will remove the entire line from the display if the above rule is true.<br />
<br />
If you do not wish to have the display code above (for death information) displayed (the person is alive, or you do not yet know the information), modify the code to look like<br />
<pre>{died {on $d }{at $D}</pre><br />
<br />
<blockquote>To have an entire line be blank instead of removing the line simply start the line with a space ' {' or make sure there is a space after the group (you will have to close the group first)</blockquote><br />
<br />
----<br />
=== Examples: ===<br />
<br />
This will hide '(' and ')' if the divorce information is not known (or still married).<br />
<br />
<pre>m. $m $M {- ($v(yyyy))</pre><br />
<br />
<br />
Only display some spouse information if married or remove the entire line if never married:<br />
<pre>{$s $m(yyyy) {- $v(\(yyyy\))}}</pre><br />
<br />
<br />
<br />
== Attributes ==<br />
<br />
Attributes do not have a format string. Instead the attribute name is placed inside []. Here is the syntax for an attribute:<br />
<br />
$''<span style="background: #c0c0c0">key</span>''[attribute name] where: ''<span style="background: #c0c0c0">key</span>'' is one of the following characters: 'au'<br />
<br />
Example:<br />
<br />
{|<br />
|-<br />
|<pre>$a[Profession]<br />
$a[Social Security Number]<br />
$a[Total \$ bequeathed]</pre><br />
|<pre>Programmer<br />
7A3-29-F1C6<br />
3.00USD</pre><br />
|}<br />
<br />
<br />
----<br />
== Events ==<br />
<br />
Events have the same starting structure as attributes, $e or $t and the event name in [] but events have an extra format string after the name to display the description, date, place, id, and attributes associated with it. Each of these items can be displayed with a , a 'n', 'd', 'D', 'i', and 'a' respectively in the format string. Here is the syntax for an event:<br />
<br />
$''<span style="background: #c0c0c0">key</span>''[attribute name](format string) where: ''<span style="background: #c0c0c0">key</span>'' is one of the following characters: 'et'<br />
<br />
=== Event format strings ===<br />
<br />
The Event format string is used to display information about the event. Here are the format codes to display parts of the event:<br />
<br />
{|<br />
|-<br />
|n<br />
|Description<br />
|<br />
|i<br />
|Event ID<br />
|-<br />
|d<br />
|Event Date&#42;<br />
|<br />
|D<br />
|Event Place&#42;<br />
|-<br />
|a<br />
|An attributes for the event&#42;&#42;<br />
|<br />
|<br />
|<br />
|}<br />
<br />
&#42;These variables can themselves have format strings. Date and a place can be formatted with format string as defined in [[#Format strings|Format strings]].<br />
<br />
&#42;&#42;Attribute needs to have the attribute name in [] and are formatted as above.<br />
<br />
Example:<br />
<br />
{|<br />
|-<br />
|<pre>$e[First Communion](d(yyyy-mm-d))<br />
$e[Bar Mitzvah](n&lt; at &gt; D)<br />
$e[Birth](d(yyyy mm/dd) D)</pre><br />
|<pre>2009-11-6<br />
Jerry's Bar Mitzah at Opas house<br />
2007 05/23 Grandmothers house</pre><br />
|}<br />
<br />
<br />
And:<br />
<br />
{|<br />
|-<br />
|<pre>$b(yyyy-Mmm-dd)<br />
$M</pre><br />
|is the same as<br />
|<pre>$e[Birth](d(yyyy-Mmm-dd))<br />
$t[Marriage](D)</pre><br />
|}<br />
<br />
<br />
----<br />
<br />
=== Notes for attributes and events: ===<br />
<br />
{|<br />
|-<br />
|1<br />
|Attribute and event names are mandatory. '$a' or '$a[]' will not display anything.<br />
|-<br />
|2<br />
|Attributes and event names may have special characters within them. Most notably ']' and ')'. If this is the case, you will need to use [[#Control Variables|Control Variables]]<br />
|}<br />
<br />
== Separators ==<br />
<br />
Separators are special 'text only' groups inside '&lt;' and '&gt;' that conditionally display a separator (like ', ' or ' - ') between two variables, format codes or text.<br />
<br />
Separators are displayed conditionally depending on these rules:<br />
<br />
# A variable that does '''not''' display anything will remove itself and a separator that is to the left of it from the display line only.<br />
# If there is not a separator to the left, the same variable will remove itself and a separator that is to the right of it from the displayed line. <br />
# If there are two separators together, the left one will be removed from the display line and the right is kept.<br />
# Separators at the start or end of the display line (or format strings) are removed<br />
<br />
=== Example: ===<br />
<br />
$s(f l)&lt;, &gt;$m(yyyy)&lt; @ &gt;$M&lt; - &gt;$v(&#92;(yyyy&#92;))<br />
<br />
Here are some things that may happen:<br />
<br />
{|<br />
|-<br />
|If '''none''' of the variables are known<br />
|None of the separators will display<br />
|-<br />
|If only one variable '''is''' known<br />
|Only that variable will print. No separators will print.<br />
|-<br />
|If only the spouse's name '''is not''' known<br />
|The first separator will not display<br />
|-<br />
|If only the marriage date '''is not''' known<br />
|The first separator does not display. We will be left with:<br />
Jane Doe&lt; - &gt;{ … }And only the divorce date needs to be known to print the second separator.<br />
|-<br />
|If only the divorce date '''is not''' known<br />
|the second separator will not display<br />
|}<br />
<br />
<br />
Separators can be inside format strings:<br />
<br />
$n(&lt;0&gt;T&lt; &gt;L&lt;, &gt;f&lt; &gt;s)<br />
<br />
Unlike groups, separators can not cross over/out of format strings. So the separator &lt;0&gt; will NEVER display. No matter what is on the left hand side of the variable.<br />
<br />
Back to [[Gramps_3.3_Wiki_Manual_-_Reports|Index of Reports]].<br />
<br clear="all"/><br />
<br />
{{man index|Gramps 3.3 Wiki Manual - Reports - part 1|Gramps 3.3 Wiki Manual - Reports- part 3|3.3}}<br />
{{languages}}<br />
[[Category:Documentation]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Gramps_3.3_Wiki_Manual_-_Command_Line&diff=29128Gramps 3.3 Wiki Manual - Command Line2011-06-09T19:28:20Z<p>PaulFranklin: </p>
<hr />
<div>This appendix provides the reference to the command line capabilities available when launching GRAMPS from the terminal.<br />
<br />
{{grampsmanualcopyright}}<br />
<br />
{{man index|Gramps 3.3 Wiki Manual - Keybindings|Gramps 3.3 Wiki Manual - About|3.3}} <br />
<br />
{{languages|Gramps_3.3_Wiki_Manual_-_Command_Line}}<br />
<br />
<br />
== Available options ==<br />
<br />
This section provides the reference list of all command line options available in GRAMPS. If you want to know more than just a list of options, see next sections: [[Gramps-command line#Operation|Operation]] and [[Gramps-command line#Examples| Examples]]. A list is also available on [[Plugins Command Line|this page]].<br />
<br />
=== List options ===<br />
<br />
-l, print a list of known family trees<br />
-L, print a detailed list of known family trees<br />
<br />
=== Version options ===<br />
<br />
-v or --version prints version of Gramps and dependencies,<br />
information about environment settings and python and system paths<br />
<br />
=== Format options ===<br />
<br />
The format of any file destined for opening, importing, or exporting can be specified with the <pre>-f format</pre> option. The acceptable <tt>''format''</tt> values are listed below.<br />
<br />
==== Full family tree support ====<br />
These formats contain all your data that is present in a family tree. <br />
<br />
* '''gramps''' - GRAMPS XML format: This format is available for import, and export. When not specified, it can be guessed if the filename ends with .gramps<br />
* '''gpkg''' - GRAMPS package XML format: This format is available for import and export. When not specified, it can be guessed if the filename ends with .gpkg. This creates a zip package with your data as xml, and all your media files included<br />
* '''grdb''' - pre GRAMPS 3.x database: This format is available for import to support the old file format of GRAMPS. Everything in the grdb file is imported. When not specified, it can be guessed if the filename ends with .grdb<br />
* '''burn''' - GNOME iso burning: export, only available on GNOME where burn protocol exists<br />
<br />
==== Reduced family tree support ====<br />
These formats contain most, but not all data that can be created in GRAMPS<br />
<br />
*'''ged''' - GEDCOM format: This format is available for import, and export. When not specified, it can be guessed if the filename ends with .ged<br />
*'''gw''' - GeneWeb file: This format is available for import and export. When not specified, it can be guessed if the filename ends with .gw<br />
<br />
==== Subset of your data ====<br />
These formats contain a specific subset of your data<br />
<br />
* '''csv''' - Comma Separated Value: This format is available for import and export. Be careful however, import must be as values created by the export function. Only a part of your data is contained in the output.<br />
* '''vcf''' - VCard format: import and export<br />
* '''vcs''' - VCalandar format: export<br />
* '''def''' - old Pro-Gen format: import<br />
* '''wft''' - Web Family Tree: This format is available for export only. When not specified, it can be guessed if the filename ends with .wft<br />
<br />
=== Opening options ===<br />
<br />
You can open a family tree, or you can ''open'' a file by importing it in an empty family tree.<br />
To let GRAMPS handle this automatically, just supply the familytree or filename you want to open:<br />
<br />
python gramps.py 'My Fam Tree'<br />
python gramps.py JohnDoe.ged<br />
<br />
The first opens a family tree, the second imports a gedcom into an empty family tree. <br />
<br />
Additionally, you can pass GRAMPS the name of the family tree to be opened:<br />
<br />
* use this option : <pre>-O famtree</pre> or <pre>--open=famtree </pre><br />
<br />
-O, Open of a family tree. This can be done also by just typing the name (name or database dir)<br />
<br />
Examples:<br />
python gramps.py 'Family Tree 1'<br />
python gramps.py /home/cristina/.gramps/grampsdb/47320f3d<br />
python gramps.py -O 'Family Tree 1'<br />
python gramps.py -O /home/cristina/.gramps/grampsdb/47320f3d<br />
<br />
<br />
{{Man tip| Tip |If no option is given, just a name, GRAMPS will ignore the rest of the command line arguments. Use the -O flag to open, -i to import, and do something with the data.}}<br />
<br />
{{Man tip| Tip |Only family trees can be opened directly. For other formats, you will need to use the import option which will set up the empty database and then import data into it.}}<br />
<br />
{{Man tip| Tip |Only a single family tree can be opened. If you need to combine data from several sources, you will need to use the import option.}}<br />
<br />
=== Import options ===<br />
<br />
The files destined for import can be specified with the <pre>-i filename</pre> or <pre>--import=filename</pre> option. The format can be specified with the <pre>-f format</pre> or <pre>--format=format</pre> option, immediately following the ''filename'' . If not specified, the guess will be attempted based on the ''filename''.<br />
<br />
Example: <br />
python gramps.py -i 'Family Tree 1' -i 'Family Tree 2'<br />
python gramps.py -i test.grdb -i data.gramps<br />
<br />
{{man tip | Tip |More than one file can be imported in one command. If this is the case, GRAMPS will incorporate the data from the next file into the database available at the moment.}}<br />
<br />
When more than one input file is given, each has to be preceded by <pre>-i</pre> flag. The files are imported in the specified order, i.e. <pre> -i file1 -i file2 </pre> and <pre> -i file2 -i file1 </pre> might produce different GRAMPS IDs in the resulting database.<br />
<br />
=== Export options ===<br />
<br />
The files destined for export can be specified with the <pre>-e filename</pre> or <pre>--export=filename</pre> option. The format can be specified with the <pre>-f</pre> option immediately following the ''filename'' . If not specified, the guess will be attempted based on the ''filename'' . For iso format, the ''filename'' is actually the name of directory the GRAMPS database will be written into. For gramps-xml, gpkg, gedcom, wft, geneweb, and gramps-pkg, the ''filename'' is the name of the resulting file.<br />
<br />
-e, export a family tree in required format. It is not possible to export to a family tree.<br />
<br />
Example:<br />
python gramps.py -i 'Family Tree 1' -i test.grdb -f grdb -e mergedDB.gramps<br />
Note that above does not change 'Family Tree 1' as everything happens via a temporary database, whereas:<br />
python gramps.py -O 'Family Tree 1' -i test.grdb -f grdb -e mergedDB.gramps<br />
will import test.grdb into Family Tree 1, and then export to a file !<br />
<br />
{{man tip| Exporting more files |More than one file can be exported in one command. If this is the case, GRAMPS will attempt to write several files using the data from the database available at the moment.}}<br />
<br />
When more than one output file is given, each has to be preceded by <pre>-e</pre> flag. The files are written one by one, in the specified order.<br />
<br />
=== Action options ===<br />
<br />
The action to perform on the imported data can be specified with the <pre>-a action</pre> or <pre>--action=action</pre> option. This is done after all imports are successfully completed.<br />
<br />
The following actions remain the same:<br />
<br />
*''report'': This action allows producing reports from the command line.<br />
<br />
*''tool'': This action allows to run a tool from the command line.<br />
<br />
Reports and tools generally have many options of their own, so these actions should be followed by the report/tool option string. The string is given using the <pre>-p option_string</pre> or <pre>--options=option_string</pre> option.<br />
<br />
The actions available in older versions of Gramps which were relocated in Gramps 3.3 are:<br />
<br />
*''summary'': This action was the same as ''' Reports ->View ->Summary '''. In Gramps 3.3 it was replaced by (or renamed to) '''-a report -p name=summary'''.<br />
<br />
*''check'': This action was the same as ''' Tools ->Database Processing ->Check and Repair ''' . In Gramps 3.3 it was replaced by (or renamed to) '''-a tool -p name=check'''.<br />
<br />
==== report action option ====<br />
You can generate most reports from the command line using the report action. <br />
An example:<br />
gramps -O "Family Tree 1" -a report -p "name=family_group,style=default,off=html,of=test.html"<br />
<br />
In version 3.3, you can provide the css style to use here with the css option:<br />
gramps -O "Family Tree 1" -a report -p "name=family_group,style=default,off=html,of=test.html,css=Web_Nebraska.css"<br />
or without css in the html output:<br />
gramps -O "Family Tree 1" -a report -p "name=family_group,style=default,off=html,of=test.html,css="<br />
<br />
{{man tip| Report option string |The report option string should satisfy the following conditions: It must not contain any spaces (due to the general nature of the command line interface). If some arguments need to include spaces, the string should be enclosed with quotation marks.<br />
Option string must list pairs of option names and values.<br />
Within a pair, option name and value must be separated by the equal sign.<br />
Different pairs must be separated by commas.}}<br />
<br />
Most of the report options are specific for every report. However, there are some common options.<br />
<br />
*name=report_name: This mandatory option determines which report will be generated. If the supplied report_name does not correspond to any available report, an error message will be printed followed by the list of available reports.<br />
*of : output filename<br />
*off: output format. These are the extension an output format makes available, eg, pdf, html, doc, ...<br />
*style: for text reports, the stylesheet to use. Defaults to 'default'.<br />
*show=all: This will produce the list of names for all options available for a given report.<br />
*show=option_name: This will print the description of the functionality supplied by the option_name, as well as what are the acceptable types and values for this option.<br />
<br />
So, to learn to use a report, do for example:<br />
gramps -O "Family Tree 1" -a report -p "name=family_group,show=all"<br />
<br />
{{man tip| Tip |If an option is not supplied, the last used value will be used. If this report has never been generated before, then the value from last generated report will be used when applicable. Otherwise, the default value will be used.}}<br />
<br />
When more than one output action is given, each has to be preceded by <pre>-a</pre> flag. The actions are performed one by one, in the specified order.<br />
<br />
{{man tip| lists |Some reports have options<br />
or arguments which <br />
are interpreted (by the report) to<br />
be on multiple lines. For instance some reports allow you to<br />
format how the information will be shown, perhaps with a name<br />
on one line and the person's birth date on the next line. Such<br />
multiple-line options or arguments are called "lists" by GRAMPS.}}<br />
<br />
On the command line such lists must always start with a left<br />
square bracket<br />
<pre>[</pre><br />
and must always end with a right square bracket<br />
<pre>]</pre><br />
but since such square brackets are usually "special"<br />
to the "shell" (they mean something to the command interpreter<br />
you are typing the command<br />
to), you must "escape" them so that they are ignored by your shell.<br />
The details vary with each shell but (in linux/UNIX) usually you can precede such<br />
a square bracket with a backslash<br />
<pre>\</pre><br />
or put quotation<br />
marks around the square bracket, usually either "single" or "double" ones.<br />
<br />
The Hourglass Graph report allows you to put a "note" at<br />
the top of the report and such a "note" is an example of a "list" option. Here is an example:<br />
gramps -O "Family Tree 1" -a report -p name=hourglass_graph,note='[line one,line two]'<br />
which shows that inside such a list different lines are separated by commas, and that spaces are acceptable since the quotation marks<br />
are already there for the square brackets.<br />
<br />
But if you want to have<br />
a comma inside your report you have to somehow tell GRAMPS that<br />
comma is not one which separates lines. You do that by enclosing<br />
the line with the comma in quotation marks (either single or double).<br />
But if you are already using a set of quotation marks (to enclose<br />
your square brackets) you have to use the other type to enclose<br />
the line with your comma. Here is an example:<br />
gramps -O "Family Tree 1" -a report -p name=hourglass_graph,note="['line one, also line one','line two, also line two']"<br />
<br />
It is possible to include any character in a list but the details<br />
are beyond the scope of this command-line introduction to GRAMPS.<br />
You will need to know the precise methods available in your particular<br />
command shell interpreter to include a character which is "special"<br />
to your shell or "special" to GRAMPS (like the comma in the example above) but in general you will have to "escape" it twice, once<br />
to your shell and once again to GRAMPS, since you don't want your shell<br />
to think it is some instruction it should pay attention to and<br />
you don't want GRAMPS to think that either.<br />
<br />
==== tool action option ====<br />
You can run most tools from the command line using the 'tool' action.<br />
To see which ones, say:<br />
gramps -O "Family Tree 1" -a tool -p show=all<br />
To see a tool's available options, for instance the "verify" tool:<br />
gramps -O "Family Tree 1" -a tool -p name=verify,show=all<br />
To run a tool, for instance the "verify" tool:<br />
gramps -O "Family Tree 1" -a tool -p name=verify<br />
<br />
=== Force unlock option ===<br />
<br />
-u, you can extend the -O flag with -u to force a locked family to be unlocked. This allows you to recover from a crash that leaves the family tree (database) locked, from the command line.<br />
<br />
An example (to unlock the "Family Tree 1" database):<br />
gramps -O "Family Tree 1" -a report -u > /dev/null<br />
<br />
Note that it is not possible to open family trees that need repair from the command line<br />
<br />
=== Configuration (config) option ===<br />
The option takes three forms:<br />
(the following examples, except 3.2, use behavior.database-path as the configuration variable to change.)<br />
<br />
1) See all config values<br />
<br />
-s or --show<br />
<br />
2) See a value:<br />
<br />
--config=behavior.database-path<br />
or<br />
-c behavior.database-path<br />
<br />
3) Set a value:<br />
<br />
--config=behavior.database-path:'/media/mydb'<br />
or<br />
-c behavior.database-path:'/media/mydb'<br />
<br />
3.1) Set a value to its default:<br />
<br />
--config=behavior.database-path:DEFAULT<br />
or<br />
-c behavior.database-path:DEFAULT<br />
<br />
3.2) Set more than one value:<br />
<br />
--config=behavior.use-tips:False --config=behavior.autoload:True<br />
or<br />
-c behavior.use-tips:False -c behavior.autoload:True<br />
<br />
When all configuration variable(s) are set Gramps will start with these new values.<br />
<br />
== Operation ==<br />
<br />
If the first argument on the command line does not start with a dash (i.e. no flag), GRAMPS will attempt to open the file with the name given by the first argument and start an interactive session, ignoring the rest of the command line arguments.<br />
<br />
If the <pre>-O</pre> flag is given, then GRAMPS will try opening the supplied file name and then work with that data, as instructed by the further command line parameters.<br />
<br />
{{man note|1=Note |2=Only one file can be opened in a single invocation of GRAMPS. If you need to get data from multiple sources, use the importing options by using <pre>-i</pre> flag.}}<br />
<br />
With or without the <pre>-O</pre> flag, there could be multiple imports, exports, and actions specified further on the command line by using <pre>-i</pre> , <pre>-e</pre> , and <pre>-a</pre> flags.<br />
<br />
The order of <pre>-i</pre> , <pre>-e</pre> , or <pre>-a</pre> options with respect to each does not matter. The actual execution order always is: all imports (if any) -> all exports (if any) -> all actions (if any).<br />
<br />
{{man note| Note |But opening must always be first!}}<br />
<br />
If no <pre>-O</pre> or <pre>-i</pre> option is given, GRAMPS will launch its main window and start the usual interactive session with the empty database, since there is no data to process, anyway. (Unless you have already expressed a "preference" that it start with the last database it used.)<br />
<br />
If no <pre>-e</pre> or <pre>-a</pre> options are given, GRAMPS will launch its main window and start the usual interactive session with the database resulted from opening and all imports (if any). This database resides in the ''import_db.grdb'' file under the ''~/.gramps/import/'' directory.<br />
<br />
Any errors encountered during import, export, or action, will be either dumped to stdout (if these are exceptions handled by GRAMPS) or to stderr (if these are not handled). Use usual shell redirections of stdout and stderr to save messages and errors in files.<br />
<br />
== Examples ==<br />
<br />
*To import four databases (whose formats can be determined from their names) and then check the resulting database for errors, one may type:<br />
<br />
:<pre>gramps -i file1.ged -i file2.gpkg -i ~/db3.gramps -i file4.wft -a check</pre><br />
<br />
*To explicitly specify the formats in the above example, append filenames with appropriate -f options:<br />
<br />
:<pre>gramps -i file1.ged -f gedcom -i file2.gpkg -f gramps-pkg -i ~/db3.gramps -f gramps-xml -i file4.wft -f wft -a check</pre><br />
<br />
*To record the database resulting from all imports, supply -e flag (use -f if the filename does not allow GRAMPS to guess the format):<br />
<br />
:<pre>gramps -i file1.ged -i file2.gpkg -e ~/new-package -f gramps-pkg</pre><br />
<br />
*To save any error messages of the above example into files outfile and errfile, run:<br />
<br />
:<pre>gramps -i file1.ged -i file2.dpkg -e ~/new-package -f gramps-pkg >outfile 2>errfile </pre><br />
<br />
*To import three databases and start interactive GRAMPS session with the result:<br />
<br />
:<pre>gramps -i file1.ged -i file2.gpkg -i ~/db3.gramps </pre><br />
<br />
*To open a database and, based on that data, generate timeline report in PDF format putting the output into the my_timeline.pdf file:<br />
<br />
:<pre>gramps -O 'Family Tree 1' -a report -p name=timeline,off=pdf,of=my_timeline.pdf </pre><br />
<br />
{{man tip|1=Listing report options |2=Use the <tt>''name=timeline,show=all''</tt> to find out about all available options for the timeline report. To find out details of a particular option, use <tt>''show=option_name''</tt> , e.g. <tt>''name=timeline,show=off''</tt> string. To learn about available report names, use <tt>''name=show''</tt> string.}}<br />
<br />
*To convert a grdb on the fly to a .gramps xml file:<br />
<br />
:<pre>gramps -O 'Family Tree 1' -e output.gramps -f gramps-xml</pre><br />
<br />
* To generate a web site into an other locale (in german):<br />
<br />
<pre>LANGUAGE=de_DE; LANG=de_DE.UTF-8 gramps -O 'Family Tree 1' -a report -p name=navwebpage,target=/../de </pre><br />
<br />
*Finally, to start normal interactive session type:<br />
<br />
:<pre>gramps </pre><br />
<br />
== Environment variables==<br />
<br />
GRAMPS can take advantage of these environment variables (but do not change them if you do not know what are you doing):<br />
* '''GRAMPSHOME''' - if set, override default path to profile allowing user to use ex. network drive to store data and all settings.<br />
* '''LANG''' - is used by GRAMPS to determine which language file should be loaded.<br />
<br />
<br />
{{man index|Gramps 3.3 Wiki Manual - Keybindings|Gramps 3.3 Wiki Manual - About|3.3}} <br />
<br />
[[Category:Documentation]]<br />
<br />
{{languages|Gramps_3.3_Wiki_Manual_-_Command_Line}}</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Gramps_3.3_Wiki_Manual_-_Tools&diff=28739Gramps 3.3 Wiki Manual - Tools2011-05-15T18:09:24Z<p>PaulFranklin: /* Verify the Data... */</p>
<hr />
<div>This chapter describes the various tools available in GRAMPS.<br />
<br />
GRAMPS tools allow you to perform various types of analysis of your genealogical data. Typically, the tools do not produce output in form of printouts or files. Instead, they produce screen output immediately available for the researcher. However, when appropriate, you can save the results of running a tool into a file. Tools present one of the major strengths of GRAMPS compared to the most genealogical software.<br />
<br />
The tools can be accessed through the menu by choosing ''' Tools ->Tool Section ->Particular Tool ''' . Alternatively, you can browse the complete selection of available tools along with their brief descriptions in a '''Tool Selection''' dialog invoked by clicking the {{man button|Tools}} icon on the toolbar.<br />
<br />
{{grampsmanualcopyright}}<br />
<br />
{{man index|Gramps 3.3 Wiki Manual - Reports|Gramps 3.3 Wiki Manual - Settings|3.3}}<br />
<br />
{{languages|Gramps_3.3_Wiki_Manual_-_Tools}}<br />
<br />
== Introduction ==<br />
<br />
{{man note|Additional Tools |Starting with Gramps version 3.3 a new system was implemented to have even more tools available. This system is controlled by the [[Gramps_3.3_Wiki_Manual_-_Plugin_Manager|'''Plugin Manager''']]. The Plugin Manager can get additional [[3.3_Addons|'''Addons''']] for you. Check the list of the available tools [[3.3_Third-party_Plugins|'''here''']].}}<br />
<br />
==Common Options==<br />
<br />
* id: = ID<br />
Gramps ID of a central person.<br />
<br />
== Analysis and Exploration ==<br />
<br />
This section contains tools which analyze and explore the database, but do not alter it. The following analysis and exploration tools are currently available in GRAMPS:<br />
<br />
===<u>Compare Individual Events...</u>===<br />
<br />
This tool compares events across the selected group of people. The people for this comparison are chosen with the use of custom filters. The custom filters can be created in the Custom Filter Editor (see ''tools-util-cfe'' ) that can be invoked by clicking the {{man button|Custom Filter Editor}} button. The resulting table produced by this tool can be saved as a spreadsheet.<br />
<br />
===<u>Interactive Descendant Browser...</u>===<br />
[[Image:Interactivedes.png|right|thumb|250px|Fig. 9.1 Descendant Browser]]<br />
<br />
<br />
First you have to select a person or you start with the current Active Person.<br />
<br />
Click on the menu '''Tools-->Analysis and Exploration-->Interactive Descendant Browser'''.<br />
<br />
This tool builds a tree with the Active Person being the root. Children branch from their parents in the usual manner.<br />
<br />
You can click the {{man button|down}} or {{man button|>}} buttons to expand or collapse the nodes.<br />
<br />
Use this tool for a quick glance of a person's descendants.<br />
<br />
<br />
<br />
{{man tip|1=Tip|2=Double-clicking on tree node will bring up the {{man label|Edit Person}} dialog allowing to view or modify the personal data.}}<br />
<br />
The {{man button|Help}} button will bring you to this page and with the {{man button|Close}} you close the Descendant Browser window.<br />
<br />
==Database Processing==<br />
<br />
This section contains tools which may modify your database. The tools from this section are used mostly for finding and correcting errors in the data. The following database processing tools are currently available in GRAMPS:<br />
<br />
{{man note|1=Note |2=The modifications will only be performed upon your explicit consent, except for the automatic fixes performed by {{man label|Check and repair Database}} tool.}}<br />
<br />
<br />
<br />
===<u>Edit Database Owner Information</u>===<br />
[[Image:Dataowner.png|right|thumb|250px|Fig. 4.3 Owner Info]]<br />
<br />
click '''Tools-->Database Processing-->Edit Database Owner information'''. This brings up the {{man label|Database Owner editor}} window, where you can fill in the needed info.<br />
<br />
*Name:<br />
*Adress:<br />
*City:<br />
*State/Province:<br />
*Country:<br />
*ZIP/Postal Code:<br />
*Phone:<br />
*Email:<br />
<br clear="all" /><br />
<br />
===<u>Extract Information from Names</u>===<br />
<br />
This tool searches the entire database and attempts to extract titles and nicknames that may be embedded in a person's {{man label|Given name}} field. If any information could be extracted, the candidates for fixing will be presented in the table. You may then decide which to repair as suggested and which not to.<br />
<br />
===<u>Extract Place Data from a Place Title</u>===<br />
[[Image:ExtractPlaceData.png|right|thumb|250px|Extract Place Data]]<br />
<br />
This tool attempts to extract city, state/province and zip code from a place title.<br />
The tools operates on places where all fields in the main location are empty.<br />
The description must match the following categories:<br />
New York, NY 10000<br />
<br />
Only available for :<br />
* USA<br />
* Canada<br />
* Sweden <br />
Stockholm (A) <br />
* France <br />
Paris, IDF 75000, FRA or Paris, ILE DE FRANCE 75000, FRA<br />
<br />
The dialog allows you to preview and confirm individual changes.<br />
<br />
===<u>Extract Event Descriptions from Event Data</u>===<br />
<br />
Extracts event descriptions from the event data by using a model :<br />
{event type} of {Surname}, {Given name}<br />
<br />
If event description is missing, then tool will use this event description field model.<br />
<br />
===<u>Find Possible Duplicate People...</u>===<br />
[[Image:Duppeople.png|right|thumb|250px|Fig. 4.4 Duplicate People]]<br />
This tool searches the entire database, looking for the entries that may represent the same person.<br />
<br />
You can access this tool via '''Tool->Database Processing...->Find Possible Duplicate People...'''.<br />
<br />
Two options are available:<br />
*Match Threshold: choose between High, Medium and Low from the drop down menu.<br />
<br />
*Options: a check box to enable or disable the use of [[Gramps_3.3_Wiki_Manual_-_Tools#Use_of_SoundEx_module_in_GRAMPS|soundex]] codes.<br />
<br />
Only three buttons are present: {{man button|Help}} brings you to this page, a {{man button|Cancel}} to stop processing and an {{man button|OK}} button to start processing the data.<br />
<br />
If you hit the {{man button|OK}} button, the data will be processes in two passes.<br />
<br />
Pass 1: building preliminary lists<br />
Pass 2: calculating potential matches. A progress bar will be shown and depending the speed of the cpu and the amount of people in the database this can take some time.<br />
<br />
Finally a {{man label|Potential Merges}} window is presented. This window shows a list with three columns:<br />
*Rating: this gives you an idea of the resemblance between the two people. The higher the ranking, the higher the chance that the people are duplicates.<br />
*First Person<br />
*Second Person<br />
<br />
If you select a row you can check the details with the {{man button|Compare}} button or you can double-click on the selected row.<br />
<br />
Three buttons are present: {{man button|Help}} brings you to this page, a {{man button|Close}} to close the window and a {{man button|Compare}} button to which brings up a {{man label|Compare People}} window which was explain in detail in the [[Gramps_3.3_Wiki_Manual_-_Entering_and_Editing_Data:_Detailed_-_part_3#Merge_People|Merge People Dialog]]. Here you can select with the radio buttons one of the persons and eventually use the {{man button|Merge and close}} button to merge the data if you find the two persons are duplicates.<br />
<br />
Hitting the {{man button|Cancel}} button brings you back to the list.<br />
<br />
===<u>Fix Capitalization of Family Names...</u>===<br />
<br />
[[Image:Capnames.png|right|thumb|250px|Fig. 4.5 Fix Capitalization]]<br />
<br />
This tool searches the entire database and attempts to fix the capitalization of family names. <br />
<br />
The aim is to have conventional capitalization: capital first letter and lower case for the rest of the family name. If deviations from this rule are detected, the candidates for fixing will be presented in the table. <br />
<br />
You may then decide which to repair as suggested and which not to.<br />
<br />
You can use this tool via '''Tools-->Database Processing-->Fix Capitalization of Family Names...'''.<br />
<br />
{{man warn|Undo history|Proceeding with this tool will erase the undo history for this session. In particular, you will not be able to revert the changes made by this tool or any changes made prior to it. If you think you may want to revert running this tool, please stop here and backup your database.}}<br />
<br />
You can choose {{man button|Stop}} or {{man button|Proceed with the tool}}.<br />
<br />
If there where changes to Capitalization of Names you will be presented with the {{man label|Capitalization changes}} window. The window shows a list of the family names that GRAMPS can convert to correct capitalization. In the list you will see a three columns: {{man button|Select}} check box(es), Original Name and Capitalization Change.<br />
<br />
Select the names you want to be changed, then hit the {{man button|Accept changes and close}} button. Or use the {{man button|Cancel}} button to abort changes.<br />
<br />
===<u>Rename Event Types</u>===<br />
[[Image:Changeventype.png|right|thumb|250px|Fig. 4.6 Change type]]<br />
This tool allows all the events of a certain name to be renamed to a new name.<br />
<br />
{{man warn|Undo history|Proceeding with this tool will erase the undo history for this session. In particular, you will not be able to revert the changes made by this tool or any changes made prior to it. If you think you may want to revert running this tool, please stop here and backup your database.}}<br />
The {{man label|Change Event Types}} window is presented. This tool will rename all events of one type to a different type.<br />
<br />
*Original event type: fill in the text field or use the drop down menu and select an original event type<br />
*New event type: fill in the text field (you can create a complete new type here) or use the drop down menu and select a new type<br />
<br />
The example shows a renaming of the '''Birth''' event to a '''Baptism''' event. <br />
<br />
Finally use the {{man button|Cancel}} or the {{man button|OK}} button.<br />
<br />
{{man warn|1=Renaming events|2=Once completed, this cannot be undone by the regular {{man label|Undo}} function.}}<br />
<br />
===<u>Reorder GRAMPS ID</u>===<br />
<br />
This tool reorders will change all the elements in the database to conform to the scheme specified in the database's prefix id's.<br />
<br />
You can change those settings in the '''Edit-->Preferences...-->ID Formats''' menu.<br />
<br />
You can use this tool via '''Tools-->Database Processing-->Reorder GRAMPS IDs'''.<br />
{{man warn|Undo history|Proceeding with this tool will erase the undo history for this session. In particular, you will not be able to revert the changes made by this tool or any changes made prior to it. If you think you may want to revert running this tool, please stop here and backup your database.}}<br />
<br />
The window will show a progress bar.<br />
<br />
In different steps following IDs' are reordered: Reordering People IDs', Reordering Family IDs', Reordering Event IDs', Reordering Media Object IDs', Reordering Source IDs', Reordering Place IDs', Reordering Repository IDs' and finally Reordering Note IDs'.<br />
<br />
In a next step unused IDs' are searched for and assigned.<br />
<br />
<br />
{{man warn|Custom IDs'|If you customized your IDs', all those setting are replaced by the default setting. So take care before you use this tool!}}<br />
<br />
===<u>Sort Events</u>===<br />
[[Image:Sortevents.png|right|thumb|250px|Fig. 4.7 Sort Events]]<br />
Events appearing on the Event tab on a Person or Family Editor are not sorted in any particular order other than the order that the events were added. The reason for not enforcing any particular ordering, particularly ordering by date, is to allow for the situation where an event was known to have happened but the exact chronology is not. Importing or merging data from an external source can lead to extra events being added to, but out of sequence with, the existing set of events of a person or family.<br />
<br />
Events can be manually re-ordered by [http://en.wikipedia.org/wiki/Drag-and-drop ''drag & drop''] or by use of the re-order buttons on the {{man label|Events}} tab. Either way, an event can be moved up or down in the list of events and Gramps will remember the new order when the changes are saved. The new ordering will be used wherever events are shown elsewhere in Gramps, such as on a report. <br />
<br />
The order of all events on a tab can also be changed by clicking a column title. For example, clicking the 'Date' column header will sort all the events in date order. However this way of sorting events is temporary and changes to the event order are not preserved when the window is closed.<br />
<br />
The [http://en.wikipedia.org/wiki/Drag-and-drop ''drag and drop''] approach to sorting events is fine for moving a small number of events but is not practical for large scale changes. The Sort Events tool has been designed specifically for this purpose, re-sorting all events in the database or just those associated with a targeted selection of people chosen by using a filter.<br />
<br />
The first option on the Sort Events dialog window is used to define the range of people who's events are to be sorted. The first choice in the list is to apply the sorting to all people in the database. Alternative choices are to apply sorting to ancestors and descendants of a chosen person or to a range of people selected by a custom built person filter. After choosing who the sort should apply to, the next thing to consider is how the events should be sorted. The first option is to sort by date. This is probably the most likely choice, but other event attributes can be chosen too. The final choices are whether to make the events sorted ascending or descending and whether to apply the sort to family events that the selected people belong to as well.<br />
<br />
{{man warn|Undo history|Proceeding with this tool will erase the undo history for this session. In particular, you will not be able to revert the changes made by this tool or any changes made prior to it. If you think you may want to revert running this tool, please stop here and backup your database.}}<br />
<br />
{{man warn|1=Sorting events|2=Once completed, this cannot be undone by the regular {{man label|Undo}} function.}}<br />
<br />
== Database Repair ==<br />
<br />
===<u>Check and repair database</u>===<br />
<br />
This tool checks the database for integrity problems, fixing the problems it can. Specifically, the tool is checking for:<br />
<br />
*Broken family links. These are the cases when a person's record refers to a family while the family's record does not refer to that person, and vice versa.<br />
<br />
*Missing media objects. The missing media object is the object whose file is referenced in the database but does not exist. This can happen when the file is accidentally deleted, renamed, or moved to another location.<br />
<br />
*Empty families. These are the family entries which have no reference to any person as their member.<br />
<br />
*Parent relationship. This checks all families to ensure that father and mother are not mixed up. The check is also made that parents have different gender. If they have common gender then their relationship is renamed to "Partners".<br />
<br />
===<u>Rebuild Reference Maps</u>===<br />
<br />
This tool rebuilds reference map tables (''References'' items on editors).<br />
<br />
===<u>Rebuild Secondary Indices</u>===<br />
<br />
This tool rebuilds secondary indices.<br />
<br />
===<u>Remove Unused Objects...</u>===<br />
<br />
This tool will search your database for pieces of information which are not connected to anything else, and then remove them.<br />
<br />
== Utilities ==<br />
<br />
This section contains tools allowing you to perform a simple operation on a portion of data. The results can be saved in your database, but they will not modify your existing data. The following utilities are currently available in GRAMPS:<br />
<br />
===<u>Generate SoundEx codes</u>===<br />
<br />
==== SoundEx what is this? ====<br />
This utility generates SoundEx codes for the names of people in the database. Please visit the NARA Soundex Indexing page to learn more about Soundex Indexing System.<br />
<br />
The soundex is a coded surname (last name) index based on the way a surname sounds rather than the way it is spelled. Surnames that sound the same, but are spelled differently, like SMITH and SMYTH, have the same code and are filed together. The soundex coding system was developed so that you can find a surname even though it may have been recorded under various spellings.<br />
<br />
First applied to the 1880 census, Soundex is a phonetic index, not a strictly alphabetical one. Its key feature is that it codes surnames (last names) based on the way a name sounds rather than on how it is spelled. It was to help researchers find a surname quickly even though it may have received different spellings.<br />
<br />
Those doing census lookups must use the same method to encode surnames as the census takers did when they generated the database. <br />
<br />
To search for a particular surname, you must first work out its code.<br />
<br />
*'''Basic Soundex Coding Rule:'''<br />
<br />
Every soundex code consists of a letter and three numbers, such as W-252. The letter is always the first letter of the surname. The numbers are assigned to the remaining letters of the surname according to the soundex guide shown below. Zeroes are added at the end if necessary to produce a four-character code. Additional letters are disregarded. Examples:<br />
Washington is coded W-252 (W, 2 for the S, 5 for the N, 2 for the G, remaining letters disregarded).<br />
Lee is coded L-000 (L, 000 added).<br />
<br />
{|{{prettytable}} <br />
!Number<br />
!Represents the Letters<br />
|-<br />
|1<br />
|B, F, P, V<br />
|-<br />
|2<br />
|C, G, J, K, Q, S, X, Z<br />
|-<br />
|3<br />
|D, T<br />
|-<br />
|4<br />
|L<br />
|-<br />
|5<br />
|M, N<br />
|-<br />
|6<br />
|R<br />
|}<br />
<br />
Disregard the letters A, E, I, O, U, H, W, and Y.<br />
<br />
*'''Additional Soundex Coding Rules:'''<br />
<br />
** Names With Double Letters: If the surname has any double letters, they should be treated as one letter. For example:<br />
Gutierrez is coded G-362 (G, 3 for the T, 6 for the first R, second R ignored, 2 for the Z).<br />
<br />
** Names with Letters Side-by-Side that have the Same Soundex Code Number: If the surname has different letters side-by-side that have the same number in the soundex coding guide, they should be treated as one letter. Examples:<br />
*** Pfister is coded as P-236 (P, F ignored, 2 for the S, 3 for the T, 6 for the R).<br />
*** Jackson is coded as J-250 (J, 2 for the C, K ignored, S ignored, 5 for the N, 0 added).<br />
*** Tymczak is coded as T-522 (T, 5 for the M, 2 for the C, Z ignored, 2 for the K). Since the vowel "A" separates the Z and K, the K is coded.<br />
<br />
** Names with Prefixes: If a surname has a prefix, such as Van, Con, De, Di, La, or Le, code both with and without the prefix because the surname might be listed under either code. Note, however, that Mc and Mac are not considered prefixes.For example, VanDeusen might be coded two ways:V-532 (V, 5 for N, 3 for D, 2 for S) or D-250 (D, 2 for the S, 5 for the N, 0 added).<br />
<br />
** Consonant Separators: If a vowel (A, E, I, O, U) separates two consonants that have the same soundex code, the consonant to the right of the vowel is coded. Example:Tymczak is coded as T-522 (T, 5 for the M, 2 for the C, Z ignored (see "Side-by-Side" rule above), 2 for the K). Since the vowel "A" separates the Z and K, the K is coded. If "H" or "W" separate two consonants that have the same soundex code, the consonant to the right of the vowel is not coded. Example: Ashcraft is coded A-261 (A, 2 for the S, C ignored, 6 for the R, 1 for the F). It is not coded A-226.<br />
<br />
==== Use of SoundEx module in GRAMPS ====<br />
[[Image:Soundexcode.png|thumb|right|250px|Fig. 4.8 SoundEx code generator]]<br />
Clicking via the Toolbar on '''Tools-->Utilities --> Soundex generator...''' you get the {{man label|SoundEx code generator}} window. In the {{man label|Name}} text field you can type in a name or you could use the {{man button|down }} arrow where you can should a name from the drop down list.<br />
<br />
The name you put in can by any name even a name not present in your Family Tree.<br />
<br />
The result is shown automatically: R236<br />
<br />
A {{man button|Help}} button is available which brings you to this page. With the {{man button|Close}} button (or hitting <alt+c>) you close this generator window.<br />
<br />
===<u>Media Manager...</u>===<br />
[[Image:Mediamanagerfinal.png|right|thumb|250px|Fig. 4.9 Final confirmation window]]<br />
This tool allows [http://en.wikipedia.org/wiki/Batch_processing batch operations] on media objects stored in GRAMPS. An important distinction must be made between a GRAMPS media object and its file.<br />
<br />
The GRAMPS media object is a collection of data about the media object file: its filename and/or path, its description, its ID, notes, source references, etc. These data '''do not include the file itself'''.<br />
<br />
The files containing image, sound, video, etc. exist separately on your hard drive. These files are not managed by GRAMPS and are not included in the GRAMPS database. The GRAMPS database only stores the path and file names.<br />
<br />
This tool allows you to only modify the records within your GRAMPS database. If you want to move or rename the files then you need to do it on your own, outside of GRAMPS. Then you can adjust the paths using this tool so that th media objects store the correct file locations.<br />
<br />
If you click the {{man button|Forward}} button (or hit <Alt+F>) you will get a window with three radio buttons:<br />
* Replace substrings in the path: Selecting this radio button will bring up a {{man label|Replace substring settings}} window where you can type in any string in the {{man label|Replace}} text field and the {{man label|With}} text field. At any time you can click on the {{man button|Cancel}} button or the {{man button|Back}} button. Clicking the {{man button|Forward}} button will bring up the {{man label|Final confirmation}} window.<br />
* Convert paths from relative to absolute<br />
* Convert paths from absolute to relative<br />
<br />
===<u>Not Related</u>===<br />
[[Image:Notrelated.png|right|thumb|250px|Fig. 4.10 Not related]]<br />
This report will find people who are not related to the selected person. <br />
<br />
You will get a {{man label|Not related to '...'}} window which shows a list of all the people that are NOT related to the selected person.<br />
<br />
This list gives you:<br />
* Name<br />
* ID<br />
* Parents<br />
* Marker<br />
<br />
With the {{man button|right arrow}} button and {{man button|down arrow}} button you can collapse or expand the list. Double clicking on a person will bring up the detailed person edit window or family edit window.<br />
<br />
If you select a person you can use the {{man label|Marker}} text field: 3 choices are possible: blank (you can fill in whatever suits you), TODO, and NotRelated. With the {{man button|Apply}} you can apply the selected marker to the person. This marker will then show up in the right hand side column.<br />
<br />
===<u>Relationship calculator</u>===<br />
<br />
This utility calculates and displays the relationship of any person to the Active Person.<br />
<br />
===<u>Verify the Data...</u>===<br />
[[Image:Verifydata.png|right|thumb|250px|Fig. 4.11 Verify the Data...]]<br />
This utility allows you to verify the database based on the set of criteria specified by you.<br />
<br />
For example, you may want to make sure that nobody in your database had children at the age of 98. Based on common sense, such a record would indicate an error. However, it is not a consistency error in the database. Besides, someone might have a child at the age of 98 (although this rarely happens). The Verify tool will display everything that violates your criteria so that you can check whether the record is erroneous or not. The ultimate decision is yours.<br />
<br />
<br />
Clicking on '''Tools-->Utilities-->Verify the Data...''' you will get a {{man label|Database Verify Tool}} window. The window has four tabs. Those tabs show a list with criteria and a input field where you can alter the criteria value. In the lists below I show some ''workable'' values.<br />
<br />
*'''General''':<br />
** maximum age: 95<br />
** minimum age to marry 16<br />
** maximum age to marry 60<br />
** maximum spouses for a person 4<br />
** maximum number of consecutive years of widowhood before next marriage 30<br />
** maximum age for an unmarried person 99<br />
<br />
There is a check box: ''estimate missing dates''.<br />
This causes the tool to accept a baptism date if<br />
a birth date is not known, and to accept a burial<br />
date if a death date is not known. In addition,<br />
starting in gramps version 3.3.0, it also causes the<br />
tool to accept "inexact" dates (i.e., any "legal"<br />
gramps date which is not a fully-specified one<br />
(with an explicit day and month and year)).<br />
<br />
*'''Women''':<br />
** minimum age to bear a child 16<br />
** maximum age to bear a child 51<br />
** maximum number of children 15<br />
<br />
*'''Men'''<br />
** minimum age to father a child 18<br />
** maximum age to father a child 65<br />
** maximum number of children 15<br />
<br />
*'''Families'''<br />
** maximum husband-wife age difference 41<br />
** maximum number of years between children 11<br />
** maximum span of years for all children 32<br />
<br />
<br />
If you are OK with the criteria click the {{man button|Run}} button (or hit <Alt+R> and you will be presented with a {{man label|Database Verification Results}} window.<br />
<br />
Depending on your criteria and your data a list will be shown. Some possibilities of findings are listed below. But there are others.<br />
<br />
* Disconnected individuals (ones with no parent or spouse or child or sibling)<br />
* old/dead father<br />
* marriage after death/ before birth<br />
* large year span for all children<br />
* early/late marriage<br />
* young/unborn mother<br />
* husband and wife with the same surname<br />
* same sex marriage/ female husband<br />
* ...<br />
<br />
To show how handy this {{man label|Utility}} is, here two live examples from real data:<br />
<br />
The warning showed 'female husband': checking the data I found a family with father : Anna Roelants. Luckily in the {{man label|Description}} I read: ''The marriage of Adam Roelants and Cornelia Crabbe''. It was clearly a typo: Anna i.s.o. Adam. Without this '''Tool''' it would be very hard to find.<br />
<br />
The warning showed 'late marriage': checking the data: male person °1738 female person °1756 : marriage X 1804 [Gregorian Calender] : Everything seemed to be OK: so they (re)married at the age of 66 and 48 years!<br />
The warning showed up because the '''General criteria''' was set to '''60'''. <br />
<br />
On the bottom of the window four {{man label|check boxes}} are available to make a selection easier. Those are {{man label|Mark All}}, {{man label|Unmark All}}, {{man label|Invert Marks}}, and {{man label|Hide Marked}}. <br />
<br />
Double-clicking on a row will give you a possibility to view and or edit the data.<br />
<br />
With the {{man button|Close}} button (or hit <Alt+C>) you close the {{man label|Results}} window.<br />
With the {{man button|Help}} button (or hitting <Alt+H>) you will get to this page.<br />
<br />
<br />
{{man tip|Difference between Verify tool and previously described Check tool |The Check tool detects inconsistencies in the database structure. The Verify tool,however, is detecting the records that do not satisfy your particular criteria.}}<br />
<br />
For example, you may want to make sure that nobody in your database had children at the age of 98. Based on common sense, such a record would indicate an error. However, it is not a consistency error in the database. Besides, someone might have a child at the age of 98 (although this rarely happens). The Verify tool will display everything that violates your criteria so that you can check whether the record is erroneous or not. The ultimate decision is yours.<br />
<br />
<br />
<br />
{{man index|Gramps 3.3 Wiki Manual - Reports|Gramps 3.3 Wiki Manual - Settings|3.3}}<br />
<br />
<br />
[[Category:Documentation]][[Category:Plugins]]<br />
<br />
{{languages|Gramps_3.3_Wiki_Manual_-_Tools}}</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Brief_introduction_to_SVN&diff=28088Brief introduction to SVN2011-03-29T19:25:36Z<p>PaulFranklin: </p>
<hr />
<div>The development source code of GRAMPS is stored in the SVN repository at sourceforge [http://gramps.svn.sourceforge.net/viewsvn/gramps]. This helps synchronizing changes from various developers, tracking changes, managing releases, etc. If you are reading this, you probably<br />
want to do one of two things<br />
with SVN: either download the latest source or the development version,<br />
or else upload your changes (if you have write access to the repository)<br />
or make a patchfile (if you don't have write access).<br />
<br />
== Types of branches ==<br />
There are four kinds of branches in the Subversion Repository: <br />
<br />
* ''trunk'' - There is only one trunk. All new feature development happens in the trunk. New releases never come from the trunk. The trunk for GRAMPS can be found here: https://gramps.svn.sourceforge.net/svnroot/gramps/trunk<br />
<br />
* ''maintenance'' - There are many maintenance branches. A maintenance branch is created from the trunk when all the features for a release are complete. New features are not committed to maintenance branch. Releases only come from maintenance branches. The purpose of maintenance branches is to allow the line of code to stabilize while new features are added in trunk. Maintenance branches can be found here: https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance<br />
<br />
* ''geps'' - These are meant for development of [[Portal:Enhancement_Proposals|Gramps Enhancement Proposals]]. Most of the time GEPS are developed in the ''trunk''. Occassionally a GEP will require extensive reworking or long periods when the code base is ususable. In these cases a branch in ''geps'' can be used as a temporary development area. Once the hard work is done the change should be merged into the trunk and the ''geps'' branch should be removed. ''greps'' branches should follow the naming convention ''gep-<###>-<descriptive text>'' e.g. ''gep-013-server''. Please read the [[#Working with development branches]] section for help with managing these branches.<br />
<br />
* ''sandbox'' - These are meant for experimentation purposes. If you want to explore some ideas or try out some changes that would break the ''trunk'' or prototype something that has not made it to a GEP you can create a ''sandbox'' branch. These should be short lived. As soon as you have finished please remove the branch. We reserve the right to remove any ''sandbox'' branch that has not been touched for 12 months. ''sandbox'' branches should use the following naming convention ''<username>-<descriptive text>'' e.g. ''hippy-prototype-rss-idea''. Please read the [[#Working with development branches]] section for help with managing these branches.<br />
<br />
Release tags are created in the ''tags'' directory. The first two digits of the GRAMPS version number are reserved to indicate the maintenance branch the code came from. The last digit indicates the revision from that maintenance branch. For example, 3.0.4 would indicate the 5th release from the 3.0 branch (3.0.0, 3.0.1, 3.0.2, 3.0.3, 3.0.4).<br />
<br />
Here is a hypothetical example:<br />
Imagine that the current version of GRAMPS is 8.3.2. A new series of features has been added in trunk and are ready for release. A new maintenance branch is created from trunk named 8.4 (or possibly 9.0 depending on the nature of the new features). New features continue to be added in trunk that will not be included in the 8.4 series of releases, but will be included in the 8.5 series. Bug fixes continue to occur in the 8.4 branch until the code is deemed worthy of release. At that time, a release is tagged from the 8.4 maintenance branch and named 8.4.0. Some time after the release of 8.4.0, some bugs are found and fixed in the 8.4 maintenance branch. Those bug fixes are released as 8.4.1.<br />
<br />
== Stable version 3.2.x ==<br />
* To download the source to a /home/~user/gramps32 directory, you can use two methods to access the SVN repository:<br />
# An http frontend to gramps SVN<br />
# SVN access <br />
* To upload your changes, you have to have developer access. <br />
<br />
The second method requires that svn be installed on your system (Debian/Ubuntu: <code>apt-get install subversion</code>; Fedora: <code>yum install subversion</code>).<br />
With the SVN method, type the following in the command line: <code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps32 gramps32</code><br />
<br />
You should see the downloading progress reported in your terminal. If you would like to update your source tree after some time, execute the following command in the top directory of the gramps32 source tree:<br />
<br />
<code><br />
svn update<br />
</code><br />
<br />
To commit your changes, you can execute:<br />
<br />
<code><br />
svn commit -m "message describing the nature of the change"<br />
</code><br />
<br />
Since uploading is a potentially dangerous operation, you have to explicitly obtain write access to the SVN repository from [[Contact|Brian Matherly or Benny Malengier]].<br />
<br />
== Unstable development: "trunk" ==<br />
<br />
:Also see: [[Running_a_development_version_of_Gramps|Running a development version of GRAMPS]], and [[Getting Started with GRAMPS 3]]<br />
<br />
=== Packages ===<br />
<br />
* '''Unix-like systems''': a first beta has been released as a downloadable package, see [http://sourceforge.net/project/showfiles.php?group_id=25770 sourceforge unstable]. <br />
* '''Windows systems''': follow the directions at http://www.dancingpaper.com/gramps/. <br />
<br />
=== Obtain it===<br />
There are several versions of the gramps code in SVN. <br />
The development branch for small changes and bug fixes is ''gramps32'' and ''trunk'' has been created for the ongoing unstable version. <br />
If this talk of ''branch'' and ''trunk'' sounds confusing you might like to read the list message [http://article.gmane.org/gmane.comp.genealogy.gramps.devel/8678 explaining branch and trunk].<br />
<br />
To checkout a copy of the possibly unstable trunk to ./trunk:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/trunk trunk<br />
</code><br />
<br />
To checkout a copy of the last branch GRAMPS 3.3 ./gramps33:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps33 gramps33<br />
</code><br />
<br />
To checkout a copy of the last branch GRAMPS 3.2 ./gramps32:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps32 gramps32<br />
</code><br />
<br />
To checkout a copy of the last branch GRAMPS 3.1 ./gramps31:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps31 gramps31<br />
</code><br />
<br />
To checkout a copy of the older stable GRAMPS 3.0 ./gramps30:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps30 gramps30<br />
</code><br />
<br />
To checkout a copy of the older stable GRAMPS 2.2 ./gramps22:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps22 gramps22<br />
</code><br />
<br />
=== Prepare it ===<br />
Now go into the <code>trunk</code> directory and type<br />
./autogen.sh<br />
You will get warnings of missing packages that GRAMPS needs to build from source. The most common warnings are, that you miss the gnome-common package if you run under Linux and Gnome. If you run Ubuntu install via Synaptic the 'gnome-common' (version 2.20.0-0ubuntu1): common scripts and macros to develop with GNOME: gnome-common is an extension to autoconf, automake and libtool for the GNOME<br />
environment and GNOME using applications. Included are gnome-autogen.sh and several macros to help in both GNOME and GNOME 2.0 source trees. Install these and/or any other missing packages, read INSTALL and README file in the ''trunk'' dir for pointers. An important library is also libglib2.0-dev. Check whether your system has this package installed.<br />
This will execute the make command too. If not, type after the above<br />
make<br />
<br />
{{man warn|1=Warning|2=Do not install the development version. That is, do '''not''' type {{man label|sudo make install}}. }}<br />
<br />
==== Building with Fedora 8 - 10 ====<br />
<br />
These are the packages you need:<br />
<br />
<code><br />
yum install gnome-common intltool glib2-devel gnome-doc-utils gcc emacs gettext subversion make rcs<br />
</code><br />
<br />
Now you can run the '''./autogen.sh''' script and then '''make'''.<br />
<br />
==== Windows ====<br />
This step appears unnecessary on windows? See [[Installation#Installing_from_source_code_on_Windows]]<br />
<br />
=== Run the development version ===<br />
As you should not install the development version, how can you try it out? The current Python version required to run Gramps trunk is officially python2.6 as of July 2010. Easy, just type the following in the <code>trunk</code> directory<br />
python src/gramps.py<br />
or<br />
python2.6 src/gramps.py<br />
<br />
<br />
{{man warn|1=warning|2=Do not open your existing databases with trunk, it might destroy your data, and will make it impossible to use the data in the stable version 3.1.x. To try it out, export your database to a gramps xml file, eg <code>test_trunk.gramps</code>, create a new family tree in trunk, and import this xml file.}}<br />
<br />
=== Where for bugs? ===<br />
The [http://bugs.gramps-project.org bug tracker] has in the right top angle different projects. Choose project ''trunk'' and submit an issue.<br />
<br />
=== Making a patchfile ===<br />
If you do not have write access to the repository, you can make a patchfile with your changes. This is a text file which can then be sent by email to somebody, or posted/uploaded to the bug tracker (against a bug you are fixing or a feature request which you are solving for instance), etc.<br />
<br />
These instructions assume SVN is installed on your system (Debian/Ubuntu: <code>apt-get install subversion</code>; Fedora: <code>yum install subversion</code>).<br />
<br />
These instructions tell how to make a patchfile against trunk, so that your changes are added to the next major release of Gramps. (To make a patchfile against a branch the process is similar, with some slight changes.)<br />
<br />
So first checkout a copy of the trunk to ./trunk:<br />
<br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/trunk trunk<br />
<br />
Then use your favorite editor to change whatever file(s) you want.<br />
<br />
To then use SVN to make a patchfile, first go to the top of your changed tree<br />
<br />
cd /path-to-your-gramps/trunk<br />
<br />
and then tell SVN to record/document/itemize the changes to your edited file(s)<br />
<br />
svn diff > ~/some-descriptive-name.patch<br />
<br />
with the resulting file being the patchfile you just made.<br />
<br />
If you want to add a new text file, such as a new python module,<br />
you can include that in your patchfile by first doing, e.g.,<br />
<br />
svn add dir1/dir2/newfile.py<br />
<br />
before you do the "svn diff" as described above. (This method<br />
does not work for non-text files such as image files; be warned.)<br />
<br />
Note also that if you add a file in this manner, depending<br />
on what was added and where it was added, you may also have<br />
to modify the corresponding Makefile.am file.<br />
<br />
I do not know how to make a patchfile which documents<br />
a deleted file which "patch" will then correctly delete.<br />
(If you know how, please add it here.) When SVN version 1.7<br />
is released (scheduled for 1Q2011 as I write this), then there<br />
will be a "svn patch" command which should do that.<br />
<br />
== Working with development branches ==<br />
<br />
<br />
If you are using a ''geps'' or ''sandbox'' branch you need to take care when merging changes from the ''trunk'' and back to the ''trunk''. Please take a few minutes to read the [http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html| Basic Merging] section of the Subversion book. <br />
<br />
'''IMPORTANT:''' please use an svn client that is version 1.5 or newer. The merge tracking functionality only became available in 1.5. If you use an earlier client you will have to deal with all the revision tracking of merges by hand - not fun.<br />
<br />
'''IMPORTANT:''' if you see a message that talks about ''from foreign repository'' it is probably because your working copy was checked out from an http:// url but you are merging from a https:// url or visa versa. Just be consistent about why you use. Don't merge ''from foreign repository'' because svn will not be able to manage the revisions correctly.<br />
<br />
Here is a quick crib sheet:<br />
<br />
=== Creating a branch ===<br />
<br />
To create a branch from the ''trunk'':<br />
<br />
svn copy https://gramps.svn.sourceforge.net/svnroot/gramps/trunk https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
=== Merging ''trunk'' changes into the branch ===<br />
<br />
You should do this regularly so that you don't have a nasty job of resolving loads of conflicts when you come to merge your changes back into the ''trunk'':<br />
<br />
cd gep-014-fab-feature<br />
svn merge https://gramps.svn.sourceforge.net/svnroot/gramps/trunk<br />
<br />
'''NOTE''' you will see some modification to files that you are not expecting. If you look at these you will find that they are modifications to svn properties. These are used by the merging tool to keep track of what changes have already been applied.<br />
<br />
=== Merging changes from the ''branch'' back into the ''trunk'' ===<br />
<br />
When you are ready to merge your changes back into the ''trunk'':<br />
<br />
First make sure you have all the ''trunk'' changes in your branch:<br />
<br />
cd gep-014-fab-feature<br />
svn merge https://gramps.svn.sourceforge.net/svnroot/gramps/trunk<br />
svn commit -m "meaningful message"<br />
<br />
Then move over to a working copy of the ''trunk'' and merge in your branch:<br />
<br />
cd trunk<br />
svn merge --reintegrate https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
Now build it, test it, convince yourself that it all works and then commit the changes:<br />
<br />
svn commit -m "All the changes for GEP-014"<br />
<br />
Now you '''must''' delete your branch. You can recreate it later if you need to but svn can not cope with doing another merge --reintegrate from the same branch:<br />
<br />
svn remove https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
=== Removing branches ===<br />
<br />
It is important that branches are removed once they have been merged<br />
into the trunk or have been abandoned. To remove a branch:<br />
<br />
svn remove https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
The developers reserve the right to remove branches that have been<br />
dormant for more than 1 year.<br />
<br />
<br />
== Useful things to know ==<br />
=== Subversion commands ===<br />
svn help add<br />
<br />
svn help commit<br />
<br />
svn help log<br />
<br />
Adding files to repositories requires you to set some properties to the files and to have a [http://apps.sourceforge.net/trac/sitedocs/wiki/Subversion sourceforge account]. See <code>svn help propset</code>. You can use the <code>propget</code> on existing files to see how you should add it. A convenient way is to common files to your <code>~/.subversion/config</code> file, eg in my config I have:<br />
<br />
[miscellany]<br />
enable-auto-props = yes<br />
<br />
[auto-props]<br />
*.py = svn:eol-style=native;svn:mime-type=text/plain;svn:keywords=Author Date Id Revision<br />
*.po = svn:eol-style=native;svn:mime-type=text/plain;svn:keywords=Author Date Id Revision<br />
*.sh = svn:eol-style=native;svn:executable<br />
Makefile = svn:eol-style=native<br />
*.png = svn:mime-type=application/octet-stream<br />
*.svg = svn:eol-style=native;svn:mime-type=text/plain<br />
<br />
=== Ignore files ===<br />
You should on creation of new directories set the svn:ignore property:<br />
<br />
svn propedit svn:ignore src/new_dir/<br />
<br />
and there set at least:<br />
*.pyc<br />
*.pyo<br />
Makefile<br />
Makefile.in<br />
<br />
=== svn2cl ===<br />
The GRAMPS project does not keep a ChangeLog file under source control. All change history is captured by Subversion automatically when it is committed. A ChangeLog file is generated from the SVN commit logs before each release using [[How to use svn2cl|svn2cl]]. Developers should take care to make useful commit log messages when committing changes to Subversion. Here are some guidelines:<br />
<br />
*Try to make a descriptive message about the change.<br />
*Use complete sentences when possible.<br />
*When committing a change that fixes a bug on the tracker, use the bug's number and summary as the message.<br />
*When committing a patch from a contributor, put the contributor's name and e-mail address in the commit message.<br />
*It is not necessary to put the names of the files you have modified in the commit message because Subversion stores that automatically.<br />
<br />
=== Other usage tips ===<br />
<br />
* Additional tips and recommendations related to committing changes: [[SVN Commit Tips]]<br />
* GRAMPS [[Committing Policies]]<br />
<br />
=== Browse svn ===<br />
<br />
An alternative to the command line tools to view the svn repository is<br />
the [http://gramps.svn.sourceforge.net/viewvc/gramps/ online interface].<br />
<br />
[[Category:Developers/General|B]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Brief_introduction_to_SVN&diff=28087Brief introduction to SVN2011-03-29T18:39:51Z<p>PaulFranklin: /* Making a patchfile */</p>
<hr />
<div>The development source code of GRAMPS is stored in the SVN repository at sourceforge [http://gramps.svn.sourceforge.net/viewsvn/gramps]. This helps synchronizing changes from various developers, tracking changes, managing releases, etc. If you are reading this, you probably<br />
want to do one of two things<br />
with SVN: either download the latest source or the development version,<br />
or else upload your changes (if you have write access to the repository)<br />
or make a patchfile (if you don't have write access).<br />
<br />
== Types of branches ==<br />
There are four kinds of branches in the Subversion Repository: <br />
<br />
* ''trunk'' - There is only one trunk. All new feature development happens in the trunk. New releases never come from the trunk. The trunk for GRAMPS can be found here: https://gramps.svn.sourceforge.net/svnroot/gramps/trunk<br />
<br />
* ''maintenance'' - There are many maintenance branches. A maintenance branch is created from the trunk when all the features for a release are complete. New features are not committed to maintenance branch. Releases only come from maintenance branches. The purpose of maintenance branches is to allow the line of code to stabilize while new features are added in trunk. Maintenance branches can be found here: https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance<br />
<br />
* ''geps'' - These are meant for development of [[Portal:Enhancement_Proposals|Gramps Enhancement Proposals]]. Most of the time GEPS are developed in the ''trunk''. Occassionally a GEP will require extensive reworking or long periods when the code base is ususable. In these cases a branch in ''geps'' can be used as a temporary development area. Once the hard work is done the change should be merged into the trunk and the ''geps'' branch should be removed. ''greps'' branches should follow the naming convention ''gep-<###>-<descriptive text>'' e.g. ''gep-013-server''. Please read the [[#Working with development branches]] section for help with managing these branches.<br />
<br />
* ''sandbox'' - These are meant for experimentation purposes. If you want to explore some ideas or try out some changes that would break the ''trunk'' or prototype something that has not made it to a GEP you can create a ''sandbox'' branch. These should be short lived. As soon as you have finished please remove the branch. We reserve the right to remove any ''sandbox'' branch that has not been touched for 12 months. ''sandbox'' branches should use the following naming convention ''<username>-<descriptive text>'' e.g. ''hippy-prototype-rss-idea''. Please read the [[#Working with development branches]] section for help with managing these branches.<br />
<br />
Release tags are created in the ''tags'' directory. The first two digits of the GRAMPS version number are reserved to indicate the maintenance branch the code came from. The last digit indicates the revision from that maintenance branch. For example, 3.0.4 would indicate the 5th release from the 3.0 branch (3.0.0, 3.0.1, 3.0.2, 3.0.3, 3.0.4).<br />
<br />
Here is a hypothetical example:<br />
Imagine that the current version of GRAMPS is 8.3.2. A new series of features has been added in trunk and are ready for release. A new maintenance branch is created from trunk named 8.4 (or possibly 9.0 depending on the nature of the new features). New features continue to be added in trunk that will not be included in the 8.4 series of releases, but will be included in the 8.5 series. Bug fixes continue to occur in the 8.4 branch until the code is deemed worthy of release. At that time, a release is tagged from the 8.4 maintenance branch and named 8.4.0. Some time after the release of 8.4.0, some bugs are found and fixed in the 8.4 maintenance branch. Those bug fixes are released as 8.4.1.<br />
<br />
== Stable version 3.2.x ==<br />
* To download the source to a /home/~user/gramps32 directory, you can use two methods to access the SVN repository:<br />
# An http frontend to gramps SVN<br />
# SVN access <br />
* To upload your changes, you have to have developer access. <br />
<br />
The second method requires that svn be installed on your system (Debian/Ubuntu: <code>apt-get install subversion</code>; Fedora: <code>yum install subversion</code>).<br />
With the SVN method, type the following in the command line: <code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps32 gramps32</code><br />
<br />
You should see the downloading progress reported in your terminal. If you would like to update your source tree after some time, execute the following command in the top directory of the gramps32 source tree:<br />
<br />
<code><br />
svn update<br />
</code><br />
<br />
To commit your changes, you can execute:<br />
<br />
<code><br />
svn commit -m "message describing the nature of the change"<br />
</code><br />
<br />
Since uploading is a potentially dangerous operation, you have to explicitly obtain write access to the SVN repository from [[Contact|Brian Matherly or Benny Malengier]].<br />
<br />
== Unstable development: "trunk" ==<br />
<br />
:Also see: [[Running_a_development_version_of_Gramps|Running a development version of GRAMPS]], and [[Getting Started with GRAMPS 3]]<br />
<br />
=== Packages ===<br />
<br />
* '''Unix-like systems''': a first beta has been released as a downloadable package, see [http://sourceforge.net/project/showfiles.php?group_id=25770 sourceforge unstable]. <br />
* '''Windows systems''': follow the directions at http://www.dancingpaper.com/gramps/. <br />
<br />
=== Obtain it===<br />
There are several versions of the gramps code in SVN. <br />
The development branch for small changes and bug fixes is ''gramps32'' and ''trunk'' has been created for the ongoing unstable version. <br />
If this talk of ''branch'' and ''trunk'' sounds confusing you might like to read the list message [http://article.gmane.org/gmane.comp.genealogy.gramps.devel/8678 explaining branch and trunk].<br />
<br />
To checkout a copy of the possibly unstable trunk to ./trunk:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/trunk trunk<br />
</code><br />
<br />
To checkout a copy of the last branch GRAMPS 3.3 ./gramps33:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps33 gramps33<br />
</code><br />
<br />
To checkout a copy of the last branch GRAMPS 3.2 ./gramps32:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps32 gramps32<br />
</code><br />
<br />
To checkout a copy of the last branch GRAMPS 3.1 ./gramps31:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps31 gramps31<br />
</code><br />
<br />
To checkout a copy of the older stable GRAMPS 3.0 ./gramps30:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps30 gramps30<br />
</code><br />
<br />
To checkout a copy of the older stable GRAMPS 2.2 ./gramps22:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps22 gramps22<br />
</code><br />
<br />
=== Prepare it ===<br />
Now go into the <code>trunk</code> directory and type<br />
./autogen.sh<br />
You will get warnings of missing packages that GRAMPS needs to build from source. The most common warnings are, that you miss the gnome-common package if you run under Linux and Gnome. If you run Ubuntu install via Synaptic the 'gnome-common' (version 2.20.0-0ubuntu1): common scripts and macros to develop with GNOME: gnome-common is an extension to autoconf, automake and libtool for the GNOME<br />
environment and GNOME using applications. Included are gnome-autogen.sh and several macros to help in both GNOME and GNOME 2.0 source trees. Install these and/or any other missing packages, read INSTALL and README file in the ''trunk'' dir for pointers. An important library is also libglib2.0-dev. Check whether your system has this package installed.<br />
This will execute the make command too. If not, type after the above<br />
make<br />
<br />
{{man warn|1=Warning|2=Do not install the development version. That is, do '''not''' type {{man label|sudo make install}}. }}<br />
<br />
==== Building with Fedora 8 - 10 ====<br />
<br />
These are the packages you need:<br />
<br />
<code><br />
yum install gnome-common intltool glib2-devel gnome-doc-utils gcc emacs gettext subversion make rcs<br />
</code><br />
<br />
Now you can run the '''./autogen.sh''' script and then '''make'''.<br />
<br />
==== Windows ====<br />
This step appears unnecessary on windows? See [[Installation#Installing_from_source_code_on_Windows]]<br />
<br />
=== Run the development version ===<br />
As you should not install the development version, how can you try it out? The current Python version required to run Gramps trunk is officially python2.6 as of July 2010. Easy, just type the following in the <code>trunk</code> directory<br />
python src/gramps.py<br />
or<br />
python2.6 src/gramps.py<br />
<br />
<br />
{{man warn|1=warning|2=Do not open your existing databases with trunk, it might destroy your data, and will make it impossible to use the data in the stable version 3.1.x. To try it out, export your database to a gramps xml file, eg <code>test_trunk.gramps</code>, create a new family tree in trunk, and import this xml file.}}<br />
<br />
=== Where for bugs? ===<br />
The [http://bugs.gramps-project.org bug tracker] has in the right top angle different projects. Choose project ''trunk'' and submit an issue.<br />
<br />
=== Making a patchfile ===<br />
If you do not have write access to the repository, you can make a patchfile with your changes. This is a text file which can then be sent by email to somebody, or posted/uploaded to the bug tracker (against a bug you are fixing or a feature request which you are solving for instance), etc.<br />
<br />
These instructions assume SVN is installed on your system (Debian/Ubuntu: <code>apt-get install subversion</code>; Fedora: <code>yum install subversion</code>).<br />
<br />
These instructions tell how to make a patchfile against trunk, so that your changes are added to the next major release of Gramps. (To make a patchfile against a branch the process is similar, with some slight changes.)<br />
<br />
So first checkout a copy of the trunk to ./trunk:<br />
<br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/trunk trunk<br />
<br />
Then use your favorite editor to change whatever file(s) you want.<br />
<br />
To then use SVN to make a patchfile, first go to the top of your changed tree<br />
<br />
cd /path-to-your-gramps/trunk<br />
<br />
and then tell SVN to record/document/itemize the changes to your edited file(s)<br />
<br />
svn diff > ~/some-descriptive-name.patch<br />
<br />
with the resulting file being the patchfile you just made.<br />
<br />
If you want to add a new text file, such as a new python module,<br />
you can include that in your patchfile by first doing, e.g.,<br />
<br />
svn add dir1/dir2/newfile.py<br />
<br />
before you do the "svn diff" as described above. (This method<br />
does not work for non-text files such as image files; be warned.)<br />
<br />
Note also that if you add a file in this manner, depending<br />
on what was added and where it was added, you may also have<br />
to modify the corresponding Makefile.am file.<br />
<br />
== Working with development branches ==<br />
<br />
<br />
If you are using a ''geps'' or ''sandbox'' branch you need to take care when merging changes from the ''trunk'' and back to the ''trunk''. Please take a few minutes to read the [http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html| Basic Merging] section of the Subversion book. <br />
<br />
'''IMPORTANT:''' please use an svn client that is version 1.5 or newer. The merge tracking functionality only became available in 1.5. If you use an earlier client you will have to deal with all the revision tracking of merges by hand - not fun.<br />
<br />
'''IMPORTANT:''' if you see a message that talks about ''from foreign repository'' it is probably because your working copy was checked out from an http:// url but you are merging from a https:// url or visa versa. Just be consistent about why you use. Don't merge ''from foreign repository'' because svn will not be able to manage the revisions correctly.<br />
<br />
Here is a quick crib sheet:<br />
<br />
=== Creating a branch ===<br />
<br />
To create a branch from the ''trunk'':<br />
<br />
svn copy https://gramps.svn.sourceforge.net/svnroot/gramps/trunk https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
=== Merging ''trunk'' changes into the branch ===<br />
<br />
You should do this regularly so that you don't have a nasty job of resolving loads of conflicts when you come to merge your changes back into the ''trunk'':<br />
<br />
cd gep-014-fab-feature<br />
svn merge https://gramps.svn.sourceforge.net/svnroot/gramps/trunk<br />
<br />
'''NOTE''' you will see some modification to files that you are not expecting. If you look at these you will find that they are modifications to svn properties. These are used by the merging tool to keep track of what changes have already been applied.<br />
<br />
=== Merging changes from the ''branch'' back into the ''trunk'' ===<br />
<br />
When you are ready to merge your changes back into the ''trunk'':<br />
<br />
First make sure you have all the ''trunk'' changes in your branch:<br />
<br />
cd gep-014-fab-feature<br />
svn merge https://gramps.svn.sourceforge.net/svnroot/gramps/trunk<br />
svn commit -m "meaningful message"<br />
<br />
Then move over to a working copy of the ''trunk'' and merge in your branch:<br />
<br />
cd trunk<br />
svn merge --reintegrate https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
Now build it, test it, convince yourself that it all works and then commit the changes:<br />
<br />
svn commit -m "All the changes for GEP-014"<br />
<br />
Now you '''must''' delete your branch. You can recreate it later if you need to but svn can not cope with doing another merge --reintegrate from the same branch:<br />
<br />
svn remove https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
=== Removing branches ===<br />
<br />
It is important that branches are removed once they have been merged<br />
into the trunk or have been abandoned. To remove a branch:<br />
<br />
svn remove https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
The developers reserve the right to remove branches that have been<br />
dormant for more than 1 year.<br />
<br />
<br />
== Useful things to know ==<br />
=== Subversion commands ===<br />
svn help add<br />
<br />
svn help commit<br />
<br />
svn help log<br />
<br />
Adding files to repositories requires you to set some properties to the files and to have a [http://apps.sourceforge.net/trac/sitedocs/wiki/Subversion sourceforge account]. See <code>svn help propset</code>. You can use the <code>propget</code> on existing files to see how you should add it. A convenient way is to common files to your <code>~/.subversion/config</code> file, eg in my config I have:<br />
<br />
[miscellany]<br />
enable-auto-props = yes<br />
<br />
[auto-props]<br />
*.py = svn:eol-style=native;svn:mime-type=text/plain;svn:keywords=Author Date Id Revision<br />
*.po = svn:eol-style=native;svn:mime-type=text/plain;svn:keywords=Author Date Id Revision<br />
*.sh = svn:eol-style=native;svn:executable<br />
Makefile = svn:eol-style=native<br />
*.png = svn:mime-type=application/octet-stream<br />
*.svg = svn:eol-style=native;svn:mime-type=text/plain<br />
<br />
=== Ignore files ===<br />
You should on creation of new directories set the svn:ignore property:<br />
<br />
svn propedit svn:ignore src/new_dir/<br />
<br />
and there set at least:<br />
*.pyc<br />
*.pyo<br />
Makefile<br />
Makefile.in<br />
<br />
=== svn2cl ===<br />
The GRAMPS project does not keep a ChangeLog file under source control. All change history is captured by Subversion automatically when it is committed. A ChangeLog file is generated from the SVN commit logs before each release using [[How to use svn2cl|svn2cl]]. Developers should take care to make useful commit log messages when committing changes to Subversion. Here are some guidelines:<br />
<br />
*Try to make a descriptive message about the change.<br />
*Use complete sentences when possible.<br />
*When committing a change that fixes a bug on the tracker, use the bug's number and summary as the message.<br />
*When committing a patch from a contributor, put the contributor's name and e-mail address in the commit message.<br />
*It is not necessary to put the names of the files you have modified in the commit message because Subversion stores that automatically.<br />
<br />
=== Other usage tips ===<br />
<br />
* Additional tips and recommendations related to committing changes: [[SVN Commit Tips]]<br />
* GRAMPS [[Committing Policies]]<br />
<br />
=== Browse svn ===<br />
<br />
An alternative to the command line tools to view the svn repository is<br />
the [http://gramps.svn.sourceforge.net/viewvc/gramps/ online interface].<br />
<br />
[[Category:Developers/General|B]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Brief_introduction_to_SVN&diff=28086Brief introduction to SVN2011-03-29T18:15:19Z<p>PaulFranklin: </p>
<hr />
<div>The development source code of GRAMPS is stored in the SVN repository at sourceforge [http://gramps.svn.sourceforge.net/viewsvn/gramps]. This helps synchronizing changes from various developers, tracking changes, managing releases, etc. If you are reading this, you probably<br />
want to do one of two things<br />
with SVN: either download the latest source or the development version,<br />
or else upload your changes (if you have write access to the repository)<br />
or make a patchfile (if you don't have write access).<br />
<br />
== Types of branches ==<br />
There are four kinds of branches in the Subversion Repository: <br />
<br />
* ''trunk'' - There is only one trunk. All new feature development happens in the trunk. New releases never come from the trunk. The trunk for GRAMPS can be found here: https://gramps.svn.sourceforge.net/svnroot/gramps/trunk<br />
<br />
* ''maintenance'' - There are many maintenance branches. A maintenance branch is created from the trunk when all the features for a release are complete. New features are not committed to maintenance branch. Releases only come from maintenance branches. The purpose of maintenance branches is to allow the line of code to stabilize while new features are added in trunk. Maintenance branches can be found here: https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance<br />
<br />
* ''geps'' - These are meant for development of [[Portal:Enhancement_Proposals|Gramps Enhancement Proposals]]. Most of the time GEPS are developed in the ''trunk''. Occassionally a GEP will require extensive reworking or long periods when the code base is ususable. In these cases a branch in ''geps'' can be used as a temporary development area. Once the hard work is done the change should be merged into the trunk and the ''geps'' branch should be removed. ''greps'' branches should follow the naming convention ''gep-<###>-<descriptive text>'' e.g. ''gep-013-server''. Please read the [[#Working with development branches]] section for help with managing these branches.<br />
<br />
* ''sandbox'' - These are meant for experimentation purposes. If you want to explore some ideas or try out some changes that would break the ''trunk'' or prototype something that has not made it to a GEP you can create a ''sandbox'' branch. These should be short lived. As soon as you have finished please remove the branch. We reserve the right to remove any ''sandbox'' branch that has not been touched for 12 months. ''sandbox'' branches should use the following naming convention ''<username>-<descriptive text>'' e.g. ''hippy-prototype-rss-idea''. Please read the [[#Working with development branches]] section for help with managing these branches.<br />
<br />
Release tags are created in the ''tags'' directory. The first two digits of the GRAMPS version number are reserved to indicate the maintenance branch the code came from. The last digit indicates the revision from that maintenance branch. For example, 3.0.4 would indicate the 5th release from the 3.0 branch (3.0.0, 3.0.1, 3.0.2, 3.0.3, 3.0.4).<br />
<br />
Here is a hypothetical example:<br />
Imagine that the current version of GRAMPS is 8.3.2. A new series of features has been added in trunk and are ready for release. A new maintenance branch is created from trunk named 8.4 (or possibly 9.0 depending on the nature of the new features). New features continue to be added in trunk that will not be included in the 8.4 series of releases, but will be included in the 8.5 series. Bug fixes continue to occur in the 8.4 branch until the code is deemed worthy of release. At that time, a release is tagged from the 8.4 maintenance branch and named 8.4.0. Some time after the release of 8.4.0, some bugs are found and fixed in the 8.4 maintenance branch. Those bug fixes are released as 8.4.1.<br />
<br />
== Stable version 3.2.x ==<br />
* To download the source to a /home/~user/gramps32 directory, you can use two methods to access the SVN repository:<br />
# An http frontend to gramps SVN<br />
# SVN access <br />
* To upload your changes, you have to have developer access. <br />
<br />
The second method requires that svn be installed on your system (Debian/Ubuntu: <code>apt-get install subversion</code>; Fedora: <code>yum install subversion</code>).<br />
With the SVN method, type the following in the command line: <code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps32 gramps32</code><br />
<br />
You should see the downloading progress reported in your terminal. If you would like to update your source tree after some time, execute the following command in the top directory of the gramps32 source tree:<br />
<br />
<code><br />
svn update<br />
</code><br />
<br />
To commit your changes, you can execute:<br />
<br />
<code><br />
svn commit -m "message describing the nature of the change"<br />
</code><br />
<br />
Since uploading is a potentially dangerous operation, you have to explicitly obtain write access to the SVN repository from [[Contact|Brian Matherly or Benny Malengier]].<br />
<br />
== Unstable development: "trunk" ==<br />
<br />
:Also see: [[Running_a_development_version_of_Gramps|Running a development version of GRAMPS]], and [[Getting Started with GRAMPS 3]]<br />
<br />
=== Packages ===<br />
<br />
* '''Unix-like systems''': a first beta has been released as a downloadable package, see [http://sourceforge.net/project/showfiles.php?group_id=25770 sourceforge unstable]. <br />
* '''Windows systems''': follow the directions at http://www.dancingpaper.com/gramps/. <br />
<br />
=== Obtain it===<br />
There are several versions of the gramps code in SVN. <br />
The development branch for small changes and bug fixes is ''gramps32'' and ''trunk'' has been created for the ongoing unstable version. <br />
If this talk of ''branch'' and ''trunk'' sounds confusing you might like to read the list message [http://article.gmane.org/gmane.comp.genealogy.gramps.devel/8678 explaining branch and trunk].<br />
<br />
To checkout a copy of the possibly unstable trunk to ./trunk:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/trunk trunk<br />
</code><br />
<br />
To checkout a copy of the last branch GRAMPS 3.3 ./gramps33:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps33 gramps33<br />
</code><br />
<br />
To checkout a copy of the last branch GRAMPS 3.2 ./gramps32:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps32 gramps32<br />
</code><br />
<br />
To checkout a copy of the last branch GRAMPS 3.1 ./gramps31:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps31 gramps31<br />
</code><br />
<br />
To checkout a copy of the older stable GRAMPS 3.0 ./gramps30:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps30 gramps30<br />
</code><br />
<br />
To checkout a copy of the older stable GRAMPS 2.2 ./gramps22:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps22 gramps22<br />
</code><br />
<br />
=== Prepare it ===<br />
Now go into the <code>trunk</code> directory and type<br />
./autogen.sh<br />
You will get warnings of missing packages that GRAMPS needs to build from source. The most common warnings are, that you miss the gnome-common package if you run under Linux and Gnome. If you run Ubuntu install via Synaptic the 'gnome-common' (version 2.20.0-0ubuntu1): common scripts and macros to develop with GNOME: gnome-common is an extension to autoconf, automake and libtool for the GNOME<br />
environment and GNOME using applications. Included are gnome-autogen.sh and several macros to help in both GNOME and GNOME 2.0 source trees. Install these and/or any other missing packages, read INSTALL and README file in the ''trunk'' dir for pointers. An important library is also libglib2.0-dev. Check whether your system has this package installed.<br />
This will execute the make command too. If not, type after the above<br />
make<br />
<br />
{{man warn|1=Warning|2=Do not install the development version. That is, do '''not''' type {{man label|sudo make install}}. }}<br />
<br />
==== Building with Fedora 8 - 10 ====<br />
<br />
These are the packages you need:<br />
<br />
<code><br />
yum install gnome-common intltool glib2-devel gnome-doc-utils gcc emacs gettext subversion make rcs<br />
</code><br />
<br />
Now you can run the '''./autogen.sh''' script and then '''make'''.<br />
<br />
==== Windows ====<br />
This step appears unnecessary on windows? See [[Installation#Installing_from_source_code_on_Windows]]<br />
<br />
=== Run the development version ===<br />
As you should not install the development version, how can you try it out? The current Python version required to run Gramps trunk is officially python2.6 as of July 2010. Easy, just type the following in the <code>trunk</code> directory<br />
python src/gramps.py<br />
or<br />
python2.6 src/gramps.py<br />
<br />
<br />
{{man warn|1=warning|2=Do not open your existing databases with trunk, it might destroy your data, and will make it impossible to use the data in the stable version 3.1.x. To try it out, export your database to a gramps xml file, eg <code>test_trunk.gramps</code>, create a new family tree in trunk, and import this xml file.}}<br />
<br />
=== Where for bugs? ===<br />
The [http://bugs.gramps-project.org bug tracker] has in the right top angle different projects. Choose project ''trunk'' and submit an issue.<br />
<br />
=== Making a patchfile ===<br />
If you do not have write access to the repository, you can make a patchfile with your changes. This is a text file which can then be sent by email to somebody, or posted/uploaded to the bug tracker (against a bug you are fixing or a feature request which you are solving for instance), etc.<br />
<br />
These instructions assume SVN is installed on your system (Debian/Ubuntu: <code>apt-get install subversion</code>; Fedora: <code>yum install subversion</code>).<br />
<br />
These instructions tell how to make a patchfile against trunk, so that your changes are added to the next major release of Gramps. (To make a patchfile against a branch the process is similar, with some slight changes.)<br />
<br />
So first checkout a copy of the trunk to ./trunk:<br />
<br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/trunk trunk<br />
<br />
Then use your favorite editor to change whatever file(s) you want.<br />
<br />
To then use SVN to make a patchfile, first go to the top of your changed tree<br />
<br />
cd /path-to-your-gramps/trunk<br />
<br />
and then tell SVN to record/document/itemize the changes to your edited file(s)<br />
<br />
svn diff > ~/some-descriptive-name.patch<br />
<br />
with the resulting file being the patchfile you just made.<br />
<br />
If you want to add a new text file, such as a new python module,<br />
you can include that in your patchfile by first doing, e.g.,<br />
<br />
svn add dir1/dir2/newfile.py<br />
<br />
before you do the "svn diff" as described above. (This method<br />
does not work for non-text files such as image files; be warned.)<br />
<br />
== Working with development branches ==<br />
<br />
<br />
If you are using a ''geps'' or ''sandbox'' branch you need to take care when merging changes from the ''trunk'' and back to the ''trunk''. Please take a few minutes to read the [http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html| Basic Merging] section of the Subversion book. <br />
<br />
'''IMPORTANT:''' please use an svn client that is version 1.5 or newer. The merge tracking functionality only became available in 1.5. If you use an earlier client you will have to deal with all the revision tracking of merges by hand - not fun.<br />
<br />
'''IMPORTANT:''' if you see a message that talks about ''from foreign repository'' it is probably because your working copy was checked out from an http:// url but you are merging from a https:// url or visa versa. Just be consistent about why you use. Don't merge ''from foreign repository'' because svn will not be able to manage the revisions correctly.<br />
<br />
Here is a quick crib sheet:<br />
<br />
=== Creating a branch ===<br />
<br />
To create a branch from the ''trunk'':<br />
<br />
svn copy https://gramps.svn.sourceforge.net/svnroot/gramps/trunk https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
=== Merging ''trunk'' changes into the branch ===<br />
<br />
You should do this regularly so that you don't have a nasty job of resolving loads of conflicts when you come to merge your changes back into the ''trunk'':<br />
<br />
cd gep-014-fab-feature<br />
svn merge https://gramps.svn.sourceforge.net/svnroot/gramps/trunk<br />
<br />
'''NOTE''' you will see some modification to files that you are not expecting. If you look at these you will find that they are modifications to svn properties. These are used by the merging tool to keep track of what changes have already been applied.<br />
<br />
=== Merging changes from the ''branch'' back into the ''trunk'' ===<br />
<br />
When you are ready to merge your changes back into the ''trunk'':<br />
<br />
First make sure you have all the ''trunk'' changes in your branch:<br />
<br />
cd gep-014-fab-feature<br />
svn merge https://gramps.svn.sourceforge.net/svnroot/gramps/trunk<br />
svn commit -m "meaningful message"<br />
<br />
Then move over to a working copy of the ''trunk'' and merge in your branch:<br />
<br />
cd trunk<br />
svn merge --reintegrate https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
Now build it, test it, convince yourself that it all works and then commit the changes:<br />
<br />
svn commit -m "All the changes for GEP-014"<br />
<br />
Now you '''must''' delete your branch. You can recreate it later if you need to but svn can not cope with doing another merge --reintegrate from the same branch:<br />
<br />
svn remove https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
=== Removing branches ===<br />
<br />
It is important that branches are removed once they have been merged<br />
into the trunk or have been abandoned. To remove a branch:<br />
<br />
svn remove https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
The developers reserve the right to remove branches that have been<br />
dormant for more than 1 year.<br />
<br />
<br />
== Useful things to know ==<br />
=== Subversion commands ===<br />
svn help add<br />
<br />
svn help commit<br />
<br />
svn help log<br />
<br />
Adding files to repositories requires you to set some properties to the files and to have a [http://apps.sourceforge.net/trac/sitedocs/wiki/Subversion sourceforge account]. See <code>svn help propset</code>. You can use the <code>propget</code> on existing files to see how you should add it. A convenient way is to common files to your <code>~/.subversion/config</code> file, eg in my config I have:<br />
<br />
[miscellany]<br />
enable-auto-props = yes<br />
<br />
[auto-props]<br />
*.py = svn:eol-style=native;svn:mime-type=text/plain;svn:keywords=Author Date Id Revision<br />
*.po = svn:eol-style=native;svn:mime-type=text/plain;svn:keywords=Author Date Id Revision<br />
*.sh = svn:eol-style=native;svn:executable<br />
Makefile = svn:eol-style=native<br />
*.png = svn:mime-type=application/octet-stream<br />
*.svg = svn:eol-style=native;svn:mime-type=text/plain<br />
<br />
=== Ignore files ===<br />
You should on creation of new directories set the svn:ignore property:<br />
<br />
svn propedit svn:ignore src/new_dir/<br />
<br />
and there set at least:<br />
*.pyc<br />
*.pyo<br />
Makefile<br />
Makefile.in<br />
<br />
=== svn2cl ===<br />
The GRAMPS project does not keep a ChangeLog file under source control. All change history is captured by Subversion automatically when it is committed. A ChangeLog file is generated from the SVN commit logs before each release using [[How to use svn2cl|svn2cl]]. Developers should take care to make useful commit log messages when committing changes to Subversion. Here are some guidelines:<br />
<br />
*Try to make a descriptive message about the change.<br />
*Use complete sentences when possible.<br />
*When committing a change that fixes a bug on the tracker, use the bug's number and summary as the message.<br />
*When committing a patch from a contributor, put the contributor's name and e-mail address in the commit message.<br />
*It is not necessary to put the names of the files you have modified in the commit message because Subversion stores that automatically.<br />
<br />
=== Other usage tips ===<br />
<br />
* Additional tips and recommendations related to committing changes: [[SVN Commit Tips]]<br />
* GRAMPS [[Committing Policies]]<br />
<br />
=== Browse svn ===<br />
<br />
An alternative to the command line tools to view the svn repository is<br />
the [http://gramps.svn.sourceforge.net/viewvc/gramps/ online interface].<br />
<br />
[[Category:Developers/General|B]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Brief_introduction_to_SVN&diff=27762Brief introduction to SVN2011-03-22T15:15:47Z<p>PaulFranklin: /* Making a patchfile */</p>
<hr />
<div>The development source code of GRAMPS is stored in the SVN repository at sourceforge [http://gramps.svn.sourceforge.net/viewsvn/gramps]. This helps synchronizing changes from various developers, tracking changes, managing releases, etc. If you are reading this, you probably<br />
want to do just two things<br />
with SVN: download the latest source or the development version,<br />
or upload your changes (if you have write access to the repository)<br />
or make a patchfile (if you don't have write access).<br />
<br />
== Types of branches ==<br />
There are four kinds of branches in the Subversion Repository: <br />
<br />
* ''trunk'' - There is only one trunk. All new feature development happens in the trunk. New releases never come from the trunk. The trunk for GRAMPS can be found here: https://gramps.svn.sourceforge.net/svnroot/gramps/trunk<br />
<br />
* ''maintenance'' - There are many maintenance branches. A maintenance branch is created from the trunk when all the features for a release are complete. New features are not committed to maintenance branch. Releases only come from maintenance branches. The purpose of maintenance branches is to allow the line of code to stabilize while new features are added in trunk. Maintenance branches can be found here: https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance<br />
<br />
* ''geps'' - These are meant for development of [[Portal:Enhancement_Proposals|Gramps Enhancement Proposals]]. Most of the time GEPS are developed in the ''trunk''. Occassionally a GEP will require extensive reworking or long periods when the code base is ususable. In these cases a branch in ''geps'' can be used as a temporary development area. Once the hard work is done the change should be merged into the trunk and the ''geps'' branch should be removed. ''greps'' branches should follow the naming convention ''gep-<###>-<descriptive text>'' e.g. ''gep-013-server''. Please read the [[#Working with development branches]] section for help with managing these branches.<br />
<br />
* ''sandbox'' - These are meant for experimentation purposes. If you want to explore some ideas or try out some changes that would break the ''trunk'' or prototype something that has not made it to a GEP you can create a ''sandbox'' branch. These should be short lived. As soon as you have finished please remove the branch. We reserve the right to remove any ''sandbox'' branch that has not been touched for 12 months. ''sandbox'' branches should use the following naming convention ''<username>-<descriptive text>'' e.g. ''hippy-prototype-rss-idea''. Please read the [[#Working with development branches]] section for help with managing these branches.<br />
<br />
Release tags are created in the ''tags'' directory. The first two digits of the GRAMPS version number are reserved to indicate the maintenance branch the code came from. The last digit indicates the revision from that maintenance branch. For example, 3.0.4 would indicate the 5th release from the 3.0 branch (3.0.0, 3.0.1, 3.0.2, 3.0.3, 3.0.4).<br />
<br />
Here is a hypothetical example:<br />
Imagine that the current version of GRAMPS is 8.3.2. A new series of features has been added in trunk and are ready for release. A new maintenance branch is created from trunk named 8.4 (or possibly 9.0 depending on the nature of the new features). New features continue to be added in trunk that will not be included in the 8.4 series of releases, but will be included in the 8.5 series. Bug fixes continue to occur in the 8.4 branch until the code is deemed worthy of release. At that time, a release is tagged from the 8.4 maintenance branch and named 8.4.0. Some time after the release of 8.4.0, some bugs are found and fixed in the 8.4 maintenance branch. Those bug fixes are released as 8.4.1.<br />
<br />
== Stable version 3.2.x ==<br />
* To download the source to a /home/~user/gramps32 directory, you can use two methods to access the SVN repository:<br />
# An http frontend to gramps SVN<br />
# SVN access <br />
* To upload your changes, you have to have developer access. <br />
<br />
The second method requires that svn be installed on your system (Debian/Ubuntu: <code>apt-get install subversion</code>; Fedora: <code>yum install subversion</code>).<br />
With the SVN method, type the following in the command line: <code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps32 gramps32</code><br />
<br />
You should see the downloading progress reported in your terminal. If you would like to update your source tree after some time, execute the following command in the top directory of the gramps32 source tree:<br />
<br />
<code><br />
svn update<br />
</code><br />
<br />
To commit your changes, you can execute:<br />
<br />
<code><br />
svn commit -m "message describing the nature of the change"<br />
</code><br />
<br />
Since uploading is a potentially dangerous operation, you have to explicitly obtain write access to the SVN repository from [[Contact|Brian Matherly or Benny Malengier]].<br />
<br />
== Unstable development: "trunk" ==<br />
<br />
:Also see: [[Running_a_development_version_of_Gramps|Running a development version of GRAMPS]], and [[Getting Started with GRAMPS 3]]<br />
<br />
=== Packages ===<br />
<br />
* '''Unix-like systems''': a first beta has been released as a downloadable package, see [http://sourceforge.net/project/showfiles.php?group_id=25770 sourceforge unstable]. <br />
* '''Windows systems''': follow the directions at http://www.dancingpaper.com/gramps/. <br />
<br />
=== Obtain it===<br />
There are several versions of the gramps code in SVN. <br />
The development branch for small changes and bug fixes is ''gramps32'' and ''trunk'' has been created for the ongoing unstable version. <br />
If this talk of ''branch'' and ''trunk'' sounds confusing you might like to read the list message [http://article.gmane.org/gmane.comp.genealogy.gramps.devel/8678 explaining branch and trunk].<br />
<br />
To checkout a copy of the possibly unstable trunk to ./trunk:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/trunk trunk<br />
</code><br />
<br />
To checkout a copy of the last branch GRAMPS 3.3 ./gramps33:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps33 gramps33<br />
</code><br />
<br />
To checkout a copy of the last branch GRAMPS 3.2 ./gramps32:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps32 gramps32<br />
</code><br />
<br />
To checkout a copy of the last branch GRAMPS 3.1 ./gramps31:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps31 gramps31<br />
</code><br />
<br />
To checkout a copy of the older stable GRAMPS 3.0 ./gramps30:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps30 gramps30<br />
</code><br />
<br />
To checkout a copy of the older stable GRAMPS 2.2 ./gramps22:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps22 gramps22<br />
</code><br />
<br />
=== Prepare it ===<br />
Now go into the <code>trunk</code> directory and type<br />
./autogen.sh<br />
You will get warnings of missing packages that GRAMPS needs to build from source. The most common warnings are, that you miss the gnome-common package if you run under Linux and Gnome. If you run Ubuntu install via Synaptic the 'gnome-common' (version 2.20.0-0ubuntu1): common scripts and macros to develop with GNOME: gnome-common is an extension to autoconf, automake and libtool for the GNOME<br />
environment and GNOME using applications. Included are gnome-autogen.sh and several macros to help in both GNOME and GNOME 2.0 source trees. Install these and/or any other missing packages, read INSTALL and README file in the ''trunk'' dir for pointers. An important library is also libglib2.0-dev. Check whether your system has this package installed.<br />
This will execute the make command too. If not, type after the above<br />
make<br />
<br />
{{man warn|1=Warning|2=Do not install the development version. That is, do '''not''' type {{man label|sudo make install}}. }}<br />
<br />
==== Building with Fedora 8 - 10 ====<br />
<br />
These are the packages you need:<br />
<br />
<code><br />
yum install gnome-common intltool glib2-devel gnome-doc-utils gcc emacs gettext subversion make rcs<br />
</code><br />
<br />
Now you can run the '''./autogen.sh''' script and then '''make'''.<br />
<br />
==== Windows ====<br />
This step appears unnecessary on windows? See [[Installation#Installing_from_source_code_on_Windows]]<br />
<br />
=== Run the development version ===<br />
As you should not install the development version, how can you try it out? The current Python version required to run Gramps trunk is officially python2.6 as of July 2010. Easy, just type the following in the <code>trunk</code> directory<br />
python src/gramps.py<br />
or<br />
python2.6 src/gramps.py<br />
<br />
<br />
{{man warn|1=warning|2=Do not open your existing databases with trunk, it might destroy your data, and will make it impossible to use the data in the stable version 3.1.x. To try it out, export your database to a gramps xml file, eg <code>test_trunk.gramps</code>, create a new family tree in trunk, and import this xml file.}}<br />
<br />
=== Where for bugs? ===<br />
The [http://bugs.gramps-project.org bug tracker] has in the right top angle different projects. Choose project ''trunk'' and submit an issue.<br />
<br />
=== Making a patchfile ===<br />
If you do not have write access to the repository, you can make a patchfile with your changes. This is a text file which can then be sent by email to somebody, or posted/uploaded to the bug tracker (against a bug you are fixing or a feature request which you are solving for instance), etc.<br />
<br />
These instructions assume SVN is installed on your system (Debian/Ubuntu: <code>apt-get install subversion</code>; Fedora: <code>yum install subversion</code>).<br />
<br />
These instructions tell how to make a patchfile against trunk, so that your changes are added to the next major release of Gramps. (To make a patchfile against a branch the process is similar, with some slight changes.)<br />
<br />
So first checkout a copy of the trunk to ./trunk:<br />
<br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/trunk trunk<br />
<br />
Then use your favorite editor to change whatever file(s) you want.<br />
<br />
To then use SVN to make a patchfile, first go to the top of your changed tree<br />
<br />
cd /path-to-your-gramps/trunk<br />
<br />
and then tell SVN to record/document/itemize the changes to your edited file(s)<br />
<br />
svn diff > ~/some-descriptive-name.patch<br />
<br />
with the resulting file being the patchfile you just made.<br />
<br />
== Working with development branches ==<br />
<br />
<br />
If you are using a ''geps'' or ''sandbox'' branch you need to take care when merging changes from the ''trunk'' and back to the ''trunk''. Please take a few minutes to read the [http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html| Basic Merging] section of the Subversion book. <br />
<br />
'''IMPORTANT:''' please use an svn client that is version 1.5 or newer. The merge tracking functionality only became available in 1.5. If you use an earlier client you will have to deal with all the revision tracking of merges by hand - not fun.<br />
<br />
'''IMPORTANT:''' if you see a message that talks about ''from foreign repository'' it is probably because your working copy was checked out from an http:// url but you are merging from a https:// url or visa versa. Just be consistent about why you use. Don't merge ''from foreign repository'' because svn will not be able to manage the revisions correctly.<br />
<br />
Here is a quick crib sheet:<br />
<br />
=== Creating a branch ===<br />
<br />
To create a branch from the ''trunk'':<br />
<br />
svn copy https://gramps.svn.sourceforge.net/svnroot/gramps/trunk https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
=== Merging ''trunk'' changes into the branch ===<br />
<br />
You should do this regularly so that you don't have a nasty job of resolving loads of conflicts when you come to merge your changes back into the ''trunk'':<br />
<br />
cd gep-014-fab-feature<br />
svn merge https://gramps.svn.sourceforge.net/svnroot/gramps/trunk<br />
<br />
'''NOTE''' you will see some modification to files that you are not expecting. If you look at these you will find that they are modifications to svn properties. These are used by the merging tool to keep track of what changes have already been applied.<br />
<br />
=== Merging changes from the ''branch'' back into the ''trunk'' ===<br />
<br />
When you are ready to merge your changes back into the ''trunk'':<br />
<br />
First make sure you have all the ''trunk'' changes in your branch:<br />
<br />
cd gep-014-fab-feature<br />
svn merge https://gramps.svn.sourceforge.net/svnroot/gramps/trunk<br />
svn commit -m "meaningful message"<br />
<br />
Then move over to a working copy of the ''trunk'' and merge in your branch:<br />
<br />
cd trunk<br />
svn merge --reintegrate https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
Now build it, test it, convince yourself that it all works and then commit the changes:<br />
<br />
svn commit -m "All the changes for GEP-014"<br />
<br />
Now you '''must''' delete your branch. You can recreate it later if you need to but svn can not cope with doing another merge --reintegrate from the same branch:<br />
<br />
svn remove https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
=== Removing branches ===<br />
<br />
It is important that branches are removed once they have been merged<br />
into the trunk or have been abandoned. To remove a branch:<br />
<br />
svn remove https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
The developers reserve the right to remove branches that have been<br />
dormant for more than 1 year.<br />
<br />
<br />
== Useful things to know ==<br />
=== Subversion commands ===<br />
svn help add<br />
<br />
svn help commit<br />
<br />
svn help log<br />
<br />
Adding files to repositories requires you to set some properties to the files and to have a [http://apps.sourceforge.net/trac/sitedocs/wiki/Subversion sourceforge account]. See <code>svn help propset</code>. You can use the <code>propget</code> on existing files to see how you should add it. A convenient way is to common files to your <code>~/.subversion/config</code> file, eg in my config I have:<br />
<br />
[miscellany]<br />
enable-auto-props = yes<br />
<br />
[auto-props]<br />
*.py = svn:eol-style=native;svn:mime-type=text/plain;svn:keywords=Author Date Id Revision<br />
*.po = svn:eol-style=native;svn:mime-type=text/plain;svn:keywords=Author Date Id Revision<br />
*.sh = svn:eol-style=native;svn:executable<br />
Makefile = svn:eol-style=native<br />
*.png = svn:mime-type=application/octet-stream<br />
*.svg = svn:eol-style=native;svn:mime-type=text/plain<br />
<br />
=== Ignore files ===<br />
You should on creation of new directories set the svn:ignore property:<br />
<br />
svn propedit svn:ignore src/new_dir/<br />
<br />
and there set at least:<br />
*.pyc<br />
*.pyo<br />
Makefile<br />
Makefile.in<br />
<br />
=== svn2cl ===<br />
The GRAMPS project does not keep a ChangeLog file under source control. All change history is captured by Subversion automatically when it is committed. A ChangeLog file is generated from the SVN commit logs before each release using [[How to use svn2cl|svn2cl]]. Developers should take care to make useful commit log messages when committing changes to Subversion. Here are some guidelines:<br />
<br />
*Try to make a descriptive message about the change.<br />
*Use complete sentences when possible.<br />
*When committing a change that fixes a bug on the tracker, use the bug's number and summary as the message.<br />
*When committing a patch from a contributor, put the contributor's name and e-mail address in the commit message.<br />
*It is not necessary to put the names of the files you have modified in the commit message because Subversion stores that automatically.<br />
<br />
=== Other usage tips ===<br />
<br />
* Additional tips and recommendations related to committing changes: [[SVN Commit Tips]]<br />
* GRAMPS [[Committing Policies]]<br />
<br />
=== Browse svn ===<br />
<br />
An alternative to the command line tools to view the svn repository is<br />
the [http://gramps.svn.sourceforge.net/viewvc/gramps/ online interface].<br />
<br />
[[Category:Developers/General|B]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Brief_introduction_to_SVN&diff=27761Brief introduction to SVN2011-03-22T15:11:58Z<p>PaulFranklin: /* Stable version 3.2.x */</p>
<hr />
<div>The development source code of GRAMPS is stored in the SVN repository at sourceforge [http://gramps.svn.sourceforge.net/viewsvn/gramps]. This helps synchronizing changes from various developers, tracking changes, managing releases, etc. If you are reading this, you probably<br />
want to do just two things<br />
with SVN: download the latest source or the development version,<br />
or upload your changes (if you have write access to the repository)<br />
or make a patchfile (if you don't have write access).<br />
<br />
== Types of branches ==<br />
There are four kinds of branches in the Subversion Repository: <br />
<br />
* ''trunk'' - There is only one trunk. All new feature development happens in the trunk. New releases never come from the trunk. The trunk for GRAMPS can be found here: https://gramps.svn.sourceforge.net/svnroot/gramps/trunk<br />
<br />
* ''maintenance'' - There are many maintenance branches. A maintenance branch is created from the trunk when all the features for a release are complete. New features are not committed to maintenance branch. Releases only come from maintenance branches. The purpose of maintenance branches is to allow the line of code to stabilize while new features are added in trunk. Maintenance branches can be found here: https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance<br />
<br />
* ''geps'' - These are meant for development of [[Portal:Enhancement_Proposals|Gramps Enhancement Proposals]]. Most of the time GEPS are developed in the ''trunk''. Occassionally a GEP will require extensive reworking or long periods when the code base is ususable. In these cases a branch in ''geps'' can be used as a temporary development area. Once the hard work is done the change should be merged into the trunk and the ''geps'' branch should be removed. ''greps'' branches should follow the naming convention ''gep-<###>-<descriptive text>'' e.g. ''gep-013-server''. Please read the [[#Working with development branches]] section for help with managing these branches.<br />
<br />
* ''sandbox'' - These are meant for experimentation purposes. If you want to explore some ideas or try out some changes that would break the ''trunk'' or prototype something that has not made it to a GEP you can create a ''sandbox'' branch. These should be short lived. As soon as you have finished please remove the branch. We reserve the right to remove any ''sandbox'' branch that has not been touched for 12 months. ''sandbox'' branches should use the following naming convention ''<username>-<descriptive text>'' e.g. ''hippy-prototype-rss-idea''. Please read the [[#Working with development branches]] section for help with managing these branches.<br />
<br />
Release tags are created in the ''tags'' directory. The first two digits of the GRAMPS version number are reserved to indicate the maintenance branch the code came from. The last digit indicates the revision from that maintenance branch. For example, 3.0.4 would indicate the 5th release from the 3.0 branch (3.0.0, 3.0.1, 3.0.2, 3.0.3, 3.0.4).<br />
<br />
Here is a hypothetical example:<br />
Imagine that the current version of GRAMPS is 8.3.2. A new series of features has been added in trunk and are ready for release. A new maintenance branch is created from trunk named 8.4 (or possibly 9.0 depending on the nature of the new features). New features continue to be added in trunk that will not be included in the 8.4 series of releases, but will be included in the 8.5 series. Bug fixes continue to occur in the 8.4 branch until the code is deemed worthy of release. At that time, a release is tagged from the 8.4 maintenance branch and named 8.4.0. Some time after the release of 8.4.0, some bugs are found and fixed in the 8.4 maintenance branch. Those bug fixes are released as 8.4.1.<br />
<br />
== Stable version 3.2.x ==<br />
* To download the source to a /home/~user/gramps32 directory, you can use two methods to access the SVN repository:<br />
# An http frontend to gramps SVN<br />
# SVN access <br />
* To upload your changes, you have to have developer access. <br />
<br />
The second method requires that svn be installed on your system (Debian/Ubuntu: <code>apt-get install subversion</code>; Fedora: <code>yum install subversion</code>).<br />
With the SVN method, type the following in the command line: <code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps32 gramps32</code><br />
<br />
You should see the downloading progress reported in your terminal. If you would like to update your source tree after some time, execute the following command in the top directory of the gramps32 source tree:<br />
<br />
<code><br />
svn update<br />
</code><br />
<br />
To commit your changes, you can execute:<br />
<br />
<code><br />
svn commit -m "message describing the nature of the change"<br />
</code><br />
<br />
Since uploading is a potentially dangerous operation, you have to explicitly obtain write access to the SVN repository from [[Contact|Brian Matherly or Benny Malengier]].<br />
<br />
== Unstable development: "trunk" ==<br />
<br />
:Also see: [[Running_a_development_version_of_Gramps|Running a development version of GRAMPS]], and [[Getting Started with GRAMPS 3]]<br />
<br />
=== Packages ===<br />
<br />
* '''Unix-like systems''': a first beta has been released as a downloadable package, see [http://sourceforge.net/project/showfiles.php?group_id=25770 sourceforge unstable]. <br />
* '''Windows systems''': follow the directions at http://www.dancingpaper.com/gramps/. <br />
<br />
=== Obtain it===<br />
There are several versions of the gramps code in SVN. <br />
The development branch for small changes and bug fixes is ''gramps32'' and ''trunk'' has been created for the ongoing unstable version. <br />
If this talk of ''branch'' and ''trunk'' sounds confusing you might like to read the list message [http://article.gmane.org/gmane.comp.genealogy.gramps.devel/8678 explaining branch and trunk].<br />
<br />
To checkout a copy of the possibly unstable trunk to ./trunk:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/trunk trunk<br />
</code><br />
<br />
To checkout a copy of the last branch GRAMPS 3.3 ./gramps33:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps33 gramps33<br />
</code><br />
<br />
To checkout a copy of the last branch GRAMPS 3.2 ./gramps32:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps32 gramps32<br />
</code><br />
<br />
To checkout a copy of the last branch GRAMPS 3.1 ./gramps31:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps31 gramps31<br />
</code><br />
<br />
To checkout a copy of the older stable GRAMPS 3.0 ./gramps30:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps30 gramps30<br />
</code><br />
<br />
To checkout a copy of the older stable GRAMPS 2.2 ./gramps22:<br />
<code><br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/branches/maintenance/gramps22 gramps22<br />
</code><br />
<br />
=== Prepare it ===<br />
Now go into the <code>trunk</code> directory and type<br />
./autogen.sh<br />
You will get warnings of missing packages that GRAMPS needs to build from source. The most common warnings are, that you miss the gnome-common package if you run under Linux and Gnome. If you run Ubuntu install via Synaptic the 'gnome-common' (version 2.20.0-0ubuntu1): common scripts and macros to develop with GNOME: gnome-common is an extension to autoconf, automake and libtool for the GNOME<br />
environment and GNOME using applications. Included are gnome-autogen.sh and several macros to help in both GNOME and GNOME 2.0 source trees. Install these and/or any other missing packages, read INSTALL and README file in the ''trunk'' dir for pointers. An important library is also libglib2.0-dev. Check whether your system has this package installed.<br />
This will execute the make command too. If not, type after the above<br />
make<br />
<br />
{{man warn|1=Warning|2=Do not install the development version. That is, do '''not''' type {{man label|sudo make install}}. }}<br />
<br />
==== Building with Fedora 8 - 10 ====<br />
<br />
These are the packages you need:<br />
<br />
<code><br />
yum install gnome-common intltool glib2-devel gnome-doc-utils gcc emacs gettext subversion make rcs<br />
</code><br />
<br />
Now you can run the '''./autogen.sh''' script and then '''make'''.<br />
<br />
==== Windows ====<br />
This step appears unnecessary on windows? See [[Installation#Installing_from_source_code_on_Windows]]<br />
<br />
=== Run the development version ===<br />
As you should not install the development version, how can you try it out? The current Python version required to run Gramps trunk is officially python2.6 as of July 2010. Easy, just type the following in the <code>trunk</code> directory<br />
python src/gramps.py<br />
or<br />
python2.6 src/gramps.py<br />
<br />
<br />
{{man warn|1=warning|2=Do not open your existing databases with trunk, it might destroy your data, and will make it impossible to use the data in the stable version 3.1.x. To try it out, export your database to a gramps xml file, eg <code>test_trunk.gramps</code>, create a new family tree in trunk, and import this xml file.}}<br />
<br />
=== Where for bugs? ===<br />
The [http://bugs.gramps-project.org bug tracker] has in the right top angle different projects. Choose project ''trunk'' and submit an issue.<br />
<br />
=== Making a patchfile ===<br />
If you do not have write access to the repository, you can make a patchfile with your changes. This is a text file which can then be sent by email to somebody, posted/uploaded to the bug tracker (against a bug you are fixing or a feature request which you are solving for instance), etc.<br />
<br />
These instructions assume SVN is installed on your system (Debian/Ubuntu: <code>apt-get install subversion</code>; Fedora: <code>yum install subversion</code>).<br />
<br />
These instructions tell how to make a patchfile against trunk, so that your changes are added to the next major release of Gramps. (To make a patchfile against a branch the process is similar, with some slight changes.)<br />
<br />
So first checkout a copy of the trunk to ./trunk:<br />
<br />
svn co https://gramps.svn.sourceforge.net/svnroot/gramps/trunk trunk<br />
<br />
Then use your favorite editor to change whatever file(s) you want.<br />
<br />
To then use SVN to make a patchfile, first go to the top of your changed tree<br />
<br />
cd /path-to-your-gramps/trunk<br />
<br />
and then tell SVN to record/document/itemize the changes to your edited file(s)<br />
<br />
svn diff > ~/some-descriptive-name.patch<br />
<br />
with the resulting file being the patchfile you just made.<br />
<br />
== Working with development branches ==<br />
<br />
<br />
If you are using a ''geps'' or ''sandbox'' branch you need to take care when merging changes from the ''trunk'' and back to the ''trunk''. Please take a few minutes to read the [http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html| Basic Merging] section of the Subversion book. <br />
<br />
'''IMPORTANT:''' please use an svn client that is version 1.5 or newer. The merge tracking functionality only became available in 1.5. If you use an earlier client you will have to deal with all the revision tracking of merges by hand - not fun.<br />
<br />
'''IMPORTANT:''' if you see a message that talks about ''from foreign repository'' it is probably because your working copy was checked out from an http:// url but you are merging from a https:// url or visa versa. Just be consistent about why you use. Don't merge ''from foreign repository'' because svn will not be able to manage the revisions correctly.<br />
<br />
Here is a quick crib sheet:<br />
<br />
=== Creating a branch ===<br />
<br />
To create a branch from the ''trunk'':<br />
<br />
svn copy https://gramps.svn.sourceforge.net/svnroot/gramps/trunk https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
=== Merging ''trunk'' changes into the branch ===<br />
<br />
You should do this regularly so that you don't have a nasty job of resolving loads of conflicts when you come to merge your changes back into the ''trunk'':<br />
<br />
cd gep-014-fab-feature<br />
svn merge https://gramps.svn.sourceforge.net/svnroot/gramps/trunk<br />
<br />
'''NOTE''' you will see some modification to files that you are not expecting. If you look at these you will find that they are modifications to svn properties. These are used by the merging tool to keep track of what changes have already been applied.<br />
<br />
=== Merging changes from the ''branch'' back into the ''trunk'' ===<br />
<br />
When you are ready to merge your changes back into the ''trunk'':<br />
<br />
First make sure you have all the ''trunk'' changes in your branch:<br />
<br />
cd gep-014-fab-feature<br />
svn merge https://gramps.svn.sourceforge.net/svnroot/gramps/trunk<br />
svn commit -m "meaningful message"<br />
<br />
Then move over to a working copy of the ''trunk'' and merge in your branch:<br />
<br />
cd trunk<br />
svn merge --reintegrate https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
Now build it, test it, convince yourself that it all works and then commit the changes:<br />
<br />
svn commit -m "All the changes for GEP-014"<br />
<br />
Now you '''must''' delete your branch. You can recreate it later if you need to but svn can not cope with doing another merge --reintegrate from the same branch:<br />
<br />
svn remove https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
=== Removing branches ===<br />
<br />
It is important that branches are removed once they have been merged<br />
into the trunk or have been abandoned. To remove a branch:<br />
<br />
svn remove https://gramps.svn.sourceforge.net/svnroot/gramps/branches/geps/gep-014-fab-feature<br />
<br />
The developers reserve the right to remove branches that have been<br />
dormant for more than 1 year.<br />
<br />
<br />
== Useful things to know ==<br />
=== Subversion commands ===<br />
svn help add<br />
<br />
svn help commit<br />
<br />
svn help log<br />
<br />
Adding files to repositories requires you to set some properties to the files and to have a [http://apps.sourceforge.net/trac/sitedocs/wiki/Subversion sourceforge account]. See <code>svn help propset</code>. You can use the <code>propget</code> on existing files to see how you should add it. A convenient way is to common files to your <code>~/.subversion/config</code> file, eg in my config I have:<br />
<br />
[miscellany]<br />
enable-auto-props = yes<br />
<br />
[auto-props]<br />
*.py = svn:eol-style=native;svn:mime-type=text/plain;svn:keywords=Author Date Id Revision<br />
*.po = svn:eol-style=native;svn:mime-type=text/plain;svn:keywords=Author Date Id Revision<br />
*.sh = svn:eol-style=native;svn:executable<br />
Makefile = svn:eol-style=native<br />
*.png = svn:mime-type=application/octet-stream<br />
*.svg = svn:eol-style=native;svn:mime-type=text/plain<br />
<br />
=== Ignore files ===<br />
You should on creation of new directories set the svn:ignore property:<br />
<br />
svn propedit svn:ignore src/new_dir/<br />
<br />
and there set at least:<br />
*.pyc<br />
*.pyo<br />
Makefile<br />
Makefile.in<br />
<br />
=== svn2cl ===<br />
The GRAMPS project does not keep a ChangeLog file under source control. All change history is captured by Subversion automatically when it is committed. A ChangeLog file is generated from the SVN commit logs before each release using [[How to use svn2cl|svn2cl]]. Developers should take care to make useful commit log messages when committing changes to Subversion. Here are some guidelines:<br />
<br />
*Try to make a descriptive message about the change.<br />
*Use complete sentences when possible.<br />
*When committing a change that fixes a bug on the tracker, use the bug's number and summary as the message.<br />
*When committing a patch from a contributor, put the contributor's name and e-mail address in the commit message.<br />
*It is not necessary to put the names of the files you have modified in the commit message because Subversion stores that automatically.<br />
<br />
=== Other usage tips ===<br />
<br />
* Additional tips and recommendations related to committing changes: [[SVN Commit Tips]]<br />
* GRAMPS [[Committing Policies]]<br />
<br />
=== Browse svn ===<br />
<br />
An alternative to the command line tools to view the svn repository is<br />
the [http://gramps.svn.sourceforge.net/viewvc/gramps/ online interface].<br />
<br />
[[Category:Developers/General|B]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Getting_started_with_Gramps_development&diff=27760Getting started with Gramps development2011-03-22T15:04:32Z<p>PaulFranklin: /* Run GRAMPS from the source */</p>
<hr />
<div>{{man warn|Warning:|This tutorial is work under progress. Feel free to help and modify it.}}<br />
<br />
This tutorial aims to help you in your first hacking of GRAMPS. It will help you setting up a development environment and explain where to find the files you need.<br />
<br />
This tutorial assumes that you are using GNU/Linux (but it might help under another OS) and that you know the basics of Python programming language.<br />
<br />
= Set up your environment =<br />
== Optional : set up a development environment ==<br />
<br />
{{man warn|Warning:|I highly recommend that you do not use your usual environment for developing GRAMPS. Definitely do '''not''' work on your main GRAMPS family tree. Doing so may result in data loss in your GRAMPS Family Tree !}}<br />
<br />
If you run your development version of GRAMPS as the usual user, it will show all your usual GRAMPS family trees, so loading one by mistake is possible and a bug may result in losing productive data. To prevent this, you could use a GRAMPSHOME environment variable to create a separate folder for productive data, see [[Run GRAMPS from a portable drive]] for more information.<br />
<br />
Here are some options you may choose to prevent this. If you have enough resources, I recommend using VirtualBox. <br />
<br />
=== VirtualBox ===<br />
[http://www.virtualbox.org/ VirtualBox] is an open source virtualisation solution. Install it, run it and you have a virtual PC in your PC. Network connection works out of the box without extra configuration needed. Install your favorite Linux distribution and start hacking GRAMPS in a full separated environment.<br />
<br />
=== Chroot ===<br />
You may also use a chroot to result in a similar separation as virtualbox. <br />
<br />
If you use Ubuntu, you can set up the chroot environment following these instructions:<br />
[https://help.ubuntu.com/community/BasicChroot Creating a basic Ubuntu chroot]<br />
If you use GRAMPS in a chroot jail with another Linux distribution, please add information here.<br />
<br />
You should then have a working chroot environment in /var/chroot (or whichever location you chose).<br />
Enter it with <br />
sudo chroot /var/chroot <br />
This means that within this directory, applications cannot access files without the chroot jail, <br />
i.e. your GRAMPS install within the directory cannot destroy another install of GRAMPS in your usual home directory.<br />
<br />
From a shell within your chroot directory, just svn-checkout the GRAMPS trunk into the chroot folder as usual.<br />
Please note that before running the autogen-Script for generating makefiles, you may need to get some packages: <br />
apt-get python intltools libglib2.0-dev gedit<br />
<br />
=== Another user ===<br />
You may also simply do your development as another user, so you won't access your usual ~/.gramps database when testing.<br />
<br />
You can also create an alias account with the same user and group IDs, but with a different login name and different home directory, typically, a subdir of the real user's home directory. <br />
This gives the benefit of less disk usage, and no permission boundary between the two account aliases. On the other hand, if you are afraid of malicious code within gramps purposefully breaking out and wreaking havoc on your real home account's .gramps, this method is too weak for you. For regular development scenario, though, this setup certainly does suffice.<br />
<br />
This is what the cloning looks like in my /etc/passwd:<br />
vassilii:x:1000:1000:Vassilii Khachaturov,,,:/home/vassilii:/bin/bash<br />
v:x:1000:1000:Vassilii Khachaturov,,,:/home/vassilii/pub:/bin/bash<br />
<br />
Create symlink to the dotfiles you want to reuse. Obviously, don't do this for ''.gramps''! Something like (inside ~vassilii/pub):<br />
ln -s ../.bashrc ../.mozilla ../.ratpoisonrc .<br />
<br />
You can use the alias account in a standalone matter (X session under it), or just inside a terminal window (su - <name of the alias account>). All the build, install, and test run of gramps should be done under this account. This will preserve your normal account's .gramps. <br />
<br />
Having obtained the gramps source tree, as the first build step, do<br />
./autogen.sh -- --prefix=/home/vassilii/pub/local<br />
('''replace /home/vassilii/pub/ with the actual aliased home directory!!!''')<br />
<br />
After you build and install (no root needed! you install under the local prefix), check that the right (locally built) gramps is on your PATH. Tweak your shell profiles as needed.<br />
<br />
=== None of above ===<br />
You have been warned! At a minimum name your test family trees 'a_test_name'. By starting with 'a_test' they show at the top of the family tree manager, and the test makes it clear what they are for.<br />
<br />
[[Category:Developers/General|G]]<br />
<br />
== Get the source tree ==<br />
To get the source tree, you will need SVN. Please have a look at the dedicated tutorial [[Brief introduction to SVN]] for details on getting the source trees for the latest current stable branch and the development trunk.<br />
<br />
You can also use a graphical SVN manager like "kdesvn" or "SVN Workbench".<br />
<br />
'''This tutorial now assumes you have downloaded GRAMPS' trunk into "~/gramps-trunk". If not, you have to change this path when it is used below.'''<br />
<br />
<br />
{{man warn|Warning:|Let it be clear that the settings directory "~/.gramps/" is a '''different''' hidden directory in your home-dir. Do not store anything there.''}}<br />
<br />
== Install a text editor ==<br />
The following is in alphabetic order. Choose the one you like. Whichever editor you use, make sure that it is set up so that the indent level is 4 spaces. Do not use the Tab character to indent.<br />
<br />
=== Eclipse + pydev ===<br />
Eclipse with pydev brings an integrated IDE for Python. To run it, you have to do a few steps configuration.<br />
<br />
First, you have to set the path to your python interpreter. Go in the menu "Window"->"Preferences...", then choose "Pydev"->"Interpreter - Python". With "new", you can create a link to "/usr/bin/python2.5". there you are.<br />
<br />
Next, you have to set up a pydev project. Go in the menu "File" -> "New" -> "Project", and choose a Pydev projet. Project name could be "GRAMPS trunk", uncheck "Use defaults" and choose "~/gramps-trunk" as the project directory. Project type is "Python 2.5", and then you can press "Finish". You are now ready to start coding !<br />
<br />
=== Emacs or Vim ===<br />
Experienced Unix-like users and developers will often use one of these editors. They're available with virtually all distributions of modern Unix-like systems.<br />
<br />
=== Eric4 ===<br />
[http://www.die-offenbachs.de/eric/index.html Eric4] is a python editor. It has everything you need (code completion, python shell, ...)<br />
<br />
=== Geany ===<br />
[http://geany.uvena.de/ Geany] is a nice development Editor. One feature I like is that it will automaticly recognise python code and list Symbols in a side bar, allowing to jump quickly in your code.<br />
<br />
Install it and you can start coding !<br />
<br />
=== SPE ===<br />
SPE or Stani's python editor, is a python editor. It is somewhat more powerfull than Erik4 (quick access to code fragments, extensive search, ...) but can be unstable on some setups. Try it to know.<br />
<br />
<br />
=== Other ===<br />
<br />
"Kate" works well as a general editor for Python. It also recognises key words of Python and marks them in colours. Kate is a Linux KDE desktop program. Of course, it also works on gnome installations.<br />
<br />
"Idle" is a handy simple editor that takes advantage of the interpreter features of Python. Often Idle comes with Python packages. Idle works well in Linux and other OS's, including the "dominant OS". If you install Windows version of Python, you will probably install from the same package Idle. One feature of Idle tends to confuse newcomers: Idle main window is NOT used for program writing, but for displaying the results. Notice that there is a Python tutorial, automagically installed with Idle on a Windows box. It is worth noting that the Tutorial gives quite extensive introduction into Python and is authored by the originator of Python Guido van Rossum.<br />
<br />
(If you have a favourite Editor and want to share it : describe how to set it up here.)<br />
<br />
== Run GRAMPS from the source ==<br />
To test that you did all well, you may want to run GRAMPS from your downloaded svn tree. This is explained in the [[Brief introduction to SVN]] but here are the quick steps :<br />
cd ~/gramps-trunk<br />
./autogen.sh<br />
make<br />
python src/gramps.py<br />
<br />
These lines will not work before you have installed some build-dependencies. On Debian, just run (as root):<br />
apt-get build-dep gramps<br />
On Fedora 8 - 10, you will need:<br />
yum install gnome-common intltool glib2-devel gnome-doc-utils gcc emacs gettext subversion make rcs<br />
<br />
= Browse the source code =<br />
== data ==<br />
You will find here various data files used by gramps : manpages, icons...<br />
<br />
== src ==<br />
In this folder, you will find GRAMPS' source code. There are a lot of subfolders, which are explained in the folowing sections.<br />
<br />
In most folders, there is an __init.py__ file. You may find some explanations there about the package.<br />
<br />
=== src/gen ===<br />
This is GRAMPS' core. It defines database classes (Person, Place, Note...), database access :<br />
* '''src/gen/db''' : GRAMPS Database Handling<br />
* '''src/gen/lib''' : The core library of GRAMPS objects<br />
* '''src/gen/proxy''' : Proxy class for the GRAMPS databases. This is a very powerful tool used to propose a filtered view of the database : Objects which are not marked private, (not) living persons...<br />
* '''src/gen/utils''' : Common utilities for GRAMPS code (progess monitor dialog, database utilities, callbacks between UI and database code)<br />
<br />
=== other ===<br />
* src/BasicUtils : Basic functions to be called from other Gramps code<br />
* src/Config : This package implements access to GRAMPS configuration. It provides the choice between different storage backends.<br />
* src/data : Data for Gramps ('''What is the difference with the root data folder ?''')<br />
* src/DataViews : Gramps Main Views (PersonView, FamilyList...)<br />
* src/DateHandler : Class handling language-specific selection for date parser and displayer.<br />
* src/DisplayModels : ??<br />
* src/DisplayTabs : ??<br />
* src/docgen: Gramps Document Generator (for reports)<br />
* src/Editors: Editors for the different Gramps Objects (Person, Place...)<br />
* src/FilterEditor: Filter Editor<br />
* src/Filters: Package providing filtering framework for GRAMPS<br />
* src/glade: UI designed with glade. There are few UIs designed with glades. I suppose the other are hard-coded.<br />
: src/glade/catalog/README will give you tips on how to run glade tuned to Gramps source locations and using the proper preferences compatible with Gramps code base.<br />
* src/GrampsDbUtils: This package implements additions to the the GrampsDb database.<br />
* src/GrampsLocale: locale workaround for some OSes<br />
* src/GrampsLogger: This package implements some extensions to the standard Python logging module that support a consistent logging and bug reporting framework for Gramps.<br />
* src/images: images for Gramps.<br />
* src/Merge: Merge functions<br />
* src/Mime: Mime types handling<br />
* src/Models<br />
* src/plugins<br />
** src/plugins/docgen<br />
** src/plugins/drawreport<br />
** src/plugins/export<br />
** src/plugins/gramplet<br />
** src/plugins/graph<br />
** src/plugins/lib<br />
** src/plugins/mapservices<br />
** src/plugins/quickview<br />
** src/plugins/rel<br />
** src/plugins/textreport<br />
** src/plugins/tool<br />
** src/plugins/webreport<br />
* src/PluginUtils<br />
* src/ReportBase<br />
* src/Selectors<br />
* src/Simple: Provides a simplified database access interface to the Gramps database.<br />
* src/test<br />
* src/widgets<br />
<br />
Further information about files can be found in [[GEPS 008: File Organization]]. Please note that GEPS 008 is a change proposal and does not reflect the actual source tree.<br />
<br />
[[Category:Developers/Tutorials]]<br />
[[Category:Developers/General]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Getting_started_with_Gramps_development&diff=27759Getting started with Gramps development2011-03-22T15:01:18Z<p>PaulFranklin: /* Another user */</p>
<hr />
<div>{{man warn|Warning:|This tutorial is work under progress. Feel free to help and modify it.}}<br />
<br />
This tutorial aims to help you in your first hacking of GRAMPS. It will help you setting up a development environment and explain where to find the files you need.<br />
<br />
This tutorial assumes that you are using GNU/Linux (but it might help under another OS) and that you know the basics of Python programming language.<br />
<br />
= Set up your environment =<br />
== Optional : set up a development environment ==<br />
<br />
{{man warn|Warning:|I highly recommend that you do not use your usual environment for developing GRAMPS. Definitely do '''not''' work on your main GRAMPS family tree. Doing so may result in data loss in your GRAMPS Family Tree !}}<br />
<br />
If you run your development version of GRAMPS as the usual user, it will show all your usual GRAMPS family trees, so loading one by mistake is possible and a bug may result in losing productive data. To prevent this, you could use a GRAMPSHOME environment variable to create a separate folder for productive data, see [[Run GRAMPS from a portable drive]] for more information.<br />
<br />
Here are some options you may choose to prevent this. If you have enough resources, I recommend using VirtualBox. <br />
<br />
=== VirtualBox ===<br />
[http://www.virtualbox.org/ VirtualBox] is an open source virtualisation solution. Install it, run it and you have a virtual PC in your PC. Network connection works out of the box without extra configuration needed. Install your favorite Linux distribution and start hacking GRAMPS in a full separated environment.<br />
<br />
=== Chroot ===<br />
You may also use a chroot to result in a similar separation as virtualbox. <br />
<br />
If you use Ubuntu, you can set up the chroot environment following these instructions:<br />
[https://help.ubuntu.com/community/BasicChroot Creating a basic Ubuntu chroot]<br />
If you use GRAMPS in a chroot jail with another Linux distribution, please add information here.<br />
<br />
You should then have a working chroot environment in /var/chroot (or whichever location you chose).<br />
Enter it with <br />
sudo chroot /var/chroot <br />
This means that within this directory, applications cannot access files without the chroot jail, <br />
i.e. your GRAMPS install within the directory cannot destroy another install of GRAMPS in your usual home directory.<br />
<br />
From a shell within your chroot directory, just svn-checkout the GRAMPS trunk into the chroot folder as usual.<br />
Please note that before running the autogen-Script for generating makefiles, you may need to get some packages: <br />
apt-get python intltools libglib2.0-dev gedit<br />
<br />
=== Another user ===<br />
You may also simply do your development as another user, so you won't access your usual ~/.gramps database when testing.<br />
<br />
You can also create an alias account with the same user and group IDs, but with a different login name and different home directory, typically, a subdir of the real user's home directory. <br />
This gives the benefit of less disk usage, and no permission boundary between the two account aliases. On the other hand, if you are afraid of malicious code within gramps purposefully breaking out and wreaking havoc on your real home account's .gramps, this method is too weak for you. For regular development scenario, though, this setup certainly does suffice.<br />
<br />
This is what the cloning looks like in my /etc/passwd:<br />
vassilii:x:1000:1000:Vassilii Khachaturov,,,:/home/vassilii:/bin/bash<br />
v:x:1000:1000:Vassilii Khachaturov,,,:/home/vassilii/pub:/bin/bash<br />
<br />
Create symlink to the dotfiles you want to reuse. Obviously, don't do this for ''.gramps''! Something like (inside ~vassilii/pub):<br />
ln -s ../.bashrc ../.mozilla ../.ratpoisonrc .<br />
<br />
You can use the alias account in a standalone matter (X session under it), or just inside a terminal window (su - <name of the alias account>). All the build, install, and test run of gramps should be done under this account. This will preserve your normal account's .gramps. <br />
<br />
Having obtained the gramps source tree, as the first build step, do<br />
./autogen.sh -- --prefix=/home/vassilii/pub/local<br />
('''replace /home/vassilii/pub/ with the actual aliased home directory!!!''')<br />
<br />
After you build and install (no root needed! you install under the local prefix), check that the right (locally built) gramps is on your PATH. Tweak your shell profiles as needed.<br />
<br />
=== None of above ===<br />
You have been warned! At a minimum name your test family trees 'a_test_name'. By starting with 'a_test' they show at the top of the family tree manager, and the test makes it clear what they are for.<br />
<br />
[[Category:Developers/General|G]]<br />
<br />
== Get the source tree ==<br />
To get the source tree, you will need SVN. Please have a look at the dedicated tutorial [[Brief introduction to SVN]] for details on getting the source trees for the latest current stable branch and the development trunk.<br />
<br />
You can also use a graphical SVN manager like "kdesvn" or "SVN Workbench".<br />
<br />
'''This tutorial now assumes you have downloaded GRAMPS' trunk into "~/gramps-trunk". If not, you have to change this path when it is used below.'''<br />
<br />
<br />
{{man warn|Warning:|Let it be clear that the settings directory "~/.gramps/" is a '''different''' hidden directory in your home-dir. Do not store anything there.''}}<br />
<br />
== Install a text editor ==<br />
The following is in alphabetic order. Choose the one you like. Whichever editor you use, make sure that it is set up so that the indent level is 4 spaces. Do not use the Tab character to indent.<br />
<br />
=== Eclipse + pydev ===<br />
Eclipse with pydev brings an integrated IDE for Python. To run it, you have to do a few steps configuration.<br />
<br />
First, you have to set the path to your python interpreter. Go in the menu "Window"->"Preferences...", then choose "Pydev"->"Interpreter - Python". With "new", you can create a link to "/usr/bin/python2.5". there you are.<br />
<br />
Next, you have to set up a pydev project. Go in the menu "File" -> "New" -> "Project", and choose a Pydev projet. Project name could be "GRAMPS trunk", uncheck "Use defaults" and choose "~/gramps-trunk" as the project directory. Project type is "Python 2.5", and then you can press "Finish". You are now ready to start coding !<br />
<br />
=== Emacs or Vim ===<br />
Experienced Unix-like users and developers will often use one of these editors. They're available with virtually all distributions of modern Unix-like systems.<br />
<br />
=== Eric4 ===<br />
[http://www.die-offenbachs.de/eric/index.html Eric4] is a python editor. It has everything you need (code completion, python shell, ...)<br />
<br />
=== Geany ===<br />
[http://geany.uvena.de/ Geany] is a nice development Editor. One feature I like is that it will automaticly recognise python code and list Symbols in a side bar, allowing to jump quickly in your code.<br />
<br />
Install it and you can start coding !<br />
<br />
=== SPE ===<br />
SPE or Stani's python editor, is a python editor. It is somewhat more powerfull than Erik4 (quick access to code fragments, extensive search, ...) but can be unstable on some setups. Try it to know.<br />
<br />
<br />
=== Other ===<br />
<br />
"Kate" works well as a general editor for Python. It also recognises key words of Python and marks them in colours. Kate is a Linux KDE desktop program. Of course, it also works on gnome installations.<br />
<br />
"Idle" is a handy simple editor that takes advantage of the interpreter features of Python. Often Idle comes with Python packages. Idle works well in Linux and other OS's, including the "dominant OS". If you install Windows version of Python, you will probably install from the same package Idle. One feature of Idle tends to confuse newcomers: Idle main window is NOT used for program writing, but for displaying the results. Notice that there is a Python tutorial, automagically installed with Idle on a Windows box. It is worth noting that the Tutorial gives quite extensive introduction into Python and is authored by the originator of Python Guido van Rossum.<br />
<br />
(If you have a favourite Editor and want to share it : describe how to set it up here.)<br />
<br />
== Run GRAMPS from the source ==<br />
To test that you did all well, you may want to run GRAMPS from your downloaded svn tree. This is explained in the [[Brief introduction to SVN]] but here are the quick steps :<br />
cd ~/gramps-trunk<br />
./autogen.sh<br />
make<br />
python src/gramps.py<br />
<br />
These lines will not work before you have not installed some build-dependencies. On Debian, just run (as root):<br />
apt-get build-dep gramps<br />
On Fedora 8 - 10, you will need:<br />
yum install gnome-common intltool glib2-devel gnome-doc-utils gcc emacs gettext subversion make rcs<br />
<br />
= Browse the source code =<br />
== data ==<br />
You will find here various data files used by gramps : manpages, icons...<br />
<br />
== src ==<br />
In this folder, you will find GRAMPS' source code. There are a lot of subfolders, which are explained in the folowing sections.<br />
<br />
In most folders, there is an __init.py__ file. You may find some explanations there about the package.<br />
<br />
=== src/gen ===<br />
This is GRAMPS' core. It defines database classes (Person, Place, Note...), database access :<br />
* '''src/gen/db''' : GRAMPS Database Handling<br />
* '''src/gen/lib''' : The core library of GRAMPS objects<br />
* '''src/gen/proxy''' : Proxy class for the GRAMPS databases. This is a very powerful tool used to propose a filtered view of the database : Objects which are not marked private, (not) living persons...<br />
* '''src/gen/utils''' : Common utilities for GRAMPS code (progess monitor dialog, database utilities, callbacks between UI and database code)<br />
<br />
=== other ===<br />
* src/BasicUtils : Basic functions to be called from other Gramps code<br />
* src/Config : This package implements access to GRAMPS configuration. It provides the choice between different storage backends.<br />
* src/data : Data for Gramps ('''What is the difference with the root data folder ?''')<br />
* src/DataViews : Gramps Main Views (PersonView, FamilyList...)<br />
* src/DateHandler : Class handling language-specific selection for date parser and displayer.<br />
* src/DisplayModels : ??<br />
* src/DisplayTabs : ??<br />
* src/docgen: Gramps Document Generator (for reports)<br />
* src/Editors: Editors for the different Gramps Objects (Person, Place...)<br />
* src/FilterEditor: Filter Editor<br />
* src/Filters: Package providing filtering framework for GRAMPS<br />
* src/glade: UI designed with glade. There are few UIs designed with glades. I suppose the other are hard-coded.<br />
: src/glade/catalog/README will give you tips on how to run glade tuned to Gramps source locations and using the proper preferences compatible with Gramps code base.<br />
* src/GrampsDbUtils: This package implements additions to the the GrampsDb database.<br />
* src/GrampsLocale: locale workaround for some OSes<br />
* src/GrampsLogger: This package implements some extensions to the standard Python logging module that support a consistent logging and bug reporting framework for Gramps.<br />
* src/images: images for Gramps.<br />
* src/Merge: Merge functions<br />
* src/Mime: Mime types handling<br />
* src/Models<br />
* src/plugins<br />
** src/plugins/docgen<br />
** src/plugins/drawreport<br />
** src/plugins/export<br />
** src/plugins/gramplet<br />
** src/plugins/graph<br />
** src/plugins/lib<br />
** src/plugins/mapservices<br />
** src/plugins/quickview<br />
** src/plugins/rel<br />
** src/plugins/textreport<br />
** src/plugins/tool<br />
** src/plugins/webreport<br />
* src/PluginUtils<br />
* src/ReportBase<br />
* src/Selectors<br />
* src/Simple: Provides a simplified database access interface to the Gramps database.<br />
* src/test<br />
* src/widgets<br />
<br />
Further information about files can be found in [[GEPS 008: File Organization]]. Please note that GEPS 008 is a change proposal and does not reflect the actual source tree.<br />
<br />
[[Category:Developers/Tutorials]]<br />
[[Category:Developers/General]]</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Coding_for_translation&diff=27638Coding for translation2011-03-14T18:53:02Z<p>PaulFranklin: </p>
<hr />
<div>Coding guidelines to enable easy and correct translation of strings on the User Interface. <br />
[[Category:Translators/Categories]][[Category:Developers/Tutorials]]<br />
[[Category:Developers/General]]<br />
==Introduction==<br />
GRAMPS has always been internationalized (see<br />
http://gramps-project.org/2006/04/looking-back-over-5-years).<br />
Therefore, all strings meant<br />
for the user should always be flagged for translation.<br />
<br />
In order to be considered for inclusion in the offical GRAMPS release, any piece of code must support internationalization. What this means is that the Python module must support [[Translating GRAMPS|translations]] into different languages. GRAMPS provides support to make this as easy as possible for the developer. For enabling, a language code must be set on ''configure.in'' file into ''ALL_LINGUAS'' section.<br />
<br />
==How to allow translations==<br />
GRAMPS provides a simple interface (based on the gettext interface) to mark strings as being translatable. First, import the gettext function from the intl library.<br />
from gen.ggettext import gettext as _<br />
<br />
This statement imports the <code>sgettext</code> function under the name of <code>_</code>. This is the function that both marks the strings for translation and performs the actual translation at runtime. Strings that should be translated should be enclosed as an argument to the function.<br />
<br />
Example 1:<br />
print "Hello world!"<br />
<br />
In this example, the string will always be printed as specified.<br />
<br />
Example 1 internationalized:<br />
print _("Hello world!")<br />
<br />
In this example, GRAMPS will attempt to translate the string. If a translation exists, the call to the function will return the translation. If a translation does not exist, the original string is returned.<br />
<br />
All strings meant<br />
for the user should be always be preceeded with the _ function.<br />
<br />
===Into glade file===<br />
<br />
Just enable the translatable attribute on an XML element.<br />
<br />
<property name="label" translatable="yes">_Family:</property><br />
<property name="tooltip" translatable="yes">Abandon changes and close window</property><br />
<property name="label" translatable="no">&lt;b&gt; - &lt;/b&gt; </property><br />
<br />
===Into addons plugins===<br />
<br />
from TransUtils import get_addon_translator<br />
_ = get_addon_translator().gettext<br />
<br />
See [[Addons_Development#Localization|Addon developpement]].<br />
<br />
==How it works==<br />
<br />
[http://www.gnu.org/software/gettext/manual/gettext.html GNU gettext] and [http://live.gnome.org/TranslationProject/DevGuidelines/Localize%20using%20gettext%20and%20intltool Gnome] provide utilities and a [http://www.gnome.org/~malcolm/i18n/build-changes.html translation framework] (''previously [http://gramps.svn.sourceforge.net/viewvc/gramps/branches/maintenance/gramps20/gramps2/src/build_po build_po] and [http://gramps.svn.sourceforge.net/viewvc/gramps/branches/maintenance/gramps20/gramps2/src/get_strings get_strings]''):<br />
* [http://www.gnu.org/software/autoconf/manual/gettext/msginit-Invocation.html msginit] will generate a standard gettext header.<br />
* intltool-update will manage template and translations.<br />
* intltool-extract will extract translation strings on ''.glade'' and ''.xml'' files, by generating files with ''.h'' extension.<br />
<br />
# Generates a new template (gramps.pot), into ''/po'' directory :<br />
intltool-update -p<br />
<br />
* intltool-merge will merge cached translations into .in files<br />
<br />
# Merges translated strings into desktop file, ''root'' directory :<br />
intltool-merge -d po/ data/gramps.desktop.in data/gramps.desktop<br />
<br />
# Merges translated strings into xml file, ''root'' directory :<br />
intltool-merge -x po/ data/gramps.xml.in data/gramps.xml<br />
<br />
# Merges translated strings into key file, ''root'' directory :<br />
intltool-merge -k po/ data/gramps.keys.in data/gramps.keys <br />
<br />
===Files and directory===<br />
<br />
There are two stages to getting a translation to work. Translations are stored in a <code>.po</code> file that contains the mappings between the original strings and the translated strings, see [[Translating GRAMPS]]. <br />
<br />
Translators use a generic file <code>gramps.pot</code> to generate their <code>.po</code> file.<br />
GRAMPS uses a utility that extracts the strings from the source code to build the <code>.po</code> file. This utility (a perl script called by the command <code>make</code>) examines the source files for strings that have been marked as translatable. In the python source, these are the strings enclosed in the <code>_()</code> function calls.<br />
<br />
If you want this script to take your translatable strings into account, you must add your source file path in the file : <code>po/POTFILES.in</code>. For this report example, you should add:<br />
<br />
...<br />
# plugins directory<br />
src/plugins/AncestorChart2.py<br />
src/plugins/AncestorReport.py<br />
...<br />
src/plugins/FindDupes.py<br />
src/plugins/Leak.py<br />
src/plugins/MediaManager.py<br />
src/plugins/Myreport.py # <------<br />
src/plugins/NarrativeWeb.py<br />
src/plugins/PatchNames.py<br />
...<br />
<br />
In this file, the sources are sorted within each directory or category.<br />
<br />
Note that because strings are extracted by a script from the source file, string constants and not variables must be enclosed in the <code>_()</code> call. In the following example, the extraction script will not extract the string.<br />
mystring = "Hello World!"<br />
print _(mystring)<br />
<br />
The correct method would be to use one of the following:<br />
mystring = _("Hello World!")<br />
print mystring<br />
<br />
At run time, the <code>_()</code> calls will translate the string by looking it up in the translation database (created from the <code>.po</code> files) and returning the translated string.<br />
<br />
You can check missing references (not on <code>POTFILES.in</code> and <code>POTFILES.skip</code>) with the command<br />
/intltool-update -m <br />
into <code>/po</code> directory.<br />
<br />
==Tips for writing a translatable Python module==<br />
===Use complete sentences===<br />
Don't build up a sentence from phrases. Because a sentence is ordered in a particular way in your language does not mean that it is ordered the same way in another. Providing the entire sentence as a single unit allows the translator to make a meaningful translation. Do not concatenate phrases or terms as they will then show up as separate phrases or terms to be translated and the complete sentence may then show up incorrectly, especially in right-to-left languages (Arabic, Hebrew, etc.).<br />
===Use named %s values===<br />
Python provides a powerful mechanism that allows the reordering of %s values in a string. A translator may need to rearrange the structure of a sentence, and it may not match the order you chose. For example:<br />
print "%s was born in %s" % ('Joe','Toronto')<br />
<br />
In some languages it may make more sense to say:<br />
print "%s is the city in which %s was born" % ('Toronto', 'Joe')<br />
<br />
The problem is that this requires a change to the order of the arguments. Python provides a solution for this. By using named operators and dictionaries, we can say:<br />
print "%(male_name)s was born in %(city)s" % {<br />
'city' : 'Toronto', 'male_name' : 'Joe'}<br />
<br />
In this case, the order of the %s formatters is not important, since the values will be looked up in the dictionary at run time to resolve the value. The translator can reorder the %s formatters, or even remove them without causing any problems.<br />
<br />
Note that Python also allows a variation which some people find easier to read:<br />
print "%(male_name)s was born in %(city)s" % dict(<br />
city = 'Toronto', male_name = 'Joe')<br />
<br />
===Provide separate strings for masculine and feminine.===<br />
Many languages have the concept of gender, while others don't. A sentence may need to be phrased differently depending on whether the subject is male or female. By using the named %s values along with a bit of code, this problem can be solved.<br />
<br />
if person.getGender() == Person.male:<br />
print _("%(male_name)s was born in %(city)s\n") % {<br />
'male_name' : name, 'city' : city }<br />
else:<br />
print _("%(female_name)s was born in %(city)s\n") % {<br />
'female_name' : name, 'city' : city }<br />
<br />
This allows languages with gender differences to map nicely into your sentence.<br />
<br />
===Provide support for plural forms.===<br />
<br />
Plurals are handled differently in various languages. Whilst English or German have a singular and a plural form, other languages like Turkish don't distinguish between plural or singular and there are languages which use different plurals for different numbers, e.g. Polish.<br />
<br />
Gramps provides a [[Translating_GRAMPS#Plural_forms|plural forms]] support, useful for locales with multiples plurals according to a number (''often slavic based languages'') or for Asian family languages (''singular = plural'').<br />
<br />
We need to call module :<br />
from gen.ggettext import ngettext<br />
<br />
and code like this :<br />
<br />
ngettext("singular %d", "plural %d", n) %n<br />
<br />
Sample:<br />
<br />
msg = ngettext('Import Complete: %d second',<br />
'Import Complete: %d seconds', t ) % t<br />
<br />
===Provide a context support.===<br />
<br />
A translator needs context for a good translation. Keep in mind you can help him/her, by using context on translation string.<br />
<br />
We need to call module :<br />
from TransUtils import sgettext as _<br />
or<br />
from TransUtils import sngettext as _<br />
(if you use ngettext)<br />
<br />
Translation string will use context, but this will be hidden on user interface.<br />
_("context|string")<br />
Translator will see the translation string and a help string without loading program.<br />
Program will only display the string in English or with another locale.<br />
<br />
==Textual reports==<br />
Since Gramps-3.2 we are able to select the language for textual reports, see [http://www.gramps-project.org/bugs/view.php?id=2371 this feature]. <br />
<br />
Currently only available on Ancestor report.<br />
<br />
For providing this option:<br />
# import EnumeratedListOption<br />
# import libtranslate<br />
from gen.plug.menu import EnumeratedListOption <br />
import TransUtils<br />
from libtranslate import Translator, get_language_string<br />
<br />
Sample of code:<br />
<br />
language = menu.get_option_by_name('trans').get_value()<br />
translator = Translator(language)<br />
self._ = translator.gettext<br />
self.__narrator = Narrator(self.database, self.verbose, use_call, <br />
empty_date, empty_place, <br />
translator=translator,<br />
get_endnote_numbers=self.endnotes)<br />
self.__get_date = translator.get_date<br />
<br />
self._("")<br />
self.__get_date(event.get_date_object())</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Coding_for_translation&diff=27637Coding for translation2011-03-14T18:24:08Z<p>PaulFranklin: /* Tips for writing a translatable Python module */</p>
<hr />
<div>Coding guidelines to enable easy and correct translation of strings on the User Interface. <br />
[[Category:Translators/Categories]][[Category:Developers/Tutorials]]<br />
[[Category:Developers/General]]<br />
==Introduction==<br />
In order to be considered for inclusion in the offical GRAMPS release, any piece of code must support internationalization. What this means is that the Python module must support [[Translating GRAMPS|translations]] into different languages. GRAMPS provides support to make this as easy as possible for the developer. For enabling, a language code must be set on ''configure.in'' file into ''ALL_LINGUAS'' section.<br />
<br />
==How to allow translations==<br />
GRAMPS provides a simple interface (based on the gettext interface) to mark strings as being translatable. First, import the gettext function from the intl library.<br />
from gen.ggettext import gettext as _<br />
<br />
This statement imports the <code>sgettext</code> function under the name of <code>_</code>. This is the function that both marks the strings for translation and performs the actual translation at runtime. Strings that should be translated should be enclosed as an argument to the function.<br />
<br />
Example 1:<br />
print "Hello world!"<br />
<br />
In this example, the string will always be printed as specified.<br />
<br />
Example 1 internationalized:<br />
print _("Hello world!")<br />
<br />
In this example, GRAMPS will attempt to translate the string. If a translation exists, the call to the function will return the translation. If a translation does not exist, the original string is returned.<br />
<br />
===Into glade file===<br />
<br />
Just enable the translatable attribute on an XML element.<br />
<br />
<property name="label" translatable="yes">_Family:</property><br />
<property name="tooltip" translatable="yes">Abandon changes and close window</property><br />
<property name="label" translatable="no">&lt;b&gt; - &lt;/b&gt; </property><br />
<br />
===Into addons plugins===<br />
<br />
from TransUtils import get_addon_translator<br />
_ = get_addon_translator().gettext<br />
<br />
See [[Addons_Development#Localization|Addon developpement]].<br />
<br />
==How it works==<br />
<br />
[http://www.gnu.org/software/gettext/manual/gettext.html GNU gettext] and [http://live.gnome.org/TranslationProject/DevGuidelines/Localize%20using%20gettext%20and%20intltool Gnome] provide utilities and a [http://www.gnome.org/~malcolm/i18n/build-changes.html translation framework] (''previously [http://gramps.svn.sourceforge.net/viewvc/gramps/branches/maintenance/gramps20/gramps2/src/build_po build_po] and [http://gramps.svn.sourceforge.net/viewvc/gramps/branches/maintenance/gramps20/gramps2/src/get_strings get_strings]''):<br />
* [http://www.gnu.org/software/autoconf/manual/gettext/msginit-Invocation.html msginit] will generate a standard gettext header.<br />
* intltool-update will manage template and translations.<br />
* intltool-extract will extract translation strings on ''.glade'' and ''.xml'' files, by generating files with ''.h'' extension.<br />
<br />
# Generates a new template (gramps.pot), into ''/po'' directory :<br />
intltool-update -p<br />
<br />
* intltool-merge will merge cached translations into .in files<br />
<br />
# Merges translated strings into desktop file, ''root'' directory :<br />
intltool-merge -d po/ data/gramps.desktop.in data/gramps.desktop<br />
<br />
# Merges translated strings into xml file, ''root'' directory :<br />
intltool-merge -x po/ data/gramps.xml.in data/gramps.xml<br />
<br />
# Merges translated strings into key file, ''root'' directory :<br />
intltool-merge -k po/ data/gramps.keys.in data/gramps.keys <br />
<br />
===Files and directory===<br />
<br />
There are two stages to getting a translation to work. Translations are stored in a <code>.po</code> file that contains the mappings between the original strings and the translated strings, see [[Translating GRAMPS]]. <br />
<br />
Translators use a generic file <code>gramps.pot</code> to generate their <code>.po</code> file.<br />
GRAMPS uses a utility that extracts the strings from the source code to build the <code>.po</code> file. This utility (a perl script called by the command <code>make</code>) examines the source files for strings that have been marked as translatable. In the python source, these are the strings enclosed in the <code>_()</code> function calls.<br />
<br />
If you want this script to take your translatable strings into account, you must add your source file path in the file : <code>po/POTFILES.in</code>. For this report example, you should add:<br />
<br />
...<br />
# plugins directory<br />
src/plugins/AncestorChart2.py<br />
src/plugins/AncestorReport.py<br />
...<br />
src/plugins/FindDupes.py<br />
src/plugins/Leak.py<br />
src/plugins/MediaManager.py<br />
src/plugins/Myreport.py # <------<br />
src/plugins/NarrativeWeb.py<br />
src/plugins/PatchNames.py<br />
...<br />
<br />
In this file, the sources are sorted within each directory or category.<br />
<br />
Note that because strings are extracted by a script from the source file, string constants and not variables must be enclosed in the <code>_()</code> call. In the following example, the extraction script will not extract the string.<br />
mystring = "Hello World!"<br />
print _(mystring)<br />
<br />
The correct method would be to use one of the following:<br />
mystring = _("Hello World!")<br />
print mystring<br />
<br />
At run time, the <code>_()</code> calls will translate the string by looking it up in the translation database (created from the <code>.po</code> files) and returning the translated string.<br />
<br />
You can check missing references (not on <code>POTFILES.in</code> and <code>POTFILES.skip</code>) with the command<br />
/intltool-update -m <br />
into <code>/po</code> directory.<br />
<br />
==Tips for writing a translatable Python module==<br />
===Use complete sentences===<br />
Don't build up a sentence from phrases. Because a sentence is ordered in a particular way in your language does not mean that it is ordered the same way in another. Providing the entire sentence as a single unit allows the translator to make a meaningful translation. Do not concatenate phrases or terms as they will then show up as separate phrases or terms to be translated and the complete sentence may then show up incorrectly, especially in right-to-left languages (Arabic, Hebrew, etc.).<br />
===Use named %s values===<br />
Python provides a powerful mechanism that allows the reordering of %s values in a string. A translator may need to rearrange the structure of a sentence, and it may not match the order you chose. For example:<br />
print "%s was born in %s" % ('Joe','Toronto')<br />
<br />
In some languages it may make more sense to say:<br />
print "%s is the city in which %s was born" % ('Toronto', 'Joe')<br />
<br />
The problem is that this requires a change to the order of the arguments. Python provides a solution for this. By using named operators and dictionaries, we can say:<br />
print "%(male_name)s was born in %(city)s" % {<br />
'city' : 'Toronto', 'male_name' : 'Joe'}<br />
<br />
In this case, the order of the %s formatters is not important, since the values will be looked up in the dictionary at run time to resolve the value. The translator can reorder the %s formatters, or even remove them without causing any problems.<br />
<br />
===Provide separate strings for masculine and feminine.===<br />
Many languages have the concept of gender, while others don't. A sentence may need to be phrased differently depending on whether the subject is male or female. By using the named %s values along with a bit of code, this problem can be solved.<br />
<br />
if person.getGender() == Person.male:<br />
print _("%(male_name)s was born in %(city)s\n") % {<br />
'male_name' : name, 'city' : city }<br />
else:<br />
print _("%(female_name)s was born in %(city)s\n") % {<br />
'female_name' : name, 'city' : city }<br />
<br />
This allows languages with gender differences to map nicely into your sentence.<br />
<br />
===Provide support for plural forms.===<br />
<br />
Plurals are handled differently in various languages. Whilst English or German have a singular and a plural form, other languages like Turkish don't distinguish between plural or singular and there are languages which use different plurals for different numbers, e.g. Polish.<br />
<br />
Gramps provides a [[Translating_GRAMPS#Plural_forms|plural forms]] support, useful for locales with multiples plurals according to a number (''often slavic based languages'') or for Asian family languages (''singular = plural'').<br />
<br />
We need to call module :<br />
from gen.ggettext import ngettext<br />
<br />
and code like this :<br />
<br />
ngettext("singular %d", "plural %d", n) %n<br />
<br />
Sample:<br />
<br />
msg = ngettext('Import Complete: %d second',<br />
'Import Complete: %d seconds', t ) % t<br />
<br />
===Provide a context support.===<br />
<br />
A translator needs context for a good translation. Keep in mind you can help him/her, by using context on translation string.<br />
<br />
We need to call module :<br />
from TransUtils import sgettext as _<br />
or<br />
from TransUtils import sngettext as _<br />
(if you use ngettext)<br />
<br />
Translation string will use context, but this will be hidden on user interface.<br />
_("context|string")<br />
Translator will see the translation string and a help string without loading program.<br />
Program will only display the string in English or with another locale.<br />
<br />
==Textual reports==<br />
Since Gramps-3.2 we are able to select the language for textual reports, see [http://www.gramps-project.org/bugs/view.php?id=2371 this feature]. <br />
<br />
Currently only available on Ancestor report.<br />
<br />
For providing this option:<br />
# import EnumeratedListOption<br />
# import libtranslate<br />
from gen.plug.menu import EnumeratedListOption <br />
import TransUtils<br />
from libtranslate import Translator, get_language_string<br />
<br />
Sample of code:<br />
<br />
language = menu.get_option_by_name('trans').get_value()<br />
translator = Translator(language)<br />
self._ = translator.gettext<br />
self.__narrator = Narrator(self.database, self.verbose, use_call, <br />
empty_date, empty_place, <br />
translator=translator,<br />
get_endnote_numbers=self.endnotes)<br />
self.__get_date = translator.get_date<br />
<br />
self._("")<br />
self.__get_date(event.get_date_object())</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Coding_for_translation&diff=27635Coding for translation2011-03-14T16:01:01Z<p>PaulFranklin: </p>
<hr />
<div>Coding guidelines to enable easy and correct translation of strings on the User Interface. <br />
[[Category:Translators/Categories]][[Category:Developers/Tutorials]]<br />
[[Category:Developers/General]]<br />
==Introduction==<br />
In order to be considered for inclusion in the offical GRAMPS release, any piece of code must support internationalization. What this means is that the Python module must support [[Translating GRAMPS|translations]] into different languages. GRAMPS provides support to make this as easy as possible for the developer. For enabling, a language code must be set on ''configure.in'' file into ''ALL_LINGUAS'' section.<br />
<br />
==How to allow translations==<br />
GRAMPS provides a simple interface (based on the gettext interface) to mark strings as being translatable. First, import the gettext function from the intl library.<br />
from gen.ggettext import gettext as _<br />
<br />
This statement imports the <code>sgettext</code> function under the name of <code>_</code>. This is the function that both marks the strings for translation and performs the actual translation at runtime. Strings that should be translated should be enclosed as an argument to the function.<br />
<br />
Example 1:<br />
print "Hello world!"<br />
<br />
In this example, the string will always be printed as specified.<br />
<br />
Example 1 internationalized:<br />
print _("Hello world!")<br />
<br />
In this example, GRAMPS will attempt to translate the string. If a translation exists, the call to the function will return the translation. If a translation does not exist, the original string is returned.<br />
<br />
===Into glade file===<br />
<br />
Just enable the translatable attribute on an XML element.<br />
<br />
<property name="label" translatable="yes">_Family:</property><br />
<property name="tooltip" translatable="yes">Abandon changes and close window</property><br />
<property name="label" translatable="no">&lt;b&gt; - &lt;/b&gt; </property><br />
<br />
===Into addons plugins===<br />
<br />
from TransUtils import get_addon_translator<br />
_ = get_addon_translator().gettext<br />
<br />
See [[Addons_Development#Localization|Addon developpement]].<br />
<br />
==How it works==<br />
<br />
[http://www.gnu.org/software/gettext/manual/gettext.html GNU gettext] and [http://live.gnome.org/TranslationProject/DevGuidelines/Localize%20using%20gettext%20and%20intltool Gnome] provide utilities and a [http://www.gnome.org/~malcolm/i18n/build-changes.html translation framework] (''previously [http://gramps.svn.sourceforge.net/viewvc/gramps/branches/maintenance/gramps20/gramps2/src/build_po build_po] and [http://gramps.svn.sourceforge.net/viewvc/gramps/branches/maintenance/gramps20/gramps2/src/get_strings get_strings]''):<br />
* [http://www.gnu.org/software/autoconf/manual/gettext/msginit-Invocation.html msginit] will generate a standard gettext header.<br />
* intltool-update will manage template and translations.<br />
* intltool-extract will extract translation strings on ''.glade'' and ''.xml'' files, by generating files with ''.h'' extension.<br />
<br />
# Generates a new template (gramps.pot), into ''/po'' directory :<br />
intltool-update -p<br />
<br />
* intltool-merge will merge cached translations into .in files<br />
<br />
# Merges translated strings into desktop file, ''root'' directory :<br />
intltool-merge -d po/ data/gramps.desktop.in data/gramps.desktop<br />
<br />
# Merges translated strings into xml file, ''root'' directory :<br />
intltool-merge -x po/ data/gramps.xml.in data/gramps.xml<br />
<br />
# Merges translated strings into key file, ''root'' directory :<br />
intltool-merge -k po/ data/gramps.keys.in data/gramps.keys <br />
<br />
===Files and directory===<br />
<br />
There are two stages to getting a translation to work. Translations are stored in a <code>.po</code> file that contains the mappings between the original strings and the translated strings, see [[Translating GRAMPS]]. <br />
<br />
Translators use a generic file <code>gramps.pot</code> to generate their <code>.po</code> file.<br />
GRAMPS uses a utility that extracts the strings from the source code to build the <code>.po</code> file. This utility (a perl script called by the command <code>make</code>) examines the source files for strings that have been marked as translatable. In the python source, these are the strings enclosed in the <code>_()</code> function calls.<br />
<br />
If you want this script to take your translatable strings into account, you must add your source file path in the file : <code>po/POTFILES.in</code>. For this report example, you should add:<br />
<br />
...<br />
# plugins directory<br />
src/plugins/AncestorChart2.py<br />
src/plugins/AncestorReport.py<br />
...<br />
src/plugins/FindDupes.py<br />
src/plugins/Leak.py<br />
src/plugins/MediaManager.py<br />
src/plugins/Myreport.py # <------<br />
src/plugins/NarrativeWeb.py<br />
src/plugins/PatchNames.py<br />
...<br />
<br />
In this file, the sources are sorted within each directory or category.<br />
<br />
Note that because strings are extracted by a script from the source file, string constants and not variables must be enclosed in the <code>_()</code> call. In the following example, the extraction script will not extract the string.<br />
mystring = "Hello World!"<br />
print _(mystring)<br />
<br />
The correct method would be to use one of the following:<br />
mystring = _("Hello World!")<br />
print mystring<br />
<br />
At run time, the <code>_()</code> calls will translate the string by looking it up in the translation database (created from the <code>.po</code> files) and returning the translated string.<br />
<br />
You can check missing references (not on <code>POTFILES.in</code> and <code>POTFILES.skip</code>) with the command<br />
/intltool-update -m <br />
into <code>/po</code> directory.<br />
<br />
==Tips for writing a translatable Python module==<br />
===Use complete sentences===<br />
Don't build up a sentence from phrases. Because a sentence is ordered in a particular way in your language does not mean that it is ordered the same way in another. Providing the entire sentence as a single unit allows the translator to make a meaningful translation.<br />
===Use named %s values===<br />
Python provides a powerful mechanism that allows the reordering of %s values in a string. A translator may need to rearrange the structure of a sentence, and it may not match the order you chose. For example:<br />
print "%s was born in %s" % ('Joe','Toronto')<br />
<br />
In some languages it may make more sense to say:<br />
print "%s is the city in which %s was born" % ('Toronto', 'Joe')<br />
<br />
The problem is that this requires a change to the order of the arguments. Python provides a solution for this. By using named operators and dictionaries, we can say:<br />
print "%(male_name)s was born in %(city)s" % {<br />
'city' : 'Toronto', 'male_name' : 'Joe'}<br />
<br />
In this case, the order of the %s formatters is not important, since the values will be looked up in the dictionary at run time to resolve the value. The translator can reorder the %s formatters, or even remove them without causing any problems.<br />
<br />
===Provide separate strings for masculine and feminine.===<br />
Many languages have the concept of gender, while others don't. A sentence may need to be phrased differently depending on whether the subject is male or female. By using the named %s values along with a bit of code, this problem can be solved.<br />
<br />
if person.getGender() == Person.male:<br />
print _("%(male_name)s was born in %(city)s\n") % {<br />
'male_name' : name, 'city' : city }<br />
else:<br />
print _("%(female_name)s was born in %(city)s\n") % {<br />
'female_name' : name, 'city' : city }<br />
<br />
This allows languages with gender differences to map nicely into your sentence.<br />
<br />
===Provide support for plural forms.===<br />
<br />
Plurals are handled differently in various languages. Whilst English or German have a singular and a plural form, other languages like Turkish don't distinguish between plural or singular and there are languages which use different plurals for different numbers, e.g. Polish.<br />
<br />
Gramps provides a [[Translating_GRAMPS#Plural_forms|plural forms]] support, useful for locales with multiples plurals according to a number (''often slavic based languages'') or for Asian family languages (''singular = plural'').<br />
<br />
We need to call module :<br />
from gen.ggettext import ngettext<br />
<br />
and code like this :<br />
<br />
ngettext("singular %d", "plural %d", n) %n<br />
<br />
Sample:<br />
<br />
msg = ngettext('Import Complete: %d second',<br />
'Import Complete: %d seconds', t ) % t<br />
<br />
===Provide a context support.===<br />
<br />
A translator needs context for a good translation. Keep in mind you can help him/her, by using context on translation string.<br />
<br />
We need to call module :<br />
from TransUtils import sgettext as _<br />
or<br />
from TransUtils import sngettext as _<br />
(if you use ngettext)<br />
<br />
Translation string will use context, but this will be hidden on user interface.<br />
_("context|string")<br />
Translator will see the translation string and a help string without loading program.<br />
Program will only display the string in English or with another locale.<br />
<br />
==Textual reports==<br />
Since Gramps-3.2 we are able to select the language for textual reports, see [http://www.gramps-project.org/bugs/view.php?id=2371 this feature]. <br />
<br />
Currently only available on Ancestor report.<br />
<br />
For providing this option:<br />
# import EnumeratedListOption<br />
# import libtranslate<br />
from gen.plug.menu import EnumeratedListOption <br />
import TransUtils<br />
from libtranslate import Translator, get_language_string<br />
<br />
Sample of code:<br />
<br />
language = menu.get_option_by_name('trans').get_value()<br />
translator = Translator(language)<br />
self._ = translator.gettext<br />
self.__narrator = Narrator(self.database, self.verbose, use_call, <br />
empty_date, empty_place, <br />
translator=translator,<br />
get_endnote_numbers=self.endnotes)<br />
self.__get_date = translator.get_date<br />
<br />
self._("")<br />
self.__get_date(event.get_date_object())</div>PaulFranklinhttps://gramps-project.org/wiki/index.php?title=Coding_for_translation&diff=27634Coding for translation2011-03-14T16:00:17Z<p>PaulFranklin: /* Textuals reports */</p>
<hr />
<div>Coding guidelines to enabling easy and correct translation of strings on the User Interface. <br />
[[Category:Translators/Categories]][[Category:Developers/Tutorials]]<br />
[[Category:Developers/General]]<br />
==Introduction==<br />
In order to be considered for inclusion in the offical GRAMPS release, any piece of code must support internationalization. What this means is that the Python module must support [[Translating GRAMPS|translations]] into different languages. GRAMPS provides support to make this as easy as possible for the developer. For enabling, a language code must be set on ''configure.in'' file into ''ALL_LINGUAS'' section.<br />
<br />
==How to allow translations==<br />
GRAMPS provides a simple interface (based on the gettext interface) to mark strings as being translatable. First, import the gettext function from the intl library.<br />
from gen.ggettext import gettext as _<br />
<br />
This statement imports the <code>sgettext</code> function under the name of <code>_</code>. This is the function that both marks the strings for translation and performs the actual translation at runtime. Strings that should be translated should be enclosed as an argument to the function.<br />
<br />
Example 1:<br />
print "Hello world!"<br />
<br />
In this example, the string will always be printed as specified.<br />
<br />
Example 1 internationalized:<br />
print _("Hello world!")<br />
<br />
In this example, GRAMPS will attempt to translate the string. If a translation exists, the call to the function will return the translation. If a translation does not exist, the original string is returned.<br />
<br />
===Into glade file===<br />
<br />
Just enable the translatable attribute on an XML element.<br />
<br />
<property name="label" translatable="yes">_Family:</property><br />
<property name="tooltip" translatable="yes">Abandon changes and close window</property><br />
<property name="label" translatable="no">&lt;b&gt; - &lt;/b&gt; </property><br />
<br />
===Into addons plugins===<br />
<br />
from TransUtils import get_addon_translator<br />
_ = get_addon_translator().gettext<br />
<br />
See [[Addons_Development#Localization|Addon developpement]].<br />
<br />
==How it works==<br />
<br />
[http://www.gnu.org/software/gettext/manual/gettext.html GNU gettext] and [http://live.gnome.org/TranslationProject/DevGuidelines/Localize%20using%20gettext%20and%20intltool Gnome] provide utilities and a [http://www.gnome.org/~malcolm/i18n/build-changes.html translation framework] (''previously [http://gramps.svn.sourceforge.net/viewvc/gramps/branches/maintenance/gramps20/gramps2/src/build_po build_po] and [http://gramps.svn.sourceforge.net/viewvc/gramps/branches/maintenance/gramps20/gramps2/src/get_strings get_strings]''):<br />
* [http://www.gnu.org/software/autoconf/manual/gettext/msginit-Invocation.html msginit] will generate a standard gettext header.<br />
* intltool-update will manage template and translations.<br />
* intltool-extract will extract translation strings on ''.glade'' and ''.xml'' files, by generating files with ''.h'' extension.<br />
<br />
# Generates a new template (gramps.pot), into ''/po'' directory :<br />
intltool-update -p<br />
<br />
* intltool-merge will merge cached translations into .in files<br />
<br />
# Merges translated strings into desktop file, ''root'' directory :<br />
intltool-merge -d po/ data/gramps.desktop.in data/gramps.desktop<br />
<br />
# Merges translated strings into xml file, ''root'' directory :<br />
intltool-merge -x po/ data/gramps.xml.in data/gramps.xml<br />
<br />
# Merges translated strings into key file, ''root'' directory :<br />
intltool-merge -k po/ data/gramps.keys.in data/gramps.keys <br />
<br />
===Files and directory===<br />
<br />
There are two stages to getting a translation to work. Translations are stored in a <code>.po</code> file that contains the mappings between the original strings and the translated strings, see [[Translating GRAMPS]]. <br />
<br />
Translators use a generic file <code>gramps.pot</code> to generate their <code>.po</code> file.<br />
GRAMPS uses a utility that extracts the strings from the source code to build the <code>.po</code> file. This utility (a perl script called by the command <code>make</code>) examines the source files for strings that have been marked as translatable. In the python source, these are the strings enclosed in the <code>_()</code> function calls.<br />
<br />
If you want this script to take your translatable strings into account, you must add your source file path in the file : <code>po/POTFILES.in</code>. For this report example, you should add:<br />
<br />
...<br />
# plugins directory<br />
src/plugins/AncestorChart2.py<br />
src/plugins/AncestorReport.py<br />
...<br />
src/plugins/FindDupes.py<br />
src/plugins/Leak.py<br />
src/plugins/MediaManager.py<br />
src/plugins/Myreport.py # <------<br />
src/plugins/NarrativeWeb.py<br />
src/plugins/PatchNames.py<br />
...<br />
<br />
In this file, the sources are sorted within each directory or category.<br />
<br />
Note that because strings are extracted by a script from the source file, string constants and not variables must be enclosed in the <code>_()</code> call. In the following example, the extraction script will not extract the string.<br />
mystring = "Hello World!"<br />
print _(mystring)<br />
<br />
The correct method would be to use one of the following:<br />
mystring = _("Hello World!")<br />
print mystring<br />
<br />
At run time, the <code>_()</code> calls will translate the string by looking it up in the translation database (created from the <code>.po</code> files) and returning the translated string.<br />
<br />
You can check missing references (not on <code>POTFILES.in</code> and <code>POTFILES.skip</code>) with the command<br />
/intltool-update -m <br />
into <code>/po</code> directory.<br />
<br />
==Tips for writing a translatable Python module==<br />
===Use complete sentences===<br />
Don't build up a sentence from phrases. Because a sentence is ordered in a particular way in your language does not mean that it is ordered the same way in another. Providing the entire sentence as a single unit allows the translator to make a meaningful translation.<br />
===Use named %s values===<br />
Python provides a powerful mechanism that allows the reordering of %s values in a string. A translator may need to rearrange the structure of a sentence, and it may not match the order you chose. For example:<br />
print "%s was born in %s" % ('Joe','Toronto')<br />
<br />
In some languages it may make more sense to say:<br />
print "%s is the city in which %s was born" % ('Toronto', 'Joe')<br />
<br />
The problem is that this requires a change to the order of the arguments. Python provides a solution for this. By using named operators and dictionaries, we can say:<br />
print "%(male_name)s was born in %(city)s" % {<br />
'city' : 'Toronto', 'male_name' : 'Joe'}<br />
<br />
In this case, the order of the %s formatters is not important, since the values will be looked up in the dictionary at run time to resolve the value. The translator can reorder the %s formatters, or even remove them without causing any problems.<br />
<br />
===Provide separate strings for masculine and feminine.===<br />
Many languages have the concept of gender, while others don't. A sentence may need to be phrased differently depending on whether the subject is male or female. By using the named %s values along with a bit of code, this problem can be solved.<br />
<br />
if person.getGender() == Person.male:<br />
print _("%(male_name)s was born in %(city)s\n") % {<br />
'male_name' : name, 'city' : city }<br />
else:<br />
print _("%(female_name)s was born in %(city)s\n") % {<br />
'female_name' : name, 'city' : city }<br />
<br />
This allows languages with gender differences to map nicely into your sentence.<br />
<br />
===Provide support for plural forms.===<br />
<br />
Plurals are handled differently in various languages. Whilst English or German have a singular and a plural form, other languages like Turkish don't distinguish between plural or singular and there are languages which use different plurals for different numbers, e.g. Polish.<br />
<br />
Gramps provides a [[Translating_GRAMPS#Plural_forms|plural forms]] support, useful for locales with multiples plurals according to a number (''often slavic based languages'') or for Asian family languages (''singular = plural'').<br />
<br />
We need to call module :<br />
from gen.ggettext import ngettext<br />
<br />
and code like this :<br />
<br />
ngettext("singular %d", "plural %d", n) %n<br />
<br />
Sample:<br />
<br />
msg = ngettext('Import Complete: %d second',<br />
'Import Complete: %d seconds', t ) % t<br />
<br />
===Provide a context support.===<br />
<br />
A translator needs context for a good translation. Keep in mind you can help him/her, by using context on translation string.<br />
<br />
We need to call module :<br />
from TransUtils import sgettext as _<br />
or<br />
from TransUtils import sngettext as _<br />
(if you use ngettext)<br />
<br />
Translation string will use context, but this will be hidden on user interface.<br />
_("context|string")<br />
Translator will see the translation string and a help string without loading program.<br />
Program will only display the string in English or with another locale.<br />
<br />
==Textual reports==<br />
Since Gramps-3.2 we are able to select the language for textual reports, see [http://www.gramps-project.org/bugs/view.php?id=2371 this feature]. <br />
<br />
Currently only available on Ancestor report.<br />
<br />
For providing this option:<br />
# import EnumeratedListOption<br />
# import libtranslate<br />
from gen.plug.menu import EnumeratedListOption <br />
import TransUtils<br />
from libtranslate import Translator, get_language_string<br />
<br />
Sample of code:<br />
<br />
language = menu.get_option_by_name('trans').get_value()<br />
translator = Translator(language)<br />
self._ = translator.gettext<br />
self.__narrator = Narrator(self.database, self.verbose, use_call, <br />
empty_date, empty_place, <br />
translator=translator,<br />
get_endnote_numbers=self.endnotes)<br />
self.__get_date = translator.get_date<br />
<br />
self._("")<br />
self.__get_date(event.get_date_object())</div>PaulFranklin