Compare commits

..

1 Commits

Author SHA1 Message Date
romjerome 1f614bd76f Add files via upload 2021-04-04 09:10:22 +02:00
90 changed files with 11853 additions and 10505 deletions
-77
View File
@@ -1,77 +0,0 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2022 Nick Hall
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
name: Gramps CI
on:
push:
branches: [ maintenance/gramps51 ]
pull_request:
branches: [ maintenance/gramps51 ]
jobs:
build:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install gir1.2-pango-1.0
sudo apt-get install gir1.2-gtk-3.0
sudo apt-get install xdg-utils
sudo apt-get install librsvg2-common
sudo apt-get install libglib2.0-dev
sudo apt-get install intltool
sudo apt-get install python3-gi
sudo apt-get install python3-cairo
sudo apt-get install python3-gi-cairo
sudo apt-get install python3-bsddb3
sudo apt-get install python3-dev
sudo apt-get install python3-nose
sudo apt-get install python3-mock
sudo apt-get install python3-icu
sudo apt-get install python3-coverage
sudo apt-get install python3-jsonschema
sudo apt-get install libxml2-utils
sudo apt-get install python3-lxml
sudo apt-get install python-libxml2
sudo apt-get install zlib1g-dev
sudo apt-get install python3-setuptools
- name: Install addons
run: |
mkdir -p ~/.gramps/gramps51/plugins/
wget https://github.com/gramps-project/addons/raw/master/gramps51/download/CliMerge.addon.tgz
tar -C ~/.gramps/gramps51/plugins -xzf CliMerge.addon.tgz
wget https://github.com/gramps-project/addons/raw/master/gramps51/download/ExportRaw.addon.tgz
tar -C ~/.gramps/gramps51/plugins -xzf ExportRaw.addon.tgz
- name: Build
run: |
python3 setup.py build
- name: Run unit test suite
run: |
python3 setup.py test
- name: Trailing whitespace check
run: |
if git --no-pager grep --color -n --full-name '[ ]$' -- \*.py; then
echo "ERROR - Trailing whitespace found in source file(s)";
exit 1;
fi
+129
View File
@@ -0,0 +1,129 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2015-2015 Doug Blank
# Copyright (C) 2016 DaAwesomeP
# Copyright (C) 2016 QuLogic
# Copyright (C) 2016 Tim G L Lyons
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# After changing this file, check it on:
# http://lint.travis-ci.org/
sudo: required
dist: trusty
language: python
python:
- 3.3 # This is irrelevant, because the virtualenv is not used at all
# FIXME: The minimum requirement for Gramps is Python 3.2, so a test environment
# for Python 3.2 should be added to this environment which is Python 3.3. It
# will not be possible to run coverage under Python 3.2, because coverage is
# Python 3.3 (or above) only.
addons:
apt:
packages:
- gir1.2-pango-1.0
- gir1.2-gtk-3.0
- xdg-utils
- librsvg2-common
- libglib2.0-dev
- intltool
# - python3-gobject Provided by python3-gi
- python3-gi
- python3-cairo
- python3-gi-cairo
- python3-bsddb3
- python3-dev
- python3-nose
- python3-mock
- python3-pyicu
- python3-coverage
- python3-jsonschema
# lxml dependencies. for merge_ref_test to work
# - libxml2-dev
# - libxslt1-dev
- libxml2-utils
- python3-lxml
- python-libxml2
# ubuntu 14.04 requires this in addition to libxml2-dev and
# libxslt1-dev for compiling lxml.
# https://github.com/deanmalmgren/textract/issues/19
- zlib1g-dev
before_install:
install:
# The working directory is set to /home/travis/build/gramps-project/gramps
# by the automatic git checkout.
# Download Sean Ross-Ross's Pure Python module containing a framework to
# manipulate and analyze python asts and bytecode. This is loaded to
# /home/travis/build/gramps-project/gramps/meta
# FIXME: This should be loaded from the release directory at
# https://pypi.python.org/pypi/meta
- git clone -b master https://github.com/srossross/meta
# Build Gramps package. This seems to copy everything to
# /home/travis/build/scripts-3.3
- python setup.py build
before_script:
# Create the Gramps database directory.
- mkdir -p ~/.gramps/grampsdb/
# set PYTHONPATH so the directly installed module (meta) is picked up from
# /home/travis/build/gramps-project/gramps/meta
- export PYTHONPATH=meta
# set module exclusions. --exclude=TestUser because of older version of mock
# without configure_mock
- export EXCLUDE="--exclude=TestcaseGenerator"
# --exclude=merge_ref_test"
# set GRAMPS_RESOURCES for locale, data,image and documentation
- export GRAMPS_RESOURCES=.
# Install addons
- mkdir -p ~/.gramps/gramps51/plugins/
- wget https://github.com/gramps-project/addons/raw/master/gramps51/download/CliMerge.addon.tgz
- tar -C ~/.gramps/gramps51/plugins -xzf CliMerge.addon.tgz
- wget https://github.com/gramps-project/addons/raw/master/gramps51/download/ExportRaw.addon.tgz
- tar -C ~/.gramps/gramps51/plugins -xzf ExportRaw.addon.tgz
script:
# Ignore the virtualenv entirely. Use nosetests3, python3 (3.4.0) and coverage
# from /usr/bin. Use libraries from /usr/lib/python3.4,
# /usr/local/lib/python3.4/dist-packages and /usr/lib/python3/dist-packages
- nosetests3 --nologcapture --with-coverage --cover-package=gramps $EXCLUDE
gramps
# FIXME: This should have run from the current directory, rather than from
# gramps, because there is some test code in that directory.
# give an error for any trailing whitespace
- if git --no-pager grep --color -n --full-name '[ ]$' -- \*.py; then
echo "ERROR - Trailing whitespace found in source file(s)";
exit 1;
fi
after_success:
# apt-get installs python3-coverage, but codecov only invokes coverage, so make
# a link
- sudo ln /usr/bin/python3-coverage /usr/bin/coverage
# We have to use the bash script because the apt-get coverage does not install
# codecov. If we used pip to install codecov, it would run inside the
# virtualenv, and that doesn't work. Change the path to ensure that codecov
# picks up coverage from /usr/bin, rather than from
# /home/travis/virtualenv/python3.3.6/bin/
- PATH=/usr/bin:$PATH bash <(curl -s https://codecov.io/bash)
+342 -114
View File
@@ -1,174 +1,402 @@
2023-06-29 Nick Hall <nick-h@gramps-project.org>
2020-08-11 prculley <paulr2787@gmail.com>
* docs/conf.py, gramps/gen/const.py: Update copyright date
* po/ar.po, po/bg.po, po/br.po, po/ca.po, po/cs.po, po/da.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:
Remove duplicates in Translations
2023-05-13 SNoiraud <Serge.Noiraud@free.fr>
2020-08-10 prculley <paulr2787@gmail.com>
* gramps/plugins/webreport/media.py: Narrative web: problem with
small pictures. Fixes #012884
* 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/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
2023-05-09 SNoiraud <Serge.Noiraud@free.fr>
2020-08-10 Leonhaeuser <mirko@leonhaeuser.de>
* gramps/plugins/view/familyview.py: Implement the "<CTRL>J" for the
family view Fixes #012882
* po/de.po: Update German translation
2022-07-11 Jon Schewe <jpschewe@mtu.net>
2020-08-10 Serge Noiraud <Serge.Noiraud@laposte.net>
* gramps/plugins/webreport/basepage.py: Avoid application crash on
invalid user input If the user inputs an invalid date this change keeps the application
from crashing when such a date is found. The invalid date
information is reported to the user in the log. Fixes #12658.
* gramps/gui/views/treemodels/eventmodel.py: Events View: "Main
Participants" column does not (#1075) show the full list of participants when expanded. Fixes #11805
2023-05-13 Nick Hall <nick-h@gramps-project.org>
2020-08-10 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/export/exportgedcom.py: Fix export where private
citations are excluded
* po/pl.po: Fix Charts/Pedigreeview tooltip Polish translation
(#1092) Fixes #11852
2022-06-01 prculley <paulr2787@gmail.com>
2020-08-10 Krystian Safjan <ksafjan@gmail.com>
* gramps/plugins/tool/eventcmp.py: Fix Event compare tool to display
enclosed places properly
* po/gramps.pot, po/pl.po: Fix and add objects to Polish translation
of Gramps (#1088)
2022-06-08 SNoiraud <Serge.Noiraud@free.fr>
2020-08-06 John Ralls <jralls@ceridwen.us>
* gramps/gui/viewmanager.py: Check that view exists before calling
post_create method Avoids 'NoneType' object has no attribute 'post_create' error. Fixes #12638
* mac/gramps.modules: Use current Gtk release instead of Gtk-3.14.
2022-06-15 Jingxuan He <LostBenjamin@users.noreply.github.com>
2020-08-06 John Ralls <jralls@ceridwen.us>
* gramps/plugins/webreport/webcal.py: Fix a wrong operator bug in
the web calendar report
* mac/gramps.modules: Upgrade pymodules for Python 3.8
compatibility.
2022-10-08 Himanshu Gohel <1551217+hgohel@users.noreply.github.com>
2020-07-09 prculley <paulr2787@gmail.com>
* gramps/gen/plug/docgen/treedoc.py: Revert "Enclose tree report
image path and file name in braces" Fixes #12437 by reverting commit
75921ceaf40f3ced597d99c43794b98f81e49957 due to reports of
regression where processing of the generated TeX file fails due to
bad path specificiation for image files. Change was introduced in bug fix for #10495. Bugs #12437 and #12697 reported the regression and confirmed that
reverting the change fixes the regression.
* gramps/plugins/export/exportxml.py: Fix XML export when 'Group-as"
name contains XML invalid chars Fixes #11834
2022-10-22 SNoiraud <Serge.Noiraud@free.fr>
2020-07-08 SNoiraud <serge.noiraud@laposte.net>
* gramps/plugins/lib/maps/geography.py: Geography View: Fix number
of arguments in add_bookmark method add_bookmark() takes 2 positional arguments but 3 were given Fixes #12718
* gramps/plugins/webreport/basepage.py: NarWeb: Province place-type
is not displayed
2022-12-08 GaryGriffin <genealogy@garygriffin.net>
2020-07-07 prculley <paulr2787@gmail.com>
* gramps/plugins/lib/libsubstkeyword.py: Use date-specific place in
report substitution variables Fix place title in graphical reports which have user-defined display
formats to use date-specific alternate name. This impacts Ancestor Tree, Descendant Tree, and Family Descendant
Tree. Fixes #12763.
* gramps/gui/managedwindow.py: Fix ManagedWindow so that new windows
don't appear offscreen when system 'screen' sizes change in part
time multi-monitor setups. Fixes #11831
2022-12-27 John Ralls <jralls@ceridwen.us>
2020-07-03 prculley <paulr2787@gmail.com>
* gramps/grampsapp.py, gramps/gui/aboutdialog.py,
gramps/gui/logger/_errorreportassistant.py,
gramps/plugins/db/bsddb/bsddbtxn.py,
gramps/plugins/db/bsddb/cursor.py, gramps/plugins/db/bsddb/read.py,
gramps/plugins/db/bsddb/summary.py,
gramps/plugins/db/bsddb/test/cursor_test.py,
gramps/plugins/db/bsddb/undoredo.py,
gramps/plugins/db/bsddb/upgrade.py,
gramps/plugins/db/bsddb/write.py, gramps/plugins/gramplet/leak.py,
mac/patches/gramps-berkeleydb.patch: Try to import berkeleydb if
bsddb3 isn't found. berkelydb is usable for python >= 3.6 and required for python >=
3.10. See https://www.jcea.es/programacion/pybsddb.htm.
* gramps/gui/viewmanager.py: Fix menus when db fails to open due to
upgrade/downgrade etc. Fixes #11604
2023-02-12 Vincent Smeets <Vincent.VSmeets@GMail.com>
2020-07-03 prculley <paulr2787@gmail.com>
* gramps/plugins/docgen/htmldoc.py: HtmlDoc: Create a unique
filename for cropped images
* gramps/gui/plug/_windows.py: Fix issue with attach source tool,
results panel Fixes #11780
2022-10-24 D.A.Lordemann <LordemannD@gmail.com>
2020-07-03 prculley <paulr2787@gmail.com>
* gramps/plugins/export/exportgedcom.py: Fix corrupted NOTE tag in
Gedcom export Remove Python2 code obsoleted by Python3, which was corrupting
GEDCOM export of Gramps Notes text that includes multi-byte utf-8
characters. Fixes #12709.
* gramps/plugins/export/exportgedcom.py: Fix GEDCOM export; don't
include ADDR when address is missing Fixes #11825
2022-09-27 SNoiraud <Serge.Noiraud@free.fr>
2020-07-02 SNoiraud <serge.noiraud@laposte.net>
* gramps/gui/viewmanager.py: Fix IndexError that sometimes occurs
when changing view This occurs when restarting Gramps. Fixes #12636, #12304, #12429, #12623, #12695.
* gramps/gui/editors/editplace.py,
gramps/gui/editors/editplaceref.py: Coordinates containing a comma
instead of a period Fixes #11823
2023-03-18 SNoiraud <Serge.Noiraud@free.fr>
2020-07-23 Leonhaeuser <mirko@leonhaeuser.de>
* gramps/gen/proxy/referencedbyselection.py,
gramps/gui/widgets/styledtexteditor.py,
gramps/plugins/lib/libhtmlbackend.py: Fix crash when invalid note
link Fixes #012854
* po/de.po: German translation fixed typo
2023-04-17 SNoiraud <Serge.Noiraud@free.fr>
2020-07-17 niememat <niememat@gmail.com>
* gramps/gui/utils.py: Tags with color names don't work in pedigree
views Color tags work correctly in all views except in pedigree views.
These views modify colors: ... context.set_source_rgba(*(self.bordercolor[:3] + (0.4,))) ... and context.set_source_rgb(*self.bgcolor[:3]) As it works everywhere except in these views, I think it is a bug
even if we cannot enter color names in tags Fixes #012866
* po/fi.po: Update finnish translation
2023-04-05 SNoiraud <Serge.Noiraud@free.fr>
2020-06-07 Tian Shixiong <tiansworld@fedoraproject.org>
* gramps/gui/views/treemodels/eventmodel.py: Crash when invalid
event date
* po/zh_CN.po: Update Simplified Chinese translation for gramps51
branch
2023-04-04 SNoiraud <Serge.Noiraud@free.fr>
2020-07-08 Serge Noiraud <Serge.Noiraud@laposte.net>
* gramps/gui/listmodel.py: ListModel: Only the first level is
managed When we use checkboxes in columns. The path was converted to int.
Why ? But when we have multiple level, the path format is "x:y" for
two levels, "x:y:z" for three levels, etc
* gramps/plugins/webreport/basepage.py,
gramps/plugins/webreport/person.py,
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
2023-03-07 Nick Hall <nick-h@gramps-project.org>
2020-07-08 Serge Noiraud <Serge.Noiraud@laposte.net>
* .github/workflows/gramps-ci.yml: Update Gramps CI workflow to run
on Ubuntu 20.04 Ubuntu 18.04 became fully unsupported on 1 Dec 2022.
* gramps/plugins/webreport/person.py,
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
2022-12-27 John Ralls <jralls@ceridwen.us>
2020-01-11 giansalvo <pioggia3+github@gmail.com>
* mac/gramps.modules: mac: Patch bsddb to use berkeleydb instead of
bsddb3 module.
* gramps/gen/filters/rules/person/_isdefaultperson.py,
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'
2022-12-27 John Ralls <jralls@ceridwen.us>
2020-07-07 Leonhaeuser <mirko@leonhaeuser.de>
* mac/gramps.modules, mac/patches/berkeleydb-4.8-mutex.patch: Mac
build: Patch berkeleydb configure to work on Apple Silicon.
* po/de.po: Germen fixed translation error of Media:
2022-12-26 John Ralls <jralls@ceridwen.us>
2020-07-04 Leonhaeuser <mirko@leonhaeuser.de>
* mac/gramps.modules: [mac] Update Exiv2 download URL, moved to
github.
* po/de.po: Fix typo
2022-12-24 John Ralls <jralls@ceridwen.us>
2020-07-01 Leonhaeuser <mirko@leonhaeuser.de>
* mac/Info.plist, mac/gramps.bundle, mac/gramps.modules: Repackage
Gramps 5.1.5 with Gtk updates fixing use on macOS 13 Ventura.
* po/de.po: update German translation
2022-03-08 Nick Hall <nick-h@gramps-project.org>
2020-02-16 Nick Hall <nick-h@gramps-project.org>
* gramps/plugins/lib/librecords.py: Fix spouse's name and underlined
call names in records Fixes #12391
* gramps/gui/editors/editeventref.py: Use event attribute types in
the event reference editor In the event reference editor, custom event attribute types should
be used rather than the default person attribute types. Fixes #11576.
2022-03-16 Nick Hall <nick-h@gramps-project.org>
2020-04-23 SNoiraud <serge.noiraud@laposte.net>
* .github/workflows/gramps-ci.yml: Fix package installation failures
in CI
* gramps/gui/configure.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/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
2019-12-09 Sam Manzi <manzi.sam@gmail.com>
2020-05-07 prculley <paulr2787@gmail.com>
* gramps/gen/utils/grampslocale.py: Update INCOMPLETE_TRANSLATIONS * Remove: he * Add: zh_HK, zh_TW
* gramps/plugins/tool/verify.py: Fix Verify tool bug caused by bad
change in GObject introspection Fixes: #11708
2022-02-12 Ross Gammon <rossgammon@debian.org>
2020-06-22 pehlm <par.ekholm@pekholm.org>
* debian/changelog, debian/copyright,
debian/patches/fix-probably_alive_test.patch, debian/patches/series:
Update Debian folder after 5.1.5 release
* po/sv.po: A little adjustment to Swedish translation
2022-02-05 John Ralls <jralls@ceridwen.us>
2020-06-21 pehlm <par.ekholm@pekholm.org>
* mac/Info.plist, mac/gramps.modules: Package Gramps 5.1.5 for
macOS.
* po/sv.po: Updates to Swedish translation
2022-02-05 Nick Hall <nick-h@gramps-project.org>
2020-06-20 Nick Hall <nick-h@gramps-project.org>
* Bump to 5.1.6
* gramps/gen/utils/grampslocale.py: Remove Japanese from the
incomplete translations Japanese now has a coverage of 83.2% which is above the 70%
threshold.
2020-06-20 Megumi Sakata <megumi.sakata.k@gmail.com>
* po/ja.po: Update Japanese translation
2020-06-07 Serge Noiraud <Serge.Noiraud@laposte.net>
* gramps/plugins/webreport/person.py,
gramps/plugins/webreport/place.py: Navweb: incorrect link type for
osm css files (#1071) Fixes #011787
2020-06-07 prculley <paulr2787@gmail.com>
* data/tests/imp_sample.gramps: Fix import test for change cause by
commit a2c66417 which was Fix GEDCOM import for bad source title
when sources precede references.
2020-06-07 prculley <paulr2787@gmail.com>
* : commit e614a79cef213f57552ceb566eb2d294c9435231 Author: vantu5z
<vantu5z@mail.ru> Date: Tue Apr 28 15:23:25 2020 +0300
2020-03-16 prculley <paulr2787@gmail.com>
* gramps/gen/plug/menu/_enumeratedlist.py: Fix some reports for CLI
where warning message about Value not found Fixes #11621
2020-03-16 prculley <paulr2787@gmail.com>
* gramps/cli/plug/__init__.py: Fix Genealogy Tree reports for crash
in CLI Fixes #11621
2020-04-10 prculley <paulr2787@gmail.com>
* gramps/gui/views/treemodels/treebasemodel.py: Add uistate to tree
views filter initialization Fixes #11657
2020-04-04 prculley <paulr2787@gmail.com>
* gramps/plugins/lib/libgedcom.py: Fix GEDCOM import for bad source
title when sources precede references. Fixes #11610
2020-03-31 prculley <paulr2787@gmail.com>
* gramps/plugins/tool/removeunused.py: Fix RemoveUnused tool for
crash caused by Gtk introspection bug Fixes #11634
2020-03-30 prculley <paulr2787@gmail.com>
* gramps/gen/plug/_manager.py, gramps/gen/plug/_pluginreg.py,
gramps/gui/pluginmanager.py,
gramps/plugins/lib/maps/messagelayer.py: Fix some Python syntax
errors that appear in v3.8.x Fixes #11641
2020-03-26 SNoiraud <serge.noiraud@laposte.net>
* gramps/gui/editors/displaytabs/eventrefmodel.py,
gramps/plugins/gramplet/events.py: Age: test if the death is the
same day as birth
2020-03-25 SNoiraud <serge.noiraud@laposte.net>
* gramps/gui/editors/displaytabs/eventrefmodel.py,
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>
* gramps/gui/viewmanager.py: Fix Dashboard Gramplets to update
during db close when not shown Fixes #11632
2020-03-14 prculley <paulr2787@gmail.com>
* gramps/grampsapp.py: Fix Windows GUI mode startup for crash with
some languages Fixes: #11612. #11490, #11518, #9179, #9201, #9266
2020-03-07 prculley <paulr2787@gmail.com>
* gramps/gen/db/generic.py, gramps/plugins/db/dbapi/dbapi.py: Fix
dbapi to support "Abandon Changes & Quit" feature Fixes #11599
2020-02-08 prculley <paulr2787@gmail.com>
* gramps/gen/lib/grampstype.py: Fix GrampsType for comparison bug
with empty string as one value Fixes #11563
2020-05-07 prculley <paulr2787@gmail.com>
* gramps/plugins/tool/verify.py: Fix Verify tool bug caused by bad
change in GObject introspection Fixes: #11708
2020-04-24 niememat <niememat@gmail.com>
* po/fi.po: Fix translation in Finnish
2020-04-18 Joan Creus <joan.creusandreu@gmail.com>
* po/ca.po: Updating Catalan translation
2020-04-18 Joan Creus <joan.creusandreu@gmail.com>
* po/ca.po: Updating Catalan translation
2020-01-20 prculley <paulr2787@gmail.com>
* gramps/gen/datehandler/__init__.py: Fix Date Display so that it
uses LC_TIME if defined Fixes #11230
2020-01-12 prculley <paulr2787@gmail.com>
* gramps/gen/lib/styledtext.py,
gramps/gen/lib/test/styledtext_test.py: Fix StyledText so serialize
will match for style list order changes Fixes #11529
2020-01-08 prculley <paulr2787@gmail.com>
* gramps/gui/managedwindow.py: Try to fix exceptions on
ManagedWindow close Issues #10252, #10642, #10821, #11163, #11440, #11476, #11482,
#11508
2020-04-08 John Ralls <jralls@ceridwen.us>
* : Merge John Ralls's 'bug11639' into maintenance/gramps51
2020-04-04 Serge Noiraud <Serge.Noiraud@laposte.net>
* gramps/plugins/tool/verify.py: Same date of birth and death gives
an error. (#1011) Fixes #011553
2020-04-04 Serge Noiraud <Serge.Noiraud@laposte.net>
* gramps/plugins/lib/maps/osmgps.py: Geography: add a popup for a
bad tiles path (#1025)
2020-04-04 Serge Noiraud <Serge.Noiraud@laposte.net>
* gramps/plugins/webreport/narrativeweb.py: Narweb: image size limit
doesn't match tooltip (#1004) Fixes #011536
2020-04-01 John Ralls <jralls@ceridwen.us>
* gramps/plugins/db/dbapi/sqlite.py: Protect SQLite3 locale from
old-style Unicode locale characters. PySQLite3 requires that collation names have only ascii
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>
* po/ru.po: update Russian translation
2020-03-25 Translator5 <Translator5@users.noreply.github.com>
* po/ru.po: [Language: Russian] Maintenance/gramps51 (#1027) * some Russian translations updates Новый перевод для неких случаев, но
улучшающие понимание и выглядит
более уместно. Также применены
русские переводы слов, которые
использовали до того англицизмы
2020-03-03 Joan Creus <joan.creusandreu@gmail.com>
* po/ca.po: Updating Catalan translation
2020-02-29 Joan Creus <joan.creusandreu@gmail.com>
* po/ca.po: Updating Catalan translation
2020-02-25 Bernard Banko <beernarrd@gmail.com>
* po/sl.po: V&O changed to PZV to avoid ampersand
2020-02-07 pehlm <par.ekholm@pekholm.org>
* po/sv.po: Minor update to Swedish translation
2020-01-07 prculley <paulr2787@gmail.com>
* data/tests/exp_sample_ged.ged,
gramps/plugins/export/exportgedcom.py: Fix GEDCOM export of
estimated/calculated dates with modifers Fixes #11513
2020-01-11 Ross Gammon <rossgammon@mail.dk>
* debian/changelog: New debian release - update changelog
2020-01-31 vantu5z <vantu5z@mail.ru>
* po/ru.po: update Russian translation
2020-01-26 Bernard Banko <beernarrd@gmail.com>
* po/sl.po: Slovenian translation update
2020-01-23 prculley <paulr2787@gmail.com>
* po/ru.po: Fix typo in Russian translation
2020-01-21 système <romjerome@users.noreply.github.com>
* po/fr.po: typos in french translation #11534 #10534
2020-01-21 Fedik <getthesite@gmail.com>
* po/uk.po: Ukrainian translation update
2020-01-11 John Ralls <jralls@ceridwen.us>
* mac/Info.plist, mac/gramps.modules: Mac release of 5.1.2.
2020-01-10 prculley <paulr2787@gmail.com>
* gramps/gen/const.py, gramps/gui/grampsgui.py, gramps/version.py:
Bump to v5.1.3
+1 -153
View File
@@ -1,155 +1,3 @@
2023-06-29
Version 5.1.6
* Update copyright date.
* Narrative web: problem with small pictures. Fixes #12884.
* Implement the "<CTRL>J" for the family view. Fixes #12882.
* Avoid application crash on invalid user input. If the user inputs an invalid
date this change keeps the application from crashing. The invalid date
information is reported to the user in the log. Fixes #12658.
* Fix export where private citations are excluded.
* Fix Event Compare tool to display enclosed places properly.
* Check that view exists before calling post_create method. Avoids 'NoneType'
object has no attribute 'post_create' error. Fixes #12638.
* Fix a wrong operator bug in the web calendar report.
* Revert "Enclose tree report image path and file name in braces" due to reports
of regression where processing of the generated TeX file fails due to bad path
specificiation for image files. Fixes #12437 and #12697.
* Geography View: Fix number of arguments in add_bookmark method. Fixes #12718.
* Use date-specific place in report substitution variables. Fix place title in
graphical reports which have user-defined display formats to use date-specific
alternate name. This impacts the Ancestor Tree, Descendant Tree, and Family
Descendant Tree reports. Fixes #12763.
* Try to import berkeleydb if bsddb3 isn't found. berkelydb is usable for
python >= 3.6 and required for python >= 3.10.
See https://www.jcea.es/programacion/pybsddb.htm.
* HtmlDoc: Create a unique filename for cropped images.
* Fix corrupted NOTE tag in Gedcom export. Remove Python2 code obsoleted by
Python3, which was corrupting Gedcom export of Gramps Notes text that includes
multi-byte utf-8 characters. Fixes #12709.
* Fix IndexError that sometimes occurs when changing view This occurs when
restarting Gramps. Fixes #12636, #12304, #12429, #12623, #12695.
* Fix crash when invalid note link. Fixes #12854.
* Fix tags with color names in pedigree views. Fixes #12866.
* Crash when invalid event date.
* ListModel: Fix multiple level paths when we use checkboxes in columns.
The path was previously converted to int.
* Update Gramps CI workflow to run on Ubuntu 20.04. Ubuntu 18.04 became fully
unsupported on 1 Dec 2022.
* Fix package installation failures in CI.
* Fix spouse's name and underlined call names in records. Fixes #12391.
* Update INCOMPLETE_TRANSLATIONS list. Remove: he, Add: zh_HK, zh_TW.
* Update Debian folder after 5.1.5 release.
* Mac:
* Patch bsddb to use berkeleydb instead of bsddb3 module.
* Patch berkeleydb configure to work on Apple Silicon.
* Update Exiv2 download URL, moved to github.
* Repackage Gramps 5.1.5 with Gtk updates fixing use on macOS 13 Ventura.
2022-02-05
Version 5.1.5
* Update translations: de, pl, sv, zh_CN.
* Remove Travis CI configuration.
* Fix badges in README file.
* Update copyright date.
* Strange behavior for the scrollbar in the bottombar. Fixes #12438.
* Fix place object element order in DTD and RNG schemas. Element placeobj
content does not follow the DTD and RNG, expecting (ptitle? , pname+).
Fixes #12500.
* Solve InterpolationSyntaxError if "%" in a string. The grampletpane module
saves data in a config file for all the gramplets added in the dashboard. The
python configparser module doesn't like if we have a "%" character in a string.
Fixes #12423.
* '<' not supported between 2 instances of IndexMark. Fixes #12467.
* Remove debug statements in unit tests.
* Fix negative Span when dates are not Gregorian. Fixes #12525.
* Incorrect grouping if no ma/patronymic surname.
* Group As override is ignored for ma/patronymic surnames. Fixes #12395.
See: https://gramps.discourse.group/t/patronymic-and-matronymic-name/1684/5
* Add comments for the lat-lon field of editplace.
* Place editor, lat and long text are swapped. Fixes #12374.
* Fix Statusbar progress being shown before use. Fixes #12373.
* Fix exception when removing a group name in Sqlite db when group name is
already missing. Fixes #12367.
* Fix error when trying to close name editor during long name group mapping
view rebuild. Fixes #12328.
* OsmGpsMap-CRITICAL: Map source setup called twice Fixes #12352.
* Fix probably alive function unit test.
* Use GitHub Actions to run continuous integration checks.
* Mac:
* Update Exiv2, PYExiv2, and json-glib.
* Repackage Gramps.app to work with macOS 12.
* Add entitlements path to bundle-file so Gramps.app is signed with it.
* Add python-fontconfig to the macOS build. Needed to enable using
genealogical symbols.
* Inlude fontconfig's etc/fonts in macOS app bundle. Graphviz now uses
fontconfig to find its fonts. Fixes #12370.
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
Version 5.1.3
* Update ca, de, fi, fr, ja, pl, ru, sl, sv, uk, zh_CN translation
@@ -246,7 +94,7 @@ Version 5.1.2
* [Tree doc Tex] fix typo on custom size
* Fix duplicated "døde døde" Norwegion Translation for libnarrate
* 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 place editor lat/long entry for RTL languages
* Fix GEDCOM export to avoid translated GrampsType strings
+3 -6
View File
@@ -1,8 +1,5 @@
The Gramps Project ( https://gramps-project.org )
The Gramps Project ( https://gramps-project.org ) [![Build Status](https://travis-ci.org/gramps-project/gramps.svg?branch=master)](https://travis-ci.org/gramps-project/gramps)[![codecov.io](https://codecov.io/github/gramps-project/gramps/coverage.svg?branch=master)](https://codecov.io/github/gramps-project/gramps?branch=master)
===================
[![GitHub CI](https://github.com/gramps-project/gramps/actions/workflows/gramps-ci.yml/badge.svg?event=push&branch=maintenance/gramps51)](https://github.com/gramps-project/gramps/actions/workflows/gramps-ci.yml?query=branch%3Amaintenance%2Fgramps51)
[![codecov.io](https://codecov.io/github/gramps-project/gramps/coverage.svg?branch=maintenance/gramps51)](https://app.codecov.io/gh/gramps-project/gramps/branch/maintenance%2Fgramps51)
We strive to produce a genealogy program that is both intuitive for hobbyists and feature-complete for professional genealogists.
Please read the **COPYING** file first.
@@ -66,7 +63,7 @@ The following packages are **STRONGLY RECOMMENDED** to be installed:
sorting is done through built-in libraries. PyICU is
fairly widely available through the package managers of
distributions. See http://pyicu.osafoundation.org/
(These are Python bindings for the ICU package.
(These are Python bindings for the ICU package.
https://pypi.python.org/pypi/PyICU/)
* **Ghostscript**
@@ -75,7 +72,7 @@ The following packages are **STRONGLY RECOMMENDED** to be installed:
The following packages are optional:
------------------------------------
* **gtkspell**
* **gtkspell**
Enable spell checking in the notes. Gtkspell depends on
enchant. A version of gtkspell with gobject introspection
+1 -1
View File
@@ -251,7 +251,7 @@ PLACES
<!ELEMENT places (placeobj)*>
<!ELEMENT placeobj (ptitle?, code?, pname+, coord?, placeref*, location*,
<!ELEMENT placeobj (ptitle?, pname+, code?, coord?, placeref*, location*,
objref*, url*, noteref*, citationref*, tagref*)>
<!ATTLIST placeobj
id CDATA #IMPLIED
+1 -1
View File
@@ -453,10 +453,10 @@
<ref name="primary-object"/>
<attribute name="type"><text/></attribute>
<optional><element name="ptitle"><text/></element></optional>
<optional><element name="code"><text/></element></optional>
<oneOrMore><element name="pname">
<ref name="placename-content"/>
</element></oneOrMore>
<optional><element name="code"><text/></element></optional>
<optional><element name="coord">
<attribute name="long"><text/></attribute>
<attribute name="lat"><text/></attribute>
-17
View File
@@ -1,20 +1,3 @@
gramps (5.1.5-1) unstable; urgency=medium
* New release
* Update copyright file
* Drop patch, incorporated upstream
-- Ross Gammon <rossgammon@debian.org> Sat, 12 Feb 2022 17:01:21 +0100
gramps (5.1.4-1) unstable; urgency=medium
* New release
* Add new copyrights
* Update watch file
* Patch probably alive test to fix FTBFS
-- Ross Gammon <rossgammon@debian.org> Sun, 15 Aug 2021 18:31:56 +0200
gramps (5.1.3-1) focal; urgency=medium
* New release
+2 -4
View File
@@ -3,7 +3,7 @@ Upstream-Name: Gramps
Source: https://gramps-project.org
Files: *
Copyright: 2000-2007, Alex Roitman
Copyright: 2000-2007, 2020 Alex Roitman
2000-2002, Bruce J. DeGrasse
2000-2008, Donald N. Allingham
2000-2007, Martin Hawlisch
@@ -46,7 +46,7 @@ Copyright: 2000-2007, Alex Roitman
2009, Florian Heinle
2009, Gerald W. Britton
2009, Igal Shapira
2009-2022, Nick Hall
2009-2018, Nick Hall
2009, Pander Musubi
2009, Robert Ham
2009, Swoon on bug tracker
@@ -92,8 +92,6 @@ Copyright: 2000-2007, Alex Roitman
2018, Robin van der Vliet
2018, Theo van Rijn
2019, Matthias Kemmer
2020, Jan Sparreboom
2021, Mirko Leonhaeuser
License: GPL-2+
Files: debian/*
+5 -3
View File
@@ -1,6 +1,8 @@
version=4
version=3
opts=\
filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/gramps-project-$1\.tar\.gz/,\
dversionmangle=s/(\~|\+)(debian|dfsg|ds|deb)(\.\d+)?$//,\
filenamemangle=s/.+\/v?(\d\S*)\.tar\.gz/$1\.tar\.gz/,\
repacksuffix=~dfsg \
https://github.com/gramps-project/gramps/tags \
.*/v?(\d\S+)\.tar\.gz
.*/archive/v?([\d\.]+).tar.gz
+1 -1
View File
@@ -57,7 +57,7 @@ master_doc = 'index'
# General information about the project.
project = 'Gramps'
copyright = '2001-2023, The Gramps Project'
copyright = '2001-2019, The Gramps Project'
author = 'Donald N. Allingham'
# The version info for the project you're documenting, acts as replacement for
+2 -2
View File
@@ -145,7 +145,7 @@ sys.path.insert(0, ROOT_DIR)
git_revision = get_git_revision(ROOT_DIR).replace('\n', '')
if sys.platform == 'win32' and git_revision == "":
git_revision = get_git_revision(os.path.split(ROOT_DIR)[1])
#VERSION += git_revision
VERSION += git_revision
#VERSION += "-1"
#
@@ -225,7 +225,7 @@ GTK_GETTEXT_DOMAIN = 'gtk30'
#
#-------------------------------------------------------------------------
COPYRIGHT_MSG = "© 2001-2006 Donald N. Allingham\n" \
"© 2007-2023 The Gramps Developers"
"© 2007-2020 The Gramps Developers"
COMMENTS = _("Gramps\n (Genealogical Research and Analysis "
"Management Programming System)\n"
"is a personal genealogy program.")
+25 -27
View File
@@ -83,37 +83,35 @@ class DateParserNL(DateParser):
month_to_int["xbris"] = 12
modifier_to_int = {
'voor' : Date.MOD_BEFORE,
'na' : Date.MOD_AFTER,
'ca.' : Date.MOD_ABOUT,
'circa' : Date.MOD_ABOUT,
'om' : Date.MOD_ABOUT,
'omstreeks' : Date.MOD_ABOUT,
'ongeveer' : Date.MOD_ABOUT,
'rond' : Date.MOD_ABOUT,
'tegen' : Date.MOD_ABOUT,
'voor' : Date.MOD_BEFORE,
'na' : Date.MOD_AFTER,
'tegen' : Date.MOD_ABOUT,
'om' : Date.MOD_ABOUT,
'rond' : Date.MOD_ABOUT,
'circa' : Date.MOD_ABOUT,
'ca.' : Date.MOD_ABOUT,
}
calendar_to_int = {
'gregoriaans' : Date.CAL_GREGORIAN,
'greg.' : Date.CAL_GREGORIAN,
'juliaans' : Date.CAL_JULIAN,
'jul.' : Date.CAL_JULIAN,
'hebreeuws' : Date.CAL_HEBREW,
'hebr.' : Date.CAL_HEBREW,
'islamitisch' : Date.CAL_ISLAMIC,
'isl.' : Date.CAL_ISLAMIC,
'frans republiekeins' : Date.CAL_FRENCH,
'fran.' : Date.CAL_FRENCH,
'persisch' : Date.CAL_PERSIAN,
'zweeds' : Date.CAL_SWEDISH,
'z' : Date.CAL_SWEDISH,
'gregoriaans' : Date.CAL_GREGORIAN,
'greg.' : Date.CAL_GREGORIAN,
'juliaans' : Date.CAL_JULIAN,
'jul.' : Date.CAL_JULIAN,
'hebreeuws' : Date.CAL_HEBREW,
'hebr.' : Date.CAL_HEBREW,
'islamitisch' : Date.CAL_ISLAMIC,
'isl.' : Date.CAL_ISLAMIC,
'franse republiek': Date.CAL_FRENCH,
'fran.' : Date.CAL_FRENCH,
'persisch' : Date.CAL_PERSIAN,
'zweeds' : Date.CAL_SWEDISH,
'z' : Date.CAL_SWEDISH,
}
quality_to_int = {
'geschat' : Date.QUAL_ESTIMATED,
'geschat' : Date.QUAL_ESTIMATED,
'gesch.' : Date.QUAL_ESTIMATED,
'berekend' : Date.QUAL_CALCULATED,
'berekend' : Date.QUAL_CALCULATED,
'ber.' : Date.QUAL_CALCULATED,
}
@@ -149,17 +147,17 @@ class DateDisplayNL(DateDisplay):
calendar = (
"", "juliaans", "hebreeuws",
"frans republikeins", "persisch", "islamitisch",
"franse republiek", "persisch", "islamitisch",
"zweeds" )
_mod_str = ("", "voor ", "na ", "omstreeks ", "", "", "")
_mod_str = ("", "voor ", "na ", "rond ", "", "", "")
_qual_str = ("", "geschat ", "berekend ")
_bce_str = "%s v. Chr."
formats = (
"JJJJ-MM-DD (ISO)", "Numeriek DD/MM/JJJJ", "Maand Dag, Jaar",
"JJJJ-MM-DD (ISO)", "Numerisch DD/MM/JJ", "Maand Dag, Jaar",
"Mnd. Dag Jaar", "Dag Maand Jaar", "Dag Mnd. Jaar"
)
# this definition must agree with its "_display_gregorian" method
+2 -21
View File
@@ -999,8 +999,6 @@ class NameDisplay:
1. if group name is defined, use that
2. if group name is defined for the primary surname, use that
3. use primary surname itself otherwise
4. if no primary surname, do we have a ma/patronymic surname ?
in this case, group name will be the ma/patronymic name.
:param pn: raw unserialized data of name
:type pn: tuple
@@ -1009,25 +1007,8 @@ class NameDisplay:
"""
if pn[_GROUP]:
return pn[_GROUP]
name = pn[_GROUP]
if not name:
# if we have no primary surname, perhaps we have a
# patronymic/matronynic name ?
srnme = pn[_ORIGINPATRO]
surname = []
for _surname in srnme:
if (_surname[_TYPE_IN_LIST][0] == _ORIGINPATRO
or _surname[_TYPE_IN_LIST][0] == _ORIGINMATRO):
# Yes, we have one.
surname = [_surname]
# name1 is the ma/patronymic name.
name1 = _raw_patro_surname_only(surname)
if name1 and len(srnme) == 1:
name = db.get_name_group_mapping(name1)
if not name:
name = db.get_name_group_mapping(_raw_primary_surname_only(
pn[_SURNAME_LIST]))
return name
return db.get_name_group_mapping(_raw_primary_surname_only(
pn[_SURNAME_LIST]))
def _make_fn(self, format_str, d, args):
"""
@@ -51,7 +51,6 @@ editor_rule_list = [
MediaPrivate,
MatchesFilter,
MatchesSourceConfidence,
HasMedia,
HasAttribute,
ChangedSince,
HasTag,
@@ -98,10 +98,10 @@ class BaseTest(unittest.TestCase):
filter_.set_invert(invert)
stime = perf_counter()
results = filter_.apply(self.db)
# if __debug__:
# frame = inspect.currentframe()
# rulename = frame.f_back.f_code.co_name
# print("%s: %.2f\n" % (rulename, perf_counter() - stime))
if __debug__:
frame = inspect.currentframe()
rulename = frame.f_back.f_code.co_name
print("%s: %.2f\n" % (rulename, perf_counter() - stime))
return set(results)
def test_Complex_1(self):
@@ -347,7 +347,7 @@ class BaseTest(unittest.TestCase):
"""
rule = ProbablyAlive(['1900'])
res = self.filter_with_rule(rule)
self.assertEqual(len(res), 733)
self.assertEqual(len(res), 766)
def test_RegExpName(self):
"""
+4 -4
View File
@@ -77,14 +77,14 @@ class Span:
self.precision = 2
self.negative = False
if self.valid:
if self.date1.sortval < self.date2.sortval:
self.date1 = date2
self.date2 = date1
self.negative = True
if self.date1.calendar != Date.CAL_GREGORIAN:
self.date1 = self.date1.to_calendar("gregorian")
if self.date2.calendar != Date.CAL_GREGORIAN:
self.date2 = self.date2.to_calendar("gregorian")
if self.date1.sortval < self.date2.sortval:
self.date1 = date2
self.date2 = date1
self.negative = True
if self.date1.get_modifier() == Date.MOD_NONE:
if self.date2.get_modifier() == Date.MOD_NONE:
val = self.date1.sortval - self.date2.sortval
+1 -31
View File
@@ -38,7 +38,7 @@ from ...datehandler import get_date_formats, set_format
from ...datehandler import parser as _dp
from ...datehandler import displayer as _dd
from ...datehandler._datedisplay import DateDisplayEn
from ...lib.date import Date, DateError, Today, calendar_has_fixed_newyear, Span
from ...lib.date import Date, DateError, Today, calendar_has_fixed_newyear
date_tests = {}
@@ -432,36 +432,6 @@ class ArithmeticDateTest(BaseDateTest):
self.assertEqual(val1, val2,
"'%s' should be '%s' but was '%s'" % (exp1, val2, val1))
#-------------------------------------------------------------------------
#
# SpanTest
#
#-------------------------------------------------------------------------
class SpanTest(BaseDateTest):
"""
Test spans.
"""
tests = [((2000, 1, 31), (2000, 1, 1), 30),
((1799, 11, 19), (8, 2, 18, Date.CAL_FRENCH), 10),
((8, 2, 18, Date.CAL_FRENCH), (1799, 11, 4), 5),
((8, 2, 18, Date.CAL_FRENCH), (3, 2, 9, Date.CAL_FRENCH), 1836)]
def test_evaluate(self):
for value1, value2, duration in self.tests:
date1 = self._get_date(value1)
date2 = self._get_date(value2)
span1 = Span(date1, date2)
self.assertEqual(int(span1), duration)
span2 = Span(date2, date1)
self.assertEqual(int(span2), -duration)
def _get_date(self, value):
date = Date()
if len(value) == 4:
date.set_calendar(value[3])
date.set_yr_mon_day(value[0], value[1], value[2])
return date
#-------------------------------------------------------------------------
#
# SwedishDateTest
+9 -14
View File
@@ -31,8 +31,8 @@ Provide merge capabilities for persons.
#-------------------------------------------------------------------------
from ..db import DbTxn
from ..const import GRAMPS_LOCALE as glocale
from ..errors import MergeError
_ = glocale.translation.sgettext
from ..errors import MergeError
#-------------------------------------------------------------------------
#
@@ -49,12 +49,11 @@ class MergePersonQuery:
self.titanic = titanic
if self.check_for_spouse(self.phoenix, self.titanic):
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):
raise MergeError(_("A parent and child cannot be merged. To merge "
"these people, you must first break the relatio"
"nship between them."))
"these people, you must first break the relationship between "
"them."))
def check_for_spouse(self, person1, person2):
"""Return if person1 and person2 are spouses of eachother."""
@@ -81,12 +80,12 @@ class MergePersonQuery:
main_family.merge(family)
for childref in family.get_child_ref_list():
child = self.database.get_person_from_handle(
childref.get_reference_handle())
childref.get_reference_handle())
if main_family_handle in child.parent_family_list:
child.remove_handle_references('Family', [family_handle])
else:
child.replace_handle_reference('Family', family_handle,
main_family_handle)
main_family_handle)
self.database.commit_person(child, trans)
if self.phoenix:
self.phoenix.remove_family_handle(family_handle)
@@ -144,8 +143,7 @@ class MergePersonQuery:
for family_handle in self.phoenix.get_parent_family_handle_list():
family = self.database.get_family_from_handle(family_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)
family_merge_guard = False
@@ -184,10 +182,7 @@ class MergePersonQuery:
self.database.commit_family(family, trans)
parent_list.append(parents)
hp_hdl = self.database.get_default_handle()
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())
if self.database.get_default_handle() == old_handle:
self.database.set_default_person_handle(None)
self.database.remove_person(old_handle, trans)
return family_merge_ok
+2 -1
View File
@@ -460,7 +460,8 @@ class TreeDocBase(BaseDoc, TreeDoc):
if os.path.isfile(path):
if win():
path = path.replace('\\', '/')
self.write(level+1, 'image = {%s},\n' % path)
self.write(level+1, 'image = {{%s}%s},\n' %
os.path.splitext(path))
break # first image only
self.write(level, '}\n')
+1 -1
View File
@@ -346,7 +346,7 @@ class ReferencedBySelectionProxyDb(ProxyDbBase):
for tag in note.text.get_tags():
if tag.name == 'Link':
if tag.value.startswith("gramps://"):
obj_class, prop, value = tag.value[9:].split("/", 2)
obj_class, prop, value = tag.value[9:].split("/")
if obj_class == "Media": # bug6493
obj_class = "Media"
if prop == "handle":
-2
View File
@@ -142,8 +142,6 @@ class ProbablyAlive:
# person died more than MAX after current year
if death_date.is_valid():
birth_date = death_date.copy_offset_ymd(year=-self.MAX_AGE_PROB_ALIVE)
else:
birth_date = death_date
explain = _("death date")
if not death_date and birth_date:
+1 -1
View File
@@ -49,7 +49,7 @@ class CSVTab(TabbedDoc):
else:
self.filename = filename
self.f = open(self.filename, "w", newline='',
self.f = open(self.filename, "w",
encoding='utf_8_sig' if win() else 'utf_8')
self.writer = csv.writer(self.f)
+1 -3
View File
@@ -117,7 +117,7 @@ _LOCALE_NAMES = {
_RTL_LOCALES = ('ar', 'he')
# locales with less than 70% currently translated
INCOMPLETE_TRANSLATIONS = ('ar', 'bg', 'sq', 'ta', 'tr', 'zh_HK', 'zh_TW')
INCOMPLETE_TRANSLATIONS = ('ar', 'bg', 'he', 'sq', 'ta', 'tr')
def _check_mswin_locale(locale):
msloc = None
@@ -525,8 +525,6 @@ class GrampsLocale:
# with locale instead of gettext. Win32 doesn't support bindtextdomain.
if self.localedir:
if not sys.platform == 'win32':
# bug12278, _build_popup_ui() under linux and macOS
locale.textdomain(self.localedomain)
locale.bindtextdomain(self.localedomain, self.localedir)
else:
self._win_bindtextdomain(self.localedomain.encode('utf-8'),
+11 -35
View File
@@ -127,32 +127,15 @@ if win():
elif not os.path.isdir(HOME_DIR):
os.makedirs(HOME_DIR)
sys.stdout = sys.stderr = open(logfile, "w", encoding='utf-8')
# macOS sets stderr to /dev/null when running without a terminal,
# e.g. if Gramps.app is lauched by double-clicking on it in
# finder. Write to a file instead.
if mac() and not sys.stdin.isatty():
from tempfile import gettempdir
stderrh = logging.StreamHandler(sys.stderr)
stderrh.setFormatter(form)
stderrh.setLevel(logging.DEBUG)
log_file_name = 'gramps-' + str(os.getpid()) + '.log'
log_file_path = os.path.join(gettempdir(), log_file_name)
log_file_handler = logging.FileHandler(log_file_path, mode='a',
encoding='utf-8')
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)
# 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):
@@ -325,16 +308,9 @@ def show_settings():
.replace('(', '').replace(')', '')
bsddb_location_str = bsddb.__file__
except:
try:
import berkeleydb as bsddb
bsddb_str = bsddb.__version__
bsddb_db_str = str(bsddb.db.version()).replace(', ', '.')\
.replace('(', '').replace(')', '')
bsddb_location_str = bsddb.__file__
except:
bsddb_str = 'not found'
bsddb_db_str = 'not found'
bsddb_location_str = 'not found'
bsddb_str = 'not found'
bsddb_db_str = 'not found'
bsddb_location_str = 'not found'
try:
import sqlite3
+1 -5
View File
@@ -68,11 +68,7 @@ try:
import bsddb3 as bsddb ## ok, in try/except
BSDDB_STR = ellipses(str(bsddb.__version__) + " " + str(bsddb.db.version()))
except:
try:
import berkeleydb as bsddb
BSDDB_STR = ellipses(str(bsddb.__version__) + " " + str(bsddb.db.version()))
except:
BSDDB_STR = 'not found'
BSDDB_STR = 'not found'
try:
import sqlite3
+9
View File
@@ -39,6 +39,9 @@ from ..glade import Glade
from gramps.gen.simple import SimpleAccess
from gramps.gen.const import URL_MANUAL_SECT2
import logging
_LOG = logging.getLogger("editlink")
#-------------------------------------------------------------------------
#
# Constants
@@ -154,6 +157,12 @@ class EditLink(ManagedWindow):
def _on_new_callback(self, obj):
object_class = obj.__class__.__name__
# workaround for bug12260
try:
test = obj.handle
except AttributeError:
_LOG.warn(str(object_class))
return
self.selected.set_text(self.display_link(
object_class, "handle", obj.handle))
self.url_link.set_text("gramps://%s/%s/%s" %
+3 -9
View File
@@ -366,7 +366,6 @@ class EditName(EditSecondary):
5/ local set, not global set --> set (change local)
6/ local set, global set --> set (set to global if possible)
"""
ngm = False # name group mapping setting
closeit = True
surname = self.obj.get_primary_surname().get_surname()
group_as= self.obj.get_group_as()
@@ -389,7 +388,7 @@ class EditName(EditSecondary):
val = q.run()
if val:
#delete the grouping link on database
ngm = None # delay setting until dialog closes
self.db.set_name_group_mapping(surname, None)
self.obj.set_group_as("")
else :
closeit = False
@@ -422,9 +421,9 @@ class EditName(EditSecondary):
val = q.run()
if val:
if group_as == surname :
ngm = None # delay setting until dialog closes
self.db.set_name_group_mapping(surname, None)
else:
ngm = group_as # delay setting until dialog closes
self.db.set_name_group_mapping(surname, group_as)
self.obj.set_group_as("")
else:
if self.global_group_set :
@@ -456,15 +455,10 @@ class EditName(EditSecondary):
pass
if closeit:
db = self.db # close cleanup loses self.db, so save for later
if self.callback:
self.callback(self.obj)
self.callback = None
self.close()
# bug 12328 to avoid gui interaction during view rebuild, delay
# the rebuild until closeing this dialog
if ngm is not False:
db.set_name_group_mapping(surname, ngm)
def _cleanup_on_exit(self):
"""
+3 -34
View File
@@ -186,41 +186,10 @@ class EditPlace(EditPrimary):
self.db.readonly)
def set_latlongitude(self, value):
"""
This method is useful for directly copying the coordinates
of openstreetmap, googlemaps, and perhaps other if they
provide coordinates like it is define in conv_lat_lon
(see gramps/gen/utils/place.py)
To copy the coordinates:
- openstreetmap:
1 - choose the place where you want to save the coordinates.
2 - right click on this place
3 - select "show address"
4 - On the left side of the map, copy the coordinates of
"Result from internal"
5 - In the latlon field of the edit place window of gramps,
type <CTRL> V
- googlemap:
1 - choose the place where you want to save the coordinates.
2 - right click on this place
3 - select the coordinates at the top of the popup window.
They are automaticaly copied.
4 - In the latlon field of the edit place window of gramps,
type <CTRL> V
"""
try:
# Bug 12349, 12374
parts = value.split(', ')
if len(parts) == 2:
latitude = parts[0].strip().replace(',', '.')
longitude = parts[1].strip().replace(',', '.')
else:
latitude, longitude = value.split(',')
coma = value.index(', ')
longitude = value[coma+2:].strip().replace(',','.')
latitude = value[:coma].strip().replace(',','.')
self.longitude.set_text(longitude)
self.latitude.set_text(latitude)
self.top.get_object("lat_entry").validate(force=True)
+3 -8
View File
@@ -180,14 +180,9 @@ class EditPlaceRef(EditReference):
def set_latlongitude(self, value):
try:
# Bug 12349, 12374
parts = value.split(', ')
if len(parts) == 2:
latitude = parts[0].strip().replace(',', '.')
longitude = parts[1].strip().replace(',', '.')
else:
latitude, longitude = value.split(',')
coma = value.index(', ')
longitude = value[coma+2:].strip().replace(',','.')
latitude = value[:coma].strip().replace(',','.')
self.longitude.set_text(longitude)
self.latitude.set_text(latitude)
self.top.get_object("lat_entry").validate(force=True)
+2 -2
View File
@@ -233,7 +233,7 @@ class ListModel:
new_value = not self.model[path][col]
self.model[path][col] = new_value
if col in self.function:
self.function[col](path, new_value)
self.function[col](int(path), new_value)
def __edited_cb(self, cell, path, new_text, col):
"""
@@ -241,7 +241,7 @@ class ListModel:
"""
self.model[path][col] = new_text
if col in self.function:
self.function[col](path, new_text)
self.function[col](int(path), new_text)
def unselect(self):
"""
+1 -5
View File
@@ -37,11 +37,7 @@ try:
import bsddb3 as bsddb # ok, in try/except
BSDDB_STR = str(bsddb.__version__) + " " + str(bsddb.db.version())
except:
try:
import berkeleydb as bsddb
BSDDB_STR = str(bsddb.__version__) + " " + str(bsddb.db.version())
except:
BSDDB_STR = 'not found'
BSDDB_STR = 'not found'
try:
import sqlite3
-16
View File
@@ -549,26 +549,11 @@ def color_graph_box(alive=False, gender=Person.MALE):
# color functions. For hsv and hls values, use import colorsys !
def name_to_hex(value):
"""
Convert a named color to a 6 digit hexadecimal value to rgb.
"""
if value[:1] != "#":
# We have color names like "green", "orange", "yellow",...
# We need to convert them to hex format
Color = Gdk.RGBA()
Color.parse(value)
value = "#%02x%02x%02x" % (int(Color.red * 255),
int(Color.green * 255),
int(Color.blue * 255))
return value
def hex_to_rgb_float(value):
"""
Convert a 6 or 12 digit hexademical value to rgb. Returns tuple of floats
between 0 and 1.
"""
value = name_to_hex(value)
value = value.lstrip('#')
lenv = len(value)
return tuple(int(value[i:i+lenv//3], 16)/16.0**(lenv//3)
@@ -578,7 +563,6 @@ def hex_to_rgb(value):
"""
Convert a 6 or 12 digit hexadecimal value to rgb. Returns tuple of integers.
"""
value = name_to_hex(value)
value = value.lstrip('#')
lenv = len(value)
return tuple(int(value[i:i+lenv//3], 16) for i in range(0, lenv, lenv//3))
+9 -27
View File
@@ -56,7 +56,6 @@ LOG = logging.getLogger(".")
#-------------------------------------------------------------------------
from gi.repository import Gtk
from gi.repository import Gdk
from gi.repository import GLib
#-------------------------------------------------------------------------
#
@@ -291,13 +290,12 @@ class ViewManager(CLIManager):
self.hpane.add2(self.notebook)
toolbar = self.uimanager.get_widget('ToolBar')
toolbar.show_all()
self.statusbar = Statusbar()
self.statusbar.show()
vbox.pack_end(self.statusbar, False, True, 0)
vbox.pack_start(toolbar, False, True, 0)
vbox.pack_end(self.hpane, True, True, 0)
vbox.show()
vbox.show_all()
self.uistate = DisplayState(self.window, self.statusbar,
self.uimanager, self)
@@ -786,12 +784,7 @@ class ViewManager(CLIManager):
self.__create_page(page_def[0], page_def[1])
self.notebook.set_current_page(page_num)
try:
return self.pages[page_num]
except IndexError:
# The following is to avoid 'IndexError: list index out of range'
# Should solve bug 12636
return self.pages[0]
return self.pages[page_num]
def get_category(self, cat_name):
"""
@@ -842,8 +835,7 @@ class ViewManager(CLIManager):
hbox.add(Gtk.Label(label=pdata.name))
hbox.show_all()
page_num = self.notebook.append_page(page.get_display(), hbox)
if self.active_page:
self.active_page.post_create()
self.active_page.post_create()
if not self.file_loaded:
self.uimanager.set_actions_visible(self.actiongroup, False)
self.uimanager.set_actions_visible(self.readonlygroup, False)
@@ -886,28 +878,18 @@ class ViewManager(CLIManager):
"""
self.__disconnect_previous_page()
# The following is to avoid 'IndexError: list index out of range'
# Bugs: 12304, 12429, 12623, 12695
try:
self.active_page = self.pages[page_num]
except IndexError:
self.active_page = self.pages[0]
self.active_page = self.pages[page_num]
self.__connect_active_page(page_num)
self.active_page.set_active()
while Gtk.events_pending():
Gtk.main_iteration()
# 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
self.uimanager.update_menu()
GLib.idle_add(page_changer, self,
priority=GLib.PRIORITY_DEFAULT_IDLE - 10)
while Gtk.events_pending():
Gtk.main_iteration()
self.active_page.change_page()
def __delete_pages(self):
"""
+2 -2
View File
@@ -165,8 +165,8 @@ class PageView(DbGUIElement, metaclass=ABCMeta):
self.widget.show_all()
self.widget.set_name('view')
self.vpane.pack1(self.widget, resize=True, shrink=False)
self.vpane.pack2(self.bottombar, resize=False, shrink=False)
self.vpane.show()
self.vpane.pack2(self.bottombar, resize=False, shrink=True)
self.vpane.show_all()
self._config.register('vpane.slider-position', -1)
self.vpane.set_position(self._config.get('vpane.slider-position'))
@@ -160,8 +160,6 @@ class EventModel(FlatBaseModel):
date_str = get_date(event)
if date_str != "":
retval = escape(date_str)
else:
retval = ""
if not get_date_valid(event):
return INVALID_DATE_FORMAT % retval
else:
+4
View File
@@ -371,6 +371,10 @@ class GrampletBar(Gtk.Notebook):
"""
Add a tab to the notebook for the given gramplet.
"""
width = -1 # Allow tab width to adjust (smaller) to sidebar
height = min(int(self.uistate.screen_height() * 0.20), 400)
gramplet.set_size_request(width, height)
label = self.__create_tab_label(gramplet)
page_num = self.append_page(gramplet, label)
return page_num
-6
View File
@@ -1239,12 +1239,6 @@ class GrampletPane(Gtk.ScrolledWindow):
else:
cnt = 0
for item in base_opts["data"]:
# If we have a "%" in a string,
# escape it by writing "%%"
# to avoid InterpolationSyntaxError
# in python configparser module.
if isinstance(item, str):
item = item.replace("%", "%%")
fp.write("data[%d]=%s\n" % (cnt, item))
cnt += 1
else:
+2 -2
View File
@@ -396,7 +396,7 @@ class StyledTextEditor(Gtk.TextView):
simple_access = SimpleAccess(win_obj.dbstate.db)
url = link_tag.data
if url.startswith("gramps://"):
obj_class, prop, value = url[9:].split("/", 2)
obj_class, prop, value = url[9:].split("/")
display = simple_access.display(obj_class, prop, value) or url
return display + ((_("\nCommand-Click to follow link") if mac() else
_("\nCtrl-Click to follow link"))
@@ -809,7 +809,7 @@ class StyledTextEditor(Gtk.TextView):
win_obj = find_parent_with_attr(self, attr="dbstate")
if win_obj:
# Edit the object:
obj_class, prop, value = url[9:].split("/", 2)
obj_class, prop, value = url[9:].split("/")
from ..editors import EditObject
EditObject(win_obj.dbstate,
win_obj.uistate,
+1 -4
View File
@@ -218,10 +218,7 @@ class BSDDBTxn:
# test code
if __name__ == "__main__":
print("1")
try:
from bsddb3 import db, dbshelve
except:
from berkeleydb import db, dbshelve
from bsddb3 import db, dbshelve
print("2")
x = db.DBEnv()
print("3")
+7 -10
View File
@@ -29,17 +29,14 @@ from pickle import dumps, loads
try:
from bsddb3 import db
except:
try:
from berkeleydb import db
except:
# FIXME: make this more abstract to deal with other backends
class db:
DB_RMW = 0
DB_FIRST = 0
DB_LAST = 0
DB_CURRENT = 0
DB_PREV = 0
DB_NEXT = 0
class db:
DB_RMW = 0
DB_FIRST = 0
DB_LAST = 0
DB_CURRENT = 0
DB_PREV = 0
DB_NEXT = 0
#-------------------------------------------------------------------------
#
+6 -9
View File
@@ -41,15 +41,12 @@ from functools import partial
try:
from bsddb3 import db
except:
try:
from berkeleydb import db
except:
# FIXME: make this more abstract to deal with other backends
class db:
DBRunRecoveryError = 0
DBAccessError = 0
DBPageNotFoundError = 0
DBInvalidArgError = 0
# FIXME: make this more abstract to deal with other backends
class db:
DBRunRecoveryError = 0
DBAccessError = 0
DBPageNotFoundError = 0
DBInvalidArgError = 0
import re
import logging
+2 -4
View File
@@ -22,10 +22,8 @@
## specific to bsddb
import os
try:
from bsddb3 import dbshelve, db
except:
from berkeleydb import db, dbshelve
from bsddb3 import dbshelve, db
from gramps.gen.db import META, PERSON_TBL
from gramps.gen.db.dbconst import BDBVERSFN
+2 -4
View File
@@ -23,10 +23,8 @@ import os
import tempfile
import shutil
try:
from bsddb3 import dbshelve, db
except:
from berkeleydb import db, dbshelve
from bsddb3 import dbshelve, db
from ..read import DbBsddbTreeCursor
class Data:
+5 -8
View File
@@ -36,15 +36,12 @@ from collections import deque
try:
from bsddb3 import db
except:
try:
from berkeleydb import db
except:
# FIXME: make this more abstract to deal with other backends
class db:
DBRunRecoveryError = 0
DBAccessError = 0
DBPageNotFoundError = 0
DBInvalidArgError = 0
class db:
DBRunRecoveryError = 0
DBAccessError = 0
DBPageNotFoundError = 0
DBInvalidArgError = 0
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
+2 -4
View File
@@ -32,10 +32,8 @@ import os
import re
import time
import logging
try:
from bsddb3 import db
except:
from berkeleydb import db
from bsddb3 import db
#-------------------------------------------------------------------------
#
# Gramps modules
+2 -8
View File
@@ -40,14 +40,8 @@ import logging
from sys import maxsize, getfilesystemencoding, version_info
from ast import literal_eval as safe_eval
try:
from bsddb3 import dbshelve, db
except:
from berkeleydb import db, dbshelve
try:
from bsddb3.db import DB_CREATE, DB_AUTO_COMMIT, DB_DUP, DB_DUPSORT, DB_RDONLY
except:
from berkeleydb.db import DB_CREATE, DB_AUTO_COMMIT, DB_DUP, DB_DUPSORT, DB_RDONLY
from bsddb3 import dbshelve, db
from bsddb3.db import DB_CREATE, DB_AUTO_COMMIT, DB_DUP, DB_DUPSORT, DB_RDONLY
DBFLAGS_O = DB_CREATE | DB_AUTO_COMMIT # Default flags for database open
DBFLAGS_R = DB_RDONLY # Flags to open a database read-only
+29 -19
View File
@@ -224,16 +224,6 @@ class DBAPI(DbGeneric):
if self.transaction == None:
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):
"""
Transactions are handled automatically by the db layer.
@@ -374,9 +364,12 @@ class DBAPI(DbGeneric):
:type locale: A GrampsLocale object.
"""
if sort_handles:
if locale != glocale:
self.dbapi.check_collation(locale)
self.dbapi.execute('SELECT handle FROM person '
'ORDER BY surname '
'COLLATE "%s"' % self._collation(locale))
'COLLATE "%s"' % locale.get_collation())
else:
self.dbapi.execute("SELECT handle FROM person")
rows = self.dbapi.fetchall()
@@ -393,6 +386,9 @@ class DBAPI(DbGeneric):
:type locale: A GrampsLocale object.
"""
if sort_handles:
if locale != glocale:
self.dbapi.check_collation(locale)
sql = ('SELECT family.handle ' +
'FROM family ' +
'LEFT JOIN person AS father ' +
@@ -407,7 +403,7 @@ class DBAPI(DbGeneric):
'THEN mother.given_name ' +
'ELSE father.given_name ' +
'END) ' +
'COLLATE "%s"' % self._collation(locale))
'COLLATE "%s"' % locale.get_collation())
self.dbapi.execute(sql)
else:
self.dbapi.execute("SELECT handle FROM family")
@@ -434,9 +430,12 @@ class DBAPI(DbGeneric):
:type locale: A GrampsLocale object.
"""
if sort_handles:
if locale != glocale:
self.dbapi.check_collation(locale)
self.dbapi.execute('SELECT handle FROM citation '
'ORDER BY page '
'COLLATE "%s"' % self._collation(locale))
'COLLATE "%s"' % locale.get_collation())
else:
self.dbapi.execute("SELECT handle FROM citation")
rows = self.dbapi.fetchall()
@@ -453,9 +452,12 @@ class DBAPI(DbGeneric):
:type locale: A GrampsLocale object.
"""
if sort_handles:
if locale != glocale:
self.dbapi.check_collation(locale)
self.dbapi.execute('SELECT handle FROM source '
'ORDER BY title '
'COLLATE "%s"' % self._collation(locale))
'COLLATE "%s"' % locale.get_collation())
else:
self.dbapi.execute("SELECT handle from source")
rows = self.dbapi.fetchall()
@@ -472,9 +474,12 @@ class DBAPI(DbGeneric):
:type locale: A GrampsLocale object.
"""
if sort_handles:
if locale != glocale:
self.dbapi.check_collation(locale)
self.dbapi.execute('SELECT handle FROM place '
'ORDER BY title '
'COLLATE "%s"' % self._collation(locale))
'COLLATE "%s"' % locale.get_collation())
else:
self.dbapi.execute("SELECT handle FROM place")
rows = self.dbapi.fetchall()
@@ -500,9 +505,12 @@ class DBAPI(DbGeneric):
:type locale: A GrampsLocale object.
"""
if sort_handles:
if locale != glocale:
self.dbapi.check_collation(locale)
self.dbapi.execute('SELECT handle FROM media '
'ORDER BY desc '
'COLLATE "%s"' % self._collation(locale))
'COLLATE "%s"' % locale.get_collation())
else:
self.dbapi.execute("SELECT handle FROM media")
rows = self.dbapi.fetchall()
@@ -528,9 +536,12 @@ class DBAPI(DbGeneric):
:type locale: A GrampsLocale object.
"""
if sort_handles:
if locale != glocale:
self.dbapi.check_collation(locale)
self.dbapi.execute('SELECT handle FROM tag '
'ORDER BY name '
'COLLATE "%s"' % self._collation(locale))
'COLLATE "%s"' % locale.get_collation())
else:
self.dbapi.execute("SELECT handle FROM tag")
rows = self.dbapi.fetchall()
@@ -577,13 +588,12 @@ class DBAPI(DbGeneric):
"WHERE name = ?", [grouping, name])
elif row and grouping is None:
self.dbapi.execute("DELETE FROM name_group WHERE name = ?", [name])
grouping = ''
else:
self.dbapi.execute(
"INSERT INTO name_group (name, grouping) VALUES (?, ?)",
[name, grouping])
self._txn_commit()
if grouping is None:
grouping = ''
self.emit('person-groupname-rebuild', (name, grouping))
def _commit_base(self, obj, obj_key, trans, change_time):
-2
View File
@@ -117,8 +117,6 @@ class Connection:
collation = locale.get_collation().translate(self.__tmap)
if collation not in self.__collations:
self.__connection.create_collation(collation, locale.strcoll)
self.__collations.append(collation)
return collation
def execute(self, *args, **kwargs):
"""
+1 -4
View File
@@ -556,10 +556,7 @@ class HtmlDoc(BaseDoc, TextDoc):
"""
self._empty = 0
size = int(max(w_cm, h_cm) * float(150.0/2.54))
if crop:
refname = "is-%d-%d-%d-%d-%s" % (crop[0], crop[1], crop[2], crop[3], os.path.basename(name))
else:
refname = "is%s" % os.path.basename(name)
refname = "is%s" % os.path.basename(name)
imdir = self._backend.datadirfull()
+1 -2
View File
@@ -267,8 +267,7 @@ class Calendar(Report):
day_col * cell_width + cell_width/2,
header + week_row * cell_height)
list_ = self.calendar.get(month, {}).get(thisday.day, [])
# sort the list to get CAL-Holiday on bottom
list_.sort(key=lambda x: (x[0], x[1]))
list_.sort() # to get CAL-Holiday on bottom
position = spacing
for (format, p, m_list) in list_:
for line in reversed(p.split("\n")):
+3 -4
View File
@@ -160,9 +160,10 @@ def breakup(txt, limit):
data = []
while len(txt) > limit:
# look for non-space pair to break between
# fix issue #0012709 by removing Python2 code obsoleted by Python3
# do not break within a UTF-8 byte sequence, i. e. first char >127
idx = limit
while (idx > 0 and (txt[idx - 1].isspace() or txt[idx].isspace())):
while (idx > 0 and (txt[idx - 1].isspace() or txt[idx].isspace() or
ord(txt[idx - 1]) > 127)):
idx -= 1
if idx == 0:
#no words to break on, just break at limit anyway
@@ -1343,8 +1344,6 @@ class GedcomWriter(UpdateCallback):
"""
citation = self.dbase.get_citation_from_handle(citation_handle)
if citation is None: # removed by proxy
return
src_handle = citation.get_reference_handle()
if src_handle is None:
+11 -15
View File
@@ -92,17 +92,13 @@ class Backlinks(Gramplet):
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):
"""
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):
self.update()
@@ -123,7 +119,7 @@ class EventBacklinks(Backlinks):
Displays the back references for an event.
"""
def db_changed(self):
super().db_changed()
self.connect(self.dbstate.db, 'event-update', self.update)
self.connect_signal('Event', self.update)
def update_has_data(self):
@@ -143,7 +139,7 @@ class FamilyBacklinks(Backlinks):
Displays the back references for a family.
"""
def db_changed(self):
super().db_changed()
self.connect(self.dbstate.db, 'family-update', self.update)
self.connect_signal('Family', self.update)
def update_has_data(self):
@@ -163,7 +159,7 @@ class PlaceBacklinks(Backlinks):
Displays the back references for a place.
"""
def db_changed(self):
super().db_changed()
self.connect(self.dbstate.db, 'place-update', self.update)
self.connect_signal('Place', self.update)
def update_has_data(self):
@@ -183,7 +179,7 @@ class SourceBacklinks(Backlinks):
Displays the back references for a source,.
"""
def db_changed(self):
super().db_changed()
self.connect(self.dbstate.db, 'source-update', self.update)
self.connect_signal('Source', self.update)
def update_has_data(self):
@@ -203,7 +199,7 @@ class CitationBacklinks(Backlinks):
Displays the back references for a Citation,.
"""
def db_changed(self):
super().db_changed()
self.connect(self.dbstate.db, 'citation-update', self.update)
self.connect_signal('Citation', self.update)
def update_has_data(self):
@@ -223,7 +219,7 @@ class RepositoryBacklinks(Backlinks):
Displays the back references for a repository.
"""
def db_changed(self):
super().db_changed()
self.connect(self.dbstate.db, 'repository-update', self.update)
self.connect_signal('Repository', self.update)
def update_has_data(self):
@@ -243,7 +239,7 @@ class MediaBacklinks(Backlinks):
Displays the back references for a media object.
"""
def db_changed(self):
super().db_changed()
self.connect(self.dbstate.db, 'media-update', self.update)
self.connect_signal('Media', self.update)
def update_has_data(self):
@@ -263,7 +259,7 @@ class NoteBacklinks(Backlinks):
Displays the back references for a note.
"""
def db_changed(self):
super().db_changed()
self.connect(self.dbstate.db, 'note-update', self.update)
self.connect_signal('Note', self.update)
def update_has_data(self):
+4 -7
View File
@@ -184,13 +184,10 @@ class Leak(Gramplet):
try:
from bsddb3.db import DBError
except:
try:
from berkeleydb.db import DBError
except:
class DBError(Exception):
"""
Dummy.
"""
class DBError(Exception):
"""
Dummy.
"""
self.parent = self.top.get_toplevel()
progress = ProgressMeter(
_('Updating display...'), '', parent=self.parent, can_cancel=True)
+1 -1
View File
@@ -300,7 +300,7 @@ class HtmlBackend(DocBackend):
"""
if value.startswith("gramps://"):
if self.build_link:
obj_class, prop, handle = value[9:].split("/", 2)
obj_class, prop, handle = value[9:].split("/", 3)
if prop in ["handle", "gramps_id"]:
value = self.build_link(prop, handle, obj_class)
if not value:
+2 -4
View File
@@ -206,10 +206,8 @@ class PlaceBaseView(ListView):
"""
if action:
action.set_state(value)
self.mapservice = value.get_string()
else:
self.mapservice = value
config.set('interface.mapservice', self.mapservice)
self.mapservice = mapkey = value.get_string()
config.set('interface.mapservice', mapkey)
config.save()
_ui = self.__create_maps_menu_actions()
self.uimanager.add_ui_from_string(_ui)
+7 -10
View File
@@ -314,16 +314,13 @@ def find_records(db, filter, top_size, callname,
if mother is None:
continue
father_name = _get_styled_primary_name(father, callname,
trans_text=trans_text,
name_format=name_format)
mother_name = _get_styled_primary_name(mother, callname,
trans_text=trans_text,
name_format=name_format)
name = StyledText(trans_text("%(father)s and %(mother)s"))
name = name.replace('%(father)s', father_name)
name = name.replace('%(mother)s', mother_name)
name = StyledText(trans_text("%(father)s and %(mother)s")) % {
'father': _get_styled_primary_name(father, callname,
trans_text=trans_text,
name_format=name_format),
'mother': _get_styled_primary_name(mother, callname,
trans_text=trans_text,
name_format=name_format)}
if (living_mode == LivingProxyDb.MODE_INCLUDE_ALL
or (not probably_alive(unfil_father, db) and
+1 -5
View File
@@ -346,7 +346,7 @@ class PlaceFormat(GenericFormat):
return None
def _default_format(self, place):
return _pd.display(self.database, place, place.event_date)
return _pd.display(self.database, place)
def parse_format(self, database, place):
""" Parse the place """
@@ -432,8 +432,6 @@ class EventFormat(GenericFormat):
""" start formatting a place in this event """
place_format = PlaceFormat(self.database, self.string_in)
place = place_format.get_place(self.database, event)
if event and place:
place.event_date = event.get_date_object()
return place_format.parse_format(self.database, place)
def format_attrib():
@@ -891,8 +889,6 @@ class VariableParse:
return the result """
place_f = PlaceFormat(self.database, self._in)
place = place_f.get_place(self.database, event)
if event and place:
place.event_date = event.get_date_object()
if self.empty_item(place):
return
return place_f.parse_format(self.database, place)
+4 -2
View File
@@ -193,12 +193,11 @@ class GeoGraphyView(OsmGps, NavigationView):
"""
self.build_tree()
def add_bookmark(self, menu, handle):
def add_bookmark(self, menu):
"""
Add the place to the bookmark
"""
dummy_menu = menu
dummy_hdle = handle
mlist = self.selected_handles()
if mlist:
self.bookmarks.add(mlist[0])
@@ -290,6 +289,9 @@ class GeoGraphyView(OsmGps, NavigationView):
if self.active:
self.bookmarks.redraw()
self.build_tree()
if self.osm:
self.osm.grab_focus()
self.set_crosshair(config.get("geography.show_cross"))
def can_configure(self):
"""
+7 -4
View File
@@ -182,11 +182,14 @@ class OsmGps:
self.osm = DummyMapNoGpsPoint()
else:
if http_proxy:
self.osm = osmgpsmap.Map(proxy_uri=http_proxy)
self.osm = osmgpsmap.Map(tile_cache=tiles_path,
proxy_uri=http_proxy,
map_source=constants.MAP_TYPE[
map_type])
else:
self.osm = osmgpsmap.Map()
self.osm.set_property("tile_cache", tiles_path)
self.osm.set_property("map_source", constants.MAP_TYPE[map_type])
self.osm = osmgpsmap.Map(tile_cache=tiles_path,
map_source=constants.MAP_TYPE[
map_type])
self.osm.props.tile_cache = osmgpsmap.MAP_CACHE_AUTO
current_map = osmgpsmap.MapOsd(show_dpad=False, show_zoom=True)
self.end_selection = None
+1 -2
View File
@@ -5,7 +5,6 @@
# Copyright (C) 2003-2005 Donald N. Allingham
# Copyright (C) 2008 Stefan Siegel
# Copyright (C) 2008 Brian G. Matherly
# Copyright (C) 2021 Mirko Leonhaeuser
#
# 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
@@ -157,7 +156,7 @@ class RelationshipCalculator(gramps.gen.relationship.RelationshipCalculator):
if removed < len(_removed):
return _removed[removed]
else:
return '(%s) Urgroß' % self._make_roman(removed-1)
return '(%s)' % self._make_roman(removed-2)
def _degree_text(self, degree, removed):
if removed == 0:
+2 -302
View File
@@ -5,7 +5,6 @@
# Copyright (C) 2003-2005 Donald N. Allingham
# Copyright (C) 2008 Brian G. Matherly
# Copyright (C) 2018 Robin van der Vliet
# Copyright (C) 2020 Jan Sparreboom
#
# 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
@@ -36,7 +35,7 @@ import gramps.gen.relationship
#-------------------------------------------------------------------------
#
# Levels
#
#
#-------------------------------------------------------------------------
@@ -70,207 +69,9 @@ _child_level = [ "", "",
_nibling_level = [ "", "",
"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
#
#
#-------------------------------------------------------------------------
@@ -472,104 +273,6 @@ class RelationshipCalculator(gramps.gen.relationship.RelationshipCalculator):
else:
return "%s%snicht (kozijn)" % (inlaw, step) \
+ " " + _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,
reltocommon_a, reltocommon_b,
@@ -721,6 +424,3 @@ if __name__ == "__main__":
from gramps.gen.relationship import test
RC = RelationshipCalculator()
test(RC, True)
@@ -132,7 +132,7 @@ class DbTestClassBase(object):
self._log_sig("note-delete", args)
def _log_sig(self, sig, args):
# print("('%s', %s)," % (sig, args))
print("('%s', %s)," % (sig, args))
self.sigs.append((sig, args[0]))
def _cm_pers_add(self, *args):
+3 -5
View File
@@ -60,7 +60,6 @@ _ = glocale.translation.sgettext
from gramps.gui.glade import Glade
from gramps.gui.editors import FilterEditor
from gramps.gen.constfunc import get_curr_dir
from gramps.gen.display.place import displayer as _pd
#-------------------------------------------------------------------------
#
@@ -333,7 +332,7 @@ class EventComparisonResults(ManagedWindow):
if ename in the_map and len(the_map[ename]) > 0:
event_handle = the_map[ename][0]
del the_map[ename][0]
date = p_title = ""
date = place = ""
if event_handle:
event = self.db.get_event_from_handle(event_handle)
@@ -344,9 +343,8 @@ class EventComparisonResults(ManagedWindow):
place_handle = event.get_place_handle()
if place_handle:
place = self.db.get_place_from_handle(
place_handle)
p_title = _pd.display(self.dbstate.db, place)
tlist += [date, sortdate, p_title]
place_handle).get_title()
tlist += [date, sortdate, place]
added = True
else:
tlist += [""]*3
-10
View File
@@ -348,16 +348,6 @@ class FamilyView(ListView):
_("A bookmark could not be set because "
"no one was selected."), parent=self.uistate.window)
def get_handle_from_gramps_id(self, gid):
"""
Return the handle of the family having the given Gramps ID.
"""
obj = self.dbstate.db.get_family_from_gramps_id(gid)
if obj:
return obj.get_handle()
else:
return None
def add(self, *obj):
family = Family()
try:
-8
View File
@@ -246,14 +246,6 @@ class GeoClose(GeoGraphyView):
self.add_item = None
self.newmenu = None
self.config_meeting_slider = None
self.dbstate.connect('database-changed', self.reset_change_db)
def reset_change_db(self, dummy_dbase):
"""
Used to reset the family reference
"""
self.refperson = None
def get_title(self):
"""
-7
View File
@@ -243,13 +243,6 @@ class GeoFamClose(GeoGraphyView):
self.cal = config.get('preferences.calendar-format-report')
self.no_show_places_in_status_bar = False
self.config_meeting_slider = None
self.dbstate.connect('database-changed', self.reset_change_db)
def reset_change_db(self, dummy_dbase):
"""
Used to reset the family reference
"""
self.reffamily = None
def get_title(self):
"""
+2 -3
View File
@@ -370,9 +370,8 @@ class GeoFamily(GeoGraphyView):
_("Family places for %s") % self.family_label(family))
person = None
if family:
handle = family.get_father_handle()
if handle:
person = dbstate.db.get_person_from_handle(handle)
person = dbstate.db.get_person_from_handle(
family.get_father_handle())
else:
return
family_id = family.gramps_id
+2 -10
View File
@@ -2873,17 +2873,9 @@ class BasePage: # pylint: disable=C1001
if self.reference_sort:
role = ""
elif role[1:2] == ':':
# format of role is role_type:ISO date string
if role.count(':') > 1:
print("Invalid date :", role[2:], " for individual with ID:", gid,
". Please, use the 'verify the data' tool to correct this.")
cal, role = role.split(':', 1)
else:
cal, role = role.split(':')
# cal is the original calendar
# convert ISO date to Date for translation.
cal, role = role.split(':')
# conver ISO date to Date for translation.
# all modifiers are in english, so convert them
# to the local language
if len(role.split(' - ')) > 1:
+1 -7
View File
@@ -472,13 +472,7 @@ class MediaPages(BasePage):
if orig_image_path != newpath:
url = self.report.build_url_fname(
newpath, None, self.uplink)
regions = self.media_ref_rect_regions(media_handle)
if regions:
s_width = 'width: %dpx;' % max_width
elif width < max_width:
s_width = 'width: %dpx;' % width
else:
s_width = 'width: %dpx;' % max_width
s_width = 'width: %dpx;' % max_width
mediadisplay += Html("a", href=url) + (
Html("img", src=url,
style=s_width,
+1 -1
View File
@@ -1307,7 +1307,7 @@ class WebCalReport(Report):
age_at_death = age_at_death.format(dlocale=self.rlocale)
# determine birthday information???
if (self.birthday and birth_date != Date()
if (self.birthday and birth_date is not Date()
and birth_date.is_valid()):
birth_date = gregorian(birth_date)
+1 -1
View File
@@ -18,7 +18,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
VERSION_TUPLE = (5, 1, 6)
VERSION_TUPLE = (5, 1, 4)
VERSION_QUALIFIER = ""
VERSION = '.'.join(map(str,VERSION_TUPLE)) + VERSION_QUALIFIER
major_version = "%s.%s" % (VERSION_TUPLE[0], VERSION_TUPLE[1])
+5 -5
View File
@@ -7,7 +7,7 @@
<key>CFBundleExecutable</key>
<string>Gramps</string>
<key>CFBundleGetInfoString</key>
<string>Gramps-5.1.5-2, (C) 1997-2022 The Gramps Team http://www.gramps-project.org</string>
<string>Gramps-5.1.3-1, (C) 1997-2020 The Gramps Team http://www.gramps-project.org</string>
<key>CFBundleIconFile</key>
<string>gramps.icns</string>
<key>CFBundleIdentifier</key>
@@ -17,15 +17,15 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>Gramps-5.1.5-2</string>
<string>Gramps-5.1.3-1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>Gramps-5.1.5-2</string>
<string>Gramps-5.1.3-1</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright 1997 - 2022 The Gramps Team, GNU General Public License.</string>
<string>Copyright 1997 - 2020 The Gramps Team, GNU General Public License.</string>
<key>LSMinimumSystemVersion</key>
<string>10.13</string>
<string>10.9</string>
<key>GtkOSXLaunchScriptFile</key>
<string>gramps_launcher.py</string>
<key>NSHighResolutionCapable</key>
+14 -20
View File
@@ -12,9 +12,8 @@
</meta>
<plist>${project}/Info.plist</plist>
<entitlements>${project}/release.entitlements.plist</entitlements>
<!-- Build gramps-launcher with:
gcc -L$PREFIX/lib `python-config -\-cflags -\-ldflags -\-embed` \
gcc -L$PREFIX/lib `python-config -\-cflags -\-ldflags` \
-o $PREFIX/bin/gramps-launcher \
path/to/gtk-mac-bundler/examples/python-launcher.c
with the obvious substitution.
@@ -42,15 +41,19 @@
</binary>
<binary recurse="True">
${prefix}/lib/python3.10/*.so
${prefix}/lib/python3.8/*.so
</binary>
<binary>
${prefix}/lib/librsvg-2.2.dylib
</binary>
<!--binary>
${prefix}/lib/libwebkit-1.0.2.dylib
</binary-->
<binary>
${prefix}/lib/libgtkmacintegration-gtk3.4.dylib
${prefix}/lib/libgtkmacintegration-gtk3.2.dylib
</binary>
<binary>
@@ -62,7 +65,7 @@
</binary>
<binary>
${prefix}/lib/enchant-2
${prefix}/lib/enchant
</binary>
<binary>
@@ -74,7 +77,7 @@
</binary>
<binary>
${prefix}/lib/libhunspell-1.7.0.dylib
${prefix}/lib/libhunspell-1.6.0.dylib
</binary>
<binary>
@@ -97,10 +100,6 @@
${prefix}/lib/libgeocode-glib.dylib
</binary>
<binary>
${prefix}/lib/gio/modules/libgiognutls.so
</binary>
<gir>
${prefix}/share/gir-1.0/*.gir
</gir>
@@ -142,10 +141,6 @@
${project}/gramps_launcher.py
</data>
<data>
${prefix}/etc/fonts
</data>
<data>
${prefix}/share/glib-2.0/schemas
</data>
@@ -153,19 +148,19 @@
<!-- We have to pull in the python modules, which are mixed python
and loadable modules. -->
<data recurse="True">
${prefix}/lib/python3.10/*.py
${prefix}/lib/python3.8/*.py
</data>
<data>
${prefix}/lib/python3.10/config-3.10-darwin/
${prefix}/lib/python3.8/config-3.8-darwin/
</data>
<data>
${prefix}/lib/python3.10/site-packages/gramps/gen/utils/resource-path
${prefix}/lib/python3.8/site-packages/gramps/gen/utils/resource-path
</data>
<data>
${prefix}/include/python3.10/pyconfig.h
${prefix}/include/python3.8/pyconfig.h
</data>
@@ -182,7 +177,7 @@
</data>
<data recurse="True">
${prefix}/lib/python3.10/site-packages/gramps/*.glade
${prefix}/lib/python3.8/site-packages/gramps/*.glade
</data>
<data>
@@ -214,7 +209,6 @@
<data>
${prefix}/share/icons
</data>
<!-- Copy icons. Note that the .icns file is an Apple format which
contains up to 4 sizes of icon. You can use
/Developer/Applications/Utilities/Icon Composer.app to import
+75 -86
View File
@@ -9,12 +9,22 @@
href="http://pywebkitgtk.googlecode.com/files/"/>
<repository type="tarball" name="ftp.gnome.org"
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"
href="http://download.oracle.com/"/>
<repository type="tarball" name="pymodules"
href="https://pypi.python.org/packages/"/>
<repository type="git" name="github" href="https://github.com/"/>
<repository type="tarball" name="stowers"
href="http://www.johnstowers.co.nz/files/"/>
<repository type="git" name="github" href="git://github.com/"/>
<repository type="tarball" name="github-tarball" href="https://github.com/"/>
<repository type="tarball" name="graphviz"
href="https://graphviz.gitlab.io/pub/graphviz/stable/SOURCES/"/>
<repository type="tarball" name="exiv2.org"
href="http://www.exiv2.org/releases/"/>
<repository type="tarball" name="pythonware"
@@ -42,8 +52,8 @@ gtk-mac-bundler gtk-osx-build/projects/gramps/gramps.bundle
-->
<!--include href="https://gitlab.gnome.org/GNOME/gtk-osx/raw/master/modulesets-stable/gtk-osx.modules"/-->
<include href="/Users/john/Development/GTK-OSX/gtk-osx-build/modulesets-stable/gtk-osx.modules"/>
<include href="https://gitlab.gnome.org/GNOME/gtk-osx/raw/master/modulesets-stable/gtk-osx.modules"/>
<!--include href="/Users/john/Development/GTK-OSX/gtk-osx-build/modulesets-stable/gtk-osx.modules"/-->
<distutils id="gramps-git" supports-non-srcdir-builds="no">
<branch module="gramps-project/gramps.git" repo="github"
@@ -55,10 +65,9 @@ gtk-mac-bundler gtk-osx-build/projects/gramps/gramps.bundle
</distutils>
<distutils id="gramps" supports-non-srcdir-builds="no">
<branch module="gramps-project/gramps/archive/v5.1.5.tar.gz"
repo="github-tarball" version="5.1.5"
checkoutdir="gramps-gramps-5.1.5">
<patch file="gramps-berkeleydb.patch" strip="1"/>
<branch module="gramps-project/gramps/archive/v5.1.3.tar.gz"
repo="github-tarball" version="5.1.3"
checkoutdir="gramps-gramps-5.1.3"/>
<dependencies>
<dep package="meta-gramps-modules"/>
</dependencies>
@@ -72,10 +81,35 @@ gtk-mac-bundler gtk-osx-build/projects/gramps/gramps.bundle
</dependencies>
</distutils>
<meson id="json-glib" mesonargs="-Dgtk_doc=disabled -Dman=false -Dtests=false">
<branch module="json-glib/1.6/json-glib-1.6.6.tar.xz"
version="1.6.6" repo="ftp.gnome.org"
hash="sha256:96ec98be7a91f6dde33636720e3da2ff6ecbb90e76ccaa49497f31a6855a490e"/>
<autotools id="pyWebKitGtk" >
<branch module="pywebkitgtk-1.1.7.tar.bz2" version="1.1.7"
repo="pywebkitgtk"/>
<dependencies>
<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>
<dep package="gobject-introspection"/>
</dependencies>
@@ -94,34 +128,46 @@ gtk-mac-bundler gtk-osx-build/projects/gramps/gramps.bundle
<autotools id="osmgpsmap" skip-autogen="never"
autogenargs="--disable-gtk-doc-html"
supports-non-srcdir-builds="no">
<branch module="nzjrs/osm-gps-map" revision="1.2.0" repo="github"/>
<branch module="nzjrs/osm-gps-map" revision="1.1.0" repo="github"/>
<dependencies>
<dep package="libsoup"/>
<dep package="gtk+-3.0"/>
</dependencies>
<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>
</autotools>
<cmake id="exiv2" cmakeargs="-DEXIV2_ENABLE_PNG=ON">
<branch module="Exiv2/exiv2/releases/download/v0.27.4/exiv2-0.27.4-Source.tar.gz" repo="github-tarball"
checkoutdir="exiv2-0.27.4-Source" version="0.27.4"
hash="sha256:84366dba7c162af9a7603bcd6c16f40fe0e9af294ba2fd2f66ffffb9fbec904e"/>
<branch module="exiv2-0.27.0a-Source.tar.gz" repo="exiv2.org"
checkoutdir="exiv2-0.27.0-Source" version="0.27.0"/>
</cmake>
<meson id="gexiv2" mesonargs="-Dvapi=false">
<branch module="gexiv2/0.14/gexiv2-0.14.0.tar.xz"
repo="ftp.gnome.org" version="0.14.0"
hash="sha256:e58279a6ff20b6f64fa499615da5e9b57cf65ba7850b72fafdf17221a9d6d69e">
<branch module="gexiv2/0.12/gexiv2-0.12.0.tar.xz"
repo="ftp.gnome.org" version="0.12.0"
hash="sha256:58f539b0386f36300b76f3afea3a508de4914b27e78f58ee4d142486a42f926a">
</branch>
<dependencies>
<dep package="exiv2"/>
<dep package="pygobject3"/>
</dependencies>
</meson>
https://files.pythonhosted.org/packages/
<distutils id="pillow">
<branch module="21/23/af6bac2a601be6670064a817273d4190b79df6f74d8012926a39bc7aa77f/Pillow-8.2.0.tar.gz" version="8.2.0"
<distutils id="pil">
<branch module="93/73/66854f63b1941aad9af18a1de59f9cf95ad1a87c801540222e332f6688d7/Pillow-4.1.1.tar.gz" version="4.1.1"
repo="pymodules"
hash="sha256:a787ab10d7bb5494e5f76536ac460741788f1fbce851068d73a87ca7c35fc3e1">
hash="md5:f2565954955c8d10f3b4f1f72f852bf7">
</branch>
<dependencies>
<!--dep package="setuptools"/-->
@@ -129,76 +175,18 @@ https://files.pythonhosted.org/packages/
</distutils>
<distutils id='pyicu'>
<branch version='2.7.2' repo='pymodules'
module='17/0f/9d6b7eb01650960239a5d4dc21cd6e7a96921807c043d287bae4b2f440e1/PyICU-2.7.2.tar.gz'
hash="sha256:1382869b22d91cc99274f9b525fa7d9199b44d9007ff0036a09747839a01e9dc"/>
<branch version='2.5' repo='pymodules'
module='5a/99/c48c816095208bf3f4936ff67e571621fbddef461303a35a076f234e31f6/PyICU-2.5.tar.gz'/>
<dependencies>
<dep package='icu'/>
</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'/>
<patch file="berkeleydb-4.8-mutex.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'/>
<patch file="berkeleydb-4.8-mutex.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 id='pyfontconfig'>
<branch repo='pymodules' version="0.5.1"
module="e6/01/a28b0160f82ca5e946e315251c797f07c74e5c5a53f2a9e706eebc680191/Python-fontconfig-0.5.1.tar.gz"
hash="sha256:b7cfe366242f83b8cd7175b7d4dd95d19f42d619c58a51914f72b1e741739994">
<patch file="pyfontconfig-curexc.patch" strip="1"/>
</branch>
<dependencies>
<dep package="python3"/>
<dep package="fontconfig"/>
</dependencies>
</distutils>
<metamodule id="meta-gramps-modules">
<dependencies>
<dep package="python3"/>
<dep package="meta-gtk-osx-gtk3"/>
<dep package="meta-gtk-osx-gtk3-core-themes"/>
<dep package="goocanvas2"/>
<dep package="librsvg"/>
<dep package="shared-mime-info"/>
@@ -213,7 +201,8 @@ https://files.pythonhosted.org/packages/
<dep package="pycairo"/>
<dep package="pygobject3"/>
<dep package='pyicu'/>
<dep package="pillow"/>
<dep package='pybsddb'/>
<dep package="pil"/>
</dependencies>
</metamodule>
-1
View File
@@ -24,7 +24,6 @@ environ['GTK_PATH'] = bundle_res
environ['PANGO_RC_FILE'] = join(bundle_etc, 'pango', 'pangorc')
environ['PANGO_SYSCONFDIR'] = bundle_etc
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',
'2.10.0', 'loaders.cache')
environ['GI_TYPELIB_PATH'] = join(bundle_lib, 'girepository-1.0')
-40
View File
@@ -1,40 +0,0 @@
--- 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;
-115
View File
@@ -1,115 +0,0 @@
--- a/dist/configure 2022-12-26 13:46:24.000000000 -0800
+++ b/dist/configure 2022-12-27 11:35:26.000000000 -0800
@@ -18756,6 +18756,7 @@
/* end confdefs.h. */
#include <pthread.h>
+#include <stdlib.h>
int
main ()
{
@@ -18792,7 +18793,8 @@
/* end confdefs.h. */
#include <pthread.h>
-main() {
+#include <stdlib.h>
+int main() {
pthread_cond_t cond;
pthread_mutex_t mutex;
pthread_condattr_t condattr;
@@ -18828,6 +18830,7 @@
/* end confdefs.h. */
#include <pthread.h>
+#include <stdlib.h>
int
main ()
{
@@ -18864,7 +18867,7 @@
/* end confdefs.h. */
#include <pthread.h>
-main() {
+int main() {
pthread_cond_t cond;
pthread_mutex_t mutex;
pthread_condattr_t condattr;
@@ -18899,6 +18902,7 @@
/* end confdefs.h. */
#include <pthread.h>
+#include <stdlib.h>
int
main ()
{
@@ -18933,7 +18937,8 @@
/* end confdefs.h. */
#include <pthread.h>
-main() {
+#include <stdlib.h>
+int main() {
pthread_cond_t cond;
pthread_mutex_t mutex;
pthread_condattr_t condattr;
@@ -18967,6 +18972,7 @@
/* end confdefs.h. */
#include <pthread.h>
+#include <stdlib.h>
int
main ()
{
@@ -19001,7 +19007,8 @@
/* end confdefs.h. */
#include <pthread.h>
-main() {
+#include <stdlib.h>
+int main() {
pthread_cond_t cond;
pthread_mutex_t mutex;
pthread_condattr_t condattr;
@@ -19038,6 +19045,7 @@
/* end confdefs.h. */
#include <synch.h>
+#include <stdlib.h>
int
main ()
{
@@ -19069,6 +19077,7 @@
#include <thread.h>
#include <synch.h>
+#include <stdlib.h>
int
main ()
{
@@ -19099,6 +19108,7 @@
#include <thread.h>
#include <synch.h>
+#include <stdlib.h>
int
main ()
{
@@ -20743,7 +20753,7 @@
/* end confdefs.h. */
#include <sys/time.h>
-main() {
+int main() {
struct timespec t;
return (clock_gettime(CLOCK_MONOTONIC, &t) != 0);
}
@@ -21634,7 +21644,7 @@
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
- main() {
+ int main() {
$db_cv_seq_type l;
unsigned $db_cv_seq_type u;
char buf[100];
-273
View File
@@ -1,273 +0,0 @@
From 9ea0164f1f84f92deea7a0bde0343e2f0e485525 Mon Sep 17 00:00:00 2001
From: John Ralls <jralls@ceridwen.us>
Date: Tue, 27 Dec 2022 12:50:14 -0800
Subject: [PATCH] Try to import berkeleydb if bsddb3 isn't found.
berkelydb is usable for python >= 3.6 and required for
python >= 3.10. See https://www.jcea.es/programacion/pybsddb.htm.
---
gramps/grampsapp.py | 13 ++++++++++---
gramps/gui/aboutdialog.py | 6 +++++-
gramps/gui/logger/_errorreportassistant.py | 6 +++++-
gramps/plugins/db/bsddb/bsddbtxn.py | 5 ++++-
gramps/plugins/db/bsddb/cursor.py | 17 ++++++++++-------
gramps/plugins/db/bsddb/read.py | 15 +++++++++------
gramps/plugins/db/bsddb/summary.py | 6 ++++--
gramps/plugins/db/bsddb/test/cursor_test.py | 6 ++++--
gramps/plugins/db/bsddb/undoredo.py | 13 ++++++++-----
gramps/plugins/db/bsddb/upgrade.py | 6 ++++--
gramps/plugins/db/bsddb/write.py | 10 ++++++++--
gramps/plugins/gramplet/leak.py | 11 +++++++----
12 files changed, 78 insertions(+), 36 deletions(-)
diff --git a/gramps/grampsapp.py b/gramps/grampsapp.py
index 2163edc8a..fed06207d 100644
--- a/gramps/grampsapp.py
+++ b/gramps/grampsapp.py
@@ -325,9 +325,16 @@ def show_settings():
.replace('(', '').replace(')', '')
bsddb_location_str = bsddb.__file__
except:
- bsddb_str = 'not found'
- bsddb_db_str = 'not found'
- bsddb_location_str = 'not found'
+ try:
+ import berkeleydb as bsddb
+ bsddb_str = bsddb.__version__
+ bsddb_db_str = str(bsddb.db.version()).replace(', ', '.')\
+ .replace('(', '').replace(')', '')
+ bsddb_location_str = bsddb.__file__
+ except:
+ bsddb_str = 'not found'
+ bsddb_db_str = 'not found'
+ bsddb_location_str = 'not found'
try:
import sqlite3
diff --git a/gramps/gui/aboutdialog.py b/gramps/gui/aboutdialog.py
index f2b28a036..2afb77816 100644
--- a/gramps/gui/aboutdialog.py
+++ b/gramps/gui/aboutdialog.py
@@ -68,7 +68,11 @@ try:
import bsddb3 as bsddb ## ok, in try/except
BSDDB_STR = ellipses(str(bsddb.__version__) + " " + str(bsddb.db.version()))
except:
- BSDDB_STR = 'not found'
+ try:
+ import berkeleydb as bsddb
+ BSDDB_STR = ellipses(str(bsddb.__version__) + " " + str(bsddb.db.version()))
+ except:
+ BSDDB_STR = 'not found'
try:
import sqlite3
diff --git a/gramps/gui/logger/_errorreportassistant.py b/gramps/gui/logger/_errorreportassistant.py
index af9979693..1924701e2 100644
--- a/gramps/gui/logger/_errorreportassistant.py
+++ b/gramps/gui/logger/_errorreportassistant.py
@@ -37,7 +37,11 @@ try:
import bsddb3 as bsddb # ok, in try/except
BSDDB_STR = str(bsddb.__version__) + " " + str(bsddb.db.version())
except:
- BSDDB_STR = 'not found'
+ try:
+ import berkeleydb as bsddb
+ BSDDB_STR = str(bsddb.__version__) + " " + str(bsddb.db.version())
+ except:
+ BSDDB_STR = 'not found'
try:
import sqlite3
diff --git a/gramps/plugins/db/bsddb/bsddbtxn.py b/gramps/plugins/db/bsddb/bsddbtxn.py
index 7af99494e..0f3fe0de4 100644
--- a/gramps/plugins/db/bsddb/bsddbtxn.py
+++ b/gramps/plugins/db/bsddb/bsddbtxn.py
@@ -218,7 +218,10 @@ class BSDDBTxn:
# test code
if __name__ == "__main__":
print("1")
- from bsddb3 import db, dbshelve
+ try:
+ from bsddb3 import db, dbshelve
+ except:
+ from berkeleydb import db, dbshelve
print("2")
x = db.DBEnv()
print("3")
diff --git a/gramps/plugins/db/bsddb/cursor.py b/gramps/plugins/db/bsddb/cursor.py
index 1eecffc03..4ddd9a64c 100644
--- a/gramps/plugins/db/bsddb/cursor.py
+++ b/gramps/plugins/db/bsddb/cursor.py
@@ -29,14 +29,17 @@ from pickle import dumps, loads
try:
from bsddb3 import db
except:
+ try:
+ from berkeleydb import db
+ except:
# FIXME: make this more abstract to deal with other backends
- class db:
- DB_RMW = 0
- DB_FIRST = 0
- DB_LAST = 0
- DB_CURRENT = 0
- DB_PREV = 0
- DB_NEXT = 0
+ class db:
+ DB_RMW = 0
+ DB_FIRST = 0
+ DB_LAST = 0
+ DB_CURRENT = 0
+ DB_PREV = 0
+ DB_NEXT = 0
#-------------------------------------------------------------------------
#
diff --git a/gramps/plugins/db/bsddb/read.py b/gramps/plugins/db/bsddb/read.py
index 57906b795..6b0b6a7a8 100644
--- a/gramps/plugins/db/bsddb/read.py
+++ b/gramps/plugins/db/bsddb/read.py
@@ -41,12 +41,15 @@ from functools import partial
try:
from bsddb3 import db
except:
- # FIXME: make this more abstract to deal with other backends
- class db:
- DBRunRecoveryError = 0
- DBAccessError = 0
- DBPageNotFoundError = 0
- DBInvalidArgError = 0
+ try:
+ from berkeleydb import db
+ except:
+ # FIXME: make this more abstract to deal with other backends
+ class db:
+ DBRunRecoveryError = 0
+ DBAccessError = 0
+ DBPageNotFoundError = 0
+ DBInvalidArgError = 0
import re
import logging
diff --git a/gramps/plugins/db/bsddb/summary.py b/gramps/plugins/db/bsddb/summary.py
index e73908128..a911d666f 100644
--- a/gramps/plugins/db/bsddb/summary.py
+++ b/gramps/plugins/db/bsddb/summary.py
@@ -22,8 +22,10 @@
## specific to bsddb
import os
-from bsddb3 import dbshelve, db
-
+try:
+ from bsddb3 import dbshelve, db
+except:
+ from berkeleydb import db, dbshelve
from gramps.gen.db import META, PERSON_TBL
from gramps.gen.db.dbconst import BDBVERSFN
diff --git a/gramps/plugins/db/bsddb/test/cursor_test.py b/gramps/plugins/db/bsddb/test/cursor_test.py
index e90e16fd4..1411aca43 100644
--- a/gramps/plugins/db/bsddb/test/cursor_test.py
+++ b/gramps/plugins/db/bsddb/test/cursor_test.py
@@ -23,8 +23,10 @@ import os
import tempfile
import shutil
-from bsddb3 import dbshelve, db
-
+try:
+ from bsddb3 import dbshelve, db
+except:
+ from berkeleydb import db, dbshelve
from ..read import DbBsddbTreeCursor
class Data:
diff --git a/gramps/plugins/db/bsddb/undoredo.py b/gramps/plugins/db/bsddb/undoredo.py
index 53ab39a60..729f21eb9 100644
--- a/gramps/plugins/db/bsddb/undoredo.py
+++ b/gramps/plugins/db/bsddb/undoredo.py
@@ -36,12 +36,15 @@ from collections import deque
try:
from bsddb3 import db
except:
+ try:
+ from berkeleydb import db
+ except:
# FIXME: make this more abstract to deal with other backends
- class db:
- DBRunRecoveryError = 0
- DBAccessError = 0
- DBPageNotFoundError = 0
- DBInvalidArgError = 0
+ class db:
+ DBRunRecoveryError = 0
+ DBAccessError = 0
+ DBPageNotFoundError = 0
+ DBInvalidArgError = 0
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
diff --git a/gramps/plugins/db/bsddb/upgrade.py b/gramps/plugins/db/bsddb/upgrade.py
index 48fd189dd..6861fcd5c 100644
--- a/gramps/plugins/db/bsddb/upgrade.py
+++ b/gramps/plugins/db/bsddb/upgrade.py
@@ -32,8 +32,10 @@ import os
import re
import time
import logging
-from bsddb3 import db
-
+try:
+ from bsddb3 import db
+except:
+ from berkeleydb import db
#-------------------------------------------------------------------------
#
# Gramps modules
diff --git a/gramps/plugins/db/bsddb/write.py b/gramps/plugins/db/bsddb/write.py
index f1743fd21..809b77383 100644
--- a/gramps/plugins/db/bsddb/write.py
+++ b/gramps/plugins/db/bsddb/write.py
@@ -40,8 +40,14 @@ import logging
from sys import maxsize, getfilesystemencoding, version_info
from ast import literal_eval as safe_eval
-from bsddb3 import dbshelve, db
-from bsddb3.db import DB_CREATE, DB_AUTO_COMMIT, DB_DUP, DB_DUPSORT, DB_RDONLY
+try:
+ from bsddb3 import dbshelve, db
+except:
+ from berkeleydb import db, dbshelve
+try:
+ from bsddb3.db import DB_CREATE, DB_AUTO_COMMIT, DB_DUP, DB_DUPSORT, DB_RDONLY
+except:
+ from berkeleydb.db import DB_CREATE, DB_AUTO_COMMIT, DB_DUP, DB_DUPSORT, DB_RDONLY
DBFLAGS_O = DB_CREATE | DB_AUTO_COMMIT # Default flags for database open
DBFLAGS_R = DB_RDONLY # Flags to open a database read-only
diff --git a/gramps/plugins/gramplet/leak.py b/gramps/plugins/gramplet/leak.py
index 949531cf7..0c09c0c4e 100644
--- a/gramps/plugins/gramplet/leak.py
+++ b/gramps/plugins/gramplet/leak.py
@@ -184,10 +184,13 @@ class Leak(Gramplet):
try:
from bsddb3.db import DBError
except:
- class DBError(Exception):
- """
- Dummy.
- """
+ try:
+ from berkeleydb.db import DBError
+ except:
+ class DBError(Exception):
+ """
+ Dummy.
+ """
self.parent = self.top.get_toplevel()
progress = ProgressMeter(
_('Updating display...'), '', parent=self.parent, can_cancel=True)
--
2.37.1 (Apple Git-137.1)
-56
View File
@@ -1,56 +0,0 @@
--- a/fontconfig.c 2011-11-02 07:59:41.000000000 -0700
+++ b/fontconfig.c 2021-08-09 18:07:50.000000000 -0700
@@ -4525,12 +4525,12 @@
Py_INCREF(local_type);
Py_INCREF(local_value);
Py_INCREF(local_tb);
- tmp_type = tstate->exc_type;
- tmp_value = tstate->exc_value;
- tmp_tb = tstate->exc_traceback;
- tstate->exc_type = local_type;
- tstate->exc_value = local_value;
- tstate->exc_traceback = local_tb;
+ tmp_type = tstate->curexc_type;
+ tmp_value = tstate->curexc_value;
+ tmp_tb = tstate->curexc_traceback;
+ tstate->curexc_type = local_type;
+ tstate->curexc_value = local_value;
+ tstate->curexc_traceback = local_tb;
/* Make sure tstate is in a consistent state when we XDECREF
these objects (XDECREF may run arbitrary code). */
Py_XDECREF(tmp_type);
@@ -4735,9 +4735,9 @@
static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
PyThreadState *tstate = PyThreadState_GET();
- *type = tstate->exc_type;
- *value = tstate->exc_value;
- *tb = tstate->exc_traceback;
+ *type = tstate->curexc_type;
+ *value = tstate->curexc_value;
+ *tb = tstate->curexc_traceback;
Py_XINCREF(*type);
Py_XINCREF(*value);
Py_XINCREF(*tb);
@@ -4746,12 +4746,12 @@
static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
PyThreadState *tstate = PyThreadState_GET();
- tmp_type = tstate->exc_type;
- tmp_value = tstate->exc_value;
- tmp_tb = tstate->exc_traceback;
- tstate->exc_type = type;
- tstate->exc_value = value;
- tstate->exc_traceback = tb;
+ tmp_type = tstate->curexc_type;
+ tmp_value = tstate->curexc_value;
+ tmp_tb = tstate->curexc_traceback;
+ tstate->curexc_type = type;
+ tstate->curexc_value = value;
+ tstate->curexc_traceback = tb;
Py_XDECREF(tmp_type);
Py_XDECREF(tmp_value);
Py_XDECREF(tmp_tb);
Diff finished. Mon Aug 9 18:09:16 2021
+138 -26
View File
@@ -1,48 +1,160 @@
2022-01-31 Krystian Safjan <ksafjan@gmail.com>
2020-08-11 prculley <paulr2787@gmail.com>
* po/pl.po: Fixes suggested after review by @stojex
* po/ar.po, po/bg.po, po/br.po, po/ca.po, po/cs.po, po/da.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:
Remove duplicates in Translations
2022-01-07 Krystian Safjan <ksafjan@gmail.com>
2020-08-10 prculley <paulr2787@gmail.com>
* po/pl.po: Update Polish translation - Consistent usage of "Tag": was "Tag" or "Atrybut", note that "Attribute" (atrybut) is something different than tag - "Magazyn" (repository) renamed to "Repozytorium" - other fixes and addons
* 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/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
2022-01-29 Mirko Leonhaeuser <mirko@leonhaeuser.de>
2020-08-10 Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: get German translation with manual in sync (Display name
editor)
* po/de.po: Update German translation
2022-01-25 pehlm <github1@m.pekholm.org>
2020-08-10 Paul Culley <paulr2787@gmail.com>
* po/sv.po: Minor update of Swedish translation
* po/pl.po: Fix Charts/Pedigreeview tooltip Polish translation
(#1092) Fixes #11852
2022-01-04 Tian Shixiong <tiansworld@fedoraproject.org>
2020-08-10 Krystian Safjan <ksafjan@gmail.com>
* po/zh_CN.po: Minor update to zh_CN translation
* po/pl.po: Fix and add objects to Polish translation of Gramps
(#1088)
2021-11-03 Mirko Leonhaeuser <mirko@leonhaeuser.de>
2020-07-23 Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: small German translation fixes
* po/de.po: German translation fixed typo
2021-11-01 Mirko Leonhaeuser <mirko@leonhaeuser.de>
2020-07-17 niememat <niememat@gmail.com>
* po/de.po: Fixed German translation error of "Character set
encoding"
* po/fi.po: Update finnish translation
2021-10-25 Mirko Leonhaeuser <mirko@leonhaeuser.de>
2020-06-07 Tian Shixiong <tiansworld@fedoraproject.org>
* po/de.po: Fixed German translation error of "Graph generations"
* po/zh_CN.po: Update Simplified Chinese translation for gramps51
branch
2021-09-19 Mirko Leonhaeuser <mirko@leonhaeuser.de>
2020-01-11 giansalvo <pioggia3+github@gmail.com>
* po/de.po: Fixed German translation error of "filter person"
* 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/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'
2021-08-30 Mirko Leonhaeuser <mirko@leonhaeuser.de>
2020-07-07 Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: fixed error in German translation found during manual
translation also fixed in master
* po/de.po: Germen fixed translation error of Media:
2021-08-11 Mirko Leonhaeuser <mirko@leonhaeuser.de>
2020-07-04 Leonhaeuser <mirko@leonhaeuser.de>
* fixed German translation of 'Descendant families of' already done in
trunk Weblate
* po/de.po: Fix typo
2020-07-01 Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: update German translation
2020-04-23 SNoiraud <serge.noiraud@laposte.net>
* 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/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>
* po/sv.po: A little adjustment to Swedish translation
2020-06-21 pehlm <par.ekholm@pekholm.org>
* po/sv.po: Updates to Swedish translation
2020-06-20 Megumi Sakata <megumi.sakata.k@gmail.com>
* po/ja.po: Update Japanese translation
2020-04-28 vantu5z <vantu5z@mail.ru>
* po/ru.po: update Russian translation
2020-04-24 niememat <niememat@gmail.com>
* po/fi.po: Fix translation in Finnish
2020-04-18 Joan Creus <joan.creusandreu@gmail.com>
* po/ca.po: Updating Catalan translation
2020-04-18 Joan Creus <joan.creusandreu@gmail.com>
* po/ca.po: Updating Catalan translation
2020-04-08 Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: update Germn translation
2020-03-26 vantu5z <vantu5z@mail.ru>
* po/ru.po: update Russian translation
2020-03-25 Translator5 <Translator5@users.noreply.github.com>
* po/ru.po: [Language: Russian] Maintenance/gramps51 (#1027) * some Russian translations updates
2020-03-03 Joan Creus <joan.creusandreu@gmail.com>
* po/ca.po: Updating Catalan translation
2020-02-29 Joan Creus <joan.creusandreu@gmail.com>
* po/ca.po: Updating Catalan translation
2020-02-25 Bernard Banko <beernarrd@gmail.com>
* po/sl.po: V&O changed to PZV to avoid ampersand
2020-02-07 pehlm <par.ekholm@pekholm.org>
* po/sv.po: Minor update to Swedish translation
2020-01-31 vantu5z <vantu5z@mail.ru>
* po/ru.po: update Russian translation
2020-01-26 Bernard Banko <beernarrd@gmail.com>
* po/sl.po: Slovenian translation update
2020-01-23 prculley <paulr2787@gmail.com>
* po/ru.po: Fix typo in Russian translation
2020-01-21 système <romjerome@users.noreply.github.com>
* po/fr.po: typos in french translation #11534 #10534
2020-01-21 Fedik <getthesite@gmail.com>
* Ukrainian translation update
+231 -232
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -7166,7 +7166,7 @@ msgstr "tuntematon"
#: ../gramps/gen/lib/date.py:281
#, python-format
msgid "greater than %s years"
msgstr "enintään %s vuotta"
msgstr "korkeitaan %s vuotta"
#: ../gramps/gen/lib/date.py:286 ../gramps/gen/lib/date.py:314
#: ../gramps/gen/lib/date.py:316 ../gramps/gen/lib/date.py:322
+1 -1
View File
@@ -20871,7 +20871,7 @@ msgid ""
"Changes cannot be completely abandoned because the number of changes made in "
"the session exceeded the limit."
msgstr ""
"Les changements ne peuvent être complètement abandonnés car le nombre de "
"Les changements ne peuvent être complètement abandonner car le nombre de "
"modifications effectuées pendant la session excèdent la limite."
#: ../gramps/gui/viewmanager.py:802
+4860 -3803
View File
File diff suppressed because it is too large Load Diff
+989 -838
View File
File diff suppressed because it is too large Load Diff
+1383 -1178
View File
File diff suppressed because it is too large Load Diff
+10 -10
View File
@@ -21,14 +21,14 @@
# Jens Arvidsson <jya@sverige.nu>, 2002-2005.
# 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.
# Pär Ekholm <pehlm@pekholm.org>, 2018, 2019, 2020, 2021, 2022.
# Pär Ekholm <pehlm@pekholm.org>, 2018, 2019, 2020.
msgid ""
msgstr ""
"Project-Id-Version: sv\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-15 22:20+0200\n"
"PO-Revision-Date: 2022-01-25 17:50+0100\n"
"Last-Translator: Pär Ekholm <pehlm@pekholm.org>\n"
"PO-Revision-Date: 2020-08-12 20:03+0200\n"
"Last-Translator: Pär Ekholm <pehlm@pekholm.se>\n"
"Language-Team: \n"
"Language: sv\n"
"MIME-Version: 1.0\n"
@@ -7501,7 +7501,7 @@ msgstr "Vald"
#: ../gramps/gen/lib/eventtype.py:181
msgid "Emigration"
msgstr "Utvandring"
msgstr "Utflyttning"
#: ../gramps/gen/lib/eventtype.py:182
msgid "First Communion"
@@ -7509,7 +7509,7 @@ msgstr "Första nattvarden"
#: ../gramps/gen/lib/eventtype.py:183
msgid "Immigration"
msgstr "Invandring"
msgstr "Inflyttning"
#: ../gramps/gen/lib/eventtype.py:184
msgid "Graduation"
@@ -7704,7 +7704,7 @@ msgstr "vald"
#: ../gramps/gen/lib/eventtype.py:231
msgid "Emigration abbreviation|em."
msgstr "utv."
msgstr "utfl."
#: ../gramps/gen/lib/eventtype.py:232
msgid "First Communion abbreviation|f.comm."
@@ -7712,7 +7712,7 @@ msgstr "1.nattv."
#: ../gramps/gen/lib/eventtype.py:233
msgid "Immigration abbreviation|im."
msgstr "inv."
msgstr "infl."
#: ../gramps/gen/lib/eventtype.py:234
msgid "Graduation abbreviation|grad."
@@ -11225,7 +11225,7 @@ msgstr "OS: %s"
#: ../gramps/gui/clipboard.py:70
msgid "manual|Using_the_Clipboard"
msgstr "Använda urklipp"
msgstr "Hur använda urklipp"
#: ../gramps/gui/clipboard.py:401
#: ../gramps/gui/filters/sidebar/_familysidebarfilter.py:126
@@ -12258,7 +12258,7 @@ msgstr ""
#: ../gramps/gui/configure.py:1980
msgid "Try to find"
msgstr "Försöka hitta"
msgstr "Försök hitta"
#: ../gramps/gui/configure.py:1991 ../gramps/gui/configure.py:2092
msgid "Choose font"
@@ -33921,7 +33921,7 @@ msgstr ""
"\n"
"Ett mediaobjekt är en samling information om ett mediaobjekts datafil: namn, "
"sökväg, beskrivning, ID, notiser, källreferenser etc. Dessa data "
"%(bold_start)sinnehåller inte själva datafilen%(bold_end)s.\n"
"%(bold_start)sinnehåller inte datafilen självf%(bold_end)s.\n"
"\n"
"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 "
+3445 -2687
View File
File diff suppressed because it is too large Load Diff
+1 -3
View File
@@ -306,9 +306,7 @@ class test(Command):
raise RuntimeError("No build directory. Run `python setup.py build` before trying to run tests.")
os.environ['GRAMPS_RESOURCES'] = '.'
all_tests = unittest.TestLoader().discover('.', pattern='*_test.py')
result = unittest.TextTestRunner(verbosity=self.verbose).run(all_tests)
if not result.wasSuccessful():
raise SystemExit('ERROR: Unit test failure.')
unittest.TextTestRunner(verbosity=self.verbose).run(all_tests)
#-------------------------------------------------------------------------
#