Compare commits
50 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 905ac154d3 | |||
| ac29b091a7 | |||
| 1a618c3a2e | |||
| c731c68ec5 | |||
| ab80af602c | |||
| 4caa412a06 | |||
| 49ec2e1244 | |||
| 63dc1ddff8 | |||
| b9c3b077e8 | |||
| 8c9333b58d | |||
| fd22effab3 | |||
| 5e5e92ac9a | |||
| 7fac5c6607 | |||
| fa26216839 | |||
| 9032c0a37d | |||
| fb6a2cecf2 | |||
| 90de5dffec | |||
| 8ec10c067f | |||
| 84be6de6ab | |||
| 0b88c61421 | |||
| d943e122a8 | |||
| fc08e7de4e | |||
| a04c8dc497 | |||
| 66c943f69d | |||
| 0ad17ac27f | |||
| 01536e4b50 | |||
| 811261609f | |||
| cba763611d | |||
| 56de5ff4af | |||
| 928a0af713 | |||
| 913fdd071c | |||
| 22a27e9707 | |||
| 2142118832 | |||
| fabd5742fc | |||
| 7a3da35543 | |||
| c0c165d155 | |||
| 030ffd8226 | |||
| 4964461fa4 | |||
| 42c4662329 | |||
| d3eafc00db | |||
| a2030431c0 | |||
| 56f867d783 | |||
| 5a752205b3 | |||
| 6e87ee433c | |||
| 70806f2388 | |||
| b8b186dde2 | |||
| d10c4faffe | |||
| 8bff04729f | |||
| 9cddf3ebdb | |||
| c089eba1c3 |
@@ -1,3 +1,40 @@
|
||||
Version 4.2.0,
|
||||
* New date and language fields on place name
|
||||
* Review on GtkBuilder, fix some Gtk3 warnings and move from deprecated methods
|
||||
* Change icons and buttons handling methods
|
||||
* Enhanced Place Editor and new Place Name editor
|
||||
* New widget: use own interactive-search
|
||||
* Ability to import kml data into Geography views
|
||||
* Enhancement for removing multiple selected items from Views (action group)
|
||||
* Add drag support on more Views, Selectors and Editors
|
||||
* Add right-click "Copy all" to ListModel and all QuickTables
|
||||
* Review Alternate Place handling and edition
|
||||
* New 'Place' configuration keys set by user (settings)
|
||||
* New filter rule: is enclosed by
|
||||
* Consistency on Privacy option for reports
|
||||
* Consistency on "Name-format" options for reports
|
||||
* Add DeferredFilter class (a subclass of GenericFilter)
|
||||
* New textual Report: Links on Notes
|
||||
* Fix alphabetic index and toc bug in books
|
||||
* Enhancements on Style Editor
|
||||
* Enhancements on End Notes into textual reports
|
||||
* Changes on Individuals complete textual report
|
||||
* Changes on Ancestors Tree draw report: Include Siblings
|
||||
* Add name-format option, and deferred translation on Records report
|
||||
* Add deferred translation on Timeline draw report
|
||||
* Enable attributes gramplet on Source and Citation Views
|
||||
* New place locations gramplet
|
||||
* Optimizations around index, Flat and TreeView models
|
||||
* Enhanced samples files
|
||||
* All importers return now an ImportInfo object
|
||||
* Experimental gwplus (geneweb) import file format support
|
||||
* Remove experimental HTML renderer view
|
||||
* New test scripts
|
||||
* New Date handler for Japanese
|
||||
* Review on Slovenian and Czech Date Handlers
|
||||
* Implement both "traditional" and "simplfied" Chinese (translations and dates)
|
||||
* Serbian review
|
||||
|
||||
2015-05-01
|
||||
Version 4.1.3, "Thou shalt not count to five", a maintenance release.
|
||||
* Fix db upgrade failure
|
||||
|
||||
@@ -1,36 +1,13 @@
|
||||
$Id$
|
||||
Major enhancements in Gramps 4.2.0:
|
||||
|
||||
UNSTABLE Gramps 4.0.0 Beta2 release.
|
||||
* GEP 36: GEPS 036: Extended Alternative Place Name Handling:
|
||||
https://gramps-project.org/wiki/index.php?title=GEPS_036:_Extended_Alternative_Place_Name_Handling
|
||||
|
||||
This is a technology preview to allow distribution packagers (and plugin
|
||||
writers) to update their scripts (and plugins). This release is not
|
||||
production ready, so only use it for testing!
|
||||
* GEP interactive search: own interactive-search box.
|
||||
|
||||
It is recommended that Gramps 4.0.0 be used with python 2.7 since many
|
||||
dependent packages do not yet have python 3 versions. A determined person
|
||||
can probably download their sources and build them, however.
|
||||
|
||||
The dependencies for Gramps 4.0.0 are _completely_ different than 3.4 due
|
||||
to the switch to GObject introspection, and the removal of autotools. So
|
||||
only install 4.0.0 if you are certain you can obtain the dependencies,
|
||||
see README and INSTALL.
|
||||
|
||||
For linux, in Ubuntu 12.10 you can install 4.0.0, but you will need to
|
||||
compile and install osmgpsmap manually to have the maps working (see
|
||||
http://www.gramps-project.org/wiki/index.php?title=GEPS_029:_GTK3-GObject_introspection_Conversion#OsmGpsMap_for_Geography )
|
||||
|
||||
|
||||
Major enhancements in Gramps 4.0.0:
|
||||
|
||||
* GEP 8: code reorganization: http://www.gramps-project.org/wiki/index.php?title=GEPS_008:_File_Organization
|
||||
|
||||
* GEP 26: Replace make: http://www.gramps-project.org/wiki/index.php?title=GEPS_026:_Replace_%27make%27_for_Gramps_build
|
||||
|
||||
* GEP 29: Gtk 3 :http://www.gramps-project.org/wiki/index.php?title=GEPS_029:_GTK3-GObject_introspection_Conversion
|
||||
|
||||
* GEP 31: Python 3 support: http://www.gramps-project.org/wiki/index.php?title=GEPS_031:_Python_3_support
|
||||
* Speedup on Tree and Flat Views
|
||||
|
||||
More info in the manual
|
||||
http://www.gramps-project.org/wiki/index.php?title=Gramps_4.0_Wiki_Manual_-_What%27s_new%3F
|
||||
http://www.gramps-project.org/wiki/index.php?title=Gramps_4.2_Wiki_Manual_-_What%27s_new%3F
|
||||
|
||||
Everybody is invited to update the manual to make it current!
|
||||
|
||||
@@ -25,15 +25,15 @@
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the Document Type Definition file for v1.6.0
|
||||
This is the Document Type Definition file for v1.7.1
|
||||
of the GRAMPS XML genealogy data format.
|
||||
Please use the following formal public identifier to identify it:
|
||||
|
||||
"-//GRAMPS//DTD GRAMPS XML V1.6.0//EN"
|
||||
"-//GRAMPS//DTD GRAMPS XML V1.7.1//EN"
|
||||
|
||||
For example:
|
||||
<!DOCTYPE database PUBLIC "-//GRAMPS//DTD GRAMPS XML V1.6.0//EN"
|
||||
"http://gramps-project.org/xml/1.6.0/grampsxml.dtd"
|
||||
<!DOCTYPE database PUBLIC "-//GRAMPS//DTD GRAMPS XML V1.7.1//EN"
|
||||
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd"
|
||||
[...]>
|
||||
-->
|
||||
|
||||
@@ -62,7 +62,7 @@ DATABASE
|
||||
<!ELEMENT database (header, name-formats?, tags?, events?, people?, families?,
|
||||
citations?, sources?, places?, objects?, repositories?,
|
||||
notes?, bookmarks?, namemaps?)>
|
||||
<!ATTLIST database xmlns CDATA #FIXED "http://gramps-project.org/xml/1.6.0/">
|
||||
<!ATTLIST database xmlns CDATA #FIXED "http://gramps-project.org/xml/1.7.1/">
|
||||
|
||||
|
||||
<!-- ************************************************************
|
||||
@@ -122,6 +122,7 @@ GENDER has values of M, F, or U.
|
||||
|
||||
<!ELEMENT name (first?, call?, surname*, suffix?, title?, nick?, familynick?, group?,
|
||||
(daterange|datespan|dateval|datestr)?, noteref*, citationref*)>
|
||||
<!-- (Unknown|Also Know As|Birth Name|Married Name|Other Name) -->
|
||||
<!ATTLIST name
|
||||
alt (0|1) #IMPLIED
|
||||
type CDATA #IMPLIED
|
||||
@@ -138,6 +139,8 @@ GENDER has values of M, F, or U.
|
||||
<!ELEMENT familynick (#PCDATA)>
|
||||
<!ELEMENT group (#PCDATA)>
|
||||
<!ELEMENT surname (#PCDATA)>
|
||||
<!-- (Unknown|Inherited|Given|Taken|Patronymic|Matronymic|Feudal|
|
||||
Pseudonym|Patrilineal|Matrilineal|Occupation|Location) -->
|
||||
<!ATTLIST surname
|
||||
prefix CDATA #IMPLIED
|
||||
prim (1|0) #IMPLIED
|
||||
@@ -196,12 +199,13 @@ FAMILY
|
||||
<!ELEMENT mother EMPTY>
|
||||
<!ATTLIST mother hlink IDREF #REQUIRED>
|
||||
|
||||
<!-- (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) -->
|
||||
<!ELEMENT childref (citationref*,noteref*)>
|
||||
<!ATTLIST childref
|
||||
hlink IDREF #REQUIRED
|
||||
priv (0|1) #IMPLIED
|
||||
mrel (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) #IMPLIED
|
||||
frel (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) #IMPLIED
|
||||
mrel CDATA #IMPLIED
|
||||
frel CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT type (#PCDATA)>
|
||||
@@ -248,20 +252,25 @@ PLACES
|
||||
|
||||
<!ELEMENT places (placeobj)*>
|
||||
|
||||
<!ELEMENT placeobj (ptitle?, code?, alt_name*, coord?, placeref*, location*,
|
||||
<!ELEMENT placeobj (ptitle?, pname+, code?, coord?, placeref*, location*,
|
||||
objref*, url*, noteref*, citationref*, tagref*)>
|
||||
<!ATTLIST placeobj
|
||||
id CDATA #IMPLIED
|
||||
handle ID #REQUIRED
|
||||
priv (0|1) #IMPLIED
|
||||
change CDATA #REQUIRED
|
||||
name CDATA #REQUIRED
|
||||
type CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT pname (daterange|datespan|dateval|datestr)?>
|
||||
|
||||
<!ATTLIST pname
|
||||
lang CDATA #IMPLIED
|
||||
value CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT ptitle (#PCDATA)>
|
||||
<!ELEMENT code (#PCDATA)>
|
||||
<!ELEMENT alt_name (#PCDATA)>
|
||||
|
||||
<!ELEMENT coord EMPTY>
|
||||
<!ATTLIST coord
|
||||
|
||||
@@ -25,13 +25,13 @@
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the RELAX NG schema for the Gramps XML genealogy data format.
|
||||
This is the RELAX NG schema for the GRAMPS XML genealogy data format.
|
||||
-->
|
||||
|
||||
|
||||
<grammar
|
||||
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
|
||||
ns="http://gramps-project.org/xml/1.6.0/"
|
||||
ns="http://gramps-project.org/xml/1.7.1/"
|
||||
xmlns="http://relaxng.org/ns/structure/1.0">
|
||||
|
||||
<start><element name="database">
|
||||
@@ -210,16 +210,7 @@
|
||||
</define>
|
||||
|
||||
<define name="child-rel">
|
||||
<choice>
|
||||
<value>Birth</value>
|
||||
<value>Adopted</value>
|
||||
<value>Stepchild</value>
|
||||
<value>Sponsored</value>
|
||||
<value>Foster</value>
|
||||
<value>None</value>
|
||||
<value>Other</value>
|
||||
<value>Unknown</value>
|
||||
</choice>
|
||||
<text/>
|
||||
</define>
|
||||
|
||||
<define name="name-content">
|
||||
@@ -230,13 +221,7 @@
|
||||
<optional><attribute name="priv">
|
||||
<ref name="priv-content"/>
|
||||
</attribute></optional>
|
||||
<optional><attribute name="type"><choice>
|
||||
<value>Unknown</value>
|
||||
<value>Also Known As</value>
|
||||
<value>Birth Name</value>
|
||||
<value>Married Name</value>
|
||||
<value>Other Name</value>
|
||||
</choice></attribute></optional>
|
||||
<optional><attribute name="type"><text/></attribute></optional>
|
||||
<optional><attribute name="sort"><text/></attribute></optional>
|
||||
<optional><attribute name="display"><text/></attribute></optional>
|
||||
<optional><element name="first"><text/></element></optional>
|
||||
@@ -265,20 +250,7 @@
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
</choice></attribute></optional>
|
||||
<optional><attribute name="derivation"><choice>
|
||||
<value>Unknown</value>
|
||||
<value>Inherited</value>
|
||||
<value>Given</value>
|
||||
<value>Taken</value>
|
||||
<value>Patronymic</value>
|
||||
<value>Matronymic</value>
|
||||
<value>Feudal</value>
|
||||
<value>Pseudonym</value>
|
||||
<value>Patrilineal</value>
|
||||
<value>Matrilineal</value>
|
||||
<value>Occupation</value>
|
||||
<value>Location</value>
|
||||
</choice></attribute></optional>
|
||||
<optional><attribute name="derivation"><text/></attribute></optional>
|
||||
<optional><attribute name="connector"><text/></attribute></optional>
|
||||
</define>
|
||||
|
||||
@@ -479,11 +451,12 @@
|
||||
|
||||
<define name="place-content">
|
||||
<ref name="primary-object"/>
|
||||
<attribute name="name"><text/></attribute>
|
||||
<attribute name="type"><text/></attribute>
|
||||
<optional><element name="ptitle"><text/></element></optional>
|
||||
<oneOrMore><element name="pname">
|
||||
<ref name="placename-content"/>
|
||||
</element></oneOrMore>
|
||||
<optional><element name="code"><text/></element></optional>
|
||||
<zeroOrMore><element name="alt_name"><text/></element></zeroOrMore>
|
||||
<optional><element name="coord">
|
||||
<attribute name="long"><text/></attribute>
|
||||
<attribute name="lat"><text/></attribute>
|
||||
@@ -772,6 +745,12 @@
|
||||
<text/>
|
||||
</define>
|
||||
|
||||
<define name="placename-content">
|
||||
<attribute name="value"><text/></attribute>
|
||||
<optional><attribute name="lang"><text/></attribute></optional>
|
||||
<optional><ref name="date-content"/></optional>
|
||||
</define>
|
||||
|
||||
<define name="placeref-content">
|
||||
<attribute name="hlink"><data type="IDREF"/></attribute>
|
||||
<optional><ref name="date-content"/></optional>
|
||||
|
||||
@@ -7,30 +7,32 @@ Build-Depends-Indep:
|
||||
gettext,
|
||||
intltool,
|
||||
libxml-parser-perl,
|
||||
python-all,
|
||||
python-setuptools
|
||||
python3-all,
|
||||
python3-setuptools
|
||||
Build-Depends:
|
||||
dh-python,
|
||||
debhelper (>= 9.0.0)
|
||||
Standards-Version: 3.9.5
|
||||
Vcs-Git: git://anonscm.debian.org/collab-maint/gramps.git
|
||||
Vcs-browser: http://anonscm.debian.org/gitweb/?p=collab-maint/gramps.git
|
||||
Homepage: http://www.gramps-project.org/
|
||||
X-Python-Version: >= 3.0
|
||||
X-Python-Version: >= 3.2
|
||||
|
||||
Package: python3-gramps
|
||||
Architecture: all
|
||||
Depends:
|
||||
gir1.2-gtk-3.0,
|
||||
gir1.2-gtk-3.0 (>= 3.10.0),
|
||||
librsvg2-2,
|
||||
python3-gi,
|
||||
python3-gi-cairo,
|
||||
python3-bsddb3,
|
||||
xdg-utils,
|
||||
${misc:Depends},
|
||||
${python:Depends}
|
||||
${python3:Depends}
|
||||
Recommends:
|
||||
graphviz,
|
||||
libosmgpsmap-1.0-0-dev,
|
||||
gir1.2-osmgpsmap-1.0,
|
||||
python3-pyicu
|
||||
Suggests:
|
||||
fonts-freefont-ttf,
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
diff --git a/setup.py b/setup.py
|
||||
index 3f702ae..9622d75 100644
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -248,7 +248,7 @@ class install(_install):
|
||||
'utils', 'resource-path')
|
||||
with io.open(resource_file, 'w', encoding='utf-8',
|
||||
errors='strict') as fp:
|
||||
- path = os.path.abspath(os.path.join(self.install_data, 'share'))
|
||||
+ path = '/usr/share'
|
||||
if sys.version_info[0] < 3:
|
||||
path = unicode(path)
|
||||
fp.write(path)
|
||||
@@ -1,22 +0,0 @@
|
||||
diff --git a/gramps/plugins/view/htmlrenderer.py b/gramps/plugins/view/htmlrenderer.py
|
||||
index c41942a..8f35b16 100644
|
||||
--- a/gramps/plugins/view/htmlrenderer.py
|
||||
+++ b/gramps/plugins/view/htmlrenderer.py
|
||||
@@ -122,11 +122,12 @@ user_pref("general.useragent.locale, %(lang)s);
|
||||
|
||||
TOOLKIT = NOWEB
|
||||
|
||||
-try:
|
||||
- from gi.repository import WebKit as webkit
|
||||
- TOOLKIT = WEBKIT
|
||||
-except:
|
||||
- pass
|
||||
+#Disable webkit as it is causing a crash in Gramps 4.0.2
|
||||
+#try:
|
||||
+# from gi.repository import WebKit as webkit
|
||||
+# TOOLKIT = WEBKIT
|
||||
+#except:
|
||||
+# pass
|
||||
|
||||
#no interfaces present, raise Error so that options for GeoView do not show
|
||||
if TOOLKIT == NOWEB :
|
||||
@@ -1,2 +0,0 @@
|
||||
0001-Correct-resource-path-in-setup.py.patch
|
||||
0002-Disable-HTML-View.patch
|
||||
@@ -5,32 +5,31 @@ export DH_VERBOSE=1
|
||||
export DH_OPTIONS=-v
|
||||
|
||||
%:
|
||||
dh $@ --with python3
|
||||
dh $@ --with python3 --buildsystem=pybuild
|
||||
|
||||
# Override auto test because upstream do not use the standard unittest discover
|
||||
override_dh_auto_test:
|
||||
|
||||
# Override of auto_build
|
||||
override_dh_auto_build:
|
||||
python3 setup.py build --resourcepath=/usr/share
|
||||
python3 setup.py build
|
||||
|
||||
# Override of auto_install to remove information from package
|
||||
override_dh_auto_install:
|
||||
#dh_auto_install
|
||||
python3 setup.py install --resourcepath=/usr/share --root=debian/python3-gramps --install-layout=deb
|
||||
# Remove duplicate copyright information
|
||||
#rm $(CURDIR)/debian/python3-gramps/usr/share/doc/gramps/COPYING
|
||||
rm $(CURDIR)/debian/python3-gramps/usr/share/doc/gramps/COPYING
|
||||
# Remove install file as it is not needed by package users
|
||||
#rm $(CURDIR)/debian/python3-gramps/usr/share/doc/gramps/INSTALL
|
||||
rm $(CURDIR)/debian/python3-gramps/usr/share/doc/gramps/INSTALL
|
||||
# Remove duplicate license information
|
||||
#rm $(CURDIR)/debian/python3-gramps/usr/share/doc/gramps/LICENSE
|
||||
python3 setup.py install --root=debian/python3-gramps --install-layout=deb
|
||||
rm $(CURDIR)/debian/python3-gramps/usr/share/doc/gramps/LICENSE
|
||||
ln -s /usr/share/common-licenses/GPL-2 $(CURDIR)/debian/python3-gramps/usr/share/doc/gramps/COPYING
|
||||
|
||||
# Make css style sheets and png icons non-executable
|
||||
override_dh_fixperms:
|
||||
dh_fixperms
|
||||
chmod a-x $(CURDIR)/debian/python3-gramps/usr/share/gramps/css/Web_*.css
|
||||
#chmod a-x $(CURDIR)/debian/python3-gramps/usr/share/gramps/images/hicolor/22x22/actions/gramps*.png
|
||||
#chmod a-x $(CURDIR)/debian/python3-gramps/usr/share/gramps/images/hicolor/16x16/actions/gramps*.png
|
||||
|
||||
# Avoid compressing COPYING file so that it can appear in the "About" dialog
|
||||
override_dh_compress:
|
||||
|
||||
@@ -1 +1 @@
|
||||
1.0
|
||||
1.8
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
unapply-patches
|
||||
@@ -1,4 +0,0 @@
|
||||
version=3
|
||||
|
||||
opts="dversionmangle=s/\+dfsg//g" \
|
||||
http://sf.net/gramps/gramps-(.+)\.tar\.gz
|
||||
@@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE database PUBLIC "-//Gramps//DTD Gramps XML 1.6.0//EN"
|
||||
"http://gramps-project.org/xml/1.6.0/grampsxml.dtd">
|
||||
<database xmlns="http://gramps-project.org/xml/1.6.0/">
|
||||
<!DOCTYPE database PUBLIC "-//Gramps//DTD Gramps XML 1.7.1//EN"
|
||||
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd">
|
||||
<database xmlns="http://gramps-project.org/xml/1.7.1/">
|
||||
<header>
|
||||
<created date="2015-01-24" version="4.1.2"/>
|
||||
<created date="2015-07-04" version="4.2.0"/>
|
||||
<researcher>
|
||||
<resname>Alex Roitman,,,</resname>
|
||||
</researcher>
|
||||
@@ -1523,174 +1523,217 @@
|
||||
</source>
|
||||
</sources>
|
||||
<places>
|
||||
<placeobj handle="_4ZLT6DVCWT9LTZRDCS" change="1422124381" id="P0003" name="Ronne" type="City">
|
||||
<placeobj handle="_4ZLT6DVCWT9LTZRDCS" change="1422124381" id="P0003" type="City">
|
||||
<ptitle>Ronne, Bornholm, Denmark</ptitle>
|
||||
<pname value="Ronne"/>
|
||||
<placeref hlink="_cef2428d9dd233688ea3ed3cc24"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_61NT6D3G1JMOTO6Z7Y" change="1422123855" id="P0012" name="Grostorp" type="Municipality">
|
||||
<placeobj handle="_61NT6D3G1JMOTO6Z7Y" change="1422123855" id="P0012" type="Municipality">
|
||||
<ptitle>Grostorp, Kristianstad Lan, Sweden</ptitle>
|
||||
<pname value="Grostorp"/>
|
||||
<placeref hlink="_cef23a81ba8c837cc364895d88"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_67MT6DB6KWOVMBAXSY" change="1422125128" id="P0002" name="San Francisco" type="City">
|
||||
<placeobj handle="_67MT6DB6KWOVMBAXSY" change="1422125128" id="P0002" type="City">
|
||||
<ptitle>San Francisco, San Francisco Co., CA, USA</ptitle>
|
||||
<pname value="San Francisco"/>
|
||||
<placeref hlink="_cef24668db23c27d421f51c667d"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_7JMT6DN2LOF54KXHTU" change="1422125958" id="P0010" name="Reno" type="City">
|
||||
<placeobj handle="_7JMT6DN2LOF54KXHTU" change="1422125958" id="P0010" type="City">
|
||||
<ptitle>Reno, Washoe Co., NV, USA</ptitle>
|
||||
<pname value="Reno"/>
|
||||
<placeref hlink="_cef2513e057732c3f27780750d"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_A9MT6DHVWGWRP59DEV" change="1422123595" id="P0011" name="Sweden" type="Country">
|
||||
<placeobj handle="_A9MT6DHVWGWRP59DEV" change="1422123595" id="P0011" type="Country">
|
||||
<ptitle>Sweden</ptitle>
|
||||
<pname value="Sweden"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_AANT6D026O5SHNUCDH" change="1422123942" id="P0015" name="Simrishamn" type="Municipality">
|
||||
<placeobj handle="_AANT6D026O5SHNUCDH" change="1422123942" id="P0015" type="Municipality">
|
||||
<ptitle>Simrishamn, Kristianstad Lan, Sweden</ptitle>
|
||||
<pname value="Simrishamn"/>
|
||||
<placeref hlink="_cef23a81ba8c837cc364895d88"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_AKMT6DMEYZDTG9J6DS" change="1422124249" id="P0013" name="Copenhagen" type="City">
|
||||
<placeobj handle="_AKMT6DMEYZDTG9J6DS" change="1422124249" id="P0013" type="City">
|
||||
<ptitle>Copenhagen, Denmark</ptitle>
|
||||
<pname value="Copenhagen"/>
|
||||
<placeref hlink="_cef2418f9333e16e00f6ce2eb14"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_BAOT6D1WY6J4O4ARRN" change="1422125198" id="P0030" name="San Ramon" type="City">
|
||||
<placeobj handle="_BAOT6D1WY6J4O4ARRN" change="1422125198" id="P0030" type="City">
|
||||
<ptitle>San Ramon, Conta Costa Co., CA, USA</ptitle>
|
||||
<pname value="San Ramon"/>
|
||||
<placeref hlink="_cef2478a94b48a58d3be6a10493"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_DYLT6DF4DX2MNZICJ8" change="1422126222" id="P0014" name="Hoya" type="City">
|
||||
<placeobj handle="_DYLT6DF4DX2MNZICJ8" change="1422126222" id="P0014" type="City">
|
||||
<ptitle>Hoya, Sweden</ptitle>
|
||||
<alt_name>Jona</alt_name>
|
||||
<alt_name>Hoia</alt_name>
|
||||
<pname value="Hoya"/>
|
||||
<pname value="Jona"/>
|
||||
<pname value="Hoia"/>
|
||||
<placeref hlink="_A9MT6DHVWGWRP59DEV"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_ELNT6DS8GN8WI7Z4SO" change="1422125073" id="P0008" name="Hayward" type="City">
|
||||
<placeobj handle="_ELNT6DS8GN8WI7Z4SO" change="1422125073" id="P0008" type="City">
|
||||
<ptitle>Hayward, Alameda Co., CA, USA</ptitle>
|
||||
<pname value="Hayward"/>
|
||||
<placeref hlink="_cef245b044820b7405a1180f298"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_FBNT6DL92NDY0Z5SGP" change="1422125294" id="P0021" name="Santa Rosa" type="City">
|
||||
<placeobj handle="_FBNT6DL92NDY0Z5SGP" change="1422125294" id="P0021" type="City">
|
||||
<ptitle>Santa Rosa, Sonoma Co., CA, USA</ptitle>
|
||||
<pname value="Santa Rosa"/>
|
||||
<placeref hlink="_cef24b7a76efa8b9d98d67ea5a"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_GWNT6D12ZV06PK969X" change="1422125101" id="P0020" name="Sacramento" type="City">
|
||||
<placeobj handle="_GWNT6D12ZV06PK969X" change="1422125101" id="P0020" type="City">
|
||||
<ptitle>Sacramento, Sacramento Co., CA, USA</ptitle>
|
||||
<pname value="Sacramento"/>
|
||||
<placeref hlink="_cef246117947f75e54c09680419"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_HFNT6D12ZC0KOWY69T" change="1422125018" id="P0016" name="Fremont" type="City">
|
||||
<placeobj handle="_HFNT6D12ZC0KOWY69T" change="1422125018" id="P0016" type="City">
|
||||
<ptitle>Fremont, Alameda Co., CA, USA</ptitle>
|
||||
<pname value="Fremont"/>
|
||||
<placeref hlink="_cef245b044820b7405a1180f298"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_HINT6DP8JGGL0KKB8J" change="1422123879" id="P0000" name="Loderup" type="Municipality">
|
||||
<placeobj handle="_HINT6DP8JGGL0KKB8J" change="1422123879" id="P0000" type="Municipality">
|
||||
<ptitle>Loderup, Malmous Lan, Sweden</ptitle>
|
||||
<pname value="Loderup"/>
|
||||
<placeref hlink="_cef23c1ee8b7da58c764e88c637"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_IEOT6DOW3RE8AQ94HH" change="1422126043" id="P0025" name="Bí" type="Unknown">
|
||||
<placeobj handle="_IEOT6DOW3RE8AQ94HH" change="1422126043" id="P0025" type="Unknown">
|
||||
<ptitle>Bí</ptitle>
|
||||
<pname value="Bí"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_LTNT6DKZ5CR8PZSVUS" change="1422125169" id="P0022" name="San Jose" type="City">
|
||||
<placeobj handle="_LTNT6DKZ5CR8PZSVUS" change="1422125169" id="P0022" type="City">
|
||||
<ptitle>San Jose, Santa Clara Co., CA, USA</ptitle>
|
||||
<pname value="San Jose"/>
|
||||
<placeref hlink="_cef246c95c132bcf6a0255d4d17"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_PUNT6D1XHS0DJW9QP6" change="1422125605" id="P0024" name="UC Berkeley" type="University">
|
||||
<placeobj handle="_PUNT6D1XHS0DJW9QP6" change="1422125605" id="P0024" type="University">
|
||||
<ptitle>UC Berkeley, CA, USA</ptitle>
|
||||
<pname value="UC Berkeley"/>
|
||||
<placeref hlink="_cef243fb5634559442323368f63"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_PXMT6DBL0WSBL76WD7" change="1422123936" id="P0026" name="Smestorp" type="Municipality">
|
||||
<placeobj handle="_PXMT6DBL0WSBL76WD7" change="1422123936" id="P0026" type="Municipality">
|
||||
<ptitle>Smestorp, Kristianstad Lan, Sweden</ptitle>
|
||||
<pname value="Smestorp"/>
|
||||
<placeref hlink="_cef23a81ba8c837cc364895d88"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_QBOT6DN7UCCTZQ055" change="1422125399" id="P0029" name="Woodland" type="City">
|
||||
<placeobj handle="_QBOT6DN7UCCTZQ055" change="1422125399" id="P0029" type="City">
|
||||
<ptitle>Woodland, Yolo Co., CA, USA</ptitle>
|
||||
<pname value="Woodland"/>
|
||||
<placeref hlink="_cef24c2e3592e759b7797f95465"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_QJMT6DGII29FWCPX2E" change="1422124361" id="P0028" name="Ronne Bornholm" type="City">
|
||||
<placeobj handle="_QJMT6DGII29FWCPX2E" change="1422124361" id="P0028" type="City">
|
||||
<ptitle>Ronne Bornholm, Denmark</ptitle>
|
||||
<pname value="Ronne Bornholm"/>
|
||||
<placeref hlink="_cef2418f9333e16e00f6ce2eb14"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_R8MT6DRIZVNRYDK0VN" change="1422123930" id="P0027" name="Tommarp" type="Municipality">
|
||||
<placeobj handle="_R8MT6DRIZVNRYDK0VN" change="1422123930" id="P0027" type="Municipality">
|
||||
<ptitle>Tommarp, Kristianstad Lan, Sweden</ptitle>
|
||||
<pname value="Tommarp"/>
|
||||
<placeref hlink="_cef23a81ba8c837cc364895d88"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_RPMT6DTQR8J7LK98HJ" change="1422125771" id="P0019" name="Denver" type="City">
|
||||
<placeobj handle="_RPMT6DTQR8J7LK98HJ" change="1422125771" id="P0019" type="City">
|
||||
<ptitle>Denver, Denver Co., CO, USA</ptitle>
|
||||
<pname value="Denver"/>
|
||||
<placeref hlink="_cef24ffc57f28a50ea65f0af645"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_S1NT6DPOBYC1JGMR1P" change="1422125992" id="P0001" name="Sparks" type="City">
|
||||
<placeobj handle="_S1NT6DPOBYC1JGMR1P" change="1422125992" id="P0001" type="City">
|
||||
<ptitle>Sparks, Washoe Co., NV, USA</ptitle>
|
||||
<pname value="Sparks"/>
|
||||
<placeref hlink="_cef2513e057732c3f27780750d"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_XLNT6DUONITFPPEGVH" change="1422125508" id="P0009" name="Community Presbyterian Church" type="Church">
|
||||
<placeobj handle="_XLNT6DUONITFPPEGVH" change="1422125508" id="P0009" type="Church">
|
||||
<ptitle>Community Presbyterian Church, Danville, CA, USA</ptitle>
|
||||
<pname value="Community Presbyterian Church"/>
|
||||
<placeref hlink="_cef24d930653dc59ec3a36510e4"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_XSMT6DNISHYRCR1E78" change="1422123836" id="P0004" name="Gladsax" type="Municipality">
|
||||
<placeobj handle="_XSMT6DNISHYRCR1E78" change="1422123836" id="P0004" type="Municipality">
|
||||
<ptitle>Gladsax, Kristianstad Lan, Sweden</ptitle>
|
||||
<pname value="Gladsax"/>
|
||||
<placeref hlink="_cef23a81ba8c837cc364895d88"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef23a81ba8c837cc364895d88" change="1422123677" id="P0005" name="Kristianstad Lan" type="County">
|
||||
<placeobj handle="_cef23a81ba8c837cc364895d88" change="1422123677" id="P0005" type="County">
|
||||
<ptitle>Kristianstad Lan, Sweden</ptitle>
|
||||
<pname value="Kristianstad Lan"/>
|
||||
<placeref hlink="_A9MT6DHVWGWRP59DEV"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef23c1ee8b7da58c764e88c637" change="1422123662" id="P0006" name="Malmous Lan" type="County">
|
||||
<placeobj handle="_cef23c1ee8b7da58c764e88c637" change="1422123662" id="P0006" type="County">
|
||||
<ptitle>Malmous Lan, Sweden</ptitle>
|
||||
<pname value="Malmous Lan"/>
|
||||
<placeref hlink="_A9MT6DHVWGWRP59DEV"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef2418f9333e16e00f6ce2eb14" change="1422124233" id="P0007" name="Denmark" type="Country">
|
||||
<placeobj handle="_cef2418f9333e16e00f6ce2eb14" change="1422124233" id="P0007" type="Country">
|
||||
<ptitle>Denmark</ptitle>
|
||||
<pname value="Denmark"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef2428d9dd233688ea3ed3cc24" change="1422124337" id="P0017" name="Bornholm" type="Region">
|
||||
<placeobj handle="_cef2428d9dd233688ea3ed3cc24" change="1422124337" id="P0017" type="Region">
|
||||
<ptitle>Bornholm, Denmark</ptitle>
|
||||
<pname value="Bornholm"/>
|
||||
<placeref hlink="_cef2418f9333e16e00f6ce2eb14"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef2438892244290ca7fb5750" change="1422124440" id="P0018" name="USA" type="Country">
|
||||
<placeobj handle="_cef2438892244290ca7fb5750" change="1422124440" id="P0018" type="Country">
|
||||
<ptitle>USA</ptitle>
|
||||
<pname value="USA"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef243fb5634559442323368f63" change="1422124487" id="P0023" name="CA" type="State">
|
||||
<placeobj handle="_cef243fb5634559442323368f63" change="1422124487" id="P0023" type="State">
|
||||
<ptitle>CA, USA</ptitle>
|
||||
<pname value="CA"/>
|
||||
<placeref hlink="_cef2438892244290ca7fb5750"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef244224d14af0273799b281e" change="1422124514" id="P0031" name="CO" type="State">
|
||||
<placeobj handle="_cef244224d14af0273799b281e" change="1422124514" id="P0031" type="State">
|
||||
<ptitle>CO, USA</ptitle>
|
||||
<pname value="CO"/>
|
||||
<placeref hlink="_cef2438892244290ca7fb5750"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef24468f6e3a984bf57967e95d" change="1422124542" id="P0032" name="NV" type="State">
|
||||
<placeobj handle="_cef24468f6e3a984bf57967e95d" change="1422124542" id="P0032" type="State">
|
||||
<ptitle>NV, USA</ptitle>
|
||||
<pname value="NV"/>
|
||||
<placeref hlink="_cef2438892244290ca7fb5750"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef245b044820b7405a1180f298" change="1422124666" id="P0033" name="Alameda Co." type="County">
|
||||
<placeobj handle="_cef245b044820b7405a1180f298" change="1422124666" id="P0033" type="County">
|
||||
<ptitle>Alameda Co., CA, USA</ptitle>
|
||||
<pname value="Alameda Co."/>
|
||||
<placeref hlink="_cef243fb5634559442323368f63"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef246117947f75e54c09680419" change="1422124908" id="P0034" name="Sacramento Co." type="County">
|
||||
<placeobj handle="_cef246117947f75e54c09680419" change="1422124908" id="P0034" type="County">
|
||||
<ptitle>Sacramento Co., CA, USA</ptitle>
|
||||
<pname value="Sacramento Co."/>
|
||||
<placeref hlink="_cef243fb5634559442323368f63"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef24668db23c27d421f51c667d" change="1422124741" id="P0035" name="San Francisco Co." type="County">
|
||||
<placeobj handle="_cef24668db23c27d421f51c667d" change="1422124741" id="P0035" type="County">
|
||||
<ptitle>San Francisco Co., CA, USA</ptitle>
|
||||
<pname value="San Francisco Co."/>
|
||||
<placeref hlink="_cef243fb5634559442323368f63"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef246c95c132bcf6a0255d4d17" change="1422124781" id="P0036" name="Santa Clara Co." type="County">
|
||||
<placeobj handle="_cef246c95c132bcf6a0255d4d17" change="1422124781" id="P0036" type="County">
|
||||
<ptitle>Santa Clara Co., CA, USA</ptitle>
|
||||
<pname value="Santa Clara Co."/>
|
||||
<placeref hlink="_cef243fb5634559442323368f63"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef2478a94b48a58d3be6a10493" change="1422124860" id="P0037" name="Conta Costa Co." type="County">
|
||||
<placeobj handle="_cef2478a94b48a58d3be6a10493" change="1422124860" id="P0037" type="County">
|
||||
<ptitle>Conta Costa Co., CA, USA</ptitle>
|
||||
<pname value="Conta Costa Co."/>
|
||||
<placeref hlink="_cef243fb5634559442323368f63"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef24b7a76efa8b9d98d67ea5a" change="1422125273" id="P0038" name="Sonoma Co." type="County">
|
||||
<placeobj handle="_cef24b7a76efa8b9d98d67ea5a" change="1422125273" id="P0038" type="County">
|
||||
<ptitle>Sonoma Co., CA, USA</ptitle>
|
||||
<pname value="Sonoma Co."/>
|
||||
<placeref hlink="_cef243fb5634559442323368f63"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef24c2e3592e759b7797f95465" change="1422125420" id="P0039" name="Yolo Co." type="County">
|
||||
<placeobj handle="_cef24c2e3592e759b7797f95465" change="1422125420" id="P0039" type="County">
|
||||
<ptitle>Yolo Co., CA, USA</ptitle>
|
||||
<pname value="Yolo Co."/>
|
||||
<placeref hlink="_cef243fb5634559442323368f63"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef24d930653dc59ec3a36510e4" change="1422125493" id="P0040" name="Danville" type="City">
|
||||
<placeobj handle="_cef24d930653dc59ec3a36510e4" change="1422125493" id="P0040" type="City">
|
||||
<ptitle>Danville, CA, USA</ptitle>
|
||||
<pname value="Danville"/>
|
||||
<placeref hlink="_cef243fb5634559442323368f63"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef24ffc57f28a50ea65f0af645" change="1422125745" id="P0041" name="Denver Co." type="County">
|
||||
<placeobj handle="_cef24ffc57f28a50ea65f0af645" change="1422125745" id="P0041" type="County">
|
||||
<ptitle>Denver Co., CO, USA</ptitle>
|
||||
<pname value="Denver Co."/>
|
||||
<placeref hlink="_cef244224d14af0273799b281e"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef2513e057732c3f27780750d" change="1422125877" id="P0042" name="Washoe Co." type="County">
|
||||
<placeobj handle="_cef2513e057732c3f27780750d" change="1422125877" id="P0042" type="County">
|
||||
<ptitle>Washoe Co., NV, USA</ptitle>
|
||||
<pname value="Washoe Co."/>
|
||||
<placeref hlink="_cef24468f6e3a984bf57967e95d"/>
|
||||
</placeobj>
|
||||
</places>
|
||||
|
||||
@@ -57,8 +57,7 @@ class DateParserHR(DateParser):
|
||||
'po. ' : Date.MOD_AFTER,
|
||||
'okolo' : Date.MOD_ABOUT,
|
||||
'ok. ' : Date.MOD_ABOUT,
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
quality_to_int = {
|
||||
'približno' : Date.QUAL_ESTIMATED,
|
||||
@@ -70,26 +69,6 @@ class DateParserHR(DateParser):
|
||||
bce = ["prije nove ere", "prije Krista",
|
||||
"p.n.e."] + DateParser.bce
|
||||
|
||||
# def init_strings(self):
|
||||
# """
|
||||
# compiles regular expression strings for matching dates
|
||||
# """
|
||||
# DateParser.init_strings(self)
|
||||
# #~ DateParser.calendar_to_int.update({
|
||||
# #~ 'персидский' : Date.CAL_PERSIAN,
|
||||
# #~ 'п' : Date.CAL_PERSIAN,
|
||||
# #~ })
|
||||
# _span_1 = ['od']
|
||||
# _span_2 = ['do']
|
||||
# _range_1 = ['između']
|
||||
# _range_2 = ['i']
|
||||
# self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
# ('|'.join(_span_1), '|'.join(_span_2)),
|
||||
# re.IGNORECASE)
|
||||
# self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
# ('|'.join(_range_1), '|'.join(_range_2)),
|
||||
# re.IGNORECASE)
|
||||
|
||||
def init_strings(self):
|
||||
"""
|
||||
compiles regular expression strings for matching dates
|
||||
@@ -98,6 +77,8 @@ class DateParserHR(DateParser):
|
||||
# match 'Day. MONTH year.' format with or without dots
|
||||
self._text2 = re.compile('(\d+)?\.?\s*?%s\.?\s*((\d+)(/\d+)?)?\s*\.?$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
|
||||
|
||||
# match Day.Month.Year.
|
||||
self._numeric = re.compile(
|
||||
"((\d+)[/\. ])?\s*((\d+)[/\.])?\s*(\d+)\.?$")
|
||||
@@ -141,7 +122,12 @@ class DateDisplayHR(DateDisplay):
|
||||
def dd_dformat04(self, date_val, inflect, long_months):
|
||||
"""
|
||||
day month_name year
|
||||
|
||||
this must agree with DateDisplayEn's "formats" definition
|
||||
(it may be overridden if a locale-specific date displayer exists)
|
||||
"""
|
||||
|
||||
_ = self._locale.translation.sgettext
|
||||
year = self._slash_year(date_val[2], date_val[3])
|
||||
if date_val[0] == 0:
|
||||
if date_val[1] == 0:
|
||||
@@ -149,11 +135,15 @@ class DateDisplayHR(DateDisplay):
|
||||
else:
|
||||
return self.format_long_month_year(date_val[1], year,
|
||||
inflect, long_months)
|
||||
elif date_val[1] == 0: # month is zero but day is not (see 8477)
|
||||
return self.display_iso(date_val)
|
||||
else:
|
||||
return "{day:d}. {long_month.f[G]} {year}.".format(
|
||||
day = date_val[0],
|
||||
long_month = long_months[date_val[1]],
|
||||
year = year)
|
||||
# TRANSLATORS: this month is ALREADY inflected: ignore it
|
||||
return _("{day:d} {long_month} {year}").format(
|
||||
day = date_val[0],
|
||||
long_month = self.format_long_month(date_val[1],
|
||||
inflect, long_months).replace('.', ''),
|
||||
year = year)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
@@ -96,7 +96,7 @@ class GenericFilter(object):
|
||||
def get_invert(self):
|
||||
return self.invert
|
||||
|
||||
def get_name(self):
|
||||
def get_name(self, ulocale=glocale):
|
||||
return self.name
|
||||
|
||||
def set_name(self, name):
|
||||
|
||||
@@ -51,9 +51,14 @@ class IsEnclosedBy(Rule):
|
||||
category = _('General filters')
|
||||
|
||||
def prepare(self, db):
|
||||
self.handle = db.get_place_from_gramps_id(self.list[0]).handle
|
||||
self.handle = None
|
||||
place = db.get_place_from_gramps_id(self.list[0])
|
||||
if place:
|
||||
self.handle = place.handle
|
||||
|
||||
def apply(self, db, place):
|
||||
if self.handle is None:
|
||||
return False
|
||||
if located_in(db, place.handle, self.handle):
|
||||
return True
|
||||
return False
|
||||
|
||||
@@ -309,8 +309,12 @@ class Gramplet(object):
|
||||
self.interrupt()
|
||||
self._generator = self.main()
|
||||
self._pause = False
|
||||
self._idle_id = GLib.idle_add(self._updater,
|
||||
if GObject.pygobject_version < (3,16,0):
|
||||
self._idle_id = GLib.idle_add(self._updater,
|
||||
priority=GObject.PRIORITY_LOW - 10)
|
||||
else:
|
||||
self._idle_id = GLib.idle_add(self._updater,
|
||||
priority=GLib.PRIORITY_LOW - 10)
|
||||
|
||||
def _updater(self):
|
||||
"""
|
||||
@@ -364,8 +368,12 @@ class Gramplet(object):
|
||||
"""
|
||||
from gi.repository import GObject, GLib
|
||||
self._pause = False
|
||||
self._idle_id = GLib.idle_add(self._updater,
|
||||
if GObject.pygobject_version < (3,16,0):
|
||||
self._idle_id = GLib.idle_add(self._updater,
|
||||
priority=GObject.PRIORITY_LOW - 10)
|
||||
else:
|
||||
self._idle_id = GLib.idle_add(self._updater,
|
||||
priority=GLib.PRIORITY_LOW - 10)
|
||||
|
||||
def update_all(self, *args):
|
||||
"""
|
||||
|
||||
@@ -453,6 +453,7 @@ class EditRule(ManagedWindow):
|
||||
self.valuebox = self.get_widget('valuebox')
|
||||
self.rname = self.get_widget('ruletree')
|
||||
self.rule_name = self.get_widget('rulename')
|
||||
self.description = self.get_widget('description')
|
||||
|
||||
self.notebook = Gtk.Notebook()
|
||||
self.notebook.set_show_tabs(0)
|
||||
@@ -462,7 +463,6 @@ class EditRule(ManagedWindow):
|
||||
self.page_num = 0
|
||||
self.page = []
|
||||
self.class2page = {}
|
||||
the_map = {}
|
||||
|
||||
if self.namespace == 'Person':
|
||||
class_list = rules.person.editor_rule_list
|
||||
@@ -490,10 +490,6 @@ class EditRule(ManagedWindow):
|
||||
pos = 0
|
||||
l2 = Gtk.Label(label=class_obj.name, halign=Gtk.Align.START)
|
||||
l2.show()
|
||||
c = Gtk.TreeView()
|
||||
#c.set_data('d', pos)
|
||||
c.show()
|
||||
the_map[class_obj] = c
|
||||
grid = Gtk.Grid()
|
||||
grid.set_border_width(12)
|
||||
grid.set_column_spacing(6)
|
||||
@@ -639,7 +635,7 @@ class EditRule(ManagedWindow):
|
||||
else:
|
||||
self.sel_class = None
|
||||
|
||||
keys = sorted(the_map, key=lambda x: x.name, reverse=True)
|
||||
keys = sorted(class_list, key=lambda x: x.name, reverse=True)
|
||||
catlist = sorted(set(class_obj.category for class_obj in keys))
|
||||
|
||||
for category in catlist:
|
||||
@@ -728,23 +724,22 @@ class EditRule(ManagedWindow):
|
||||
Update the informational display on the right hand side of the dialog
|
||||
box with the description of the selected report.
|
||||
"""
|
||||
|
||||
store, node = self.selection.get_selected()
|
||||
if node:
|
||||
try:
|
||||
class_obj = store.get_value(node, 1)
|
||||
self.display_values(class_obj)
|
||||
except:
|
||||
self.valuebox.set_sensitive(0)
|
||||
self.rule_name.set_text(_('No rule selected'))
|
||||
self.get_widget('description').set_text('')
|
||||
class_obj = store.get_value(node, 1)
|
||||
self.display_values(class_obj)
|
||||
|
||||
def display_values(self, class_obj):
|
||||
page = self.class2page[class_obj]
|
||||
self.notebook.set_current_page(page)
|
||||
self.valuebox.set_sensitive(1)
|
||||
self.rule_name.set_text(class_obj.name)
|
||||
self.get_widget('description').set_text(class_obj.description)
|
||||
if class_obj in self.class2page:
|
||||
page = self.class2page[class_obj]
|
||||
self.notebook.set_current_page(page)
|
||||
self.valuebox.set_sensitive(1)
|
||||
self.rule_name.set_text(class_obj.name)
|
||||
self.description.set_text(class_obj.description)
|
||||
else:
|
||||
self.valuebox.set_sensitive(0)
|
||||
self.rule_name.set_text(_('No rule selected'))
|
||||
self.description.set_text('')
|
||||
|
||||
def rule_ok(self, obj):
|
||||
if self.rule_name.get_text() == _('No rule selected'):
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#
|
||||
# Copyright (C) 2002-2006 Donald N. Allingham
|
||||
# Copyright (C) 2008 Gary Burton
|
||||
# Copyright (C) 2010 Nick Hall
|
||||
# Copyright (C) 2010,2015 Nick Hall
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -45,7 +45,7 @@ from gramps.gen.lib import Place, PlaceType
|
||||
from .. import build_filter_model
|
||||
from . import SidebarFilter
|
||||
from gramps.gen.filters import GenericFilterFactory, rules
|
||||
from gramps.gen.filters.rules.place import (RegExpIdOf, HasData, HasTitle,
|
||||
from gramps.gen.filters.rules.place import (RegExpIdOf, HasData, IsEnclosedBy,
|
||||
HasTag, HasNoteRegexp,
|
||||
MatchesFilter)
|
||||
|
||||
@@ -61,7 +61,6 @@ class PlaceSidebarFilter(SidebarFilter):
|
||||
self.clicked_func = clicked
|
||||
|
||||
self.filter_id = widgets.BasicEntry()
|
||||
self.filter_title = widgets.BasicEntry()
|
||||
self.filter_name = widgets.BasicEntry()
|
||||
self.filter_place = Place()
|
||||
self.filter_place.set_type((PlaceType.CUSTOM, ''))
|
||||
@@ -72,6 +71,7 @@ class PlaceSidebarFilter(SidebarFilter):
|
||||
self.filter_place.set_type,
|
||||
self.filter_place.get_type)
|
||||
self.filter_code = widgets.BasicEntry()
|
||||
self.filter_enclosed = widgets.PlaceEntry(dbstate, uistate, [])
|
||||
self.filter_note = widgets.BasicEntry()
|
||||
|
||||
self.filter_regex = Gtk.CheckButton(label=_('Use regular expressions'))
|
||||
@@ -95,10 +95,10 @@ class PlaceSidebarFilter(SidebarFilter):
|
||||
self.tag.add_attribute(cell, 'text', 0)
|
||||
|
||||
self.add_text_entry(_('ID'), self.filter_id)
|
||||
self.add_text_entry(_('Title'), self.filter_title)
|
||||
self.add_text_entry(_('Name'), self.filter_name)
|
||||
self.add_entry(_('Type'), self.ptype)
|
||||
self.add_text_entry(_('Code'), self.filter_code)
|
||||
self.add_text_entry(_('Enclosed By'), self.filter_enclosed)
|
||||
self.add_text_entry(_('Note'), self.filter_note)
|
||||
self.add_entry(_('Tag'), self.tag)
|
||||
self.add_filter_entry(_('Custom filter'), self.generic)
|
||||
@@ -106,9 +106,9 @@ class PlaceSidebarFilter(SidebarFilter):
|
||||
|
||||
def clear(self, obj):
|
||||
self.filter_id.set_text('')
|
||||
self.filter_title.set_text('')
|
||||
self.filter_name.set_text('')
|
||||
self.filter_code.set_text('')
|
||||
self.filter_enclosed.set_text('')
|
||||
self.filter_note.set_text('')
|
||||
self.ptype.get_child().set_text('')
|
||||
self.tag.set_active(0)
|
||||
@@ -116,16 +116,16 @@ class PlaceSidebarFilter(SidebarFilter):
|
||||
|
||||
def get_filter(self):
|
||||
gid = str(self.filter_id.get_text()).strip()
|
||||
title = str(self.filter_title.get_text()).strip()
|
||||
name = str(self.filter_name.get_text()).strip()
|
||||
ptype = self.filter_place.get_type().xml_str()
|
||||
code = str(self.filter_code.get_text()).strip()
|
||||
enclosed = str(self.filter_enclosed.get_text()).strip()
|
||||
note = str(self.filter_note.get_text()).strip()
|
||||
regex = self.filter_regex.get_active()
|
||||
tag = self.tag.get_active() > 0
|
||||
gen = self.generic.get_active() > 0
|
||||
|
||||
empty = not (gid or title or name or ptype or code or note or regex
|
||||
empty = not (gid or name or ptype or code or enclosed or note or regex
|
||||
or tag or gen)
|
||||
if empty:
|
||||
generic_filter = None
|
||||
@@ -135,8 +135,8 @@ class PlaceSidebarFilter(SidebarFilter):
|
||||
rule = RegExpIdOf([gid], use_regex=regex)
|
||||
generic_filter.add_rule(rule)
|
||||
|
||||
if title:
|
||||
rule = HasTitle([title], use_regex=regex)
|
||||
if enclosed:
|
||||
rule = IsEnclosedBy([enclosed])
|
||||
generic_filter.add_rule(rule)
|
||||
|
||||
rule = HasData([name, ptype, code], use_regex=regex)
|
||||
|
||||
@@ -879,10 +879,13 @@
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">start</property>
|
||||
<property name="margin_left">12</property>
|
||||
<property name="margin_right">12</property>
|
||||
<property name="label" translatable="yes">No rule selected</property>
|
||||
<property name="wrap">True</property>
|
||||
<property name="width_chars">40</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
@@ -917,6 +920,8 @@
|
||||
<property name="margin_right">12</property>
|
||||
<property name="label" translatable="yes">No description</property>
|
||||
<property name="wrap">True</property>
|
||||
<property name="width_chars">40</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
|
||||
@@ -117,6 +117,8 @@ def _initialize_options(options, dbstate, uistate):
|
||||
if not dbase.get_family_from_gramps_id(value):
|
||||
person_handle = uistate.get_active('Person')
|
||||
person = dbase.get_person_from_handle(person_handle)
|
||||
if person is None:
|
||||
continue
|
||||
family_list = person.get_family_handle_list()
|
||||
if family_list:
|
||||
family_handle = family_list[0]
|
||||
@@ -959,7 +961,7 @@ class BookDialog(DocReportDialog):
|
||||
|
||||
def make_document(self):
|
||||
"""Create a document of the type requested by the user."""
|
||||
user = User()
|
||||
user = User(uistate=self.uistate)
|
||||
self.rptlist = []
|
||||
selected_style = StyleSheet()
|
||||
|
||||
|
||||
@@ -692,7 +692,7 @@ def report(dbstate, uistate, person, report_class, options_class,
|
||||
if response == Gtk.ResponseType.OK:
|
||||
dialog.close()
|
||||
try:
|
||||
user = User()
|
||||
user = User(uistate=uistate)
|
||||
MyReport = report_class(dialog.db, dialog.options, user)
|
||||
MyReport.doc.init()
|
||||
MyReport.begin_report()
|
||||
|
||||
@@ -67,7 +67,10 @@ class User(user.User):
|
||||
:type steps: int
|
||||
:returns: none
|
||||
"""
|
||||
self._progress = ProgressMeter(title)
|
||||
if self.uistate:
|
||||
self._progress = ProgressMeter(title, parent=self.uistate.window)
|
||||
else:
|
||||
self._progress = ProgressMeter(title)
|
||||
if steps > 0:
|
||||
self._progress.set_pass(message, steps, ProgressMeter.MODE_FRACTION)
|
||||
else:
|
||||
|
||||
@@ -358,7 +358,8 @@ class ViewManager(CLIManager):
|
||||
|
||||
self.window = Gtk.Window()
|
||||
self.window.set_icon_from_file(ICON)
|
||||
self.window.set_has_resize_grip(True)
|
||||
if Gtk.get_minor_version() < 14:
|
||||
self.window.set_has_resize_grip(True)
|
||||
self.window.set_default_size(width, height)
|
||||
|
||||
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
||||
|
||||
@@ -28,6 +28,7 @@ from .expandcollapsearrow import *
|
||||
from .labels import *
|
||||
from .linkbox import *
|
||||
from .photo import *
|
||||
from .placeentry import *
|
||||
from .monitoredwidgets import *
|
||||
from .selectionwidget import SelectionWidget, Region
|
||||
from .shortlistcomboentry import *
|
||||
|
||||
@@ -47,7 +47,11 @@ from gramps.gen.constfunc import has_display
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
if has_display():
|
||||
HAND_CURSOR = Gdk.Cursor.new(Gdk.CursorType.HAND2)
|
||||
if Gtk.get_minor_version() < 16:
|
||||
HAND_CURSOR = Gdk.Cursor.new(Gdk.CursorType.HAND2)
|
||||
else:
|
||||
HAND_CURSOR = Gdk.Cursor.new_for_display(Gdk.Display.get_default(),
|
||||
Gdk.CursorType.HAND2)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
@@ -197,14 +197,32 @@ GRABBERS_SWITCH = [
|
||||
|
||||
# cursors
|
||||
try:
|
||||
CURSOR_UPPER = Gdk.Cursor.new(Gdk.CursorType.TOP_SIDE)
|
||||
CURSOR_LOWER = Gdk.Cursor.new(Gdk.CursorType.BOTTOM_SIDE)
|
||||
CURSOR_LEFT = Gdk.Cursor.new(Gdk.CursorType.LEFT_SIDE)
|
||||
CURSOR_RIGHT = Gdk.Cursor.new(Gdk.CursorType.RIGHT_SIDE)
|
||||
CURSOR_UPPER_LEFT = Gdk.Cursor.new(Gdk.CursorType.TOP_LEFT_CORNER)
|
||||
CURSOR_UPPER_RIGHT = Gdk.Cursor.new(Gdk.CursorType.TOP_RIGHT_CORNER)
|
||||
CURSOR_LOWER_LEFT = Gdk.Cursor.new(Gdk.CursorType.BOTTOM_LEFT_CORNER)
|
||||
CURSOR_LOWER_RIGHT = Gdk.Cursor.new(Gdk.CursorType.BOTTOM_RIGHT_CORNER)
|
||||
if Gtk.get_minor_version() < 16:
|
||||
CURSOR_UPPER = Gdk.Cursor.new(Gdk.CursorType.TOP_SIDE)
|
||||
CURSOR_LOWER = Gdk.Cursor.new(Gdk.CursorType.BOTTOM_SIDE)
|
||||
CURSOR_LEFT = Gdk.Cursor.new(Gdk.CursorType.LEFT_SIDE)
|
||||
CURSOR_RIGHT = Gdk.Cursor.new(Gdk.CursorType.RIGHT_SIDE)
|
||||
CURSOR_UPPER_LEFT = Gdk.Cursor.new(Gdk.CursorType.TOP_LEFT_CORNER)
|
||||
CURSOR_UPPER_RIGHT = Gdk.Cursor.new(Gdk.CursorType.TOP_RIGHT_CORNER)
|
||||
CURSOR_LOWER_LEFT = Gdk.Cursor.new(Gdk.CursorType.BOTTOM_LEFT_CORNER)
|
||||
CURSOR_LOWER_RIGHT = Gdk.Cursor.new(Gdk.CursorType.BOTTOM_RIGHT_CORNER)
|
||||
else:
|
||||
CURSOR_UPPER = Gdk.Cursor.new_for_display(Gdk.Display.get_default(),
|
||||
Gdk.CursorType.TOP_SIDE)
|
||||
CURSOR_LOWER = Gdk.Cursor.new_for_display(Gdk.Display.get_default(),
|
||||
Gdk.CursorType.BOTTOM_SIDE)
|
||||
CURSOR_LEFT = Gdk.Cursor.new_for_display(Gdk.Display.get_default(),
|
||||
Gdk.CursorType.LEFT_SIDE)
|
||||
CURSOR_RIGHT = Gdk.Cursor.new_for_display(Gdk.Display.get_default(),
|
||||
Gdk.CursorType.RIGHT_SIDE)
|
||||
CURSOR_UPPER_LEFT = Gdk.Cursor.new_for_display(Gdk.Display.get_default(),
|
||||
Gdk.CursorType.TOP_LEFT_CORNER)
|
||||
CURSOR_UPPER_RIGHT = Gdk.Cursor.new_for_display(Gdk.Display.get_default(),
|
||||
Gdk.CursorType.TOP_RIGHT_CORNER)
|
||||
CURSOR_LOWER_LEFT = Gdk.Cursor.new_for_display(Gdk.Display.get_default(),
|
||||
Gdk.CursorType.BOTTOM_LEFT_CORNER)
|
||||
CURSOR_LOWER_RIGHT = Gdk.Cursor.new_for_display(Gdk.Display.get_default(),
|
||||
Gdk.CursorType.BOTTOM_RIGHT_CORNER)
|
||||
except:
|
||||
CURSOR_UPPER = None
|
||||
CURSOR_LOWER = None
|
||||
|
||||
@@ -57,7 +57,11 @@ from ..utils import rgb_to_hex
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
if has_display():
|
||||
HAND_CURSOR = Gdk.Cursor.new(Gdk.CursorType.HAND2)
|
||||
if Gtk.get_minor_version() < 16:
|
||||
HAND_CURSOR = Gdk.Cursor.new(Gdk.CursorType.HAND2)
|
||||
else:
|
||||
HAND_CURSOR = Gdk.Cursor.new_for_display(Gdk.Display.get_default(),
|
||||
Gdk.CursorType.HAND2)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2015 Nick Hall
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
__all__ = ["PlaceEntry"]
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Standard python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import logging
|
||||
_LOG = logging.getLogger(".widgets.placeentry")
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# GTK/Gnome modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gi.repository import Gtk
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Gramps modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from ..selectors import SelectorFactory
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# PlaceEntry class
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class PlaceEntry(Gtk.Box):
|
||||
|
||||
def __init__(self, dbstate, uistate, track):
|
||||
Gtk.Box.__init__(self)
|
||||
self.dbstate = dbstate
|
||||
self.uistate = uistate
|
||||
self.track = track
|
||||
self.entry = Gtk.Entry()
|
||||
self.entry.set_width_chars(5)
|
||||
self.pack_start(self.entry, True, True, 0)
|
||||
image = Gtk.Image()
|
||||
image.set_from_icon_name('gtk-index', Gtk.IconSize.BUTTON)
|
||||
button = Gtk.Button()
|
||||
button.set_image(image)
|
||||
button.set_relief(Gtk.ReliefStyle.NORMAL)
|
||||
self.pack_start(button, False, True, 0)
|
||||
button.connect('clicked', self.on_clicked)
|
||||
self.show_all()
|
||||
|
||||
def on_clicked(self, button):
|
||||
SelectPlace = SelectorFactory('Place')
|
||||
sel = SelectPlace(self.dbstate, self.uistate, self.track)
|
||||
place = sel.run()
|
||||
if place:
|
||||
self.set_text(place.gramps_id)
|
||||
|
||||
def get_text(self):
|
||||
return self.entry.get_text()
|
||||
|
||||
def set_text(self, text):
|
||||
self.entry.set_text(text)
|
||||
@@ -171,14 +171,14 @@ class SelectionWidget(Gtk.ScrolledWindow):
|
||||
"""
|
||||
|
||||
__gsignals__ = {
|
||||
"region-modified": (GObject.SIGNAL_RUN_FIRST, None, ()),
|
||||
"region-created": (GObject.SIGNAL_RUN_FIRST, None, ()),
|
||||
"region-selected": (GObject.SIGNAL_RUN_FIRST, None, ()),
|
||||
"selection-cleared": (GObject.SIGNAL_RUN_FIRST, None, ()),
|
||||
"right-button-clicked": (GObject.SIGNAL_RUN_FIRST, None, ()),
|
||||
"zoomed-in": (GObject.SIGNAL_RUN_FIRST, None, ()),
|
||||
"zoomed-out": (GObject.SIGNAL_RUN_FIRST, None, ())
|
||||
}
|
||||
"region-modified": (GObject.SignalFlags.RUN_FIRST, None, ()),
|
||||
"region-created": (GObject.SignalFlags.RUN_FIRST, None, ()),
|
||||
"region-selected": (GObject.SignalFlags.RUN_FIRST, None, ()),
|
||||
"selection-cleared": (GObject.SignalFlags.RUN_FIRST, None, ()),
|
||||
"right-button-clicked": (GObject.SignalFlags.RUN_FIRST, None, ()),
|
||||
"zoomed-in": (GObject.SignalFlags.RUN_FIRST, None, ()),
|
||||
"zoomed-out": (GObject.SignalFlags.RUN_FIRST, None, ())
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
"""
|
||||
|
||||
@@ -1116,16 +1116,21 @@ class ValidatableMaskedEntry(MaskedEntry):
|
||||
'changed': 'override',
|
||||
}
|
||||
|
||||
if GLib.MINOR_VERSION < 42:
|
||||
__gparam = GObject.PARAM_READWRITE
|
||||
else:
|
||||
__gparam = GObject.ParamFlags.READWRITE
|
||||
|
||||
__gproperties__ = {
|
||||
'data-type': (GObject.TYPE_PYOBJECT,
|
||||
'Data Type of the widget',
|
||||
'Type object',
|
||||
GObject.PARAM_READWRITE),
|
||||
__gparam),
|
||||
'mandatory': (GObject.TYPE_BOOLEAN,
|
||||
'Mandatory',
|
||||
'Mandatory',
|
||||
False,
|
||||
GObject.PARAM_READWRITE),
|
||||
__gparam),
|
||||
}
|
||||
|
||||
# FIXME put the data type support back
|
||||
|
||||
@@ -83,7 +83,7 @@ class SvgDrawDoc(BaseDoc, DrawDoc):
|
||||
name = "%s.svg" % self.root
|
||||
|
||||
try:
|
||||
self.f = open(name,"w")
|
||||
self.f = open(name,"w", encoding="utf-8")
|
||||
except IOError as msg:
|
||||
raise ReportError(_("Could not create %s") % name, msg)
|
||||
except:
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2000-2007 Donald N. Allingham
|
||||
# Copyright (C) 2007-2008 Brian G. Matherly
|
||||
# Copyright (C) 2010 Jakim Friant
|
||||
# Copyright (C) 2010-2015 Craig J. Anderson
|
||||
# Copyright (C) 2014 Paul Franklin
|
||||
# Copyright (C) 2010-2015 Craig J. Anderson
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -943,11 +943,12 @@ class AncestorTreeOptions(MenuReportOptions):
|
||||
|
||||
self.__check_blank()
|
||||
|
||||
self.__include_images = BooleanOption(
|
||||
_('Include thumbnail images of people'), False)
|
||||
self.__include_images.set_help(
|
||||
_("Whether to include thumbnails of people."))
|
||||
menu.add_option(category_name, "includeImages", self.__include_images)
|
||||
# TODO this code is never used and so I conclude it is for future use
|
||||
# self.__include_images = BooleanOption(
|
||||
# _('Include thumbnail images of people'), False)
|
||||
# self.__include_images.set_help(
|
||||
# _("Whether to include thumbnails of people."))
|
||||
# menu.add_option(category_name, "includeImages", self.__include_images)
|
||||
|
||||
#category_name = _("Notes")
|
||||
|
||||
@@ -1046,13 +1047,12 @@ class AncestorTreeOptions(MenuReportOptions):
|
||||
graph_style.set_fill_color((255, 255, 255))
|
||||
default_style.add_draw_style("AC2-note-box", graph_style)
|
||||
|
||||
# TODO - Why is this here twice?
|
||||
#graph_style = GraphicsStyle()
|
||||
#graph_style.set_paragraph_style("AC2-Title")
|
||||
#graph_style.set_color((0, 0, 0))
|
||||
#graph_style.set_fill_color((255, 255, 255))
|
||||
#graph_style.set_line_width(0)
|
||||
#default_style.add_draw_style("AC2-Title", graph_style)
|
||||
graph_style = GraphicsStyle()
|
||||
graph_style.set_paragraph_style("AC2-Title")
|
||||
graph_style.set_color((0, 0, 0))
|
||||
graph_style.set_fill_color((255, 255, 255))
|
||||
graph_style.set_line_width(0)
|
||||
default_style.add_draw_style("AC2-Title", graph_style)
|
||||
|
||||
graph_style = GraphicsStyle()
|
||||
default_style.add_draw_style("AC2-line", graph_style)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
# Copyright (C) 2007-2008 Brian G. Matherly
|
||||
# Copyright (C) 2008 Peter Landgren
|
||||
# Copyright (C) 2010 Jakim Friant
|
||||
# Copyright (C) 2012-2014 Paul Franklin
|
||||
# Copyright (C) 2012-2015 Paul Franklin
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -763,12 +763,12 @@ class StatisticsChart(Report):
|
||||
% mapping )
|
||||
else:
|
||||
span_string = self._("Persons born "
|
||||
"%(year_from)04d-%(year_to)04d"
|
||||
% mapping )
|
||||
"%(year_from)04d-%(year_to)04d") % mapping
|
||||
|
||||
# extract requested items from the database and count them
|
||||
self._user.begin_progress(_('Statistics Charts'),
|
||||
_('Collecting data...'), 0)
|
||||
_('Collecting data...'),
|
||||
database.get_number_of_people())
|
||||
tables = _Extract.collect_data(self.database, self.filter, menu,
|
||||
gender, year_from, year_to,
|
||||
get_value('no_years'),
|
||||
@@ -785,16 +785,12 @@ class StatisticsChart(Report):
|
||||
# generate sorted item lookup index index
|
||||
lookup = self.index_items(table[1], sortby, reverse)
|
||||
# document heading
|
||||
heading = "%(str1)s -- %(str2)s\n%(str3)s" % {
|
||||
heading = "%(str1)s -- %(str2)s" % {
|
||||
'str1' : self._(table[0]),
|
||||
'str2' : span_string,
|
||||
'str3' : filter_name }
|
||||
self.data.append((heading, table[0], table[1], lookup))
|
||||
'str2' : span_string }
|
||||
self.data.append((heading, filter_name, table[0], table[1], lookup))
|
||||
self._user.step_progress()
|
||||
self._user.end_progress()
|
||||
#DEBUG
|
||||
#print heading
|
||||
#print table[1]
|
||||
|
||||
def index_items(self, data, sort, reverse):
|
||||
"""creates & stores a sorted index for the items"""
|
||||
@@ -818,21 +814,21 @@ class StatisticsChart(Report):
|
||||
mark = IndexMark(self._('Statistics Charts'), INDEX_TYPE_TOC, 1)
|
||||
self._user.begin_progress(_('Statistics Charts'),
|
||||
_('Saving charts...'), len(self.data))
|
||||
for data in self.data:
|
||||
for data in sorted(self.data):
|
||||
self.doc.start_page()
|
||||
if mark:
|
||||
self.doc.draw_text('SC-title', '', 0, 0, mark) # put it in TOC
|
||||
mark = None # crock, but we only want one of them
|
||||
if len(data[2]) < self.bar_items:
|
||||
self.output_piechart(*data[:4])
|
||||
if len(data[3]) < self.bar_items:
|
||||
self.output_piechart(*data[:5])
|
||||
else:
|
||||
self.output_barchart(*data[:4])
|
||||
self.output_barchart(*data[:5])
|
||||
self.doc.end_page()
|
||||
self._user.step_progress()
|
||||
self._user.end_progress()
|
||||
|
||||
|
||||
def output_piechart(self, title, typename, data, lookup):
|
||||
def output_piechart(self, title1, title2, typename, data, lookup):
|
||||
|
||||
# set layout variables
|
||||
middle_w = self.doc.get_usable_width() / 2
|
||||
@@ -840,11 +836,12 @@ class StatisticsChart(Report):
|
||||
middle = min(middle_w,middle_h)
|
||||
|
||||
# start output
|
||||
mark = IndexMark(title, INDEX_TYPE_TOC, 2)
|
||||
self.doc.center_text('SC-title', title, middle_w, 0, mark)
|
||||
style_sheet = self.doc.get_style_sheet()
|
||||
pstyle = style_sheet.get_paragraph_style('SC-Title')
|
||||
mark = IndexMark(title1, INDEX_TYPE_TOC, 2)
|
||||
self.doc.center_text('SC-title', title1, middle_w, 0, mark)
|
||||
yoffset = ReportUtils.pt2cm(pstyle.get_font().get_size())
|
||||
self.doc.center_text('SC-title', title2, middle_w, yoffset)
|
||||
|
||||
# collect data for output
|
||||
color = 0
|
||||
@@ -872,7 +869,7 @@ class StatisticsChart(Report):
|
||||
draw_legend(self.doc, legendx, yoffset, chart_data, text,'SC-legend')
|
||||
|
||||
|
||||
def output_barchart(self, title, typename, data, lookup):
|
||||
def output_barchart(self, title1, title2, typename, data, lookup):
|
||||
|
||||
pt2cm = ReportUtils.pt2cm
|
||||
style_sheet = self.doc.get_style_sheet()
|
||||
@@ -895,11 +892,12 @@ class StatisticsChart(Report):
|
||||
maxsize = stopx - margin
|
||||
|
||||
# start output
|
||||
mark = IndexMark(title, INDEX_TYPE_TOC, 2)
|
||||
self.doc.center_text('SC-title', title, middle, 0, mark)
|
||||
pstyle = style_sheet.get_paragraph_style('SC-Title')
|
||||
mark = IndexMark(title1, INDEX_TYPE_TOC, 2)
|
||||
self.doc.center_text('SC-title', title1, middle, 0, mark)
|
||||
yoffset = pt2cm(pstyle.get_font().get_size())
|
||||
self.doc.center_text('SC-title', title2, middle, yoffset)
|
||||
yoffset = 2 * pt2cm(pstyle.get_font().get_size())
|
||||
#print title
|
||||
|
||||
# header
|
||||
yoffset += (row_h + pad)
|
||||
@@ -921,7 +919,6 @@ class StatisticsChart(Report):
|
||||
# text after bar
|
||||
text = "%s (%d)" % (self._(key), data[key])
|
||||
self.doc.draw_text('SC-text', text, textx, yoffset)
|
||||
#print key + ":",
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -736,7 +736,7 @@ class GrampsXmlWriter(UpdateCallback):
|
||||
value = place_name.get_value()
|
||||
date = place_name.get_date_object()
|
||||
lang = place_name.get_language()
|
||||
self.g.write('%s<name value="%s"' % (sp, self.fix(value)))
|
||||
self.g.write('%s<pname value="%s"' % (sp, self.fix(value)))
|
||||
if lang:
|
||||
self.g.write(' lang="%s"' % self.fix(lang))
|
||||
if date.is_empty():
|
||||
@@ -744,7 +744,7 @@ class GrampsXmlWriter(UpdateCallback):
|
||||
else:
|
||||
self.g.write('>\n')
|
||||
self.write_date(date, index+1)
|
||||
self.g.write('%s</name>\n' % sp)
|
||||
self.g.write('%s</pname>\n' % sp)
|
||||
|
||||
def write_event(self,event,index=1):
|
||||
if not event:
|
||||
|
||||
@@ -254,6 +254,8 @@ class RelGraphReport(Report):
|
||||
if self.includeimg:
|
||||
self.bUseHtmlOutput = True
|
||||
person = self.database.get_person_from_handle(person_handle)
|
||||
if person is None:
|
||||
continue
|
||||
p_id = person.get_gramps_id()
|
||||
# Output the person's node
|
||||
label = self.get_person_label(person)
|
||||
@@ -272,6 +274,8 @@ class RelGraphReport(Report):
|
||||
family_list = person.get_family_handle_list()
|
||||
for fam_handle in family_list:
|
||||
family = self.database.get_family_from_handle(fam_handle)
|
||||
if family is None:
|
||||
continue
|
||||
if fam_handle not in families_done:
|
||||
families_done[fam_handle] = 1
|
||||
self.__add_family(fam_handle)
|
||||
|
||||
@@ -690,7 +690,8 @@ class GrampsParser(UpdateCallback):
|
||||
"places": (None, self.stop_places),
|
||||
"placeobj": (self.start_placeobj, self.stop_placeobj),
|
||||
"placeref": (self.start_placeref, self.stop_placeref),
|
||||
"ptitle": (None, self.stop_ptitle),
|
||||
"ptitle": (None, self.stop_ptitle),
|
||||
"pname": (self.start_place_name, self.stop_place_name),
|
||||
"location": (self.start_location, None),
|
||||
"lds_ord": (self.start_lds_ord, self.stop_lds_ord),
|
||||
"temple": (self.start_temple, None),
|
||||
@@ -1701,7 +1702,7 @@ class GrampsParser(UpdateCallback):
|
||||
def start_name(self, attrs):
|
||||
if self.person:
|
||||
self.start_person_name(attrs)
|
||||
else:
|
||||
if self.placeobj: # XML 1.7.0
|
||||
self.start_place_name(attrs)
|
||||
|
||||
def start_place_name(self, attrs):
|
||||
@@ -2691,7 +2692,7 @@ class GrampsParser(UpdateCallback):
|
||||
def stop_name(self, attrs):
|
||||
if self.person:
|
||||
self.stop_person_name(attrs)
|
||||
else:
|
||||
if self.placeobj: # XML 1.7.0
|
||||
self.stop_place_name(attrs)
|
||||
|
||||
def stop_place_name(self, tag):
|
||||
|
||||
@@ -2910,7 +2910,7 @@ class GedcomParser(UpdateCallback):
|
||||
return True
|
||||
return False
|
||||
|
||||
def __find_place(self, title, location):
|
||||
def __find_place(self, title, location, placeref_list):
|
||||
"""
|
||||
Finds an existing place based on the title and primary location.
|
||||
|
||||
@@ -2924,11 +2924,13 @@ class GedcomParser(UpdateCallback):
|
||||
place = self.dbase.get_place_from_handle(place_handle)
|
||||
if place.get_title() == title:
|
||||
if self.__loc_is_empty(location) and \
|
||||
self.__loc_is_empty(self.__get_first_loc(place)):
|
||||
self.__loc_is_empty(self.__get_first_loc(place)) and \
|
||||
place.get_placeref_list() == placeref_list:
|
||||
return place
|
||||
elif (not self.__loc_is_empty(location) and \
|
||||
not self.__loc_is_empty(self.__get_first_loc(place)) and
|
||||
self.__get_first_loc(place).is_equivalent(location) == IDENTICAL):
|
||||
self.__get_first_loc(place).is_equivalent(location) == IDENTICAL) and \
|
||||
place.get_placeref_list() == placeref_list:
|
||||
return place
|
||||
return None
|
||||
|
||||
@@ -2946,7 +2948,8 @@ class GedcomParser(UpdateCallback):
|
||||
if sub_state.place:
|
||||
# see whether this place already exists
|
||||
place = self.__find_place(sub_state.place.get_title(),
|
||||
self.__get_first_loc(sub_state.place))
|
||||
self.__get_first_loc(sub_state.place),
|
||||
sub_state.place.get_placeref_list())
|
||||
if place is None:
|
||||
place = sub_state.place
|
||||
self.dbase.add_place(place, self.trans)
|
||||
@@ -4534,7 +4537,7 @@ class GedcomParser(UpdateCallback):
|
||||
"""
|
||||
try:
|
||||
title = line.data
|
||||
place = self.__find_place(title, None)
|
||||
place = self.__find_place(title, None, None)
|
||||
if place is None:
|
||||
place = Place()
|
||||
place.set_title(title)
|
||||
@@ -5521,7 +5524,8 @@ class GedcomParser(UpdateCallback):
|
||||
|
||||
if self.addr_is_detail and state.place:
|
||||
# Commit the enclosing place
|
||||
place = self.__find_place(state.place.get_title(), None)
|
||||
place = self.__find_place(state.place.get_title(), None,
|
||||
state.place.get_placeref_list())
|
||||
if place is None:
|
||||
place = state.place
|
||||
self.dbase.add_place(place, self.trans)
|
||||
|
||||
@@ -33,5 +33,5 @@
|
||||
# Public Constants
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
GRAMPS_XML_VERSION_TUPLE = (1, 7, 0) # version for Gramps 4.2
|
||||
GRAMPS_XML_VERSION_TUPLE = (1, 7, 1) # version for Gramps 4.2
|
||||
GRAMPS_XML_VERSION = '.'.join(str(i) for i in GRAMPS_XML_VERSION_TUPLE)
|
||||
|
||||
@@ -693,7 +693,7 @@ class DetDescendantReport(Report):
|
||||
|
||||
mother_name, father_name = self.__get_mate_names(family)
|
||||
|
||||
first = 1
|
||||
first = True
|
||||
for event_ref in family.get_event_ref_list():
|
||||
if first:
|
||||
self.doc.start_paragraph('DDR-MoreHeader')
|
||||
@@ -702,9 +702,9 @@ class DetDescendantReport(Report):
|
||||
% {'mother_name' : mother_name,
|
||||
'father_name' : father_name })
|
||||
self.doc.end_paragraph()
|
||||
first = 0
|
||||
first = False
|
||||
self.write_event(event_ref)
|
||||
return first
|
||||
return first
|
||||
|
||||
def __write_family_attrs(self, family, first):
|
||||
"""
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
# Copyright (C) 2000-2007 Donald N. Allingham
|
||||
# Copyright (C) 2007-2008 Brian G. Matherly
|
||||
# Copyright (C) 2010 Jakim Friant
|
||||
# Copyright (C) 2013-2014 Paul Franklin
|
||||
# Copyright (C) 2013-2015 Paul Franklin
|
||||
# Copyright (C) 2015 Gerald Kunzmann <gerald@gkunzmann.de>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -90,6 +91,7 @@ class FamilyGroup(Report):
|
||||
|
||||
get_option_by_name = menu.get_option_by_name
|
||||
get_value = lambda name:get_option_by_name(name).get_value()
|
||||
self.gramps_ids = get_value('gramps_ids')
|
||||
self.recursive = get_value('recursive')
|
||||
self.missingInfo = get_value('missinginfo')
|
||||
self.generations = get_value('generations')
|
||||
@@ -174,6 +176,10 @@ class FamilyGroup(Report):
|
||||
if father_handle:
|
||||
father = self.database.get_person_from_handle(father_handle)
|
||||
father_name = self._name_display.display(father)
|
||||
if self.gramps_ids:
|
||||
gid = father.get_gramps_id()
|
||||
if gid:
|
||||
father_name += " (%s)" % gid
|
||||
if self.incRelDates:
|
||||
birth_ref = father.get_birth_ref()
|
||||
birth = " "
|
||||
@@ -186,11 +192,15 @@ class FamilyGroup(Report):
|
||||
event = self.database.get_event_from_handle(death_ref.ref)
|
||||
death = self._get_date(event.get_date_object())
|
||||
if birth_ref or death_ref:
|
||||
father_name = "%s (%s - %s)" % (father_name,birth,death)
|
||||
father_name += " (%s - %s)" % (birth, death)
|
||||
mother_handle = family.get_mother_handle()
|
||||
if mother_handle:
|
||||
mother = self.database.get_person_from_handle(mother_handle)
|
||||
mother_name = self._name_display.display(mother)
|
||||
if self.gramps_ids:
|
||||
gid = mother.get_gramps_id()
|
||||
if gid:
|
||||
mother_name += " (%s)" % gid
|
||||
if self.incRelDates:
|
||||
birth_ref = mother.get_birth_ref()
|
||||
birth = " "
|
||||
@@ -203,7 +213,7 @@ class FamilyGroup(Report):
|
||||
event = self.database.get_event_from_handle(death_ref.ref)
|
||||
death = self._get_date(event.get_date_object())
|
||||
if birth_ref or death_ref:
|
||||
mother_name = "%s (%s - %s)" % (mother_name,birth,death)
|
||||
mother_name += " (%s - %s)" % (birth, death)
|
||||
|
||||
if father_name != "":
|
||||
self.doc.start_row()
|
||||
@@ -283,9 +293,15 @@ class FamilyGroup(Report):
|
||||
self.doc.start_row()
|
||||
self.doc.start_cell('FGR-ParentHead',3)
|
||||
self.doc.start_paragraph('FGR-ParentName')
|
||||
self.doc.write_text(title + ': ')
|
||||
mark = ReportUtils.get_person_mark(self.database,person)
|
||||
self.doc.write_text(name,mark)
|
||||
# translators: needed for French, ignore otherwise
|
||||
self.doc.write_text(self._("%(str1)s: %(str2)s") % {
|
||||
'str1' : title,
|
||||
'str2' : name }, mark)
|
||||
if self.gramps_ids:
|
||||
gid = person.get_gramps_id()
|
||||
if gid:
|
||||
self.doc.write_text(" (%s)" % gid)
|
||||
self.doc.end_paragraph()
|
||||
self.doc.end_cell()
|
||||
self.doc.end_row()
|
||||
@@ -378,7 +394,11 @@ class FamilyGroup(Report):
|
||||
self.doc.start_row()
|
||||
self.doc.start_cell('FGR-ParentHead',3)
|
||||
self.doc.start_paragraph('FGR-ParentName')
|
||||
self.doc.write_text(self._("Marriage:"))
|
||||
header = self._("Marriage")
|
||||
if self.gramps_ids:
|
||||
header += " (%s)" % family.get_gramps_id()
|
||||
# translators: needed for French, ignore otherwise
|
||||
self.doc.write_text(self._("%s:") % header)
|
||||
self.doc.end_paragraph()
|
||||
self.doc.end_cell()
|
||||
self.doc.end_row()
|
||||
@@ -480,6 +500,8 @@ class FamilyGroup(Report):
|
||||
self.doc.start_cell('FGR-ChildName',3)
|
||||
self.doc.start_paragraph('FGR-ChildText')
|
||||
self.doc.write_text(name,mark)
|
||||
if self.gramps_ids:
|
||||
self.doc.write_text(" (%s)" % person.get_gramps_id())
|
||||
self.doc.end_paragraph()
|
||||
self.doc.end_cell()
|
||||
self.doc.end_row()
|
||||
@@ -536,6 +558,10 @@ class FamilyGroup(Report):
|
||||
|
||||
spouse = self.database.get_person_from_handle(spouse_id)
|
||||
spouse_name = self._name_display.display(spouse)
|
||||
if self.gramps_ids:
|
||||
gid = spouse.get_gramps_id()
|
||||
if gid:
|
||||
spouse_name += " (%s)" % gid
|
||||
if self.incRelDates:
|
||||
birth = " "
|
||||
birth_ref = spouse.get_birth_ref()
|
||||
@@ -548,7 +574,11 @@ class FamilyGroup(Report):
|
||||
event = self.database.get_event_from_handle(death_ref.ref)
|
||||
death = self._get_date(event.get_date_object())
|
||||
if birth_ref or death_ref:
|
||||
spouse_name = "%s (%s - %s)" % (spouse_name,birth,death)
|
||||
spouse_name += " (%s - %s)" % (birth, death)
|
||||
if self.gramps_ids:
|
||||
fid = family.get_gramps_id()
|
||||
if fid:
|
||||
spouse_name += " (%s)" % fid
|
||||
mark = ReportUtils.get_person_mark(self.database,spouse)
|
||||
self.doc.write_text(spouse_name,mark)
|
||||
self.doc.end_paragraph()
|
||||
@@ -659,6 +689,10 @@ class FamilyGroupOptions(MenuReportOptions):
|
||||
add_option = partial(menu.add_option, _("Include"))
|
||||
##########################
|
||||
|
||||
gramps_ids = BooleanOption(_('Gramps ID'), False)
|
||||
gramps_ids.set_help(_("Whether to include Gramps ID next to names."))
|
||||
add_option("gramps_ids", gramps_ids)
|
||||
|
||||
generations = BooleanOption(_("Generation numbers "
|
||||
"(recursive only)"),True)
|
||||
generations.set_help(_("Whether to include the generation on each "
|
||||
|
||||
@@ -107,7 +107,8 @@ class NotRelated(tool.ActivePersonTool, ManagedWindow) :
|
||||
self.tagapply.connect('clicked', self.applyTagClicked)
|
||||
|
||||
# start the progress indicator
|
||||
self.progress = ProgressMeter(self.title,_('Starting'))
|
||||
self.progress = ProgressMeter(self.title,_('Starting'),
|
||||
parent=self.window)
|
||||
|
||||
# setup the columns
|
||||
self.model = Gtk.TreeStore(
|
||||
@@ -251,7 +252,8 @@ class NotRelated(tool.ActivePersonTool, ManagedWindow) :
|
||||
|
||||
# if more than 1 person is selected, use a progress indicator
|
||||
if rows > 1:
|
||||
progress = ProgressMeter(self.title,_('Starting'))
|
||||
progress = ProgressMeter(self.title,_('Starting'),
|
||||
parent=self.window)
|
||||
progress.set_pass(
|
||||
# translators: leave all/any {...} untranslated
|
||||
#TRANS: no singular form needed, as rows is always > 1
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.10"/>
|
||||
<object class="GtkDialog" id="removeunused">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="default_width">500</property>
|
||||
<property name="default_height">300</property>
|
||||
@@ -98,7 +97,7 @@
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
@@ -115,7 +114,7 @@
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
@@ -132,7 +131,7 @@
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
@@ -149,7 +148,7 @@
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
@@ -166,7 +165,7 @@
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
@@ -183,7 +182,7 @@
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
|
||||
@@ -3379,7 +3379,7 @@ class PlacePages(BasePage):
|
||||
)
|
||||
|
||||
handle_list = sorted(place_handles,
|
||||
key=lambda x: SORT_KEY(self.dbase_.get_place_from_handle(x).title))
|
||||
key=lambda x: SORT_KEY(ReportUtils.place_name(self.dbase_, x)))
|
||||
first = True
|
||||
|
||||
# begin table body
|
||||
@@ -7449,6 +7449,8 @@ class NavWebReport(Report):
|
||||
|
||||
def _add_place(self, place_handle, bkref_class, bkref_handle):
|
||||
place = self.database.get_place_from_handle(place_handle)
|
||||
if place is None:
|
||||
return
|
||||
place_name = _pd.display(self.database, place)
|
||||
place_fname = self.build_url_fname(place_handle, "plc",
|
||||
False) + self.ext
|
||||
|
||||
|
Before Width: | Height: | Size: 798 B After Width: | Height: | Size: 798 B |
|
Before Width: | Height: | Size: 799 B After Width: | Height: | Size: 799 B |
|
Before Width: | Height: | Size: 778 B After Width: | Height: | Size: 778 B |
|
Before Width: | Height: | Size: 715 B After Width: | Height: | Size: 715 B |
|
Before Width: | Height: | Size: 892 B After Width: | Height: | Size: 892 B |
|
Before Width: | Height: | Size: 895 B After Width: | Height: | Size: 895 B |
|
Before Width: | Height: | Size: 485 B After Width: | Height: | Size: 485 B |
|
Before Width: | Height: | Size: 816 B After Width: | Height: | Size: 816 B |
|
Before Width: | Height: | Size: 820 B After Width: | Height: | Size: 820 B |
|
Before Width: | Height: | Size: 775 B After Width: | Height: | Size: 775 B |
|
Before Width: | Height: | Size: 776 B After Width: | Height: | Size: 776 B |
|
Before Width: | Height: | Size: 777 B After Width: | Height: | Size: 777 B |
|
Before Width: | Height: | Size: 773 B After Width: | Height: | Size: 773 B |
|
Before Width: | Height: | Size: 709 B After Width: | Height: | Size: 709 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 690 B After Width: | Height: | Size: 690 B |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 895 B After Width: | Height: | Size: 895 B |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1003 B After Width: | Height: | Size: 1003 B |
@@ -7,7 +7,7 @@
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>Gramps</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>master, (C) 1997-2015 The Gramps Team http://www.gramps-project.org</string>
|
||||
<string>Gramps-4.2.0beta1, (C) 1997-2015 The Gramps Team http://www.gramps-project.org</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>gramps.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
@@ -17,11 +17,11 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>Master</string>
|
||||
<string>4.2.0beta1</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>Master</string>
|
||||
<string>Gramps-4.2.0beta1-1</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright 1997 - 2015 The Gramps Team, GNU General Public License.</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
href="http://www.johnstowers.co.nz/files/"/>
|
||||
<repository type="git" name="github"
|
||||
href="git://github.com/"/>
|
||||
<repository type="tarball" name="github-tarball"
|
||||
href="https://github.com/"/>
|
||||
<repository type="tarball" name="graphviz"
|
||||
href="http://www.graphviz.org/pub/graphviz/stable/SOURCES/"/>
|
||||
<repository type="tarball" name="exiv2.org"
|
||||
@@ -52,12 +54,22 @@ gtk-mac-bundler gtk-osx-build/projects/gramps/gramps.bundle
|
||||
|
||||
-->
|
||||
|
||||
<include href="http://git.gnome.org/browse/gtk-osx/plain/modulesets-stable/gtk-osx.modules"/>
|
||||
<!--include href="/Users/john/Development/GTK-OSX/gtk-osx-build/modulesets-stable/gtk-osx.modules"/-->
|
||||
<!--include href="http://git.gnome.org/browse/gtk-osx/plain/modulesets-stable/gtk-osx.modules"/-->
|
||||
<include href="/Users/john/Development/GTK-OSX/gtk-osx-build/modulesets-stable/gtk-osx.modules"/>
|
||||
|
||||
<distutils id="gramps-git" supports-non-srcdir-builds="no">
|
||||
<branch module="gramps-project/gramps.git" repo="github"
|
||||
checkoutdir="gramps-git"/>
|
||||
checkoutdir="gramps-git" tag="maintenance/gramps42"/>
|
||||
<dependencies>
|
||||
<dep package="meta-python2-modules"/>
|
||||
<dep package="meta-python3-modules"/>
|
||||
</dependencies>
|
||||
</distutils>
|
||||
|
||||
<distutils id="gramps" supports-non-srcdir-builds="no">
|
||||
<branch module="gramps-project/gramps/archive/gramps-4.2.0beta1.tar.gz"
|
||||
repo="github-tarball" version="4.2.0beta1"
|
||||
checkoutdir="gramps-gramps-4.2.0beta1"/>
|
||||
<dependencies>
|
||||
<dep package="meta-python2-modules"/>
|
||||
<dep package="meta-python3-modules"/>
|
||||
@@ -178,6 +190,7 @@ gtk-mac-bundler gtk-osx-build/projects/gramps/gramps.bundle
|
||||
<metamodule id="meta-python3-modules">
|
||||
<dependencies>
|
||||
<dep package="python3"/>
|
||||
<dep package="berkeleydb"/>
|
||||
<dep package="pycairo-python3"/>
|
||||
<dep package="pygobject3"/>
|
||||
<dep package='pyicu'/>
|
||||
|
||||
@@ -365,6 +365,7 @@ gramps/gui/widgets/fanchartdesc.py
|
||||
gramps/gui/widgets/linkbox.py
|
||||
gramps/gui/widgets/menuitem.py
|
||||
gramps/gui/widgets/multitreeview.py
|
||||
gramps/gui/widgets/placeentry.py
|
||||
gramps/gui/widgets/shortlistcomboentry.py
|
||||
gramps/gui/widgets/springseparator.py
|
||||
gramps/gui/widgets/statusbar.py
|
||||
|
||||