<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://gramps-project.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Patsyblefebre</id>
	<title>Gramps - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://gramps-project.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Patsyblefebre"/>
	<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php/Special:Contributions/Patsyblefebre"/>
	<updated>2026-06-29T15:22:57Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.3</generator>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:AncestorsMap&amp;diff=131452</id>
		<title>Addon:AncestorsMap</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:AncestorsMap&amp;diff=131452"/>
		<updated>2026-06-26T20:46:43Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: /* Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Addon:AncestorsMap}}&lt;br /&gt;
{{Third-party addon}}&lt;br /&gt;
{{man warn|View does not display places without coordinates|Note that, like all {{icon|geog}}[[Gramps_{{man version}}_Wiki_Manual_-_Categories#Geography_Category|Geography View]] modes, ONLY the Places with a defined [[Gramps_{{man version}}_Wiki_Manual_-_Entering_and_editing_data:_detailed_-_part_2#Supported_longitude.2Flatitude_formats|Longitude &amp;amp; Latitude]] will be plotted.}}&lt;br /&gt;
[[File:GeographyView-GeoAncestor-AncestorsMap-example-60.png|thumb|right|450px|Ancestors Map ('''GeoAncestor''') Geography view]]&lt;br /&gt;
{{man label|Ancestors Map}} ('''GeoAncestor''') is an interactive {{icon|geog}}{{man label|[[Gramps_{{man version}}_Wiki_Manual_-_Categories#Geography_Category|Geography]]}} category addon view mode that plots tagged pins on a Map at the Places associated with Ancestors of the [[Gramps_Glossary#home_person|Home Person]].  &lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Before using the view, navigate to the [[Gramps_Glossary#active_person|Active Person]] you want use with the [[Gramps_{{man version}}_Wiki_Manual_-_Categories#Geography_Category|Geography]] Category view to map the Event Places associated with a different Person's Ancestors. &lt;br /&gt;
&lt;br /&gt;
=== Map Pins ===&lt;br /&gt;
There are 4 pin types:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;''Still looking for correct pins. This map use left-handed versions of the normally right-handed magnifying glass.''&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot;| Pin&lt;br /&gt;
! Description &lt;br /&gt;
! Place types&lt;br /&gt;
|-&lt;br /&gt;
|[[File:gramps-zoom-in.png]]&lt;br /&gt;
|Zoom-in Magnifying glass&lt;br /&gt;
|Places with Birth Events&lt;br /&gt;
|-&lt;br /&gt;
|[[File:gramps-zoom-out.png]]&lt;br /&gt;
|Zoom-out Magnifying glass&lt;br /&gt;
|Places with Death Events&lt;br /&gt;
|-&lt;br /&gt;
|[[File:gramps-zoom-best-fit.png]]&lt;br /&gt;
|Magnifying glass pins with an X&lt;br /&gt;
|Places with Marriage Events&lt;br /&gt;
|-&lt;br /&gt;
|[[File:gramps-geo-mainmap.png]]&lt;br /&gt;
|Green Push pins &lt;br /&gt;
|Places with multiple Event types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Right-click on a map pin to reveal a pop-up menu listing the Events &amp;amp; People at that Place.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
The {{man label|Ancestors Map}} addon has '''no specific options''' but does share the standard [[Gramps_{{man version}}_Wiki_Manual_-_Categories#The_configuration|Map configuration]] options.&lt;br /&gt;
&lt;br /&gt;
See the Geography view [[Gramps_{{man version}}_Wiki_Manual_-_Categories#Usage|introduction to using maps]].&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting == &lt;br /&gt;
&lt;br /&gt;
Places of Ancestor Events that do not appear as pins on the map are probably missing the correct GPS longitude and/or longitude. Determining which Places are missing and need correction can be resolved easily with custom filters... but it takes multiple stages.&lt;br /&gt;
&lt;br /&gt;
The objective is to find the Places of Events of Ancestors of the [[Gramps_Glossary#home_person|Home Person]]. Which is 4 stages of filtering and installing the &amp;quot;[[Addon:Rule_expansions#Active_Person|Active Person]]&amp;quot; addon filter.&lt;br /&gt;
&lt;br /&gt;
You can set up a [[Example_filters|multi-stage of filter]] that shows only Places for Ancestors &amp;amp; [[Gramps_{{man version}}_Wiki_Manual_-_Categories#.E2.9A.99_Configuration_Options|configure the Places Category view]] to show the Longitude &amp;amp; Latitude columns. This will tell you how many of Ancestor related Places will be omitted from being plotted on the map.&lt;br /&gt;
&lt;br /&gt;
For this multi-stage custom filter, create the following Cascade of custom filters:&lt;br /&gt;
&lt;br /&gt;
# Create a Person custom Filter &amp;quot;ActivePerson&amp;quot; using the &amp;quot;Active Person&amp;quot; addon Person General rule.&lt;br /&gt;
# Person custom Filter &amp;quot;ActiveAncestors&amp;quot; using [[Gramps_{{man version}}_Wiki_Manual_-_Filters#Ancestral_filters|Ancestral filter]] &amp;quot;Ancestors of &amp;lt;filter&amp;gt; match&amp;quot;; filter=ActivePerson &amp;lt;br&amp;gt;''You might add a 2nd rule to include the Active Person and then select the &amp;quot;[[Gramps_{{man version}}_Wiki_Manual_-_Filters#Define_Filter_dialog#multiple_rule_options|At least one rule must apply]]&amp;quot; option. Otherwise, the Events &amp;amp; Places of the Active Person might be omitted''&lt;br /&gt;
# Events custom Filter &amp;quot;ActiveAncestorEvents&amp;quot; using [[Gramps_{{man version}}_Wiki_Manual_-_Filters#Events_Category_2|Events General filter]] &amp;quot;Events of persons matching the &amp;lt;person filter&amp;gt;&amp;quot;; person filter=ActiveAncestors&lt;br /&gt;
# Places custom Filter &amp;quot;ActiveAncestorEventPlaces&amp;quot; using [[Gramps_{{man version}}_Wiki_Manual_-_Filters#Places_Category_2|Places General filter]] &amp;quot;Places of events matching the &amp;lt;event filter&amp;gt;&amp;quot;; event filter=ActiveAncestorEvents&lt;br /&gt;
&lt;br /&gt;
{{man tip| 1=Making Filters that are more reusable|2=You could build this using a Person custom filter set to the builtin Default Person (a.k.a. [[Gramps_Glossary#home_person|Home Person]]) General rule. That would more directly correspond to this addon Geography view mode.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;But a custom Filter using the &amp;quot;Active Person&amp;quot; addon Person General rule is much more flexible. It stays synchronized to the Person being edited instead of continually resetting the Home Person designation or editing a rule that had been preset to a specific PersonID.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;'' Download and use the incredibly useful addon Person General Rule that was created in early 2020. It replaces the awkward PersonID based rules and makes Custom Filters MUCH more dynamic. Thanks Paul!''}}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
Shared by Serge Noiraud on GitHub [https://github.com/gramps-project/addons-source/tree/maintenance/gramps60/GeoAncestor GeoAncestor] addon&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
* {{Bug|0011681}}: [Ancestors Map] view mode re-initializing incorrectly (1.0.3 Addon version)&lt;br /&gt;
* {{Bug|0013241}}: [Geography view] Pin size difference between places with different number of events too large when there is only 1-2 events.&lt;br /&gt;
* [https://gramps-project.org/bugs/view.php?id=12497#c63377 Map Pin upgrades] in {{Bug|0012497}}: Development of a distinctive Gramps icon theme stencil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Tools]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Coding_for_translation&amp;diff=131349</id>
		<title>Coding for translation</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Coding_for_translation&amp;diff=131349"/>
		<updated>2026-06-12T00:27:32Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: /* Introduction */ fix link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Coding guidelines to enable easy and correct translation of strings on the User Interface. &lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Gramps has always been internationalized (see: [https://gramps-project.org/blog/2006/04/looking-back-over-5-years/ Looking Back Over 5 Years], Friday, April 21st, 2006 at 2:22 am by Don ) Therefore, all strings meant for the user should always be flagged for translation.&lt;br /&gt;
&lt;br /&gt;
In order to be considered for inclusion in the official 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 the ''[[Template:Gramps_translations#ALL_LINGUAS |ALL_LINGUAS]]'' section.&lt;br /&gt;
&lt;br /&gt;
==How to allow translations==&lt;br /&gt;
Gramps is a fully-internationalized application with translations in many languages. All code which presents text to users must provide for that text to be translated. Fortunately, Gramps provides an extension of [http://docs.python.org/3/library/gettext.html gettext] which makes this fairly painless. First, alias the gettext function from the single localization instance:&lt;br /&gt;
 from gramps.gen.const import GRAMPS_LOCALE as glocale&lt;br /&gt;
 _ = glocale.translation.gettext&lt;br /&gt;
This statement imports the &amp;lt;code&amp;gt;gettext&amp;lt;/code&amp;gt; function and aliases it as &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt;. The translation tools treat strings wrapped in _() as translatable and assemble them into catalogs for the translators to work with; by aliasing it to gettext(), we also enable python to retrieve the translation appropriate for the user's locale.&lt;br /&gt;
&lt;br /&gt;
Example 1:&lt;br /&gt;
 print(&amp;quot;Hello world!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
In this example, the string will always be printed as specified.&lt;br /&gt;
&lt;br /&gt;
Example 1 internationalized:&lt;br /&gt;
 print _(&amp;quot;Hello world!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== More complicated translations ===&lt;br /&gt;
&lt;br /&gt;
In addition to &amp;lt;tt&amp;gt;gettext&amp;lt;/tt&amp;gt;, GrampsTranslation offers two more specialized retrieval functions, &amp;lt;tt&amp;gt;ngettext&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;sgettext&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
In some strings, it's necessary to specify different translations depending upon the number of an argument. For example,&lt;br /&gt;
 George Smith and Annie Jones have 1 child &lt;br /&gt;
 George Smith and Annie Jones have 3 children&lt;br /&gt;
&lt;br /&gt;
We'd code that in python as follows:&lt;br /&gt;
 _ = glocale.translation.ngettext&lt;br /&gt;
 _(George Smith and Annie Jones have %(num)d child, George Smith and Annie Jones have %(num)d children, n) % {num : n}&lt;br /&gt;
&lt;br /&gt;
In other cases, it's necessary to provide a hint to translators, &amp;lt;abbr title=&amp;quot;exempli gratia - Latin phrase meaning 'for example'&amp;quot;&amp;gt;e.g.&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
 _(Remaining names | rest)&lt;br /&gt;
&lt;br /&gt;
We're making sure that the translators know that this message id means &amp;quot;what's left&amp;quot; rather than &amp;quot;take a nap&amp;quot;. When the file is translated, this is no problem, because the translation doesn't include the hint -- but if the user is working in English, we don't want him to see the hint, so we need to alias _ to sgettext:&lt;br /&gt;
 _ = glocale.translation.sgettext&lt;br /&gt;
&lt;br /&gt;
Often you need to combine them. While &amp;lt;tt&amp;gt;ngettext&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;sgettext&amp;lt;/tt&amp;gt; can each handle plain strings, neither can handle the other's strings. Fortunately the &amp;lt;tt&amp;gt;intltool&amp;lt;/tt&amp;gt; message extractor is pretty stupid, so any function name that ends in either &amp;lt;tt&amp;gt;_&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;gettext&amp;lt;/tt&amp;gt; will work. This will work pretty well:&lt;br /&gt;
&lt;br /&gt;
  _ = glocale.translation.gettext&lt;br /&gt;
  N_ = glocale.translation.ngettext&lt;br /&gt;
  S_ = glocale.translation.sgettext&lt;br /&gt;
&lt;br /&gt;
Obviously you would pass the translatable string to the right function.&lt;br /&gt;
&lt;br /&gt;
=== Encoding ===&lt;br /&gt;
String handling can be a bit tricky in a localized environment so it's important that developers understand Unicode string handling in both versions of the language.&lt;br /&gt;
&lt;br /&gt;
This is mostly a problem for Microsoft Windows™: Mac OSX and Linux use UTF8 for just about everything if the locale is set up correctly (and we try to do that when Gramps starts up), so one can get away with a lot of encoding mistakes on those platforms. Windows™ on the other hand uses a slightly modified version of UTF16 for file names and retains the old DOS [http://en.wikipedia.org/wiki/Code_page code page] system for encoding output to cmd.exe. The take-away is that if you need to mess with input or output encoding, be sure to test on both Linux and Windows before deciding that you're done. If you're not set up for multiple-platform testing arrange with someone,, who can test for you on the platform you don't have.&lt;br /&gt;
&lt;br /&gt;
====Python 2====&lt;br /&gt;
Python 2.7 has two text classes, &amp;lt;tt&amp;gt;[https://docs.python.org/2.7/library/functions.html#str str]&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;[https://docs.python.org/2.7/library/functions.html#unicode unicode]&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;Unicode&amp;lt;/tt&amp;gt; objects are encoded in UTF16 internally on most platforms, and most python '''output''' functions will do the right thing with them. One caveat here: passing both &amp;lt;tt&amp;gt;unicodes&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;strs&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;os.path.join()&amp;lt;/tt&amp;gt; will return a &amp;lt;tt&amp;gt;str&amp;lt;/tt&amp;gt;, so either make sure when constructing a path that all arguments are &amp;lt;tt&amp;gt;unicodes&amp;lt;/tt&amp;gt; or convert the result.&lt;br /&gt;
&lt;br /&gt;
The bsddb module that ships with Python2 is stupid about paths and requires that they be encoded in the file system encoding. This is handled in gramps/gen/db/write.py with _encode() and independently in a few other places.&lt;br /&gt;
&lt;br /&gt;
Strings from the operating system, including environment variables, are a problem on Windows™; The os module uses for input the [http://msdn.microsoft.com/en-us/library/windows/desktop/dd317766%28v=vs.85%29.aspx ANSI API] to the Windows SDK, which interprets the value of the environment variable according to the active code page and produces a &amp;lt;tt&amp;gt;str&amp;lt;/tt&amp;gt;, converting any codepoints &amp;gt; 0xff to ? and often misinterpreting those between 0x0f and 0xff if the encoding of the input happens to be something other than the active system codepage. Once this is done it is quite difficult to get non-ASCII pathnames back into a useable form, so gramps/gen/constfunc.py provides a get_env_var() function that uses the [http://msdn.microsoft.com/en-us/library/windows/desktop/dd374081(v=vs.85).aspx Unicode API] to instead. Always use that function to read environment variables which might include non-ASCII characters and avoid using os-module functions for reading paths.&lt;br /&gt;
&lt;br /&gt;
By default string constants in Python 2 are &amp;lt;tt&amp;gt;str&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Python 3====&lt;br /&gt;
Python 3 also provides two test classes, &amp;lt;tt&amp;gt;[https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str str]&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;[https://docs.python.org/3/library/stdtypes.html#binary-sequence-types-bytes-bytearray-memoryview bytes]&amp;lt;/tt&amp;gt;. In Python 3, &amp;lt;tt&amp;gt;str&amp;lt;/tt&amp;gt; is the unicode type and &amp;lt;tt&amp;gt;bytes&amp;lt;/tt&amp;gt; is text encoded some other way. Everything pretty much &amp;quot;just works&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====Portability Functions and constants====&lt;br /&gt;
We've provided a couple of functions in gramps/gen/constfunc.py to ease conversion of &amp;lt;tt&amp;gt;strs&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;unicodes&amp;lt;/tt&amp;gt;; these include the necessary tests to portably do the right thing regardless of what's passed to them and according to which version of Python is in use:&lt;br /&gt;
* &amp;lt;tt&amp;gt;cuni&amp;lt;/tt&amp;gt; is an alias for [https://docs.python.org/2.7/library/functions.html#unicode unicode] in Python 2 and for [https://docs.python.org/3/library/functions.html#func-str str] in Python 3. This has no protective checks so use it with care.&lt;br /&gt;
* &amp;lt;tt&amp;gt;conv_to_unicode(string, encoding='utf8')&amp;lt;/tt&amp;gt;: This ensures that its return value is a Unicode string which has been converted from a non-Unicode in the &amp;lt;tt&amp;gt;encoding&amp;lt;/tt&amp;gt;, which defaults to UTF8 for ease of use with the GUI.&lt;br /&gt;
* &amp;lt;tt&amp;gt;get_env_var(string, default=None)&amp;lt;/tt&amp;gt;: On Windows™ in Python2, uses the &amp;lt;tt&amp;gt;ctypes&amp;lt;/tt&amp;gt; module to invoke the Microsoft Unicode API to read the value of an environment variable and return a Unicode; otherwise returns the value from the &amp;lt;tt&amp;gt;os.environ&amp;lt;/tt&amp;gt; array.&lt;br /&gt;
There are also two constants:&lt;br /&gt;
* &amp;lt;tt&amp;gt;STRTYPE&amp;lt;/tt&amp;gt; is an alias for [https://docs.python.org/2.7/library/functions.html#basestring basestring] in Python 2 and for [https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str str] in Python 3. It can be used to test whether an object is a text-type.&lt;br /&gt;
* &amp;lt;tt&amp;gt;UNITYPE&amp;lt;/tt&amp;gt; is an alias for [https://docs.python.org/2.7/library/functions.html#unicode unicode] in Python 2 and for [https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str str] in Python 3. It can be used to test whether an object is already encoded in Unicode.&lt;br /&gt;
&lt;br /&gt;
====For portable string handling on all platforms and for all locales====&lt;br /&gt;
* Localized strings returned from gettext, ngettext, &amp;lt;abbr title=&amp;quot;et cetera - Latin phrase meaning 'and so on'&amp;quot;&amp;gt;etc.&amp;lt;/abbr&amp;gt; are always unicode&lt;br /&gt;
* Text files should always be encoded in UTF8. The easy and portable way to do this is to:&lt;br /&gt;
*: &amp;lt;pre&amp;gt;import io&amp;lt;/pre&amp;gt;&lt;br /&gt;
*: &amp;lt;pre&amp;gt;fh = io.open(filepath, mode, encoding='utf8')&amp;lt;/pre&amp;gt;&lt;br /&gt;
*: where ''mode'' is one of r, rw, r+, or w+. ''Don't open these files in binary mode!'' Pass unicode-type strings to fh.write() and expect the same from fh.read().&lt;br /&gt;
* Always read environment variables with &amp;lt;tt&amp;gt;constfuncs.get_env_var()&amp;lt;/tt&amp;gt; if there's any chance that it will contain a non-ASCII character.&lt;br /&gt;
* Use &amp;lt;tt&amp;gt;from __future__ import unicode_literals&amp;lt;/tt&amp;gt; in any source file which might present strings to the user or to the operating system.&lt;br /&gt;
*:When creating string literals, '''don't do this:'''&lt;br /&gt;
*:&amp;lt;pre&amp;gt;print _(u&amp;quot;Eg, valid values are 12.0154, 50° 52′ 21.92″N&amp;quot;)&amp;lt;/pre&amp;gt;&lt;br /&gt;
*:Because the &amp;lt;tt&amp;gt;u&amp;lt;/tt&amp;gt; prefix was removed for Python 3.0-3.2. (It was restored in 3.3 for compatibility with 2.7, but it's not necessary.)&lt;br /&gt;
*:Instead, put in the first line of the module&lt;br /&gt;
*:&amp;lt;pre&amp;gt;# *-* coding: utf-8 *-*&amp;lt;/pre&amp;gt;&lt;br /&gt;
*:then in the imports section&lt;br /&gt;
*:&amp;lt;pre&amp;gt;from __future__ import unicode_literals&amp;lt;/pre&amp;gt;&lt;br /&gt;
*:which makes all of the literals unicode. '''Make sure that your editor is set up to save utf-8!'''&lt;br /&gt;
&lt;br /&gt;
===Glade files===&lt;br /&gt;
&lt;br /&gt;
Just enable the translatable attribute on an XML element.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;label&amp;quot; translatable=&amp;quot;yes&amp;quot;&amp;gt;_Family:&amp;lt;/property&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;tooltip&amp;quot; translatable=&amp;quot;yes&amp;quot;&amp;gt;Abandon changes and close window&amp;lt;/property&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;label&amp;quot; translatable=&amp;quot;no&amp;quot;&amp;gt;&amp;amp;lt;b&amp;amp;gt; - &amp;amp;lt;/b&amp;amp;gt; &amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Non ASCII characters====&lt;br /&gt;
&lt;br /&gt;
If you plan to use non ASCII characters in a string, that shall be translated,&lt;br /&gt;
do not use escape sequences:&lt;br /&gt;
&lt;br /&gt;
 Eg, valid values are 12.0154, 50&amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt;#xB0; 52' 21.92&amp;quot;N&lt;br /&gt;
&lt;br /&gt;
use instead:&lt;br /&gt;
&lt;br /&gt;
 Eg, valid values are 12.0154, 50° 52′ 21.92″N&lt;br /&gt;
&lt;br /&gt;
In this case note the unicode characters for deg, min, sec. '''Ensure that your editor is set up to encode the characters in UTF-8!'''&lt;br /&gt;
&lt;br /&gt;
====Accessibility====&lt;br /&gt;
&lt;br /&gt;
In addition to [http://developer.gnome.org/gtk/2.24/GtkWidget.html#id1294298 accelerators], ''[http://developer.gnome.org/gtk/2.24/GtkWidget.html GtkWidget]'' also support a custom &amp;lt;accessible&amp;gt; element, which supports actions and relations. Properties on the accessible implementation of an object can be set by accessing the internal child &amp;quot;accessible&amp;quot; of a ''[http://developer.gnome.org/gtk/2.24/GtkWidget.html GtkWidget]''. See [http://developer.gnome.org/gtk/2.24/GtkWidget.html#GtkWidget-BUILDER-UI GtkBuilder UI].&lt;br /&gt;
&lt;br /&gt;
* Gtk label&lt;br /&gt;
&lt;br /&gt;
''A [http://developer.gnome.org/gtk/2.24/GtkLabel.html GtkLabel]'' '''with mnemonic support''' will automaticaly generate accessibility keys on linked ''[http://developer.gnome.org/gtk/2.24/GtkEntry.html GtkEntry]'' and ''UndoableEntry'' fields. Remember that Gramps also uses custom widgets like ''StyledTextEditor'' and ''ValidatableMaskedEntry'', which do not always have relation with a ''GtkLabel''.&lt;br /&gt;
&lt;br /&gt;
* Toggle buttons and Icons on toolbar&lt;br /&gt;
&lt;br /&gt;
Gramps often uses ''[http://developer.gnome.org/gtk/2.24/GtkToggleButton.html GtkToggleButtons]'' and alone ''[http://developer.gnome.org/gtk/2.24/GtkImage.html GtkImage]'' (image without label), this excludes blind people and generates a poor interface for accessibility.&lt;br /&gt;
&lt;br /&gt;
See [[Accessibility]].&lt;br /&gt;
&lt;br /&gt;
===Addons===&lt;br /&gt;
&lt;br /&gt;
External addons often need to provide their own message catalogs. To pull one in, use&lt;br /&gt;
this instead of the usual.&lt;br /&gt;
 from gramps.gen.const import GRAMPS_LOCALE as glocale&lt;br /&gt;
 _ = glocale.get_addon_translator(__file__).gettext&lt;br /&gt;
or if you need more than one retrieval function:&lt;br /&gt;
  _translation = glocale.get_addon_translator(__file__)&lt;br /&gt;
  _ = _translation.gettext&lt;br /&gt;
  S_ = _translation.sgettext&lt;br /&gt;
&lt;br /&gt;
The addon translator is another instance of GrampsTranslation, so the rules for creating&lt;br /&gt;
translatable strings and for retrieving the translated values are the same as for internal modules.&lt;br /&gt;
&lt;br /&gt;
See [[Addons_development#Localization|Addons development]] for more details.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
We need at least [http://www.gnu.org/software/gettext/manual/gettext.html GNU gettext], then [http://www.gnu.org/software/autoconf/manual/gettext/msginit-Invocation.html msginit] will generate a standard gettext header.&lt;br /&gt;
&lt;br /&gt;
Gramps has used different environments according to versions for retrieving strings to translate:&lt;br /&gt;
&lt;br /&gt;
* [[Translation_environment20|2.0.x]]&lt;br /&gt;
* [[Translation_environment22|2.2.x to Gramps 3.4.x]]&lt;br /&gt;
* [[Translation_environment4|Gramps 4.0.x to 5.1.x]]&lt;br /&gt;
&lt;br /&gt;
There are two stages to getting a translation to work. &lt;br /&gt;
&lt;br /&gt;
===Files and directory===&lt;br /&gt;
&lt;br /&gt;
Translations are stored in a &amp;lt;code&amp;gt;.po&amp;lt;/code&amp;gt; file that contains the mappings between the original strings and the translated strings, see [[Translating Gramps]]. &lt;br /&gt;
&lt;br /&gt;
Translators use a generic file &amp;lt;code&amp;gt;gramps.pot&amp;lt;/code&amp;gt; to generate their &amp;lt;code&amp;gt;.po&amp;lt;/code&amp;gt; file.&lt;br /&gt;
Gramps uses a utility that extracts the strings from the source code to build the &amp;lt;code&amp;gt;.po&amp;lt;/code&amp;gt; file. This utility examines the source files for strings that have been marked as translatable. In the python source, these are the strings enclosed in the &amp;lt;code&amp;gt;_()&amp;lt;/code&amp;gt; function calls.&lt;br /&gt;
&lt;br /&gt;
Note that because strings are extracted by a script from the source file, string constants and not variables must be enclosed in the &amp;lt;code&amp;gt;_()&amp;lt;/code&amp;gt; call. In the following example, the extraction script will not extract the string.&lt;br /&gt;
 mystring = &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
 print _(mystring)&lt;br /&gt;
&lt;br /&gt;
The correct method would be to use one of the following:&lt;br /&gt;
 mystring = _(&amp;quot;Hello World!&amp;quot;)&lt;br /&gt;
 print mystring&lt;br /&gt;
&lt;br /&gt;
At run time, the &amp;lt;code&amp;gt;_()&amp;lt;/code&amp;gt; calls will translate the string by looking it up in the translation database (created from the &amp;lt;code&amp;gt;.po&amp;lt;/code&amp;gt; files) and returning the translated string.&lt;br /&gt;
&lt;br /&gt;
===Add the reference to the file===&lt;br /&gt;
&lt;br /&gt;
We need to also add a reference to this file for generating the translation template.&lt;br /&gt;
&lt;br /&gt;
* [[Translation_environment22#Files_and_directory|2.2.x to Gramps 3.4.x]]&lt;br /&gt;
* [[Translation_environment4#Files_and_directory|Gramps 4.0.x, 5.1.x]]&lt;br /&gt;
&lt;br /&gt;
==Tips for writing a translatable Python module==&lt;br /&gt;
===Use complete sentences===&lt;br /&gt;
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, &amp;lt;abbr title=&amp;quot;et cetera - Latin phrase meaning 'and so on'&amp;quot;&amp;gt;etc.&amp;lt;/abbr&amp;gt;).&lt;br /&gt;
===Use named parameter values===&lt;br /&gt;
Python provides a powerful mechanism that allows the reordering of parameter values in a string.&lt;br /&gt;
This has two advantages:&lt;br /&gt;
# it allows the translator an option to rearrange the structure of a sentence to fit more naturally into the language structure.&lt;br /&gt;
# it can provide the translator more detail about what the variable refers to.&lt;br /&gt;
&lt;br /&gt;
There are two main options allowing you to name the variable being replaced.&lt;br /&gt;
* The older style applies [https://docs.python.org/3.11/library/stdtypes.html#printf-style-string-formatting the '%' operator]&lt;br /&gt;
* Python3 introduced a new style with the [https://docs.python.org/3.11/library/stdtypes.html#str.format| string formatting method]&lt;br /&gt;
&lt;br /&gt;
Either technique can be used with Gramps for translations, although the ''str.format()'' method is preferred for new code.&lt;br /&gt;
Whichever you choose, it is important to ''use named arguments'' when there is more than one %s/%d value into a translation string.&lt;br /&gt;
&lt;br /&gt;
Also remember, some languages are using right-to-left text direction. &lt;br /&gt;
&lt;br /&gt;
Most examples on this page use the older style - this includes use of the ''print'' statement, which must be replaced by the ''print()'' function in python3.&lt;br /&gt;
==== Using '%' style formatting ====&lt;br /&gt;
A simple example:&lt;br /&gt;
 print &amp;quot;%s was born in %s&amp;quot; % ('Joe','Toronto')&lt;br /&gt;
&lt;br /&gt;
In some languages it may make more sense to say:&lt;br /&gt;
 print &amp;quot;%s is the city in which %s was born&amp;quot; % ('Toronto', 'Joe')&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
 print &amp;quot;%(male_name)s was born in %(city)s&amp;quot; % {&lt;br /&gt;
            'city' : 'Toronto', 'male_name' : 'Joe'}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Note that Python also allows a variation which some people find easier to read:&lt;br /&gt;
 print &amp;quot;%(male_name)s was born in %(city)s&amp;quot; % dict(&lt;br /&gt;
            city = 'Toronto', male_name = 'Joe')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Using the str.format() method====&lt;br /&gt;
Using the str.format method, the example above would be written as&lt;br /&gt;
 print(&amp;quot;{male_name:s} was born in {city:s}&amp;quot;.format(&lt;br /&gt;
            city = 'Toronto', male_name = 'Joe') )&lt;br /&gt;
&lt;br /&gt;
===Provide separate strings for masculine and feminine.===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 if person.getGender() == Person.male:&lt;br /&gt;
        print _(&amp;quot;%(male_name)s was born in %(city)s\n&amp;quot;) % {&lt;br /&gt;
                'male_name' : name, 'city' : city }&lt;br /&gt;
 else:&lt;br /&gt;
        print _(&amp;quot;%(female_name)s was born in %(city)s\n&amp;quot;) % {&lt;br /&gt;
                'female_name' : name, 'city' : city }&lt;br /&gt;
&lt;br /&gt;
This allows languages with gender differences to map nicely into your sentence.&lt;br /&gt;
&lt;br /&gt;
===Provide support for plural forms.===&lt;br /&gt;
&lt;br /&gt;
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, &amp;lt;abbr title=&amp;quot;exempli gratia - Latin phrase meaning 'for example'&amp;quot;&amp;gt;e.g.&amp;lt;/abbr&amp;gt;, Polish.&lt;br /&gt;
&lt;br /&gt;
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''). &lt;br /&gt;
&lt;br /&gt;
Note, some locales need singular form with [http://en.wikipedia.org/wiki/Plural#Zero zero] and plural form might be also used in this case.&lt;br /&gt;
&lt;br /&gt;
We need to call module :&lt;br /&gt;
 from gen.ggettext import ngettext&lt;br /&gt;
&lt;br /&gt;
and code like this :&lt;br /&gt;
&lt;br /&gt;
  ngettext(&amp;quot;singular %d&amp;quot;, &amp;quot;plural %d&amp;quot;, n) %n&lt;br /&gt;
&lt;br /&gt;
Sample:&lt;br /&gt;
&lt;br /&gt;
 msg = ngettext('Import Complete: %d second',&lt;br /&gt;
                'Import Complete: %d seconds', t ) % t&lt;br /&gt;
&lt;br /&gt;
===Provide a context support.===&lt;br /&gt;
&lt;br /&gt;
A translator needs context for a good translation. Keep in mind you can help him/her, by using context on translation string.&lt;br /&gt;
&lt;br /&gt;
We need to call module :&lt;br /&gt;
 from gen.ggettext import sgettext as _&lt;br /&gt;
or&lt;br /&gt;
 from gen.ggettext import sngettext as _&lt;br /&gt;
(if you use ngettext) # not implemented&lt;br /&gt;
&lt;br /&gt;
Translation string will use context, but this will be hidden on user interface.&lt;br /&gt;
 _(&amp;quot;context|string&amp;quot;)&lt;br /&gt;
Translator will see the translation string and a help string without loading program.&lt;br /&gt;
Program will only display the string in English or with another locale.&lt;br /&gt;
&lt;br /&gt;
===Object classes===&lt;br /&gt;
&lt;br /&gt;
Gramps often displays names of primary objects (''Person, Family, Event, &amp;lt;abbr title=&amp;quot;et cetera - Latin phrase meaning 'and so on'&amp;quot;&amp;gt;etc.&amp;lt;/abbr&amp;gt; ...''), for being consistent on displayed strings (also in english!), there is a ''trans_objclass(objclass_str)'' function on TransUtils module.&lt;br /&gt;
&lt;br /&gt;
So, when we need to display the primary object name in lower case into a sentence, we can use this function.&lt;br /&gt;
&lt;br /&gt;
ex:&lt;br /&gt;
 from gen.ggettext import sgettext as _&lt;br /&gt;
 from TransUtils import trans_objclass&lt;br /&gt;
&lt;br /&gt;
 _(&amp;quot;the object|See %s details&amp;quot;) % trans_objclass(objclass)&lt;br /&gt;
 _(&amp;quot;the object|Make %s active&amp;quot;) % trans_objclass('Person')&lt;br /&gt;
&lt;br /&gt;
will display:&lt;br /&gt;
&lt;br /&gt;
 See ''the person'' details # or See ''the family, the event, &amp;lt;abbr title=&amp;quot;et cetera - Latin phrase meaning 'and so on'&amp;quot;&amp;gt;etc.&amp;lt;/abbr&amp;gt; ...'' details&lt;br /&gt;
 Make ''the person'' active&lt;br /&gt;
&lt;br /&gt;
===Genitive form===&lt;br /&gt;
&lt;br /&gt;
Genitive (and some other) forms need to modify the name itself into some locales, like Finnish or Swedish.&lt;br /&gt;
&lt;br /&gt;
Instead of &amp;quot;free form&amp;quot; text that talks about &lt;br /&gt;
&amp;lt;abbr title=&amp;quot;exempli gratia - Latin phrase meaning 'for example'&amp;quot;&amp;gt;e.g.&amp;lt;/abbr&amp;gt;, &lt;br /&gt;
 son '''of %s'''&lt;br /&gt;
better would be for example some tabulated format like this:&lt;br /&gt;
  son: %s&lt;br /&gt;
  daughter: %s&lt;br /&gt;
which doesn't require genitive.&lt;br /&gt;
&lt;br /&gt;
===Punctuation===&lt;br /&gt;
&lt;br /&gt;
Use of commas, semicolons and spacing can be different than into english.&lt;br /&gt;
Remember, simple is better, maybe try to limit punctuation marks.&lt;br /&gt;
&lt;br /&gt;
====definition====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ python3&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import string&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(string.punctuation)&lt;br /&gt;
!&amp;quot;#$%&amp;amp;'()*+,-./:;&amp;lt;=&amp;gt;?@[\]^_`{|}~&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====locale case====&lt;br /&gt;
&lt;br /&gt;
In French, a space is required before or after some punctuation marks and symbols, like&lt;br /&gt;
&amp;lt;pre&amp;gt; : ; « » ! ? % $ # .&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* GtkBuilder (editors, configuration dialogs) can provide a default colon after the string without spacing,&lt;br /&gt;
so need some extra-testing and customization for some translators. &amp;lt;abbr title=&amp;quot;exempli gratia - Latin phrase meaning 'for example'&amp;quot;&amp;gt;e.g.&amp;lt;/abbr&amp;gt;, in french&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#: ../gramps/gen/plug/report/stdoptions.py:257 ../gramps/gui/configure.py:1222&lt;br /&gt;
msgid &amp;quot;Date format&amp;quot;&lt;br /&gt;
msgstr &amp;quot;Format des dates &amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# comté (Canada)&lt;br /&gt;
#: ../gramps/gui/configure.py:617&lt;br /&gt;
#: ../gramps/gui/editors/displaytabs/addrembedlist.py:75&lt;br /&gt;
#: ../gramps/plugins/view/repoview.py:92&lt;br /&gt;
msgid &amp;quot;State/County&amp;quot;&lt;br /&gt;
msgstr &amp;quot;Province/Comté &amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# L'espace final est pour précéder le « : » codé en dur.&lt;br /&gt;
#: ../gramps/gui/configure.py:1332&lt;br /&gt;
msgid &amp;quot;Status bar&amp;quot;&lt;br /&gt;
msgstr &amp;quot;Barre d'état &amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Deferred key on lists===&lt;br /&gt;
&lt;br /&gt;
In most coding situations, strings are translated where they are coded. Occasionally however, you need to mark strings for translation, but defer actual translation until later. A classic example is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
animals = ['mollusk',&lt;br /&gt;
           'albatross',&lt;br /&gt;
           'rat',&lt;br /&gt;
           'penguin',&lt;br /&gt;
           'python', ]&lt;br /&gt;
for a in animals:&lt;br /&gt;
    print(a)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, you want to mark the strings in the animals list as being translatable, but you don’t actually want to translate them until they are printed.&lt;br /&gt;
&lt;br /&gt;
Here is one way you can handle this situation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def _(message): return message&lt;br /&gt;
&lt;br /&gt;
animals = [_('mollusk'),&lt;br /&gt;
           _('albatross'),&lt;br /&gt;
           _('rat'),&lt;br /&gt;
           _('penguin'),&lt;br /&gt;
           _('python'), ]&lt;br /&gt;
del _&lt;br /&gt;
for a in animals:&lt;br /&gt;
    print(_(a))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This works because the dummy definition of _() simply returns the string unchanged. And this dummy definition will temporarily override any definition of _() in the builtin namespace (until the del command). Take care, though if you have a previous definition of _() in the local namespace.&lt;br /&gt;
&lt;br /&gt;
Note that the second use of _() will not identify “a” as being translatable to the gettext program, because the parameter is not a string literal.&lt;br /&gt;
&lt;br /&gt;
Another way to handle this is with the following example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def _T_(message): return message&lt;br /&gt;
&lt;br /&gt;
animals = [_T_('mollusk'),&lt;br /&gt;
           _T_('albatross'),&lt;br /&gt;
           _T_('rat'),&lt;br /&gt;
           _T_('penguin'),&lt;br /&gt;
           _T_('python'), ]&lt;br /&gt;
for a in animals:&lt;br /&gt;
    print(_(a))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this case, you are marking translatable strings with the function _T_(), which won’t conflict with any definition of _().&lt;br /&gt;
&lt;br /&gt;
See [https://docs.python.org/dev/library/gettext.html#deferred-translations deferred translations]&lt;br /&gt;
&lt;br /&gt;
Current custom key on gramps code is '''_T_'''. Set as xgettext flag on [https://github.com/gramps-project/gramps/blob/master/po/genpot.sh#L6 shell script] and [https://github.com/gramps-project/gramps/blob/master/po/update_po.py#L716 python interface], generating the translation strings template.&lt;br /&gt;
&lt;br /&gt;
==Changing translated text message in the source code==&lt;br /&gt;
One of the severities in our bug tracker is &amp;quot;text&amp;quot;, which ranks up as easier than &amp;quot;tweak&amp;quot; and &amp;quot;minor&amp;quot;, but more difficult than &amp;quot;trivial&amp;quot;. If a bug is concerned with readability or correctness of a text that Gramps outputs, whether in GUI, in a console error message, or in a produced report, then &amp;quot;text&amp;quot; is the severity to use. So why is it more than &amp;quot;trivial&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
As described above, any translated text in the source code gets reflected into tens of *.po files, maintained by the translators. So every time you just change it in the source, ALL the translators need to do the translation again. Normally, the translation environment will give a prudent suggestion, but there is still a manual approval step. If you check in the change, the string will not be translated until the translators pick it up.&lt;br /&gt;
&lt;br /&gt;
This is why, if what you change is just a couple of spelling mistakes, a missing comma in the middle, or maybe an extra space somewhere in the message, it's a good idea to save the translators' work, by doing a global search and replace of your source message text in the *.po files, and committing these along with your change. &lt;br /&gt;
&lt;br /&gt;
For short enough messages, that don't span multiple lines in the *po files, you can do it by executing&lt;br /&gt;
 perl -pi -e 's/YOUR MESSAGE BEFORE CORRECTION/your message after correction/g;' *.po *.pot &lt;br /&gt;
in the po/ directory. Make sure you do a &amp;quot;git diff&amp;quot; and observe the results make sense. (You'll probably have to escape some characters in the regular expression, such as | or .).&lt;br /&gt;
&lt;br /&gt;
To make it easier to port your changes across multiple branches, it's a good idea to separate the changes in the source tree from the po/ ones. This way, you'll be able to quickly re-apply the source changes using normal cross-branch porting workflow (such as `git cherry-pick'), and then adjust and re-run the search-and-replace in the po/ on the new branch, because, most likely, it won't reapply due to the differences in the .po layout.&lt;br /&gt;
&lt;br /&gt;
{{man note| Note |To stress it again, only do it for text change that didn't change how it is going to be translated. If you'd like your change to be somehow reflected in the translations, let the translators do the work instead.}}&lt;br /&gt;
&lt;br /&gt;
==Textual reports==&lt;br /&gt;
Starting with Gramps-3.2 we are able to select the language for textual reports, see feature {{bug|2371}}.&lt;br /&gt;
&lt;br /&gt;
For Gramps it was only available on Ancestor report (3.2.x) and detailed reports (3.3.x).&lt;br /&gt;
&lt;br /&gt;
The capability for translated-output was added to some more (gramps core) reports, in the gramps40 branch, before gramps 4.0.0 was released. So more than the &amp;quot;three original reports&amp;quot; now have had this [https://gramps-project.org/bugs/view.php?id=2371#c33601 feature request implemented].&lt;br /&gt;
&lt;br /&gt;
For providing this option:&lt;br /&gt;
# import EnumeratedListOption&lt;br /&gt;
# import libtranslate&lt;br /&gt;
 from gen.plug.menu import EnumeratedListOption &lt;br /&gt;
 import TransUtils&lt;br /&gt;
 from libtranslate import Translator, get_language_string&lt;br /&gt;
&lt;br /&gt;
Sample of code:&lt;br /&gt;
&lt;br /&gt;
 language = menu.get_option_by_name('trans').get_value()&lt;br /&gt;
        translator = Translator(language)&lt;br /&gt;
        self._ = translator.gettext&lt;br /&gt;
        self.__narrator = Narrator(self.database, self.verbose, use_call, &lt;br /&gt;
                                   use_fulldate, empty_date, empty_place, &lt;br /&gt;
                                   translator=translator,&lt;br /&gt;
                                    get_endnote_numbers=self.endnotes)&lt;br /&gt;
        self.__get_date = translator.get_date&lt;br /&gt;
        self.__get_type = translator.get_type&lt;br /&gt;
&lt;br /&gt;
 self._(&amp;quot;&amp;quot;)&lt;br /&gt;
 self.__get_date(event.get_date_object())&lt;br /&gt;
 self.__get_type(event.get_type())&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Coding_for_translation|Coding for Translation]]&lt;br /&gt;
* [[Coding_for_translation_using_weblate|Coding for Translation using Weblate]]&lt;br /&gt;
* [[Translating_Gramps_using_Weblate|Translating Gramps using Weblate]]&lt;br /&gt;
* [https://www.gramps-project.org/docs/gen/gen_utils.html#gramps.gen.utils.grampslocale.Lexeme Lexeme] class in the General Utilities documentation &lt;br /&gt;
* [[Date_Handler#Localizing_the_date_strings|Localizing the date strings]] &lt;br /&gt;
* [[Translating_the_Gramps_User_manual|Translating the Gramps User manual]]&lt;br /&gt;
* [[Portal:Translators|Portal:Translators]]&lt;br /&gt;
* [[Committing_policies|Committing policies]]&lt;br /&gt;
* [[What_to_do_for_a_release|What to do for a release]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Translators/Categories]]&lt;br /&gt;
[[Category:Developers/Tutorials]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User_talk:JohnRLewis&amp;diff=131348</id>
		<title>User talk:JohnRLewis</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User_talk:JohnRLewis&amp;diff=131348"/>
		<updated>2026-06-08T21:45:49Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Gramps''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:Patsyblefebre|Patsy B Lefebre]] ([[User talk:Patsyblefebre|talk]]) 21:45, 8 June 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User_talk:Albertoriella&amp;diff=131325</id>
		<title>User talk:Albertoriella</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User_talk:Albertoriella&amp;diff=131325"/>
		<updated>2026-05-31T09:57:38Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Gramps''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:Patsyblefebre|Patsy B Lefebre]] ([[User talk:Patsyblefebre|talk]]) 09:57, 31 May 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Category_talk:GEPS&amp;diff=131312</id>
		<title>Category talk:GEPS</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Category_talk:GEPS&amp;diff=131312"/>
		<updated>2026-05-23T23:24:07Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: /* Added summary table */ thanks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User_talk:MarathonMom2001&amp;diff=131308</id>
		<title>User talk:MarathonMom2001</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User_talk:MarathonMom2001&amp;diff=131308"/>
		<updated>2026-05-20T03:04:07Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Gramps''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:Patsyblefebre|Patsy B Lefebre]] ([[User talk:Patsyblefebre|talk]]) 03:04, 20 May 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:GEDCOM_Extensions/he&amp;diff=131237</id>
		<title>Addon:GEDCOM Extensions/he</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:GEDCOM_Extensions/he&amp;diff=131237"/>
		<updated>2026-05-17T09:21:35Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: File:GEDCOMExtensions-GED2-ExportOptions-tab-ExportAssistant-defaults-60.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div dir=&amp;quot;rtl&amp;quot; lang=&amp;quot;he&amp;quot; align=&amp;quot;justify&amp;quot; class=&amp;quot;mw-content-rtl&amp;quot;&amp;gt;&lt;br /&gt;
{{languages/he|Addon:GEDCOM Extensions}}&lt;br /&gt;
&lt;br /&gt;
{{Third-party addon/he}}&lt;br /&gt;
{{man note|זמין עבור גרמפס מגרסה 4.x ומעלה.}}&lt;br /&gt;
&lt;br /&gt;
[[File:GEDCOMExtensions-GED2-ChooseTheOutputFormat-tab-ExportAssistant-52.png|left|450px|האפשרות &amp;quot;GEDCOM Extensions (GED2)&amp;quot; נבחרה באשף הייצוא]]&lt;br /&gt;
&lt;br /&gt;
תוסף זה כולל אוסף של הרחבות לא תקניות לתסדיר GEDCOM, המרחיבות את יכולות ה־[https://github.com/gramps-project/gramps/blob/458989f47aed00ed33331c8760f8049266f3495a/gramps/plugins/export/exportgedcom.py#L202 מחלקה GedcomWriter של גרמפס] כדי לאפשר ייצוא של מידע נוסף שאינו נתמך בתקן המקורי של GEDCOM.&lt;br /&gt;
&lt;br /&gt;
אם התכונה הרצויה אינה מופיעה ברשימה, ניתן להוסיף אותה בעצמך או לפנות למפתח שיסייע בכך.&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== הרחבות GEDCOM הנתמכות בייצוא ==&lt;br /&gt;
&lt;br /&gt;
התוסף תומך בהרחבות הבאות:&lt;br /&gt;
&lt;br /&gt;
*    הכללת עדים — ייצוא עדים המשויכים לאירועי משפחה.&lt;br /&gt;
*    [https://github.com/gramps-project/addons-source/commit/813292310739252458de8d7d136649b8603facf4 הכללת מדיה].&lt;br /&gt;
*    [https://github.com/gramps-project/addons-source/pull/630 שמות פטרוניים].&lt;br /&gt;
&lt;br /&gt;
=== התקנה ===&lt;br /&gt;
כדי להתקין את התוסף, יש לוודא שבמנהל התוספים נבחרה האפשרות {{man label|&amp;quot;קהל יעד: מומחים&amp;quot;}} או {{man label|כל הקהלים}}.&lt;br /&gt;
&lt;br /&gt;
=== שימוש ===&lt;br /&gt;
&lt;br /&gt;
[[File:GEDCOMExtensions-GED2-ExportOptions-tab-ExportAssistant-defaults-60.png|left|450px|אפשרויות ברירת־המחדל מסומנות. תפריט שמות פטרוניים מופיע.]]&lt;br /&gt;
&lt;br /&gt;
כדי להפעיל את ייצוא הקובץ:&lt;br /&gt;
&lt;br /&gt;
*    בחרו בתפריט {{man menu|אילנות־יוחסין ← ייצוא...}}.&lt;br /&gt;
*    לחצו על {{man button|הבא}}.&lt;br /&gt;
*    בלשונית {{man label|בחירת תסדיר פלט}}, בחחרת {{man label|GEDCOM Extensions (GED2)}}, והקשה על {{man button|הבא}}.&lt;br /&gt;
*    בלשונית {{man label|אפשרויות ייצוא}}, ניתן לבחור בהרחבות הבאות:&lt;br /&gt;
**        {{checkbox/he|1}} {{man label|הכללת עדים}} — (מסומן כברירת־מחדל) מייצא עדים הקשורים לאירועי משפחה.&lt;br /&gt;
**        {{checkbox/he|1}} {{man label|הכללת מדיה}} — (מסומן כברירת־מחדל).&lt;br /&gt;
**        {{man label|שמות פטרונימים:}}&lt;br /&gt;
*** '''לא לשנות''' — (ברירת־המחדל) שומר על התנהגות הייצוא הרגילה של גרמפס.&lt;br /&gt;
*** ''הוספת שם פטרונימי לאחר השם הפרטי'' — שם פטרוני נוסף אחרי השם הפרטי, במקום ברשימת שמות המשפחה.&lt;br /&gt;
*** ''להתעלם משם פטרונימי'' — שמות פטרוניים לא ייוצאו.&lt;br /&gt;
*    לחצו על {{man button|הבא}}, בחירת מיקום לשמירת הקובץ והשלמת תהליך הייצוא. הקובץ יישמר בסיומת ‎&amp;lt;code&amp;gt;.ged2&amp;lt;/code&amp;gt;‎.&lt;br /&gt;
&lt;br /&gt;
ניתן לשנות את סיומת הקובץ ל־‎&amp;lt;code&amp;gt;.ged&amp;lt;/code&amp;gt;‎ ולהתייחס אליו כקובץ GEDCOM רגיל.&lt;br /&gt;
&lt;br /&gt;
{{man warn|אזהרה: אין תמיכה בייבוא קובצי GED2 לתוך גרמפס|כלומר, הייצוא מתוסף זה הוא חד־כיווני בלבד (מגרמפס החוצה). עם זאת, ייתכן שניתן יהיה בעתיד לפתח מתקע ייבוא מתאים.}}&lt;br /&gt;
&lt;br /&gt;
== ייבוא הרחבות GEDCOM ==&lt;br /&gt;
כעת אין תמיכה בהרחבות לייבוא.&lt;br /&gt;
&lt;br /&gt;
למידע נוסף בקשת תכונה:&lt;br /&gt;
&lt;br /&gt;
*    {{bug|10550}} '''ארגון מחדש של ייבוא GEDCOM בגרמפס כדי לאפשר תוספים להרחבות ייבוא'''&lt;br /&gt;
&lt;br /&gt;
== לקריאה נוספת ==&lt;br /&gt;
&lt;br /&gt;
*    קוד המקור זמין ב־[https://github.com/gramps-project/addons-source/blob/master/GedcomExtensions/GedcomExtensions.py GedcomExtensions.py במאגר addons-source של גרמפס].&lt;br /&gt;
*    [[GEDCOM/he|GEDCOM]]&lt;br /&gt;
&lt;br /&gt;
[[Category:He:תוספים]]&lt;br /&gt;
[[Category:He:מתקעים]]&lt;br /&gt;
[[Category:He:פתוח]]&lt;br /&gt;
[[Category:He:GEDCOM]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:GEDCOM_Extensions&amp;diff=131236</id>
		<title>Addon:GEDCOM Extensions</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:GEDCOM_Extensions&amp;diff=131236"/>
		<updated>2026-05-17T09:16:35Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{languages|Addon:GEDCOM Extensions}}&lt;br /&gt;
{{Third-party addon}}&lt;br /&gt;
[[File:GEDCOMExtensions-GED2-ChooseTheOutputFormat-tab-ExportAssistant-52.png|right|450px|&amp;quot;GEDCOM Extensions (GED2)&amp;quot; option selected in Export_Assistant]]&lt;br /&gt;
&lt;br /&gt;
This Addon has a collection of unofficial GEDCOM extensions which extend [https://github.com/gramps-project/gramps/blob/458989f47aed00ed33331c8760f8049266f3495a/gramps/plugins/export/exportgedcom.py#L202 Gramps GedcomWriter] to include common non-compliant GEDCOM additions. &lt;br /&gt;
&lt;br /&gt;
If the feature you want is not listed below, then you can either add it yourself, or ask a developer to help you.&lt;br /&gt;
{{-}}&lt;br /&gt;
== Export GEDCOM Extensions ==&lt;br /&gt;
&lt;br /&gt;
The following GEDCOM Extensions are supported:&lt;br /&gt;
&lt;br /&gt;
* Include witnesses - Exports witnesses associated with a family event&lt;br /&gt;
* [https://github.com/gramps-project/addons-source/commit/813292310739252458de8d7d136649b8603facf4 Include media]&lt;br /&gt;
* [https://github.com/gramps-project/addons-source/pull/630 Patronymic names]&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
To install the addon ensure &amp;quot;Expert&amp;quot; or &amp;quot;All Audiences&amp;quot; is selected in the Addon Manager.&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
[[File:GEDCOMExtensions-GED2-ExportOptions-tab-ExportAssistant-defaults-60.png|right|450px|Defaults shown in Export Assistant's - Export options - tab]]&lt;br /&gt;
&lt;br /&gt;
To run the exporter, select {{man menu|Family Trees &amp;gt; Export..}}, press {{man button|Next}}, on the {{man label|Choose the output format}} dialog select {{man label|&amp;quot;GEDCOM Extensions (GED2)&amp;quot;}}, press {{man button|Next}}. On the {{man label|Export options}} dialog select the relevant GEDCOM extension option:&lt;br /&gt;
* {{checkbox|0}} {{man label|Include witnesses}} - (unchecked by default) Exports witnesses associated with a family event&lt;br /&gt;
* {{checkbox|0}} {{man label|Include media}} - (unchecked by default) &lt;br /&gt;
* {{man label|Patronymic names:}}&lt;br /&gt;
** '''Don't change''' - (default) - Don't change Gramps export&lt;br /&gt;
** ''Add Patronymic name after Given name'' - Export Patronymic after given name, instead of adding it to the list of surnames&lt;br /&gt;
** ''Ignore Patronymic name'' - Ignore Patronymic names on export&lt;br /&gt;
* {{man label|Type of surname:}}&lt;br /&gt;
** '''Don't change''' - (default) - Don't change Gramps export&lt;br /&gt;
** select from the different options...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then press {{man button|Next}}, and after selecting the save location and applying the export the data should be exported to a file with the extension &amp;quot;.ged2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you can change the extension from &amp;quot;.ged2&amp;quot; to &amp;quot;.ged&amp;quot; and treat as a normal GEDCOM file.&lt;br /&gt;
&lt;br /&gt;
{{man warn|Warning: There is no associated .ged2 importer in Gramps, so the {{man menu|export is one-way only (out of Gramps)}}.|It should be possible for someone to also write an associated GEDCOM importer to handle the extensions to bring them into Gramps as well.}}&lt;br /&gt;
&lt;br /&gt;
== Import GEDCOM Extensions ==&lt;br /&gt;
&lt;br /&gt;
There are no import extensions currently supported.&lt;br /&gt;
&lt;br /&gt;
See feature request:&lt;br /&gt;
* {{bug|10550}} '''Refactor Gramps GEDCOM import so as to support GEDCOM extension addons'''&lt;br /&gt;
&lt;br /&gt;
{{man note|Available for Gramps 4.x and higher.}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* The source code is available from [https://github.com/gramps-project/addons-source/blob/master/GedcomExtensions/GedcomExtensions.py addons-source/blob/master/GedcomExtensions/GedcomExtensions.py].&lt;br /&gt;
&lt;br /&gt;
* [[GEDCOM]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=File:GEDCOMExtensions-GED2-ExportOptions-tab-ExportAssistant-defaults-60.png&amp;diff=131235</id>
		<title>File:GEDCOMExtensions-GED2-ExportOptions-tab-ExportAssistant-defaults-60.png</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=File:GEDCOMExtensions-GED2-ExportOptions-tab-ExportAssistant-defaults-60.png&amp;diff=131235"/>
		<updated>2026-05-17T09:15:36Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: &amp;quot;GEDCOM Extensions (GED2)&amp;quot; Defaults shown in Export Assistant's - Export options - tab (Gramps 6.0.8; Microsoft Windows 10)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&amp;quot;GEDCOM Extensions (GED2)&amp;quot; Defaults shown in Export Assistant's - Export options - tab (Gramps 6.0.8; Microsoft Windows 10)&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:GEDCOM_Extensions&amp;diff=131234</id>
		<title>Addon:GEDCOM Extensions</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:GEDCOM_Extensions&amp;diff=131234"/>
		<updated>2026-05-17T09:13:22Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{languages|Addon:GEDCOM Extensions}}&lt;br /&gt;
{{Third-party addon}}&lt;br /&gt;
[[File:GEDCOMExtensions-GED2-ChooseTheOutputFormat-tab-ExportAssistant-52.png|right|450px|&amp;quot;GEDCOM Extensions (GED2)&amp;quot; option selected in Export_Assistant]]&lt;br /&gt;
&lt;br /&gt;
This Addon has a collection of unofficial GEDCOM extensions which extend [https://github.com/gramps-project/gramps/blob/458989f47aed00ed33331c8760f8049266f3495a/gramps/plugins/export/exportgedcom.py#L202 Gramps GedcomWriter] to include common non-compliant GEDCOM additions. &lt;br /&gt;
&lt;br /&gt;
If the feature you want is not listed below, then you can either add it yourself, or ask a developer to help you.&lt;br /&gt;
{{-}}&lt;br /&gt;
== Export GEDCOM Extensions ==&lt;br /&gt;
&lt;br /&gt;
The following GEDCOM Extensions are supported:&lt;br /&gt;
&lt;br /&gt;
* Include witnesses - Exports witnesses associated with a family event&lt;br /&gt;
* [https://github.com/gramps-project/addons-source/commit/813292310739252458de8d7d136649b8603facf4 Include media]&lt;br /&gt;
* [https://github.com/gramps-project/addons-source/pull/630 Patronymic names]&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
To install the addon ensure &amp;quot;Expert&amp;quot; or &amp;quot;All Audiences&amp;quot; is selected in the Addon Manager.&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
[[File:GEDCOMExtensions-GED2-ExportOptions-tab-ExportAssistant-52.png|right|450px|Checkboxs selected and &amp;quot;Patronymic names:&amp;quot; drop down list shown.]]&lt;br /&gt;
&lt;br /&gt;
To run the exporter, select {{man menu|Family Trees &amp;gt; Export..}}, press {{man button|Next}}, on the {{man label|Choose the output format}} dialog select {{man label|&amp;quot;GEDCOM Extensions (GED2)&amp;quot;}}, press {{man button|Next}}. On the {{man label|Export options}} dialog select the relevant GEDCOM extension option:&lt;br /&gt;
* {{checkbox|0}} {{man label|Include witnesses}} - (unchecked by default) Exports witnesses associated with a family event&lt;br /&gt;
* {{checkbox|0}} {{man label|Include media}} - (unchecked by default) &lt;br /&gt;
* {{man label|Patronymic names:}}&lt;br /&gt;
** '''Don't change''' - (default) - Don't change Gramps export&lt;br /&gt;
** ''Add Patronymic name after Given name'' - Export Patronymic after given name, instead of adding it to the list of surnames&lt;br /&gt;
** ''Ignore Patronymic name'' - Ignore Patronymic names on export&lt;br /&gt;
* {{man label|Type of surname:}}&lt;br /&gt;
** '''Don't change''' - (default) - Don't change Gramps export&lt;br /&gt;
** select from the different options...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then press {{man button|Next}}, and after selecting the save location and applying the export the data should be exported to a file with the extension &amp;quot;.ged2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you can change the extension from &amp;quot;.ged2&amp;quot; to &amp;quot;.ged&amp;quot; and treat as a normal GEDCOM file.&lt;br /&gt;
&lt;br /&gt;
{{man warn|Warning: There is no associated .ged2 importer in Gramps, so the {{man menu|export is one-way only (out of Gramps)}}.|It should be possible for someone to also write an associated GEDCOM importer to handle the extensions to bring them into Gramps as well.}}&lt;br /&gt;
&lt;br /&gt;
== Import GEDCOM Extensions ==&lt;br /&gt;
&lt;br /&gt;
There are no import extensions currently supported.&lt;br /&gt;
&lt;br /&gt;
See feature request:&lt;br /&gt;
* {{bug|10550}} '''Refactor Gramps GEDCOM import so as to support GEDCOM extension addons'''&lt;br /&gt;
&lt;br /&gt;
{{man note|Available for Gramps 4.x and higher.}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* The source code is available from [https://github.com/gramps-project/addons-source/blob/master/GedcomExtensions/GedcomExtensions.py addons-source/blob/master/GedcomExtensions/GedcomExtensions.py].&lt;br /&gt;
&lt;br /&gt;
* [[GEDCOM]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:GEDCOM_Extensions&amp;diff=131233</id>
		<title>Addon:GEDCOM Extensions</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:GEDCOM_Extensions&amp;diff=131233"/>
		<updated>2026-05-17T09:11:55Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{languages|Addon:GEDCOM Extensions}}&lt;br /&gt;
{{Third-party addon}}&lt;br /&gt;
[[File:GEDCOMExtensions-GED2-ChooseTheOutputFormat-tab-ExportAssistant-52.png|right|450px|&amp;quot;GEDCOM Extensions (GED2)&amp;quot; option selected in Export_Assistant]]&lt;br /&gt;
&lt;br /&gt;
This Addon has a collection of unofficial GEDCOM extensions which extend [https://github.com/gramps-project/gramps/blob/458989f47aed00ed33331c8760f8049266f3495a/gramps/plugins/export/exportgedcom.py#L202 Gramps GedcomWriter] to include common non-compliant GEDCOM additions. &lt;br /&gt;
&lt;br /&gt;
If the feature you want is not listed below, then you can either add it yourself, or ask a developer to help you.&lt;br /&gt;
{{-}}&lt;br /&gt;
== Export GEDCOM Extensions ==&lt;br /&gt;
&lt;br /&gt;
The following GEDCOM Extensions are supported:&lt;br /&gt;
&lt;br /&gt;
* Include witnesses - Exports witnesses associated with a family event&lt;br /&gt;
* [https://github.com/gramps-project/addons-source/commit/813292310739252458de8d7d136649b8603facf4 Include media]&lt;br /&gt;
* [https://github.com/gramps-project/addons-source/pull/630 Patronymic names]&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
To install the addon ensure &amp;quot;Expert&amp;quot; or &amp;quot;All Audiences&amp;quot; is selected in the Addon Manager.&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
[[File:GEDCOMExtensions-GED2-ExportOptions-tab-ExportAssistant-52.png|right|450px|Checkboxs selected and &amp;quot;Patronymic names:&amp;quot; drop down list shown.]]&lt;br /&gt;
&lt;br /&gt;
To run the exporter, select {{man menu|Family Trees &amp;gt; Export..}}, press {{man button|Next}}, on the {{man label|Choose the output format}} dialog select {{man label|&amp;quot;GEDCOM Extensions (GED2)&amp;quot;}}, press {{man button|Next}}. On the {{man label|Export options}} dialog select the relevant GEDCOM extension option:&lt;br /&gt;
* {{checkbox|0}} {{man label|Include witnesses}} - (unchecked by default) Exports witnesses associated with a family event&lt;br /&gt;
* {{checkbox|0}} {{man label|Include media}} - (unchecked by default) &lt;br /&gt;
* {{man label|Patronymic names:}}&lt;br /&gt;
** '''Don't change''' - (default) - Don't change Gramps export&lt;br /&gt;
** ''Add Patronymic name after Given name'' - Export Patronymic after given name, instead of adding it to the list of surnames&lt;br /&gt;
** ''Ignore Patronymic name'' - Ignore Patronymic names on export&lt;br /&gt;
* {{man label|Type of surname:}}&lt;br /&gt;
** '''Don't change''' - (default) - Don't change Gramps export&lt;br /&gt;
** ....&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then press {{man button|Next}}, and after selecting the save location and applying the export the data should be exported to a file with the extension &amp;quot;.ged2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you can change the extension from &amp;quot;.ged2&amp;quot; to &amp;quot;.ged&amp;quot; and treat as a normal GEDCOM file.&lt;br /&gt;
&lt;br /&gt;
{{man warn|Warning: There is no associated .ged2 importer in Gramps, so the {{man menu|export is one-way only (out of Gramps)}}.|It should be possible for someone to also write an associated GEDCOM importer to handle the extensions to bring them into Gramps as well.}}&lt;br /&gt;
&lt;br /&gt;
== Import GEDCOM Extensions ==&lt;br /&gt;
&lt;br /&gt;
There are no import extensions currently supported.&lt;br /&gt;
&lt;br /&gt;
See feature request:&lt;br /&gt;
* {{bug|10550}} '''Refactor Gramps GEDCOM import so as to support GEDCOM extension addons'''&lt;br /&gt;
&lt;br /&gt;
{{man note|Available for Gramps 4.x and higher.}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* The source code is available from [https://github.com/gramps-project/addons-source/blob/master/GedcomExtensions/GedcomExtensions.py addons-source/blob/master/GedcomExtensions/GedcomExtensions.py].&lt;br /&gt;
&lt;br /&gt;
* [[GEDCOM]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:GEDCOM_Extensions&amp;diff=131232</id>
		<title>Addon:GEDCOM Extensions</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:GEDCOM_Extensions&amp;diff=131232"/>
		<updated>2026-05-17T09:08:42Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: /* Usage */ defaults changed in newer versions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{languages|Addon:GEDCOM Extensions}}&lt;br /&gt;
{{Third-party addon}}&lt;br /&gt;
[[File:GEDCOMExtensions-GED2-ChooseTheOutputFormat-tab-ExportAssistant-52.png|right|450px|&amp;quot;GEDCOM Extensions (GED2)&amp;quot; option selected in Export_Assistant]]&lt;br /&gt;
&lt;br /&gt;
This Addon has a collection of unofficial GEDCOM extensions which extend [https://github.com/gramps-project/gramps/blob/458989f47aed00ed33331c8760f8049266f3495a/gramps/plugins/export/exportgedcom.py#L202 Gramps GedcomWriter] to include common non-compliant GEDCOM additions. &lt;br /&gt;
&lt;br /&gt;
If the feature you want is not listed below, then you can either add it yourself, or ask a developer to help you.&lt;br /&gt;
{{-}}&lt;br /&gt;
== Export GEDCOM Extensions ==&lt;br /&gt;
&lt;br /&gt;
The following GEDCOM Extensions are supported:&lt;br /&gt;
&lt;br /&gt;
* Include witnesses - Exports witnesses associated with a family event&lt;br /&gt;
* [https://github.com/gramps-project/addons-source/commit/813292310739252458de8d7d136649b8603facf4 Include media]&lt;br /&gt;
* [https://github.com/gramps-project/addons-source/pull/630 Patronymic names]&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
To install the addon ensure &amp;quot;Expert&amp;quot; or &amp;quot;All Audiences&amp;quot; is selected in the Addon Manager.&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
[[File:GEDCOMExtensions-GED2-ExportOptions-tab-ExportAssistant-52.png|right|450px|Checkboxs selected and &amp;quot;Patronymic names:&amp;quot; drop down list shown.]]&lt;br /&gt;
&lt;br /&gt;
To run the exporter, select {{man menu|Family Trees &amp;gt; Export..}}, press {{man button|Next}}, on the {{man label|Choose the output format}} dialog select {{man label|&amp;quot;GEDCOM Extensions (GED2)&amp;quot;}}, press {{man button|Next}}. On the {{man label|Export options}} dialog select the relevant GEDCOM extension option:&lt;br /&gt;
* {{checkbox|0}} {{man label|Include witnesses}} - (unchecked by default) Exports witnesses associated with a family event&lt;br /&gt;
* {{checkbox|0}} {{man label|Include media}} - (unchecked by default) &lt;br /&gt;
* {{man label|Patronymic names:}}&lt;br /&gt;
** '''Don't change''' - (default) - Don't change Gramps export&lt;br /&gt;
** ''Add Patronymic name after Given name'' - Export Patronymic after given name, instead of adding it to the list of surnames&lt;br /&gt;
** ''Ignore Patronymic name'' - Ignore Patronymic names on export&lt;br /&gt;
Then press {{man button|Next}}, and after selecting the save location and applying the export the data should be exported to a file with the extension &amp;quot;.ged2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you can change the extension from &amp;quot;.ged2&amp;quot; to &amp;quot;.ged&amp;quot; and treat as a normal GEDCOM file.&lt;br /&gt;
&lt;br /&gt;
{{man warn|Warning: There is no associated .ged2 importer in Gramps, so the {{man menu|export is one-way only (out of Gramps)}}.|It should be possible for someone to also write an associated GEDCOM importer to handle the extensions to bring them into Gramps as well.}}&lt;br /&gt;
&lt;br /&gt;
== Import GEDCOM Extensions ==&lt;br /&gt;
&lt;br /&gt;
There are no import extensions currently supported.&lt;br /&gt;
&lt;br /&gt;
See feature request:&lt;br /&gt;
* {{bug|10550}} '''Refactor Gramps GEDCOM import so as to support GEDCOM extension addons'''&lt;br /&gt;
&lt;br /&gt;
{{man note|Available for Gramps 4.x and higher.}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* The source code is available from [https://github.com/gramps-project/addons-source/blob/master/GedcomExtensions/GedcomExtensions.py addons-source/blob/master/GedcomExtensions/GedcomExtensions.py].&lt;br /&gt;
&lt;br /&gt;
* [[GEDCOM]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User_talk:Aviansid&amp;diff=130949</id>
		<title>User talk:Aviansid</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User_talk:Aviansid&amp;diff=130949"/>
		<updated>2026-05-07T23:14:47Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Gramps''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:Patsyblefebre|Patsy B Lefebre]] ([[User talk:Patsyblefebre|talk]]) 23:14, 7 May 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User_talk:Silvio&amp;diff=130322</id>
		<title>User talk:Silvio</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User_talk:Silvio&amp;diff=130322"/>
		<updated>2026-04-19T20:55:22Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Gramps''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:Patsyblefebre|Patsy B Lefebre]] ([[User talk:Patsyblefebre|talk]]) 20:55, 19 April 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User_talk:Pareng&amp;diff=130267</id>
		<title>User talk:Pareng</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User_talk:Pareng&amp;diff=130267"/>
		<updated>2026-04-07T22:33:22Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Gramps''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:Patsyblefebre|Patsy B Lefebre]] ([[User talk:Patsyblefebre|talk]]) 22:33, 7 April 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User_talk:Simasah&amp;diff=130266</id>
		<title>User talk:Simasah</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User_talk:Simasah&amp;diff=130266"/>
		<updated>2026-04-06T08:57:31Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Gramps''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:Patsyblefebre|Patsy B Lefebre]] ([[User talk:Patsyblefebre|talk]]) 08:57, 6 April 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User:Eduralph&amp;diff=130262</id>
		<title>User:Eduralph</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User:Eduralph&amp;diff=130262"/>
		<updated>2026-04-03T10:23:19Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Welcome and Thank you for your edits &amp;amp; updated tmg addon :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:User|E]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User:SteveY&amp;diff=130235</id>
		<title>User:SteveY</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User:SteveY&amp;diff=130235"/>
		<updated>2026-03-27T11:56:52Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Welcome and Thank you for your edit :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:User|S]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User_talk:Sozanska&amp;diff=130231</id>
		<title>User talk:Sozanska</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User_talk:Sozanska&amp;diff=130231"/>
		<updated>2026-03-25T04:59:29Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Gramps''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:Patsyblefebre|Patsy B Lefebre]] ([[User talk:Patsyblefebre|talk]]) 04:59, 25 March 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User_talk:Patsyblefebre/Template:AddonsX.x&amp;diff=130229</id>
		<title>User talk:Patsyblefebre/Template:AddonsX.x</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User_talk:Patsyblefebre/Template:AddonsX.x&amp;diff=130229"/>
		<updated>2026-03-23T23:19:03Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Automated list=&lt;br /&gt;
I seem to recall that this list was meant to be automated? my search for the message has not found it so far, do you know about this? [[User:Gioto|Gioto]] ([[User talk:Gioto|talk]]) 02:05, 19 July 2025 (UTC)&lt;br /&gt;
:Not sure? You can ask on the forum.. [[User:Patsyblefebre|Patsy B Lefebre]] ([[User talk:Patsyblefebre|talk]])&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User_talk:Patsyblefebre/Template:AddonsX.x&amp;diff=130228</id>
		<title>User talk:Patsyblefebre/Template:AddonsX.x</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User_talk:Patsyblefebre/Template:AddonsX.x&amp;diff=130228"/>
		<updated>2026-03-23T23:15:50Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: /* Author email addresses */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Looks good much better=&lt;br /&gt;
Welcome back.&lt;br /&gt;
* I suggest matching what the user sees in the addon manager for the &amp;quot;filters&amp;quot; and making the font white and background blue?&lt;br /&gt;
* Maybe if it exist add the icon used especially for the &amp;quot;Views&amp;quot;?&lt;br /&gt;
[[User:Gioto|Gioto]] ([[User talk:Gioto|talk]]) 23:37, 30 June 2025 (UTC)&lt;br /&gt;
&lt;br /&gt;
PS: I recall bamaustin mentioning adding the builtin plugins also, but that would mean the project &amp;quot;Gramps&amp;quot; would become &amp;quot;Gramps Addons&amp;quot; and builtins &amp;quot;Gramps&amp;quot;  ? probably a discussion for another time.&lt;br /&gt;
&lt;br /&gt;
::Ok thanks for the &amp;lt;span style=&amp;quot;color:#FFFFFF; background:#0000ff&amp;quot;&amp;gt;feedback&amp;lt;/span&amp;gt; :) [[User:Patsyblefebre|Patsy B Lefebre]] ([[User talk:Patsyblefebre|talk]])&lt;br /&gt;
&lt;br /&gt;
=Automated list=&lt;br /&gt;
I seem to recall that this list was meant to be automated? my search for the message has not found it so far, do you know about this? [[User:Gioto|Gioto]] ([[User talk:Gioto|talk]]) 02:05, 19 July 2025 (UTC)&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130209</id>
		<title>Addon:ArchiveAssist</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130209"/>
		<updated>2026-03-18T05:55:11Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Third-party plugin}}&lt;br /&gt;
&lt;br /&gt;
[[File:Archive-assist-gramplet-addon-default-detached-60.png|right|450px|Archive-assist-gramplet-addon-default-detached]]&lt;br /&gt;
The {{man label|Archive Assist}} Gramplet parses strings from Riksarkivet and ArkivDigital to create sources and citations.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Paste reference strings from ArkivDigital or Riksarkivet into the textbox of the gramplet and select the {{man button|Create Source &amp;amp; Citation}} button to automatically create a source and citation.&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
;Example string Riksarkivet:&lt;br /&gt;
&amp;quot;Åby kyrkoarkiv, Husförhörslängder, SE/VALA/00460/A I/8 (1833-1840), bildid: C0029371_00018, sida 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
;Example string ArkivDigital:&lt;br /&gt;
&amp;quot;Högsrum (H) AI:6 (1861-1871) Bild 186 / sid 179 (AID: v22513.b186.s179, NAD: SE/VALA/00161)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
* https://github.com/gramps-project/addons-source/pull/802&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [https://riksarkivet.se/en Riksarkivet] - Swedish National Archives.&lt;br /&gt;
* [https://www.arkivdigital.net/ ArkivDigital] - Sweden's largest and most extensive online archive of digitized original records for genealogists.&lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130208</id>
		<title>Addon:ArchiveAssist</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130208"/>
		<updated>2026-03-18T05:53:45Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Third-party plugin}}&lt;br /&gt;
&lt;br /&gt;
[[File:Archive-assist-gramplet-addon-default-detached-60.png|right|450px|Archive-assist-gramplet-addon-default-detached]]&lt;br /&gt;
The {{man label|Archive Assist}} Gramplet parses strings from Riksarkivet and ArkivDigital to create sources and citations.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Paste reference strings from ArkivDigital or Riksarkivet into the textbox of the gramplet to automatically create a source and citation.&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
;Example string Riksarkivet:&lt;br /&gt;
&amp;quot;Åby kyrkoarkiv, Husförhörslängder, SE/VALA/00460/A I/8 (1833-1840), bildid: C0029371_00018, sida 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
;Example string ArkivDigital:&lt;br /&gt;
&amp;quot;Högsrum (H) AI:6 (1861-1871) Bild 186 / sid 179 (AID: v22513.b186.s179, NAD: SE/VALA/00161)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
* https://github.com/gramps-project/addons-source/pull/802&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [https://riksarkivet.se/en Riksarkivet] - Swedish National Archives.&lt;br /&gt;
* [https://www.arkivdigital.net/ ArkivDigital] - Sweden's largest and most extensive online archive of digitized original records for genealogists.&lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130207</id>
		<title>Addon:ArchiveAssist</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130207"/>
		<updated>2026-03-18T05:53:05Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: /* External links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Third-party plugin}}&lt;br /&gt;
&lt;br /&gt;
[[File:Archive-assist-gramplet-addon-default-detached-60.png|right|450px|Archive-assist-gramplet-addon-default-detached]]&lt;br /&gt;
The {{man label|Archive Assist}} Gramplet parses strings from Riksarkivet and ArkivDigital to create sources and citations.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Paste reference strings from ArkivDigital or Riksarkivet into the textbox of the gramplet to automatically create a source and citation.&lt;br /&gt;
&lt;br /&gt;
;Example string Riksarkivet:&lt;br /&gt;
&amp;quot;Åby kyrkoarkiv, Husförhörslängder, SE/VALA/00460/A I/8 (1833-1840), bildid: C0029371_00018, sida 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
;Example string ArkivDigital:&lt;br /&gt;
&amp;quot;Högsrum (H) AI:6 (1861-1871) Bild 186 / sid 179 (AID: v22513.b186.s179, NAD: SE/VALA/00161)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
* https://github.com/gramps-project/addons-source/pull/802&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [https://riksarkivet.se/en Riksarkivet] - Swedish National Archives.&lt;br /&gt;
* [https://www.arkivdigital.net/ ArkivDigital] - Sweden's largest and most extensive online archive of digitized original records for genealogists.&lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130206</id>
		<title>Addon:ArchiveAssist</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130206"/>
		<updated>2026-03-18T05:52:43Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: /* External links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Third-party plugin}}&lt;br /&gt;
&lt;br /&gt;
[[File:Archive-assist-gramplet-addon-default-detached-60.png|right|450px|Archive-assist-gramplet-addon-default-detached]]&lt;br /&gt;
The {{man label|Archive Assist}} Gramplet parses strings from Riksarkivet and ArkivDigital to create sources and citations.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Paste reference strings from ArkivDigital or Riksarkivet into the textbox of the gramplet to automatically create a source and citation.&lt;br /&gt;
&lt;br /&gt;
;Example string Riksarkivet:&lt;br /&gt;
&amp;quot;Åby kyrkoarkiv, Husförhörslängder, SE/VALA/00460/A I/8 (1833-1840), bildid: C0029371_00018, sida 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
;Example string ArkivDigital:&lt;br /&gt;
&amp;quot;Högsrum (H) AI:6 (1861-1871) Bild 186 / sid 179 (AID: v22513.b186.s179, NAD: SE/VALA/00161)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
* https://github.com/gramps-project/addons-source/pull/802&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [https://riksarkivet.se/en Riksarkivet]&lt;br /&gt;
* [https://www.arkivdigital.net/ ArkivDigital] - Sweden's largest and most extensive online archive of digitized original records for genealogists.&lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130205</id>
		<title>Addon:ArchiveAssist</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130205"/>
		<updated>2026-03-18T05:52:12Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: /* External links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Third-party plugin}}&lt;br /&gt;
&lt;br /&gt;
[[File:Archive-assist-gramplet-addon-default-detached-60.png|right|450px|Archive-assist-gramplet-addon-default-detached]]&lt;br /&gt;
The {{man label|Archive Assist}} Gramplet parses strings from Riksarkivet and ArkivDigital to create sources and citations.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Paste reference strings from ArkivDigital or Riksarkivet into the textbox of the gramplet to automatically create a source and citation.&lt;br /&gt;
&lt;br /&gt;
;Example string Riksarkivet:&lt;br /&gt;
&amp;quot;Åby kyrkoarkiv, Husförhörslängder, SE/VALA/00460/A I/8 (1833-1840), bildid: C0029371_00018, sida 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
;Example string ArkivDigital:&lt;br /&gt;
&amp;quot;Högsrum (H) AI:6 (1861-1871) Bild 186 / sid 179 (AID: v22513.b186.s179, NAD: SE/VALA/00161)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
* https://github.com/gramps-project/addons-source/pull/802&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [https://riksarkivet.se/en Riksarkivet]&lt;br /&gt;
* [https://www.arkivdigital.net/ ArkivDigital]&lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130204</id>
		<title>Addon:ArchiveAssist</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130204"/>
		<updated>2026-03-18T05:51:49Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: /* External links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Third-party plugin}}&lt;br /&gt;
&lt;br /&gt;
[[File:Archive-assist-gramplet-addon-default-detached-60.png|right|450px|Archive-assist-gramplet-addon-default-detached]]&lt;br /&gt;
The {{man label|Archive Assist}} Gramplet parses strings from Riksarkivet and ArkivDigital to create sources and citations.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Paste reference strings from ArkivDigital or Riksarkivet into the textbox of the gramplet to automatically create a source and citation.&lt;br /&gt;
&lt;br /&gt;
;Example string Riksarkivet:&lt;br /&gt;
&amp;quot;Åby kyrkoarkiv, Husförhörslängder, SE/VALA/00460/A I/8 (1833-1840), bildid: C0029371_00018, sida 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
;Example string ArkivDigital:&lt;br /&gt;
&amp;quot;Högsrum (H) AI:6 (1861-1871) Bild 186 / sid 179 (AID: v22513.b186.s179, NAD: SE/VALA/00161)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
* https://github.com/gramps-project/addons-source/pull/802&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [https://riksarkivet.se/en Riksarkivet]&lt;br /&gt;
* ArkivDigital &lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130203</id>
		<title>Addon:ArchiveAssist</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130203"/>
		<updated>2026-03-18T05:51:25Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Third-party plugin}}&lt;br /&gt;
&lt;br /&gt;
[[File:Archive-assist-gramplet-addon-default-detached-60.png|right|450px|Archive-assist-gramplet-addon-default-detached]]&lt;br /&gt;
The {{man label|Archive Assist}} Gramplet parses strings from Riksarkivet and ArkivDigital to create sources and citations.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Paste reference strings from ArkivDigital or Riksarkivet into the textbox of the gramplet to automatically create a source and citation.&lt;br /&gt;
&lt;br /&gt;
;Example string Riksarkivet:&lt;br /&gt;
&amp;quot;Åby kyrkoarkiv, Husförhörslängder, SE/VALA/00460/A I/8 (1833-1840), bildid: C0029371_00018, sida 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
;Example string ArkivDigital:&lt;br /&gt;
&amp;quot;Högsrum (H) AI:6 (1861-1871) Bild 186 / sid 179 (AID: v22513.b186.s179, NAD: SE/VALA/00161)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
* https://github.com/gramps-project/addons-source/pull/802&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Riksarkivet &lt;br /&gt;
* ArkivDigital &lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130202</id>
		<title>Addon:ArchiveAssist</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130202"/>
		<updated>2026-03-18T05:50:32Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Third-party plugin}}&lt;br /&gt;
&lt;br /&gt;
[[File:Archive-assist-gramplet-addon-default-detached-60.png|right|450px|Archive-assist-gramplet-addon-default-detached]]&lt;br /&gt;
The {{man label|Archive Assist}} Gramplet parses strings from Riksarkivet and ArkivDigital to create sources and citations.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Paste reference strings from ArkivDigital or Riksarkivet into the textbox of the gramplet to automatically create a source and citation.&lt;br /&gt;
&lt;br /&gt;
;Example string Riksarkivet:&lt;br /&gt;
&amp;quot;Åby kyrkoarkiv, Husförhörslängder, SE/VALA/00460/A I/8 (1833-1840), bildid: C0029371_00018, sida 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
;Example string ArkivDigital:&lt;br /&gt;
&amp;quot;Högsrum (H) AI:6 (1861-1871) Bild 186 / sid 179 (AID: v22513.b186.s179, NAD: SE/VALA/00161)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
* https://github.com/gramps-project/addons-source/pull/802&lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130201</id>
		<title>Addon:ArchiveAssist</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130201"/>
		<updated>2026-03-18T05:49:42Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Third-party plugin}}&lt;br /&gt;
&lt;br /&gt;
[[File:Archive-assist-gramplet-addon-default-detached-60.png|right|450px|Archive-assist-gramplet-addon-default-detached]]&lt;br /&gt;
The Archive assist Gramplet parses strings from Riksarkivet and ArkivDigital to create sources and citations.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Paste reference strings from ArkivDigital or Riksarkivet into the textbox of the gramplet to automatically create a source and citation.&lt;br /&gt;
&lt;br /&gt;
;Example string Riksarkivet:&lt;br /&gt;
&amp;quot;Åby kyrkoarkiv, Husförhörslängder, SE/VALA/00460/A I/8 (1833-1840), bildid: C0029371_00018, sida 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
;Example string ArkivDigital:&lt;br /&gt;
&amp;quot;Högsrum (H) AI:6 (1861-1871) Bild 186 / sid 179 (AID: v22513.b186.s179, NAD: SE/VALA/00161)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
* https://github.com/gramps-project/addons-source/pull/802&lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Template:Addons6.0&amp;diff=130200</id>
		<title>Template:Addons6.0</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Template:Addons6.0&amp;diff=130200"/>
		<updated>2026-03-18T05:47:57Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Plugin / Documentation&lt;br /&gt;
! Type&lt;br /&gt;
! Image&lt;br /&gt;
! Description&lt;br /&gt;
! Use&lt;br /&gt;
! Rating (out of 4)&lt;br /&gt;
! Contact&lt;br /&gt;
! Download&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:AddRemoveTagTool|Add/Remove Tag Tool]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:AddRemoveTagTool-GeneralOptionsDialog-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;The Add/Remove Tag Tool allows you to add or remove one tag from a selected set of filtered objects e.g. people.  &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:matt.familienforschung@gmail.com Matthias Kemmer]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/RemoveTagTool.addon.tgz?raw=true RemoveTagTool.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:All Names Quickview|All Names of All People]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Quickview&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:AllNamesOfAllPeople-Quickview-addon-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Shows all names for all people&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:doug.blank@gmail.com Doug Blank]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/AllNamesQuickview.addon.tgz?raw=true AllNamesQuickview.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:AncestorsMap|Ancestors map]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;View&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:GeographyView-GeoAncestor-AncestorsMap-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A Geography category [[Gramps_Glossary#viewmode|View Mode]] which maps Event Places related to the Ancestors of the Home Person.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;1&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;Serge Noiraud&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/GeoAncestor.addon.tgz?raw=true GeoAncestor.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:ArchiveAssist|Archive Assist]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Archive-assist-gramplet-addon-default-detached-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Helps create sources by parsing references from Swedish ArkivDigital and Riksarkivet.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;2&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:help.ludwig@proton.me Ludwig Tiston]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[To come]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:AttachSourceTool|Attach Source]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:AttachSource-Tool-dialog-addon-Options-tab-default-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A tool to attach a source to a group of people.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;1&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:doug.blank@gmail.com Doug Blank]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/AttachSourceTool.addon.tgz?raw=true AttachSourceTool.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:AvatarGenerator|Avatar Generator Tool]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:AvatarGeneratorTool-Before-and-After-example.gif|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A tool that allows you to add and remove one or several images for a selected set of filtered people. &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:matt.familienforschung@gmail.com Matthias Kemmer]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/AvatarGenerator.addon.tgz?raw=true AvatarGenerator.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Biography Quickview|Biography]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Quickview&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Biography-Quickview-addon-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Shows a text biography based on the events of the selected Person&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;A. Guinane&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/BiographyQuickview.addon.tgz?raw=true BiographyQuickview.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:BirthdaysGramplet|Birthdays]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:BirthdaysGramplet-addon-example-detached-with-config-dialog-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Display the upcoming birthdays&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;1&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:peter017@gmail.com Peter Potrowl]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/BirthdaysGramplet.addon.tgz?raw=true BirthdaysGramplet.addon.tgz] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Calculate Estimated Dates|Calculate Estimated Dates]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:CalculateEstimatedDates-addon-Select-tab-results-example-60.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A tool to set estimated birth and death dates.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;2 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:doug.blank@gmail.com Doug Blank]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/CalculateEstimatedDates.addon.tgz?raw=true CalculateEstimatedDates.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:ChatWithTree|Chat with Tree]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Chatwithtree-examplechat.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Large Language Model chatbot to ask Gramps about your information in your tree.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:mellekoning@gmail.com Melle Koning]&amp;lt;br /&amp;gt;[https://github.com/MelleKoning/genealogychatbot/issues MelleKoning Github]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/ChatWithTree.addon.tgz?raw=true ChatWithTree.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Check Associations|Check Associations data]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Check-Associations-Associations-state-tool-example-results-60.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Checks the associations of people.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:romjerome@yahoo.fr Jérôme Rapinat]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/AssociationsTool.addon.tgz?raw=true AssociationsTool.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Gramplets_development#GUI_Interface|Clock]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:ClockGramplet-addon-dashboard-detached-example-60.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A sample Cairo clock gramplet.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Developer&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;1&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:doug.blank@gmail.com Doug Blank]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/ClockGramplet.addon.tgz?raw=true ClockGramplet.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:CombinedView|Combined]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;View&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:CombinedView-Relationships-tab-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A Relationships category [[Gramps_Glossary#viewmode|View Mode]] showing relationships and events for a person. Like the built-in [[Gramps_5.2_Wiki_Manual_-_Categories#Relationships_Category|Relationships View]] but on steroids.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;1&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;Nick Hall&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/CombinedView.addon.tgz?raw=true CombinedView.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Collections_Clipboard_Gramplet|Collections Clipboard]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:CollectionsClipboardGramplet-addon-with-context-menu-example-60.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Allows one to group items together for quick access.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;2&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:doug.blank@gmail.com Doug Blank]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/ClipboardGramplet.addon.tgz?raw=true ClipboardGramplet.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;Command Line Merge&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;N/A&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Merge primary object via the command line. (Note: Used by Gramps project to test its code you can see an example of how it used programmatically [https://github.com/gramps-project/gramps/blob/master/gramps/gen/merge/test/merge_ref_test.py here])&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Developer&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;Michiel D. Nauta&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/CliMerge.addon.tgz?raw=true CliMerge.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:D3 Ancestral and Descendant Charts|D3 Ancestral and Descendant Charts]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:D3-AncestralCollapsibleTree-WebReport-Addon-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Create ancestral/descendant web report based interactive D3 charts.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:matt.keenan@gmail.com Matt Keenan]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/D3Charts.addon.tgz?raw=true D3Charts.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Database Differences Report|Database Differences Report]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Database-differences-report-example-50.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Allows a mostly complete comparison between the current database and a Gramps XML file&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;2&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/Differences.addon.tgz?raw=true Differences.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:DataEntryGramplet|Data Entry Gramplet]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:DataEntryGramplet-addon-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Quick Data Entry for People data&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Expert user&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/DataEntryGramplet.addon.tgz?raw=true DataEntryGramplet.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:DateCalculator|Date Calculator]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:DateCalculatorGramplet-addon-default-52.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Allows you to do date math.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Normal user&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/DateCalculator.addon.tgz?raw=true DateCalculator.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Deep Connections Gramplet|Deep Connections Gramplet]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:DeepConnectionsGramplet-addon-results-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Finds deep relationships between home and active people&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/DeepConnectionsGramplet.addon.tgz?raw=true DeepConnectionsGramplet.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:DenominoViso|DenominoViso]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:DenominoViso-WebPage-Addon-ancestor-example-60.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Creates interactive graphical ancestor/descendant tree as a Web Report.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;Michiel D. Nauta&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/DenominoViso.addon.tgz?raw=true DenominoViso.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Descendant and Detailed Descendant Book Reports|Descendant Book&amp;lt;br /&amp;gt;and&amp;lt;br /&amp;gt;Detailed Descendant Book]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:DescendantBook-TextReports-addon-ReportOptions-tab-defaults-50.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Create a book of descendant or detailed descendant reports using a filter.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:matt.keenan@gmail.com Matt Keenan]&amp;lt;br&amp;gt;[mailto:giansalvo.gusinu+gramps2020@gmail.com Giansalvo Gusinu]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/DescendantBooks.addon.tgz?raw=true DescendantBooks.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Detailed Descendant Report With All Images|Detailed Descendant Report With All Images]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Detailed-Descendant-Report-With-All-Images-Report-Options-tab-default-51.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Produces a detailed descendant report with all images and optional todo list.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:jpchewe@mtu.net Jon Schewe]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/DetDescendantReport-images.addon.tgz?raw=true DetDescendantReport-images.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Descendant Count Gramplet|Descendant Count]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:DescendantCountGramplet-default-sort-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Gives a count of descendants for each person&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:doug.blank@gmail.com Doug Blank]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/DescendantCount.addon.tgz?raw=true DescendantCount.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:DescendantsLines|Descendants Lines]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:DescendantsLines_GalileoGenealogy.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Generates a graphical descendants tree using orthogonal edges and routing (&amp;quot;square edges&amp;quot;).&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[[User:Lcc]] ([mailto:lcc.mailaddress@gmail.com e-mail])&amp;lt;br&amp;gt;Adam Sampson&amp;lt;br&amp;gt;[mailto:giansalvo.gusinu+gramps2020@gmail.com Giansalvo Gusinu]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/DescendantsLines.addon.tgz?raw=true DescendantsLines.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:DescendantSpaceTree| Descendant Space Tree web report]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:DescendantSpaceTree-WebPage-Addon-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt; A Web Pages report with an interactive graphical Descendant &amp;quot;Space Tree&amp;quot; web page for efficient display and navigation, even with large families &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[https://gramps.discourse.group/t/descendantspacetree-addon-initial-development/7764 Tom Poindexter]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/DescendantSpaceTree.addon.tgz DescendantSpaceTree.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:DNAMatches|DNA Matches]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:DNAMatchesGramplet-addon-example-52.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Gramplet presents the users with a table of people whose DNA has a match with the currently selected person.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;Milan (a.k.a RampantSpirit)&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/DNAMAtches.addon.tgz?raw=true DNAMatches.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:DNASegmentMapGramplet|DNA Segment Map]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:DNA-SegmentMapGramplet-addon-RelationshipView-bottombar-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Gramplet showing a matching DNA segment map (attribute)&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;Nick Hall, Gary Griffin&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/DNA.addon.tgz?raw=true DNA.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:DoubleCousinsReport|Double Cousins]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:DoubleCousin-text-report-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Double Cousins is a text report which lists special multiplicities of cousins like double cousins.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:matt.familienforschung@gmail.com Matthias Kemmer]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/DoubleCousins.addon.tgz?raw=true DoubleCousins.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:DownloadMedia|Download media files from the internet]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:DownloadMediaTool-addon-dialog-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Download media from web pages&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;1&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/DownloadMedia.addon.tgz?raw=true DownloadMedia.addon.tgz] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:DynamicWeb report|Dynamic Web Report]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:DynamicWeb-tree1.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Exports the Family Tree as Web pages that are generated dynamically by client-side Javascript(no server required).&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:pierre.belissent@gmail.com Pierre Bélissent]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/DynamicWeb.addon.tgz?raw=true DynamicWeb.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Edit Image Exif Metadata|Edit Image Exif Metadata]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:EditExifMetadata-Gramplet-detached-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Gramplet to view, edit, and save image Exif metadata.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[https://gramps-project.org/blog/2012/07/in-memory-of-rob-g-healey/ Rob G. Healey], [mailto:paulr2787@gmail.com Paul Culley]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/EditExifMetadata/editexifmetadata.py?raw=true editexifmetadata.py]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:EventDescriptionEditor|Event Description Editor]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:EventDescriptionEditor-defaults-51.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A tool that allows you to find and replace a text string in the event description of multiple events.  &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:matt.familienforschung@gmail.com Matthias Kemmer]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/EventDescriptionEditor.addon.tgz?raw=true EventDescriptionEditor.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:ExportRaw|Export Raw]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Exporter&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:ExportRaw-option-addon-50.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A Gramps exporter that will dump your BSDDB database into a flat text version (.raw) of the Python objects.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Developer&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:doug.blank@gmail.com Doug Blank]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/ExportRaw.addon.tgz?raw=true ExportRaw.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:ExtendedAttributesGramplet|Extended Family Attributes Gramplet]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Addon:ExtendedAttributesGramplet|Extended Person Attributes Gramplet]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:ExtendedAttributesGramplet-Person-example-60.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Gramplet showing the attributes of a family or person.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;Nick Hall&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/ExtendedAttributes.addon.tgz?raw=true ExtendedAttributes.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Extract Place Data from a Place Title|Extract Place Data from a Place Title]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:ExtractPlaceDataFromAPlaceTitle-ExtractPlaceData-result-window-example-51.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Attempts to extract city and state/province from a place title&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/ExtractCity.addon.tgz?raw=true ExtractCity.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:FamilyRelationship|Family Relationship Tool]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:FamilyRelationshipTool-Options-tab-defaults-60.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A tool that allows editing family relationships of multiple families. &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:matt.familienforschung@gmail.com Matthias Kemmer]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/FamilyRelationshipTool.addon.tgz?raw=true FamilyRelationshipTool.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Family Sheet|Family Sheet]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:FamilySheet-TextReports-Addon-example-50.png|center|150px|Sample Family Sheet]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Generates a form with all information about a person, its spouses and its children. (Requires: PIL (Python Imaging Library).)&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;Reinhard Müller&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/FamilySheet.addon.tgz?raw=true FamilySheet.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Family Tree|Family Tree]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:FamilyTree-GraphicalReports-Addon-example-50.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Generates a graphical tree of a family with its ancestors and/or descendants.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;Reinhard Müller&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/FamilyTree.addon.tgz?raw=true FamilyTree.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Fix Capitalization of Given Names|Fix Capitalization of Given Names]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:FixCapitalizationOfGivenNames-Addon-dialog-example-50.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Fix Capitalization of Given Names&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;2&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:don@gramps-project.org Donald N. Allingham]&amp;lt;br&amp;gt;[mailto:doug.blank@gmail.com Doug Blank]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/ChangeGivenNames.addon.tgz?raw=true ChangeGivenNames.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Forms_Gramplet|Forms Gramplet]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Form Selector-50.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Forms gramplet that allows users to create and edit structured source data in a single form, such as birth, marriage and death certificates and parish register entries.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;1&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:nick__hall@hotmail.com Nick Hall]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/Form.addon.tgz?raw=true Form.addon.tgz] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:GeneanetForGramps|Geneanet import for Gramps]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:GeneanetForGramps-addon-default-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A tool that allows you to import Geneanet ascendants and descendants of a selected person into Gramps. Requires both the &amp;lt;code&amp;gt;Request&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lxml&amp;lt;/code&amp;gt; prerequisites to work.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:bruno@victoria.frmug.org Bruno Cornec]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/GeneanetForGramps.addon.tgz?raw=true GeneanetForGramps.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:GetGOV|GetGOV]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:GetGOV-Gramplet-addon-detached-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Download places from the [http://gov.genealogy.net/search/index GOV genealogical gazetteer].&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Expert user&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;2&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:genealogy@garygriffin.net Gary Griffin]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/GetGOV.addon.tgz?raw=true GetGOV.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:MapService-GoogleEarth|GoogleEarth]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Mapservice&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:GoogleEarth-mapservices-selection-dropdown-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Show places with GoogleEarth..&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:peter.talken@telia.com Peter Landgren]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/GoogleEarthWriteKML.addon.tgz?raw=true GoogleEarthWriteKML.addon.tgz] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:GEDCOM Extensions|GEDCOM Extensions (GED2)]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Exporter&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:GEDCOMExtensions-GED2-ChooseTheOutputFormat-tab-ExportAssistant-52.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Collection of unofficial GEDCOM extensions which extend Gramps GedcomWriter to include common non-compliant GEDCOM additions..&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Expert user&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;2&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:doug.blank@gmail.com Doug Blank]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/GedcomExtensions.addon.tgz?raw=true GedcomExtensions.addon.tgz]&lt;br /&gt;
|- &lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Generic DB Access lib|Generic DB Access lib]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Library&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;N/A&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;The Generic DB Access lib (AKA libaccess) is an experimental library that provides generic access to the database and the gen.lib interface.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Developer&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;1&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:doug.blank@gmail.com Doug Blank]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/libaccess.addon.tgz?raw=true libaccess.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Gramps Web Sync|Gramps Web Sync]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:GrampWebSync-tool-addon-Introduction-tab-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Gramps Web Sync tool is an addon for Gramps that allows you to synchronize your Gramps database on your desktop computer with Gramps Web, including media files. &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Intermediate user&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;DavidMStraub&amp;lt;br /&amp;gt;[https://github.com/DavidMStraub/gramps-web-sync/issues gramps-web-sync issues]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/GrampsWebSync.addon.tgz?raw=true GrampsWebSync.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Graph View|Graph View]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;View&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Graph-View-addon-example-60.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A Charts category [[Gramps_Glossary#viewmode|View Mode]] that can display the active persons ancestor tree and descendant tree in a Graph. '''Requires PyGoocanvas and Goocanvas.'''&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:gary.burton@zen.co.uk Gary Burton]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/GraphView.addon.tgz?raw=true GraphView.addon.tgz]&lt;br /&gt;
|- &lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:HeadlineNewsGramplet|Headline News]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:HeadlineNewsGramplet--detached-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Shows Gramps breaking news, once a day. &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/HeadlineNewsGramplet.addon.tgz?raw=true HeadlineNewsGramplet.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:HeatmapWebReport|Heatmap]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Heatmap webreport 51.jpeg|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Create a heatmap web report.  &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:matt.familienforschung@gmail.com Matthias Kemmer]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/Heatmap.addon.tgz?raw=true Heatmap.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Historical Context|Historical Context]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:HistoricalContext-gramplet-detached-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Lists relevant historical events during the lifetime of a Person&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;Kaj Mikkelsen&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/HistContext.addon.tgz?raw=true HistContext.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:House Timeline Gramplet|House Timeline]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:HouseTimelineGramplet-detached-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Lists the Residents of an Address by Timeline&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/tree/master/gramps60/download/HouseTimelineGramplet.addon.tgz?raw=true HouseTimelineGramplet.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:HtreePedigreeView|H-Tree Pedigree]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;View&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:HtreePedigreeView-addon-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A Graph category [[Gramps_Glossary#viewmode|View Mode]] with an H-tree based layout that can be used to display ancestral trees compactly.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/HtreePedigreeView.addon.tgz?raw=true HtreePedigreeView.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Import Merge Tool|Import and Merge tool]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:ImportMerge.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Compares a Gramps XML database with the current one, and allows merging of the differences.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:paulr2787@gmail.com Paul Culley]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/ImportMerge.addon.tgz?raw=true ImportMerge.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Import_Text_Gramplet|Import Text]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:ImportGramplet-Addon-CSV-example-50.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Interface to import text directly in the following formats: CSV (spreadsheet input and multiple delimiter dialects), Gramps XML, vCard 3.0.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Developers&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;2&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:doug.blank@gmail.com Doug Blank]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/ImportGramplet.addon.tgz?raw=true ImportGramplet.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:InformationGraph|Information Graph]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;N/A&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Generate detailed GraphViz graphs by spidering over the database.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;0&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:rah@bash.sh Bob Ham]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[http://pkl.net/~node/software/GVInformationGraph.py GVInformationGraph.py]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Interactive Family Tree|Interactive Family Tree]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Addon-Interactive-Family-Tree-Topola-example-51.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Opens an interactive tree in the browser. This tool uses the [https://pewu.github.io/topola-viewer/ Topola Genealogy Viewer] to display the family tree.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[https://github.com/PeWu/topola-viewer/issues GitHub issue tracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/Topola.addon.tgz?raw=true Topola.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:JSON_Export_Import|JSON Export&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;JSON Import]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Importer/Exporter&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:JSON-Export-addon-52.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A Gramps exporter and importer that will export/import your Family Tree as a JSON file.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Expert users&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:doug.blank@gmail.com Doug Blank]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/JSON.addon.tgz?raw=true JSON.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:LastChange|Last Change]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet and Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:LatestChangesGramplet-addon-example-with-context-menu-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A gramplet and report to display the last ten records changed in the open family tree.  The gramplet only displays persons, while the report can display changed families, places, and events too.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;1&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:jmodule@friant.org Jakim Friant]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/LastChange.addon.tgz?raw=true LastChange.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Life Line Chart View|Life Line Ancestor Chart&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Life Line Descendant Chart]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;View&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:LifeLineChartViewScreenshot1-51.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A Chart category [[Gramps_Glossary#viewmode|View Mode]] which shows individuals as lines in an ancestor or descendant chart along a time span.  Requires both the &amp;lt;code&amp;gt;life_line_chart&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;svgwrite&amp;lt;/code&amp;gt; prerequisites to work. &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[[User:CWSchulze|CWSchulze]]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/LifeLineChartView.addon.tgz?raw=true LifeLineChartView.addon.tgz]&lt;br /&gt;
|- &lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Lines of Descendency Report|Lines of Descendency Report]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Lines-of-descendency.jpeg|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Prints out all descendency lines from a given ancestor to a given descendant in text.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;2.5&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[[User:Lcc]] ([mailto:lcc.mailaddress@gmail.com e-mail])&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/LinesOfDescendency.addon.tgz?raw=true LinesOfDescendency.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;Liste éclair&amp;lt;br /&amp;gt;([[Addon:TinyTafel|Tiny Tafel]])&amp;lt;br /&amp;gt;&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:TinyTafel-ReportOptions-filtered-51.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Provides a compact way of describing the main surnames found in a family genealogy, which can be read by humans and matched by computers using a Tafel Matching System. &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;Eric doutreleau&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/Query.addon.tgz?raw=true ListeEclair.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:MediaBrowserGramplet|Media Browser]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:MediaBrowserGramplet-detached-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Display shows details of a person linked media objects.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[https://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/MediaBrowser.addon.tgz?raw=true MediaBrowser.addon.tgz] &lt;br /&gt;
|- &lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:MediaReport|Media Report]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Media Report Example.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A text report for images, which allows custom headings and custom notes as well as image data like notes, citations, tags, attributes and people references.  &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:matt.familienforschung@gmail.com Matthias Kemmer]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/MediaReport.addon.tgz?raw=true MediaReport.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Media Verify Tool|Media Verify]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:MediaVerifyTool-default-51.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Verify a one-to-one relationship between media objects and files in the media directory. The main purpose of the tool is to locate files that have been moved and fix the paths. &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/MediaVerify.addon.tgz?raw=true MediaVerify.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:MediaMerge|Merge Media]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:MediaMerge-51.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Searches for Media entries that point to the same media file and merges them together. &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:paulr2787@gmail.com Paul Culley]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/MediaMerge.addon.tgz?raw=true MediaMerge.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:MongoDB|MongoDB]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Database&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;N/A&amp;lt;!--[[File:libaccess.jpg|center|150px]]--&amp;gt;&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;MongoDB database backend support. For Experts only! This is an Experimental Unreleased addon.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Developer&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;2 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/MongoDB.addon.tgz?raw=true MongoDB.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:NetworkChart|Network Chart]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Shakespeare_network_1_dynamic_url.svg|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Generate a single graph showing connectivity between individuals as a web report.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Expert user&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:familynetworkchart@gmail.com Mark B.]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/NetworkChart.addon.tgz?raw=true NetworkChart.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:NoteCleanupTool|Note Cleanup]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:NoteCleanupTool-example-60-en.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A tool to clean up html and convert to Styled Text in notes.  Also converts Web links to Styled text.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:paulr2787@gmail.com Paul Culley]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/NoteCleanup.addon.tgz?raw=true NoteCleanup.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:NoteGramplet|Note Gramplet]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:NoteGramplet-addon-example-50.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A data entry gramplet for notes.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:doug.blank@gmail.com Doug Blank]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/NoteGramplet.addon.tgz?raw=true NoteGramplet.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:NumberOfAncestorsQuickView|Number of ancestors]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Quickview&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:NumberOfAncestors-QuickView-example-51.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A quickview similar to the [[Gramps_5.2_Wiki_Manual_-_Reports_-_part_6#Number_of_Ancestors_Report|Number of Ancestors text report]].&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:matt.familienforschung@gmail.com Matthias Kemmer]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/NumberOfAncestorsQuickview.addon.tgz?raw=true NumberOfAncestorsQuickview.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Number of Descendants Quickview|Number of descendants]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Quickview&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:NumberOfDescendants-QuickView-Addon-example-50.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Shows the number of descendants of the current active person&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;Reinhard Müller&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/NumberOfDescendantsQuickview.addon.tgz?raw=true NumberOfDescendantsQuickview.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:ParticipantsGramplet|Participants]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:ParticipantsGramplet-detached-example-51.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Display the participants in an event.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[https://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/Participants.addon.tgz?raw=true Participants.addon.tgz] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:PedigreeChart|Pedigree Chart]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:PedigreeChart-Addon-example-50.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A version of the classic pedigree chart that is suitable for printing. (Can optionally use - numpy if installed)&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;1&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:jmodule@friant.org Jakim Friant]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/PedigreeChart.addon.tgz?raw=true PedigreeChart.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:PersonEverything Report| PersonEverything Report]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:PersonEverything-example-html-51.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Show absolutely everything about one person, including all events, notes, citations, sources, attributes, media and the family information about the families they are involved in.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/PersonEverything.addon.tgz?raw=true PersonEverything.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Photo Tagging Gramplet|Photo Tagging]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Photo-Tagging-example-51.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Enables tagging people in photographs, i.e. associating regions of images with Gramps persons. (Requires: OpenCV(for automatic face detection)&amp;amp; Numpy )&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/PhotoTaggingGramplet.addon.tgz?raw=true PhotoTaggingGramplet.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:PlaceCoordinatesGramplet|Place and Coordinates]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:SearchPlace.gif|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Gramplet simplifies setting the coordinates of a place; packaged with an  &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:c.w.schulze@gmail.com Christian Schulze]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/PlaceCoordinateGeoView.py?raw=true PlaceCoordinateGeoView.py]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:PlaceCoordinatesGramplet#Additional_geography_view_with_a_context_menu|Place Coordinate Gramplet view]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;View&amp;lt;br /&amp;gt;&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:MapClick4.gif|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;additional Geography category [[Gramps_Glossary#viewmode|View Mode]] packaged with the [[Addon:PlaceCoordinatesGramplet|Place and Coordinates]] Gramplet simplifies setting coordinates interactively.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:c.w.schulze@gmail.com Christian Schulze]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/PlaceCoordinateGeoView.py?raw=true PlaceCoordinateGeoView.py]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:PlaceCleanupGramplet|Place Cleanup]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:PlaceCleanupMain.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Place Cleanup Gramplet assists in merging places, as well as completing places from the GeoNames web database.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:paulr2787@gmail.com Paul Culley]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/PlaceCleanup.addon.tgz?raw=true PlaceCleanup.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Place completion tool|PlaceCompletion]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:PlaceCompletion-Tool-Addon-50.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A tool to fill in places.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/PlaceCompletion.addon.tgz?raw=true PlaceCompletion.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:PlaceUpdate Gramplet|PlaceUpdate]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:PlaceUpdate-Gramplet-Addon-103.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Gramplet to manipulate multiple places.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;Kari Kujansuu&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/PlaceUpdate.addon.tgz?raw=true  PlaceUpdate.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Plugin Manager|Plugin Manager Enhanced]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Plugin lib&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:PlugInManager-addon-example-50.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A Plugin manager with additional capabilities&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:paulr2787@gmail.com Paul Culley]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/PluginManager.addon.tgz?raw=true PluginManager.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:PostgreSQL|PostgreSQL]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Database&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Postgresql-addon-login-dialog-52.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;PostgreSQL database backend support.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Expert User&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;2 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/PostgreSQL.addon.tgz?raw=true PostgreSQL.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Prerequisites Checker Gramplet|Prerequisites Checker]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:PrerequisitesCheckerGramplet-Addon-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Diagnostic tool to help work out if users have the required prerequisites installed as well as the latest version of Gramps.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Expert user&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;1&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/PrerequisitesCheckerGramplet.addon.tgz?raw=true PrerequisitesCheckerGramplet.addon.tgz] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Python Shell Gramplet|Python Shell]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:PythonShellGramplet-example-60.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Interactive Python Shell&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Developer&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/PythonGramplet.addon.tgz?raw=true PythonGramplet.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;Overview Gramplet&amp;lt;br&amp;gt;[[Addon:Family Overview|Family]]&amp;lt;br&amp;gt;[[Addon:Person Overview|Person]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:FamilyOverview-gramplet-addon-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Person and Family Overview gramplets shows a summary of all events for a person or family.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;1&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;Nick Hall&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/Overview.addon.tgz?raw=true Overview.addon.tgz] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:QueryGramplet|Query Gramplet]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet and Quickview&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:QueryGramplet-default-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A SQL-like query system.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;1&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:doug.blank@gmail.com Doug Blank]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/Query.addon.tgz?raw=true Query.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Quilt Chart|Quilt Chart]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;View&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:QuiltView-addon-example-60.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A Graph category [[Gramps_Glossary#viewmode|View Mode]] that presents your family tree in the form of a grid.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Expert users&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;Serge Noiraud, Nick Hall&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/QuiltView.addon.tgz?raw=true QuiltView.addon.tgz]&lt;br /&gt;
|- &lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:RelatedRelativesGramplet|Related Relatives]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:RelatedRelativesGramplet-addon-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Display all persons in the database with a relation to a relative.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;1&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:heinzbrinker@yahoo.de Heinz Brinker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/RelatedRelativesGramplet.addon.tgz?raw=true RelatedRelativesGramplet.addon.tgz] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:RepositoriesReport|Repositories Report]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:RepositoriesReport.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A set of Text reports to list repositories and their related sources information, useful when going to a repository (like an archive). &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:romjerome@yahoo.fr Jérôme Rapinat]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/RepositoriesReport.addon.tgz?raw=true RepositoriesReport.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:RestartWhereYouWereLastWorking|Restart where you were last working]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Library&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;N/A&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;This addon causes Gramps to restart on the same view and object where Gramps was previously closed. &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:paulr2787@gmail.com Paul Culley]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/RestoreHist.addon.tgz?raw=true RestoreHist.addon.tgz]&lt;br /&gt;
|- &lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:SetAttributeTool|Set Attribute]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:SetAttributeTool-addon-Options-tab-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A tool for setting attributes and their values on people.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;2&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:doug.blank@gmail.com Doug Blank]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/SetAttributeTool.addon.tgz?raw=true SetAttributeTool.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:SetPrivacyTool|Set Privacy Tool]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:SetPrivacyTool-51.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;The Set Privacy Tool allows you to manage privacy status of people, events and media &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:matt.familienforschung@gmail.com Matthias Kemmer]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/SetPrivacyTool.addon.tgz?raw=true SetPrivacyTool.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:BirthOrderTool|Sort Children in Birth order]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:SortChildrenInBirthOrderTool-addon-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Sort children in families in their birth order&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:paulr2787@gmail.com Paul Culley]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/BirthOrder.addon.tgz?raw=true BirthOrder.addon.tgz] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:SourcesCitationsReport|Sources and Citations Report]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:SourcesCitationsReport-ReportOptions-tab-defaults-51.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A text report for source and citations with notes.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[https://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/SourcesCitationsReport.addon.tgz?raw=true SourcesCitationsReport.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:SQLite Export Import|SQLite Export&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;SQLite Import]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Importer/Exporter&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:SQLite Export addon 51.png|center|150px]] &lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A Gramps exporter and importer that will export/import your Family Tree as a fully-relational SQLite database.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Expert users&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:doug.blank@gmail.com Doug Blank]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/Sqlite.addon.tgz?raw=true Sqlite.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:SyncAssociation|Sync Associations]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;N/A&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Add reciprocal Associations if missing.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;2&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:genealogy@garygriffin.net Gary Griffin]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/SyncAssociations.addon.tgz?raw=true SyncAssociations.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:ThemePreferences|Theme preferences]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Settings&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Preferences-addon-Themes-tab-default-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;An addition to Preferences for simple Theme and Font adjustment.  Especially useful for Windows users.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:paulr2787@gmail.com Paul Culley]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/Themes.addon.tgz?raw=true Themes.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:This Day In Family History|This Day in Family History]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:ThisDayInFamilyHistoryGramplet-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Display the upcoming a concise report of the user defined list of events that happened on this day and month. &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;1&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;Stephen Adams&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/ThisDayInFamilyHistory.addon.tgz?raw=true ThisDayInFamilyHistory.addon.tgz] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:ThumbnailGenerator|Thumbnail Generator]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:ThumbnailGeneratorTool-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Generates thumbnails for media files.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:nick__hall@hotmail.com Nick Hall]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/ThumbnailGenerator.addon.tgz?raw=true ThumbnailGenerator.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Timeline Quickview|Timeline]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Quickview&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Timeline-QuickView-Addon-example-50.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Shows timeline of events in immediate family members' lives&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4 &lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:doug.blank@gmail.com Doug Blank]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/TimelineQuickview.addon.tgz?raw=true TimelineQuickview.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:TimelinePedigreeView|Timeline Pedigree]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;View&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:TimelinePedigreeView-Addon-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A Graph category [[Gramps_Glossary#viewmode|View Mode]] showing Pedigree timeline and relationships.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:doug.blank@gmail.com Doug Blank]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/TimelinePedigreeView.addon.tgz?raw=true TimelinePedigreeView.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Timeline Pedigree Report|Timeline Pedigree Report]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:TimePedigreeHTML-Addon-example-52.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A Web Pages report which creates a webpage showing a chart of a Person and their descendants arranged vertically based on birth date.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:gramps@ur-ahn.de Manuela Kugel]&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/TimePedigreeHTML.addon.tgz?raw=true TimePedigreeHTML.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:ToDoReport|Todo Report]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Addon-TodoReport-report-example-50.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Tag notes as ToDo (or anything else) and you can generate a report with the notes and the records they are attached to.  Another way of maintaining a to-do list within Gramps.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;1&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:jmodule@friant.org Jakim Friant]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/ToDoReport.addon.tgz?raw=true ToDoReport.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:GenealogyTree|Tree Reports:]]&lt;br /&gt;
*Ancestor Tree&amp;lt;br /&amp;gt;&lt;br /&gt;
*Descendant Tree&amp;lt;br /&amp;gt;&lt;br /&gt;
*Grandparent Tree&amp;lt;br /&amp;gt;&lt;br /&gt;
*Sandclock Tree&amp;lt;br /&amp;gt;&lt;br /&gt;
*Sandclock Tree for a Family&amp;lt;br /&amp;gt;&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Report&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:GenealogyTree-Addon-AncestorTree-example-50.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A group of 5 Tree reports that use LaTeX genealogytree (the Pedigree and genealogical tree diagrams package) to create professional looking trees for the active person. Four report are available. '''Requires: texlive/texlive-pictures and texlive-fontsextra'''&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;Developer&amp;lt;br /&amp;gt;Expert user&amp;lt;br /&amp;gt;Intermediate user&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;3&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;Nick Hall&amp;lt;br /&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/GenealogyTree.addon.tgz?raw=true GenealogyTree.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Types Cleanup Tool|Type Cleanup]]&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Tool&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:TypesCleanup-Tool-Options-dialog-addon-example-51.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;A tool to Remove unneeded custom Types.&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[mailto:paulr2787@gmail.com  Paul Culley]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/TypeCleanup.addon.tgz?raw=true TypeCleanup.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:Web_Connect_Pack|Web Connect Pack]]&amp;lt;br /&amp;gt;DE Web Connect Pack&amp;lt;br /&amp;gt;FR Web Connect Pack&amp;lt;br /&amp;gt;NL Web Connect Pack&amp;lt;br /&amp;gt;RU Web Connect Pack&amp;lt;br /&amp;gt;SV Web Connect Pack&amp;lt;br /&amp;gt;UA Web Connect Pack&amp;lt;br /&amp;gt;UK Web Connect Pack&amp;lt;br /&amp;gt;US Web Connect Pack&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Library&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:Web-connect-pack-US-menu-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Collection of Web sites for various countries (DE/FR/SV/UA/UK/US) Only install the country you need. (* Requires libwebconnect)&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;[http://gramps-project.org/bugs/my_view_page.php Gramps Bugtracker]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;'''[https://github.com/gramps-project/addons/blob/master/gramps60/download/libwebconnect.addon.tgz?raw=true libwebconnect.addon.tgz]'''&amp;lt;br&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/DEWebConnectPack.addon.tgz?raw=true DEWebConnectPack.addon.tgz]&amp;lt;br&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/FRWebConnectPack.addon.tgz?raw=true FRWebConnectPack.addon.tgz]&amp;lt;br&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/SVWebConnectPack.addon.tgz?raw=true SVWebConnectPack.addon.tgz]&amp;lt;br&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/UAWebConnectPack.addon.tgz?raw=true UAWebConnectPack.addon.tgz]&amp;lt;br&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/UKWebConnectPack.addon.tgz?raw=true UKWebConnectPack.addon.tgz]&amp;lt;br&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/USWebConnectPack.addon.tgz?raw=true USWebConnectPack.addon.tgz]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;[[Addon:WebSearch|WebSearch]]&lt;br /&gt;
*People&amp;lt;br /&amp;gt;&lt;br /&gt;
*Families&amp;lt;br /&amp;gt;&lt;br /&gt;
*Places&amp;lt;br /&amp;gt;&lt;br /&gt;
*Sources&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;Gramplet&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;[[File:WebSearchGramplet-Addon-detached-example-60.png|center|150px]]&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;Customized queries for online services based on the active Person, Place, Family, or Source record. Unique ID lookups, QR codes generation, and AI search support.  &lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;All&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;4&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;Yurii Liubymyi&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;[https://github.com/jurchello/WebSearch/issues WebSearch Issues (GitHub)]&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;[https://github.com/gramps-project/addons/blob/master/gramps60/download/WebSearch.addon.tgz?raw=true WebSearch.addon.tgz]&lt;br /&gt;
|-&amp;lt;!-- Copy this section and list your Addon --&amp;gt;&lt;br /&gt;
|&amp;lt;!-- Plugin / Documentation --&amp;gt;&lt;br /&gt;
|&amp;lt;!-- Type --&amp;gt;&lt;br /&gt;
|&amp;lt;!-- Image --&amp;gt;&lt;br /&gt;
|&amp;lt;!-- Description --&amp;gt;&lt;br /&gt;
|&amp;lt;!-- Use --&amp;gt;&lt;br /&gt;
|&amp;lt;!-- Rating (out of 4) --&amp;gt;&lt;br /&gt;
|&amp;lt;!-- Contact --&amp;gt;&lt;br /&gt;
|&amp;lt;!-- Download --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;br /&gt;
[[Category:Gramplets|*]]&lt;br /&gt;
[[Category:Tools|*]]&lt;br /&gt;
[[Category:Views|*]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130199</id>
		<title>Addon:ArchiveAssist</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130199"/>
		<updated>2026-03-18T05:47:23Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Third-party plugin}}&lt;br /&gt;
&lt;br /&gt;
[[File:Archive-assist-gramplet-addon-default-detached-60.png|right|450px|Archive-assist-gramplet-addon-default-detached]]&lt;br /&gt;
Parses strings from Riksarkivet and ArkivDigital to create sources and citations.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Paste reference strings from ArkivDigital or Riksarkivet into the textbox of the gramplet to automatically create a source and citation.&lt;br /&gt;
&lt;br /&gt;
;Example string Riksarkivet:&lt;br /&gt;
&amp;quot;Åby kyrkoarkiv, Husförhörslängder, SE/VALA/00460/A I/8 (1833-1840), bildid: C0029371_00018, sida 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
;Example string ArkivDigital:&lt;br /&gt;
&amp;quot;Högsrum (H) AI:6 (1861-1871) Bild 186 / sid 179 (AID: v22513.b186.s179, NAD: SE/VALA/00161)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
* https://github.com/gramps-project/addons-source/pull/802&lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=File:Archive-assist-gramplet-addon-default-detached-60.png&amp;diff=130197</id>
		<title>File:Archive-assist-gramplet-addon-default-detached-60.png</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=File:Archive-assist-gramplet-addon-default-detached-60.png&amp;diff=130197"/>
		<updated>2026-03-18T05:46:49Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Patsyblefebre moved page File:Archiveassist.png to File:Archive-assist-gramplet-addon-default-detached-60.png: fix spelling mistake in name and add version etc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Image of archive assist gramplet&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=File:Archive-assist-gramplet-addon-default-detached-60.png&amp;diff=130196</id>
		<title>File:Archive-assist-gramplet-addon-default-detached-60.png</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=File:Archive-assist-gramplet-addon-default-detached-60.png&amp;diff=130196"/>
		<updated>2026-03-18T05:45:57Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Patsyblefebre uploaded a new version of File:Archiveassist.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Image of archive assist gramplet&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130195</id>
		<title>Addon:ArchiveAssist</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=130195"/>
		<updated>2026-03-18T05:38:26Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: released 2026/02/28&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Third-party plugin}}&lt;br /&gt;
&lt;br /&gt;
[[File:Archiveassist.png|right|450px]]&lt;br /&gt;
Parses strings from Riksarkivet and ArkivDigital to create sources and citations.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Paste reference strings from ArkivDigital or Riksarkivet into the textbox of the gramplet to automatically create a source and citation.&lt;br /&gt;
&lt;br /&gt;
;Example string Riksarkivet:&lt;br /&gt;
&amp;quot;Åby kyrkoarkiv, Husförhörslängder, SE/VALA/00460/A I/8 (1833-1840), bildid: C0029371_00018, sida 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
;Example string ArkivDigital:&lt;br /&gt;
&amp;quot;Högsrum (H) AI:6 (1861-1871) Bild 186 / sid 179 (AID: v22513.b186.s179, NAD: SE/VALA/00161)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
* https://github.com/gramps-project/addons-source/pull/802&lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Latin_words_and_expressions/O/nl&amp;diff=130096</id>
		<title>Latin words and expressions/O/nl</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Latin_words_and_expressions/O/nl&amp;diff=130096"/>
		<updated>2026-03-11T03:03:33Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT[[Nl:Latijnse woorden en expressies/O]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Latin_words_and_expressions/nl&amp;diff=130095</id>
		<title>Latin words and expressions/nl</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Latin_words_and_expressions/nl&amp;diff=130095"/>
		<updated>2026-03-11T03:02:57Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT[[nl:Latijnse woorden en expressies]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=129836</id>
		<title>Addon:ArchiveAssist</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=129836"/>
		<updated>2026-02-21T02:08:48Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Third-party plugin}}&lt;br /&gt;
&lt;br /&gt;
{{man warn|Unreleased addon}}&lt;br /&gt;
&lt;br /&gt;
Parses strings from Riksarkivet and ArkivDigital to create sources and citations.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Paste reference strings from ArkivDigital or Riksarkivet into the textbox of the gramplet to automatically create a source and citation.&lt;br /&gt;
&lt;br /&gt;
;Example string Riksarkivet:&lt;br /&gt;
&amp;quot;Åby kyrkoarkiv, Husförhörslängder, SE/VALA/00460/A I/8 (1833-1840), bildid: C0029371_00018, sida 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
;Example string ArkivDigital:&lt;br /&gt;
&amp;quot;Högsrum (H) AI:6 (1861-1871) Bild 186 / sid 179 (AID: v22513.b186.s179, NAD: SE/VALA/00161)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
* https://github.com/gramps-project/addons-source/pull/802&lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=129835</id>
		<title>Addon:ArchiveAssist</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=129835"/>
		<updated>2026-02-21T02:08:26Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Third-party plugin}}&lt;br /&gt;
&lt;br /&gt;
{{man warn|Unreleased addon}}&lt;br /&gt;
&lt;br /&gt;
Parses strings from Riksarkivet and ArkivDigital to create sources and citations.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Paste reference strings from ArkivDigital or Riksarkivet into the textbox of the gramplet to automatically create a source and citation.&lt;br /&gt;
&lt;br /&gt;
Example string Riksarkivet:&lt;br /&gt;
&amp;quot;Åby kyrkoarkiv, Husförhörslängder, SE/VALA/00460/A I/8 (1833-1840), bildid: C0029371_00018, sida 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example string ArkivDigital:&lt;br /&gt;
&amp;quot;Högsrum (H) AI:6 (1861-1871) Bild 186 / sid 179 (AID: v22513.b186.s179, NAD: SE/VALA/00161)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
* https://github.com/gramps-project/addons-source/pull/802&lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=129834</id>
		<title>Addon:ArchiveAssist</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=Addon:ArchiveAssist&amp;diff=129834"/>
		<updated>2026-02-21T02:03:52Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Third-party plugin}}&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Paste reference strings from ArkivDigital or Riksarkivet into the textbox of the gramplet to automatically create a source and citation.&lt;br /&gt;
&lt;br /&gt;
Example string Riksarkivet:&lt;br /&gt;
&amp;quot;Åby kyrkoarkiv, Husförhörslängder, SE/VALA/00460/A I/8 (1833-1840), bildid: C0029371_00018, sida 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example string ArkivDigital:&lt;br /&gt;
&amp;quot;Högsrum (H) AI:6 (1861-1871) Bild 186 / sid 179 (AID: v22513.b186.s179, NAD: SE/VALA/00161)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
* https://github.com/gramps-project/addons-source/pull/802&lt;br /&gt;
&lt;br /&gt;
[[Category:Addons]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Developers/General]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User:Biggles&amp;diff=129833</id>
		<title>User:Biggles</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User:Biggles&amp;diff=129833"/>
		<updated>2026-02-21T02:01:05Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creator of [[Addon:ArchiveAssist]] &lt;br /&gt;
&lt;br /&gt;
[[Category:User|B]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User:Biggles&amp;diff=129832</id>
		<title>User:Biggles</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User:Biggles&amp;diff=129832"/>
		<updated>2026-02-21T01:59:51Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Welcome and Thank you for your edits &amp;amp; new addon :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:User|B]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User_talk:Biggles&amp;diff=129828</id>
		<title>User talk:Biggles</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User_talk:Biggles&amp;diff=129828"/>
		<updated>2026-02-20T20:15:41Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Gramps''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:Patsyblefebre|Patsy B Lefebre]] ([[User talk:Patsyblefebre|talk]]) 20:15, 20 February 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=GEPS_017:_Flexible_gen.lib_Interface&amp;diff=129822</id>
		<title>GEPS 017: Flexible gen.lib Interface</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=GEPS_017:_Flexible_gen.lib_Interface&amp;diff=129822"/>
		<updated>2026-02-18T06:16:01Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Protected &amp;quot;GEPS 017: Flexible gen.lib Interface&amp;quot;: withdrawn no edit to be done as historical ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{man warn|This proposal has been withdrawn.|'''Update''': After building a [[Media:prototype.tar.gz|prototype]], it was found to be too slow for general use. Rather, it seems to be better to cache the data as it appears when it comes from the BSDDB database (pickled, serialized versions of gen.lib objects).}}&lt;br /&gt;
&lt;br /&gt;
gen.lib is the Python interface for all of the objects in Gramps. Currently, it is not directly tied to any data storage mechanism, except for the implicit assumption that objects are created through an unserialize method for each object. &lt;br /&gt;
&lt;br /&gt;
This proposal explores the possibility of making the creation of objects more general, and less tied to the particular unserializing process.&lt;br /&gt;
&lt;br /&gt;
''The prototype uses a combination of Delayed evaluation, and removing of gen.lib objects' properties. When a property was accessed, the delayed object was evaluated, and the set to the attribute.''&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
&lt;br /&gt;
Currently, the main database interface for getting an object looks like:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; db.get_person_from_handle(handle)&lt;br /&gt;
&lt;br /&gt;
This uses the only existing manner of creating a person supported by gen.lib:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Person().unserialize(data)&lt;br /&gt;
&lt;br /&gt;
where data is a serialized (non-object) representation of a Person. &lt;br /&gt;
&lt;br /&gt;
This has several issues: &lt;br /&gt;
&lt;br /&gt;
# Person() is first initialized as a completely empty object&lt;br /&gt;
# it may unserialize data that isn't needed&lt;br /&gt;
# it only allows data to be created in this particular manner&lt;br /&gt;
# it can be very slow, specifically when unserializing primary objects containing with many secondary objects or reference objects&lt;br /&gt;
# the unserialize is directly linked with the bsddb table layout. As a consequence, database layouts that are different suffer a huge penalty (not possible to do only sweeps over one table only, it is necessary to always hit multiple tables)&lt;br /&gt;
&lt;br /&gt;
This proposal would use an alternative gen.lib construction, that avoids these problems. &lt;br /&gt;
&lt;br /&gt;
As further evidence that there are problems with the current approach in Gramps, it suffices to look at src/gui/views/treemodels. Eg for eventmodel.py, we have:&lt;br /&gt;
&lt;br /&gt;
 def column_date(self,data):&lt;br /&gt;
        if data[COLUMN_DATE]:&lt;br /&gt;
            event = gen.lib.Event()&lt;br /&gt;
            event.unserialize(data)&lt;br /&gt;
            return DateHandler.get_date(event)&lt;br /&gt;
        return u''&lt;br /&gt;
&lt;br /&gt;
In this code, data was obtained as raw data from the database:&lt;br /&gt;
data = db.get_raw_event_data(handle)&lt;br /&gt;
The model needs to store the position in the data of the date storage, COLUMN_DATE. This couples the database table with the view implementation. Only when present is an event object created, so the overhead of making an event can no longer be avoided. This however is a very costly operation as now the entire event is initialized, also eg EventType(), NoteBase(), .... &lt;br /&gt;
All this to only obtain the date contained in the event object.&lt;br /&gt;
&lt;br /&gt;
= Possible Fixes =&lt;br /&gt;
== Overview==&lt;br /&gt;
In the detailed mailing-list discussion [1], there were four possible solutions dicussed:&lt;br /&gt;
&lt;br /&gt;
# If an alternative is needed, use something outside of gen.lib&lt;br /&gt;
# Using a lazy() wrapper to only evaluate what is necessary&lt;br /&gt;
# Explicit delayed unpickling&lt;br /&gt;
# Use an Engine inside each object to retrieve data when necessary&lt;br /&gt;
&lt;br /&gt;
These come down to:&lt;br /&gt;
# Replicate &lt;br /&gt;
#:Replicating gen.lib has the benefit of having zero impact on the current gen.lib. However it would require two separate code paths to maintain, and does nothing to address unnecessary unpickling in BSDDB. It also means gramps-connect and gramps proper will have no real code to share&lt;br /&gt;
# Lazy Wrapper &lt;br /&gt;
#:The lazy wrapper idea was shown to have some savings in postponing unserializing (see patch in bug report [2]). However, the requirement to wrap all data in lazy(), and the unintended side-effects were too great a cost.&lt;br /&gt;
# Explicit delayed unpickling&lt;br /&gt;
#:Just save the data of substructure until you need to unserialize it. This is still based on pickling and is limiting in future approaches.&lt;br /&gt;
# Engine &lt;br /&gt;
#:The best choice considered so far is to build an invisible engine into the gen.lib framework. This proposal would use an alternative gen.lib construction, that avoids the problems listed in the introduction. We will detail it below.&lt;br /&gt;
&lt;br /&gt;
== A gen.lib Engine ==&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
This proposal would use an alternative gen.lib construction, that avoids the problems listed in the introduction. &lt;br /&gt;
&lt;br /&gt;
The core concept is that when using gen.lib on a database, an Engine object must be created, which will contain the methods needed to map database data to object attributes. All objects will have access to this Engine via a factory method.&lt;br /&gt;
&lt;br /&gt;
Furthermore, all compound gen.lib objects will understand the concept of delayedaccess. That is, the object is not fully initialized on init. When not yet initialized pieces are needed (like eg the medialist of a person object), the object first initializes this piece, then returns it. &lt;br /&gt;
&lt;br /&gt;
It would provide:&lt;br /&gt;
# init of objects in one single call.&lt;br /&gt;
#* So Person() provides an empty Person object&lt;br /&gt;
#* Person(data) initializes an object, where data is the data about Person in the db which can be interpreted by an Engine object to set the attributes&lt;br /&gt;
#* Person(source=pers) remains possible, to duplicate an existing object&lt;br /&gt;
# When using gen.lib on a database, one must set an Engine that gen.lib should use. The engine knows how data is present in the database, and what fields in the objects correspond to this&lt;br /&gt;
# objects only set attributes that have no processing overhead at init. Other attributes are set only when they are needed, at which time they are further unpacked or fetched from db, via the engine.&lt;br /&gt;
# unserialize/serialize are removed as methods of an object, and are moved to the engine&lt;br /&gt;
# get and set methods are remove, and replaced by attribute access and the property method to do the delayed access as needed&lt;br /&gt;
# gen.lib will obtain two engines to start with. One for bsddb, and one for a django backend. &lt;br /&gt;
## BsddbEngine will be pure software. The engine will contain all present serialize/unserialize methods present now in the objects themselve.&lt;br /&gt;
## DjangoEngine will have a pointer to the django models. When eg a person objects needs access to it's media_list, the DelayedObj will call the DjangoEngine to obtain the media list, which will use the sql mediareference table to return the list of all MediaRef data&lt;br /&gt;
&lt;br /&gt;
=== Suggested Implementation ===&lt;br /&gt;
==== No serialize/unserialize ====&lt;br /&gt;
Objects have no serialize/unserialize anymore. This is present in the engine of a database that needs it, and only there. So in practice, the bsddb engine.&lt;br /&gt;
&lt;br /&gt;
Example usage code on bsddb&lt;br /&gt;
&lt;br /&gt;
 def get_person_from_handle(self, handle) &lt;br /&gt;
    return Person(db.get_raw_person_data(handle))&lt;br /&gt;
&lt;br /&gt;
The person class will call the bssdb engine from the factory to unserialize this data. Engine will be stored to avoid calling factory every time. So obj.__engine will store the engine, and obj.engine make it accessible. This is part of the DelayedAccess object API, of which all gen.lib objects will inherit. To store data:&lt;br /&gt;
&lt;br /&gt;
  def commit_person(self, person, ...) &lt;br /&gt;
     ....&lt;br /&gt;
     db_data = person.engine.person_serialize()&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
This works because engine is a bsddb engine, and hence the person_serialize method exists.&lt;br /&gt;
&lt;br /&gt;
==== DelayedAccess ====&lt;br /&gt;
All gen.lib objects know the concept of delayed access, using an engine to obtain the not yet initialized data. &lt;br /&gt;
&lt;br /&gt;
 class DelayAccessObj(object):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    An object that supports delayed access of the data. &lt;br /&gt;
    gen.lib objects are large constructs. Depending on the storage backend&lt;br /&gt;
    one can create objects of which part of the data is not yet retrieved or&lt;br /&gt;
    constructed for performance reasons. &lt;br /&gt;
    On access of these parts, the data must be obtained or constructed. &lt;br /&gt;
    &lt;br /&gt;
    The DelayAccessObj provides the infrastructure to obtain this. It holds:&lt;br /&gt;
    1. an engine which is used to obtain the missing data.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        self._engine = EngineKeeper.get_instance().engine&lt;br /&gt;
&lt;br /&gt;
Note that above should be done with properties, so that _engine is only obtained when requested and still None. Note also that all gen.lib objects should perhaps use __slots__ to reduce memory footprint.&lt;br /&gt;
&lt;br /&gt;
When not yet initialized attributes are needed, the engine is requested for the data. For example the marker attribute of a person, which is a MarkerType() object. Eg, the code fragment&lt;br /&gt;
&lt;br /&gt;
 pers = db.get_person_from_handle(handle)&lt;br /&gt;
 print pers.marker&lt;br /&gt;
&lt;br /&gt;
This initializes a Person. In the new setup, Person has it simple attributes set, and the rest is handle by delayedaccess. In essense, this means that pers.private is already set True or False in the __init__ of Person, but pers.marker is a property. Simplified, we have a setup as:&lt;br /&gt;
&lt;br /&gt;
  def __init__(self, data):&lt;br /&gt;
      DelayedAccess.__init__(self)&lt;br /&gt;
      (self.private, self.__marker, self.__media_list) = self._engine.unpack_person(data)&lt;br /&gt;
&lt;br /&gt;
For bssdb, we will have eg: self.private = False, self.__marker = 1, self.__media_list the raw tupled mediareference data&lt;br /&gt;
&lt;br /&gt;
For django, with mediaref in another table: self.private = False, self.__marker = 1, self.__media_list = ('Person', handle)&lt;br /&gt;
&lt;br /&gt;
The aim should be clear, each engine unpacks the data passed in a way that allows delayed access of the attribute. The bsddb engine, uses only the tuple data passed by the database table. The django engine however, sets media_list to the value needed to obtain a media_list from the media reference table.&lt;br /&gt;
&lt;br /&gt;
Next, pers.marker or pers.media_list is called:&lt;br /&gt;
&lt;br /&gt;
   @property&lt;br /&gt;
   def marker(self):&lt;br /&gt;
       if not isinstance(self._marker, MarkerType):&lt;br /&gt;
            #delayed retrieval of marker from the engine using the key&lt;br /&gt;
            self._marker = self._engine.get_markertype(self._marker)&lt;br /&gt;
        return self._marker &lt;br /&gt;
&lt;br /&gt;
   @property&lt;br /&gt;
   def media_list(self):&lt;br /&gt;
       if not isinstance(self._media_list, list):&lt;br /&gt;
            #delayed retrieval of media list from the engine using the key&lt;br /&gt;
            self._media_list = self._engine.get_medialist(self._media_list)&lt;br /&gt;
        return self._media_list&lt;br /&gt;
 &lt;br /&gt;
So, as _marker is not initialized, the engine is used to obtain the marker from the data. Same for _media_list. Note that media_list returns a list of MediaRef objects, which however will use themselves delayed access to further unpack themselves as needed, so a minimal overhead has happened.&lt;br /&gt;
&lt;br /&gt;
It is important to note here that media_list is in reality defined in the MediaBase() object, not in Person, as Person inherits from MediaBase. However, unpack_person must take this entire inheritence tree into account. This must be designed cleverly, allowing for the multiple inheritence available in gen.lib. Ideas??&lt;br /&gt;
&lt;br /&gt;
==== Unpack and slots ====&lt;br /&gt;
To allow to init an object from another object, it is needed to load over the private/protected attributes without extra processing, so that delayed access can continue in the new object. That is, we cannot access eg .marker in the other object, we need to assign directly __marker.&lt;br /&gt;
&lt;br /&gt;
To achieve this, all non-property attributes are added in the __slots__ (this does not work good with multiple inheritance, so probably not an option) list of the object, and an unpack method is created that can list them out for assignment. With the example above &lt;br /&gt;
&lt;br /&gt;
  def __init__(self, data, source=source):&lt;br /&gt;
      DelayedAccess.__init__(self)&lt;br /&gt;
      if source: &lt;br /&gt;
          (self.private, self.__marker, self.__media_list) = source.unpack()&lt;br /&gt;
      else:&lt;br /&gt;
          (self.private, self.__marker, self.__media_list) = self._engine.unpack_person(data)&lt;br /&gt;
&lt;br /&gt;
Where the unpack returns the private/protected variables:&lt;br /&gt;
&lt;br /&gt;
  def unpack(self):&lt;br /&gt;
      return (self.private, self.__marker, self.__media_list)&lt;br /&gt;
&lt;br /&gt;
As in the previous section, it is important to note here that media_list is in reality defined in the MediaBase() object, not in Person, as Person inherits from MediaBase. So, the unpack method must take this entire inheritence tree into account. This must be designed cleverly, allowing for the multiple inheritence available in gen.lib. Ideas?? &lt;br /&gt;
We would want to avoid that adding a field means we need to edit all inheriting objects because the unpack needs to change everywhere. Well, not that big deal probably, because present un/serialize does it already like that. Probably, it is advantageous to use a construct: &lt;br /&gt;
&lt;br /&gt;
   self.__pack(source.unpack())&lt;br /&gt;
&lt;br /&gt;
This needs to be designed cleverly because we want really fast __init__ and assign. Looking at the present serialize in eg Address:&lt;br /&gt;
   def serialize(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Convert the object to a serialized tuple of data.&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return (PrivacyBase.serialize(self),&lt;br /&gt;
                SourceBase.serialize(self),&lt;br /&gt;
                NoteBase.serialize(self),&lt;br /&gt;
                DateBase.serialize(self),&lt;br /&gt;
                LocationBase.serialize(self))&lt;br /&gt;
&lt;br /&gt;
    def unserialize(self, data):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Convert a serialized tuple of data to an object.&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        (privacy, source_list, note_list, date, location) = data&lt;br /&gt;
        &lt;br /&gt;
        PrivacyBase.unserialize(self, privacy)&lt;br /&gt;
        SourceBase.unserialize(self, source_list)&lt;br /&gt;
        NoteBase.unserialize(self, note_list)&lt;br /&gt;
        DateBase.unserialize(self, date)&lt;br /&gt;
        LocationBase.unserialize(self, location)&lt;br /&gt;
        return self&lt;br /&gt;
&lt;br /&gt;
In the worst case unpack needs to work likewise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== getters and setters ====&lt;br /&gt;
&lt;br /&gt;
The typical get and set methods in gen.lib would be deprecated. For 3.3 it would print a Deprecated warning, for 3.4 they should be completely removed.&lt;br /&gt;
&lt;br /&gt;
==== bsddb get_raw methods ====&lt;br /&gt;
&lt;br /&gt;
The get_raw_person_data and friends methods would become private/protected to the bsddb. They should not be used outside gen.db, so the code in the models will no longer depend on it, allowing for a backend based on another bsddb schema or another database&lt;br /&gt;
&lt;br /&gt;
=== Advantages ===&lt;br /&gt;
&lt;br /&gt;
The advantages of this approach are: &lt;br /&gt;
&lt;br /&gt;
* the delayed access is behind the scenes, and via a standard easy to understand mechanism. The hard part of obtaining data is all in the db code in gen.db, and the engine code for a db in gen.lib. &lt;br /&gt;
&lt;br /&gt;
* we can move more freely to another database schema. This might be several things: add bsddb tables, or use an sql backend. Upgrade of bsddb could even be done while supporting still normal read of the old bsddb layout (so without expensive upgrade before you can access the data). The only thing that would be needed is write a new engine for the new schema. As an example, suppose we add type tables to store all used custom types, then this change to bsddb can be done without influence on how gen.lib works. In the present setup serialize/unserialize must be changed. &lt;br /&gt;
&lt;br /&gt;
* In the future, the engine could be used for more advanced stuff. Eg, doing Person().obtain(name=&amp;quot;McDonald&amp;quot;) could be implemented. In that case, obtain accesses the engine and does the query. Note that this is ''not'' the aim of the change, it is just a remark that this is a possibility.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
# - [https://sourceforge.net/p/gramps/mailman/message/24262998/ (Gramps-devel) Lazy Evaluation in Gramps] From: Doug B.  - 2009-12-28 06:37:38 - mailing list discussion&lt;br /&gt;
# - {{bug|3476}}: [patch] An experiment in lazy evaluation in gramps&lt;br /&gt;
# - [https://gramps-project.org/blog/?p=211 Alternative Interfaces] January 23rd, 2010 by Doug Blank - Gramps Blog post discussing ideas&lt;br /&gt;
&lt;br /&gt;
[[Category:GEPS|F]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User:DomoViridi&amp;diff=129821</id>
		<title>User:DomoViridi</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User:DomoViridi&amp;diff=129821"/>
		<updated>2026-02-18T06:14:55Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Welcome and Thank you for your edit :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:User|D]]&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User_talk:DomoViridi&amp;diff=129819</id>
		<title>User talk:DomoViridi</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User_talk:DomoViridi&amp;diff=129819"/>
		<updated>2026-02-17T20:43:20Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Link to my abandoned addon for your reference.   ~~~~&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Gramps''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:Patsyblefebre|Patsy B Lefebre]] ([[User talk:Patsyblefebre|talk]]) 20:31, 17 February 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
=[[Addon:HtreePedigreeView]]=&lt;br /&gt;
Link to my abandoned addon for your reference, created in 2013.  My programming skill is very limited. [[User:Patsyblefebre|Patsy B Lefebre]] ([[User talk:Patsyblefebre|talk]]) 20:43, 17 February 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User_talk:DomoViridi&amp;diff=129818</id>
		<title>User talk:DomoViridi</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User_talk:DomoViridi&amp;diff=129818"/>
		<updated>2026-02-17T20:31:34Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Gramps''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:Patsyblefebre|Patsy B Lefebre]] ([[User talk:Patsyblefebre|talk]]) 20:31, 17 February 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User_talk:Niftynev54&amp;diff=129799</id>
		<title>User talk:Niftynev54</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User_talk:Niftynev54&amp;diff=129799"/>
		<updated>2026-02-01T10:41:20Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Gramps''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:Patsyblefebre|Patsy B Lefebre]] ([[User talk:Patsyblefebre|talk]]) 10:41, 1 February 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User_talk:AnastasiiaHubanova&amp;diff=129787</id>
		<title>User talk:AnastasiiaHubanova</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User_talk:AnastasiiaHubanova&amp;diff=129787"/>
		<updated>2026-01-24T02:04:13Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Gramps''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:Patsyblefebre|Patsy B Lefebre]] ([[User talk:Patsyblefebre|talk]]) 02:04, 24 January 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
	<entry>
		<id>https://gramps-project.org/wiki/index.php?title=User_talk:GBonamy&amp;diff=129760</id>
		<title>User talk:GBonamy</title>
		<link rel="alternate" type="text/html" href="https://gramps-project.org/wiki/index.php?title=User_talk:GBonamy&amp;diff=129760"/>
		<updated>2026-01-23T01:41:37Z</updated>

		<summary type="html">&lt;p&gt;Patsyblefebre: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Gramps''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:Patsyblefebre|Patsy B Lefebre]] ([[User talk:Patsyblefebre|talk]]) 01:41, 23 January 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Patsyblefebre</name></author>
		
	</entry>
</feed>