Compare commits
99 Commits
master
...
maintenanc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ae7a2500de | ||
|
|
358a6b118b | ||
|
|
9352f0c438 | ||
|
|
1ab4cbfa63 | ||
|
|
1fd319e13a | ||
|
|
7cb8489ba2 | ||
|
|
a685b96f70 | ||
|
|
b24ebd5d77 | ||
|
|
6dcb1d00d5 | ||
|
|
a3b37b9627 | ||
|
|
034720321c | ||
|
|
09f01a69d5 | ||
|
|
597f3ebedf | ||
|
|
c7b5e149fa | ||
|
|
f7203aa029 | ||
|
|
9cca728a66 | ||
|
|
df270adc94 | ||
|
|
c177c13f99 | ||
|
|
15f1bb0201 | ||
|
|
f75aa9302a | ||
|
|
708c83dc58 | ||
|
|
0a809904dc | ||
|
|
e8f50deabc | ||
|
|
486fae91ce | ||
|
|
9ee5468bda | ||
|
|
eac6a935f6 | ||
|
|
cc68b7acfc | ||
|
|
c321e7f0d6 | ||
|
|
e13a852523 | ||
|
|
3c4c433a84 | ||
|
|
e8268cb37e | ||
|
|
721d964741 | ||
|
|
7d4ec1be73 | ||
|
|
36ce375a2a | ||
|
|
9f6afcc7db | ||
|
|
c66fc6423d | ||
|
|
f91d3e94ab | ||
|
|
3c1c21163c | ||
|
|
09709ec0c6 | ||
|
|
bb7f5fa522 | ||
|
|
9957506f35 | ||
|
|
eb4ce9ff79 | ||
|
|
1d72f4b23d | ||
|
|
5ad5f08a2b | ||
|
|
9e43f060d1 | ||
|
|
bc1ed688c4 | ||
|
|
9d358d06f5 | ||
|
|
16b1945a0e | ||
|
|
5e9be68ad5 | ||
|
|
cd3ef08ffb | ||
|
|
773e763093 | ||
|
|
0badfb6b47 | ||
|
|
5af80da5cd | ||
|
|
0045f134c6 | ||
|
|
1035f8930f | ||
|
|
d4bceeb6ff | ||
|
|
c8fc88cfe7 | ||
|
|
b4b6d52306 | ||
|
|
4f390c6b33 | ||
|
|
0442c34258 | ||
|
|
c903f5e5a5 | ||
|
|
3329860f50 | ||
|
|
e7401f3aaa | ||
|
|
1a48e8a03e | ||
|
|
9a4adab9d6 | ||
|
|
bb0647274b | ||
|
|
f6bfb46fc0 | ||
|
|
b6fa5da8ee | ||
|
|
14c2d0e1b6 | ||
|
|
226e8c549a | ||
|
|
d173809d8c | ||
|
|
63c52fa1bb | ||
|
|
455628d44a | ||
|
|
670bb355cb | ||
|
|
202c7a9bf6 | ||
|
|
72955840f1 | ||
|
|
b8e73d5ee1 | ||
|
|
990db39664 | ||
|
|
9c0dca6bd1 | ||
|
|
02e0c1c67d | ||
|
|
ebf1715468 | ||
|
|
c10f2da00e | ||
|
|
9f71372a97 | ||
|
|
0993d9cfc3 | ||
|
|
34471834ab | ||
|
|
ff912f844c | ||
|
|
45eac501a9 | ||
|
|
d4e85c2397 | ||
|
|
c7a4d287f0 | ||
|
|
c0d622c16a | ||
|
|
b38f77f2aa | ||
|
|
d91fc9e2fb | ||
|
|
198602be61 | ||
|
|
3f9f3215ee | ||
|
|
beb388a30d | ||
|
|
29e78d4253 | ||
|
|
b80dcaf701 | ||
|
|
a876d94fbc | ||
|
|
95e1e8cb67 |
568
ChangeLog
@ -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
@ -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
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
7
debian/changelog
vendored
@ -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
@ -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
|
||||||
|
|||||||
@ -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.")
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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):
|
||||||
|
|||||||
@ -51,6 +51,7 @@ editor_rule_list = [
|
|||||||
MediaPrivate,
|
MediaPrivate,
|
||||||
MatchesFilter,
|
MatchesFilter,
|
||||||
MatchesSourceConfidence,
|
MatchesSourceConfidence,
|
||||||
|
HasMedia,
|
||||||
HasAttribute,
|
HasAttribute,
|
||||||
ChangedSince,
|
ChangedSince,
|
||||||
HasTag,
|
HasTag,
|
||||||
|
|||||||
@ -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'
|
||||||
|
|||||||
@ -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)
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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() """
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
@ -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)
|
||||||
|
|
||||||
|
|||||||
@ -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'),
|
||||||
|
|||||||
@ -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):
|
||||||
|
|||||||
@ -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)
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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.
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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()
|
||||||
|
|||||||
@ -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):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -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'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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):
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
@ -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()
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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])
|
||||||
|
|||||||
BIN
images/hicolor/128x128/apps/gramps.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 709 B After Width: | Height: | Size: 709 B |
|
Before Width: | Height: | Size: 1003 B After Width: | Height: | Size: 1003 B |
|
Before Width: | Height: | Size: 1003 B After Width: | Height: | Size: 1003 B |
BIN
images/hicolor/256x256/apps/gramps.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
@ -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>
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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>
|
||||||
|
|
||||||
|
|||||||
@ -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()
|
||||||
|
|
||||||
|
|||||||
40
mac/patches/berkeleydb-4.8-atomic.patch
Normal 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;
|
||||||
219
po/ChangeLog
@ -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
|
||||||
|
|||||||
46
po/cs.po
@ -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
|
||||||
|
|||||||
2
po/fi.po
@ -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
|
||||||
|
|||||||
2
po/fr.po
@ -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
|
||||||
|
|||||||
2561
po/pt_BR.po
14
po/sv.po
@ -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 "
|
||||||
|
|||||||
6501
po/zh_CN.po
21
setup.py
@ -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
|
||||||
|
|
||||||
|
|||||||