Compare commits

...

99 Commits

Author SHA1 Message Date
John Ralls
ae7a2500de Inlude fontconfig's etc/fonts in macOS app bundle.
Graphviz now uses fontconfig to find its fonts.
Fixes #12370
2021-07-29 15:13:45 -07:00
John Ralls
358a6b118b Bundle release of Gramps 5.1.4. 2021-07-26 13:23:19 -07:00
Nick Hall
9352f0c438 Bump to 5.1.5 2021-07-26 20:53:53 +01:00
Nick Hall
1ab4cbfa63 Release Gramps 5.1.4 2021-07-26 20:49:30 +01:00
Nick Hall
1fd319e13a Update Changelog and NEWS files 2021-07-26 20:45:57 +01:00
Nick Hall
7cb8489ba2 Update copyright date 2021-07-26 15:43:24 +01:00
SNoiraud
a685b96f70 probably-alive incorrect if death without date 2021-07-26 15:38:25 +01:00
SNoiraud
b24ebd5d77 fix the commit in master without bug report:
commit: 410cffe8320d3d8d08727c02f7f43346b79613f2
2021-07-22 18:50:17 +01:00
SNoiraud
6dcb1d00d5 Place editor, copy and paste of lat and long text
no longer auto-populating latitude and longitude fields

Fixes #012349
2021-07-22 18:50:17 +01:00
prculley
a3b37b9627 Fix for crash when changing views if part of toolbar is not shown
because of a small screen when changing views.

Fixes #12048
2021-07-22 18:49:03 +01:00
prculley
034720321c Fix bottombar always showing after restrt, even when not wanted
Fixes #12338
2021-07-22 18:47:46 +01:00
Tian Shixiong
09f01a69d5 Update and fix Simplified Chinese translation 2021-07-21 18:53:11 +01:00
Leonhaeuser
597f3ebedf fixed smal German translation Error for item also fixed in Weblate GUI for master 2021-07-16 22:27:20 +02:00
Tian Shixiong
c7b5e149fa Update Simplified Chinese translation 2021-07-08 23:20:13 +01:00
pehlm
f7203aa029 One update Swedish translation 2021-07-05 15:50:44 +02:00
John Ralls
9cca728a66 Better to use locale.get_collation than locale.collation. 2021-07-03 21:54:57 -07:00
John Ralls
df270adc94 Wrap call to dbapi.check_collection to prevent a forced API change. 2021-07-03 21:49:01 -07:00
John Ralls
c177c13f99 Merge John Ralls's 'bug12343' into maintenance/gramps51. 2021-07-03 06:54:09 -07:00
John Ralls
15f1bb0201 Fix URL for berkeleydb patch. 2021-07-01 15:40:58 -07:00
John Ralls
f75aa9302a Always use filtered collation names.
Store the Sqlite3 collations in the __collations array to short-circuit
re-creation.

Fixes https://gramps-project.org/bugs/view.php?id=12343.
2021-07-01 11:45:23 -07:00
prculley
708c83dc58 Revert "An experimental fix for bug12048"
This reverts commit 3c1c21163cdf606805ee9dd19002a3596da8d5e9.
commited by mistake
2021-06-25 09:59:15 -05:00
prculley
0a809904dc Revert "Change to timeout, rather than idle_add, and dereference toolbars in order they were added"
This reverts commit f91d3e94ab84c509749b2998213cb3c5b9201750.
commited by mistake.
2021-06-25 09:58:34 -05:00
Leonhaeuser
e8f50deabc Fixed different German translations for "What's next" also fixed in master (Weblate) 2021-06-25 11:40:13 +02:00
Leonhaeuser
486fae91ce German relation calculator fixed issue if more then 24 generations between the two person 2021-06-23 10:23:33 +02:00
niememat
9ee5468bda Fix translation in Finnish 2021-06-22 13:22:45 +03:00
Tian Shixiong
eac6a935f6 Correct and improve Simplified Chinese translation
Correct some terribly wrong and low quality translation,
even machine translation.

Improve some existing translation for better user experience
as a software, use more written language.
2021-06-17 16:37:09 +08:00
Tian Shixiong
cc68b7acfc Improve and correct Simplified Chinese translation 2021-06-10 18:37:26 +01:00
Tian Shixiong
c321e7f0d6 Improve and correct the Simplified Chinese translation 2021-05-28 14:04:35 +08:00
Tian Shixiong
e13a852523 Update and improve Simplified Chinese translation 2021-05-26 12:51:15 +01:00
Tian Shixiong
3c4c433a84 Update Simplified Chinese translation 2021-05-20 14:01:20 +08:00
Jan Sparreboom
e8268cb37e Update Dutch translation 2021-05-15 23:12:19 +01:00
Nick Hall
721d964741 Merge pull request #1137 from tiansworld/workl10n 2021-05-15 15:52:07 +01:00
Tian Shixiong
7d4ec1be73 Correct and Update Simplified Chinese translation 2021-05-15 15:44:39 +01:00
Tian Shixiong
36ce375a2a Update Simplified Chinese translation 2021-05-15 15:44:39 +01:00
Leonhaeuser
9f6afcc7db Corrected some German translation errors found during handbook revision 2021-05-14 21:23:35 +02:00
John Ralls
c66fc6423d Add file logging for macOS.
When Gramps is launched from macOS's LaunchServices it doesn't have
a sys.stderr attached so the default stream logger goes to /dev/null.
Use a FileHandler in tht case, writing the log to $TMPDIR/gramps-pid.log.

