Compare commits

..

50 Commits

Author SHA1 Message Date
Jérôme Rapinat 905ac154d3 8683: keep support for XML v1.7.0 2015-07-06 15:45:35 +02:00
Jérôme Rapinat ac29b091a7 8683: Bump to Gramps XML 1.7.1 2015-07-06 15:08:38 +02:00
Paul Franklin 1a618c3a2e 8623: Detailed Descendant Report - only first family event output 2015-07-05 13:42:12 -07:00
Bernard Banko c731c68ec5 Pull Request #40: Slovenian translation update 2015-07-05 11:07:33 +02:00
Jérôme Rapinat ab80af602c 8683: Cover custom types on DTD and RNG files
Now, xmllint passes '--dtdvalid' and '--relaxng'
2015-07-05 11:03:03 +02:00
Jérôme Rapinat 4caa412a06 8683: polish; remove old reference 2015-07-05 10:54:26 +02:00
Jérôme Rapinat 49ec2e1244 8683: fix duplicate <name> element on pre-1.7.0 XML version
XML: use <pname> tag into place hierarchy instead of duplicate <name>
2015-07-05 10:50:13 +02:00
Paul Franklin 63dc1ddff8 cover pathological case (perhaps from privacy proxy) 2015-07-04 19:30:39 -07:00
Zdeněk Hataš b9c3b077e8 czech translation update 2015-07-04 11:16:01 +02:00
Gerald Kunzmann 8c9333b58d 8648: Print Gramps IDs in familygroup report 2015-07-03 14:48:36 -07:00
Paul Franklin fd22effab3 8670: Crash when trying to create a book 2015-07-02 19:24:45 -07:00
Leonhaeuser 5e5e92ac9a German translation fix typo 2015-07-02 22:55:31 +02:00
Paul Franklin 7fac5c6607 8666: statistics report does not run (filter?) 2015-07-01 21:45:01 -07:00
Paul Franklin fa26216839 8677: Narrated Web report failed 2015-07-01 17:18:49 -07:00
Matti Niemelä 9032c0a37d update Finnish translation 2015-06-30 09:05:44 -07:00
Paul Franklin fb6a2cecf2 8666: statistics report does not run (filter?) 2015-06-30 08:23:14 -07:00
Jérôme Rapinat 90de5dffec Update template
Update french translation
2015-06-30 15:19:18 +02:00
erikdrgm 8ec10c067f Updated 150630 nl translation 2015-06-30 09:10:41 +02:00
Jérôme Rapinat 84be6de6ab 8572: gramps crashes if gtk < 3.10; workaround for debian (packaging) 2015-06-29 11:17:36 +02:00
Jérôme Rapinat 0b88c61421 Update NEWS according to commit log data 2015-06-29 11:11:00 +02:00
Josip d943e122a8 8667: SVG Document output 2015-06-28 15:15:52 -07:00
Leonhaeuser fc08e7de4e update German translation 2015-06-28 20:56:07 +02:00
Doug Blank a04c8dc497 8577: Statistics Charts report crashes in Windows 4.1.3 AIO
Changed 0 to actual number of people in database.
2015-06-28 14:38:08 -04:00
Nick Hall 66c943f69d Replace "Title" with "Enclosed By" in place sidebar filter 2015-06-28 19:32:52 +01:00
Nick Hall 0ad17ac27f Fix IsEnclosedBy rule for non-existent places 2015-06-28 19:32:49 +01:00
Jérôme Rapinat 01536e4b50 Update informations about major enhancements 2015-06-28 18:11:03 +02:00
Paul Franklin 811261609f 8666: statistics report does not run (filter?) 2015-06-27 12:47:15 -07:00
Nick Hall cba763611d 8645: Use place displayer when sorting places in narrated web report 2015-06-27 19:38:35 +01:00
Jérôme Rapinat 56de5ff4af Update/Migrate 'data.gramps' 2015-06-27 15:02:09 +02:00
Jérôme Rapinat 928a0af713 Update/Migrate 'example.gramps' and XML schema files 2015-06-27 14:50:07 +02:00
John Ralls 913fdd071c Set up gramps module and info.plist for Gramps42 branch. 2015-06-26 15:40:15 -07:00
Paul Franklin 22a27e9707 8661: Errors producing Ancestor Tree (4.2.0beta1) 2015-06-26 11:01:06 -07:00
Jérôme Rapinat 2142118832 8645: add GobjectIntrospection dependency
Fix Lintian issue: 'python-script-but-no-python-dep'
2015-06-25 20:09:40 +02:00
Nick Hall fabd5742fc 8643: Workaround for excessive height of rule editor window
The height of the Gtk.Box containing the rule name and description
labels is calculated incorrectly.  The parent widget seems to
think that the label text is wrapped onto many lines.

