Changes

Jump to: navigation, search

Addon:Python Shell Gramplet

3,846 bytes added, 17 March
m
See also
[[Image:Pythongadget.png|thumb|right|200px|Fig. 4.8 Python Shell]]{{Third-party plugin}}
The Python gramplet brings up a [[File:PythonGramplet-interactive-shell-example-50.png|thumb|right|450px|Python Shell for interpreting python expressions. Gramplet - Interactive shell example output]]
The {{man label|Python Shell}} Gramplet brings up an interactive Python Shell for interpreting python expressions.
 
==Options==
You can type most any (single line) Python expression.
In addition, the environment has been populated with some useful variables, including *'''self''' - (this Python gramplet), *'''Date'''- a date object constructor, that can be used for date arithmetic.*'''uistatedb''' and - Interact with the Database*'''dbstate'''- Information about the Database*'''gc''' - the Python "garbage collector" preloaded with the same flags as the Debug Tool.*'''uistate''' - Interact with the GUI When the {{man label|Python Shell}} Gramplet is detached you can select the {{man button|Help}} button to see this page. == Usage == Output of print() commands issued in the Python Shell will be directed to the Gramps console window, so be sure to keep that window open. Use the [[Using database API|database API]] to retrieve objects and use object library to find the information you require. If you want to write GUI code, then knowledge of Gtk3 is also required.  ==Examples==
Note that the name '''Date''' will be translated into your language, if a translations is available.=== Dates ===
The '''Date''' entry is a date object constructor, and can be used for date arithmetic. For example, you might be interested in questions like:
How old was someone on Sept 3, 1955 who was born on June 7, 1922:
> Date(1955, 9, 3) - Date(1922, 5, 7) (33years, 3, 27)months
(About 33 years, 3 months, and 27 days). When did they turn 21 years old?
> Date(1922, 5, 7) + 21
1980-01-26
You can also use the same formats as you use in data entryconvert one date into another calendar, which returns a new date object:
> Date("Jan 151703, 6, 1962"1) 1962-15-01 > Date.to_calendar("15 Jan, 1962hebrew") 19625463-1510-01 > Date17 ("1962-15-01"Hebrew) 1962-15-01
There are two ways to use different calendars:=== Displayers ===
> Date("Jan 15Use utility code to make things easier. For example, 1532 (Julian)") 1532-15-01 (Julian) > Date(1671you will probably want to use the name, 12date and place displayers rather than formatting the data yourself. To print the name of the default person, 31, calendar="julian") 1671-12-31use the following code:
and a method to convert one date into another calendar, which returns a new date object: > from gramps.gen.display.name import displayer as nd > person = self.dbstate.db.get_default_person() > print(nd.display(person))
To find the type of a variable use:  > Date(1703, 6, 1).to_calendar("hebrew") 5463-10-17 type(Hebrewperson)
=== Developers ===
Another use for this Gramplet is for debugging. This gramplet makes a nice interface to the running GRAMPS Gramps system. You can inspect, and alter the system by entering Python commands. As a simple example, you can:
> self.clear_text() # clear the text in this window
> gc.get_referents(self)
[...]
> gc.get_referersget_referrers(self)
[...]
{{stub}}You can use the Python Shell to interact with people from your database and test Gramps functions: {| border="1" style="border-collapse:collapse"! Gramps 3.x| <pre> > person = db.get_person_from_gramps_id("I01284") > from Utils import probably_alive > probably_alive(person, db, Date(1776, 7, 4))</pre>|-! Gramps 4.x| <pre> > person = db.get_person_from_gramps_id("I01284") > from gen.utils.alive import probably_alive > probably_alive(person, db, Date(1776, 7, 4))</pre>|-! Gramps 5.x| <pre> > person = db.get_person_from_gramps_id("I01284") > from gramps.gen.utils.alive import probably_alive > probably_alive(person, db, Date(1776, 7, 4))<br clear/pre>|} You can also interact with the GUI: This following returns the Gtk Frame of the first Gramplet in the first column. {| border="1" style="border-collapse:collapse"! Gramps 3.x| <pre> > uistate.viewmanager.pages [<DataViews.GrampletView.GrampletView instance at 0xa0bd0ac>, <DataViews.PersonView.PersonView instance at 0xa8f542c>, <DataViews.RelationView.RelationshipView instance at 0xa8f562c>, <DataViews.FamilyList.FamilyListView instance at 0xa8f5f8c>, <DataViews.PedigreeView.PedigreeView instance at 0xa8fc5cc>, <DataViews.EventView.EventView instance at 0xa8fc88c>, <DataViews.SourceView.SourceView instance at 0xa8fcdcc>, <DataViews.PlaceView.PlaceView instance at 0xa9070ec>, <DataViews.MediaView.MediaView instance at 0xa9074ac>, <DataViews.RepositoryView.RepositoryView instance at 0xa9077ac>, <DataViews.NoteView.NoteView instance at 0xa907d8c>, <DataViews.GeoView.GeoView instance at 0xa90d0cc>] > uistate.viewmanager.pages[0] <DataViews.GrampletView.GrampletView instance at 0xa0bd0ac> > uistate.viewmanager.pages[0].columns[0].get_children()[0].get_children()[0]</pre>|-! Gramps 4.x| <pre> </pre>|-! Gramps 5.x| <pre> > uistate.viewmanager.pages[:] [<dashboardview.DashboardView object at 0x0000000008c9f4e0>, <persontreeview.PersonTreeView object at 0x0000000000a05748>, <relview.RelationshipView object at 0x000000000b1b6358>]</pre>|} This following returns a reference to a loaded Gramplet object on the Event view - useful when developing Gramplets. Note that the Events view must be navigated first, as main views are lazy loading in Gramps 4. {| border="1" style="border-collapse:collapse"! Gramps 4.x| <pre>> evtview = uistate.viewmanager.pages[uistate.viewmanager.page_lookup.get((5,0))]> # list all"TabGramplet objects loaded for Events view> [child.get_title() for child in evtview.bottombar.get_children()]['Gallery', 'Citations', 'Notes', 'Attributes', 'References', 'Event PlaceTitle Compare Gramplet']> # get a reference to my custom Gramplet object> eptcGramplet = evtview.bottombar.get_children()[5].pui </pre>|}== See also ==* [[Gramps_{{man version}}_Wiki_Manual_-_Gramplets#Python_Evaluation|Python Evaluation]] window (debug tool)[[Category:Addons]][[Category:Plugins]][[Category:Developers/General]][[Category:Gramplets]]
4,608
edits

Navigation menu