This will help particularly in analyzing crashes where python shuts down
as there's no crash report in that case.
2021-05-11 15:58:00 -07:00
prculley
f91d3e94ab Change to timeout, rather than idle_add, and dereference toolbars in order they were added 2021-05-11 15:58:00 -07:00
prculley
3c1c21163c An experimental fix for bug12048 2021-05-11 15:58:00 -07:00
John Ralls
09709ec0c6 Update PyICU to 2.7.2 in macOS build. 2021-05-06 14:24:17 -07:00
Paul Culley
bb7f5fa522
Fix libplaceview to avoid exception when mapservice is no longer present (#1193)
Fixes #12263
2021-05-06 10:19:03 -05:00
Paul Culley
9957506f35
Fix References Gramplet for inadequate updates when other objects change (#1192)
Fixes #12248
2021-05-06 10:18:11 -05:00
Serge Noiraud
eb4ce9ff79
geofamily crashes if a family has no father (#1188) 2021-05-06 10:14:49 -05:00
Serge Noiraud
1d72f4b23d
Home Person setting does not convey in a Merge (#1187)
* Home Person setting does not convey in a Merge

Fixes #012235

* better pylint score
2021-05-06 10:14:26 -05:00
Paul Culley
5ad5f08a2b
Fix CSV export of view to only put single CR character. (#1186)
Fixes #12158
2021-05-06 10:13:02 -05:00
Paul Culley
9e43f060d1
Add Media filter rule 'HasMedia' to list of media rules for editor (#1182)
Fixes #12212
2021-05-06 10:11:16 -05:00
Leonhaeuser
bc1ed688c4 corrected German translation of "confidence" 2021-04-28 23:04:23 +02:00
Leonhaeuser
9d358d06f5 German corrected translation of 'attribute' 2021-04-26 18:02:29 +02:00
Leonhaeuser
16b1945a0e Fixed translation error of "display name editor" into German 2021-04-25 12:12:50 +02:00
Leonhaeuser
5e9be68ad5 some translation fixes for German 2021-04-24 22:05:49 +02:00
pehlm
cd3ef08ffb Changed immigration too, Swedish 2021-04-24 15:21:33 +02:00
pehlm
773e763093 Correction of Swedish translation 2021-04-24 13:17:11 +02:00
Helder Geovane Gomes de Lima
0badfb6b47
Update Portuguese translation (pt_BR) (#1199)
This pull request is an updated version of the patch I've provided at <https://gramps-project.org/bugs/view.php?id=10547> in 2018, now based on branch 5.1
2021-04-22 15:38:01 +02:00
Leonhaeuser
5af80da5cd Corrected translation of markup in German translation 2021-04-19 23:22:48 +02:00
Leonhaeuser
0045f134c6 Fixed translation of tags in German translation 2021-04-17 00:07:47 +02:00
Leonhaeuser
1035f8930f German translation for type unified 2021-04-14 00:22:56 +02:00
romjerome
d4bceeb6ff
11656: typo, spelling correction
contribution by Philippe
2021-04-13 09:14:24 +02:00
romjerome
c8fc88cfe7
Need to set locale.textdomain under linux (#1198)
_build_popup_ui() ignores translated strings without locale.textdomain set.
2021-04-13 08:53:04 +02:00
Leonhaeuser
b4b6d52306 Fixed German translation of number for places 2021-04-13 00:04:11 +02:00
John Ralls
4f390c6b33 Update dependencies.
Includes moving berkeleydb and pybsddb over from gtk-osx.
2021-04-11 16:18:46 -07:00
Leonhaeuser
0442c34258 Some small fixes in German translation 2021-03-21 00:18:46 +01:00
Leonhaeuser
c903f5e5a5 Update German translation for csv import/export 2021-03-11 22:59:42 +01:00
Leonhaeuser
3329860f50 small fix in German translation 2021-03-01 23:21:46 +01:00
Matthias Kemmer
e7401f3aaa
Change category of 'MatchesEventFilter' (#1130) 2021-02-19 11:45:38 -06:00
Paul Culley
1a48e8a03e
Fix issue where separator between top and bottom bar of View creeps up. (#1122)
Fixes #11973
2021-02-19 11:44:32 -06:00
Paul Culley
9a4adab9d6
Fix Locations Gramplet (Enclosed by) to properly displaycertain nested places. (#1127)
when the smallest place has undated enclosure and larger places are dated.

Issue #11691
2021-02-19 11:32:33 -06:00
Paul Culley
bb0647274b
Fix Family Tree Manager drop error on Windows (#1132)
Fixes #10734
2021-02-19 11:31:43 -06:00
Paul Culley
f6bfb46fc0
Fix exportvcalendar error is "is not" with a literal (Python 3.8 issue) (#1135)
Fixes #12000
2021-02-19 11:31:06 -06:00
Serge Noiraud
b6fa5da8ee
Handle not found when copying source from the (#1175)
Citation tree

Fixes #12170
2021-02-19 11:25:02 -06:00
Paul Culley
14c2d0e1b6
DbLoader: Fix call to 'file' function, which doesn't exist in Python3 (#1173) 2021-02-19 11:23:47 -06:00
Paul Culley
226e8c549a
Fix write_lock_file exception when USERNAME is missing (#1171)
Fixes #12150
2021-02-19 11:23:06 -06:00
Paul Culley
d173809d8c
Fix EditPlace so Tab key doesn't get stuck on Private icon (#1168)
Fixes #12139
2021-02-19 11:22:35 -06:00
Paul Culley
63c52fa1bb
Fix Tag report for places that have a hierarchy. (#1162)
Fixes #12124
2021-02-19 11:21:11 -06:00
Paul Culley
455628d44a
Fix exception when cancelling out of a db upgrade in GUI (#1154)
Fixes #12063
2021-02-19 11:18:18 -06:00
Leonhaeuser
670bb355cb additional small German translation fixes 2021-02-12 21:36:51 +01:00
Leonhaeuser
202c7a9bf6 Small fixes German translation 2021-02-11 12:06:22 +01:00
Leonhaeuser
72955840f1 fix wrong translation of source text in German translation 2021-02-06 22:06:22 +01:00
Leonhaeuser
b8e73d5ee1 fixed small error in German translation 2021-02-06 00:04:33 +01:00
Leonhaeuser
990db39664 small fixes German translation 2021-01-26 18:59:23 +01:00
Nick Hall
9c0dca6bd1 Merge pull request #1053 from cjmayo:themeicon 2020-11-14 19:29:58 +00:00
Chris Mayo
02e0c1c67d Install 128x128 and 256x256 application icons
Created with ImageMagick using e.g.:

convert -background none ../../../gramps.svg -geometry 256x256 gramps.png
2020-11-14 19:23:25 +00:00
Chris Mayo
ebf1715468 Install MIME type icons into the hicolor theme
The gnome theme is defunct.

Remove gnome-mime- prefix from icon filenames.
2020-11-14 19:23:24 +00:00
Nick Hall
c10f2da00e Install application icons into correct directories 2020-11-14 19:10:34 +00:00
vantu5z
9f71372a97 Update Russian translation 2020-10-15 16:06:19 +03:00
Zdeněk Hataš
0993d9cfc3 Update Czech translation - typo fixes 2020-09-25 09:02:45 +02:00
Tian Shixiong
34471834ab Update Simplified Chinese translation 2020-09-24 22:37:57 +01:00
Jan Sparreboom
ff912f844c Update Dutch translation 2020-09-24 21:36:52 +01:00
Lajos Nemeséri
45eac501a9 Revised and updated hu translation 2020-09-24 19:41:31 +01:00
Juan Saavedra
d4e85c2397 Update Spanish translation 2020-09-24 17:52:35 +01:00
bokfink
c7a4d287f0
Fix error in Birthday and Anniversary report (#1113)
Fixes an error triggered when the first person_handle in the list
has a death event, but no birth event (get_birth_ref() == None)
and does not have family relationships (spouse_handle == None).
These conditions lead to the local variable short_name not being
declared before it comes time to process death events.

Fixes #11766
2020-09-14 11:13:08 -05:00
Paul Culley
c0d622c16a
Fix graphdoc to properly escape characters in ids for Graphviz (#1111)
Fixes #11741
2020-09-14 11:10:20 -05:00
John Ralls
b38f77f2aa
Replace inspect.stack() with inspect.currentframe() (#1104)
* Replace inspect.stack() with inspect.currentframe()

Fixes #11874

Works around https://bugs.python.org/issue12920 which causes every
call to inspect.trace() to fail because __main__ is always the
starting point.

* Fix a few Codecov complaints from files touched by previous commit.

Ignoring the "duplicate code" issue caused by the empty comment line
at the beginning of every file.
2020-09-14 11:08:58 -05:00
RossGammon
d91fc9e2fb
Update Debian directory after producing the deb file for the 5.1.3 (#1100)
Release.

Co-authored-by: Ross Gammon <rossgammon@debian.org>
2020-09-14 11:05:21 -05:00
Paul Culley
198602be61
Fix crash sorting on columns in Selectors with TreeModels (#1099)
Fixes #11750
2020-09-14 11:04:12 -05:00
Paul Culley
3f9f3215ee
Fix progress bar freeze due to changes in Gtk (#1103)
Fixes #11642
2020-09-14 11:02:48 -05:00
Paul Culley
beb388a30d
Fix svgdrawdoc for text containing XML invalid characters (#1110)
Fixes #11929
2020-09-14 11:00:43 -05:00
John Ralls
29e78d4253 Further changes for bundling with Python 3.8. 2020-08-30 14:46:35 -07:00
John Ralls
b80dcaf701 Add libgeocode-glib to bundle so that it actually works. 2020-08-30 14:44:51 -07:00
Leonhaeuser
a876d94fbc German tzranslation two smal corrections 2020-08-26 18:08:42 +02:00
John Ralls
95e1e8cb67 [mac] Set __file__ if gramps_launcher.py is run as __main__.
Fixes #11874.
2020-08-25 17:14:10 -07:00
81 changed files with 16489 additions and 23961 deletions

568
ChangeLog
View File

@ -1,402 +1,458 @@
2020-08-11 prculley <paulr2787@gmail.com> 2021-07-26 Nick Hall <nick-h@gramps-project.org>
* po/ar.po, po/bg.po, po/br.po, po/ca.po, po/cs.po, po/da.po, * gramps/gen/const.py: Update copyright date
po/el.po, po/en_GB.po, po/eo.po, po/es.po, po/fi.po, po/fr.po,
po/ga.po, po/he.po, po/hr.po, po/hu.po, po/is.po, po/it.po,
po/ja.po, po/lt.po, po/mk.po, po/nb.po, po/nl.po, po/nn.po,
po/pl.po, po/pt_BR.po, po/pt_PT.po, po/ro.po, po/ru.po, po/sk.po,
po/sl.po, po/sq.po, po/sr.po, po/sr_Latn.po, po/sv.po, po/ta.po,
po/tr.po, po/uk.po, po/vi.po, po/zh_CN.po, po/zh_HK.po, po/zh_TW.po:
Remove duplicates in Translations
2020-08-10 prculley <paulr2787@gmail.com> 2021-07-23 SNoiraud <Serge.Noiraud@free.fr>
* po/ar.po, po/bg.po, po/br.po, po/ca.po, po/cs.po, po/da.po, * gramps/gen/utils/alive.py: Probably alive incorrect if death
po/de.po, po/el.po, po/en_GB.po, po/eo.po, po/es.po, po/fi.po, without date
po/fr.po, po/ga.po, po/he.po, po/hr.po, po/hu.po, po/is.po,
po/it.po, po/ja.po, po/lt.po, po/mk.po, po/nb.po, po/nl.po,
po/nn.po, po/pl.po, po/pt_BR.po, po/pt_PT.po, po/ro.po, po/ru.po,
po/sk.po, po/sl.po, po/sq.po, po/sr.po, po/sr_Latn.po, po/sv.po,
po/ta.po, po/tr.po, po/uk.po, po/vi.po, po/zh_CN.po, po/zh_HK.po,
po/zh_TW.po: Clean up translations for Default/Home Person
2020-08-10 Leonhaeuser <mirko@leonhaeuser.de> 2021-07-10 SNoiraud <Serge.Noiraud@free.fr>
* po/de.po: Update German translation * gramps/gui/editors/editplace.py,
gramps/gui/editors/editplaceref.py: Place editor, copy and paste of
lat and long text no longer auto-populating latitude and longitude fields.
Fixes #12349
2020-08-10 Serge Noiraud <Serge.Noiraud@laposte.net> 2021-06-25 prculley <paulr2787@gmail.com>
* gramps/gui/views/treemodels/eventmodel.py: Events View: "Main * gramps/gui/viewmanager.py: Fix for crash when changing views if
Participants" column does not (#1075) show the full list of participants when expanded. Fixes #11805 part of toolbar is not shown because of a small screen when changing
views. Fixes #12048
2020-08-10 Paul Culley <paulr2787@gmail.com> 2021-06-25 prculley <paulr2787@gmail.com>
* po/pl.po: Fix Charts/Pedigreeview tooltip Polish translation * gramps/gui/views/pageview.py: Fix bottombar always showing after
(#1092) Fixes #11852 restart, even when not wanted. Fixes #12338
2020-08-10 Krystian Safjan <ksafjan@gmail.com> 2021-07-09 Tian Shixiong <tiansworld@fedoraproject.org>
* po/gramps.pot, po/pl.po: Fix and add objects to Polish translation * po/zh_CN.po: Update and fix Simplified Chinese translation
of Gramps (#1088)
2020-08-06 John Ralls <jralls@ceridwen.us> 2021-07-16 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* mac/gramps.modules: Use current Gtk release instead of Gtk-3.14. * po/de.po: fixed small German translation error for item also fixed
in Weblate GUI for master
2020-08-06 John Ralls <jralls@ceridwen.us> 2021-06-28 Tian Shixiong <tiansworld@fedoraproject.org>
* mac/gramps.modules: Upgrade pymodules for Python 3.8 * po/zh_CN.po: Update Simplified Chinese translation
compatibility.
2020-07-09 prculley <paulr2787@gmail.com> 2021-07-05 pehlm <par.ekholm@pekholm.org>
* gramps/plugins/export/exportxml.py: Fix XML export when 'Group-as" * po/sv.po: One update Swedish translation
name contains XML invalid chars Fixes #11834
2020-07-08 SNoiraud <serge.noiraud@laposte.net> 2021-07-03 John Ralls <jralls@ceridwen.us>
* gramps/plugins/webreport/basepage.py: NarWeb: Province place-type * gramps/plugins/db/dbapi/dbapi.py: Better to use
is not displayed locale.get_collation than locale.collation.
2020-07-07 prculley <paulr2787@gmail.com> 2021-07-03 John Ralls <jralls@ceridwen.us>
* gramps/gui/managedwindow.py: Fix ManagedWindow so that new windows * gramps/plugins/db/dbapi/dbapi.py: Wrap call to
don't appear offscreen when system 'screen' sizes change in part dbapi.check_collection to prevent a forced API change.
time multi-monitor setups. Fixes #11831
2020-07-03 prculley <paulr2787@gmail.com> 2021-07-01 John Ralls <jralls@ceridwen.us>
* gramps/gui/viewmanager.py: Fix menus when db fails to open due to * mac/gramps.modules: Fix URL for berkeleydb patch.
upgrade/downgrade etc. Fixes #11604
2020-07-03 prculley <paulr2787@gmail.com> 2021-07-01 John Ralls <jralls@ceridwen.us>
* gramps/gui/plug/_windows.py: Fix issue with attach source tool, * gramps/plugins/db/dbapi/dbapi.py,
results panel Fixes #11780 gramps/plugins/db/dbapi/sqlite.py: Always use filtered collation
names. Store the Sqlite3 collations in the __collations array to
short-circuit re-creation. Fixes #12343
2020-07-03 prculley <paulr2787@gmail.com> 2021-06-25 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* gramps/plugins/export/exportgedcom.py: Fix GEDCOM export; don't * po/de.po: Fixed different German translations for "What's next"
include ADDR when address is missing Fixes #11825 also fixed in master (Weblate)
2020-07-02 SNoiraud <serge.noiraud@laposte.net> 2021-06-23 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* gramps/gui/editors/editplace.py, * gramps/plugins/rel/rel_de.py: German relation calculator fixed
gramps/gui/editors/editplaceref.py: Coordinates containing a comma issue if more then 24 generations between the two person
instead of a period Fixes #11823
2020-07-23 Leonhaeuser <mirko@leonhaeuser.de> 2021-06-22 Matti Niemelä <matti.u.niemela@gmail.com>
* po/de.po: German translation fixed typo * po/fi.po: Fix translation in Finnish
2020-07-17 niememat <niememat@gmail.com> 2021-06-17 Tian Shixiong <tiansworld@fedoraproject.org>
* po/fi.po: Update finnish translation * po/zh_CN.po: Correct and improve Simplified Chinese translation.
Correct some terribly wrong and low quality translation, even machine
translation. Improve some existing translation for better user experience
as a software, use more written language.
2020-06-07 Tian Shixiong <tiansworld@fedoraproject.org> 2021-05-31 Tian Shixiong <tiansworld@fedoraproject.org>
* po/zh_CN.po: Update Simplified Chinese translation for gramps51 * po/zh_CN.po: Improve and correct Simplified Chinese translation
branch
2020-07-08 Serge Noiraud <Serge.Noiraud@laposte.net> 2021-05-27 Tian Shixiong <tiansworld@fedoraproject.org>
* gramps/plugins/webreport/basepage.py, * po/zh_CN.po: Improve and correct the Simplified Chinese
gramps/plugins/webreport/person.py, translation
gramps/plugins/webreport/surname.py: NarrativeWeb should show
patronymic in individuals (#1048) In the individuals and in surnames pages, we should show the
complete name like defined in the display tab from the narrative web
configuration. Fixes #04404
2020-07-08 Serge Noiraud <Serge.Noiraud@laposte.net> 2021-05-21 Tian Shixiong <tiansworld@fedoraproject.org>
* gramps/plugins/webreport/person.py, * po/zh_CN.po: Update and improve Simplified Chinese translation
gramps/plugins/webreport/place.py: Narrated Website Google Maps
Output JS Warning (#1038) SensorNotRequired: The sensor parameter is no longer required for
the Maps JavaScript API. It won't prevent the Maps JavaScript API
from working correctly, but we recommend that you remove the sensor
parameter from the script element. Fixes #011654
2020-01-11 giansalvo <pioggia3+github@gmail.com> 2021-05-17 Tian Shixiong <tiansworld@fedoraproject.org>
* gramps/gen/filters/rules/person/_isdefaultperson.py, * po/zh_CN.po: Update Simplified Chinese translation
gramps/gen/filters/rules/person/_islessthannthgenerationancestorofd
efaultperson.py, gramps/gui/views/navigationview.py,
gramps/plugins/lib/libpersonview.py,
gramps/plugins/view/fanchartview.py,
gramps/plugins/view/geoclose.py,
gramps/plugins/view/geofamclose.py,
gramps/plugins/view/geomoves.py, gramps/plugins/view/geoperson.py,
gramps/plugins/view/pedigreeview.py,
gramps/plugins/view/relview.py, po/ar.po, po/bg.po, po/br.po,
po/ca.po, po/cs.po, po/da.po, po/de.po, po/el.po, po/en_GB.po,
po/eo.po, po/es.po, po/fi.po, po/fr.po, po/ga.po, po/gramps.pot,
po/he.po, po/hr.po, po/hu.po, po/is.po, po/it.po, po/ja.po,
po/lt.po, po/mk.po, po/nb.po, po/nl.po, po/nn.po, po/pl.po,
po/pt_BR.po, po/pt_PT.po, po/ro.po, po/ru.po, po/sk.po, po/sl.po,
po/sq.po, po/sr.po, po/sr_Latn.po, po/sv.po, po/ta.po, po/tr.po,
po/uk.po, po/vi.po, po/zh_CN.po, po/zh_HK.po, po/zh_TW.po: Fix bug
0011078: 'Default person' instead of 'Home person' - modified button hints - modified filter rules names and descriptions - modified .pot and .po files - substituted 'home person' with 'Home Person'
2020-07-07 Leonhaeuser <mirko@leonhaeuser.de> 2020-09-26 Jan Sparreboom <jan@sparreboom.net>
* po/de.po: Germen fixed translation error of Media: * gramps/gen/datehandler/_date_nl.py, gramps/plugins/rel/rel_nl.py,
po/nl.po: Update Dutch translation
2020-07-04 Leonhaeuser <mirko@leonhaeuser.de> 2021-05-07 Tian Shixiong <tiansworld@fedoraproject.org>
* po/de.po: Fix typo * po/zh_CN.po: Correct and Update Simplified Chinese translation
2020-07-01 Leonhaeuser <mirko@leonhaeuser.de> 2020-10-13 Tian Shixiong <tiansworld@fedoraproject.org>
* po/de.po: update German translation * po/zh_CN.po: Update Simplified Chinese translation
2020-02-16 Nick Hall <nick-h@gramps-project.org> 2021-05-14 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* gramps/gui/editors/editeventref.py: Use event attribute types in * po/de.po: Corrected some German translation errors found during
the event reference editor In the event reference editor, custom event attribute types should handbook revision
be used rather than the default person attribute types. Fixes #11576.
2020-04-23 SNoiraud <serge.noiraud@laposte.net> 2021-05-04 John Ralls <jralls@ceridwen.us>
* gramps/gui/configure.py, po/ar.po, po/bg.po, po/br.po, po/ca.po, * gramps/grampsapp.py: Add file logging for macOS. When Gramps is launched
po/cs.po, po/da.po, po/de.po, po/el.po, po/en_GB.po, po/eo.po, from macOS's LaunchServices it doesn't have a sys.stderr attached so the
po/es.po, po/fi.po, po/fr.po, po/ga.po, po/he.po, po/hr.po, default stream logger goes to /dev/null. Use a FileHandler in tht case,
po/hu.po, po/is.po, po/it.po, po/ja.po, po/lt.po, po/mk.po, writing the log to $TMPDIR/gramps-pid.log. This will help particularly in
po/nb.po, po/nl.po, po/nn.po, po/pl.po, po/pt_BR.po, po/pt_PT.po, analyzing crashes where python shuts down as there's no crash report in
po/ro.po, po/ru.po, po/sk.po, po/sl.po, po/sq.po, po/sr.po, that case.
po/sr_Latn.po, po/sv.po, po/ta.po, po/tr.po, po/uk.po, po/vi.po,
po/zh_CN.po, po/zh_HK.po, po/zh_TW.po: Fix typo in gui/configure.py
and translation files Fixes #11665
2020-05-07 prculley <paulr2787@gmail.com> 2021-05-06 John Ralls <jralls@ceridwen.us>
* gramps/plugins/tool/verify.py: Fix Verify tool bug caused by bad * mac/gramps.modules: Update PyICU to 2.7.2 in macOS build.
change in GObject introspection Fixes: #11708
2020-06-22 pehlm <par.ekholm@pekholm.org> 2021-05-06 Paul Culley <paulr2787@gmail.com>
* po/sv.po: A little adjustment to Swedish translation * gramps/plugins/lib/libplaceview.py: Fix libplaceview to avoid
exception when mapservice is no longer present (#1193) Fixes #12263
2020-06-21 pehlm <par.ekholm@pekholm.org> 2021-05-06 Paul Culley <paulr2787@gmail.com>
* po/sv.po: Updates to Swedish translation * gramps/plugins/gramplet/backlinks.py: Fix References Gramplet for
inadequate updates when other objects change (#1192) Fixes #12248
2020-06-20 Nick Hall <nick-h@gramps-project.org> 2021-05-06 Serge Noiraud <Serge.Noiraud@free.fr>
* gramps/gen/utils/grampslocale.py: Remove Japanese from the * gramps/plugins/view/geofamily.py: geofamily crashes if a family
incomplete translations Japanese now has a coverage of 83.2% which is above the 70% has no father (#1188)
threshold.
2020-06-20 Megumi Sakata <megumi.sakata.k@gmail.com> 2021-05-06 Serge Noiraud <Serge.Noiraud@free.fr>
* po/ja.po: Update Japanese translation * gramps/gen/merge/mergepersonquery.py: Home Person setting does not
convey in a merge. Fixes #12235
2020-06-07 Serge Noiraud <Serge.Noiraud@laposte.net> 2021-05-06 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/webreport/person.py, * gramps/gen/utils/docgen/csvtab.py: Fix CSV export of view to only
gramps/plugins/webreport/place.py: Navweb: incorrect link type for put single CR character. (#1186) Fixes #12158
osm css files (#1071) Fixes #011787
2020-06-07 prculley <paulr2787@gmail.com> 2021-05-06 Paul Culley <paulr2787@gmail.com>
* data/tests/imp_sample.gramps: Fix import test for change cause by * gramps/gen/filters/rules/media/__init__.py: Add Media filter rule
commit a2c66417 which was Fix GEDCOM import for bad source title 'HasMedia' to list of media rules for editor (#1182) Fixes #12212
when sources precede references.
2020-06-07 prculley <paulr2787@gmail.com> 2021-04-28 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* : commit e614a79cef213f57552ceb566eb2d294c9435231 Author: vantu5z * po/de.po: corrected German translation of "confidence"
<vantu5z@mail.ru> Date: Tue Apr 28 15:23:25 2020 +0300
2020-03-16 prculley <paulr2787@gmail.com> 2021-04-26 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* gramps/gen/plug/menu/_enumeratedlist.py: Fix some reports for CLI * po/de.po: German corrected translation of 'attribute'
where warning message about Value not found Fixes #11621
2020-03-16 prculley <paulr2787@gmail.com> 2021-04-25 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* gramps/cli/plug/__init__.py: Fix Genealogy Tree reports for crash * po/de.po: Fixed translation error of "display name editor" into
in CLI Fixes #11621 German
2020-04-10 prculley <paulr2787@gmail.com> 2021-04-24 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* gramps/gui/views/treemodels/treebasemodel.py: Add uistate to tree * po/de.po: some translation fixes for German
views filter initialization Fixes #11657
2020-04-04 prculley <paulr2787@gmail.com> 2021-04-24 pehlm <par.ekholm@pekholm.org>
* gramps/plugins/lib/libgedcom.py: Fix GEDCOM import for bad source * po/sv.po: Changed immigration too, Swedish
title when sources precede references. Fixes #11610
2020-03-31 prculley <paulr2787@gmail.com> 2021-04-24 pehlm <par.ekholm@pekholm.org>
* gramps/plugins/tool/removeunused.py: Fix RemoveUnused tool for * po/sv.po: Correction of Swedish translation
crash caused by Gtk introspection bug Fixes #11634
2020-03-30 prculley <paulr2787@gmail.com> 2021-04-22 Helder Geovane Gomes de Lima <he7d3r@gmail.com>
* gramps/gen/plug/_manager.py, gramps/gen/plug/_pluginreg.py, * po/pt_BR.po: Update Portuguese translation (pt_BR) (#1199)
gramps/gui/pluginmanager.py, This pull request is an updated version of the patch I've provided
gramps/plugins/lib/maps/messagelayer.py: Fix some Python syntax at <https://gramps-project.org/bugs/view.php?id=10547> in 2018, now
errors that appear in v3.8.x Fixes #11641 based on branch 5.1
2020-03-26 SNoiraud <serge.noiraud@laposte.net> 2021-04-19 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* gramps/gui/editors/displaytabs/eventrefmodel.py, * po/de.po: Corrected translation of markup in German translation
gramps/plugins/gramplet/events.py: Age: test if the death is the
same day as birth
2020-03-25 SNoiraud <serge.noiraud@laposte.net> 2021-04-17 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* gramps/gui/editors/displaytabs/eventrefmodel.py, * po/de.po: Fixed translation of tags in German translation
gramps/plugins/gramplet/events.py: Suppress age = 0 days in events
list If the reference event date is equal to the event date, don't show
the age except if the date is estimated, calculated, ... Fixes #0007745
2020-03-23 prculley <paulr2787@gmail.com> 2021-04-14 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* gramps/gui/viewmanager.py: Fix Dashboard Gramplets to update * po/de.po: German translation for type unified
during db close when not shown Fixes #11632
2020-03-14 prculley <paulr2787@gmail.com> 2021-04-13 romjerome <romjerome@yahoo.fr>
* gramps/grampsapp.py: Fix Windows GUI mode startup for crash with * po/fr.po: 11656: typo, spelling correction contribution by Philippe
some languages Fixes: #11612. #11490, #11518, #9179, #9201, #9266
2020-03-07 prculley <paulr2787@gmail.com> 2021-04-13 romjerome <romjerome@yahoo.fr>
* gramps/gen/db/generic.py, gramps/plugins/db/dbapi/dbapi.py: Fix * gramps/gen/utils/grampslocale.py: Need to set locale.textdomain
dbapi to support "Abandon Changes & Quit" feature Fixes #11599 under linux (#1198) _build_popup_ui() ignores translated strings without
locale.textdomain set.
2020-02-08 prculley <paulr2787@gmail.com> 2021-04-13 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* gramps/gen/lib/grampstype.py: Fix GrampsType for comparison bug * po/de.po: Fixed German translation of number for places
with empty string as one value Fixes #11563
2020-05-07 prculley <paulr2787@gmail.com> 2021-04-11 John Ralls <jralls@ceridwen.us>
* gramps/plugins/tool/verify.py: Fix Verify tool bug caused by bad * mac/gramps.bundle, mac/gramps.modules,
change in GObject introspection Fixes: #11708 mac/patches/berkeleydb-4.8-atomic.patch: Update dependencies.
Includes moving berkeleydb and pybsddb over from gtk-osx.
2020-04-24 niememat <niememat@gmail.com> 2021-03-21 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/fi.po: Fix translation in Finnish * po/de.po: Some small fixes in German translation
2020-04-18 Joan Creus <joan.creusandreu@gmail.com> 2021-03-11 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/ca.po: Updating Catalan translation * po/de.po: Update German translation for csv import/export
2020-04-18 Joan Creus <joan.creusandreu@gmail.com> 2021-03-01 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/ca.po: Updating Catalan translation * po/de.po: small fix in German translation
2020-01-20 prculley <paulr2787@gmail.com> 2021-02-19 Matthias Kemmer <49940207+Mattkmmr@users.noreply.github.com>
* gramps/gen/datehandler/__init__.py: Fix Date Display so that it * gramps/gen/filters/rules/person/_matcheseventfilter.py: Change
uses LC_TIME if defined Fixes #11230 category of 'MatchesEventFilter' (#1130)
2020-01-12 prculley <paulr2787@gmail.com> 2021-02-19 Paul Culley <paulr2787@gmail.com>
* gramps/gen/lib/styledtext.py, * gramps/gui/viewmanager.py, gramps/gui/views/pageview.py: Fix issue
gramps/gen/lib/test/styledtext_test.py: Fix StyledText so serialize where separator between top and bottom bar of View creeps up.
will match for style list order changes Fixes #11529 (#1122) Fixes #11973
2020-01-08 prculley <paulr2787@gmail.com> 2021-02-19 Paul Culley <paulr2787@gmail.com>
* gramps/gui/managedwindow.py: Try to fix exceptions on * gramps/plugins/gramplet/locations.py: Fix Locations Gramplet
ManagedWindow close Issues #10252, #10642, #10821, #11163, #11440, #11476, #11482, (Enclosed by) to properly display certain nested places. (#1127)
#11508 when the smallest place has undated enclosure and larger places are dated.
Issue #11691
2020-04-08 John Ralls <jralls@ceridwen.us> 2021-02-19 Paul Culley <paulr2787@gmail.com>
* : Merge John Ralls's 'bug11639' into maintenance/gramps51 * gramps/gui/dbman.py: Fix Family Tree Manager drop error on Windows
(#1132) Fixes #10734
2020-04-04 Serge Noiraud <Serge.Noiraud@laposte.net> 2021-02-19 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/tool/verify.py: Same date of birth and death gives * gramps/plugins/export/exportvcalendar.py: Fix exportvcalendar
an error. (#1011) Fixes #011553 error is "is not" with a literal (Python 3.8 issue) (#1135) Fixes #12000
2020-04-04 Serge Noiraud <Serge.Noiraud@laposte.net> 2021-02-19 Serge Noiraud <Serge.Noiraud@free.fr>
* gramps/plugins/lib/maps/osmgps.py: Geography: add a popup for a * gramps/gui/clipboard.py: Handle not found when copying source from
bad tiles path (#1025) the citation tree (#1175) Fixes #12170
2020-04-04 Serge Noiraud <Serge.Noiraud@laposte.net> 2021-02-19 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/webreport/narrativeweb.py: Narweb: image size limit * gramps/gui/dbloader.py: DbLoader: Fix call to 'file' function,
doesn't match tooltip (#1004) Fixes #011536 which doesn't exist in Python3 (#1173)
2020-04-01 John Ralls <jralls@ceridwen.us> 2021-02-19 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/db/dbapi/sqlite.py: Protect SQLite3 locale from * gramps/gen/db/utils.py: Fix write_lock_file exception when
old-style Unicode locale characters. PySQLite3 requires that collation names have only ascii USERNAME is missing (#1171) Fixes #12150
alphanumerics and _. ICU locales use old-style Unicode specifiers
and passing them to create_locale will raise an exception. Translate
those characters into underscores. Fixes #11639
2020-03-26 vantu5z <vantu5z@mail.ru> 2021-02-19 Paul Culley <paulr2787@gmail.com>
* po/ru.po: update Russian translation * gramps/gui/glade/editplace.glade: Fix EditPlace so Tab key doesn't
get stuck on Private icon (#1168) Fixes #12139
2020-03-25 Translator5 <Translator5@users.noreply.github.com> 2021-02-19 Paul Culley <paulr2787@gmail.com>
* po/ru.po: [Language: Russian] Maintenance/gramps51 (#1027) * some Russian translations updates Новый перевод для неких случаев, но * gramps/plugins/textreport/tagreport.py: Fix Tag report for places
улучшающие понимание и выглядит that have a hierarchy. (#1162) Fixes #12124
более уместно. Также применены
русские переводы слов, которые
использовали до того англицизмы
2020-03-03 Joan Creus <joan.creusandreu@gmail.com> 2021-02-19 Paul Culley <paulr2787@gmail.com>
* po/ca.po: Updating Catalan translation * gramps/gui/viewmanager.py: Fix exception when cancelling out of a
db upgrade in GUI (#1154) Fixes #12063
2020-02-29 Joan Creus <joan.creusandreu@gmail.com> 2021-02-12 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/ca.po: Updating Catalan translation * po/de.po: additional small German translation fixes
2020-02-25 Bernard Banko <beernarrd@gmail.com> 2021-02-11 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/sl.po: V&O changed to PZV to avoid ampersand * po/de.po: Small fixes German translation
2020-02-07 pehlm <par.ekholm@pekholm.org> 2021-02-06 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/sv.po: Minor update to Swedish translation * po/de.po: fix wrong translation of source text in German
translation
2020-01-07 prculley <paulr2787@gmail.com> 2021-02-06 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* data/tests/exp_sample_ged.ged, * po/de.po: fixed small error in German translation
gramps/plugins/export/exportgedcom.py: Fix GEDCOM export of
estimated/calculated dates with modifers Fixes #11513
2020-01-11 Ross Gammon <rossgammon@mail.dk> 2021-01-26 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* debian/changelog: New debian release - update changelog * po/de.po: small fixes German translation
2020-01-31 vantu5z <vantu5z@mail.ru> 2020-11-06 Chris Mayo <aklhfex@gmail.com>
* po/ru.po: update Russian translation * setup.py: Install 128x128 and 256x256 application icons created with
ImageMagick using e.g.:
convert -background none ../../../gramps.svg -geometry 256x256 gramps.png
2020-01-26 Bernard Banko <beernarrd@gmail.com> 2020-11-06 Chris Mayo <aklhfex@gmail.com>
* po/sl.po: Slovenian translation update * data/{gnome-mime-application-x-gedcom.svg =>
application-x-gedcom.svg},
data/{gnome-mime-application-x-geneweb.svg =>
application-x-geneweb.svg},
data/{gnome-mime-application-x-gramps-package.svg =>
application-x-gramps-package.svg},
data/{gnome-mime-application-x-gramps-xml.svg =>
application-x-gramps-xml.svg},
data/{gnome-mime-application-x-gramps.svg =>
application-x-gramps.svg},
setup.py: Install MIME type icons into the hicolor theme.
The gnome theme is defunct. Remove gnome-mime- prefix from icon filenames.
2020-01-23 prculley <paulr2787@gmail.com> 2020-08-20 Nick Hall <nick-h@gramps-project.org>
* po/ru.po: Fix typo in Russian translation * images/hicolor/scalable/{actions => apps}/gramps.svg, setup.py:
Install application icons into correct directories
2020-01-21 système <romjerome@users.noreply.github.com> 2020-10-15 vantu5z <vantu5z@mail.ru>
* po/fr.po: typos in french translation #11534 #10534 * po/ru.po: Update Russian translation
2020-01-21 Fedik <getthesite@gmail.com> 2020-09-25 Zdeněk Hataš <zdenek.hatas@gmail.com>
* po/uk.po: Ukrainian translation update * po/cs.po: Update Czech translation - typo fixes
2020-01-11 John Ralls <jralls@ceridwen.us> 2020-09-06 Tian Shixiong <tiansworld@fedoraproject.org>
* mac/Info.plist, mac/gramps.modules: Mac release of 5.1.2. * po/zh_CN.po: Update Simplified Chinese translation
2020-01-10 prculley <paulr2787@gmail.com> 2020-08-16 Jan Sparreboom <jan@sparreboom.net>
* gramps/gen/const.py, gramps/gui/grampsgui.py, gramps/version.py: * po/nl.po: Update Dutch translation
Bump to v5.1.3
2020-04-21 Lajos Nemeséri <nemeseril@gmail.com>
* po/hu.po: Revised and updated hu translation
2020-09-13 Juan Saavedra <jcsaaver@gmail.com>
* po/es.po: Update Spanish translation
2020-09-15 bokfink <62996239+bokfink@users.noreply.github.com>
* gramps/plugins/textreport/birthdayreport.py: Fix error in Birthday
and Anniversary report (#1113) Fixes an error triggered when the first
person_handle in the list has a death event, but no birth event
(get_birth_ref() == None) and does not have family relationships
(spouse_handle == None). These conditions lead to the local variable
short_name not being declared before it comes time to process death events.
Fixes #11766
2020-09-14 Paul Culley <paulr2787@gmail.com>
* gramps/gen/plug/docgen/graphdoc.py: Fix graphdoc to properly
escape characters in ids for Graphviz (#1111) Fixes #11741
2020-09-14 John Ralls <jralls@ceridwen.us>
* gramps/gen/db/dummydb.py, gramps/gen/db/txn.py,
gramps/gen/db/utils.py, gramps/gen/dbstate.py,
gramps/gen/filters/rules/test/person_rules_test.py,
gramps/gen/utils/callback.py, gramps/plugins/db/bsddb/bsddbtxn.py:
Replace inspect.stack() with inspect.currentframe() (#1104)
* Replace inspect.stack() with inspect.currentframe() Fixes #11874
Works around https://bugs.python.org/issue12920 which causes every
call to inspect.trace() to fail because __main__ is always the
starting point. * Fix a few Codecov complaints from files touched by
previous commit. Ignoring the "duplicate code" issue caused by the empty
comment line at the beginning of every file.
2020-09-14 RossGammon <rossgammon@mail.dk>
* debian/changelog, debian/copyright: Update Debian directory after
producing the deb file for the 5.1.3 (#1100) Release.
2020-09-14 Paul Culley <paulr2787@gmail.com>
* gramps/gui/selectors/baseselector.py: Fix crash sorting on columns
in Selectors with TreeModels (#1099) Fixes #11750
2020-09-14 Paul Culley <paulr2787@gmail.com>
* gramps/gui/dbloader.py, gramps/gui/displaystate.py,
gramps/gui/uimanager.py, gramps/gui/utils.py,
gramps/gui/viewmanager.py: Fix progress bar freeze due to changes in
Gtk (#1103) Fixes #11642
2020-09-14 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/docgen/svgdrawdoc.py: Fix svgdrawdoc for text
containing XML invalid characters (#1110) Fixes #11929
2020-08-30 John Ralls <jralls@ceridwen.us>
* mac/gramps.bundle: Further changes for bundling with Python 3.8.
2020-08-30 John Ralls <jralls@ceridwen.us>
* mac/gramps.bundle: Add libgeocode-glib to bundle so that it
actually works.
2020-08-26 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: German translation two small corrections
2020-08-25 John Ralls <jralls@ceridwen.us>
* mac/gramps_launcher.py: [mac] Set __file__ if gramps_launcher.py
is run as __main__. Fixes #11874.
2020-08-21 Zdeněk Hataš <zdenek.hatas@gmail.com>
* po/cs.po: Update Czech translation
2020-08-20 John Ralls <jralls@ceridwen.us>
* mac/Info.plist, mac/gramps.modules: Bundle release of Gramps
5.1.3.
2020-08-20 John Ralls <jralls@ceridwen.us>
* mac/gramps.modules: Add geocode-glib to build.
2020-08-12 pehlm <par.ekholm@pekholm.org>
* po/sv.po: Update Swedish translation
2020-08-12 prculley <paulr2787@gmail.com>
* Bump to 5.1.4

68
NEWS
View File

@ -1,3 +1,69 @@
2021-07-26
Version 5.1.4
* Update translations: cs, de, es, fi, fr, hu, nl, pt_BR, ru, sv, zh_CN.
* Update copyright date.
* Fix probably alive if death without date.
* Place editor, copy and paste of lat and long text no longer
auto-populating latitude and longitude fields.
* Fix for crash when changing views if part of toolbar is not shown because
of a small screen when changing views.
* Fix bottombar always showing after restart, even when not wanted.
* Always use filtered collation names. Store the Sqlite3 collations in the
__collations array to short-circuit re-creation.
* Fix issue with German relation calculator fixed issue when more than 24
generations between the two people.
* Add file logging for macOS. When Gramps is launched from macOS's
LaunchServices it doesn't have a sys.stderr attached so the default stream
logger goes to /dev/null. Use a FileHandler in tht case, writing the log
to $TMPDIR/gramps-pid.log. This will help particularly in analyzing
crashes where python shuts down as there's no crash report in that case.
* Fix libplaceview to avoid exception when mapservice is no longer present.
* Fix References Gramplet for inadequate updates when other objects change.
* Fix geofamily crash if a family has no father.
* Home Person setting does not convey in a merge.
* Fix CSV export of view to only put single CR character.
* Add Media filter rule 'HasMedia' to list of media rules for editor.
* Need to set locale.textdomain under linux. _build_popup_ui() ignores
translated strings without locale.textdomain set.
* Change category of 'MatchesEventFilter'.
* Fix issue where separator between top and bottom bar of View creeps up.
* Fix Locations Gramplet (Enclosed by) to properly display certain nested
places when the smallest place has undated enclosure and larger places are
dated.
* Fix Family Tree Manager drop error on Windows.
* Fix exportvcalendar error is "is not" with a literal (Python 3.8 issue)
* Handle not found when copying source from the citation tree.
* Fix call to 'file' function, which doesn't exist in Python3.
* Fix write_lock_file exception when USERNAME is missing.
* Fix EditPlace so Tab key doesn't get stuck on Private icon.
* Fix Tag report for places that have a hierarchy.
* Fix exception when cancelling out of a db upgrade in GUI.
* Icon file changes:
* Install 128x128 and 256x256 application icons.
* Install MIME type icons into the hicolor theme.
* Remove gnome-mime- prefix from icon filenames.
* Install application icons into correct directories.
* Fix error in Birthday and Anniversary report. Fixes an error triggered
when the first person_handle in the list has a death event, but no birth
event and does not have family relationships. These conditions lead to
the local variable short_name not being declared before it comes time to
process death events.
* Fix graphdoc to properly escape characters in ids for Graphviz.
* Replace inspect.stack() with inspect.currentframe().
Works around https://bugs.python.org/issue12920 which causes every
call to inspect.trace() to fail because __main__ is always the
starting point.
* Fix crash sorting on columns in Selectors with TreeModels.
* Fix progress bar freeze due to changes in Gtk.
* Fix svgdrawdoc for text containing XML invalid characters.
* Mac:
* Update PyICU to 2.7.2 in macOS build.
* Update dependencies. Includes moving berkeleydb and pybsddb over from
gtk-osx.
* Further changes for bundling with Python 3.8.
* Set __file__ if gramps_launcher.py is run as __main__.
* Add geocode-glib to build.
2020-08-11 2020-08-11
Version 5.1.3 Version 5.1.3
* Update ca, de, fi, fr, ja, pl, ru, sl, sv, uk, zh_CN translation * Update ca, de, fi, fr, ja, pl, ru, sl, sv, uk, zh_CN translation
@ -94,7 +160,7 @@ Version 5.1.2
* [Tree doc Tex] fix typo on custom size * [Tree doc Tex] fix typo on custom size
* Fix duplicated "døde døde" Norwegion Translation for libnarrate * Fix duplicated "døde døde" Norwegion Translation for libnarrate
* Fix up Event Editors Place display for bidi text with Gramps ID * Fix up Event Editors Place display for bidi text with Gramps ID
* Fix issues with RTL languages and LAT/LONG * Fix issues with RTL languages and LAT/LONG
* Fix display of GPS coordinates in Places view for RTL languages * Fix display of GPS coordinates in Places view for RTL languages
* Fix place editor lat/long entry for RTL languages * Fix place editor lat/long entry for RTL languages
* Fix GEDCOM export to avoid translated GrampsType strings * Fix GEDCOM export to avoid translated GrampsType strings

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

7
debian/changelog vendored
View File

@ -1,3 +1,10 @@
gramps (5.1.3-1) focal; urgency=medium
* New release
* Update debian/copyright for Alex Roitman
-- Ross Gammon <rosco2@ubuntu.com> Sun, 16 Aug 2020 20:23:34 +0200
gramps (5.1.2-1) unstable; urgency=medium gramps (5.1.2-1) unstable; urgency=medium
* New release * New release

2
debian/copyright vendored
View File

@ -3,7 +3,7 @@ Upstream-Name: Gramps
Source: https://gramps-project.org Source: https://gramps-project.org
Files: * Files: *
Copyright: 2000-2007, Alex Roitman Copyright: 2000-2007, 2020 Alex Roitman
2000-2002, Bruce J. DeGrasse 2000-2002, Bruce J. DeGrasse
2000-2008, Donald N. Allingham 2000-2008, Donald N. Allingham
2000-2007, Martin Hawlisch 2000-2007, Martin Hawlisch

View File

@ -225,7 +225,7 @@ GTK_GETTEXT_DOMAIN = 'gtk30'
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
COPYRIGHT_MSG = "© 2001-2006 Donald N. Allingham\n" \ COPYRIGHT_MSG = "© 2001-2006 Donald N. Allingham\n" \
"© 2007-2020 The Gramps Developers" "© 2007-2021 The Gramps Developers"
COMMENTS = _("Gramps\n (Genealogical Research and Analysis " COMMENTS = _("Gramps\n (Genealogical Research and Analysis "
"Management Programming System)\n" "Management Programming System)\n"
"is a personal genealogy program.") "is a personal genealogy program.")

View File

@ -83,35 +83,37 @@ class DateParserNL(DateParser):
month_to_int["xbris"] = 12 month_to_int["xbris"] = 12
modifier_to_int = { modifier_to_int = {
'voor' : Date.MOD_BEFORE, 'voor' : Date.MOD_BEFORE,
'na' : Date.MOD_AFTER, 'na' : Date.MOD_AFTER,
'tegen' : Date.MOD_ABOUT, 'ca.' : Date.MOD_ABOUT,
'om' : Date.MOD_ABOUT, 'circa' : Date.MOD_ABOUT,
'rond' : Date.MOD_ABOUT, 'om' : Date.MOD_ABOUT,
'circa' : Date.MOD_ABOUT, 'omstreeks' : Date.MOD_ABOUT,
'ca.' : Date.MOD_ABOUT, 'ongeveer' : Date.MOD_ABOUT,
'rond' : Date.MOD_ABOUT,
'tegen' : Date.MOD_ABOUT,
} }
calendar_to_int = { calendar_to_int = {
'gregoriaans' : Date.CAL_GREGORIAN, 'gregoriaans' : Date.CAL_GREGORIAN,
'greg.' : Date.CAL_GREGORIAN, 'greg.' : Date.CAL_GREGORIAN,
'juliaans' : Date.CAL_JULIAN, 'juliaans' : Date.CAL_JULIAN,
'jul.' : Date.CAL_JULIAN, 'jul.' : Date.CAL_JULIAN,
'hebreeuws' : Date.CAL_HEBREW, 'hebreeuws' : Date.CAL_HEBREW,
'hebr.' : Date.CAL_HEBREW, 'hebr.' : Date.CAL_HEBREW,
'islamitisch' : Date.CAL_ISLAMIC, 'islamitisch' : Date.CAL_ISLAMIC,
'isl.' : Date.CAL_ISLAMIC, 'isl.' : Date.CAL_ISLAMIC,
'franse republiek': Date.CAL_FRENCH, 'frans republiekeins' : Date.CAL_FRENCH,
'fran.' : Date.CAL_FRENCH, 'fran.' : Date.CAL_FRENCH,
'persisch' : Date.CAL_PERSIAN, 'persisch' : Date.CAL_PERSIAN,
'zweeds' : Date.CAL_SWEDISH, 'zweeds' : Date.CAL_SWEDISH,
'z' : Date.CAL_SWEDISH, 'z' : Date.CAL_SWEDISH,
} }
quality_to_int = { quality_to_int = {
'geschat' : Date.QUAL_ESTIMATED, 'geschat' : Date.QUAL_ESTIMATED,
'gesch.' : Date.QUAL_ESTIMATED, 'gesch.' : Date.QUAL_ESTIMATED,
'berekend' : Date.QUAL_CALCULATED, 'berekend' : Date.QUAL_CALCULATED,
'ber.' : Date.QUAL_CALCULATED, 'ber.' : Date.QUAL_CALCULATED,
} }
@ -147,17 +149,17 @@ class DateDisplayNL(DateDisplay):
calendar = ( calendar = (
"", "juliaans", "hebreeuws", "", "juliaans", "hebreeuws",
"franse republiek", "persisch", "islamitisch", "frans republikeins", "persisch", "islamitisch",
"zweeds" ) "zweeds" )
_mod_str = ("", "voor ", "na ", "rond ", "", "", "") _mod_str = ("", "voor ", "na ", "omstreeks ", "", "", "")
_qual_str = ("", "geschat ", "berekend ") _qual_str = ("", "geschat ", "berekend ")
_bce_str = "%s v. Chr." _bce_str = "%s v. Chr."
formats = ( formats = (
"JJJJ-MM-DD (ISO)", "Numerisch DD/MM/JJ", "Maand Dag, Jaar", "JJJJ-MM-DD (ISO)", "Numeriek DD/MM/JJJJ", "Maand Dag, Jaar",
"Mnd. Dag Jaar", "Dag Maand Jaar", "Dag Mnd. Jaar" "Mnd. Dag Jaar", "Dag Maand Jaar", "Dag Mnd. Jaar"
) )
# this definition must agree with its "_display_gregorian" method # this definition must agree with its "_display_gregorian" method

View File

@ -52,7 +52,6 @@ methods should be changed to generate exceptions. Possibly by globally changing
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import logging import logging
import os
import inspect import inspect
from abc import ABCMeta from abc import ABCMeta
from types import FunctionType from types import FunctionType
@ -160,10 +159,12 @@ def wrapper(method):
""" """
class_name = args[0].__class__.__name__ class_name = args[0].__class__.__name__
func_name = method.__name__ func_name = method.__name__
caller_frame = inspect.stack()[1] frame = inspect.currentframe()
c_frame = frame.f_back
c_code = c_frame.f_code
LOG.debug('calling %s.%s()... from file %s, line %s in %s', LOG.debug('calling %s.%s()... from file %s, line %s in %s',
class_name, func_name, os.path.split(caller_frame[1])[1], class_name, func_name, c_code.co_filename, c_frame.f_lineno,
caller_frame[2], caller_frame[3]) c_code.co_name)
return method(*args, **keywargs) return method(*args, **keywargs)
return wrapped return wrapped

View File

@ -78,15 +78,13 @@ class DbTxn(defaultdict):
elapsed_time = time.time() - self.start_time elapsed_time = time.time() - self.start_time
if __debug__: if __debug__:
caller_frame = inspect.stack()[1] frame = inspect.currentframe()
c_frame = frame.f_back
c_code = c_frame.f_code
_LOG.debug(" **** DbTxn %s exited. Called from file %s, " _LOG.debug(" **** DbTxn %s exited. Called from file %s, "
"line %s, in %s **** %.2f seconds" % "line %s, in %s **** %.2f seconds",
((hex(id(self)),)+ hex(id(self)), c_code.co_filename, c_frame.f_lineno,
(os.path.split(caller_frame[1])[1],)+ c_code.co_name, elapsed_time)
tuple(caller_frame[i] for i in range(2, 4))+
(elapsed_time,)
)
)
return False return False

View File

@ -42,6 +42,8 @@ from ..const import PLUGINS_DIR, USER_PLUGINS
from ..constfunc import win, get_env_var from ..constfunc import win, get_env_var
from ..config import config from ..config import config
from .dbconst import DBLOGNAME, DBLOCKFN, DBBACKEND from .dbconst import DBLOGNAME, DBLOCKFN, DBBACKEND
from ..const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -70,12 +72,14 @@ def make_database(plugin_id):
database = getattr(mod, pdata.databaseclass) database = getattr(mod, pdata.databaseclass)
db = database() db = database()
import inspect import inspect
caller_frame = inspect.stack()[1] frame = inspect.currentframe()
c_frame = frame.f_back
c_code = c_frame.f_code
_LOG.debug("Database class instance created Class:%s instance:%s. " _LOG.debug("Database class instance created Class:%s instance:%s. "
"Called from File %s, line %s, in %s" "Called from File %s, line %s, in %s",
% ((db.__class__.__name__, hex(id(db))) db.__class__.__name__, hex(id(db)), c_code.co_filename,
+ (os.path.split(caller_frame[1])[1],) c_frame.f_lineno, c_code.co_name)
+ tuple(caller_frame[i] for i in range(2, 4))))
return db return db
else: else:
raise Exception("can't load database backend: '%s'" % plugin_id) raise Exception("can't load database backend: '%s'" % plugin_id)
@ -209,8 +213,8 @@ def write_lock_file(name):
if win(): if win():
user = get_env_var('USERNAME') user = get_env_var('USERNAME')
host = get_env_var('USERDOMAIN') host = get_env_var('USERDOMAIN')
if host is None: if not user:
host = "" user = _("Unknown")
else: else:
host = os.uname()[1] host = os.uname()[1]
# An ugly workaround for os.getlogin() issue with Konsole # An ugly workaround for os.getlogin() issue with Konsole

View File

@ -29,7 +29,6 @@ Provide the database state class
# #
#------------------------------------------------------------------------ #------------------------------------------------------------------------
import sys import sys
import os
import logging import logging
import inspect import inspect
@ -88,10 +87,12 @@ class DbState(Callback):
""" """
class_name = self.__class__.__name__ class_name = self.__class__.__name__
func_name = "is_open" func_name = "is_open"
caller_frame = inspect.stack()[1] frame = inspect.currentframe()
c_frame = frame.f_back
c_code = c_frame.f_code
_LOG.debug('calling %s.%s()... from file %s, line %s in %s', _LOG.debug('calling %s.%s()... from file %s, line %s in %s',
class_name, func_name, os.path.split(caller_frame[1])[1], class_name, func_name, c_code.co_filename, c_frame.f_lineno,
caller_frame[2], caller_frame[3]) c_code.co_name)
return (self.db is not None) and self.db.is_open() return (self.db is not None) and self.db.is_open()
def change_database(self, database): def change_database(self, database):

View File

@ -51,6 +51,7 @@ editor_rule_list = [
MediaPrivate, MediaPrivate,
MatchesFilter, MatchesFilter,
MatchesSourceConfidence, MatchesSourceConfidence,
HasMedia,
HasAttribute, HasAttribute,
ChangedSince, ChangedSince,
HasTag, HasTag,

View File

@ -52,7 +52,7 @@ class MatchesEventFilter(MatchesEventFilterBase):
name = _('Persons with events matching the <event filter>') name = _('Persons with events matching the <event filter>')
description = _("Matches persons who have events that match a certain" description = _("Matches persons who have events that match a certain"
" event filter") " event filter")
category = _('General filters') category = _('Event filters')
# we want to have this filter show event filters # we want to have this filter show event filters
namespace = 'Event' namespace = 'Event'

View File

@ -99,7 +99,8 @@ class BaseTest(unittest.TestCase):
stime = perf_counter() stime = perf_counter()
results = filter_.apply(self.db) results = filter_.apply(self.db)
if __debug__: if __debug__:
rulename = inspect.stack()[1][3] frame = inspect.currentframe()
rulename = frame.f_back.f_code.co_name
print("%s: %.2f\n" % (rulename, perf_counter() - stime)) print("%s: %.2f\n" % (rulename, perf_counter() - stime))
return set(results) return set(results)

View File

@ -31,8 +31,8 @@ Provide merge capabilities for persons.
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
from ..db import DbTxn from ..db import DbTxn
from ..const import GRAMPS_LOCALE as glocale from ..const import GRAMPS_LOCALE as glocale
_ = glocale.translation.sgettext
from ..errors import MergeError from ..errors import MergeError
_ = glocale.translation.sgettext
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -49,11 +49,12 @@ class MergePersonQuery:
self.titanic = titanic self.titanic = titanic
if self.check_for_spouse(self.phoenix, self.titanic): if self.check_for_spouse(self.phoenix, self.titanic):
raise MergeError(_("Spouses cannot be merged. To merge these " raise MergeError(_("Spouses cannot be merged. To merge these "
"people, you must first break the relationship between them.")) "people, you must first break the relationship"
" between them."))
if self.check_for_child(self.phoenix, self.titanic): if self.check_for_child(self.phoenix, self.titanic):
raise MergeError(_("A parent and child cannot be merged. To merge " raise MergeError(_("A parent and child cannot be merged. To merge "
"these people, you must first break the relationship between " "these people, you must first break the relatio"
"them.")) "nship between them."))
def check_for_spouse(self, person1, person2): def check_for_spouse(self, person1, person2):
"""Return if person1 and person2 are spouses of eachother.""" """Return if person1 and person2 are spouses of eachother."""
@ -80,12 +81,12 @@ class MergePersonQuery:
main_family.merge(family) main_family.merge(family)
for childref in family.get_child_ref_list(): for childref in family.get_child_ref_list():
child = self.database.get_person_from_handle( child = self.database.get_person_from_handle(
childref.get_reference_handle()) childref.get_reference_handle())
if main_family_handle in child.parent_family_list: if main_family_handle in child.parent_family_list:
child.remove_handle_references('Family', [family_handle]) child.remove_handle_references('Family', [family_handle])
else: else:
child.replace_handle_reference('Family', family_handle, child.replace_handle_reference('Family', family_handle,
main_family_handle) main_family_handle)
self.database.commit_person(child, trans) self.database.commit_person(child, trans)
if self.phoenix: if self.phoenix:
self.phoenix.remove_family_handle(family_handle) self.phoenix.remove_family_handle(family_handle)
@ -143,7 +144,8 @@ class MergePersonQuery:
for family_handle in self.phoenix.get_parent_family_handle_list(): for family_handle in self.phoenix.get_parent_family_handle_list():
family = self.database.get_family_from_handle(family_handle) family = self.database.get_family_from_handle(family_handle)
if family.has_handle_reference('Person', old_handle): if family.has_handle_reference('Person', old_handle):
family.replace_handle_reference('Person', old_handle,new_handle) family.replace_handle_reference('Person', old_handle,
new_handle)
self.database.commit_family(family, trans) self.database.commit_family(family, trans)
family_merge_guard = False family_merge_guard = False
@ -182,7 +184,10 @@ class MergePersonQuery:
self.database.commit_family(family, trans) self.database.commit_family(family, trans)
parent_list.append(parents) parent_list.append(parents)
if self.database.get_default_handle() == old_handle: hp_hdl = self.database.get_default_handle()
self.database.set_default_person_handle(None) if (hp_hdl in (self.phoenix.get_handle(), self.titanic.get_handle())
and hp_hdl != self.phoenix.get_handle()):
self.database.set_default_person_handle(self.phoenix.get_handle())
self.database.remove_person(old_handle, trans) self.database.remove_person(old_handle, trans)
return family_merge_ok return family_merge_ok

View File

@ -113,6 +113,10 @@ else:
_GS_CMD = where_is("gs") _GS_CMD = where_is("gs")
def esc(id_txt):
return id_txt.replace('"', '\\"')
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# GVOptions # GVOptions
@ -575,7 +579,7 @@ class GVDocBase(BaseDoc, GVDoc):
text += ' URL="%s"' % url text += ' URL="%s"' % url
text += " ]" text += " ]"
self.write(' "%s" %s;\n' % (node_id, text)) self.write(' "%s" %s;\n' % (esc(node_id), text))
def add_link(self, id1, id2, style="", head="", tail="", comment=""): def add_link(self, id1, id2, style="", head="", tail="", comment=""):
""" """
@ -583,7 +587,7 @@ class GVDocBase(BaseDoc, GVDoc):
Implements GVDocBase.add_link(). Implements GVDocBase.add_link().
""" """
self.write(' "%s" -> "%s"' % (id1, id2)) self.write(' "%s" -> "%s"' % (esc(id1), esc(id2)))
if style or head or tail: if style or head or tail:
self.write(' [') self.write(' [')
@ -635,7 +639,7 @@ class GVDocBase(BaseDoc, GVDoc):
Implements GVDocBase.add_samerank(). Implements GVDocBase.add_samerank().
""" """
self.write(' {rank=same "%s" "%s"}\n' % (id1, id2)) self.write(' {rank=same "%s" "%s"}\n' % (esc(id1), esc(id2)))
def rewrite_label(self, id, label): def rewrite_label(self, id, label):
""" """
@ -643,7 +647,7 @@ class GVDocBase(BaseDoc, GVDoc):
Implements GVDocBase.rewrite_label(). Implements GVDocBase.rewrite_label().
""" """
self.write(' "%s" [label = "%s"]\n' % (id, label)) self.write(' "%s" [label = "%s"]\n' % (esc(id), label))
def start_subgraph(self, graph_id): def start_subgraph(self, graph_id):
""" Implement GVDocBase.start_subgraph() """ """ Implement GVDocBase.start_subgraph() """

View File

@ -142,6 +142,8 @@ class ProbablyAlive:
# person died more than MAX after current year # person died more than MAX after current year
if death_date.is_valid(): if death_date.is_valid():
birth_date = death_date.copy_offset_ymd(year=-self.MAX_AGE_PROB_ALIVE) birth_date = death_date.copy_offset_ymd(year=-self.MAX_AGE_PROB_ALIVE)
else:
birth_date = death_date
explain = _("death date") explain = _("death date")
if not death_date and birth_date: if not death_date and birth_date:

View File

@ -324,12 +324,16 @@ class Callback:
return return
# Check signal exists # Check signal exists
frame = inspect.currentframe()
c_frame = frame.f_back
c_code = c_frame.f_code
frame_info = (c_code.co_filename, c_frame.f_lineno, c_code.co_name)
if signal_name not in self.__signal_map: if signal_name not in self.__signal_map:
self._warn("Attempt to emit to unknown signal: %s\n" self._warn("Attempt to emit to unknown signal: %s\n"
" from: file: %s\n" " from: file: %s\n"
" line: %d\n" " line: %d\n"
" func: %s\n" " func: %s\n"
% ((str(signal_name), ) + inspect.stack()[1][1:4])) % ((str(signal_name), ) + frame_info))
return return
# check that the signal is not already being emitted. This prevents # check that the signal is not already being emitted. This prevents
@ -340,7 +344,7 @@ class Callback:
" from: file: %s\n" " from: file: %s\n"
" line: %d\n" " line: %d\n"
" func: %s\n" " func: %s\n"
% ((str(signal_name), ) + inspect.stack()[1][1:4])) % ((str(signal_name), ) + frame_info))
return return
try: try:
@ -358,7 +362,7 @@ class Callback:
" from: file: %s\n" " from: file: %s\n"
" line: %d\n" " line: %d\n"
" func: %s\n" " func: %s\n"
% ((str(signal_name), ) + inspect.stack()[1][1:4])) % ((str(signal_name), ) + frame_info))
return return
# type check arguments # type check arguments
@ -369,7 +373,7 @@ class Callback:
" from: file: %s\n" " from: file: %s\n"
" line: %d\n" " line: %d\n"
" func: %s\n" " func: %s\n"
% ((str(signal_name), ) + inspect.stack()[1][1:4])) % ((str(signal_name), ) + frame_info))
return return
if len(args) > 0: if len(args) > 0:
@ -379,7 +383,7 @@ class Callback:
" from: file: %s\n" " from: file: %s\n"
" line: %d\n" " line: %d\n"
" func: %s\n" " func: %s\n"
% ((str(signal_name), ) + inspect.stack()[1][1:4])) % ((str(signal_name), ) + frame_info))
return return
if arg_types is not None: if arg_types is not None:
@ -391,7 +395,7 @@ class Callback:
" line: %d\n" " line: %d\n"
" func: %s\n" " func: %s\n"
" arg passed was: %s, type of arg passed %s, type should be: %s\n" " arg passed was: %s, type of arg passed %s, type should be: %s\n"
% ((str(signal_name), ) + inspect.stack()[1][1:4] +\ % ((str(signal_name), ) + frame_info +\
(args[i], repr(type(args[i])), repr(arg_types[i])))) (args[i], repr(type(args[i])), repr(arg_types[i]))))
return return
if signal_name in self.__callback_map: if signal_name in self.__callback_map:

View File

@ -49,7 +49,7 @@ class CSVTab(TabbedDoc):
else: else:
self.filename = filename self.filename = filename
self.f = open(self.filename, "w", self.f = open(self.filename, "w", newline='',
encoding='utf_8_sig' if win() else 'utf_8') encoding='utf_8_sig' if win() else 'utf_8')
self.writer = csv.writer(self.f) self.writer = csv.writer(self.f)

View File

@ -525,6 +525,8 @@ class GrampsLocale:
# with locale instead of gettext. Win32 doesn't support bindtextdomain. # with locale instead of gettext. Win32 doesn't support bindtextdomain.
if self.localedir: if self.localedir:
if not sys.platform == 'win32': if not sys.platform == 'win32':
# bug12278, _build_popup_ui() under linux and macOS
locale.textdomain(self.localedomain)
locale.bindtextdomain(self.localedomain, self.localedir) locale.bindtextdomain(self.localedomain, self.localedir)
else: else:
self._win_bindtextdomain(self.localedomain.encode('utf-8'), self._win_bindtextdomain(self.localedomain.encode('utf-8'),

View File

@ -127,15 +127,32 @@ if win():
elif not os.path.isdir(HOME_DIR): elif not os.path.isdir(HOME_DIR):
os.makedirs(HOME_DIR) os.makedirs(HOME_DIR)
sys.stdout = sys.stderr = open(logfile, "w", encoding='utf-8') sys.stdout = sys.stderr = open(logfile, "w", encoding='utf-8')
stderrh = logging.StreamHandler(sys.stderr) # macOS sets stderr to /dev/null when running without a terminal,
stderrh.setFormatter(form) # e.g. if Gramps.app is lauched by double-clicking on it in
stderrh.setLevel(logging.DEBUG) # finder. Write to a file instead.
if mac() and not sys.stdin.isatty():
from tempfile import gettempdir
# Setup the base level logger, this one gets log_file_name = 'gramps-' + str(os.getpid()) + '.log'
# everything. log_file_path = os.path.join(gettempdir(), log_file_name)
l = logging.getLogger() log_file_handler = logging.FileHandler(log_file_path, mode='a',
l.setLevel(logging.WARNING) encoding='utf-8')
l.addHandler(stderrh) log_file_handler.setFormatter(form)
log_file_handler.setLevel(logging.DEBUG)
logger = logging.getLogger()
logger.setLevel(logging.WARNING)
logger.addHandler(log_file_handler)
else:
stderrh = logging.StreamHandler(sys.stderr)
stderrh.setFormatter(form)
stderrh.setLevel(logging.DEBUG)
# Setup the base level logger, this one gets
# everything.
l = logging.getLogger()
l.setLevel(logging.WARNING)
l.addHandler(stderrh)
def exc_hook(err_type, value, t_b): def exc_hook(err_type, value, t_b):

View File

@ -471,27 +471,36 @@ class ClipCitation(ClipHandleWrapper):
def refresh(self): def refresh(self):
if self._handle: if self._handle:
citation = clipdb.get_citation_from_handle(self._handle) try:
if citation: citation = clipdb.get_citation_from_handle(self._handle)
self._title = citation.get_gramps_id() if citation:
notelist = list(map(clipdb.get_note_from_handle, self._title = citation.get_gramps_id()
citation.get_note_list())) notelist = list(map(clipdb.get_note_from_handle,
srctxtlist = [note for note in notelist citation.get_note_list()))
if note.get_type() == NoteType.SOURCE_TEXT] srctxtlist = [note for note in notelist
page = citation.get_page() if note.get_type() == NoteType.SOURCE_TEXT]
if not page: page = citation.get_page()
page = _('not available|NA') if not page:
text = "" page = _('not available|NA')
if srctxtlist: text = ""
text = " ".join(srctxtlist[0].get().split()) if srctxtlist:
#String must be unicode for truncation to work for non text = " ".join(srctxtlist[0].get().split())
#ascii characters #String must be unicode for truncation to work for non
text = str(text) #ascii characters
if len(text) > 60: text = str(text)
text = text[:60] + "..." if len(text) > 60:
self._value = _("Volume/Page: %(pag)s -- %(sourcetext)s") % { text = text[:60] + "..."
'pag' : page, self._value = _("Volume/Page: %(pag)s -- %(sourcetext)s"
'sourcetext' : text} ) % { 'pag' : page,
'sourcetext' : text}
except:
# We are in the Source tree view. The shortcuts only
# work for citations.
print("We cannot copy the source from this view."
" Use drag and drop.")
self._title = self._value = ''
self._pickle = self._type = self._objclass = None
self._handle = self._dbid = self._dbname = None
class ClipRepoRef(ClipObjWrapper): class ClipRepoRef(ClipObjWrapper):
@ -1281,6 +1290,14 @@ class ClipboardListView:
model.insert_before(node, data) model.insert_before(node, data)
else: else:
model.insert_after(node, data) model.insert_after(node, data)
elif isinstance(data[1], ClipCitation):
if data[3]:
# we have a real citation
model.append(data)
#else:
# We are in a Source treeview and trying
# to copy a source with a shortcut.
# Use drag and drop to do that.
else: else:
model.append(data) model.append(data)

View File

@ -532,7 +532,7 @@ class GrampsImportFileDialog(ManagedWindow):
return True return True
else: else:
try: try:
f = file(filename,'w') f = open(filename, 'w')
f.close() f.close()
os.remove(filename) os.remove(filename)
except IOError: except IOError:
@ -548,7 +548,6 @@ class GrampsImportFileDialog(ManagedWindow):
self.import_info = None self.import_info = None
self._begin_progress() self._begin_progress()
self.uistate.set_sensitive(False) self.uistate.set_sensitive(False)
self.uistate.viewmanager.enable_menu(False)
try: try:
#an importer can return an object with info, object.info_text() #an importer can return an object with info, object.info_text()
@ -569,7 +568,6 @@ class GrampsImportFileDialog(ManagedWindow):
except Exception: except Exception:
_LOG.error("Failed to import database.", exc_info=True) _LOG.error("Failed to import database.", exc_info=True)
self.uistate.set_sensitive(True) self.uistate.set_sensitive(True)
self.uistate.viewmanager.enable_menu(True)
self._end_progress() self._end_progress()
def build_menu_names(self, obj): # this is meaningless since it's modal def build_menu_names(self, obj): # this is meaningless since it's modal

View File

@ -1013,7 +1013,7 @@ class DbManager(CLIDbManager, ManagedWindow):
""" """
Handle the reception of drag data Handle the reception of drag data
""" """
drag_value = selection.get_data().decode() drag_value = selection.get_data().decode().strip(' \r\n\x00')
fname = None fname = None
type = None type = None
title = None title = None

View File

@ -520,7 +520,10 @@ class DisplayState(Callback):
history.push(handle) history.push(handle)
def set_sensitive(self, state): def set_sensitive(self, state):
self.window.set_sensitive(state) tbar = self.uimanager.get_widget('ToolBar')
tbar.set_sensitive(state)
self.viewmanager.hpane.set_sensitive(state)
self.uimanager.enable_all_actions(state)
def db_changed(self, db): def db_changed(self, db):
db.connect('long-op-start', self.progress_monitor.add_op) db.connect('long-op-start', self.progress_monitor.add_op)

View File

@ -187,9 +187,14 @@ class EditPlace(EditPrimary):
def set_latlongitude(self, value): def set_latlongitude(self, value):
try: try:
coma = value.index(', ') # Bug 12349
longitude = value[coma+2:].strip().replace(',','.') parts = value.split(', ')
latitude = value[:coma].strip().replace(',','.') if len(parts) == 2:
longitude = parts[0].strip().replace(',', '.')
latitude = parts[1].strip().replace(',', '.')
else:
longitude, latitude = value.split(',')
self.longitude.set_text(longitude) self.longitude.set_text(longitude)
self.latitude.set_text(latitude) self.latitude.set_text(latitude)
self.top.get_object("lat_entry").validate(force=True) self.top.get_object("lat_entry").validate(force=True)

View File

@ -180,9 +180,14 @@ class EditPlaceRef(EditReference):
def set_latlongitude(self, value): def set_latlongitude(self, value):
try: try:
coma = value.index(', ') # Bug 12349
longitude = value[coma+2:].strip().replace(',','.') parts = value.split(', ')
latitude = value[:coma].strip().replace(',','.') if len(parts) == 2:
longitude = parts[0].strip().replace(',', '.')
latitude = parts[1].strip().replace(',', '.')
else:
longitude, latitude = value.split(',')
self.longitude.set_text(longitude) self.longitude.set_text(longitude)
self.latitude.set_text(latitude) self.latitude.set_text(latitude)
self.top.get_object("lat_entry").validate(force=True) self.top.get_object("lat_entry").validate(force=True)

View File

@ -1,11 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 --> <!-- Generated with glade 3.22.2 -->
<interface> <interface>
<requires lib="gtk+" version="3.10"/> <requires lib="gtk+" version="3.10"/>
<requires lib="grampswidgets" version="0.0"/>
<object class="GtkDialog" id="editplace"> <object class="GtkDialog" id="editplace">
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="type_hint">dialog</property> <property name="type_hint">dialog</property>
<child type="titlebar">
<placeholder/>
</child>
<child internal-child="vbox"> <child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox19"> <object class="GtkBox" id="dialog-vbox19">
<property name="visible">True</property> <property name="visible">True</property>
@ -101,7 +103,7 @@
<child> <child>
<object class="GtkLabel" id="comment1"> <object class="GtkLabel" id="comment1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="label" translatable="yes">Either use the two fields below to enter coordinates (latitude and longitude),</property> <property name="label" translatable="yes">Either use the two fields below to enter coordinates (latitude and longitude),</property>
<property name="hexpand">True</property> <property name="hexpand">True</property>

View File

@ -325,7 +325,6 @@ class BaseSelector(ManagedWindow):
self.sortorder = Gtk.SortType.ASCENDING self.sortorder = Gtk.SortType.ASCENDING
else: else:
self.sortorder = Gtk.SortType.DESCENDING self.sortorder = Gtk.SortType.DESCENDING
self.model.reverse_order()
self.build_tree() self.build_tree()
return True return True

View File

@ -496,6 +496,16 @@ class UIManager():
""" """
return group.act_group.lookup_action(actionname) return group.act_group.lookup_action(actionname)
def enable_all_actions(self, state):
for group in self.action_groups:
if group.act_group:
for item in group.actionlist:
action = group.act_group.lookup_action(item[ACTION_NAME])
if action:
# We check in case the group has not been inserted into
# UIManager yet
action.set_enabled(group.sensitive if state else False)
def dump_all_accels(self): def dump_all_accels(self):
''' A function used diagnostically to see what accels are present. ''' A function used diagnostically to see what accels are present.
This will only dump the current accel set, if other non-open windows This will only dump the current accel set, if other non-open windows

View File

@ -450,7 +450,7 @@ def open_file_with_default_application(path, uistate):
GLib.timeout_add_seconds(1, poll_external, (proc, errstrings, uistate)) GLib.timeout_add_seconds(1, poll_external, (proc, errstrings, uistate))
return return
def process_pending_events(max_count=10): def process_pending_events(max_count=20):
""" """
Process pending events, but don't get into an infinite loop. Process pending events, but don't get into an infinite loop.
""" """

View File

@ -56,6 +56,7 @@ LOG = logging.getLogger(".")
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
from gi.repository import Gtk from gi.repository import Gtk
from gi.repository import Gdk from gi.repository import Gdk
from gi.repository import GLib
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -273,13 +274,13 @@ class ViewManager(CLIManager):
Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.MOD1_MASK) Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.MOD1_MASK)
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
self.window.add(vbox) self.window.add(vbox)
hpane = Gtk.Paned() self.hpane = Gtk.Paned()
self.ebox = Gtk.EventBox() self.ebox = Gtk.EventBox()
self.navigator = Navigator(self) self.navigator = Navigator(self)
self.ebox.add(self.navigator.get_top()) self.ebox.add(self.navigator.get_top())
hpane.pack1(self.ebox, False, False) self.hpane.pack1(self.ebox, False, False)
hpane.show() self.hpane.show()
self.notebook = Gtk.Notebook() self.notebook = Gtk.Notebook()
self.notebook.set_scrollable(True) self.notebook.set_scrollable(True)
@ -288,14 +289,14 @@ class ViewManager(CLIManager):
self.__init_lists() self.__init_lists()
self.__build_ui_manager() self.__build_ui_manager()
hpane.add2(self.notebook) self.hpane.add2(self.notebook)
toolbar = self.uimanager.get_widget('ToolBar') toolbar = self.uimanager.get_widget('ToolBar')
self.statusbar = Statusbar() self.statusbar = Statusbar()
self.statusbar.show() self.statusbar.show()
vbox.pack_end(self.statusbar, False, True, 0) vbox.pack_end(self.statusbar, False, True, 0)
vbox.pack_start(toolbar, False, True, 0) vbox.pack_start(toolbar, False, True, 0)
vbox.pack_end(hpane, True, True, 0) vbox.pack_end(self.hpane, True, True, 0)
vbox.show() vbox.show_all()
self.uistate = DisplayState(self.window, self.statusbar, self.uistate = DisplayState(self.window, self.statusbar,
self.uimanager, self) self.uimanager, self)
@ -835,6 +836,7 @@ class ViewManager(CLIManager):
hbox.add(Gtk.Label(label=pdata.name)) hbox.add(Gtk.Label(label=pdata.name))
hbox.show_all() hbox.show_all()
page_num = self.notebook.append_page(page.get_display(), hbox) page_num = self.notebook.append_page(page.get_display(), hbox)
self.active_page.post_create()
if not self.file_loaded: if not self.file_loaded:
self.uimanager.set_actions_visible(self.actiongroup, False) self.uimanager.set_actions_visible(self.actiongroup, False)
self.uimanager.set_actions_visible(self.readonlygroup, False) self.uimanager.set_actions_visible(self.readonlygroup, False)
@ -883,12 +885,17 @@ class ViewManager(CLIManager):
while Gtk.events_pending(): while Gtk.events_pending():
Gtk.main_iteration() Gtk.main_iteration()
self.uimanager.update_menu() # bug 12048 this avoids crash if part of toolbar in view is not shown
# because of a small screen when changing views. Part of the Gtk code
# was deleting a toolbar object too soon; and another part of Gtk still
# had a reference.
def page_changer(self):
self.uimanager.update_menu()
self.active_page.change_page()
return False
while Gtk.events_pending(): GLib.idle_add(page_changer, self,
Gtk.main_iteration() priority=GLib.PRIORITY_DEFAULT_IDLE - 10)
self.active_page.change_page()
def __delete_pages(self): def __delete_pages(self):
""" """
@ -993,7 +1000,8 @@ class ViewManager(CLIManager):
The method called after load of a new database. The method called after load of a new database.
Inherit CLI method to add GUI part Inherit CLI method to add GUI part
""" """
self._post_load_newdb_nongui(filename, title) if self.dbstate.db.is_open():
self._post_load_newdb_nongui(filename, title)
self._post_load_newdb_gui(filename, filetype, title) self._post_load_newdb_gui(filename, filetype, title)
def _post_load_newdb_gui(self, filename, filetype, title=None): def _post_load_newdb_gui(self, filename, filetype, title=None):
@ -1061,51 +1069,6 @@ class ViewManager(CLIManager):
config.set('paths.recent-file', '') config.set('paths.recent-file', '')
config.save() config.save()
def enable_menu(self, enable):
""" Enable/disable the menues. Used by the dbloader for import to
prevent other operations during import. Needed because simpler methods
don't work under Gnome with application menus at top of screen (instead
of Gramps window).
Note: enable must be set to False on first call.
"""
if not enable:
self.action_st = (
self.uimanager.get_actions_sensitive(self.actiongroup),
self.uimanager.get_actions_sensitive(self.readonlygroup),
self.uimanager.get_actions_sensitive(self.undoactions),
self.uimanager.get_actions_sensitive(self.redoactions),
self.uimanager.get_actions_sensitive(self.fileactions),
self.uimanager.get_actions_sensitive(self.toolactions),
self.uimanager.get_actions_sensitive(self.reportactions),
self.uimanager.get_actions_sensitive(
self.recent_manager.action_group))
self.uimanager.set_actions_sensitive(self.actiongroup, enable)
self.uimanager.set_actions_sensitive(self.readonlygroup, enable)
self.uimanager.set_actions_sensitive(self.undoactions, enable)
self.uimanager.set_actions_sensitive(self.redoactions, enable)
self.uimanager.set_actions_sensitive(self.fileactions, enable)
self.uimanager.set_actions_sensitive(self.toolactions, enable)
self.uimanager.set_actions_sensitive(self.reportactions, enable)
self.uimanager.set_actions_sensitive(
self.recent_manager.action_group, enable)
else:
self.uimanager.set_actions_sensitive(
self.actiongroup, self.action_st[0])
self.uimanager.set_actions_sensitive(
self.readonlygroup, self.action_st[1])
self.uimanager.set_actions_sensitive(
self.undoactions, self.action_st[2])
self.uimanager.set_actions_sensitive(
self.redoactions, self.action_st[3])
self.uimanager.set_actions_sensitive(
self.fileactions, self.action_st[4])
self.uimanager.set_actions_sensitive(
self.toolactions, self.action_st[5])
self.uimanager.set_actions_sensitive(
self.reportactions, self.action_st[6])
self.uimanager.set_actions_sensitive(
self.recent_manager.action_group, self.action_st[7])
def __change_undo_label(self, label, update_menu=True): def __change_undo_label(self, label, update_menu=True):
""" """
Change the UNDO label Change the UNDO label

View File

@ -138,6 +138,7 @@ class PageView(DbGUIElement, metaclass=ABCMeta):
self.sidebar = None self.sidebar = None
self.bottombar = None self.bottombar = None
self.widget = None self.widget = None
self.vpane = None
DbGUIElement.__init__(self, dbstate.db) DbGUIElement.__init__(self, dbstate.db)
@ -154,18 +155,20 @@ class PageView(DbGUIElement, metaclass=ABCMeta):
self.ident + "_bottombar", self.ident + "_bottombar",
defaults[1]) defaults[1])
hpane = Gtk.Paned() hpane = Gtk.Paned()
vpane = Gtk.Paned(orientation=Gtk.Orientation.VERTICAL) self.vpane = Gtk.Paned(orientation=Gtk.Orientation.VERTICAL)
hpane.pack1(vpane, resize=True, shrink=False) hpane.pack1(self.vpane, resize=True, shrink=False)
hpane.pack2(self.sidebar, resize=False, shrink=False) hpane.pack2(self.sidebar, resize=False, shrink=False)
hpane.show() hpane.show()
vpane.show() self.vpane.show()
self.widget = self.build_widget() self.widget = self.build_widget()
self.widget.show_all() self.widget.show_all()
self.widget.set_name('view') self.widget.set_name('view')
vpane.pack1(self.widget, resize=True, shrink=False) self.vpane.pack1(self.widget, resize=True, shrink=False)
vpane.pack2(self.bottombar, resize=False, shrink=True) self.vpane.pack2(self.bottombar, resize=False, shrink=True)
self._setup_slider_config(vpane, 'vpane.slider-position') self.vpane.show()
self._config.register('vpane.slider-position', -1)
self.vpane.set_position(self._config.get('vpane.slider-position'))
self.sidebar_toggled(self.sidebar.get_property('visible')) self.sidebar_toggled(self.sidebar.get_property('visible'))
self.hpane_sig = hpane.connect("draw", self.set_page_slider) self.hpane_sig = hpane.connect("draw", self.set_page_slider)
@ -343,6 +346,11 @@ class PageView(DbGUIElement, metaclass=ABCMeta):
self.bottombar.set_inactive() self.bottombar.set_inactive()
self.active = False self.active = False
def post_create(self):
if self.vpane:
self._setup_slider_config(self.vpane, 'vpane.slider-position')
self.vpane = None
@abstractmethod @abstractmethod
def build_tree(self): def build_tree(self):
""" """

View File

@ -29,7 +29,6 @@ BSDDBTxn class: Wrapper for BSDDB transaction-oriented methods
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import logging import logging
import inspect import inspect
import os
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -73,14 +72,13 @@ class BSDDBTxn:
""" """
# Conditional on __debug__ because all that frame stuff may be slow # Conditional on __debug__ because all that frame stuff may be slow
if __debug__: if __debug__:
caller_frame = inspect.stack()[1] frame = inspect.currentframe()
c_frame = frame.f_back
c_code = c_frame.f_code
_LOG.debug(" BSDDBTxn %s instantiated. Called from file %s," _LOG.debug(" BSDDBTxn %s instantiated. Called from file %s,"
" line %s, in %s" % " line %s, in %s", hex(id(self)), c_code.co_filename,
((hex(id(self)),)+ c_frame.f_lineno, c_code.co_name)
(os.path.split(caller_frame[1])[1],)+
(tuple(caller_frame[i] for i in range(2, 4)))
)
)
self.env = env self.env = env
self.db = db self.db = db
self.txn = None self.txn = None

View File

@ -224,6 +224,16 @@ class DBAPI(DbGeneric):
if self.transaction == None: if self.transaction == None:
self.dbapi.rollback() self.dbapi.rollback()
def _collation(self, locale):
"""
Get the adjusted collation if there is one, falling back on
the locale.collation.
"""
collation = self.dbapi.check_collation(locale)
if collation == None:
return locale.get_collation()
return collation
def transaction_begin(self, transaction): def transaction_begin(self, transaction):
""" """
Transactions are handled automatically by the db layer. Transactions are handled automatically by the db layer.
@ -364,12 +374,9 @@ class DBAPI(DbGeneric):
:type locale: A GrampsLocale object. :type locale: A GrampsLocale object.
""" """
if sort_handles: if sort_handles:
if locale != glocale:
self.dbapi.check_collation(locale)
self.dbapi.execute('SELECT handle FROM person ' self.dbapi.execute('SELECT handle FROM person '
'ORDER BY surname ' 'ORDER BY surname '
'COLLATE "%s"' % locale.get_collation()) 'COLLATE "%s"' % self._collation(locale))
else: else:
self.dbapi.execute("SELECT handle FROM person") self.dbapi.execute("SELECT handle FROM person")
rows = self.dbapi.fetchall() rows = self.dbapi.fetchall()
@ -386,9 +393,6 @@ class DBAPI(DbGeneric):
:type locale: A GrampsLocale object. :type locale: A GrampsLocale object.
""" """
if sort_handles: if sort_handles:
if locale != glocale:
self.dbapi.check_collation(locale)
sql = ('SELECT family.handle ' + sql = ('SELECT family.handle ' +
'FROM family ' + 'FROM family ' +
'LEFT JOIN person AS father ' + 'LEFT JOIN person AS father ' +
@ -403,7 +407,7 @@ class DBAPI(DbGeneric):
'THEN mother.given_name ' + 'THEN mother.given_name ' +
'ELSE father.given_name ' + 'ELSE father.given_name ' +
'END) ' + 'END) ' +
'COLLATE "%s"' % locale.get_collation()) 'COLLATE "%s"' % self._collation(locale))
self.dbapi.execute(sql) self.dbapi.execute(sql)
else: else:
self.dbapi.execute("SELECT handle FROM family") self.dbapi.execute("SELECT handle FROM family")
@ -430,12 +434,9 @@ class DBAPI(DbGeneric):
:type locale: A GrampsLocale object. :type locale: A GrampsLocale object.
""" """
if sort_handles: if sort_handles:
if locale != glocale:
self.dbapi.check_collation(locale)
self.dbapi.execute('SELECT handle FROM citation ' self.dbapi.execute('SELECT handle FROM citation '
'ORDER BY page ' 'ORDER BY page '
'COLLATE "%s"' % locale.get_collation()) 'COLLATE "%s"' % self._collation(locale))
else: else:
self.dbapi.execute("SELECT handle FROM citation") self.dbapi.execute("SELECT handle FROM citation")
rows = self.dbapi.fetchall() rows = self.dbapi.fetchall()
@ -452,12 +453,9 @@ class DBAPI(DbGeneric):
:type locale: A GrampsLocale object. :type locale: A GrampsLocale object.
""" """
if sort_handles: if sort_handles:
if locale != glocale:
self.dbapi.check_collation(locale)
self.dbapi.execute('SELECT handle FROM source ' self.dbapi.execute('SELECT handle FROM source '
'ORDER BY title ' 'ORDER BY title '
'COLLATE "%s"' % locale.get_collation()) 'COLLATE "%s"' % self._collation(locale))
else: else:
self.dbapi.execute("SELECT handle from source") self.dbapi.execute("SELECT handle from source")
rows = self.dbapi.fetchall() rows = self.dbapi.fetchall()
@ -474,12 +472,9 @@ class DBAPI(DbGeneric):
:type locale: A GrampsLocale object. :type locale: A GrampsLocale object.
""" """
if sort_handles: if sort_handles:
if locale != glocale:
self.dbapi.check_collation(locale)
self.dbapi.execute('SELECT handle FROM place ' self.dbapi.execute('SELECT handle FROM place '
'ORDER BY title ' 'ORDER BY title '
'COLLATE "%s"' % locale.get_collation()) 'COLLATE "%s"' % self._collation(locale))
else: else:
self.dbapi.execute("SELECT handle FROM place") self.dbapi.execute("SELECT handle FROM place")
rows = self.dbapi.fetchall() rows = self.dbapi.fetchall()
@ -505,12 +500,9 @@ class DBAPI(DbGeneric):
:type locale: A GrampsLocale object. :type locale: A GrampsLocale object.
""" """
if sort_handles: if sort_handles:
if locale != glocale:
self.dbapi.check_collation(locale)
self.dbapi.execute('SELECT handle FROM media ' self.dbapi.execute('SELECT handle FROM media '
'ORDER BY desc ' 'ORDER BY desc '
'COLLATE "%s"' % locale.get_collation()) 'COLLATE "%s"' % self._collation(locale))
else: else:
self.dbapi.execute("SELECT handle FROM media") self.dbapi.execute("SELECT handle FROM media")
rows = self.dbapi.fetchall() rows = self.dbapi.fetchall()
@ -536,12 +528,9 @@ class DBAPI(DbGeneric):
:type locale: A GrampsLocale object. :type locale: A GrampsLocale object.
""" """
if sort_handles: if sort_handles:
if locale != glocale:
self.dbapi.check_collation(locale)
self.dbapi.execute('SELECT handle FROM tag ' self.dbapi.execute('SELECT handle FROM tag '
'ORDER BY name ' 'ORDER BY name '
'COLLATE "%s"' % locale.get_collation()) 'COLLATE "%s"' % self._collation(locale))
else: else:
self.dbapi.execute("SELECT handle FROM tag") self.dbapi.execute("SELECT handle FROM tag")
rows = self.dbapi.fetchall() rows = self.dbapi.fetchall()

View File

@ -117,6 +117,8 @@ class Connection:
collation = locale.get_collation().translate(self.__tmap) collation = locale.get_collation().translate(self.__tmap)
if collation not in self.__collations: if collation not in self.__collations:
self.__connection.create_collation(collation, locale.strcoll) self.__connection.create_collation(collation, locale.strcoll)
self.__collations.append(collation)
return collation
def execute(self, *args, **kwargs): def execute(self, *args, **kwargs):
""" """

View File

@ -31,7 +31,7 @@ SVG document generator.
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
from io import StringIO from io import StringIO
from xml.sax.saxutils import escape
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# Gramps modules # Gramps modules
@ -147,7 +147,7 @@ class SvgDrawDoc(BaseDoc, DrawDoc):
linex = xpos + (width - self.string_width(font, line)) / 2 linex = xpos + (width - self.string_width(font, line)) / 2
self.buffer.write( self.buffer.write(
'<tspan x="%4.2f" dy="%d">' % (linex, size) + '<tspan x="%4.2f" dy="%d">' % (linex, size) +
line + escape(line) +
'</tspan>' '</tspan>'
) )
self.buffer.write('</text>\n') self.buffer.write('</text>\n')
@ -273,7 +273,7 @@ class SvgDrawDoc(BaseDoc, DrawDoc):
self.buffer.write(' font-family:serif;') self.buffer.write(' font-family:serif;')
self.buffer.write( self.buffer.write(
'">' + '">' +
line + escape(line) +
'</text>\n' '</text>\n'
) )
@ -307,7 +307,7 @@ class SvgDrawDoc(BaseDoc, DrawDoc):
self.buffer.write('font-family:serif;') self.buffer.write('font-family:serif;')
self.buffer.write( self.buffer.write(
'">' + '">' +
text + escape(text) +
'</text>\n' '</text>\n'
) )

View File

@ -202,7 +202,7 @@ class CalendarWriter:
date = event.get_date_object() date = event.get_date_object()
place_handle = event.get_place_handle() place_handle = event.get_place_handle()
date_string = self.format_date(date, 1) date_string = self.format_date(date, 1)
if date_string is not "": if date_string != "":
# self.writeln("") # self.writeln("")
self.writeln("BEGIN:VEVENT") self.writeln("BEGIN:VEVENT")
time_s = time.gmtime(event.change) time_s = time.gmtime(event.change)

View File

@ -92,13 +92,17 @@ class Backlinks(Gramplet):
edit_object(self.dbstate, self.uistate, objclass, handle) edit_object(self.dbstate, self.uistate, objclass, handle)
def db_changed(self):
for item in ['person', 'family', 'source', 'citation', 'event',
'media', 'place', 'repository', 'note']:
self.connect(self.dbstate.db, '%s-delete' % item, self.update)
self.connect(self.dbstate.db, '%s-add' % item, self.update)
self.connect(self.dbstate.db, '%s-update' % item, self.update)
class PersonBacklinks(Backlinks): class PersonBacklinks(Backlinks):
""" """
Displays the back references for a person. Displays the back references for a person.
""" """
def db_changed(self):
self.connect(self.dbstate.db, 'person-update', self.update)
def active_changed(self, handle): def active_changed(self, handle):
self.update() self.update()
@ -119,7 +123,7 @@ class EventBacklinks(Backlinks):
Displays the back references for an event. Displays the back references for an event.
""" """
def db_changed(self): def db_changed(self):
self.connect(self.dbstate.db, 'event-update', self.update) super().db_changed()
self.connect_signal('Event', self.update) self.connect_signal('Event', self.update)
def update_has_data(self): def update_has_data(self):
@ -139,7 +143,7 @@ class FamilyBacklinks(Backlinks):
Displays the back references for a family. Displays the back references for a family.
""" """
def db_changed(self): def db_changed(self):
self.connect(self.dbstate.db, 'family-update', self.update) super().db_changed()
self.connect_signal('Family', self.update) self.connect_signal('Family', self.update)
def update_has_data(self): def update_has_data(self):
@ -159,7 +163,7 @@ class PlaceBacklinks(Backlinks):
Displays the back references for a place. Displays the back references for a place.
""" """
def db_changed(self): def db_changed(self):
self.connect(self.dbstate.db, 'place-update', self.update) super().db_changed()
self.connect_signal('Place', self.update) self.connect_signal('Place', self.update)
def update_has_data(self): def update_has_data(self):
@ -179,7 +183,7 @@ class SourceBacklinks(Backlinks):
Displays the back references for a source,. Displays the back references for a source,.
""" """
def db_changed(self): def db_changed(self):
self.connect(self.dbstate.db, 'source-update', self.update) super().db_changed()
self.connect_signal('Source', self.update) self.connect_signal('Source', self.update)
def update_has_data(self): def update_has_data(self):
@ -199,7 +203,7 @@ class CitationBacklinks(Backlinks):
Displays the back references for a Citation,. Displays the back references for a Citation,.
""" """
def db_changed(self): def db_changed(self):
self.connect(self.dbstate.db, 'citation-update', self.update) super().db_changed()
self.connect_signal('Citation', self.update) self.connect_signal('Citation', self.update)
def update_has_data(self): def update_has_data(self):
@ -219,7 +223,7 @@ class RepositoryBacklinks(Backlinks):
Displays the back references for a repository. Displays the back references for a repository.
""" """
def db_changed(self): def db_changed(self):
self.connect(self.dbstate.db, 'repository-update', self.update) super().db_changed()
self.connect_signal('Repository', self.update) self.connect_signal('Repository', self.update)
def update_has_data(self): def update_has_data(self):
@ -239,7 +243,7 @@ class MediaBacklinks(Backlinks):
Displays the back references for a media object. Displays the back references for a media object.
""" """
def db_changed(self): def db_changed(self):
self.connect(self.dbstate.db, 'media-update', self.update) super().db_changed()
self.connect_signal('Media', self.update) self.connect_signal('Media', self.update)
def update_has_data(self): def update_has_data(self):
@ -259,7 +263,7 @@ class NoteBacklinks(Backlinks):
Displays the back references for a note. Displays the back references for a note.
""" """
def db_changed(self): def db_changed(self):
self.connect(self.dbstate.db, 'note-update', self.update) super().db_changed()
self.connect_signal('Note', self.update) self.connect_signal('Note', self.update)
def update_has_data(self): def update_has_data(self):

View File

@ -300,6 +300,8 @@ class DateRange:
""" """
start = None start = None
stop = None stop = None
if date.is_empty():
return (None, None)
if date.modifier == Date.MOD_NONE: if date.modifier == Date.MOD_NONE:
start = date.sortval start = date.sortval
stop = date.sortval stop = date.sortval

View File

@ -206,8 +206,10 @@ class PlaceBaseView(ListView):
""" """
if action: if action:
action.set_state(value) action.set_state(value)
self.mapservice = mapkey = value.get_string() self.mapservice = value.get_string()
config.set('interface.mapservice', mapkey) else:
self.mapservice = value
config.set('interface.mapservice', self.mapservice)
config.save() config.save()
_ui = self.__create_maps_menu_actions() _ui = self.__create_maps_menu_actions()
self.uimanager.add_ui_from_string(_ui) self.uimanager.add_ui_from_string(_ui)

View File

@ -5,6 +5,7 @@
# Copyright (C) 2003-2005 Donald N. Allingham # Copyright (C) 2003-2005 Donald N. Allingham
# Copyright (C) 2008 Stefan Siegel # Copyright (C) 2008 Stefan Siegel
# Copyright (C) 2008 Brian G. Matherly # Copyright (C) 2008 Brian G. Matherly
# Copyright (C) 2021 Mirko Leonhaeuser
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by
@ -156,7 +157,7 @@ class RelationshipCalculator(gramps.gen.relationship.RelationshipCalculator):
if removed < len(_removed): if removed < len(_removed):
return _removed[removed] return _removed[removed]
else: else:
return '(%s)' % self._make_roman(removed-2) return '(%s) Urgroß' % self._make_roman(removed-1)
def _degree_text(self, degree, removed): def _degree_text(self, degree, removed):
if removed == 0: if removed == 0:

View File

@ -5,6 +5,7 @@
# Copyright (C) 2003-2005 Donald N. Allingham # Copyright (C) 2003-2005 Donald N. Allingham
# Copyright (C) 2008 Brian G. Matherly # Copyright (C) 2008 Brian G. Matherly
# Copyright (C) 2018 Robin van der Vliet # Copyright (C) 2018 Robin van der Vliet
# Copyright (C) 2020 Jan Sparreboom
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by
@ -35,7 +36,7 @@ import gramps.gen.relationship
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# # Levels
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
@ -69,9 +70,207 @@ _child_level = [ "", "",
_nibling_level = [ "", "", _nibling_level = [ "", "",
"achter", "achterachter", "achterachterachter" ] "achter", "achterachter", "achterachterachter" ]
_parents_level = ["",
"ouders",
"grootouders",
"overgrootouders",
"betovergrootouders",
"overgrootouders 5e graad",
"overgrootouders 6e graad",
"overgrootouders 7e graad",
"overgrootouders 8e graad",
"overgrootouders 9e graad",
"overgrootouders 10e graad",
"overgrootouders 11e graad",
"overgrootouders 12e graad",
"overgrootouders 13e graad",
"overgrootouders 14e graad",
"overgrootouders 15e graad",
"overgrootouders 16e graad",
"overgrootouders 17e graad",
"overgrootouders 18e graad",
"overgrootouders 19e graad",
"overgrootouders 20e graad",
"overgrootouders 21e graad",
"overgrootouders 22e graad",
"overgrootouders 23e graad",
"overgrootouders 24e graad",
"overgrootouders 25e graad",
"overgrootouders 26e graad",
"overgrootouders 27e graad",
"overgrootouders 28e graad",
"overgrootouders 29e graad",
"overgrootouders 30e graad",
"overgrootouders 31e graad",
"overgrootouders 32e graad",
"overgrootouders 33e graad",
"overgrootouders 34e graad",
"overgrootouders 35e graad",
"overgrootouders 36e graad",
"overgrootouders 37e graad",
"overgrootouders 38e graad",
"overgrootouders 39e graad",
"overgrootouders 40e graad",
"overgrootouders 41e graad",
"overgrootouders 42e graad",
"overgrootouders 43e graad",
"overgrootouders 44e graad",
"overgrootouders 45e graad",
"overgrootouders 46e graad",
"overgrootouders 47e graad",
"overgrootouders 48e graad",
"overgrootouders 49e graad",
"overgrootouders 50e graad", ]
_siblings_level = ["",
"broers en zussen",
"ooms en tantes",
"oudooms en -tantes",
"overoudooms en -tantes",
"overoudooms en -tantes 5e graad",
"overoudooms en -tantes 6e graad",
"overoudooms en -tantes 7e graad",
"overoudooms en -tantes 8e graad",
"overoudooms en -tantes 9e graad",
"overoudooms en -tantes 10e graad",
"overoudooms en -tantes 11e graad",
"overoudooms en -tantes 12e graad",
"overoudooms en -tantes 13e graad",
"overoudooms en -tantes 14e graad",
"overoudooms en -tantes 15e graad",
"overoudooms en -tantes 16e graad",
"overoudooms en -tantes 17e graad",
"overoudooms en -tantes 18e graad",
"overoudooms en -tantes 19e graad",
"overoudooms en -tantes 20e graad",
"overoudooms en -tantes 21e graad",
"overoudooms en -tantes 22e graad",
"overoudooms en -tantes 23e graad",
"overoudooms en -tantes 24e graad",
"overoudooms en -tantes 25e graad",
"overoudooms en -tantes 26e graad",
"overoudooms en -tantes 27e graad",
"overoudooms en -tantes 28e graad",
"overoudooms en -tantes 29e graad",
"overoudooms en -tantes 30e graad",
"overoudooms en -tantes 41e graad",
"overoudooms en -tantes 42e graad",
"overoudooms en -tantes 43e graad",
"overoudooms en -tantes 44e graad",
"overoudooms en -tantes 45e graad",
"overoudooms en -tantes 46e graad",
"overoudooms en -tantes 47e graad",
"overoudooms en -tantes 48e graad",
"overoudooms en -tantes 49e graad",
"overoudooms en -tantes 50e graad", ]
_children_level = ["",
"kinderen",
"kleinkinderen",
"achterkleinkinderen",
"betachterkleinkinderen",
"kleinkinderen 5e graad",
"kleinkinderen 6e graad",
"kleinkinderen 7e graad",
"kleinkinderen 8e graad",
"kleinkinderen 9e graad",
"kleinkinderen 10e graad",
"kleinkinderen 11e graad",
"kleinkinderen 12e graad",
"kleinkinderen 13e graad",
"kleinkinderen 14e graad",
"kleinkinderen 15e graad",
"kleinkinderen 16e graad",
"kleinkinderen 17e graad",
"kleinkinderen 18e graad",
"kleinkinderen 19e graad",
"kleinkinderen 20e graad",
"kleinkinderen 21e graad",
"kleinkinderen 22e graad",
"kleinkinderen 23e graad",
"kleinkinderen 24e graad",
"kleinkinderen 25e graad",
"kleinkinderen 26e graad",
"kleinkinderen 27e graad",
"kleinkinderen 28e graad",
"kleinkinderen 29e graad",
"kleinkinderen 30e graad",
"kleinkinderen 31e graad",
"kleinkinderen 32e graad",
"kleinkinderen 33e graad",
"kleinkinderen 34e graad",
"kleinkinderen 35e graad",
"kleinkinderen 36e graad",
"kleinkinderen 37e graad",
"kleinkinderen 38e graad",
"kleinkinderen 39e graad",
"kleinkinderen 40e graad",
"kleinkinderen 41e graad",
"kleinkinderen 42e graad",
"kleinkinderen 43e graad",
"kleinkinderen 44e graad",
"kleinkinderen 45e graad",
"kleinkinderen 46e graad",
"kleinkinderen 47e graad",
"kleinkinderen 48e graad",
"kleinkinderen 49e graad",
"kleinkinderen 50e graad", ]
_nephews_nieces_level = ["",
"broers en zussen",
"neven en nichten",
"achterneven en -nichten",
"achterneven en -nichten 4e graad",
"achterneven en -nichten 5e graad",
"achterneven en -nichten 6e graad",
"achterneven en -nichten 7e graad",
"achterneven en -nichten 8e graad",
"achterneven en -nichten 9e graad",
"achterneven en -nichten 10e graad",
"achterneven en -nichten 11e graad",
"achterneven en -nichten 12e graad",
"achterneven en -nichten 13e graad",
"achterneven en -nichten 14e graad",
"achterneven en -nichten 15e graad",
"achterneven en -nichten 16e graad",
"achterneven en -nichten 17e graad",
"achterneven en -nichten 18e graad",
"achterneven en -nichten 19e graad",
"achterneven en -nichten 20e graad",
"achterneven en -nichten 21e graad",
"achterneven en -nichten 22e graad",
"achterneven en -nichten 23e graad",
"achterneven en -nichten 24e graad",
"achterneven en -nichten 25e graad",
"achterneven en -nichten 26e graad",
"achterneven en -nichten 27e graad",
"achterneven en -nichten 28e graad",
"achterneven en -nichten 29e graad",
"achterneven en -nichten 30e graad",
"achterneven en -nichten 31e graad",
"achterneven en -nichten 32e graad",
"achterneven en -nichten 33e graad",
"achterneven en -nichten 34e graad",
"achterneven en -nichten 35e graad",
"achterneven en -nichten 36e graad",
"achterneven en -nichten 37e graad",
"achterneven en -nichten 38e graad",
"achterneven en -nichten 39e graad",
"achterneven en -nichten 40e graad",
"achterneven en -nichten 41e graad",
"achterneven en -nichten 42e graad",
"achterneven en -nichten 43e graad",
"achterneven en -nichten 44e graad",
"achterneven en -nichten 45e graad",
"achterneven en -nichten 46e graad",
"achterneven en -nichten 47e graad",
"achterneven en -nichten 48e graad",
"achterneven en -nichten 49e graad",
"achterneven en -nichten 50e graad", ]
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# # Relationship calculator Dutch version
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
@ -273,6 +472,104 @@ class RelationshipCalculator(gramps.gen.relationship.RelationshipCalculator):
else: else:
return "%s%snicht (kozijn)" % (inlaw, step) \ return "%s%snicht (kozijn)" % (inlaw, step) \
+ " " + _ordinal_level[removed] + " graad" + " " + _ordinal_level[removed] + " graad"
# NIEUW
def get_plural_relationship_string(self, Ga, Gb,
reltocommon_a='', reltocommon_b='',
only_birth=True,
in_law_a=False, in_law_b=False):
"""
Provide a string that describes the relationsip between a person, and
a group of people with the same relationship. E.g. "grandparents" or
"children".
Ga and Gb can be used to mathematically calculate the relationship.
.. seealso::
http://en.wikipedia.org/wiki/Cousin#Mathematical_definitions
:param Ga: The number of generations between the main person and the
common ancestor.
:type Ga: int
:param Gb: The number of generations between the group of people and the
common ancestor
:type Gb: int
:param reltocommon_a: relation path to common ancestor or common
Family for person a.
Note that length = Ga
:type reltocommon_a: str
:param reltocommon_b: relation path to common ancestor or common
Family for person b.
Note that length = Gb
:type reltocommon_b: str
:param only_birth: True if relation between a and b is by birth only
False otherwise
:type only_birth: bool
:param in_law_a: True if path to common ancestors is via the partner
of person a
:type in_law_a: bool
:param in_law_b: True if path to common ancestors is via the partner
of person b
:type in_law_b: bool
:returns: A string describing the relationship between the person and
the group.
:rtype: str
"""
rel_str = "verre familie"
if Ga == 0:
# These are descendants
if Gb < len(_children_level):
rel_str = _children_level[Gb]
else:
rel_str = "verre afstammelingen"
elif Gb == 0:
# These are parents/grand parents
if Ga < len(_parents_level):
rel_str = _parents_level[Ga]
else:
rel_str = "verre voorouders"
elif Gb == 1:
# These are siblings/aunts/uncles
if Ga < len(_siblings_level):
rel_str = _siblings_level[Ga]
else:
rel_str = "verre ooms/tantes"
elif Ga == 1:
# These are nieces/nephews
if Gb < len(_nephews_nieces_level):
rel_str = _nephews_nieces_level[Gb]
else:
rel_str = "verre neven/nichten"
elif Ga > 1 and Ga == Gb:
# These are cousins in the same generation
if Ga <= len(_ordinal_level):
rel_str = "%s neven" % _ordinal_level[Ga-1]
else:
rel_str = "verre neven"
elif Ga > 1 and Ga > Gb:
# These are cousins in different generations with the second person
# being in a higher generation from the common ancestor than the
# first person.
if Gb <= len(_LEVEL_NAME) and (Ga-Gb) < len(_removed_level):
rel_str = "%s neven%s (omhoog)" % (_ordinal_level[Gb-1],
_removed_level[Ga-Gb])
else:
rel_str = "verre neven"
elif Gb > 1 and Gb > Ga:
# These are cousins in different generations with the second person
# being in a lower generation from the common ancestor than the
# first person.
if Ga <= len(_LEVEL_NAME) and (Gb-Ga) < len(_removed_level):
rel_str = "%s neven%s (omlaag)" % (_ordinal_level[Ga-1],
_removed_level[Gb-Ga])
else:
rel_str = "verre neven"
if in_law_b is True:
rel_str = "echtgenoten van %s" % rel_str
return rel_str
def get_single_relationship_string(self, Ga, Gb, gender_a, gender_b, def get_single_relationship_string(self, Ga, Gb, gender_a, gender_b,
reltocommon_a, reltocommon_b, reltocommon_a, reltocommon_b,
@ -424,3 +721,6 @@ if __name__ == "__main__":
from gramps.gen.relationship import test from gramps.gen.relationship import test
RC = RelationshipCalculator() RC = RelationshipCalculator()
test(RC, True) test(RC, True)

View File

@ -271,6 +271,7 @@ class BirthdayReport(Report):
for person_handle in people: for person_handle in people:
step() step()
person = self.database.get_person_from_handle(person_handle) person = self.database.get_person_from_handle(person_handle)
short_name = self.get_name(person)
birth_ref = person.get_birth_ref() birth_ref = person.get_birth_ref()
birth_date = None birth_date = None
if birth_ref: if birth_ref:

View File

@ -441,7 +441,8 @@ class TagReport(Report):
for place_handle in place_list: for place_handle in place_list:
place = self.database.get_place_from_handle(place_handle) place = self.database.get_place_from_handle(place_handle)
place_title = _pd.display(self.database, place, self.place_format) place_title = _pd.display(self.database, place, None,
self.place_format)
self.doc.start_row() self.doc.start_row()

View File

@ -370,8 +370,9 @@ class GeoFamily(GeoGraphyView):
_("Family places for %s") % self.family_label(family)) _("Family places for %s") % self.family_label(family))
person = None person = None
if family: if family:
person = dbstate.db.get_person_from_handle( handle = family.get_father_handle()
family.get_father_handle()) if handle:
person = dbstate.db.get_person_from_handle(handle)
else: else:
return return
family_id = family.gramps_id family_id = family.gramps_id

View File

@ -18,7 +18,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# #
VERSION_TUPLE = (5, 1, 4) VERSION_TUPLE = (5, 1, 5)
VERSION_QUALIFIER = "" VERSION_QUALIFIER = ""
VERSION = '.'.join(map(str,VERSION_TUPLE)) + VERSION_QUALIFIER VERSION = '.'.join(map(str,VERSION_TUPLE)) + VERSION_QUALIFIER
major_version = "%s.%s" % (VERSION_TUPLE[0], VERSION_TUPLE[1]) major_version = "%s.%s" % (VERSION_TUPLE[0], VERSION_TUPLE[1])

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 709 B

After

Width:  |  Height:  |  Size: 709 B

View File

Before

Width:  |  Height:  |  Size: 1003 B

After

Width:  |  Height:  |  Size: 1003 B

View File

Before

Width:  |  Height:  |  Size: 1003 B

After

Width:  |  Height:  |  Size: 1003 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 61 KiB

View File

@ -7,7 +7,7 @@
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>Gramps</string> <string>Gramps</string>
<key>CFBundleGetInfoString</key> <key>CFBundleGetInfoString</key>
<string>Gramps-5.1.3-1, (C) 1997-2020 The Gramps Team http://www.gramps-project.org</string> <string>Gramps-5.1.4-2, (C) 1997-2021 The Gramps Team http://www.gramps-project.org</string>
<key>CFBundleIconFile</key> <key>CFBundleIconFile</key>
<string>gramps.icns</string> <string>gramps.icns</string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
@ -17,13 +17,13 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>Gramps-5.1.3-1</string> <string>Gramps-5.1.4-2</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>Gramps-5.1.3-1</string> <string>Gramps-5.1.4-2</string>
<key>NSHumanReadableCopyright</key> <key>NSHumanReadableCopyright</key>
<string>Copyright 1997 - 2020 The Gramps Team, GNU General Public License.</string> <string>Copyright 1997 - 2021 The Gramps Team, GNU General Public License.</string>
<key>LSMinimumSystemVersion</key> <key>LSMinimumSystemVersion</key>
<string>10.9</string> <string>10.9</string>
<key>GtkOSXLaunchScriptFile</key> <key>GtkOSXLaunchScriptFile</key>

View File

@ -13,7 +13,7 @@
<plist>${project}/Info.plist</plist> <plist>${project}/Info.plist</plist>
<!-- Build gramps-launcher with: <!-- Build gramps-launcher with:
gcc -L$PREFIX/lib `python-config -\-cflags -\-ldflags` \ gcc -L$PREFIX/lib `python-config -\-cflags -\-ldflags -\-embed` \
-o $PREFIX/bin/gramps-launcher \ -o $PREFIX/bin/gramps-launcher \
path/to/gtk-mac-bundler/examples/python-launcher.c path/to/gtk-mac-bundler/examples/python-launcher.c
with the obvious substitution. with the obvious substitution.
@ -41,19 +41,15 @@
</binary> </binary>
<binary recurse="True"> <binary recurse="True">
${prefix}/lib/python3.6/*.so ${prefix}/lib/python3.9/*.so
</binary> </binary>
<binary> <binary>
${prefix}/lib/librsvg-2.2.dylib ${prefix}/lib/librsvg-2.2.dylib
</binary> </binary>
<!--binary>
${prefix}/lib/libwebkit-1.0.2.dylib
</binary-->
<binary> <binary>
${prefix}/lib/libgtkmacintegration-gtk3.2.dylib ${prefix}/lib/libgtkmacintegration-gtk3.4.dylib
</binary> </binary>
<binary> <binary>
@ -65,7 +61,7 @@
</binary> </binary>
<binary> <binary>
${prefix}/lib/enchant ${prefix}/lib/enchant-2
</binary> </binary>
<binary> <binary>
@ -77,7 +73,7 @@
</binary> </binary>
<binary> <binary>
${prefix}/lib/libhunspell-1.6.0.dylib ${prefix}/lib/libhunspell-1.7.0.dylib
</binary> </binary>
<binary> <binary>
@ -96,6 +92,14 @@
${prefix}/lib/libgexiv2.dylib ${prefix}/lib/libgexiv2.dylib
</binary> </binary>
<binary>
${prefix}/lib/libgeocode-glib.dylib
</binary>
<binary>
${prefix}/lib/gio/modules/libgiognutls.so
</binary>
<gir> <gir>
${prefix}/share/gir-1.0/*.gir ${prefix}/share/gir-1.0/*.gir
</gir> </gir>
@ -137,6 +141,10 @@
${project}/gramps_launcher.py ${project}/gramps_launcher.py
</data> </data>
<data>
${prefix}/etc/fonts
</data>
<data> <data>
${prefix}/share/glib-2.0/schemas ${prefix}/share/glib-2.0/schemas
</data> </data>
@ -144,19 +152,19 @@
<!-- We have to pull in the python modules, which are mixed python <!-- We have to pull in the python modules, which are mixed python
and loadable modules. --> and loadable modules. -->
<data recurse="True"> <data recurse="True">
${prefix}/lib/python3.6/*.py ${prefix}/lib/python3.9/*.py
</data> </data>
<data> <data>
${prefix}/lib/python3.6/config-3.6m-darwin/ ${prefix}/lib/python3.9/config-3.9-darwin/
</data> </data>
<data> <data>
${prefix}/lib/python3.6/site-packages/gramps/gen/utils/resource-path ${prefix}/lib/python3.9/site-packages/gramps/gen/utils/resource-path
</data> </data>
<data> <data>
${prefix}/include/python3.6m/pyconfig.h ${prefix}/include/python3.9/pyconfig.h
</data> </data>
@ -173,7 +181,7 @@
</data> </data>
<data recurse="True"> <data recurse="True">
${prefix}/lib/python3.6/site-packages/gramps/*.glade ${prefix}/lib/python3.9/site-packages/gramps/*.glade
</data> </data>
<data> <data>
@ -205,6 +213,7 @@
<data> <data>
${prefix}/share/icons ${prefix}/share/icons
</data> </data>
<!-- Copy icons. Note that the .icns file is an Apple format which <!-- Copy icons. Note that the .icns file is an Apple format which
contains up to 4 sizes of icon. You can use contains up to 4 sizes of icon. You can use
/Developer/Applications/Utilities/Icon Composer.app to import /Developer/Applications/Utilities/Icon Composer.app to import

View File

@ -9,22 +9,12 @@
href="http://pywebkitgtk.googlecode.com/files/"/> href="http://pywebkitgtk.googlecode.com/files/"/>
<repository type="tarball" name="ftp.gnome.org" <repository type="tarball" name="ftp.gnome.org"
href="http://ftp.gnome.org/pub/GNOME/sources/"/> href="http://ftp.gnome.org/pub/GNOME/sources/"/>
<repository type="tarball" name="pyxdg"
href="http://www.gnome.org/~fpeters/pyxdg/"/>
<repository type="tarball" name="xdg-utils"
href="http://portland.freedesktop.org/download/"/>
<repository type="svn" name="gramps-addons"
href="https://svn.code.sf.net/p/gramps-addons/code/"/>
<repository type="tarball" name="oracle" <repository type="tarball" name="oracle"
href="http://download.oracle.com/"/> href="http://download.oracle.com/"/>
<repository type="tarball" name="pymodules" <repository type="tarball" name="pymodules"
href="https://pypi.python.org/packages/"/> href="https://pypi.python.org/packages/"/>
<repository type="tarball" name="stowers"
href="http://www.johnstowers.co.nz/files/"/>
<repository type="git" name="github" href="git://github.com/"/> <repository type="git" name="github" href="git://github.com/"/>
<repository type="tarball" name="github-tarball" href="https://github.com/"/> <repository type="tarball" name="github-tarball" href="https://github.com/"/>
<repository type="tarball" name="graphviz"
href="https://graphviz.gitlab.io/pub/graphviz/stable/SOURCES/"/>
<repository type="tarball" name="exiv2.org" <repository type="tarball" name="exiv2.org"
href="http://www.exiv2.org/releases/"/> href="http://www.exiv2.org/releases/"/>
<repository type="tarball" name="pythonware" <repository type="tarball" name="pythonware"
@ -65,9 +55,9 @@ gtk-mac-bundler gtk-osx-build/projects/gramps/gramps.bundle
</distutils> </distutils>
<distutils id="gramps" supports-non-srcdir-builds="no"> <distutils id="gramps" supports-non-srcdir-builds="no">
<branch module="gramps-project/gramps/archive/v5.1.3.tar.gz" <branch module="gramps-project/gramps/archive/v5.1.4.tar.gz"
repo="github-tarball" version="5.1.3" repo="github-tarball" version="5.1.4"
checkoutdir="gramps-gramps-5.1.3"/> checkoutdir="gramps-gramps-5.1.4"/>
<dependencies> <dependencies>
<dep package="meta-gramps-modules"/> <dep package="meta-gramps-modules"/>
</dependencies> </dependencies>
@ -81,35 +71,10 @@ gtk-mac-bundler gtk-osx-build/projects/gramps/gramps.bundle
</dependencies> </dependencies>
</distutils> </distutils>
<autotools id="pyWebKitGtk" > <meson id="json-glib" mesonargs="-Dgtk_doc=disabled -Dman=false -Dtests=false">
<branch module="pywebkitgtk-1.1.7.tar.bz2" version="1.1.7" <branch module="json-glib/1.6/json-glib-1.6.2.tar.xz"
repo="pywebkitgtk"/> version="1.6.2" repo="ftp.gnome.org"
<dependencies> hash="sha256:a33d66c6d038bda46b910c6c6d59c4e15db014e363dc997a0414c2e07d134f24"/>
<dep package="WebKit"/>
<dep package="sqlite"/>
</dependencies>
</autotools>
<distutils id="pyenchant">
<branch repo="pymodules" module="73/73/49f95fe636ab3deed0ef1e3b9087902413bcdf74ec00298c3059e660cfbb/pyenchant-1.6.8.tar.gz"
version="1.6.1"/>
</distutils>
<distutils id="pyxdg">
<branch repo="pyxdg" module="pyxdg-0.17.tar.gz" version="0.17"
hash="sha256:fbc87711922b2dd6ceb23ee041f1f96da9b7dbb6971df03a3081b439def069ce"
md5sum="a086de99cc536095684d87f15594e4db" size="37372"/>
</distutils>
<autotools id="xdg-utils">
<branch module="xdg-utils-1.0.2.tgz" version="1.0.2" repo="xdg-utils"/>
</autotools>
<meson id="json-glib">
<branch module="json-glib/1.4/json-glib-1.4.4.tar.xz"
version="1.4.4" repo="ftp.gnome.org"
hash="sha256:720c5f4379513dc11fd97dc75336eb0c0d3338c53128044d9fabec4374f4bc47"/>
<dependencies> <dependencies>
<dep package="gobject-introspection"/> <dep package="gobject-introspection"/>
</dependencies> </dependencies>
@ -128,46 +93,33 @@ gtk-mac-bundler gtk-osx-build/projects/gramps/gramps.bundle
<autotools id="osmgpsmap" skip-autogen="never" <autotools id="osmgpsmap" skip-autogen="never"
autogenargs="--disable-gtk-doc-html" autogenargs="--disable-gtk-doc-html"
supports-non-srcdir-builds="no"> supports-non-srcdir-builds="no">
<branch module="nzjrs/osm-gps-map" revision="1.1.0" repo="github"/> <branch module="nzjrs/osm-gps-map" revision="1.2.0" repo="github"/>
<dependencies> <dependencies>
<dep package="libsoup"/> <dep package="libsoup"/>
</dependencies> <dep package="gtk+-3.0"/>
<after>
<dep package="meta-gtk-osx-gtk3"/>
<dep package="meta-gtk-osx-gtk3.14"/>
</after>
</autotools>
<autotools id="graphviz" autogen-sh="configure"
autogenargs="--disable-sharp --disable-guile --disable-java --disable-lua --disable-ocaml --disable-perl --disable-php --disable-r --disable-ruby --disable-tcl --with-pangocairo">
<branch module="graphviz.tar.gz" version="2.40.1"
repo="graphviz" checkoutdir="graphviz-2.40.1"/>
<dependencies>
<dep package="pango"/>
<dep package="meta-gtk-osx-freetype"/>
<dep package="librsvg"/>
</dependencies> </dependencies>
</autotools> </autotools>
<cmake id="exiv2" cmakeargs="-DEXIV2_ENABLE_PNG=ON"> <cmake id="exiv2" cmakeargs="-DEXIV2_ENABLE_PNG=ON">
<branch module="exiv2-0.27.0a-Source.tar.gz" repo="exiv2.org" <branch module="exiv2-0.27.3-Source.tar.gz" repo="exiv2.org"
checkoutdir="exiv2-0.27.0-Source" version="0.27.0"/> checkoutdir="exiv2-0.27.3-Source" version="0.27.3"
hash="sha256:a79f5613812aa21755d578a297874fb59a85101e793edc64ec2c6bd994e3e778"/>
</cmake> </cmake>
<meson id="gexiv2" mesonargs="-Dvapi=false"> <meson id="gexiv2" mesonargs="-Dvapi=false">
<branch module="gexiv2/0.12/gexiv2-0.12.0.tar.xz" <branch module="gexiv2/0.12/gexiv2-0.12.2.tar.xz"
repo="ftp.gnome.org" version="0.12.0" repo="ftp.gnome.org" version="0.12.2"
hash="sha256:58f539b0386f36300b76f3afea3a508de4914b27e78f58ee4d142486a42f926a"> hash="sha256:2322b552aca330eef79724a699c51a302345d5e074738578b398b7f2ff97944c">
</branch> </branch>
<dependencies> <dependencies>
<dep package="exiv2"/> <dep package="exiv2"/>
</dependencies> </dependencies>
</meson> </meson>
https://files.pythonhosted.org/packages/
<distutils id="pil"> <distutils id="pillow">
<branch module="93/73/66854f63b1941aad9af18a1de59f9cf95ad1a87c801540222e332f6688d7/Pillow-4.1.1.tar.gz" version="4.1.1" <branch module="21/23/af6bac2a601be6670064a817273d4190b79df6f74d8012926a39bc7aa77f/Pillow-8.2.0.tar.gz" version="8.2.0"
repo="pymodules" repo="pymodules"
hash="md5:f2565954955c8d10f3b4f1f72f852bf7"> hash="sha256:a787ab10d7bb5494e5f76536ac460741788f1fbce851068d73a87ca7c35fc3e1">
</branch> </branch>
<dependencies> <dependencies>
<!--dep package="setuptools"/--> <!--dep package="setuptools"/-->
@ -175,18 +127,63 @@ gtk-mac-bundler gtk-osx-build/projects/gramps/gramps.bundle
</distutils> </distutils>
<distutils id='pyicu'> <distutils id='pyicu'>
<branch version='2.5' repo='pymodules' <branch version='2.7.2' repo='pymodules'
module='5a/99/c48c816095208bf3f4936ff67e571621fbddef461303a35a076f234e31f6/PyICU-2.5.tar.gz'/> module='17/0f/9d6b7eb01650960239a5d4dc21cd6e7a96921807c043d287bae4b2f440e1/PyICU-2.7.2.tar.gz'
hash="sha256:1382869b22d91cc99274f9b525fa7d9199b44d9007ff0036a09747839a01e9dc"/>
<dependencies> <dependencies>
<dep package='icu'/> <dep package='icu'/>
</dependencies> </dependencies>
</distutils>
<!--Note the leading ; in autogen-template. It's there on purpose in case the user has set nice_build so that the nice prepended to the command doesn't eat the cd. -->
<autotools id="berkeleydb" autogen-sh="configure"
supports-non-srcdir-builds="no" makeargs="-C build_unix"
autogen-template="cd .;cd build_unix; ../dist/%(autogen-sh)s --prefix %(prefix)s %(autogenargs)s"
makeinstallargs="-C build_unix install">
<branch module="berkeley-db/db-4.8.30.NC.tar.gz" version="4.8.30"
repo="oracle"
hash="sha256:12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef" >
<patch file="berkeleydb-4.8-atomic.patch" strip='1'/>
</branch>
</autotools>
<!-- For out-of-source-tree builds (i.e., builddir is defined either
in .jhbuildrc-custom or passed as an option on the
command-line, the normal berkeleydb module will build in its
srcdir/build_unix directory. If you want to build it in the
build directory with most of the other modules, use this module
instead. -->
<autotools id="berkeleydb-nonsrctree" autogen-sh="configure"
autogen-template="%(srcdir)s/dist/%(autogen-sh)s --prefix %(prefix)s %(autogenargs)s" >
<branch module="berkeley-db/db-4.8.30.NC.tar.gz" version="4.8.30"
repo="oracle"
hash="sha256:12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef">
<patch file="berkeleydb-4.8-atomic.patch" strip='1'/>
</branch>
</autotools>
<distutils id="pybsddb">
<branch repo="pymodules" version="6.2.9"
module="f0/24/92034482656945fc6ceb10551222b43a0ff8d0c87e15839120487820067e/bsddb3-6.2.9.tar.gz"
hash="sha256:70d05ec8dc568f42e70fc919a442e0daadc2a905a1cfb7ca77f549d49d6e7801" />
<dependencies>
<dep package="python3"/>
</dependencies>
<after>
<dep package="berkeleydb"/>
<dep package="berkeleydb-nonsrctree"/>
</after>
</distutils> </distutils>
<metamodule id="meta-gramps-modules"> <metamodule id="meta-gramps-modules">
<dependencies> <dependencies>
<dep package="python3"/> <dep package="python3"/>
<dep package="meta-gtk-osx-gtk3"/> <dep package="meta-gtk-osx-gtk3"/>
<dep package="meta-gtk-osx-gtk3-core-themes"/>
<dep package="goocanvas2"/> <dep package="goocanvas2"/>
<dep package="librsvg"/> <dep package="librsvg"/>
<dep package="shared-mime-info"/> <dep package="shared-mime-info"/>
@ -202,7 +199,7 @@ gtk-mac-bundler gtk-osx-build/projects/gramps/gramps.bundle
<dep package="pygobject3"/> <dep package="pygobject3"/>
<dep package='pyicu'/> <dep package='pyicu'/>
<dep package='pybsddb'/> <dep package='pybsddb'/>
<dep package="pil"/> <dep package="pillow"/>
</dependencies> </dependencies>
</metamodule> </metamodule>

View File

@ -24,6 +24,7 @@ environ['GTK_PATH'] = bundle_res
environ['PANGO_RC_FILE'] = join(bundle_etc, 'pango', 'pangorc') environ['PANGO_RC_FILE'] = join(bundle_etc, 'pango', 'pangorc')
environ['PANGO_SYSCONFDIR'] = bundle_etc environ['PANGO_SYSCONFDIR'] = bundle_etc
environ['PANGO_LIBDIR'] = bundle_lib environ['PANGO_LIBDIR'] = bundle_lib
environ['GIO_MODULE_DIR'] = join(bundle_lib, 'gio', 'modules')
environ['GDK_PIXBUF_MODULE_FILE'] = join(bundle_lib, 'gdk-pixbuf-2.0', environ['GDK_PIXBUF_MODULE_FILE'] = join(bundle_lib, 'gdk-pixbuf-2.0',
'2.10.0', 'loaders.cache') '2.10.0', 'loaders.cache')
environ['GI_TYPELIB_PATH'] = join(bundle_lib, 'girepository-1.0') environ['GI_TYPELIB_PATH'] = join(bundle_lib, 'girepository-1.0')
@ -40,6 +41,8 @@ environ['USERPROFILE'] = environ['HOME']
environ['APPDATA'] = join(environ['HOME'], 'Library', 'Application Support') environ['APPDATA'] = join(environ['HOME'], 'Library', 'Application Support')
environ['PATH'] = join(bundle_contents, 'MacOS') + ':' + environ['PATH'] environ['PATH'] = join(bundle_contents, 'MacOS') + ':' + environ['PATH']
if __name__ == '__main__':
__file__ = 'gramps_launcher.py'
import gramps.grampsapp as app import gramps.grampsapp as app
app.main() app.main()

View File

@ -0,0 +1,40 @@
--- a/dist/configure 2010-04-12 13:25:23.000000000 -0700
+++ b/dist/configure 2021-04-11 11:27:32.000000000 -0700
@@ -19158,7 +19158,7 @@
# x86_64/gcc: FreeBSD, NetBSD, BSD/OS, Linux
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+#include <stdlib.h>
int
main ()
{
@@ -20197,7 +20197,7 @@
if test "$db_cv_atomic" = no; then
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+#include <stdlib.h>
int
main ()
{
--- a/dbinc/atomic.h 2013-03-12 14:07:22.000000000 -0400
+++ b/dbinc/atomic.h 2013-03-12 14:06:35.000000000 -0400
@@ -144,7 +144,7 @@
#define atomic_inc(env, p) __atomic_inc(p)
#define atomic_dec(env, p) __atomic_dec(p)
#define atomic_compare_exchange(env, p, o, n) \
- __atomic_compare_exchange((p), (o), (n))
+ __atomic_compare_exchange_db((p), (o), (n))
static inline int __atomic_inc(db_atomic_t *p)
{
int temp;
@@ -176,7 +176,7 @@
* http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
* which configure could be changed to use.
*/
-static inline int __atomic_compare_exchange(
+static inline int __atomic_compare_exchange_db(
db_atomic_t *p, atomic_value_t oldval, atomic_value_t newval)
{
atomic_value_t was;

View File

@ -1,160 +1,187 @@
2020-08-11 prculley <paulr2787@gmail.com> 2021-07-09 Tian Shixiong <tiansworld@fedoraproject.org>
* po/ar.po, po/bg.po, po/br.po, po/ca.po, po/cs.po, po/da.po, * po/zh_CN.po: Update and fix Simplified Chinese translation
po/el.po, po/en_GB.po, po/eo.po, po/es.po, po/fi.po, po/fr.po,
po/ga.po, po/he.po, po/hr.po, po/hu.po, po/is.po, po/it.po,
po/ja.po, po/lt.po, po/mk.po, po/nb.po, po/nl.po, po/nn.po,
po/pl.po, po/pt_BR.po, po/pt_PT.po, po/ro.po, po/ru.po, po/sk.po,
po/sl.po, po/sq.po, po/sr.po, po/sr_Latn.po, po/sv.po, po/ta.po,
po/tr.po, po/uk.po, po/vi.po, po/zh_CN.po, po/zh_HK.po, po/zh_TW.po:
Remove duplicates in Translations
2020-08-10 prculley <paulr2787@gmail.com> 2021-07-16 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/ar.po, po/bg.po, po/br.po, po/ca.po, po/cs.po, po/da.po, * po/de.po: fixed small German translation error for item also fixed
po/de.po, po/el.po, po/en_GB.po, po/eo.po, po/es.po, po/fi.po, in Weblate GUI for master
po/fr.po, po/ga.po, po/he.po, po/hr.po, po/hu.po, po/is.po,
po/it.po, po/ja.po, po/lt.po, po/mk.po, po/nb.po, po/nl.po,
po/nn.po, po/pl.po, po/pt_BR.po, po/pt_PT.po, po/ro.po, po/ru.po,
po/sk.po, po/sl.po, po/sq.po, po/sr.po, po/sr_Latn.po, po/sv.po,
po/ta.po, po/tr.po, po/uk.po, po/vi.po, po/zh_CN.po, po/zh_HK.po,
po/zh_TW.po: Clean up translations for Default/Home Person
2020-08-10 Leonhaeuser <mirko@leonhaeuser.de> 2021-06-28 Tian Shixiong <tiansworld@fedoraproject.org>
* po/de.po: Update German translation * po/zh_CN.po: Update Simplified Chinese translation
2020-08-10 Paul Culley <paulr2787@gmail.com> 2021-07-05 pehlm <par.ekholm@pekholm.org>
* po/pl.po: Fix Charts/Pedigreeview tooltip Polish translation * po/sv.po: One update Swedish translation
(#1092) Fixes #11852
2020-08-10 Krystian Safjan <ksafjan@gmail.com> 2021-06-25 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/pl.po: Fix and add objects to Polish translation of Gramps * po/de.po: Fixed different German translations for "What's next"
(#1088) also fixed in master (Weblate)
2020-07-23 Leonhaeuser <mirko@leonhaeuser.de> 2021-06-22 Matti Niemelä <matti.u.niemela@gmail.com>
* po/de.po: German translation fixed typo * po/fi.po: Fix translation in Finnish
2020-07-17 niememat <niememat@gmail.com> 2021-06-17 Tian Shixiong <tiansworld@fedoraproject.org>
* po/fi.po: Update finnish translation * po/zh_CN.po: Correct and improve Simplified Chinese translation.
Correct some terribly wrong and low quality translation, even machine
translation. Improve some existing translation for better user experience
as a software, use more written language.
2020-06-07 Tian Shixiong <tiansworld@fedoraproject.org> 2021-05-31 Tian Shixiong <tiansworld@fedoraproject.org>
* po/zh_CN.po: Update Simplified Chinese translation for gramps51 * po/zh_CN.po: Improve and correct Simplified Chinese translation
branch
2020-01-11 giansalvo <pioggia3+github@gmail.com> 2021-05-27 Tian Shixiong <tiansworld@fedoraproject.org>
* po/ar.po, po/bg.po, po/br.po, po/ca.po, po/cs.po, po/da.po, * po/zh_CN.po: Improve and correct the Simplified Chinese
po/de.po, po/el.po, po/en_GB.po, po/eo.po, po/es.po, po/fi.po, translation
po/fr.po, po/ga.po, po/he.po, po/hr.po, po/hu.po, po/is.po,
po/it.po, po/ja.po, po/lt.po, po/mk.po, po/nb.po, po/nl.po,
po/nn.po, po/pl.po, po/pt_BR.po, po/pt_PT.po, po/ro.po, po/ru.po,
po/sk.po, po/sl.po, po/sq.po, po/sr.po, po/sr_Latn.po, po/sv.po,
po/ta.po, po/tr.po, po/uk.po, po/vi.po, po/zh_CN.po, po/zh_HK.po,
po/zh_TW.po: Fix bug 0011078: 'Default person' instead of 'Home
person' - modified button hints - modified filter rules names and descriptions - modified .pot and .po files - substituted 'home person' with 'Home Person'
2020-07-07 Leonhaeuser <mirko@leonhaeuser.de> 2021-05-21 Tian Shixiong <tiansworld@fedoraproject.org>
* po/de.po: Germen fixed translation error of Media: * po/zh_CN.po: Update and improve Simplified Chinese translation
2020-07-04 Leonhaeuser <mirko@leonhaeuser.de> 2021-05-17 Tian Shixiong <tiansworld@fedoraproject.org>
* po/de.po: Fix typo * po/zh_CN.po: Update Simplified Chinese translation
2020-07-01 Leonhaeuser <mirko@leonhaeuser.de> 2020-09-26 Jan Sparreboom <jan@sparreboom.net>
* po/de.po: update German translation * po/nl.po: Update Dutch translation
2020-04-23 SNoiraud <serge.noiraud@laposte.net> 2021-05-07 Tian Shixiong <tiansworld@fedoraproject.org>
* po/ar.po, po/bg.po, po/br.po, po/ca.po, po/cs.po, po/da.po, * po/zh_CN.po: Correct and Update Simplified Chinese translation
po/de.po, po/el.po, po/en_GB.po, po/eo.po, po/es.po, po/fi.po,
po/fr.po, po/ga.po, po/he.po, po/hr.po, po/hu.po, po/is.po,
po/it.po, po/ja.po, po/lt.po, po/mk.po, po/nb.po, po/nl.po,
po/nn.po, po/pl.po, po/pt_BR.po, po/pt_PT.po, po/ro.po, po/ru.po,
po/sk.po, po/sl.po, po/sq.po, po/sr.po, po/sr_Latn.po, po/sv.po,
po/ta.po, po/tr.po, po/uk.po, po/vi.po, po/zh_CN.po, po/zh_HK.po,
po/zh_TW.po: Fix typo in gui/configure.py and translation files Fixes #11665
2020-06-22 pehlm <par.ekholm@pekholm.org> 2020-10-13 Tian Shixiong <tiansworld@fedoraproject.org>
* po/sv.po: A little adjustment to Swedish translation * po/zh_CN.po: Update Simplified Chinese translation
2020-06-21 pehlm <par.ekholm@pekholm.org> 2021-05-14 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/sv.po: Updates to Swedish translation * po/de.po: Corrected some German translation errors found during
handbook revision
2020-06-20 Megumi Sakata <megumi.sakata.k@gmail.com> 2021-04-28 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/ja.po: Update Japanese translation * po/de.po: corrected German translation of "confidence"
2020-04-28 vantu5z <vantu5z@mail.ru> 2021-04-26 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/ru.po: update Russian translation * po/de.po: German corrected translation of 'attribute'
2020-04-24 niememat <niememat@gmail.com> 2021-04-25 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/fi.po: Fix translation in Finnish * po/de.po: Fixed translation error of "display name editor" into
German
2020-04-18 Joan Creus <joan.creusandreu@gmail.com> 2021-04-24 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/ca.po: Updating Catalan translation * po/de.po: some translation fixes for German
2020-04-18 Joan Creus <joan.creusandreu@gmail.com> 2021-04-24 pehlm <par.ekholm@pekholm.org>
* po/ca.po: Updating Catalan translation * po/sv.po: Changed immigration too, Swedish
2020-04-08 Leonhaeuser <mirko@leonhaeuser.de> 2021-04-24 pehlm <par.ekholm@pekholm.org>
* po/de.po: update Germn translation * po/sv.po: Correction of Swedish translation
2020-03-26 vantu5z <vantu5z@mail.ru> 2021-04-22 Helder Geovane Gomes de Lima <he7d3r@gmail.com>
* po/ru.po: update Russian translation * po/pt_BR.po: Update Portuguese translation (pt_BR) (#1199)
This pull request is an updated version of the patch I've provided
at <https://gramps-project.org/bugs/view.php?id=10547> in 2018, now
based on branch 5.1
2020-03-25 Translator5 <Translator5@users.noreply.github.com> 2021-04-19 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/ru.po: [Language: Russian] Maintenance/gramps51 (#1027) * some Russian translations updates * po/de.po: Corrected translation of markup in German translation
2020-03-03 Joan Creus <joan.creusandreu@gmail.com> 2021-04-17 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/ca.po: Updating Catalan translation * po/de.po: Fixed translation of tags in German translation
2020-02-29 Joan Creus <joan.creusandreu@gmail.com> 2021-04-14 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/ca.po: Updating Catalan translation * po/de.po: German translation for type unified
2020-02-25 Bernard Banko <beernarrd@gmail.com> 2021-04-13 romjerome <romjerome@yahoo.fr>
* po/sl.po: V&O changed to PZV to avoid ampersand * po/fr.po: 11656: typo, spelling correction contribution by Philippe
2020-02-07 pehlm <par.ekholm@pekholm.org> 2021-04-13 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/sv.po: Minor update to Swedish translation * po/de.po: Fixed German translation of number for places
2020-01-31 vantu5z <vantu5z@mail.ru> 2021-03-21 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/ru.po: update Russian translation * po/de.po: Some small fixes in German translation
2020-01-26 Bernard Banko <beernarrd@gmail.com> 2021-03-11 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/sl.po: Slovenian translation update * po/de.po: Update German translation for csv import/export
2020-01-23 prculley <paulr2787@gmail.com> 2021-03-01 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/ru.po: Fix typo in Russian translation * po/de.po: small fix in German translation
2020-01-21 système <romjerome@users.noreply.github.com> 2021-02-12 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/fr.po: typos in french translation #11534 #10534 * po/de.po: additional small German translation fixes
2020-01-21 Fedik <getthesite@gmail.com> 2021-02-11 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* Ukrainian translation update * po/de.po: Small fixes German translation
2021-02-06 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: fix wrong translation of source text in German
translation
2021-02-06 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: fixed small error in German translation
2021-01-26 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: small fixes German translation
2020-10-15 vantu5z <vantu5z@mail.ru>
* po/ru.po: Update Russian translation
2020-09-25 Zdeněk Hataš <zdenek.hatas@gmail.com>
* po/cs.po: Update Czech translation - typo fixes
2020-09-06 Tian Shixiong <tiansworld@fedoraproject.org>
* po/zh_CN.po: Update Simplified Chinese translation
2020-08-16 Jan Sparreboom <jan@sparreboom.net>
* po/nl.po: Update Dutch translation
2020-04-21 Lajos Nemeséri <nemeseril@gmail.com>
* po/hu.po: Revised and updated hu translation
2020-09-13 Juan Saavedra <jcsaaver@gmail.com>
* po/es.po: Update Spanish translation
2020-08-26 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: German translation two small corrections
2020-08-21 Zdeněk Hataš <zdenek.hatas@gmail.com>
* po/cs.po: Update Czech translation
2020-08-12 pehlm <par.ekholm@pekholm.org>
* Update Swedish translation

View File

@ -38,7 +38,7 @@ msgstr ""
"Project-Id-Version: gramps 3.3.x\n" "Project-Id-Version: gramps 3.3.x\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-15 22:20+0200\n" "POT-Creation-Date: 2020-07-15 22:20+0200\n"
"PO-Revision-Date: 2020-08-21 11:01+0200\n" "PO-Revision-Date: 2020-09-25 09:02+0200\n"
"Last-Translator: Zdeněk Hataš <zdenek.hatas@gmail.com>\n" "Last-Translator: Zdeněk Hataš <zdenek.hatas@gmail.com>\n"
"Language-Team: Czech <Czech <gnome-cs-list@gnome.org>>\n" "Language-Team: Czech <Czech <gnome-cs-list@gnome.org>>\n"
"Language: cs\n" "Language: cs\n"
@ -2514,7 +2514,7 @@ msgstr "P=červen|D=června|T=červnu|O=červnem"
#: ../gramps/gen/datehandler/_datestrings.py:85 #: ../gramps/gen/datehandler/_datestrings.py:85
msgid "localized lexeme inflections||July" msgid "localized lexeme inflections||July"
msgstr "P=červenec|D=července|T=červenci|O=červencen" msgstr "P=červenec|D=července|T=červenci|O=červencem"
#: ../gramps/gen/datehandler/_datestrings.py:86 #: ../gramps/gen/datehandler/_datestrings.py:86
msgid "localized lexeme inflections||August" msgid "localized lexeme inflections||August"
@ -14099,7 +14099,7 @@ msgstr "Link_Editor"
#: ../gramps/gui/editors/editlink.py:87 ../gramps/gui/editors/editlink.py:239 #: ../gramps/gui/editors/editlink.py:87 ../gramps/gui/editors/editlink.py:239
msgid "Link Editor" msgid "Link Editor"
msgstr " Editor linků" msgstr "Editor linků"
#: ../gramps/gui/editors/editlink.py:91 #: ../gramps/gui/editors/editlink.py:91
msgid "Internet Address" msgid "Internet Address"
@ -15390,7 +15390,7 @@ msgstr "Příště se již neptat"
#: ../gramps/gui/glade/displaystate.glade:7 #: ../gramps/gui/glade/displaystate.glade:7
msgid "Gramps Warnings" msgid "Gramps Warnings"
msgstr " Varování Gramps" msgstr "Varování Gramps"
#: ../gramps/gui/glade/editaddress.glade:44 #: ../gramps/gui/glade/editaddress.glade:44
#: ../gramps/gui/glade/editchildref.glade:47 #: ../gramps/gui/glade/editchildref.glade:47
@ -23435,7 +23435,7 @@ msgstr "Dvojklikem zobrazit osoby v generacích"
#: ../gramps/plugins/gramplet/pedigreegramplet.py:264 #: ../gramps/plugins/gramplet/pedigreegramplet.py:264
#, python-format #, python-format
msgid " has 1 of 1 individual (%(percent)s complete)\n" msgid " has 1 of 1 individual (%(percent)s complete)\n"
msgstr "zahrnuje pouze jednoho jednotlivce (dokončeno z %(percent)s)\n" msgstr " zahrnuje pouze jednoho jednotlivce (dokončeno z %(percent)s)\n"
#. Create the Generation title, set an index marker #. Create the Generation title, set an index marker
#: ../gramps/plugins/gramplet/pedigreegramplet.py:267 #: ../gramps/plugins/gramplet/pedigreegramplet.py:267
@ -25070,7 +25070,7 @@ msgstr "Oddělený(á)"
#: ../gramps/plugins/importer/importgeneweb.py:197 #: ../gramps/plugins/importer/importgeneweb.py:197
msgid "GeneWeb import" msgid "GeneWeb import"
msgstr "importovat GeneWeb" msgstr "Importovat GeneWeb"
#: ../gramps/plugins/importer/importgeneweb.py:912 #: ../gramps/plugins/importer/importgeneweb.py:912
#, python-brace-format #, python-brace-format
@ -25331,7 +25331,7 @@ msgid ""
"event description." "event description."
msgstr "" msgstr ""
"Uložit datum narození\n" "Uložit datum narození\n"
"v popisu události" "v popisu události."
#: ../gramps/plugins/importer/importprogen.glade:1495 #: ../gramps/plugins/importer/importprogen.glade:1495
msgid "" msgid ""
@ -25339,7 +25339,7 @@ msgid ""
"event description." "event description."
msgstr "" msgstr ""
"Uložit datum úmrtí\n" "Uložit datum úmrtí\n"
"v popisu události" "v popisu události."
#: ../gramps/plugins/importer/importprogen.glade:1515 #: ../gramps/plugins/importer/importprogen.glade:1515
msgid "Diverse" msgid "Diverse"
@ -25606,7 +25606,7 @@ msgstr " Štítky: %d\n"
#: ../gramps/plugins/importer/importxml.py:291 #: ../gramps/plugins/importer/importxml.py:291
#, python-format #, python-format
msgid " Citations: %d\n" msgid " Citations: %d\n"
msgstr "Citací: %d\n" msgstr " Citací: %d\n"
#: ../gramps/plugins/importer/importxml.py:293 #: ../gramps/plugins/importer/importxml.py:293
msgid "Number of new objects imported:\n" msgid "Number of new objects imported:\n"
@ -25917,7 +25917,7 @@ msgstr "Řádek ignorován "
#: ../gramps/plugins/lib/libgedcom.py:1540 #: ../gramps/plugins/lib/libgedcom.py:1540
#, python-format #, python-format
msgid "Illegal character%s" msgid "Illegal character%s"
msgstr "neplatný znak%s" msgstr "Neplatný znak%s"
#: ../gramps/plugins/lib/libgedcom.py:1820 #: ../gramps/plugins/lib/libgedcom.py:1820
msgid "Your GEDCOM file is corrupted. It appears to have been truncated." msgid "Your GEDCOM file is corrupted. It appears to have been truncated."
@ -30079,7 +30079,7 @@ msgstr "Importují se osoby."
#: ../gramps/plugins/lib/libprogen.py:1414 #: ../gramps/plugins/lib/libprogen.py:1414
msgid "see address on " msgid "see address on "
msgstr "viz adresa" msgstr "viz adresa "
#: ../gramps/plugins/lib/libprogen.py:1417 #: ../gramps/plugins/lib/libprogen.py:1417
msgid "see also address" msgid "see also address"
@ -30092,7 +30092,7 @@ msgstr "Důvod úmrtí"
#. start feedback about import progress (GUI/TXT) #. start feedback about import progress (GUI/TXT)
#: ../gramps/plugins/lib/libprogen.py:1586 #: ../gramps/plugins/lib/libprogen.py:1586
msgid "Importing families." msgid "Importing families."
msgstr "Importují se rodiny" msgstr "Importují se rodiny."
#: ../gramps/plugins/lib/libprogen.py:1691 #: ../gramps/plugins/lib/libprogen.py:1691
msgid "Civil union" msgid "Civil union"
@ -30468,12 +30468,12 @@ msgstr "Dánsko"
#. TODO for Arabic, should the next line's comma be translated? #. TODO for Arabic, should the next line's comma be translated?
#: ../gramps/plugins/mapservices/eniroswedenmap.py:81 #: ../gramps/plugins/mapservices/eniroswedenmap.py:81
msgid " parish" msgid " parish"
msgstr "farnost" msgstr " farnost"
#. TODO for Arabic, should the next line's comma be translated? #. TODO for Arabic, should the next line's comma be translated?
#: ../gramps/plugins/mapservices/eniroswedenmap.py:87 #: ../gramps/plugins/mapservices/eniroswedenmap.py:87
msgid " state" msgid " state"
msgstr "kraj" msgstr " kraj"
#: ../gramps/plugins/mapservices/eniroswedenmap.py:150 #: ../gramps/plugins/mapservices/eniroswedenmap.py:150
msgid "Latitude not within '54.55' to '69.05'\n" msgid "Latitude not within '54.55' to '69.05'\n"
@ -31643,7 +31643,7 @@ msgstr "sp. %(reference)s : %(spouse)s"
#: ../gramps/plugins/textreport/descendreport.py:393 #: ../gramps/plugins/textreport/descendreport.py:393
#, python-format #, python-format
msgid "%s sp." msgid "%s sp."
msgstr " %s sp." msgstr "%s sp."
#: ../gramps/plugins/textreport/descendreport.py:526 #: ../gramps/plugins/textreport/descendreport.py:526
#: ../gramps/plugins/textreport/detdescendantreport.py:1011 #: ../gramps/plugins/textreport/detdescendantreport.py:1011
@ -36237,7 +36237,7 @@ msgstr " (1 bratr)"
#: ../gramps/plugins/view/relview.py:1053 #: ../gramps/plugins/view/relview.py:1053
#: ../gramps/plugins/view/relview.py:1108 #: ../gramps/plugins/view/relview.py:1108
msgid " (1 sister)" msgid " (1 sister)"
msgstr "(1 sestra)" msgstr " (1 sestra)"
#: ../gramps/plugins/view/relview.py:1055 #: ../gramps/plugins/view/relview.py:1055
#: ../gramps/plugins/view/relview.py:1110 #: ../gramps/plugins/view/relview.py:1110
@ -36304,14 +36304,14 @@ msgstr "Spusťte prosím nástroj pro ověření integrity/opravy databáze"
#, python-brace-format #, python-brace-format
msgid " ({number_of} child)" msgid " ({number_of} child)"
msgid_plural " ({number_of} children)" msgid_plural " ({number_of} children)"
msgstr[0] "({number_of} potomek)" msgstr[0] " ({number_of} potomek)"
msgstr[1] "({number_of} potomci)" msgstr[1] " ({number_of} potomci)"
msgstr[2] "({number_of} potomků)" msgstr[2] " ({number_of} potomků)"
#: ../gramps/plugins/view/relview.py:1567 #: ../gramps/plugins/view/relview.py:1567
#: ../gramps/plugins/view/relview.py:1613 #: ../gramps/plugins/view/relview.py:1613
msgid " (no children)" msgid " (no children)"
msgstr "(bez dětí)" msgstr " (bez dětí)"
#: ../gramps/plugins/view/relview.py:1871 #: ../gramps/plugins/view/relview.py:1871
msgid "Use shading" msgid "Use shading"
@ -36550,7 +36550,7 @@ msgstr "Poslední změna nastala %(date)s"
#: ../gramps/plugins/webreport/basepage.py:1319 #: ../gramps/plugins/webreport/basepage.py:1319
#, python-format #, python-format
msgid " on %(date)s" msgid " on %(date)s"
msgstr "%(date)s" msgstr " %(date)s"
#: ../gramps/plugins/webreport/basepage.py:1340 #: ../gramps/plugins/webreport/basepage.py:1340
#: ../gramps/plugins/webreport/basepage.py:1345 #: ../gramps/plugins/webreport/basepage.py:1345
@ -36616,7 +36616,7 @@ msgstr "Další"
#: ../gramps/plugins/webreport/basepage.py:2127 #: ../gramps/plugins/webreport/basepage.py:2127
msgid " [Click to Go]" msgid " [Click to Go]"
msgstr "[Kliknout pro pokračování]" msgstr " [Kliknout pro pokračování]"
#: ../gramps/plugins/webreport/basepage.py:2151 #: ../gramps/plugins/webreport/basepage.py:2151
msgid "Latter-Day Saints/ LDS Ordinance" msgid "Latter-Day Saints/ LDS Ordinance"
@ -36907,7 +36907,7 @@ msgstr "Volby Html"
#: ../gramps/plugins/webreport/narrativeweb.py:1678 #: ../gramps/plugins/webreport/narrativeweb.py:1678
#: ../gramps/plugins/webreport/webcal.py:1685 #: ../gramps/plugins/webreport/webcal.py:1685
msgid "File extension" msgid "File extension"
msgstr "přípona souboru" msgstr "Přípona souboru"
#: ../gramps/plugins/webreport/narrativeweb.py:1681 #: ../gramps/plugins/webreport/narrativeweb.py:1681
#: ../gramps/plugins/webreport/webcal.py:1688 #: ../gramps/plugins/webreport/webcal.py:1688

940
po/de.po

File diff suppressed because it is too large Load Diff

3728
po/es.po

File diff suppressed because it is too large Load Diff

View File

@ -7166,7 +7166,7 @@ msgstr "tuntematon"
#: ../gramps/gen/lib/date.py:281 #: ../gramps/gen/lib/date.py:281
#, python-format #, python-format
msgid "greater than %s years" msgid "greater than %s years"
msgstr "korkeitaan %s vuotta" msgstr "enintään %s vuotta"
#: ../gramps/gen/lib/date.py:286 ../gramps/gen/lib/date.py:314 #: ../gramps/gen/lib/date.py:286 ../gramps/gen/lib/date.py:314
#: ../gramps/gen/lib/date.py:316 ../gramps/gen/lib/date.py:322 #: ../gramps/gen/lib/date.py:316 ../gramps/gen/lib/date.py:322

View File

@ -20871,7 +20871,7 @@ msgid ""
"Changes cannot be completely abandoned because the number of changes made in " "Changes cannot be completely abandoned because the number of changes made in "
"the session exceeded the limit." "the session exceeded the limit."
msgstr "" msgstr ""
"Les changements ne peuvent être complètement abandonner car le nombre de " "Les changements ne peuvent être complètement abandonnés car le nombre de "
"modifications effectuées pendant la session excèdent la limite." "modifications effectuées pendant la session excèdent la limite."
#: ../gramps/gui/viewmanager.py:802 #: ../gramps/gui/viewmanager.py:802

1290
po/hu.po

File diff suppressed because it is too large Load Diff

23005
po/nl.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

416
po/ru.po

File diff suppressed because it is too large Load Diff

View File

@ -21,13 +21,13 @@
# Jens Arvidsson <jya@sverige.nu>, 2002-2005. # Jens Arvidsson <jya@sverige.nu>, 2002-2005.
# Stefan Björk <betula@users.sourceforge.net>, 2005-2006. # Stefan Björk <betula@users.sourceforge.net>, 2005-2006.
# Peter Landgren <peter.talken@telia.com>, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017. # Peter Landgren <peter.talken@telia.com>, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017.
# Pär Ekholm <pehlm@pekholm.org>, 2018, 2019, 2020. # Pär Ekholm <pehlm@pekholm.org>, 2018, 2019, 2020, 2021.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: sv\n" "Project-Id-Version: sv\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-15 22:20+0200\n" "POT-Creation-Date: 2020-07-15 22:20+0200\n"
"PO-Revision-Date: 2020-08-12 20:03+0200\n" "PO-Revision-Date: 2021-07-05 15:42+0200\n"
"Last-Translator: Pär Ekholm <pehlm@pekholm.se>\n" "Last-Translator: Pär Ekholm <pehlm@pekholm.se>\n"
"Language-Team: \n" "Language-Team: \n"
"Language: sv\n" "Language: sv\n"
@ -7501,7 +7501,7 @@ msgstr "Vald"
#: ../gramps/gen/lib/eventtype.py:181 #: ../gramps/gen/lib/eventtype.py:181
msgid "Emigration" msgid "Emigration"
msgstr "Utflyttning" msgstr "Utvandring"
#: ../gramps/gen/lib/eventtype.py:182 #: ../gramps/gen/lib/eventtype.py:182
msgid "First Communion" msgid "First Communion"
@ -7509,7 +7509,7 @@ msgstr "Första nattvarden"
#: ../gramps/gen/lib/eventtype.py:183 #: ../gramps/gen/lib/eventtype.py:183
msgid "Immigration" msgid "Immigration"
msgstr "Inflyttning" msgstr "Invandring"
#: ../gramps/gen/lib/eventtype.py:184 #: ../gramps/gen/lib/eventtype.py:184
msgid "Graduation" msgid "Graduation"
@ -7704,7 +7704,7 @@ msgstr "vald"
#: ../gramps/gen/lib/eventtype.py:231 #: ../gramps/gen/lib/eventtype.py:231
msgid "Emigration abbreviation|em." msgid "Emigration abbreviation|em."
msgstr "utfl." msgstr "utv."
#: ../gramps/gen/lib/eventtype.py:232 #: ../gramps/gen/lib/eventtype.py:232
msgid "First Communion abbreviation|f.comm." msgid "First Communion abbreviation|f.comm."
@ -7712,7 +7712,7 @@ msgstr "1.nattv."
#: ../gramps/gen/lib/eventtype.py:233 #: ../gramps/gen/lib/eventtype.py:233
msgid "Immigration abbreviation|im." msgid "Immigration abbreviation|im."
msgstr "infl." msgstr "inv."
#: ../gramps/gen/lib/eventtype.py:234 #: ../gramps/gen/lib/eventtype.py:234
msgid "Graduation abbreviation|grad." msgid "Graduation abbreviation|grad."
@ -33921,7 +33921,7 @@ msgstr ""
"\n" "\n"
"Ett mediaobjekt är en samling information om ett mediaobjekts datafil: namn, " "Ett mediaobjekt är en samling information om ett mediaobjekts datafil: namn, "
"sökväg, beskrivning, ID, notiser, källreferenser etc. Dessa data " "sökväg, beskrivning, ID, notiser, källreferenser etc. Dessa data "
"%(bold_start)sinnehåller inte datafilen självf%(bold_end)s.\n" "%(bold_start)sinnehåller inte själva datafilen%(bold_end)s.\n"
"\n" "\n"
"De datafiler som innehåller bilder, ljud, video etc, lagras separat på " "De datafiler som innehåller bilder, ljud, video etc, lagras separat på "
"hårddisken. Dessa filer ligger utanför Gramps kontroll och tas inte med i " "hårddisken. Dessa filer ligger utanför Gramps kontroll och tas inte med i "

File diff suppressed because it is too large Load Diff

View File

@ -419,8 +419,7 @@ package_data = package_data_core + package_data_gui
# Resources # Resources
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
data_files_core = [('share/mime-info', ['data/gramps.mime']), data_files_core = [('share/mime-info', ['data/gramps.mime'])]
('share/icons', ['images/gramps.png'])]
DOC_FILES = ['AUTHORS', 'COPYING', 'FAQ', 'INSTALL', 'NEWS', 'README.md', DOC_FILES = ['AUTHORS', 'COPYING', 'FAQ', 'INSTALL', 'NEWS', 'README.md',
'TODO'] 'TODO']
GEDCOM_FILES = glob.glob(os.path.join('example', 'gedcom', '*.*')) GEDCOM_FILES = glob.glob(os.path.join('example', 'gedcom', '*.*'))
@ -441,8 +440,8 @@ data_files_core.append(('share/gramps/css/swanky-purse/images', SWANKY_IMG))
PNG_FILES = glob.glob(os.path.join('data', '*.png')) PNG_FILES = glob.glob(os.path.join('data', '*.png'))
SVG_FILES = glob.glob(os.path.join('data', '*.svg')) SVG_FILES = glob.glob(os.path.join('data', '*.svg'))
data_files_core.append(('share/icons/gnome/48x48/mimetypes', PNG_FILES)) data_files_core.append(('share/icons/hicolor/48x48/mimetypes', PNG_FILES))
data_files_core.append(('share/icons/gnome/scalable/mimetypes', SVG_FILES)) data_files_core.append(('share/icons/hicolor/scalable/mimetypes', SVG_FILES))
DTD_FILES = glob.glob(os.path.join('data', '*.dtd')) DTD_FILES = glob.glob(os.path.join('data', '*.dtd'))
RNG_FILES = glob.glob(os.path.join('data', '*.rng')) RNG_FILES = glob.glob(os.path.join('data', '*.rng'))
@ -465,6 +464,20 @@ data_files_gui.append(('share/gramps/images/hicolor/22x22/actions', ICON_22))
data_files_gui.append(('share/gramps/images/hicolor/24x24/actions', ICON_24)) data_files_gui.append(('share/gramps/images/hicolor/24x24/actions', ICON_24))
data_files_gui.append(('share/gramps/images/hicolor/48x48/actions', ICON_48)) data_files_gui.append(('share/gramps/images/hicolor/48x48/actions', ICON_48))
data_files_gui.append(('share/gramps/images/hicolor/scalable/actions', ICON_SC)) data_files_gui.append(('share/gramps/images/hicolor/scalable/actions', ICON_SC))
APP_16 = os.path.join(THEME, '16x16', 'apps', 'gramps.png')
APP_22 = os.path.join(THEME, '22x22', 'apps', 'gramps.png')
APP_24 = os.path.join(THEME, '24x24', 'apps', 'gramps.png')
APP_48 = os.path.join(THEME, '48x48', 'apps', 'gramps.png')
APP_128 = os.path.join(THEME, '128x128', 'apps', 'gramps.png')
APP_256 = os.path.join(THEME, '256x256', 'apps', 'gramps.png')
APP_SC = os.path.join(THEME, 'scalable', 'apps', 'gramps.svg')
data_files_gui.append(('share/icons/hicolor/16x16/apps', [APP_16]))
data_files_gui.append(('share/icons/hicolor/22x22/apps', [APP_22]))
data_files_gui.append(('share/icons/hicolor/24x24/apps', [APP_24]))
data_files_gui.append(('share/icons/hicolor/48x48/apps', [APP_48]))
data_files_gui.append(('share/icons/hicolor/128x128/apps', [APP_128]))
data_files_gui.append(('share/icons/hicolor/256x256/apps', [APP_256]))
data_files_gui.append(('share/icons/hicolor/scalable/apps', [APP_SC]))
data_files = data_files_core + data_files_gui data_files = data_files_core + data_files_gui