This workaround sets a minimum label width which makes the problem
less apparent.
2015-06-24 22:05:22 +01:00
Nick Hall 7a3da35543 Tidy up and remove redundant code 2015-06-24 22:05:22 +01:00
Lajos Nemeséri c0c165d155 Update Hungarian translation 2015-06-24 19:12:09 +02:00
Fedik 030ffd8226 Update Ukrainian translation 2015-06-23 20:58:34 +03:00
Luigi Toscano 4964461fa4 Italian translation updates 2015-06-21 03:16:48 +02:00
Luigi Toscano 42c4662329 Refresh Italian translation with the last template 2015-06-21 03:14:40 +02:00
Josip d3eafc00db translation: Croatian
remove print statments
2015-06-20 20:08:42 +02:00
Josip a2030431c0 fix some PyGI/DeprecationWarning 2015-06-20 19:59:56 +02:00
Josip 56f867d783 fix transient parent of few dialogs 2015-06-20 15:55:08 +02:00
Josip 5a752205b3 translation: Croatian
fix inflected long month names
fix dd_dformat04
2015-06-19 23:50:31 +02:00
Jérôme Rapinat 6e87ee433c Update DEBIAN stuff
For more recent environments; python3, pybuild
2015-06-19 16:13:58 +02:00
kulath 70806f2388 0008537: Gedcom import crashes. Fix problem when matching places with
the same name which are enclosed by different places.
2015-06-18 22:53:46 +01:00
Enno Borgsteede b8b186dde2 0008639: check buttons misaligned in remove unused objects dialog 2015-06-18 19:17:45 +01:00
Nick Hall d10c4faffe Remove executable permission from gedcom file 2015-06-18 14:18:49 +01:00
Nick Hall 8bff04729f Remove executable permission from python code 2015-06-18 14:13:41 +01:00
Jérôme Rapinat 9cddf3ebdb Merge some fixes from git://anonscm.debian.org/collab-maint/gramps.git 2015-06-18 15:02:25 +02:00
Nick Hall c089eba1c3 Remove executable permission from png files 2015-06-18 13:44:16 +01:00
108 changed files with 9568 additions and 11632 deletions
+37
View File
@@ -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
+6 -29
View File
@@ -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!
+19 -10
View File
@@ -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
+14 -35
View File
@@ -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 -5
View File
@@ -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)
-22
View File
@@ -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 :
-2
View File
@@ -1,2 +0,0 @@
0001-Correct-resource-path-in-setup.py.patch
0002-Disable-HTML-View.patch
+7 -8
View File
@@ -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
View File
@@ -1 +1 @@
1.0
1.8
-1
View File
@@ -1 +0,0 @@
unapply-patches
-4
View File
@@ -1,4 +0,0 @@
version=3
opts="dversionmangle=s/\+dfsg//g" \
http://sf.net/gramps/gramps-(.+)\.tar\.gz
Executable → Regular
View File
+92 -49
View File
@@ -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>
+2580 -1292
View File
File diff suppressed because it is too large Load Diff
+16 -26
View File
@@ -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)
#-------------------------------------------------------------------------
#
+1 -1
View File
@@ -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):
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
@@ -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
View File
View File
+10 -2
View File
@@ -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):
"""
+14 -19
View File
@@ -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)
+5
View File
@@ -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>
+3 -1
View File
@@ -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()
+1 -1
View File
@@ -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()
+4 -1
View File
@@ -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:
+2 -1
View File
@@ -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)
+1
View File
@@ -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 *
+5 -1
View File
@@ -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)
#-------------------------------------------------------------------------
#
+26 -8
View File
@@ -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
+5 -1
View File
@@ -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)
#-------------------------------------------------------------------------
#
+80
View File
@@ -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)
+8 -8
View File
@@ -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):
"""
+7 -2
View File
@@ -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
+1 -1
View File
@@ -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:
+13 -13
View File
@@ -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)
+20 -23
View File
@@ -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
+2 -2
View File
@@ -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:
+4
View File
@@ -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)
+4 -3
View File
@@ -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):
+10 -6
View File
@@ -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)
+1 -1
View File
@@ -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)
View File
@@ -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):
"""
+41 -7
View File
@@ -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 "
+4 -2
View File
@@ -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
+6 -7
View File
@@ -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>
+3 -1
View File
@@ -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
View File

Before

Width:  |  Height:  |  Size: 798 B

After

Width:  |  Height:  |  Size: 798 B

View File

Before

Width:  |  Height:  |  Size: 799 B

After

Width:  |  Height:  |  Size: 799 B

View File

Before

Width:  |  Height:  |  Size: 778 B

After

Width:  |  Height:  |  Size: 778 B

View File

Before

Width:  |  Height:  |  Size: 715 B

After

Width:  |  Height:  |  Size: 715 B

View File

Before

Width:  |  Height:  |  Size: 892 B

After

Width:  |  Height:  |  Size: 892 B

View File

Before

Width:  |  Height:  |  Size: 895 B

After

Width:  |  Height:  |  Size: 895 B

View File

Before

Width:  |  Height:  |  Size: 485 B

After

Width:  |  Height:  |  Size: 485 B

View File

Before

Width:  |  Height:  |  Size: 816 B

After

Width:  |  Height:  |  Size: 816 B

View File

Before

Width:  |  Height:  |  Size: 820 B

After

Width:  |  Height:  |  Size: 820 B

View File

Before

Width:  |  Height:  |  Size: 775 B

After

Width:  |  Height:  |  Size: 775 B

View File

Before

Width:  |  Height:  |  Size: 776 B

After

Width:  |  Height:  |  Size: 776 B

View File

Before

Width:  |  Height:  |  Size: 777 B

After

Width:  |  Height:  |  Size: 777 B

View File

Before

Width:  |  Height:  |  Size: 773 B

After

Width:  |  Height:  |  Size: 773 B

View File

Before

Width:  |  Height:  |  Size: 709 B

After

Width:  |  Height:  |  Size: 709 B

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 690 B

After

Width:  |  Height:  |  Size: 690 B

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 895 B

After

Width:  |  Height:  |  Size: 895 B

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1003 B

After

Width:  |  Height:  |  Size: 1003 B

+3 -3
View File
@@ -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>
+16 -3
View File
@@ -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'/>
+1
View File
@@ -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
+336 -327
View File
File diff suppressed because it is too large Load Diff
+829 -726
View File
File diff suppressed because it is too large Load Diff
+328 -535
View File
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More