Compare commits

...
Author SHA1 Message Date
John Ralls e7247af252 Release Gramps-5.0.2 on Mac. 2019-08-24 16:11:26 -07:00
John Ralls ed02e39d5d Revert "Add entitlements file for hardening and notarizing Gramps.app."
This reverts commit e72695ca90.
I'd already added the correct version of the file.
2019-08-17 17:39:06 -07:00
John Ralls e72695ca90 Add entitlements file for hardening and notarizing Gramps.app. 2019-08-17 17:37:18 -07:00
John Ralls d5db6e2b65 An entitlements plist for codesigning Gramps.
Python is an interpreter and therefore needs to create executable
memory. Since it doesn't know how to sign that memory it requires
the allow-unsigned-executable-memory entitlement to run in a hardened
runtime. One must apply this entitlement to both Gramps.app and
Gramps.app/Contents/MacOS/dot when codesigning them.
2019-08-16 12:41:18 -07:00
Zdeněk Hataš 1294d53bc1 Update Czech translation 2019-08-15 13:08:56 +02:00
Ross GammonandNick Hall bdaa0d8c59 Update Debian files to 5.0.2 release 2019-08-11 15:49:23 +01:00
niememat d2deae8ff7 Fix translation in Finnish 2019-08-10 13:40:42 +03:00
niememat a4cbdb34df Update finnish translation 2019-08-09 13:28:22 +03:00
prculley fe87150c14 Bump to v5.0.3 2019-08-08 12:09:55 -05:00
prculley f6b81c9da8 Prepare for Release 5.0.2 2019-08-08 12:01:46 -05:00
Paul CulleyandGitHub e59aa58c63 Fix some Gramplets not updating during tree changes after db change. (#865)
Fixes #11234
2019-08-08 11:50:47 -05:00
Paul CulleyandGitHub 3e2e8a837f Fix Events Grampslet for bad sort order on dates/ages (#867)
Fixes #7616
2019-08-08 11:49:55 -05:00
Paul CulleyandGitHub c0ff650748 Fix References Tab to update on Deletes of items when editor is open (#864)
Fixes #11231
2019-08-08 10:00:14 -05:00
Paul CulleyandGitHub 44104671b9 Fix GEDCOM import for better support of TMG (#861)
Fixes #11224
2019-08-08 09:59:14 -05:00
Paul CulleyandGitHub afa8e73486 Fix Edit Link 'New' button to work (#863)
Fixes #11225
2019-08-07 13:49:31 -05:00
Paul CulleyandGitHub 27c38018fa Fix GEDCOM importer to properly handle multiple surnames per 5.5.1 (#862)
Fixes #11228
2019-08-07 13:48:49 -05:00
Serge NoiraudandPaul Culley 96fcef2a84 Narrative web: Sort problem with places. (#854)
* Narrative web: Sort problem with places.

Fixes #10868.

Places list is not sorted depending on the selected language.

If you start gramps in english or another language then try to generated
a narrative web report in another language, the navigation alphabet is
incorrect. This is true for the place list and the person list.
The problem was related to pyICU.

* Narrative web: some pylint improvement.
2019-08-01 08:31:39 -05:00
Paul CulleyandGitHub 7e7dd68b58 Fix Navigator sidebar so can change view type with proper resize (#853)
Fixes #6422, #11164
2019-08-01 08:27:38 -05:00
Paul CulleyandGitHub ab5a810990 fix crash when using sidebar filter and merging in another view (#858)
Fixes #11089, #11064, #11134
2019-07-31 16:50:22 -05:00
Paul CulleyandGitHub f7d58f4c28 Fix AncestorTree so add siblings to center person works (#852)
Fixes #11215
2019-07-31 16:48:55 -05:00
Paul CulleyandGitHub 949296a801 Fix graphs on Windows for font selection not working (#849)
Fixes #11212
2019-07-31 16:45:15 -05:00
Paul CulleyandGitHub 15e033c02c Fix dbapi reindex_reference_maps tool to properly close transaction (#847)
Fixes #11195
2019-07-31 16:35:05 -05:00
Paul CulleyandSam Manzi 80749afd09 Fix zoom via mouse wheel in media event editor selectionwidget (#835)
also fixes zooming with scroll bars always present

Fixes #11198
2019-07-11 10:52:36 +10:00
vantu5z 72d8d2d3cf update Russian translation 2019-06-21 11:09:19 +03:00
MattkmmrandSam Manzi 1b7b20756f Fix metadataviewer.py (#823)
Fix so that metadata is actually detected and displayed (signal was not getting detected).
2019-06-14 10:57:15 +10:00
niememat eff15c1ce3 Update finnish translation 2019-06-12 11:55:03 +03:00
John Ralls b3715efea9 Fix graphviz and exiv2 download URLs. 2019-06-11 14:59:54 -07:00
John Ralls cfe8c42d28 Update dependency versions and download paths. 2019-06-11 12:08:32 -07:00
Serge NoiraudandSam Manzi 7dc532c743 Avoid comma in a lat/lon entry field. (#812)
* Avoid comma in a lat/lon entry field.

* Be more precise on the tooltip text.

* conv_lat_lon should not accept comma in lat/lon

* Tests failed with comma in lat/lon

* geoplaces fails to center if bad lat/lon
2019-06-10 17:27:03 +10:00
Serge NoiraudandSam Manzi 2951a0acf0 Avoid invalid characters in the entry field (#811)
In this patch:
 1 - If you copy/paste strings from another application,
     you can add CR, LF, TAB and other special characters. I remove them.
 2 - suppress all leading and trailing spaces for these entry field.
2019-06-10 17:12:48 +10:00
milotypeandSam Manzi 6d53c3a91c Update Croatian translation (#824) 2019-06-10 11:57:46 +10:00
Paul CulleyandSam Manzi 7ca19214d6 Fix crash for multiple deletes in one transaction (#814)
Fixes #11117
2019-06-10 11:39:54 +10:00
Ed BennettandSam Manzi 87955ed2e9 Adjust translation strings for unmarried partners to give correct text in English (#818)
Fixes #11109
2019-06-10 11:07:22 +10:00
John Ralls 9d3f17e377 Disable vala for gexiv2, it breaks introspection. 2019-05-19 21:01:55 -07:00
caignerandNick Hall 903069fd34 changed 'Edit ->Set Home Person' to 'Edit -> Set Home Person' 2019-05-12 13:38:03 +01:00
système 1a0390f623 typo on french translation 2019-04-14 19:30:04 +02:00
Paul CulleyandSam Manzi e9412a2479 Fix failure after Gedcom import if missing objects were found (#807)
Fixes #11082
2019-04-14 10:42:05 +10:00
John Ralls c615b4dc32 [maclocale] Fix none type has no len().
Fixes #11075
2019-03-26 08:52:29 -07:00
Paul CulleyandSam Manzi 450217a636 Fix Gedcom import so it doesn't create completely empty Birth events (#799)
Fixes #10145

Note: a completely empty birth event is removed by Check and Repair; this is wrong in that sometimes we know a person is born, but not date/place. In Gedcom this is indicated by "1 BIRT Y" lines.

So this PR adds a description to the birth event. This is not an issue for other event types, the C&R tool sees the non-default type and leaves it alone, but birth is the default type.
2019-03-17 16:51:15 +11:00
milotypeandSam Manzi 9a398cbcfd Update Croatian translation (#803)
update with current maint50 pot file
2019-03-17 16:10:15 +11:00
Paul CulleyandSam Manzi aff888a0b5 Fix Relationship view so ages are according to Preferences (#798)
Fixes #11040
2019-03-17 15:18:00 +11:00
Paul CulleyandSam Manzi 71ad5ffb04 Fix Person Editor Events to properly update during external changes (#797)
like Event delete or update.

Fixes #11051

Looks like someone simply forgot to register the handles with the callman...

I checked other similar cases and did not see any other issues.
2019-03-17 15:02:29 +11:00
Paul CulleyandSam Manzi 100d6d0672 Gedcom fixes for mime and finding media (#795)
* Fix Gedcom import/export for more comprehensive mime types

Fixes #11041

* Fix Gedcom import to better find media files

Issue #11041

* Fix Gedcom test files for media mime and error location message
2019-03-17 14:44:42 +11:00
Serge NoiraudandSam Manzi d96b6d19b8 Unhandled exception in Geography editor (#793)
Fixes #11048

better pylint score
remove unused code
2019-03-17 14:26:11 +11:00
Paul CulleyandSam Manzi bf4b3962bc Fix relationshippathbetween filter rule when parent is missing (#792)
Fixes #11049

Another HandleError issue, this one hidden by the raw except. Filter rule just did not work if a family in the path had a missing parent.
2019-03-17 14:12:11 +11:00
Paul CulleyandSam Manzi 51f44c2fd7 Fix Graphs that use graphdoc pdf via Ghostscript with multi-page (#791)
for poor font rendering of some characters (thanks to Ken Sharp)

Fixes #11047
2019-03-17 13:55:54 +11:00
Paul CulleyandSam Manzi 00c74d139a Fix example gramps files so media is found (#785)
Fixes #11015

On Windows the location of the example files is "c:\program files\grampsaio64-5.0.1\share\doc\gramps\example\gramps".

On my Ubuntu install from the .deb file these files are in "/usr/share/doc/gramps/example/gramps"

Since the default GRAMPS_RESOURCES value for each system is the 'share', to find the media files we need to append "/doc/gramps/example/gramps" to have the example files work properly.
2019-03-17 13:41:35 +11:00
Paul CulleyandSam Manzi 54c3b29793 fix finddupes tool when run from Match Threshold screen again (#790)
after merge.  Avoids HandleError because potentials dict is not
cleared.

Fixes #11044
2019-03-17 13:26:06 +11:00
vantu5z d1ee70a0d2 update Russian translation 2019-03-12 14:38:06 -03:00
Bernard Banko c4f89c4034 Slovenian translation correction 2019-02-27 19:00:02 +01:00
système 8615021d37 update french translation 2019-02-16 09:54:45 +01:00
système c3c006c465 update (partial) french translation 2019-02-14 12:21:22 +01:00
système b389842af1 merge with last template 2019-02-14 11:43:03 +01:00
système aba0303260 bug 10841: Typos in the French translation 2019-02-14 11:06:16 +01:00
système 3bba6f57e4 fix a typo 2019-02-14 10:42:29 +01:00
Paul CulleyandSam Manzi f84c2ecf11 Fix Gedcom import for multiple notes on OBJE (MULTIMEDIA_LINK) (#782)
Fixes #10277
2019-02-14 15:32:16 +11:00
Paul CulleyandSam Manzi 7a82b78ff9 Deal with SQLite db corrupted by None name mapping (#784)
Fixes #11011
2019-02-14 15:05:01 +11:00
Paul CulleyandSam Manzi 39a0d8c648 Fix XML import to add tags to Events, Sources, Places, Repos, Cits (#780)
Fixes #11004
2019-02-14 14:45:28 +11:00
Paul CulleyandSam Manzi 62f8049d6a Fix for delete of a ref'd primary obj while editing an added obj. (#779)
Also fixed to update the ref'd obj on changes from outside the
editor.

Fixes #10999, #11000, #11001, #11002
2019-02-14 14:31:21 +11:00
Paul CulleyandSam Manzi d65ad470d6 Fix Place Tree view when using enclosed by sidebar filter (#764)
the filter was incorrectly using a standard place cursor instead of
the tree cursor.

Fixes #10948
2019-02-14 14:08:53 +11:00
Bernard Banko be98b673df Slovenian language update 2019-02-10 18:26:31 +01:00
Luigi Toscano f088d940a6 Italian translation updates
- restore few strings from the welcome Gramplet that got lost
  after the split of a messages in smaller messages;
- fix few errors.
2019-02-10 16:09:33 +01:00
Luigi Toscano 92328d4332 Refresh the Italian po file 2019-02-10 16:01:18 +01:00
Paul CulleyandSam Manzi b4e4dbbcf2 Fix EditFamily for adding a child to single parent family with (#777)
Surname guessing set to combination.

Fixes #10997
2019-02-03 09:30:45 +11:00
Paul CulleyandSam Manzi 4c6c052729 Fix Descendent Tree report for crash when person has multiple (#773)
families and one of them doesn't have a spouse.

Fixes #10983, #10971, #10661
2019-01-23 08:44:40 +11:00
Leonhaeuser 257b091cac Update German translation 2019-01-22 18:39:12 +01:00
Paul CulleyandSam Manzi abcf304ea7 Fix Name editor crash after clearing a group_as name on dbapi dbs (#771)
Fixes #10981
2019-01-22 14:19:25 +11:00
Serge NoiraudandSam Manzi dba752c328 We should stay on the selected item in list views: (#770)
Fixes #10966

When we try to merge two objects, we should stay on the selected row
in list views.
This problem occurs for persons, families, events, places, sources,
citations, repositories, media and notes.

Another problem:
In case we select the first family and select the gramps_id of the
second family, the new gramps_id is ignored: problem in MergeFamilyQuery
2019-01-22 13:45:04 +11:00
Paul CulleyandSam Manzi 0dd2b9d0fd Fix Relationship Graph; extra people when using filters & subgraphs (#769)
subgraph option wasn't checking parents against filtered results

Fixes #10947
2019-01-22 13:31:22 +11:00
Christian AignerandSam Manzi 520c81a355 [German] Change Text on Settings -> Colour (#767)
* Unified the labels.
     The overall appearance looks now a bit cleaner.

   * Fixed a grammatical bug (das -> dass)
2019-01-22 13:16:40 +11:00
Paul CulleyandSam Manzi 807eab7cd9 fix Place Format Editor file save/load for difficult names (#766)
Fixes #10949
2019-01-22 13:00:16 +11:00
Serge NoiraudandSam Manzi 2bc5f63406 Not all place types appears on family lines Graph (#763) 2019-01-22 12:45:54 +11:00
Christian AignerandSam Manzi 344dd69a9d Corrections in 'Tip of Day'; changed 'Schlussnotizen' to 'Quellennachweis' (#753) 2019-01-22 12:03:45 +11:00
vantu5z 757854e566 update Russian translation 2019-01-12 19:58:46 +03:00
Sam ManziandGitHub 45d3c43680 Remember location of Sort Events Tool (#750)
Issue #9795
2019-01-12 14:04:30 +11:00
Zdeněk Hataš 732f9fae16 Update Czech translation 2019-01-11 18:01:58 +01:00
Paul CulleyandSam Manzi c7f2b19784 Fix Media editor when using double click the preview of added media (#752)
Fixes #10923
2019-01-06 12:11:12 +11:00
Leonhaeuser 30628cf6c7 update German translation 2019-01-05 11:26:38 +01:00
niememat 36e43562e7 Fix and updated translation in Finnish 2019-01-05 07:39:31 +02:00
P Ekholm 80b99925bd Update Swedish translation 2019-01-04 17:08:55 +01:00
prculley d78aa8cd8d Update gramps.pot 2019-01-02 12:13:11 -06:00
prculley 4087ae800c Revert "update gramps.pot", the update_po.py doesn't work with glade files
on Windows

This reverts commit fcfecef459.
2019-01-01 15:58:05 -06:00
prculley fcfecef459 update gramps.pot 2019-01-01 11:35:47 -06:00
prculley 7131eec356 Fix update_po.py to run on Windows 2019-01-01 11:33:52 -06:00
caignerandNick Hall 3ada5081b5 German translation corrections 2018-12-31 18:38:40 +00:00
Leonhaeuser e4450cb34b update German translation 2018-12-30 12:44:00 +01:00
Serge NoiraudandSam Manzi 97aedaae99 Avoid leading and trailing spaces when copy/paste (#747)
coordinates from a map provider.

Fixes #10937
2018-12-29 16:41:24 +11:00
John RallsandSam Manzi 285fbf2c97 Set correct font resolution for Mac when drawing text directly to cairo. (#745)
Fixes #0010924
2018-12-29 16:01:14 +11:00
Pär Ekholm 6e7e233155 Add some untranslated strings in po/sv.po 2018-12-28 21:47:44 +01:00
Pär Ekholm 436ca0df98 Merge remote-tracking branch 'upstream/maintenance/gramps50' into maintenance/gramps50 2018-12-28 21:42:55 +01:00
vantu5z b17c230f56 update Russian translation 2018-12-28 05:37:19 +03:00
prculley 3cb57426b1 remove crlf line endings on da.po 2018-12-26 09:44:03 -06:00
John Ralls 255caf1ab7 Remove extraneous setting of GTK_IM_MODULE_FILE.
Fixes #10929
2018-12-24 10:15:11 -08:00
Zdeněk Hataš 7b8666e454 Update Czech translation 2018-12-22 16:24:28 +01:00
RossGammonandSam Manzi 9e9d4e6369 Update debian files after 5.0.1 release (#744) 2018-12-21 10:09:29 +11:00
prculley 508df3048d Bump to 5.0.2 2018-12-20 11:20:59 -06:00
prculley cb8bf0d00a Release Gramps 5.0.1 2018-12-20 11:16:55 -06:00
Paul CulleyandGitHub 44180b45e2 Help issues for bug 9042 (#738)
* Media Manager: add help button and remove '...'

Issue #9042

* Edit/Preferences: add Help button

Issue #9042

* Style Editor, Document Styles dialog: add help buttons

Issue #9042

* Fix Select Person dialog Help button URL

Issue #9042

* Fix Select Repository dialog Help button URL

Issue #9042

* Relationship Calculator: Add help button

Issue #9042

* Reorder Relationships dialog; add Help button

Issue #9042

* Generate Book Dialog; Fix Help URL

Issue #9042

* Manage Book dialog; add help button

Issue #9042

* Fix Detached Gramplets Help button URL when 'help_url' not in .gpr

Issue #9042

* Fix help URLs when they contain illegal characters and to match wiki
section targetID algorithm

Issue #9042
2018-12-20 09:10:58 -06:00
prculley 03b151b472 Updated Hungarian translation 2018-12-20 08:43:24 -06:00
milotypeandPaul Culley ec075e360b Croatian localisation updates (#741)
* Update/Completion Croatian translation

This is a big update. The croatian translation is now 100% complete.
Translated all missing strings, made lots of corrections, improved
consistency in the wording, tested thoroughly.  Also, it will work
with the updated datehandler file "_date_hr.py", which i'll be
updating simultaneously.

* Croatian Datehandler update

Made changes to fit croatian specific date handling. Also because i've
updated the hr.po file. I've tested it with the present
"_datedisplay.py" of the maintainance/gramps50 branch.

Basically it would be great, if next to the obligatory "display_iso"
format, only two more formats would show up in the croatian drop-down
menus: "dd_dformat01" (numerical) and "dd_dformat04". Other formats
are unneeded.

9. 5. 2018.  => ordinal numbers, all separated by spaces
9. svibnja 2018.  => ordinal numbers and genitiv month's form,
all separated by spaces
2018-12-20 08:35:33 -06:00
Nick HallandPaul Culley e4cbca4b73 Fix contents of enclosed_by secondary dbapi column (#742)
The enclosed_by column should contain the first value in the list
instead of the last.

Resolves #10907.
2018-12-19 18:10:00 -06:00
Leonhaeuser 4eda6d1afa update German translation 2018-12-18 21:04:03 +01:00
SNoiraudandNick Hall 496d4e1703 Google maps URL problem
Fixes #10772
2018-12-18 14:31:47 +00:00
prculleyandNick Hall 8d5f2bd050 Fix ODT reports with links when run in non-English languages
Fixes #10911
2018-12-18 14:24:51 +00:00
prculleyandNick Hall 96e4707c89 Allow addon Reports to specify a help button URL for options dialog
Fixes #10910
2018-12-18 14:21:30 +00:00
Nick Hall 8fc03f85a1 Fix Rebuild Secondary Indexes tool for dbapi backends
For dbapi backends, this tool will update the secondary columns
that are used for indexing.

Resolves #10757.
2018-12-18 14:18:03 +00:00
prculleyandNick Hall b4b7911405 Fix dbapi set_name_group_mapping to properly close transaction
Fixes #10730
2018-12-18 14:14:59 +00:00
prculleyandNick Hall 88373c0eb6 Fix Russian date handler crash when Russian .po isn't present
Fixes #10855
2018-12-18 14:10:56 +00:00
Leonhaeuser e8679a1eed update German translation 2018-12-04 18:35:30 +01:00
vantu5z b77378d2a1 update Russian translation 2018-12-04 15:58:07 +03:00
Pär Ekholm f921bba612 Merge remote-tracking branch 'upstream/maintenance/gramps50' into maintenance/gramps50 2018-11-29 10:25:48 +01:00
niememat 58ffea1537 Update finnish translation 2018-11-29 06:51:45 +02:00
Paul CulleyandSam Manzi 1ae319ef2a Fix Quickview for missing table data on some Gtk Versions (#593)
Issue #10448

Issue #7867
2018-11-29 10:55:12 +11:00
Paul CulleyandSam Manzi 0340337107 Fix startup messages with bad filename (#720)
Fixes #10885
2018-11-29 10:37:49 +11:00
Paul CulleyandSam Manzi bb1d59a29d Restrict Place view Name col to the primary name (#673)
while allowing searchbar to find alt and primary names

related to
Issue #9276

while allowing searchbar to find alt and primary names.

Currently, the Place View and Place Selector name column shows a comma separated list of the primary and alt names for a place. With the advent of GeoNames and Gov data, the alt names lists are getting populated with (sometimes long) lists of (sometimes duplicated) names. This doesn't look very good in the view. I've gotten a couple of email complaints about this.

The Name column was originally extended (for Gramps50) to include alt names to allow the use of the top search bar (enabled when sidebar is turned off via 'View/Sidebar'), to perform a search through all the alt names as well as primary name. https://gramps-project.org/bugs/view.php?id=9276

This PR creates a new (hidden) column in the place model containing the full name list, and reverts the 'Name' column to the primary name. It also modifies the PlaceSelector and PlaceView classes to cause the search bar to use the new (hidden) column.
2018-11-29 10:23:11 +11:00
Paul CulleyandSam Manzi d01afb3000 Fix Person Sidebarfilter when using 'Event' and Reg expressions (#729)
Fixes #10659
2018-11-29 09:56:39 +11:00
Paul CulleyandSam Manzi a99c02d9a7 Fix Find Duplicate People; exception when deleting someone shown (#728)
outside of the tool
Fixes #10875
2018-11-29 09:42:03 +11:00
Paul CulleyandSam Manzi dd43cde20e Gedcom export, upgrade OBJE handling to Gedcom 5.5.1 style (#702)
Fixes #10797
2018-11-29 09:28:56 +11:00
Paul CulleyandSam Manzi e356573605 Fix CSV import to set marriage event role to family (#725)
Fixes #9952
2018-11-29 09:15:01 +11:00
Paul CulleyandSam Manzi 6f7699480d Update gramps bugtracker URL in all po files (#710)
Fixes #10543
2018-11-29 09:01:56 +11:00
Serge NoiraudandSam Manzi 3798175b50 Narrative Web : thumbnails bad alignment. (#691)
* Narrative Web : thumbnails bad alignment.

Fixes #10854

also solves the following problems in the Nebraska style sheet :
 1 - float parameter has no value "center"
 2 - "[" instead of ";" at end of line 1100

* overlapping with long titles
2018-11-29 08:48:27 +11:00
Paul CulleyandSerge Noiraud 6672230f23 Fix typo in CitationListModel for sort change (#730) 2018-11-28 19:27:47 +01:00
Serge NoiraudandGitHub 8c35277267 Fix Adding "ToDo" note crash when no active object (#685)
* Fix Adding "ToDo" note crash when no active object

Fixes #10795

* Better message when no active object.

* resolve conflict: Fixes #10795
2018-11-28 12:58:46 +01:00
Paul CulleyandSam Manzi 38bfb760a3 Fix Citation List view Source Last Changed Column to sort properly (#723)
Fixes #10893
2018-11-28 19:04:45 +11:00
pmrapsandSam Manzi df48f37a46 some pt_PT.po translation changes (#703)
* some header changes

* more changes
2018-11-28 18:47:16 +11:00
Paul CulleyandSam Manzi a02d7d0176 Fix for re-entrant main window close when user hits 'x' again (#724)
Fixes #10897
2018-11-28 18:33:06 +11:00
Paul CulleyandSam Manzi 999a3937d1 Fix exception when closing early editor in tree of editors (#706)
Fixes #10876
2018-11-28 18:05:14 +11:00
Serge NoiraudandSam Manzi a7e683d909 Narrative Web: thumbnails problems in some cases. (#722)
Fixes #10890
2018-11-28 16:28:41 +11:00
Paul CulleyandSam Manzi 8e09235351 Fix 'Generate Book' dialog for crash on 'x' close (#726)
Fixes #10901
2018-11-28 16:14:42 +11:00
Paul CulleyandSam Manzi b934b0d424 Fix ToDo Gramplet for multiple attempts to edit a note (#719)
Fixes #10645
2018-11-28 15:34:12 +11:00
Paul CulleyandSam Manzi 9cc6e3a05e Fix Dashboard for multiple copies of a Gramplet (#718)
* Fix Dashboard for multiple copies of a Gramplet

Fixes #10650

* Fix Dashboard to recall minimized or undocked Gramplets
2018-11-28 15:17:19 +11:00
Paul CulleyandSam Manzi d6dd1dc221 Fix Statusbar update to avoid intermittent exception on closed db (#716)
Fixes #10882
2018-11-28 14:56:36 +11:00
Paul CulleyandSam Manzi 21206af12b Fix FilterParser for much older 3.x custom_filters.xml files (#715)
Fixes #8075

Fixes #10669

Fixes #10516
2018-11-28 14:36:41 +11:00
Paul CulleyandSam Manzi 6506e85ea9 Fix IsDuplicatedAncestorOf filter rule to avoid crash on tree loop (#714)
Fixes #10685
2018-11-28 14:06:43 +11:00
Serge NoiraudandSam Manzi 1d3202710a Narrative web : use latest version from openlayers. (#713)
Fixes #10884
2018-11-28 13:43:40 +11:00
Paul CulleyandSam Manzi 7078ca18ee Fix StyledTextEditor EditLink for root text changed to zero length (#709)
in the background

Fixes #9750
2018-11-28 13:26:47 +11:00
Paul CulleyandSam Manzi b1fc676a55 Fix AgeOnDate and some reports using SimpleAccess for missing surname (#708)
Fixes #9958

Fixes #9800
2018-11-28 13:13:30 +11:00
Paul CulleyandSam Manzi 5ef7739c60 Fix crash when a filter with loop in definition is defined (#707)
Fixes #10621
2018-11-28 12:59:27 +11:00
Paul CulleyandSam Manzi b4e5bd9eb2 Fix HandleErrors related to LDS (#697)
* Fix ReferencedBySelection proxy for 'None' LDS Parents

Fixes #10865

* Fix HandleError in Citations Gramplet for lds place missing
2018-11-28 11:47:49 +11:00
Paul CulleyandSam Manzi e0e19492cd Change PlaceView drag from whole row to just icon during drag (#695)
Fixes #10863
2018-11-28 11:25:44 +11:00
Paul CulleyandSam Manzi 817f4b7205 Add drag Icon to drags from DisplayTabs Gramplet lists (#694)
Fixes #10859
2018-11-28 11:08:30 +11:00
Paul CulleyandSam Manzi 4c7b24ba30 Fix dialogs for 'Help' button closes the dialog, and non-functional 'Help' (#727)
* Fix Family Tree manager for 'Help' button closes dialog

Fixes #10589

* Fix selectors for 'Help' button closes dialog

Fixes #10589

* Fix 'Generate Book' dialog for 'Help' button closes dialog

Fixes #10589

* Fix TestcaseGenerator for 'Help' button closes dialog

Fixes #10589

* Fix Selectors to enable the 'Help' buttons to actually work

Fixes #10589
2018-11-28 08:30:06 +11:00
Pär Ekholm c7d552c238 Merge branch 'maintenance/gramps50' of https://github.com/gramps-project/gramps into maintenance/gramps50 2018-11-24 18:20:06 +01:00
prculleyandNick Hall b32e9d812e Avoid HandleError when dragging an Added Family from EditFamily
Fixes #10858
2018-11-24 11:35:01 +00:00
prculleyandNick Hall 8da22fcbbf Avoid HandleError when dragging an Added Person from EditPerson
Fixes #10857
2018-11-24 11:34:27 +00:00
prculleyandNick Hall 582d61e67e Fix Clipboard rows cannot be sorted via drag/drop
Fixes #10849
2018-11-24 11:23:44 +00:00
prculleyandNick Hall c110d9bc23 Better default directory choices for import/export
Use recent-export-dir as default for Export View
instead of the console default directory, which can be where
program resides (on Windows), or other inappropriate place.

Use USER_HOME for default directory on 'Export' (recent-export-dir)
if first run (default settings) rather than default directory, which
can be where program resides (on Windows), or other inappropriate
place.

Use USER_HOME for default directory on 'Import' (recent-import-dir)
if first run (default settings) rather than recent file which is
generally set to the grampsdb path.

Fixes #10802
2018-11-24 11:20:45 +00:00
SNoiraudandNick Hall f4966ca793 Records Report: call name not underlined in HTML
Fixes #10816
2018-11-20 20:38:37 +00:00
ChristopheandNick Hall 2d0a5ed03c Fix French translation 2018-11-20 19:28:50 +00:00
prculleyandNick Hall 79074587f3 Fix InteractiveSearch for find before model is populated
Fixes #10844
2018-11-20 18:18:12 +00:00
prculleyandNick Hall c660ed1728 Fix Gedcom export for incorrect escaping with @#DFRENCH R@
Fixes #10833
2018-11-20 18:17:05 +00:00
prculleyandNick Hall e926934a49 Fix reports for shared event attribute and note errors
Fixes #10720
2018-11-20 18:14:08 +00:00
prculleyandNick Hall b175b5cb60 Fix Fan and Descendant Fan charts in Quadrant and Half Circle modes
The Descendant Fan chart had several bugs:
1) a bug that affected the centering of the chart for these modes
2) the chart was drawn in the wrong quadrant
3) the centering of the chart for printing was incorrect
   (the legend was off the page some of the time).
4) the sizing of the chart for printing was incorrect
   (for very small charts of one generation, the legend would
    overwrite the chart).
The Fan Chart for the quadrant view:
1) the centering of the chart for printing was incorrect
   (the legend was off the page some of the time).

Fixes #10817
2018-11-20 17:57:59 +00:00
Robin van der VlietandNick Hall 8fe9069cbb Fixed issues in the Dutch relationship calculator
Fixed some issues in the Dutch relationship calculator and also
extended the ordinal and removed lists till 50, just like the
English lists.

* Replaced huge lists by reusable lists.

* Fixed bug in which uncles/aunts, nephews/nieces (niblings),
  siblings and cousins with an unknown gender show up as female.

* Fixed some misspellings:
    drieëntwingste > drieëntwinTIgste
    vierentwingste > vierentwinTIgste
    edelovergrootOUD > edelovergroot
    edeloudvergroot > edeloudOvergroot
2018-11-20 17:32:24 +00:00
Pär Ekholm 63610d0651 Merge remote-tracking branch 'upstream/maintenance/gramps50' into maintenance/gramps50 2018-11-20 10:16:19 +01:00
Pär EkholmandNick Hall 754ac7966c Update Swedish translation 2018-11-19 21:07:15 +00:00
niememat 51810ca973 Fix translation in Finnish 2018-11-18 20:10:56 +02:00
Pär Ekholm b43b0fa77f Update po/sv.po - all strings complete 2018-11-15 18:14:50 +01:00
Pär Ekholm f20dce51e8 Update po/sv.po 2018-11-14 20:14:59 +01:00
Pär Ekholm 254e196b2b Update po/sv.po 2018-11-14 19:41:46 +01:00
Pär Ekholm edc214221e Update po/sv.po 2018-11-13 18:37:02 +01:00
Pär Ekholm adfc1b8aee Update po/sv.po 2018-11-12 17:49:09 +01:00
Pär Ekholm 49f56bcc46 Update po/sv.po 2018-11-11 17:15:45 +01:00
Pär Ekholm 01efa725ce Update po/sv.po 2018-11-10 17:51:55 +01:00
Pär Ekholm 22b7f28edc Merge remote-tracking branch 'upstream/maintenance/gramps50' into maintenance/gramps50 2018-11-10 10:41:51 +01:00
niememat 780d83518d Update finnish translation 2018-11-10 04:43:12 +02:00
Pär Ekholm 7247073a03 Merge remote-tracking branch 'upstream/maintenance/gramps50' into maintenance/gramps50 2018-11-09 19:42:17 +01:00
Pär Ekholm e5fedef66a Update po/sv.po 2018-11-09 19:28:52 +01:00
vantu5z 8be3a475d1 update Russian translation 2018-11-09 17:40:54 +03:00
Pär Ekholm c167cfa921 Update po/sv.po 2018-11-08 19:22:33 +01:00
Pär Ekholm 9eec554d4a Update po/sv.po 2018-11-08 18:30:57 +01:00
Pär Ekholm c81b3596ec Update po/sv.po 2018-11-08 14:31:35 +01:00
Pär Ekholm 6c2179dc2e Update po/sv.po 2018-11-08 12:25:02 +01:00
Pär Ekholm de1a4fec22 Update po/sv.po 2018-11-07 19:08:51 +01:00
Pär Ekholm f0ebaa3bc1 Update po/sv.po 2018-11-07 16:17:55 +01:00
SNoiraudandNick Hall f2bc982c3d NarrativeWeb fixes
Space between place, description and the event note when there are
many sources.
Change the css order between print and screen.
The chosen theme can erase prior values.
Add a width for the source column in all themes.

Fixes #10810
2018-10-21 18:43:11 +01:00
niememat 3046b0586c Fix translation in Finnish 2018-10-17 11:31:54 +03:00
Paul Franklin 375773d657 Setting the year as an ordinal number in Croatian
With this commit, two more reports now show a year as an
ordinal number in Croatian, and a year I missed before in
webcal.py is now fixed.

This commit also reverts the Croatian ordinal year fix in
the gramps50 statisticschart.py since upon reflection I
feel it would be better done in master, since then our
translators will have until 5.1.0 is released to do the
two new strings the fix requires.

Issue #10822
2018-10-07 23:43:36 -07:00
Paul Franklin 01060f0b0d name-note is not being cleared in Complete Individual report
I ran gramps with a fresh copy of the example.gramps tree,
then ran the Complete Individual report.  The options which
matter are "Entire Database" and "Include Notes" but I also
included the gramps-ID since that speeds up my work.

Then I noticed that hundreds of names at the end of the
output file all had the same note (N0001), whose text said
it referred to a specific person.

So I looked higher and the note inclusion started with I0044,
the default person.  It was real for him but not for the next
person after him, or all the people after her.

I introduced the problem when I fixed 10033, in d6a97cf90e.

Note that this bug is independent of the CIR fix in p.r. 676
and still happens even after that pull request is applied.
2018-10-07 23:36:32 -07:00
prculleyandNick Hall 36779c1229 Fix View Column sizing so last column size setting is maintained
Fixes #10800
2018-10-07 18:14:01 +01:00
prculleyandNick Hall 5b7f5164db Fix view so column widths are preserved when using filters
Fixes #10725
2018-10-07 18:13:51 +01:00
vantu5z 1e9a3841cd update Russian translation 2018-10-05 14:10:57 +03:00
Paul Franklin e6ddedf6c6 fix typo
in cbac98894b
2018-10-04 17:49:35 -07:00
Paul Franklin 325c3f22cc fix the place-format option in DDR and DAR
The place-format option was added to the Detailed Descendant
and Detailed Ancestor text reports in cbac98894b

But those two reports use the Narrator class to show many of
their places (and dates), and that class was not modified to
use the user's custom place format.

So if a user had created a custom place format and ran
either of those two reports, their places would be shown
inconsistently.  This commit fixes that.

(The non-detailed ancestor text report also uses Narrator to
show its places but that report has not had the place-format
option added to it, so this commit doesn't touch it.)
2018-10-04 09:23:38 -07:00
Paul Franklin 54be8d62f3 Setting the year as an ordinal number in Croatian
With this commit, three more reports now show a year as an
ordinal number in Croatian.

Issue #10822
2018-10-04 09:21:29 -07:00
prculleyandNick Hall a40eca36d9 Fix bsddb for person sort with empty Surname list
Fixes #10078, #10577
2018-10-03 19:32:36 +01:00
Paul Franklin 4b17ca4724 Setting the year as an ordinal number in Croatian
When I started investigating 10822, I saw some Croatian dates
didn't seem to be working in 5.0.0, to my surprise.  I believe
I fixed that in the previous commit.

With this commit, the three reports now show a year as an
ordinal number in Croatian, so I consider 10822 fixed.

If there are any additional problems displaying Croatian,
please file additional bug reports ("one bug, one report").

Fixes #10822
2018-10-01 11:01:18 -07:00
Paul Franklin 69aaec11a5 Setting the year as an ordinal number in Croatian
When I started investigating 10822 I saw some Croatian dates
didn't seem to be working in 5.0.0, to my surprise.  There
seems to have been some kind of regression from 4.2.8.

But the Croatian translation for gramps hasn't been updated
in about three years -- except by non-Croatians.  So I don't
know why some "translated" strings which control how dates
are displayed were disabled (marked as "fuzzy") in this:
6c67053e1f

Also, I saw some code in the 4.2.8 Croatian date handler
which was not in the 5.0.0 Croatian date handler -- somehow.

So I believe this commit fixes the Croatian date handler.

Issue #10822
2018-10-01 10:59:51 -07:00
Serge NoiraudandGitHub 896b77a165 Webcal: link problems in some cases (#661)
* Webcal: link problems in some cases

Year 2016 is highlighted by default instead of current year.

Fixes #10801

* Webcal: Missing links when muliyear unselected
2018-09-30 10:20:09 +02:00
Serge NoiraudandGitHub 1b60193f77 Geoclose: exception when a family has no father (#662) 2018-09-29 19:20:50 +02:00
Paul Franklin e667431dd5 Report plugin krasch
Load data.gramps, start with the default person (I0037,
Edwin Michael Smith), run Family Descendant Tree, choose
"Start with the parent(s) of the selected first", hit OK:

.../descendtree.py", line 881, in start
    family2 = self.database.get_family_from_handle(family2_h)
...

Or start with I0057 (Anna Louise Smith), run Family Descendant
Tree, choose "Start with the parent(s) ...", hit OK:

.../descendtree.py", line 773, in start
    family2 = self.database.get_family_from_handle(family2_h)
...

Fixes #10811
2018-09-26 17:11:42 -07:00
Paul Franklin cc7e4fda85 [unhandled exception parsing "future dates" in some locales]
There is already a check in the MonitoredDate class for years
which are more than one year in the future, so such a date is
already going to be shown in red.

But some locales use the "datetime" library to parse typed-in
dates and that has a maximum year of datetime.MAXYEAR, 9999
currently, so dates greater than that produce a ValueError.

Besides adding checks for that, I have also made it so that
locales which don't need that library don't use it.

Fixes #10815
2018-09-26 14:04:52 -07:00
Paul Franklin 2490e2d07d Julian/Gregorian calendar issue when entering only year as date
when running gramps in Norwegian

Fixes #10687
2018-09-24 10:13:48 -07:00
Serge NoiraudandGitHub e5c5a210b4 Events difficult to read (screen and mobile) (#658) 2018-09-23 12:27:55 +02:00
Paul Franklin 04a40c7a50 fix typo
in cf42e5a4b8 and cbac98894b

Fixes #10782
2018-09-17 21:33:44 -07:00
Leonhaeuser 44c8e3c0f0 update German translation 2018-09-08 17:03:48 +02:00
niememat 6f7242a773 New update for Finnish translation 2018-09-06 22:11:47 +03:00
niememat 358c3fc967 Update finnish translation 2018-09-06 21:58:36 +03:00
Paul CulleyandSam Manzi f1ca280441 Fix and restore Statistics Gramplet to 4.2.x status (#653)
Fixes #10754

A bit of history. bug 2060 was filed a long time ago (2008), and a patch was added to close it in 2016. I believe that the bug had already been patched by then, although I cannot be sure. The patch caused the Gramplet to update anytime the active-changed signal occurred on a person view. I suspect that this caused a fair amount of overhead on very large dbs as the entire person list was rescanned.

In any event, Doug Blank recently removed the original scan code, as well as some useful functionality. And left behind a bug where a value was always zero. The users email list had some complaints about the lost functionality, and I also saw some recent complaints that the gender statistics were incorrect. Turns out that the db's genderstats data was incorrect, probably due to crashes after db updates. The Genderstats don't get saved until db closes normally. In addition, running the Genderstats rebuild tool, did not immediately appear to correct the situation, Gramps had to be restarted to show the updated results.

I added the original statistics code back into the Gramplet, suitably updated for 5.0.x. So the Gramplet no longer depends on dbs genderstats, it scans for it now on its own.

I removed the update on active-changed function, so overhead is only present on actual db updates (which have their own signals). I tested that the add, edit, and delete person changes do properly cause the statistics to update now. So the active-changed signal is not necessary.
2018-09-06 08:59:41 +10:00
Paul CulleyandSam Manzi 482cecaa7e Fix Check and Repair to deal with bad references empty handle string (#657)
Fixes #10783

Check and Repair tool doesn't fix bad references when the reference handle is an empty string.
Found when rewriting the backlinks scan on same tool. I assumed that the prior checks had already corrected any bad forward references, and did not put in a test for them in my new code. The Travis test failed and when I debugged, I found that the tool had an exception on a handle that consisted of an empty string.

Its interesting to note that when I changed the code, a lot more citation and source references were fixed in the test.
2018-09-05 12:07:03 +10:00
Paul CulleyandSam Manzi b6c57ab3c3 Speed up Check and Repair, backlinks check stage. (#656)
Fixes #10618

* Speed up Check and Repair, backlinks check stage.

* Fix Check and repair; backlinks scan to deal with bad references
which should have been fixed in earlier checks!
2018-09-05 11:40:57 +10:00
Paul CulleyandSam Manzi f3b5f75e37 Fix strings containing deprecated illegal escape sequences (#648)
Python 3.6 and above has deprecated illegal string escape sequences. Escape sequences are preceded by a '\' and valid ones are "\n\t\r" etc. Illegal ones are not in the list https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals.

Previous to Python 3.6 these illegal sequences were ignored and the '\' was left in place. Pylint has been noting these for a while now.

This PR corrects these sequences in Gramps. I used

find . -name "*.py" | xargs -t -n 1 python3 -Wd -m py_compile 2>&1 | grep Depre

to locate the failing strings.
2018-09-04 12:03:17 +10:00
IvanandSam Manzi 7d9f4dcc80 [Whatsnext] check if db is open (#651)
Fixes #10732
2018-09-04 11:38:42 +10:00
Paul CulleyandSam Manzi 224748eb96 Fix usage of posixpath; should be os.path for os independence (#650)
Fixes #10740
2018-09-04 11:20:34 +10:00
Paul CulleyandSam Manzi 2aec83f057 Fix generate_checksum routine to avoid MemoryError crash (#649)
with very large files and 32-bit OS

Issue #10690
2018-09-04 10:41:27 +10:00
Paul CulleyandSam Manzi fd399323a6 Fix corrupted Bookmarks that can happen after Gramps crash (#655)
Fixes #10759
2018-09-04 10:16:21 +10:00
Paul CulleyandSam Manzi bb6b3edee2 Fix Merge Family when same parent is missing from both families (#654)
Fixes #10760
2018-09-04 10:02:39 +10:00
Paul CulleyandSam Manzi 3f7ea4418c Fix <ctrl>c in view to get selected item to clipboard (#652)
Fixes #10682
2018-09-04 09:43:49 +10:00
Paul CulleyandSam Manzi efcc115aa7 Fix Quickview Gramplet so updates work when changing active (#642)
Fixes #10713
2018-09-04 09:22:27 +10:00
Paul CulleyandSam Manzi 893c715a61 Fix place reference editor for bad cut/paste on set_latlongitude (#644)
Fixes #10719
2018-09-04 09:08:50 +10:00
Paul CulleyandSam Manzi 6bab78df21 Fix Find Database Loop Tool (bad import of _collections) (#643)
Fixes #10722
2018-09-04 08:53:22 +10:00
niememat 29019eed98 Fix translation in Finnish 2018-09-03 22:09:37 +03:00
Bernard Banko d8c006e0f7 Slovenian translation fixed to allow building mo 2018-08-25 22:27:31 +02:00
Bernard Banko b8438dddeb Slovenian translation updated 2018-08-25 22:14:42 +02:00
niememat 4ba28c637e Fix translation in Finnish 2018-08-18 12:29:06 +03:00
niememat ae84040bc7 Fix translation in Finnish 2018-08-11 18:25:28 +03:00
John Ralls 2a0b3afa4b Switch included moduleset to gitlab.gnome.org.
Fixes bug #10733.
2018-08-09 07:24:39 -07:00
Leonhaeuser 414aac4c7e Reviewed German translation Thanks to bmendl 2018-08-08 23:33:21 +02:00
niememat 037e26a5a3 Fix translation in Finnish 2018-08-08 14:43:17 +03:00
John Ralls 158d3a993b File copy doesn't work if the glob can match directories. 2018-08-05 13:18:01 -07:00
John Ralls 2ef35174d1 Install the docs/gramps directory in the bundle.
Fixes bug #10705.
2018-08-05 10:03:26 -07:00
niememat 3249938b88 Fix and updated translation in Finnish 2018-08-05 16:45:06 +03:00
Ross Gammon 9b18083e48 Update the Debian changelog after the 5.0.0 release 2018-07-25 21:56:42 +02:00
John Ralls 04bdeb8321 Release Gramps-5.0.0 on Mac. 2018-07-25 07:53:42 -07:00
Nick Hall 67061d58e2 Bump to 5.0.1 2018-07-24 15:11:18 +01:00
Nick Hall 0a66bad41a Release Gramps 5.0.0 2018-07-24 15:07:47 +01:00
Nick Hall e79535fe23 Update Changelog and NEWS files 2018-07-24 15:03:19 +01:00
Nick Hall 3c5c34d0c5 Update development status for new release 2018-07-24 14:20:41 +01:00
Nick Hall c9abe49d1e Update translation template for new release 2018-07-24 14:19:54 +01:00
niememat ca20641cb9 Fix translation in Finnish 2018-07-22 21:09:26 +03:00
John RallsandNick Hall c558b8530b Correct binary test logic for primary mask.
state & get_primary_mask(another) tested (state & (primary | other)),
which will be true if state matches *either* primary *or* other, but
what is wanted in a not-negated test is state matching all bits of
(primary | other). match_primary_mask does that.

On the other hand there are also cases of "not state & (primary | other)".
no_match_primary_mask handles that, returning true if state matches none
 of the bits in (primary | other).

Fixes #10646.
2018-07-22 18:50:06 +01:00
prculleyandNick Hall efb2a63492 Fix BaseSelector to avoid long delay before display on large trees
Fixes #10634
2018-07-22 18:46:07 +01:00
SNoiraudandNick Hall 1642757eb8 Export options > Gui alignment issue
Fixes #10576
2018-07-22 18:40:12 +01:00
niememat b0ee4684a1 New fix translation in Finnish 2018-07-22 13:53:17 +03:00
Espen Berg 4a561f44c7 Revised Norwegian bokmål 2018-07-22 11:19:51 +02:00
Espen Berg 4211dbf9f5 Merge branch 'maintenance/gramps50' of github.com:gramps-project/gramps into gramps50 2018-07-22 10:29:23 +02:00
Espen Berg 23c62de0d0 Revised Norwegian bokmål 2018-07-22 10:28:02 +02:00
niememat 4179cf4792 Fix translation in Finnish 2018-07-22 09:30:41 +03:00
Nick Hall 4c20cbd48a Fix dialog button order on non-Mac systems
Resolves #10585.
2018-07-21 23:28:05 +01:00
De TranandNick Hall 5a98236239 Fix and update Vietnamese translation
Resolves #10681.
2018-07-21 23:16:29 +01:00
Sveinn í FelliandNick Hall 792caf73b7 Update Icelandic translation 2018-07-21 19:59:26 +01:00
jose1711andNick Hall cfb9a4f664 Fix and update Slovak translation 2018-07-21 19:33:45 +01:00
jose1711andNick Hall 59021550e2 Fix typo in translation 2018-07-21 19:11:06 +01:00
niememat acf775ea90 Fix translation in Finnish 2018-07-20 23:01:59 +03:00
niememat f4199b494c Fix translation in Finnish 2018-07-20 14:33:01 +03:00
niememat 6fc7f4e0af Fix translation in Finnish 2018-07-18 17:34:24 +03:00
Luigi Toscano d508ce7fb9 Update Italian translation 2018-07-15 16:41:10 +02:00
Nick Hall a4aa8f90c3 Update English (British) translation 2018-07-13 18:36:28 +01:00
De TranandNick Hall b33d7af284 Update Vietnamese translation 2018-07-13 14:53:02 +01:00
Kaj MikkelsenandNick Hall e4e1f4ca05 Update Danish translation 2018-07-13 14:35:15 +01:00
Lajos NemesériandNick Hall 72bedf0af7 Update Hungarian translation 2018-07-13 14:29:26 +01:00
Fedik 60ba912100 Update Ukrainian translation for Gramps 2018-07-07 17:54:52 +03:00
RossGammonandSam Manzi 2a8240b26d Update Debian directory after Gramps 5.0.0-rc1 release. (#634) 2018-07-06 07:58:39 +10:00
Leonhaeuser c33fc7b240 Fix not matching translation csv import/export 2018-07-02 20:33:10 +02:00
Zdeněk Hataš 404647be05 Update Czech translation 2018-07-02 19:09:06 +02:00
Pier Luigi CinquantiniandNick Hall 0af818b0c1 Update Esperanto translation 2018-07-02 15:14:46 +01:00
niememat 8da84aaf23 Fix translation in Finnish 2018-07-01 12:14:58 +03:00
Paulo Henrique Paiva de MoraesandNick Hall d15a1376d3 Update Brazilian Portuguese translation 2018-06-30 17:04:42 +01:00
vantu5z 57bbe542b5 update Russian translation
substantially just merge with latest template
2018-06-30 18:44:23 +03:00
Nick Hall cbdb0d5431 Merge translation files with the latest template 2018-06-29 16:46:10 +01:00
Paul CulleyandSam Manzi ff129e2f64 Fix Custom filter update when created via sidebar (#630)
Fixes #10620

Adding a filter via the sidebar editor originally only updated the current view, other associated views did not see the new filter. First noticed in People views. This causes the 'filters-changed' to be emitted which updates all associated view.
2018-06-22 11:19:00 +10:00
Paul CulleyandSam Manzi 663745c7e8 Fix Gramplet configure (View/Configure) for large options (#629)
When a Gramplet uses a BooleanListOption with a lot of entries, along with other options, all the options take on the size of the large BooleanListOption, which doesn't work well at all.
2018-06-22 11:04:30 +10:00
Serge NoiraudandSam Manzi 5df6ad564b Statistics Charts crashes with IndexError (#627)
Fixes #010626

In statistics charts, get_month is only localized and the calendar is unused.
If we have an Extra (Sansculottides) month in the french republican calendar
(index 13), we have this IndexError because the gregorian calendar is always
used and contains only 12 values.
2018-06-22 10:48:02 +10:00
John Ralls 1f3e516780 [Mac] Change accel for Undo History.
So that it doesn't conflict with a system binding for hiding the window.
Fixes #10619.
2018-06-10 20:09:41 -07:00
Paul CulleyandSam Manzi 25841f9540 Fix Family Lines/Family Colors picker for bad transient parent (#625)
Fixes #10623
2018-06-10 14:48:51 +10:00
Paul CulleyandSam Manzi 94bd8470d7 Fix import_as_dict to utilize user gramps_id prefixes (#626)
Issue #10622

Found when comparing dbs with large prefixes 'I%05d'; using database differences or import_merge addons.
2018-06-10 14:27:56 +10:00
Paul CulleyandSam Manzi 21408ab9d2 Fix error when opening bsddb db in read-only mode (#624)
Fixes #10615

BSDDB had errors when trying to open in read-only mode.
2018-06-10 14:11:33 +10:00
Paul CulleyandSam Manzi 31eecac590 Fix dbapi dbs for closeing read-only db crash (#623)
Fixes #10613

The sqlite (and other dbapi dbs) tried to save their metadata on a close operation, which doesn't work for read-only dbs.
2018-06-10 13:55:07 +10:00
Paul CulleyandSam Manzi 58c6da3fb5 Fix menus when operating with read-only db (#622)
Fixes #10614

An earlier attempt to deal with closed dbs messed up the read-only ActionGroup settings. This corrects that situation.
2018-06-10 13:40:36 +10:00
Sam ManziandGitHub 9c21b98601 Fix Name formats to show all parts (#608)
Fixes #10420

Allows reports to use the name format specified by the user.
2018-06-02 10:26:23 +10:00
Paul CulleyandSam Manzi 8735f8a014 Fix dialogs for crash when canceling via 'x' (#620)
* Fix import dialog for crash when canceling via 'x'

Fixes #10607

* Fix 'Make Backup' dialog for crash on 'x' close

Issue #10607

* Fix Family Lines/Family Colors/add dialog crash on close with 'x'

Issue #10607
2018-06-02 09:58:06 +10:00
niememat 9acf512663 Fix translation in Finnish 2018-05-28 14:43:08 +03:00
John Ralls 50e8161984 Release 5.0.0-rc1 on Mac. 2018-05-22 18:11:13 -07:00
John Ralls 69be94843c Remove obsolete omeat-python-modules dependencies. 2018-05-20 14:28:45 -07:00
prculley ac5ed9fde0 Bump to v5.0.0-rc2 2018-05-20 15:49:27 -05:00
prculley 2869e4d8a3 Release Gramps v5.0.0-rc1 2018-05-20 15:44:15 -05:00
Paul CulleyandSam Manzi f2392f910d Fix merge persons when removed person was the Home (default) person (#619)
Fixes #10597

If a person merge removes the default (Home) person, the previous code started having HandleError crashes.
This checks for and corrects this issue.
Did not see the issue with 4.2.x because there were no HandleErrors.
2018-05-20 13:31:41 +10:00
niememat aa47410902 Update finnish translation 2018-05-15 11:39:16 +03:00
vantu5z c72af598b1 Update Russian translation 2018-05-15 09:40:06 +03:00
Paul CulleyandSam Manzi 4daf7a9c29 Fix FanChartDesc for typo (copy/paste error). (#611)
Fixes #10565

- Bug occurs when selected person has more than 4 parents.
2018-05-09 13:21:37 +10:00
Paul CulleyandSam Manzi 0452848f57 Fix Tag editor for multiple tag removes (#601)
Fixes #10552
2018-05-02 14:29:40 +10:00
Serge NoiraudandSam Manzi db92ab7d5a In Narweb, Relationship to Center person reversed (#606)
Fixes #10553
2018-05-01 10:46:29 +10:00
Paul CulleyandSam Manzi 4dc67910fd Fix Citation Tree view for crash after plugin reload (#602)
Fixes #10541
2018-05-01 10:31:29 +10:00
Paul CulleyandSam Manzi ebc0f25bc7 Fix 'References' Gramplet for issue when activated during an import (#584)
* Fix 'References' Gramplet for issue when activated during an import

Fixes #10507

* disable Application Menu during import
2018-05-01 09:36:23 +10:00
Paul CulleyandSam Manzi 67dcffee20 Fix Person/Family/Event view updates on various associated changes (#603)
* Fix Person/Family/Event view updates on various associated changes

Fixes #10532

* Fix Event view for changes in Main Participants

* Fix Person/Event/Place views for update to a Place or enclosing place
2018-05-01 09:09:49 +10:00
Paul CulleyandSam Manzi b4946dee9c Fix Person views to update on changes in birth/death event/place (#597)
Fixes #10532
2018-04-18 07:58:51 +10:00
vantu5z 8f33163510 update Russian translation 2018-04-13 09:11:17 +03:00
niememat a3d43fdc32 Update finnish translation 2018-04-12 10:09:07 +03:00
Leonhaeuser befebe8b0c update German translation 2018-04-11 19:27:52 +02:00
Nick Hall 9ee777274c Allow unicode characters in json export 2018-04-10 18:36:46 +01:00
SNoiraudandNick Hall d3892c0e82 Filtering problems in the geography view 2018-04-10 18:31:32 +01:00
SNoiraudandNick Hall 17ffc5460c Crash when looking for a place within an area
Fixes #10531
2018-04-10 18:31:11 +01:00
Joachim KuebartandNick Hall 09ca223f1b Bugfix: use same box margin for SVG and PDF
When drawing text boxes in SVG, the text is often placed too far to the right and touches the right frame. For an example, generate a »Descendent tree« in SVG format. In the PDF version, the text does not touch the frame of any boxes.

This PR fixes the problem by using the same text displacement (margin) inside the box as the PDF driver. The code is taken from gramps/plugins/lib/libcairodoc.py.
2018-04-10 17:31:43 +01:00
SNoiraudandNick Hall 1223cbda1f Webcal crashes after Narrative Web site exists
+ multiyear select option problem

Fixes #10524
2018-04-10 17:15:29 +01:00
Nick Hall 01ce73fc04 Catch exceptions when loading recent files 2018-04-10 17:11:07 +01:00
Nick Hall e53603a1fc Check that backend exists before loading database 2018-04-10 17:11:07 +01:00
Nick Hall 04d6ca3a49 Disable family tree manager features when a backend is unavailable
If the default backend is unavailable, then reset it to bsddb.
2018-04-10 17:11:07 +01:00
vantu5z 9e668a528d update Russian translation 2018-04-03 08:28:32 +03:00
niememat 96a903c57f Update finnish translation 2018-04-01 11:41:24 +03:00
Nick Hall 75921ceaf4 Enclose tree report image path and file name in braces
Fixes #10495.
2018-03-31 16:34:36 +01:00
Leonhaeuser 310bece2bc fix syntax error in German translation file 2018-03-30 21:21:40 +02:00
Leonhaeuser 565e570a71 update German translation 2018-03-30 21:13:25 +02:00
SNoiraudandNick Hall 29735eef7d Crash when selecting an old note, event, media, ...
Try to sort on another column.

Fixes #10519
2018-03-29 15:56:49 +01:00
Nick Hall cb0bd32aa3 Merge pull request #589 from sam-m888/fixhelplinks50. 2018-03-29 15:46:32 +01:00
Sam Manzi 469739633c [NewRepositoryEditor]Fix help link 2018-03-28 12:59:09 +11:00
Sam Manzi 495c7f310a [ReorderGrampsID]Fix broken help link 2018-03-28 12:52:23 +11:00
Paul CulleyandSam Manzi 353fc50770 Fix FTM for delete tree, followed by close; Title etc. shows old tree (#587)
Fixes #10513
2018-03-27 13:43:56 +11:00
Paul CulleyandSam Manzi ca9df38b11 Fix Relationship path between filter for silent fail (#586)
Fixes #10509
2018-03-27 13:18:56 +11:00
Herb Miller JrandNick Hall fd55f0abff Add configuration flag --no-compress-manpages. 2018-03-26 19:50:32 +01:00
vantu5z e1ca8303e5 update Russian translation 2018-03-26 11:29:55 +03:00
niememat a2879f1717 Update finnish translation 2018-03-25 19:39:59 +03:00
John Ralls 89ad092ac1 Don't strip newlines from builder files.
Fixes #10514.
2018-03-25 08:59:51 -07:00
Leonhaeuser 6c8de19fc5 update German translation 2018-03-25 08:33:37 +02:00
vantu5z dcf3caf946 update Russian translation 2018-03-24 09:37:34 +03:00
Sam ManziandGitHub f1e28c1e28 List sort by number for citation confidence level (#583)
* Fix confidence level sort in list views

-based on the date-sort code.

Fixes #10506

* Fix confidence level tooltip

-Stop run on text.

Resolves #10506
2018-03-22 15:40:53 +11:00
Nick Hall 0d1aef889e Fix error in place displayer when offset is outside valid range
Resolves #10493.
2018-03-21 20:43:13 +00:00
vantu5z cec9f55769 update Russian translation 2018-03-15 09:28:08 -03:00
Sam ManziandGitHub 23f69f5bc2 Fix places in example.gramps (#578)
- Moved Greek places into top level Greece entry & added English names.

- Removed Puerto Rico as a country as part of USA
2018-03-14 10:53:38 +11:00
Sam ManziandGitHub ec6e9d7ef8 Use sgettext for Name Format dialog (#580)
Fixes #10484
2018-03-14 10:20:23 +11:00
Sam ManziandGitHub 6f52d7371e Enable copying the birth & death fields for relationship view (#579)
...I did something similar(as in #575) for the relationship view...

Resolves #7874
2018-03-11 10:51:51 +11:00
Sam ManziandGitHub e5a5f212bc Allow Copying of text fields for Details tabs (#575)
Allow selection of text fields from details tab in selected views with Details gramplets.

-  Person Details
-  Place Details
-  Repository Details

Resolves #7874
2018-03-11 10:32:19 +11:00
Serge NoiraudandSam Manzi 2a297623f2 Geography: KML media objects not shown on map. (#577)
Geography doesn't conform to the relative paths
If a place has no coordinates, KML files are not displayed.

Fixes #10487
2018-03-10 13:25:25 +11:00
Paul CulleyandSam Manzi ae11eceef7 Fix Fan charts for scrolling/resizing of window; bad rendering (#572)
Fixes #10381
2018-03-10 12:53:34 +11:00
Paul CulleyandSam Manzi babe13f811 Fix up Clipboard for various issues (#569)
* Fix Clipboard for HandleErrors during db changes

Fixes #10475

* Clipboard pylint

* Fix Clipboard for Drop/Edit of Surname group in People Tree view
2018-03-10 11:39:18 +11:00
Paul CulleyandSam Manzi a668f0d04f Fix Relationship Graph for extraneous families when using filter (#576)
Fixes #10492
2018-03-09 09:26:00 +11:00
prculleyandNick Hall 8c1a244b1e Fix export gpkg when media files have fractional timestamps.
Fixes #10424
2018-03-07 23:03:28 +00:00
Nick Hall 7aa4258046 Remove reference to postgresql in core code 2018-03-07 16:50:01 +00:00
Nick Hall 1c5ae89d86 Move dbapi-specific code out of DbGeneric 2018-03-07 16:11:45 +00:00
Nick Hall 75bf103429 Create _schema_exists method 2018-03-07 15:52:12 +00:00
Nick HallandSam Manzi cf42e5a4b8 Fix place format option in place report (#561)
* Fix place format option in place report

Resolves #10467.

* Use -1 instead of None for default place format

* adds New [Place format:] option on the [Report Options (2)] tab
2018-03-07 09:53:21 +11:00
Serge NoiraudandSam Manzi 433677c905 [Narrative Web Report]Incorrect heading for stepmother or stepfather (#567)
Fixes #10478
2018-03-07 09:33:27 +11:00
Paul CulleyandSam Manzi 6cbd6ed8d3 Fix Book TOC and Index numbering and placement (#565)
Fixes #10452
2018-03-07 09:12:28 +11:00
Paul CulleyandSam Manzi 51df2c188d Fix Fan Chart(s) so they don't crash when opened as last view (#571)
Fixes #10440
2018-03-05 14:34:55 +11:00
Paul CulleyandSam Manzi 7180806afd Fix Organize Tag editor for exception on 'x' close (#570)
Fix Organize Tags editor for exception on 'x' close
2018-03-05 14:18:51 +11:00
niememat 8fc8668921 Fix and updated translation in Finnish 2018-03-03 21:04:55 +02:00
prculleyandNick Hall 5dfcf2266f Change BaseSelector so that selection is kept during Find/Clear
Fixes #10421
2018-03-03 18:41:54 +00:00
Paul CulleyandSam Manzi 1687616519 Fix multi-page Graph output to pdf with filenames containg spaces (#560)
Fixes #10470
2018-03-03 09:00:00 +11:00
Paul CulleyandSam Manzi 6bf33ab899 Fix Clipboard for right-click on empty clipboard (#566)
Issues #10473
2018-03-01 09:18:36 +11:00
Sam ManziandGitHub 41a2a46713 Fix ImportError & update API docs year 2018 (#564)
- Fixes ImportError: No module named 'gramps.plugins.db.dummydb'

-  Update Copyright to 2018
2018-02-28 16:53:37 +11:00
Zdeněk Hataš fd4344bc07 Update Czech translation 2018-02-26 15:08:44 +01:00
vantu5z ef395f49fe update Russian translation 2018-02-24 10:48:54 -03:00
Serge NoiraudandGitHub f0719c9eff Privacy problem with the relation to the center person. (#555)
Bug #12345
2018-02-24 08:34:58 +01:00
Paul CulleyandSam Manzi 9c5951a9e9 Fix Report Options when used with empty db (#554)
Fixes #10457
2018-02-24 09:37:36 +11:00
arnaullvandNick Hall 05dd44cfe2 Updated Catalan translation 2018-02-23 18:08:11 +00:00
Nick Hall 7b6f46d595 Merge pull request #552 from RossGammon/update_deb_dir. 2018-02-23 17:57:04 +00:00
Ross GammonandNick Hall fbcbdfa991 Finalise debian/changelog for beta1 release.
Also fix old syntax & trailing whitespace issues
2018-02-23 17:54:22 +00:00
Ross GammonandNick Hall 8335bbf20f Enable extra tests that were failing for alpha3 2018-02-23 17:54:22 +00:00
Ross GammonandNick Hall 2084bb5d0e Patch person_rules_test.py
To remove hard coded build path from import. Fixes FTBFS due to test failure.
2018-02-23 17:54:22 +00:00
Ross GammonandNick Hall dfe530fdd1 Delete debian/NEWS file, only really applies in Debian 2018-02-23 17:54:22 +00:00
Ross GammonandNick Hall 910d7199a2 First beta release of gramps 5.0
* First beta release of gramps 5.0
* Sync debian directory with Debian experimental branch on salsa
* Point Vcs URLs at the Gramps Project on Github
* Correct spelling in debian/rules, node > nose
* Delete gbp.conf, not required as gbp not used to build package
2018-02-23 17:54:22 +00:00
Ross GammonandNick Hall b208b7a240 Remove gbp.conf, will not be using gbp to build deb package
Avoids updating it for every branch used to build it
2018-02-23 17:54:22 +00:00
Ross GammonandNick Hall ee470deaca Fix spelling in d/rules node > nose 2018-02-23 17:54:21 +00:00
Ross GammonandNick Hall c149c5f2fa Update Vcs URLs to point at Gramps Github repo 2018-02-23 17:54:21 +00:00
Ross GammonandNick Hall fd5433363e Resync debian dir from Debian 5.0 experimental branch 2018-02-23 17:54:21 +00:00
Ross GammonandNick Hall 1ca875a2be Update debian/changelog with releases since 4.0.3 2018-02-23 17:54:21 +00:00
Ross GammonandNick Hall 43646e592b Fix testsuite failure when build happens out of the source tree.
Build path was hardcoded in an import in:
gramps/gen/filters/rules/test/person_rules_test.py

Fixes #10450.
2018-02-20 18:02:00 +00:00
prculley c4bc2d6823 Some POTFILES fixes 2018-02-20 09:56:07 -06:00
Leonhaeuser 854ff911a3 update German translation 2018-02-19 19:34:54 +01:00
John Ralls 965f7f7554 Release Gramps 5.0.0-beta1 on MacOS. 2018-02-18 22:13:48 -08:00
prculley 6c279945e0 Bump to 5.0.0-beta2 2018-02-18 08:24:13 -06:00
335 changed files with 236259 additions and 244730 deletions
+2
View File
@@ -64,6 +64,8 @@ Martin Hawlisch martin.hawlisch@gmx.de
Nick Hall nick__hall@hotmail.com
Paul Culley paulr2787@gmail.com
Peter Landgren peter.talken@telia.com
Raphael Ackermann raphael.ackermann@gmail.com
+460 -1182
View File
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -133,7 +133,7 @@ Gramps is a [http://en.wikipedia.org/wiki/Gtk GTK] application. Gramps needs to
The Linux Genealogy CD can function as a live CD that you boot directly from. You can then run Linux and Gramps off the CD, even if your computer is entirely Windows.
An experimental Windows installer is available, however we do not have the manpower to offer support for Windows. A windows mailing list is available however and we do do our best to solve windows related problems.
An Windows installer is available for 32 and 64 bit versions of windows from Windows versions 7 through 10. As with all other support, we do do our best to solve windows related problems.
8. Does it work with the Mac?
@@ -145,7 +145,7 @@ This present version of Gramps (2.2.x) does not appear to have been ported by th
9. What are the Minimum Specs to run Gramps?
We would recommend at least an 800x600 video display. For Gramps 2.0, the memory requirements have been reduced, and Gramps can run quite efficiently on a 256MB system, holding considerably more people. A system with 512MB should be able to hold around 200,000 people. Disk space requirements for databases are however considerably larger, with a typical database being several megabytes in size. For 120.000 people you must consider already 530Mb for the database. Pictures are stored on disk separately, so a large harddisk is necessary.
We would recommend at least an 800x600 video display. For Gramps 5.x, Gramps can run quite efficiently on a 3GB memory system. A system with that much RAM should be able to hold more than 200,000 people. Disk space requirements for databases are however considerably larger, with a typical database being several megabytes in size. For 120.000 people you must consider already 530Mb for the database. Pictures are stored on disk separately, so a large harddisk is necessary.
==Preferences==
@@ -181,7 +181,7 @@ The nice thing about standards is that there never is a shortage of them. Gramps
15. How do I import data from another genealogy program into Gramps?
The best way is to create a new gramps database file (.grdb), and select the import option in the file menu. Here you select the GEDCOM you generated with the other program, and import it.
The best way is to create a new gramps database file, and select the import option in the file menu. Here you select the GEDCOM you generated with the other program, and import it.
16. Can I install Gramps on a Linux Web Server and use it via a web browser? This would enable my relations worldwide to access and update it.
@@ -315,7 +315,7 @@ gramps-devel@lists.sf.net :-)
The next best thing would be to submit a good bug report. This can be done in
one of the two ways: (1) send your report to gramps-bugs@lists.sf.net
or (2) file your report with the bug tracker system at
http://bugs.gramps-project.org (this function is also
https://gramps-project.org/bugs/ (this function is also
available by selecting "Help->Report a bug" from gramps main menu).
A good bug report would include:
+316
View File
@@ -1,3 +1,319 @@
2018-08-08
Version 5.0.2
Update translations: cs, da, de, fi, fr, hr, it, ru, sl, sv
* Fix some Gramplets not updating during tree changes after db change.
* Fix Events Grampslet for bad sort order on dates/ages
* Fix References Tab to update on Deletes of items when editor is open
* Fix GEDCOM import for better support of TMG
* Fix Edit Link 'New' button to work
* Fix GEDCOM importer to properly handle multiple surnames per 5.5.1
* Narrative web: Sort problem with places.
* Fix Navigator sidebar so can change view type with proper resize
* Fix crash when using sidebar filter and merging in another view
* Fix AncestorTree so add siblings to center person works
* Fix graphs on Windows for font selection not working
* Fix dbapi reindex_reference_maps tool to properly close transaction
* Fix zoom via mouse wheel in media event editor selectionwidget, also fixes
zooming with scroll bars always present
* Fix metadata viewer so that metadata is actually detected and displayed
* Avoid comma in a lat/lon entry field.
* Avoid invalid characters and leading or trailing spaces in the entry field
* Fix crash for multiple deletes in one transaction
* Adjust translation strings for unmarried partners to give correct text in English
* Fix failure after Gedcom import if missing objects were found
* Mac: Fix none type has no len() error.
Set correct font resolution when drawing text directly to cairo.
* Fix Gedcom import so it doesn't create completely empty Birth events
* Fix Relationship view so ages are according to Preferences
* Fix Person Editor Events to properly update during external changes like
Event delete or update.
* Gedcom import/export fixes for mime and finding media
* Fix Unhandled exception in Geography editor
* Fix relationship path between filter rule when parent is missing
* Fix Graphs that use graphdoc pdf via Ghostscript with multi-page for poor
font rendering of some characters
* Fix finddupes tool when run from Match Threshold screen again after merge.
* Fix Gedcom import for multiple notes on OBJE (MULTIMEDIA_LINK)
* Deal with SQLite db corrupted by None name mapping
* Fix XML import to add tags to Events, Sources, Places, Repos, Cits when
requested.
* Fix for delete of a referenced primary obj while editing an added obj.
Also fixed to update the referenced obj on changes from outside the editor.
* Fix Place Tree view when using enclosed by sidebar filter
* Fix EditFamily for adding a child to single parent family with Surname
guessing set to combination.
* Fix Descendent Tree report for crash when person has multiple families
and one of them doesn't have a spouse.
* Fix Name editor crash after clearing a group_as name on dbapi dbs
* When we merge two objects:
We should stay on the selected row in list views.
In case we select the first family and select the gramps_id of the second
family, the new gramps_id is ignored
* Fix Relationship Graph; extra people when using filters & subgraphs
* Fix Place Format Editor file save/load for difficult names
* Fix Not all place types appears on family lines Graph
* Remember location of Sort Events Tool
* Fix Media editor when using double click the preview of added media
* Avoid leading and trailing spaces when copy/paste coordinates from a
map provider.
2018-12-20
Version 5.0.1
* Media Manager: add help button and remove '...'
* Edit/Preferences: add Help button
* Style Editor, Document Styles dialog: add help buttons
* Fix Select Person dialog Help button URL
* Fix Select Repository dialog Help button URL
* Relationship Calculator: Add help button
* Reorder Relationships dialog; add Help button
* Generate Book Dialog; Fix Help URL
* Manage Book dialog; add help button
* Fix Detached Gramplets Help button URL when 'help_url' not in .gpr
* Fix help URLs when they contain illegal characters and to match
wiki section targetID algorithm Issue
* Update translations: hu, hr, de, ru, fi, pt_PT, fr, sv, sl
* Fix contents of enclosed_by secondary dbapi column
(fixes scrambled places in tree view)
* Google maps URL problem
* Fix ODT reports with links when run in non-English languages
* Allow addon Reports to specify a help button URL for options dialog
* Fix Rebuild Secondary Indexes tool for dbapi backends.
For dbapi backends, this tool will update the secondary columns that
are used for indexing.
* Fix dbapi set_name_group_mapping to properly close transaction
* Fix Russian date handler crash when Russian language isn't installed
* Fix Quickview for missing table data on some Gtk Versions
* Fix startup messages when command line contains a bad filename
* Restrict Place view Name col to the primary name while allowing searchbar
to find alt and primary names
* Fix Person Sidebarfilter when using 'Event' and Reg expressions
* Fix Find Duplicate People; exception when deleting someone shown outside
of the tool
* Gedcom export, upgrade OBJE handling to Gedcom 5.5.1 style
* Fix CSV import to set marriage event role to family
* Update gramps bugtracker URL in all po files
* Narrative Web:
- thumbnails bad alignment.
- thumbnails problems in some cases.
- use latest version from openlayers.
- fixes Space between place, description and the event note
when there are many sources.
- Change the css order between print and screen. The chosen theme can erase
prior values.
- Add a width for the source column in all themes.
- Events difficult to read (screen and mobile)
* Fix typo in CitationListModel for sort change
* Fix Adding "ToDo" note crash when no active object
* Fix Citation List view Source Last Changed Column to sort properly
* Fix for re-entrant main window close when user hits 'x' again
* Fix exception when closing early editor in tree of editors
* Fix 'Generate Book' dialog for crash on 'x' close
* Fix ToDo Gramplet for multiple attempts to edit a note
* Fix Dashboard for multiple copies of a Gramplet
* Fix Dashboard to recall minimized or undocked Gramplets
* Fix Statusbar update to avoid intermittent exception on closed db
* Fix FilterParser for much older 3.x custom_filters.xml files
* Fix IsDuplicatedAncestorOf filter rule to avoid crash on tree loop
* Fix StyledTextEditor EditLink for root text changed to zero length
in the background Fixes
* Fix AgeOnDate and some reports using SimpleAccess for missing surname
* Fix crash when a filter with loop in definition is defined
* Fix HandleErrors related to LDS
* Fix ReferencedBySelection proxy for 'None' LDS Parents
* Fix HandleError in Citations Gramplet for lds place missing
* Change PlaceView drag from whole row to just icon during drag
* Add drag Icon to drags from DisplayTabs Gramplet lists
* Fix dialogs for 'Help' button closes the dialog, and non-functional 'Help'
* Fix Family Tree manager for 'Help' button closes dialog
* Fix selectors for 'Help' button closes dialog
* Fix 'Generate Book' dialog for 'Help' button closes dialog
* Fix TestcaseGenerator for 'Help' button closes dialog
* Fix Selectors to enable the 'Help' buttons to actually work
* Avoid HandleError when dragging an Added Family from EditFamily
* Avoid HandleError when dragging an Added Person from EditPerson
* Fix Clipboard rows cannot be sorted via drag/drop
* Better default directory choices for import/export file dialogs
* Records Report: call name not underlined in HTML
* Fix InteractiveSearch for find before model is populated
* Fix Gedcom export for incorrect escaping with @#DFRENCH R@
* Fix reports for shared event attribute and note errors
* Fix Fan and Descendant Fan charts in Quadrant and Half Circle modes
The Descendant Fan chart had several bugs:
1) a bug that affected the centering of the chart for these modes
2) the chart was drawn in the wrong quadrant
3) the centering of the chart for printing was incorrect
(the legend was off the page some of the time).
4) the sizing of the chart for printing was incorrect
(for very small charts of one generation, the legend would overwrite the
chart).
The Fan Chart for the quadrant view:
1) the centering of the chart for printing was incorrect
(the legend was off the page some of the time).
* Fixed issues in the Dutch relationship calculator
- extended the ordinal and removed lists till 50, like the English lists.
- Fixed bug in which uncles/aunts, nephews/nieces (niblings), siblings and
cousins with an unknown gender show up as female.
- Fixed some misspellings
* Setting the year as an ordinal number in Croatian; two more reports now show
a year as an ordinal number in Croatian
* fix name-note is not being cleared in Complete Individual report
* Fix View Column sizing so last column size setting is maintained
* Fix view so column widths are preserved when using filters
* fix the place-format option in Detailed Descendant and Detailed Ancestor text
reports
* Fix bsddb for person sort with empty Surname list
* Webcal: link problems in some cases Year 2016 is highlighted by default
instead of current year.
* Webcal: Missing links when muliyear unselected
* Geoclose: exception when a family has no father
* Family Descendant Tree; fix HandleError
* fix unhandled exception parsing "future dates" in some locales
* fix Julian/Gregorian calendar issue when entering only year as date when
running gramps in Norwegian
* Fix and restore Statistics Gramplet to 4.2.x status
* Fix Check and Repair to deal with bad references empty handle string
* Speed up Check and Repair, backlinks check stage.
* Fix strings containing deprecated (Python 3.6+) illegal escape sequences
* Whatsnext: check if db is open, fixes error if not.
* Fix usage of posixpath; should be os.path for os independence
* Fix generate_checksum routine to avoid MemoryError crash
* Fix corrupted Bookmarks that can happen after Gramps crash
* Fix Merge Family when same parent is missing from both families
* Fix <ctrl>c in view to get selected item to clipboard
* Fix Quickview Gramplet so updates work when changing active
* Fix place reference editor for bad cut/paste on set_latlongitude
* Fix Find Database Loop Tool (bad import of _collections)
* mac/gramps.modules: Switch included moduleset to gitlab.gnome.org.
* mac/gramps.bundle: File copy doesn't work if the glob can match directories.
* mac/gramps.bundle: Install the docs/gramps directory in the bundle.
* debian/changelog: Update the Debian changelog after the 5.0.0 release
* mac/Info.plist, mac/gramps.modules: Release Gramps-5.0.0 on Mac.
2018-07-24
Version 5.0.0
* Correct binary test logic for primary mask.
* Fix BaseSelector to avoid long delay before display on large trees.
* Export options > Gui alignment issue.
* Fix dialog button order on non-Mac systems.
* Update Debian directory after Gramps 5.0.0-rc1 release.
* Fix Custom filter update when created via sidebar.
* Fix Gramplet configure (View/Configure) for large options.
* Fix IndexError crash in Statistics Charts.
* [Mac] Change accel for Undo History. So that it doesn't conflict with a
system binding for hiding the window.
* Fix Family Lines/Family Colors picker for bad transient parent.
* Fix import_as_dict to utilize user gramps_id prefixes.
* Fix error when opening bsddb db in read-only mode.
* Fix dbapi dbs for closeing read-only db crash.
* Fix menus when operating with read-only db.
* Fix Name formats to show all parts.
* Fix dialogs for crash when canceling via 'x'.
* Remove obsolete omeat-python-modules dependencies.
* Update translations: cs, da, de, en_GB, eo, fi, hu, is, it, nb, pt_BR, ru, sk, uk, vi
2018-05-20
Version 5.0.0-rc1
* po/fi.po: Update Finnish translation
* po/ru.po: Update Russian translation
* po/de.po: update German translation
* po/cs.po: Update Czech translation
* po/ca.po: Update Catalan translation
* Fix merge persons when removed person was the Home (default) person
* Fix FanChartDesc for typo (copy/paste error). Bug occurs when selected
person has more than 4 parents.
* Fix Tag editor for multiple tag removes
* In Narweb, Relationship to Center person reversed
* Fix Citation Tree view for crash after plugin reload
* Fix 'References' Gramplet for issue when activated during an import
* disable Application Menu during import
* Fix Person/Family/Event view updates on various associated changes
* Fix Event view for changes in Main Participants
* Fix Person/Event/Place views for update to a Place or enclosing place
* Fix Person views to update on changes in birth/death event/place
* Allow unicode characters in json export
* Filtering problems in the geography view
* Crash when looking for a place within an area
* use same box margin for SVG and PDF.
* Webcal crashes after Narrative Web site exists
multiyear select option problem
* Catch exceptions when loading recent files
* Check that backend exists before loading database
* Disable family tree manager features when a backend is unavailable
If the default backend is unavailable, then reset it to bsddb.
* Enclose tree report image path and file name in braces
* Crash when selecting an old note, event, media, ...
Try to sort on another column.
* [NewRepositoryEditor]Fix help link
* [ReorderGrampsID]Fix broken help link
* Fix FTM for delete tree, followed by close; Title etc. shows old tree
* Fix Relationship path between filter for silent fail
* setup: Add configuration flag --no-compress-manpages.
* glade: Don't strip newlines from builder files.
* List sort by number for citation confidence level
* Fix confidence level sort in list views -based on the date-sort code.
* Fix confidence level tooltip -Stop run on text.
* Fix error in place displayer when offset is outside valid range
* Fix places in example.gramps
- Moved Greek places into top level Greece entry & added English names.
- Removed Puerto Rico as a country as part of USA
* Use sgettext for Name Format dialog
* Enable copying the birth & death fields for relationship view
* Allow Copying of text fields for Details tabs in selected views with
Details gramplets.
- Person Details
- Place Details
- Repository Details
* Geography: KML media objects not shown on map. Geography doesn't conform to the
relative paths If a place has no coordinates, KML files are not displayed.
* Fix Fan charts for scrolling/resizing of window; bad rendering
* Fix Clipboard for HandleErrors during db changes
* Fix Clipboard for Drop/Edit of Surname group in People Tree view
* Fix Relationship Graph for extraneous families when using filter
* Fix export gpkg when media files have fractional timestamps.
* Remove reference to postgresql in core code
* Move dbapi-specific code out of DbGeneric
* Create db _schema_exists method
* Fix place format option in place report
* Use -1 instead of None for default place format
* adds New [Place format:] option on the [Report Options (2)] tab
* [Narrative Web Report] Incorrect heading for stepmother or stepfather
* Cairodoc: Fix Book TOC and Index numbering and placement
* Fix Fan Chart(s) so they don't crash when opened as last view
* Fix Organize Tag editor for exception on 'x' close
* selectors: Change BaseSelector so that selection is kept during Find/Clear
* Fix multi-page Graph output to pdf with filenames containg spaces
* Fix Clipboard for right-click on empty clipboard
* docs/conf.py, docs/gen/gen_db.rst: Fix ImportError & update API docs year 2018
- Fixes ImportError: No module named 'gramps.plugins.db.dummydb'
- Update Copyright to 2018
* Webreport: Privacy problem with the relation to the center person.
* Fix Report Options when used with empty db
* debian/changelog: Finalise debian/changelog for beta1 release.
Also fix old syntax & trailing whitespace issues
* debian/rules: Enable extra tests that were failing for alpha3
* debian/patches: Patch person_rules_test.py To remove hard coded build path
from import. Fixes FTBFS due to test failure.
* debian/NEWS: Delete debian/NEWS file, only really applies in Debian
* debian/changelog: First beta release of gramps 5.0
* Sync debian directory with Debian experimental branch on salsa
* Point Vcs URLs at the Gramps Project on Github
* Correct spelling in debian/rules, node > nose
* Delete gbp.conf, not required as gbp not used to build package
* debian/gbp.conf: Remove gbp.conf, will not be using gbp to build
deb package Avoids updating it for every branch used to build it
* debian/rules: Fix spelling in d/rules node > nose
* debian/control: Update Vcs URLs to point at Gramps Github repo
* debian/NEWS, debian/README.Debian, debian/README.test,
debian/compat, debian/control, debian/copyright, debian/gbp.conf,
debian/gramps.docs, debian/rules, debian/source/format,
debian/source/local-options, debian/tests/control,
debian/tests/gramps-import-export, debian/upstream/metadata,
debian/watch: Resync debian dir from Debian 5.0 experimental branch
* debian/changelog: Update debian/changelog with releases since 4.0.3
* Fix testsuite failure when build happens out of the source tree.
Build path was hardcoded in an import in: person_rules_test.py
* mac/Info.plist, mac/gramps.modules: Release Gramps 5.0.0-beta1 on MacOS.
2018-02-17
Version 5.0.0-beta1
* pt_PT, hu, cs, it, fi, de, ru: update translation
+6 -2
View File
@@ -109,6 +109,7 @@ p#description {
a {
color: black;
text-decoration: none;
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
text-decoration: underline;
@@ -330,6 +331,10 @@ table.IndividualList td.ColumnSurname {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
----------------------------------------------------- */
#GalleryNav {
@@ -446,8 +451,7 @@ div#families table.attrlist td.ColumnType {
----------------------------------------------------- */
#indivgallery .thumbnail {
float: left;
max-width: 130px;
max-height: 150px;
width: 130px;
font-size: smaller;
text-align: center;
margin: 0.8em 0.5em;
+2 -2
View File
@@ -489,7 +489,7 @@ table.eventlist tbody tr td.ColumnNotes {
width: 20%;
}
table.eventlist tbody tr td.ColumnSources {
width: 17%;
width: 5%;
}
table.eventlist tbody tr td.ColumnPerson {
width: 35%;
@@ -1093,7 +1093,6 @@ div.Residence table.infolist tr td {
margin: 0;
float: left;
width: 130px;
height: 150px;
text-align: center;
}
#indivgallery div.thumbnail a {
@@ -1102,6 +1101,7 @@ div.Residence table.infolist tr td {
padding: 0;
text-decoration: none;
cursor: pointer;
word-wrap: break-word;
}
#indivgallery div.thumbnail a img {
padding: 0;
+6 -2
View File
@@ -109,6 +109,7 @@ p#description {
a {
color: black;
text-decoration: none;
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
background-color: #9DBF9D;
@@ -373,6 +374,10 @@ table.IndividualList td.ColumnSurname {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
----------------------------------------------------- */
#GalleryNav {
@@ -496,8 +501,7 @@ div#families table.attrlist td.ColumnType {
----------------------------------------------------- */
#indivgallery .thumbnail {
float: left;
max-width: 130px;
max-height: 150px;
width: 130px;
font-size: smaller;
text-align: center;
margin: 0.8em 0.5em;
+6 -2
View File
@@ -110,6 +110,7 @@ p#description {
a {
color: black;
text-decoration: none;
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
background-color: #E0E0E9
@@ -366,6 +367,10 @@ table.IndividualList td.ColumnSurname {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
----------------------------------------------------- */
#GalleryNav {
@@ -489,8 +494,7 @@ div#families table.attrlist td.ColumnType {
----------------------------------------------------- */
#indivgallery .thumbnail {
float: left;
max-width: 130px;
max-height: 150px;
width: 130px;
font-size: smaller;
text-align: center;
margin: 0.8em 0.5em;
+6 -2
View File
@@ -110,6 +110,7 @@ p#description {
a {
color: #36220B;
text-decoration: none;
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
background-color: #FFE09F
@@ -366,6 +367,10 @@ table.IndividualList td.ColumnSurname {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
----------------------------------------------------- */
#GalleryNav {
@@ -489,8 +494,7 @@ div#families table.attrlist td.ColumnType {
----------------------------------------------------- */
#indivgallery .thumbnail {
float: left;
max-width: 130px;
max-height: 150px;
width: 130px;
font-size: smaller;
text-align: center;
margin: 0.8em 0.5em;
+6 -2
View File
@@ -110,6 +110,7 @@ p#description {
a {
color: black;
text-decoration: none;
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
background-color: #EAEEF4
@@ -366,6 +367,10 @@ table.IndividualList td.ColumnSurname {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
----------------------------------------------------- */
#GalleryNav {
@@ -489,8 +494,7 @@ div#families table.attrlist td.ColumnType {
----------------------------------------------------- */
#indivgallery .thumbnail {
float: left;
max-width: 130px;
max-height: 150px;
width: 130px;
font-size: smaller;
text-align: center;
margin: 0.8em 0.5em;
-1
View File
@@ -32,7 +32,6 @@ body {
background-color: #00029D;
color: #00029D;
width: 100%;
padding: 0px 14px;
}
/* Navigation Menus
+6 -3
View File
@@ -119,6 +119,7 @@ h4 {
a {
color: #7D5925;
text-decoration: none;
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
background-color: #FFFFE7;
@@ -312,6 +313,10 @@ table#SortByCount thead th.ColumnQuantity a:after {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
-----------------------------------------------------------------*/
#GalleryNav {
@@ -432,8 +437,7 @@ div#families table.fixed_subtables table.eventlist th:last-child {
}
#indivgallery .thumbnail {
float: left;
max-width: 130px;
max-height: 150px;
width: 130px;
font-size: smaller;
text-align: center;
margin: 0.5em;
@@ -529,7 +533,6 @@ div#map_canvas {
table.calendar {
table-layout: fixed;
empty-cells: show;
width: 950px;
margin: 0px auto;
background: url(../images/Web_Mainz_Mid.png) #FFF2C6 repeat;
}
+7 -3
View File
@@ -576,6 +576,10 @@ table.relationships tbody tr td.ColumnPartner a:hover {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
----------------------------------------------------- */
#Gallery { }
@@ -732,7 +736,7 @@ table.download {
width:100%;
}
table.download img {
float:center;
float:none;
}
table.download thead tr th {
text-align:center;
@@ -929,7 +933,6 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
margin:0;
float:left;
width:130px;
height:150px;
text-align:center;
}
#indivgallery .thumbnail a {
@@ -937,6 +940,7 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
margin:0;
padding:0;
background:none;
word-wrap: break-word;
}
#indivgallery .thumbnail a img {
margin:0;
@@ -1093,7 +1097,7 @@ div#pedigree {
margin-right: 10px;
}
#footer p#copyright img {
margin-right: 10px[
margin-right: 10px;
}
#user_footer {
width: 70%;
+14 -10
View File
@@ -1,12 +1,12 @@
0 HEAD
1 SOUR Gramps
2 VERS 5.0.0-alpha2
2 VERS 5.0.2
2 NAME Gramps
1 DATE 1 SEP 2017
2 TIME 12:10:38
1 DATE 31 JUL 2019
2 TIME 10:58:33
1 SUBM @SUBM@
1 FILE C:\Users\prc\AppData\Roaming\gramps\temp\exp_sample_ged.ged
1 COPR Copyright (c) 2017 Alex Roitman,,,.
1 COPR Copyright (c) 2019 Alex Roitman,,,.
1 GEDC
2 VERS 5.5.1
2 FORM LINEAGE-LINKED
@@ -786,11 +786,7 @@
3 ADOP BOTH
1 FAMC @F0005@
2 PEDI adopted
1 OBJE
2 FORM jpeg
2 TITL Michael O'Toole 2015-11
2 FILE c:\grampsaio64-5.0.0\share\gramps\tests\O0.jpg
2 NOTE @N0019@
1 OBJE @O0000@
1 NOTE @N0007@
1 CHAN
2 DATE 18 JUN 2016
@@ -889,7 +885,7 @@
0 @I0046@ INDI
1 NAME Tom /Von Tester y tested/
2 GIVN Tom
2 SPFX Von,
2 SPFX Von
2 SURN Tester y, tested
2 NICK TesterNickname
1 SEX M
@@ -1423,4 +1419,12 @@
0 @N0017@ NOTE A citation Note Source text
0 @N0018@ NOTE Another Citation Note
0 @N0019@ NOTE A bad photo for sure
0 @O0000@ OBJE
1 FILE c:\users\prc\workspace\grampsm\main\data\tests\O0.jpg
2 FORM jpg
2 TITL Michael O'Toole 2015-11
1 NOTE @N0019@
1 CHAN
2 DATE 29 OCT 2016
3 TIME 15:23:37
0 TRLR
+38 -27
View File
@@ -3,41 +3,41 @@
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd">
<database xmlns="http://gramps-project.org/xml/1.7.1/">
<header>
<created date="2016-08-29" version="5.0.0-alpha1"/>
<created date="2019-03-13" version="5.0.2"/>
<researcher>
</researcher>
</header>
<events>
<event handle="_0000000500000005" change="1472500305" id="E0000">
<event handle="_0000000500000005" change="1" id="E0000">
<type>Birth</type>
<dateval val="1816"/>
<place hlink="_0000000700000007"/>
<citationref hlink="_0000000600000006"/>
</event>
<event handle="_0000000800000008" change="1472500305" id="E0001">
<event handle="_0000000800000008" change="1" id="E0001">
<type>Residence</type>
<dateval val="1850"/>
<place hlink="_0000000a0000000a"/>
<citationref hlink="_0000000900000009"/>
</event>
<event handle="_0000000b0000000b" change="1472500305" id="E0002">
<event handle="_0000000b0000000b" change="1" id="E0002">
<type>Death</type>
<datestr val="1850/1860"/>
<place hlink="_0000000c0000000c"/>
</event>
<event handle="_0000000f0000000f" change="1472500305" id="E0003">
<event handle="_0000000f0000000f" change="1" id="E0003">
<type>Marriage</type>
<dateval val="1841" type="about"/>
<place hlink="_0000001000000010"/>
</event>
<event handle="_0000001100000011" change="1472500305" id="E0004">
<event handle="_0000001100000011" change="1" id="E0004">
<type>Marriage</type>
<dateval val="1847-08"/>
<place hlink="_0000001200000012"/>
</event>
</events>
<people>
<person handle="_0000000100000001" change="1472500305" id="I0278">
<person handle="_0000000100000001" change="1" id="I0278">
<gender>M</gender>
<name type="Birth Name">
<first>Andrew</first>
@@ -54,13 +54,13 @@
</person>
</people>
<families>
<family handle="_0000000d0000000d" change="1472500305" id="F0073">
<family handle="_0000000d0000000d" change="1" id="F0073">
<rel type="Married"/>
<father hlink="_0000000100000001"/>
<eventref hlink="_0000000f0000000f" role="Family"/>
<childref hlink="_0000000100000001"/>
</family>
<family handle="_0000000e0000000e" change="1472500305" id="F0074">
<family handle="_0000000e0000000e" change="1" id="F0074">
<rel type="Married"/>
<father hlink="_0000000100000001"/>
<eventref hlink="_0000001100000011" role="Family"/>
@@ -68,19 +68,19 @@
</family>
</families>
<citations>
<citation handle="_0000000400000004" change="1472500305" id="C0000">
<citation handle="_0000000400000004" change="1" id="C0000">
<page>Year: 1850; Census Place: District 14, Cape Girardeau, Missouri; Roll: M432_394; Page: 435B; Image: 248</page>
<confidence>2</confidence>
<objref hlink="_0000000300000003"/>
<sourceref hlink="_0000000200000002"/>
</citation>
<citation handle="_0000000600000006" change="1472500305" id="C0001">
<citation handle="_0000000600000006" change="1" id="C0001">
<page>Year: 1850; Census Place: District 14, Cape Girardeau, Missouri; Roll: M432_394; Page: 435B; Image: 248</page>
<confidence>2</confidence>
<objref hlink="_0000000300000003"/>
<sourceref hlink="_0000000200000002"/>
</citation>
<citation handle="_0000000900000009" change="1472500305" id="C0002">
<citation handle="_0000000900000009" change="1" id="C0002">
<page>Year: 1850; Census Place: District 14, Cape Girardeau, Missouri; Roll: M432_394; Page: 435B; Image: 248</page>
<confidence>2</confidence>
<objref hlink="_0000000300000003"/>
@@ -88,7 +88,7 @@
</citation>
</citations>
<sources>
<source handle="_0000000200000002" change="1472500305" id="S0029">
<source handle="_0000000200000002" change="1" id="S0029">
<stitle>1850 United States Federal Census</stitle>
<sauthor>Ancestry.com</sauthor>
<spubinfo>Name: Ancestry.com Operations, Inc.; Location: Provo, UT, USA; Date: 2009;</spubinfo>
@@ -96,42 +96,43 @@
</source>
</sources>
<places>
<placeobj handle="_0000000700000007" change="1472500305" id="P0000" type="Unknown">
<placeobj handle="_0000000700000007" change="1" id="P0000" type="Unknown">
<ptitle>Tennessee, USA</ptitle>
<pname value="Tennessee, USA"/>
</placeobj>
<placeobj handle="_0000000a0000000a" change="1472500305" id="P0001" type="Unknown">
<placeobj handle="_0000000a0000000a" change="1" id="P0001" type="Unknown">
<ptitle>District 14, Cape Girardeau, Missouri, USA</ptitle>
<pname value="District 14, Cape Girardeau, Missouri, USA"/>
</placeobj>
<placeobj handle="_0000000c0000000c" change="1472500305" id="P0002" type="Unknown">
<placeobj handle="_0000000c0000000c" change="1" id="P0002" type="Unknown">
<ptitle>Bollinger Co. MO</ptitle>
<pname value="Bollinger Co. MO"/>
</placeobj>
<placeobj handle="_0000001000000010" change="1472500305" id="P0003" type="Unknown">
<placeobj handle="_0000001000000010" change="1" id="P0003" type="Unknown">
<ptitle>Union Co.?, IL</ptitle>
<pname value="Union Co.?, IL"/>
</placeobj>
<placeobj handle="_0000001200000012" change="1472500305" id="P0004" type="Unknown">
<placeobj handle="_0000001200000012" change="1" id="P0004" type="Unknown">
<ptitle>Wayne, Missouri, United States</ptitle>
<pname value="Wayne, Missouri, United States"/>
</placeobj>
</places>
<objects>
<object handle="_0000000300000003" change="1472500305" id="M159">
<object handle="_0000000300000003" change="1" id="M159">
<file src="1850 United States Federal Census(11)-1.jpg" mime="image/jpeg" description="1850 United States Federal Census"/>
<noteref hlink="_0000001400000014"/>
<noteref hlink="_0000001500000015"/>
</object>
<object handle="_0000001600000016" change="1472500305" id="M158">
<file src="D:/Users/PRC/Downloads/1850 United States Federal Census(11)-1.jpg" mime="image/jpeg" description="D:\Users\PRC\Downloads\1850 United States Federal Census(11)-1.jpg"/>
<object handle="_0000001600000016" change="1" id="M158">
<file src="/Users/PRC/Downloads/1850 United States Federal Census(11)-1.jpg" mime="image/jpeg" description="/Users/PRC/Downloads/1850 United States Federal Census(11)-1.jpg"/>
<noteref hlink="_0000001700000017"/>
</object>
<object handle="_0000001700000017" change="1472500305" id="M157">
<object handle="_0000001800000018" change="1" id="M157">
<file src="http://1.gravatar.com/avatar/77e02a3c8c665155ad1acaac8c2742e0?s=120&amp;d=mm&amp;r=pg" mime="unknown" description="http://1.gravatar.com/avatar/77e02a3c8c665155ad1acaac8c2742e0?s=120&amp;d=mm&amp;r=pg"/>
</object>
</objects>
<repositories>
<repository handle="_0000001300000013" change="1472500305" id="R0001">
<repository handle="_0000001300000013" change="1" id="R0001">
<rname>Ancestry.com</rname>
<type>Library</type>
<address>
@@ -140,16 +141,26 @@
</repository>
</repositories>
<notes>
<note handle="_0000001400000014" change="1472500305" id="N0000" type="Media Note">
<text>Year: 1850; Census Place: District 14, Cape Girardeau, Missouri; Roll: M432_394; Page: 435B; Image: 248</text>
<note handle="_0000001400000014" change="1" id="N0000" type="Media Note">
<text>Year: 1850; Census Place: District 14, Cape Girardeau, Missouri; Roll: M432_394; Page: 435B; Image: 248 </text>
</note>
<note handle="_0000001500000015" change="1472500305" id="N0001" type="GEDCOM import">
<note handle="_0000001500000015" change="1" id="N0001" type="GEDCOM import">
<text>Records not imported into OBJE (multi-media object) Gramps ID M159:
Could not import 1850 United States Federal Census(11)-1.jpg Line 70: 1 FILE 1850 United States Federal Census(11)-1.jpg</text>
Could not import 1850 United States Federal Census(11)-1.jpg Line 70: 1 FILE 1850 United States Federal Census(11)-1.jpg
</text>
<style name="fontface" value="Monospace">
<range start="0" end="200"/>
</style>
</note>
<note handle="_0000001700000017" change="1" id="N0002" type="GEDCOM import">
<text>Records not imported into OBJE (multi-media object) Gramps ID M158:
Could not import D:\Users\PRC\Downloads\1850 United States Federa Line 75: 1 FILE D:\Users\PRC\Downloads\1850 United States Federal Census(11)-1.jpg
</text>
<style name="fontface" value="Monospace">
<range start="0" end="223"/>
</style>
</note>
</notes>
</database>
+5 -4
View File
@@ -3,7 +3,7 @@
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd">
<database xmlns="http://gramps-project.org/xml/1.7.1/">
<header>
<created date="2017-05-30" version="5.0.0-alpha1"/>
<created date="2019-03-05" version="5.0.2"/>
<researcher>
</researcher>
</header>
@@ -66,9 +66,10 @@
<object handle="_0000000300000003" change="1" id="O0000">
<file src="test_emb_55.jpg" mime="image/jpeg" description="Multimedia link embedded form v5.5"/>
<noteref hlink="_0000000200000002"/>
<noteref hlink="_0000000b0000000b"/>
</object>
<object handle="_0000000400000004" change="548708291" id="M1">
<file src="" mime="" description="Multimedia link to linked form v5.5 blob"/>
<file src="" mime="image/jpeg" description="Multimedia link to linked form v5.5 blob"/>
<attribute type="REFN" value="Ref12345M1">
<noteref hlink="_0000001200000012"/>
</attribute>
@@ -117,7 +118,7 @@
<citationref hlink="_0000002700000027"/>
</object>
<object handle="_0000000c0000000c" change="1" id="O0002">
<file src="http://www.geni.com/photo/view?photo_id=6000000001341319061" mime="unknown" description="Multimedia link embedded form v5.5 URL"/>
<file src="http://www.geni.com/photo/view?photo_id=6000000001341319061" mime="text/html" description="Multimedia link embedded form v5.5 URL"/>
<noteref hlink="_0000000b0000000b"/>
</object>
<object handle="_0000000d0000000d" change="1" id="M7">
@@ -129,7 +130,7 @@
<noteref hlink="_0000002900000029"/>
</object>
<object handle="_0000001500000015" change="1" id="M2">
<file src="" mime="" description="2nd blob Multimedia link to linked form v5.5 blob"/>
<file src="" mime="image/jpeg" description="2nd blob Multimedia link to linked form v5.5 blob"/>
<noteref hlink="_0000001600000016"/>
</object>
</objects>
+61 -48
View File
@@ -3,7 +3,7 @@
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd">
<database xmlns="http://gramps-project.org/xml/1.7.1/">
<header>
<created date="2016-10-23" version="5.0.0-alpha1"/>
<created date="2019-07-30" version="5.0.2"/>
<researcher>
<resname>John A. Tester</resname>
</researcher>
@@ -26,27 +26,23 @@
<type>Death</type>
<noteref hlink="_0000001600000016"/>
</event>
<event handle="_0000001e0000001e" change="1" id="E0003">
<type>Who knows OBJE REFN TYPE</type>
<description>REFN</description>
</event>
<event handle="_0000002700000027" change="1" id="E0004">
<event handle="_0000002700000027" change="1" id="E0003">
<type>Birth</type>
<dateval val="1901-06-15"/>
</event>
<event handle="_0000002800000028" change="1" id="E0005">
<event handle="_0000002800000028" change="1" id="E0004">
<type>Death</type>
<dateval val="1975-07-05"/>
</event>
<event handle="_0000002e0000002e" change="1" id="E0006">
<event handle="_0000002e0000002e" change="1" id="E0005">
<type>Birth</type>
<dateval val="1922-06-15"/>
</event>
<event handle="_0000002f0000002f" change="1" id="E0007">
<event handle="_0000002f0000002f" change="1" id="E0006">
<type>Death</type>
<dateval val="1994-07-05"/>
</event>
<event handle="_0000003b0000003b" change="1" id="E0008">
<event handle="_0000003b0000003b" change="1" id="E0007">
<type>TEST</type>
<description>family</description>
</event>
@@ -61,10 +57,11 @@
<eventref hlink="_0000000f0000000f" role="Primary"/>
<eventref hlink="_0000001000000010" role="Primary"/>
<eventref hlink="_0000001500000015" role="Primary"/>
<eventref hlink="_0000001e0000001e" role="Primary"/>
<objref hlink="_0000001f0000001f"/>
<attribute type="RIN" value="123456 Person"/>
<attribute type="REFN" value="98765 for PERSON"/>
<attribute type="REFN" value="98765 for PERSON">
<noteref hlink="_0000001e0000001e"/>
</attribute>
<url href="http://homepages.rootsweb.com/~pmcbride/gedcom/55gctoc.htm" type="Web Home" description="GEDCOM 5.5 documentation web site"/>
<parentin hlink="_0000001700000017"/>
<noteref hlink="_0000001800000018"/>
@@ -270,7 +267,8 @@
Line ignored as not understood Line 18: 2 TEST Header Note
Empty note ignored Line 19: 1 NOTE
Skipped subordinate line Line 20: 2 TEST Empty Note</text>
Skipped subordinate line Line 20: 2 TEST Empty Note
</text>
<style name="fontface" value="Monospace">
<range start="0" end="327"/>
</style>
@@ -288,7 +286,8 @@ Skipped subordinate line Line 20:
Line ignored as not understood Line 26: 2 TEST Submission Note
Empty note ignored Line 27: 1 NOTE
Skipped subordinate line Line 28: 2 TEST Empty Note
Line ignored as not understood Line 29: 1 TEST submission</text>
Line ignored as not understood Line 29: 1 TEST submission
</text>
<style name="fontface" value="Monospace">
<range start="0" end="425"/>
</style>
@@ -300,7 +299,8 @@ Tag recognized but not supported Line 32:
Tag recognized but not supported Line 33: 1 REFN Submission Note REFN
Skipped subordinate line Line 34: 2 TYPE Submission Note REFN TYPE
Tag recognized but not supported Line 35: 1 SOUR Submission note source
Line ignored as not understood Line 39: 1 TEST on XREF Note</text>
Line ignored as not understood Line 39: 1 TEST on XREF Note
</text>
<style name="fontface" value="Monospace">
<range start="0" end="586"/>
</style>
@@ -318,7 +318,8 @@ Line ignored as not understood Line 39:
Line ignored as not understood Line 43: 2 TEST Submitter Note
Empty note ignored Line 44: 1 NOTE
Skipped subordinate line Line 45: 2 TEST Empty Note
Line ignored as not understood Line 46: 1 TEST Submitter</text>
Line ignored as not understood Line 46: 1 TEST Submitter
</text>
<style name="fontface" value="Monospace">
<range start="0" end="460"/>
</style>
@@ -360,7 +361,10 @@ Line ignored as not understood Line 46:
<note handle="_0000001d0000001d" change="979250406" id="N0018" type="Media Note">
<text>Media xref note</text>
</note>
<note handle="_0000002100000021" change="1" id="N0019" type="GEDCOM import">
<note handle="_0000001e0000001e" change="1" id="N0019" type="REFN-TYPE">
<text>Who knows OBJE REFN TYPE</text>
</note>
<note handle="_0000002100000021" change="1" id="N0020" type="GEDCOM import">
<text>Records not imported into INDI (individual) Gramps ID I0001:
Empty note ignored Line 54: 2 NOTE
@@ -382,12 +386,14 @@ Empty note ignored Line 85:
Skipped subordinate line Line 86: 3 TEST Empty Note
Line ignored as not understood Line 88: 3 TEST 123456 Note
Empty note ignored Line 90: 2 NOTE
Skipped subordinate line Line 91: 3 TEST Empty Note</text>
Skipped subordinate line Line 91: 3 TEST Empty Note
Line ignored as not understood Line 94: 2 TEST REFN
</text>
<style name="fontface" value="Monospace">
<range start="0" end="2009"/>
<range start="0" end="2101"/>
</style>
</note>
<note handle="_0000002200000022" change="1" id="N0020" type="GEDCOM import">
<note handle="_0000002200000022" change="1" id="N0021" type="GEDCOM import">
<text>Records not imported into NOTE Gramps ID N0018:
Tag recognized but not supported Line 103: 1 RIN 123456
@@ -396,85 +402,89 @@ Skipped subordinate line Line 105:
Tag recognized but not supported Line 109: 2 NOTE Note on a change on a note!!!
Skipped subordinate line Line 110: 3 CHAN
Skipped subordinate line Line 111: 4 DATE 2001-01-11
Skipped subordinate line Line 112: 5 TIME 16:00:06</text>
Skipped subordinate line Line 112: 5 TIME 16:00:06
</text>
<style name="fontface" value="Monospace">
<range start="0" end="741"/>
</style>
</note>
<note handle="_0000002300000023" change="1" id="N0021" type="REFN-TYPE">
<note handle="_0000002300000023" change="1" id="N0022" type="REFN-TYPE">
<text>Who knows REFN TYPE</text>
</note>
<note handle="_0000002500000025" change="1" id="N0022" type="GEDCOM import">
<note handle="_0000002500000025" change="1" id="N0023" type="GEDCOM import">
<text>Records not imported into OBJE (multi-media object) Gramps ID M1:
Could not import photo.jpg Line 114: 1 FILE photo.jpg</text>
Could not import photo.jpg Line 114: 1 FILE photo.jpg
</text>
<style name="fontface" value="Monospace">
<range start="0" end="164"/>
</style>
</note>
<note handle="_0000002900000029" change="979250406" id="N0023" type="Person Note">
<note handle="_0000002900000029" change="979250406" id="N0024" type="Person Note">
<text>Family Spouse reference Note</text>
<tagref hlink="_0000000500000005"/>
</note>
<note handle="_0000002b0000002b" change="1" id="N0024" type="GEDCOM import">
<note handle="_0000002b0000002b" change="1" id="N0025" type="GEDCOM import">
<text>Records not imported into INDI (individual) Gramps ID I0002:
Empty note ignored Line 132: 2 NOTE
Skipped subordinate line Line 133: 3 TEST Empty Note</text>
Skipped subordinate line Line 133: 3 TEST Empty Note
</text>
<style name="fontface" value="Monospace">
<range start="0" end="248"/>
</style>
</note>
<note handle="_0000002d0000002d" change="979250406" id="N0025" type="General">
<note handle="_0000002d0000002d" change="979250406" id="N0026" type="General">
<text>Name note</text>
<tagref hlink="_0000000500000005"/>
</note>
<note handle="_0000003100000031" change="1" id="N0026" type="LDS Note">
<note handle="_0000003100000031" change="1" id="N0027" type="LDS Note">
<text>Place note</text>
<tagref hlink="_0000000500000005"/>
</note>
<note handle="_0000003400000034" change="1" id="N0027" type="LDS Note">
<note handle="_0000003400000034" change="1" id="N0028" type="LDS Note">
<text>LDS xref note</text>
</note>
<note handle="_0000003600000036" change="979250406" id="N0028" type="Association Note">
<note handle="_0000003600000036" change="979250406" id="N0029" type="Association Note">
<text>Association link note</text>
<tagref hlink="_0000000500000005"/>
</note>
<note handle="_0000003800000038" change="1" id="N0029" type="GEDCOM import">
<note handle="_0000003800000038" change="1" id="N0030" type="GEDCOM import">
<text>Records not imported into INDI (individual) Gramps ID I0003:
Empty note ignored Line 141: 2 NOTE
Skipped subordinate line Line 142: 3 TEST Empty Note
Line ignored as not understood Line 163: 3 TEST Accociation note
Empty note ignored Line 167: 2 NOTE
Skipped subordinate line Line 168: 3 TEST Empty Note</text>
Skipped subordinate line Line 168: 3 TEST Empty Note
</text>
<style name="fontface" value="Monospace">
<range start="0" end="538"/>
</style>
</note>
<note handle="_0000003900000039" change="979250406" id="N0030" type="General">
<note handle="_0000003900000039" change="979250406" id="N0031" type="General">
<text>Just for association</text>
<tagref hlink="_0000000500000005"/>
</note>
<note handle="_0000003e0000003e" change="1" id="N0031" type="Family Note">
<note handle="_0000003e0000003e" change="1" id="N0032" type="Family Note">
<text>Family xref note</text>
</note>
<note handle="_0000003f0000003f" change="979250406" id="N0032" type="Family Note">
<note handle="_0000003f0000003f" change="979250406" id="N0033" type="Family Note">
<text>Family note</text>
<tagref hlink="_0000000500000005"/>
</note>
<note handle="_0000004000000040" change="1" id="N0033" type="Citation">
<note handle="_0000004000000040" change="1" id="N0034" type="Citation">
<text>Citation Data Note</text>
<tagref hlink="_0000000500000005"/>
</note>
<note handle="_0000004100000041" change="1" id="N0034" type="Source text">
<note handle="_0000004100000041" change="1" id="N0035" type="Source text">
<text>A sample text from a source of this family</text>
</note>
<note handle="_0000004200000042" change="979250406" id="N0035" type="Citation">
<note handle="_0000004200000042" change="979250406" id="N0036" type="Citation">
<text>A note this citation is on the FAMILY record.</text>
<tagref hlink="_0000000500000005"/>
</note>
<note handle="_0000004400000044" change="1" id="N0036" type="GEDCOM import">
<note handle="_0000004400000044" change="1" id="N0037" type="GEDCOM import">
<text>Records not imported into FAM (family) Gramps ID F0001:
Line ignored as not understood Line 183: 2 TEST Family Note
@@ -482,41 +492,44 @@ Empty note ignored Line 187:
Skipped subordinate line Line 188: 2 TEST Empty Note
Line ignored as not understood Line 190: 2 TEST citation
Line ignored as not understood Line 194: 3 TEST Citation Data
Line ignored as not understood Line 196: 4 TEST Citation Data Note</text>
Line ignored as not understood Line 196: 4 TEST Citation Data Note
</text>
<style name="fontface" value="Monospace">
<range start="0" end="645"/>
</style>
</note>
<note handle="_0000004600000046" change="979250406" id="N0037" type="Repository Reference Note">
<note handle="_0000004600000046" change="979250406" id="N0038" type="Repository Reference Note">
<text>A short note about the repository link.</text>
<tagref hlink="_0000000500000005"/>
</note>
<note handle="_0000004700000047" change="979250406" id="N0038" type="Source Note">
<note handle="_0000004700000047" change="979250406" id="N0039" type="Source Note">
<text>note embedded in the SOURCE Record</text>
<tagref hlink="_0000000500000005"/>
</note>
<note handle="_0000004800000048" change="1" id="N0039" type="GEDCOM import">
<note handle="_0000004800000048" change="1" id="N0040" type="GEDCOM import">
<text>Records not imported into SOUR (source) Gramps ID S0001:
Line ignored as not understood Line 206: 1 TEST source
Empty note ignored Line 208: 2 NOTE
Skipped subordinate line Line 209: 3 TEST Empty Note
Empty note ignored Line 214: 1 NOTE
Skipped subordinate line Line 215: 2 TEST Empty Note</text>
Skipped subordinate line Line 215: 2 TEST Empty Note
</text>
<style name="fontface" value="Monospace">
<range start="0" end="524"/>
</style>
</note>
<note handle="_0000004900000049" change="1" id="N0040" type="Repository Note">
<note handle="_0000004900000049" change="1" id="N0041" type="Repository Note">
<text>Repository Note</text>
<tagref hlink="_0000000500000005"/>
</note>
<note handle="_0000004a0000004a" change="1" id="N0041" type="GEDCOM import">
<note handle="_0000004a0000004a" change="1" id="N0042" type="GEDCOM import">
<text>Records not imported into REPO (repository) Gramps ID R0002:
Line ignored as not understood Line 223: 1 TEST Repo
Empty note ignored Line 224: 1 NOTE
Skipped subordinate line Line 225: 2 TEST Empty Note</text>
Skipped subordinate line Line 225: 2 TEST Empty Note
</text>
<style name="fontface" value="Monospace">
<range start="0" end="340"/>
</style>
+2 -2
View File
@@ -50,9 +50,9 @@
0 @I0@ INDI
1 NAME Anna /Hansdotter/
2 GIVN Anna
2 SURN Hansdotter, Smith
2 SPFX Vrow, huh
2 SURN Hansdotter
2 SPFX Vrow
2 SURN Smith
2 _AKA Anna Smith
2 _AKA Hanna
2 NOTE Hans daughter? N0000
+34 -19
View File
@@ -3,7 +3,7 @@
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd">
<database xmlns="http://gramps-project.org/xml/1.7.1/">
<header>
<created date="2016-10-24" version="5.0.0-alpha1"/>
<created date="2019-07-31" version="5.0.2"/>
<researcher>
<resname>Alex Roitman,,,</resname>
<resaddr>Not Provided</resaddr>
@@ -163,6 +163,7 @@
</event>
<event handle="_0000005500000055" change="1" id="E0026">
<type>Birth</type>
<description>No Date Information</description>
</event>
<event handle="_0000005600000056" change="1" id="E0027">
<type>Death</type>
@@ -616,7 +617,8 @@
<gender>F</gender>
<name type="Birth Name">
<first>Anna</first>
<surname prefix="Vrow">Smith</surname>
<surname prefix="Vrow">Hansdotter</surname>
<surname prim="0">Smith</surname>
<noteref hlink="_0000001100000011"/>
</name>
<name alt="1" type="Also Known As">
@@ -1456,13 +1458,13 @@
<noteref hlink="_000000f9000000f9"/>
</object>
<object handle="_000000d1000000d1" change="1" id="O0001">
<file src="Magnes&amp;Anna_smiths_marr_cert.jpg" mime="unknown" description="Magnes&amp;Anna_smiths_marr_cert.jpg"/>
<file src="Magnes&amp;Anna_smiths_marr_cert.jpg" mime="image/jpeg" description="Magnes&amp;Anna_smiths_marr_cert.jpg"/>
</object>
<object handle="_000000d8000000d8" change="1" id="O0002">
<file src="John&amp;Alice_smiths_marr_cert.jpg" mime="unknown" description="John&amp;Alice_smiths_marr_cert.jpg"/>
<file src="John&amp;Alice_smiths_marr_cert.jpg" mime="image/jpeg" description="John&amp;Alice_smiths_marr_cert.jpg"/>
</object>
<object handle="_000000f1000000f1" change="1" id="O0003">
<file src="Attic_photo.jpg" mime="unknown" description="Attic_photo.jpg"/>
<file src="Attic_photo.jpg" mime="image/jpeg" description="Attic_photo.jpg"/>
</object>
</objects>
<repositories>
@@ -1506,7 +1508,8 @@
<note handle="_0000000100000001" change="1" id="N0000" type="GEDCOM import">
<text>Records not imported into HEAD (header):
GEDCOM FORM not supported Line 14: 2 FORM NOT LINEAGE-LINKED</text>
GEDCOM FORM not supported Line 14: 2 FORM NOT LINEAGE-LINKED
</text>
<style name="fontface" value="Monospace">
<range start="0" end="148"/>
</style>
@@ -1514,7 +1517,8 @@ GEDCOM FORM not supported Line 14:
<note handle="_0000000200000002" change="1" id="N0001" type="GEDCOM import">
<text>Records not imported into SUBM (Submitter): (@SUBM@) Alex Roitman,,,:
Line ignored as not understood Line 23: 2 NOTE No address provided (note not supported)</text>
Line ignored as not understood Line 23: 2 NOTE No address provided (note not supported)
</text>
<style name="fontface" value="Monospace">
<range start="0" end="199"/>
</style>
@@ -1523,7 +1527,8 @@ Line ignored as not understood Line 23:
<text>Records not imported into FAM (family) Gramps ID F0003:
Line ignored as not understood Line 46: 2 SOUR Not really allowed here
Filename omitted Line 48: 1 OBJE</text>
Filename omitted Line 48: 1 OBJE
</text>
<style name="fontface" value="Monospace">
<range start="0" end="256"/>
</style>
@@ -1562,7 +1567,8 @@ Filename omitted Line 48:
<text>Records not imported into INDI (individual) Gramps ID I0016:
Warn: ADDR overwritten Line 204: 3 ADR1 456 Main St again
ADDR element ignored '459 Main St.' Line 202: 2 ADDR 459 Main St., The Village, San Francisco, CA, USA</text>
ADDR element ignored '459 Main St.' Line 202: 2 ADDR 459 Main St., The Village, San Francisco, CA, USA
</text>
<style name="fontface" value="Monospace">
<range start="0" end="304"/>
</style>
@@ -1573,7 +1579,8 @@ ADDR element ignored '459 Main St.' Line 202:
<note handle="_0000004700000047" change="1" id="N0014" type="GEDCOM import">
<text>Records not imported into INDI (individual) Gramps ID I0018:
Tag recognized but not supported Line 245: 2 TYPE first generaton</text>
Tag recognized but not supported Line 245: 2 TYPE first generaton
</text>
<style name="fontface" value="Monospace">
<range start="0" end="165"/>
</style>
@@ -1604,7 +1611,8 @@ Company. He enlisted in the army at Sparks 7 December 1917 and served as a Corpo
<note handle="_000000cf000000cf" change="1" id="N0021" type="GEDCOM import">
<text>Records not imported into FAM (family) Gramps ID F0010:
Tag recognized but not supported Line 863: 2 _STAT</text>
Tag recognized but not supported Line 863: 2 _STAT
</text>
<style name="fontface" value="Monospace">
<range start="0" end="146"/>
</style>
@@ -1613,7 +1621,8 @@ Tag recognized but not supported Line 863:
<text>Records not imported into FAM (family) Gramps ID F0011:
Could not import Magnes&amp;Anna_smiths_marr_cert.jpg Line 878: 3 OBJE
Could not import Magnes&amp;Anna_smiths_marr_cert.jpg Line 881: 2 OBJE</text>
Could not import Magnes&amp;Anna_smiths_marr_cert.jpg Line 881: 2 OBJE
</text>
<style name="fontface" value="Monospace">
<range start="0" end="233"/>
</style>
@@ -1621,7 +1630,8 @@ Could not import Magnes&amp;Anna_smiths_marr_cert.jpg Line 8
<note handle="_000000d9000000d9" change="1" id="N0023" type="GEDCOM import">
<text>Records not imported into FAM (family) Gramps ID F0012:
Could not import John&amp;Alice_smiths_marr_cert.jpg Line 905: 1 OBJE</text>
Could not import John&amp;Alice_smiths_marr_cert.jpg Line 905: 1 OBJE
</text>
<style name="fontface" value="Monospace">
<range start="0" end="145"/>
</style>
@@ -1629,7 +1639,8 @@ Could not import John&amp;Alice_smiths_marr_cert.jpg Line 9
<note handle="_000000e4000000e4" change="1" id="N0024" type="GEDCOM import">
<text>Records not imported into FAM (family) Gramps ID F0008:
Tag recognized but not supported Line 1005: 1 ADDR 123 Main st, Grantville, Virginia, USA</text>
Tag recognized but not supported Line 1005: 1 ADDR 123 Main st, Grantville, Virginia, USA
</text>
<style name="fontface" value="Monospace">
<range start="0" end="183"/>
</style>
@@ -1653,7 +1664,8 @@ Tag recognized but not supported Line 1005:
<text>Records not imported into SOUR (source) Gramps ID S0003:
Tag recognized but not supported Line 1045: 1 DATA
Skipped subordinate line Line 1046: 2 AGNC NYC Public Library</text>
Skipped subordinate line Line 1046: 2 AGNC NYC Public Library
</text>
<style name="fontface" value="Monospace">
<range start="0" end="252"/>
</style>
@@ -1669,7 +1681,8 @@ Skipped subordinate line Line 1046:
REFN ignored Line 1075: 3 REFN blah blah
Skipped subordinate line Line 1076: 4 TYPE who knows
Could not import Attic_photo.jpg Line 1079: 3 OBJE</text>
Could not import Attic_photo.jpg Line 1079: 3 OBJE
</text>
<style name="fontface" value="Monospace">
<range start="0" end="344"/>
</style>
@@ -1677,7 +1690,8 @@ Could not import Attic_photo.jpg Line 1079:
<note handle="_000000f6000000f6" change="1" id="N0034" type="GEDCOM import">
<text>Records not imported into Top Level:
Unknown tag Line 1106: 0 XXX an unknown token at level 0</text>
Unknown tag Line 1106: 0 XXX an unknown token at level 0
</text>
<style name="fontface" value="Monospace">
<range start="0" end="152"/>
</style>
@@ -1685,12 +1699,13 @@ Unknown tag Line 1106:
<note handle="_000000f8000000f8" change="1" id="N0035" type="GEDCOM import">
<text>Records not imported into Top Level:
Unknown tag Line 1109: 1 @X1@ XXX and unknown token xref definition</text>
Unknown tag Line 1109: 1 @X1@ XXX and unknown token xref definition
</text>
<style name="fontface" value="Monospace">
<range start="0" end="163"/>
</style>
</note>
<note handle="_000000f9000000f9" change="1477325896" id="N0036" type="General">
<note handle="_000000f9000000f9" change="1564588949" id="N0036" type="General">
<text>Objects referenced by this note were missing in a file imported on 12/25/1999 12:00:00 AM.</text>
</note>
</notes>
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -57,7 +57,7 @@
<_tip number="29"><b>Show All Checkbutton</b><br/>When adding an existing person as a spouse, the list of people shown is filtered to display only people who could realistically fit the role (based on dates in the database). In case Gramps is wrong in making this choice, you can override the filter by checking the Show All checkbutton.</_tip>
<_tip number="31"><b>Improving Gramps</b><br/>Users are encouraged to request enhancements to Gramps. Requesting an enhancement can be done either through the gramps-users or gramps-devel mailing lists, or by going to http://bugs.gramps-project.org and creating a Feature Request. Filing a Feature Request is preferred but it can be good to discuss your ideas on the email lists.</_tip>
<_tip number="31"><b>Improving Gramps</b><br/>Users are encouraged to request enhancements to Gramps. Requesting an enhancement can be done either through the gramps-users or gramps-devel mailing lists, or by going to https://gramps-project.org/bugs/ and creating a Feature Request. Filing a Feature Request is preferred but it can be good to discuss your ideas on the email lists.</_tip>
<_tip number="32"><b>Gramps Mailing Lists</b><br/>Want answers to your questions about Gramps? Check out the gramps-users email list. Many helpful people are on the list, so you're likely to get an answer quickly. If you have questions related to the development of Gramps, try the gramps-devel list. You can see the lists by selecting &quot;Help &gt; Gramps Mailing Lists&quot;.</_tip>
@@ -91,7 +91,7 @@
<_tip number="49"><b>Making a Genealogy Website</b><br/>You can easily export your family tree to a web page. Select the entire database, family lines or selected individuals to a collection of web pages ready for upload to the World Wide Web.</_tip>
<_tip number="50"><b>Reporting Bugs in Gramps</b><br/>The best way to report a bug in Gramps is to use the Gramps bug tracking system at http://bugs.gramps-project.org</_tip>
<_tip number="50"><b>Reporting Bugs in Gramps</b><br/>The best way to report a bug in Gramps is to use the Gramps bug tracking system at https://gramps-project.org/bugs/</_tip>
<_tip number="51"><b>The Gramps Homepage</b><br/>The Gramps homepage is at http://gramps-project.org/</_tip>
+12 -12
View File
@@ -1,18 +1,18 @@
Gramps for Debian
----------------------
-----------------
This is the Debian package of the 4.0 series of GRAMPS.
Version 5.0 of gramps adds the option of using a new database backend called
DB_API, as an alternative to the default BSDDB (Berkeley).
It is a major update of Gramps to upgrade to GTK 3. A switch was also made to distutils from autotools.
Two DB-API SQL engines have been developed, sqlite3 and postgresql. Compared
to BSDDB, the alternative backends have beend designed allow some flexibility
with respect to using the database with multiple users, or in multiple
locations (different computers).
The 4.0 series of Gramps is being packaged for the experimental distribution until all dependencies are available
and it proves stable.
For more details, please read the Gramps wiki:
https://gramps-project.org/wiki/index.php?title=DB-API_Database_Backend
Webkit - gir1.2-webkit-3.0 crashes. Gramps has been patched disable the hidden
HTML view instead until a solution is found.
Please note, this particular version is a pre-release version for testing.
Please do not use it on your only copy of important genealogical data.
Goocanvas2 - The latest Goocanvas is not available in Debian yet. If you miss
the Graphview plugin, you could try installing the gir1.2-goocanvas-2.0-9 which
is available in Ubuntu.
-- Ross Gammon <rossgammon@mail.dk> Sat, 25 Jan 2014 18:00:00 +0100
-- Ross Gammon <rossgammon@debian.org> Mon, 19 Feb 2018 00:04:00 +0100
+157
View File
@@ -0,0 +1,157 @@
Run gramps -v from the commandline and check dependencies:
- From the commandline type $ gramps -v
- The gramps version and versions of library dependencies are output
- Check that all dependencies have been installed, show their versions, and that there are no error messages
- If required, install the dependencies that have not been found (typically icu, osmgpsmap & gexiv)
- Type $ gramps -v again
- Check that all dependencies have been installed, show their versions, and that there are no error messages
Open Gramps, create an empty Family Tree, and check the Gramps version, credits & license:
- Run gramps
- Family Trees window opens
- Click "New" to create an empty Family Tree
- Type a name for your family tree (e.g. Sample), and press "Enter"
- Click "Load Family Tree"
- Gramps displays the "Welcome to Gramps!" start screen
- Choose Help > About from the menu
- The "About gramps" window is displayed with Version information
- Click on "Credits"
- A list of Authors and Contributors to Gramps is displayed
- Click on "License"
- The GNU General Public License is displayed
- Click on the "X" to close the "About gramps" window
- Gramps closes the "About gramps" window and returns to the "Welcome to Gramps!" start screen
Import a GEDCOM file into Gramps
If you do not have one to hand, the provided example can be extracted to your home directory and imported from there.
/usr/share/doc/gramps/example/gedcom/sample.ged.gz
- From your open and empty Family Tree, choose Family Trees > Import from the menu
- The Gramps: Import Family Tree window opens
- Locate your GEDCOM file, select it and click on "Import"
- The Import Statistics window displays "Results: done"
- Click on "Close"
- The GEDCOM import report window displays "No errors detected"
- CLick on "Close"
- The Top Surnames gramplet displays the surnames of the people imported into the Tree
Test aspects of the People View
- Click on the People View
- A list of people in "Group View" mode are shown
- Click on the arrow for a surname (e.g. Hansdotter)
- The people with this surname are revealed
- Select a person and click in the "Edit selcted person" icon (or just double click on the person)
- The "Person" window opens showing the details of this person
- Click on Cancel
- The "Person" window closes
- Choose the person list view (not grouped) by clicking on the "People" icon
- The people are now listed without any grouping by surname
- Click on the "+" icon to create a new person
- An empty "Person" window opens
- Enter some details about the person (e.g. given name, surname, and gender)
- Click on the "+" button to create a new event for this person
- The "Event Reference Editor" window opens
- Create an event (e.g. birth) by entering a date
- Click on the "+" button to add a new place
- The "New Place" window opens
- Type in some details about the place (Name, Type, Latitude & Longitude)
- Click on OK
- The "New Place" window closes
- In the "Event Reference Editor" click OK
- In the "Person" window click OK
- The "Person" window closes and you can find the person just created in the list of people
Test aspects of the Relationships View
- Click on Anna Hansdotter to select her
- Click on the Relationships View
- Details of Anna and her family are displayed
- Click on one of her children, Hjalmar Smith
- Details of Hjalmar and his family are displayed
- Click on the "Add existing Child to family" icon just above Halmar's children
- The "Select Child" window opens
- Find the person you entered previously and select it
- Click OK
- The "Select Child" window closes and you can see the new person listed as a child in Hjalmar's family
Test aspects of the Charts View
- Click on the Charts View
- The Pedigree View is shown
- Click somewhere in the Pedigree View and drag the chart around
- The mouse pointer changes to a hand and the chart can be move around
- Click on the left and right arrows (when going left you need to choose the child to move to)
- The chart will move to reveal the next generation in the family
- Make sure there are several families in view, then Click on the "Fan Chart" icon
- A fan chart showing the ancesters of the main person is shown
- Click on the Descendant Fan icon
- A fan chart showing the descendants of the same person is shown
Test aspects of the Geography View
- Click on the Geography View
- The map may take some time to load, then a pin for the person you entered early should be shown on the map at the coordinates you entered
- Click on the pin
- A choice of the place, or the person will be offered
- Hover over the place name, and choose "Edit Place"
- The "Place Selection in a region" opens
- Double click on the place
- The "Place:" editor opens
- Click on Cancel
- Click on the pin
- A choice of the place, or the person will be offered
- Hover over the persons name, and choose "Edit Event"
- The "Event:" window opens
- Click on Cancel
Import a Gramps Xml file (*.gramps) into Gramps
An existing Gramps *.gramps file with links to media will be needed for this and the next test. If you do not have one to hand, the provided example can be extracted to your home directory and imported from there.
/usr/share/doc/gramps/example/gramps/example.gramps.gz
- From the "Family Trees" menu, choose "Manage Family Trees"
- The Family Trees window opens
- Click "New" to create an empty Family Tree
- Type a name for your family tree (e.g. Example), and press "Enter"
- Click "Load Family Tree"
- Gramps opens an empty database
- From your open and empty Family Tree, choose Family Trees > Import from the menu
- The Gramps: Import Family Tree window opens
- Locate your *.gramps file, select it and click on "Import"
- The import may take some minutes, then the Import Statistics window displays the number of objects imported.
- Click on "Close"
- The Import Statistics window closes.
View Media for a person, and add new media
The media for the example file you may have used in the previous test can be found in /usr/share/doc/gramps/example/gramps/. Create a folder in your home directory to store Gramps media, and then copy the media there.
You will also need a photo to add to Gramps. Any photo will do (e.g. *.jpg file - but you can use the ones provided with Gramps).
You also need to set the base media patch for Gramps.
- In the "Edit" menu, choose "Preferences".
- The Preferences window opens on the "General" tab.
- Click the "Folder" icon to set the "Base path for relative media paths".
- The "Select media directory" window opens
- Choose the directory where your media is stored and then click "Apply"
- The "Select media directory" window closes
- Click Close
- The "Preferences" window closes
- In the "People" View, find a person with media associated (e.g. Eugene Stanley Garner, Jr. in the example database) and select him/her.
- Below the Detials tab, a thumbnail image of the person should appear (in the case of Eugene Stanley Garner, Jr. you should see him yawning). It may be necessary to restart Gramps to see the Thumbnail.
- Double click on the person's name in the People View.
- The "Person:" window opens, and the image is dispayed for the person in the Image square in the top left corner of the "Person:" window.
- Double click on the image.
- The Media Reference Editor opens showing details about the image.
- Double click in the bottom image Preview.
- An external viewer opens giving details of the image metadata and allowing some basic manipulation of the image.
- Click on the "X" to close the external viewer
- Click "Cancel" on the Media Reference Editor
- Click "Cancel" on the "Person:" window.
- All three windows close.
- Click on the "Media View".
- A list of available media is shown.
- Click on the "+" icon.
- The "Select a media object" window opens.
- Move to the folder where the media is and select the new photo (if you are using the examples provided with Gramps, I can recommend choosing O3.jpg).
- Click on "OK".
- The "New Media" window opens.
- Click on "OK".
- The media is added to the list of media.
- Select the new media.
- A preview (thumbnail) image is shown.
- Close Gramps by choosing "Quit" from the "Family Trees" menu.
- Gramps closes.
TODO: Tagging & Filtering
+133 -7
View File
@@ -1,16 +1,142 @@
Old Changelog:
gramps (5.0.2-1) unstable; urgency=medium
* New release
* Remove ancient python version field from debian/control
* Bump standards version, no changes required
-- Ross Gammon <rossgammon@debian.org> Sun, 11 Aug 2019 14:11:35 +0200
gramps (5.0.1-1) unstable; urgency=medium
* New release
* Update copyright file
-- Ross Gammon <rossgammon@debian.org> Thu, 20 Dec 2018 20:41:23 +0100
gramps (5.0.0-1) unstable; urgency=medium
* New Gramps release
-- Ross Gammon <rossgammon@debian.org> Wed, 25 Jul 2018 21:19:00 +0200
gramps (5.0.0~rc1-1) unstable; urgency=medium
* First release candidate for Gramps 5.0
* Drop patch applied upstream
* Update copyrights
-- Ross Gammon <rossgammon@debian.org> Sun, 01 Jul 2018 21:57:10 +0200
gramps (5.0.0~beta1-1) unstable; urgency=medium
* First beta release of gramps 5.0
* Sync debian directory with Debian experimental branch on salsa
* Point Vcs URLs at the Gramps Project on Github
* Correct spelling in debian/rules, node > nose
* Delete gbp.conf, not required as gbp not used to build package
* Delete NEWS file, only really applicable in Debian
* Fix syntax errors in d/changelog and remove trailing whitespace
* Patch person_rules_test.py to remove hard coded build path from
import. Fixes FTBFS due to test failure.
* Enable extra tests that were failing for alpha3
-- Ross Gammon <rossgammon@debian.org> Mon, 19 Feb 2018 19:25:25 +0100
gramps (4.2.8) unstable; urgency=medium
* Quick bug fix release
-- Ross Gammon <rossgammon@debian.org> Sat, 10 Feb 2018 08:30:33 +0100
gramps (5.0.0-alpha3) experimental; urgency=medium
* New alpha release for Gramps 5.0.0
-- Ross Gammon <rossgammon@debian.org> Mon, 04 Sep 2017 16:55:41 +0200
gramps (4.2.6) UNRELEASED; urgency=medium
* New upstream for Gramps 4.2.6
-- Jérôme Rapinat <romjerome@yahoo.fr> Tue, 01 Aug 2017 14:10:19 +0200
gramps (5.0.0-alpha2) experimental; urgency=medium
* 2nd Alpha release for testing
-- Ross Gammon <rosco2@ubuntu.com> Mon, 12 Jun 2017 19:42:39 +0200
gramps (4.2.5) UNRELEASED; urgency=medium
* New upstream for Gramps 4.2.5
-- Jérôme Rapinat <romjerome@yahoo.fr> Thu, 15 Dec 2016 18:52:08 +0100
gramps (4.2.4) UNRELEASED; urgency=medium
* New upstream for Gramps 4.2.4
-- Jérôme Rapinat <romjerome@yahoo.fr> Sun, 04 Sep 2016 18:34:49 +0200
gramps (5.0.0-alpha1) UNRELEASED; urgency=medium
* Alpha stream for Gramps 5.0.0
-- système <romjerome@yahoo.fr> Sat, 04 Jun 2016 20:07:14 +0200
gramps (4.2.3) UNRELEASED; urgency=medium
* New upstream for Gramps 4.2.3
-- Jérôme Rapinat <romjerome@yahoo.fr> Sun, 10 Apr 2016 21:09:19 +0200
gramps (4.2.2) UNRELEASED; urgency=medium
* New upstream for Gramps 4.2.2
-- Jérôme Rapinat <romjerome@yahoo.fr> Wed, 06 Jan 2016 19:38:25 +0100
gramps (4.2.1) UNRELEASED; urgency=medium
* New upstream for Gramps 4.2.1
-- Jérôme Rapinat <romjerome@yahoo.fr> Tue, 13 Oct 2015 05:08:30 +0200
gramps (4.2.0) UNRELEASED; urgency=medium
* New upstream for Gramps 4.2.0
-- Jérôme Rapinat <romjerome@yahoo.fr> Sun, 02 Aug 2015 17:03:37 +0200
gramps (4.1.3) precise; urgency=low
* New upstream for Gramps 4.1 branch (4.1.3)
-- Jérôme Rapinat <romjerome@yahoo.fr> Thu, 30 Apr 2015 18:42:34 +0200
gramps (3.4.9-1) precise; urgency=low
* New upstream release for 3.4.x branch
-- Jérôme Rapinat <romjerome@yahoo.fr> Thu, 30 Apr 2015 16:02:44 +0200
gramps (4.0.4) precise; urgency=low
* New upsteam for Gramps 4.0.4
-- Jérôme Rapinat <romjerome@yahoo.fr> Fri, 23 May 2014 17:07:41 +0200
gramps (4.0.3) precise; urgency=low
* - 4.0.4-git.f08e40 Experimental stream gramps.git
-- Jérôme Rapinat <romjerome@yahoo.fr> Tue, 04 Feb 2014 19:49:32 +0100
gramps (4.0.2) precise; urgency=low
* experimental .deb for gramps 4.0.2
-- Jérôme Rapinat <romjerome@yahoo.fr> Wed, 04 Dec 2013 10:23:36 +0100
-- Jérôme Rapinat <romjerome@yahoo.fr> Wed, 04 Dec 2013 10:23:36 +0100
gramps (4.0.1-2) precise; urgency=low
@@ -705,7 +831,7 @@ gramps (0.7.3-1) unstable; urgency=low
* Added new entry to the upstream NEWS file - it was missing.
* Added '#! usr/bin/python -O' line to src/AddMedia.py to make lintian happy.
Also removed this line from src/DbPrompter.py for the same reason.
* Edited debian/rules to call '$(MAKE) clean' instead of
* Edited debian/rules to call '$(MAKE) clean' instead of
'$(MAKE) distclean' which did not exist.
* Edited src/Makefile.in - 'clean' target should also remove *.so files.
* Pre-built static HTMLs since the on-the-fly generation from SGML is buggy.
@@ -840,7 +966,7 @@ gramps (0.3.1-2) unstable; urgency=low
* The author has finally addressed the issue of a missing help file. Though
as of now none have been created the error produced before is gone and the
author is working on better documentation.
Closes: #99617
Closes: #99617
-- Brandon L. Griffith <brandon@debian.org> Thu, 28 Jun 2001 20:27:30 -0500
@@ -917,7 +1043,7 @@ gramps (0.1.4-3) unstable; urgency=low
This should take care of the startup problem some people have had.
Bug Fixed. Closes: #98646
* Silly me named the menu file wrong so it never got included into the
* Silly me named the menu file wrong so it never got included into the
Debian Menu system. Gramps should now show up under Apps->Tools. Have
no idea how I overlooked this.
+1 -1
View File
@@ -1 +1 @@
9
11
+32 -18
View File
@@ -1,29 +1,37 @@
Source: gramps
Section: python
Section: gnome
Priority: optional
Maintainer: Ross Gammon <rossgammon@mail.dk>
Maintainer: Ross Gammon <rossgammon@debian.org>
Build-Depends-Indep:
dh-linktree,
dh-python,
gettext,
intltool,
libxml-parser-perl,
python3-all,
python3-setuptools
python3-setuptools,
python3-nose,
gir1.2-gtk-3.0 (>= 3.10.0),
python3-gi (>= 3.12.0),
python3-gi-cairo,
python3-bsddb3,
python3-lxml,
python3-jsonschema,
python3-mock,
python3-icu,
python3-nose-exclude
Build-Depends:
dh-python,
debhelper (>= 9.0.0)
Standards-Version: 3.9.5
Vcs-Git: git://anonscm.debian.org/collab-maint/gramps.git
Vcs-browser: http://anonscm.debian.org/gitweb/?p=collab-maint/gramps.git
Homepage: http://www.gramps-project.org/
X-Python-Version: >= 3.2
debhelper (>= 11)
Standards-Version: 4.4.0
Vcs-Git: https://github.com/gramps-project/gramps.git
Vcs-browser: https://github.com/gramps-project/gramps/tree/maintenance/gramps50
Homepage: https://www.gramps-project.org/
Package: python3-gramps
Package: gramps
Architecture: all
Depends:
gir1.2-gtk-3.0 (>= 3.10.0),
librsvg2-2,
python3-gi,
python3-gi (>= 3.12.0),
python3-gi-cairo,
python3-bsddb3,
xdg-utils,
@@ -31,16 +39,22 @@ Depends:
${python3:Depends}
Recommends:
graphviz,
gir1.2-goocanvas-2.0,
libosmgpsmap-1.0-0,
gir1.2-gexiv2-0.10,
gir1.2-osmgpsmap-1.0,
python3-pyicu
python3-icu
Suggests:
fonts-freefont-ttf,
gir1.2-gexiv2-0.10,
gir1.2-goocanvas-2.0,
gir1.2-gtkspell3-3.0,
python3-pil,
rcs
rcs,
python3-numpy
Conflicts:
python-gramps,
python3-gramps
Replaces:
python-gramps,
python3-gramps
Description: Genealogical research program
Gramps is an Open Source genealogy program written in Python, using
the GTK/GNOME interface. It is an extremely flexible program fitting
+39 -238
View File
@@ -1,37 +1,37 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: Gramps
Source: http://gramps-project.org
Source: https://gramps-project.org
Files: *
Copyright: 2000-2007, Alex Roitman
2000-2002, Bruce J. DeGrasse
2000-2008, Donald N. Allingham
2000-2007, Martin Hawlisch
2001, Andrés Sepúlveda
2001, Andrés Sepúlveda
2001, David R. Hampton
2001-2013, Free Software Foundation, Inc.
2001-2017, Free Software Foundation, Inc.
2001, Graham J. Williams
2001, Jesper Zedlitz
2001-2013, The Gramps Project
2001-2018, The Gramps Project
2002, Gary Shao
2003-2006, Josiah Carlson
2004-2006, Eero Tamminen
2004-2013, Julio Sánchez
2004, Toshio Kuratomi
2005-2011, Serge Noiraud
2006-2011, Brian G. Matherly
2004-2013, Julio Sánchez
2005-2017, Serge Noiraud
2006-2012, Brian G. Matherly
2006, 2008-2011, Kees Bakker
2006-2008, Steve Hall
2007-2012, Benny Malengier
2007-2012, Douglas S. Blank
2007-2013, Benny Malengier
2007-2013, 2015-2016, Douglas S. Blank
2007-2012, Gary Burton
2007-2011, Jerome Rapinat
2007, Johan Gronqvist
2007, Robert Cawley
2007-2009, Stephane Charette
2007-2016, The Gramps Developers
2007, Thom Sturgill
2007-2008, Zsolt Foldvari
2008-2010, 2012, Craig J. Anderson
2008-2010, 2012-2015, Craig J. Anderson
2008-2009, James Friedmann
2008-2009, Jason Simanek
2008, Lukasz Rymarczyk
@@ -43,133 +43,59 @@ Copyright: 2000-2007, Alex Roitman
2008, Stefan Siegel
2008-2010, Stephen George
2009-2010, Andrew I Baznikin
2009, 2011, The Dojo Foundation
2009, Florian Heinle
2009, Gerald W. Britton
2009, Igal Shapira
2009, 2011, John Resig
2009-2013, Nick Hall
2009-2018, Nick Hall
2009, Pander Musubi
2009, Robert Ham
2009, Swoon on bug tracker
2009, Yevgeny Zegzda
2010, Gramps
2010, 2015 Gramps
2010, Jakim Friant
2010, Josip
2010, lcc & Robert Jerome
2010-2012, Michiel D. Nauta
2010-2013, Tim G L Lyons
2010-2011, Vlada Perić
2010-2016, Tim G L Lyons
2010-2011, 2014, Vlada Perić
2011, Adam Stein
2011-2012, Harald Rosemann
2011, 2013, Heinz Brinker
2011, Helge Herz
2011, 2013 John Ralls
2011, Matt Keenan
2011-2013, Paul Franklin
2012, Mathieu MD
2011, 2016 Matt Keenan
2011-2018, Paul Franklin
2012, lcc
2012, 2014, Mathieu MD
2012, Nicolas Adenis-Lamarre
2013, Fedir Zinchuk
2013, Oleh Petrivk
2013, Vassilii Khachaturov
2013, Artem Glebov
2011-2016, Fedir Zinchuk
2013-2017, Alois Poettker
2013-2014, Vassilii Khachaturov
2013, Zissis Papadopoulos
2015, Icelandic translators of Gramps
2014, Bastien Jacquet
2014, Gerald Kunzmann
2015, Fabrice
2015, Lajos Nemeséri
2015, Detlef Wolz
2016, Allen Crider
2016, DaAwesomeP
2016-2017, Paul Culley
2016, QuLogic
2016, Tom Samstag
2017, Mindaugas Baranauskas
2017, Robert Carnell
2018, Robin van der Vliet
License: GPL-2+
Files: data/javascript/jquery-1.3.2.min.js
Copyright: 2009, John Resig
License: MIT and GPL
Files: data/javascript/jquery-1.7.1.js
Copyright: 2011, John Resig
2011, The Dojo Foundation
License: BSD and MIT and GPL-2
Files: data/javascript/jquery-ui-1.7.2.custom.min.js
Copyright: 2009, jQuery UI Team (http://jqueryui.com/about/)
License: MIT and GPL-2
Files: data/javascript/jquery.flexbox*
Copyright: 2008-2010, Noah Heldman and Fairway Technologies
License: Ms-PL
Files: data/jhtmlarea/Readme.txt
Copyright: 2009, Chris Pietschmann
License: Ms-RL
Files: data/jhtmlarea/scripts/jHtmlArea*
Copyright: 2009, Chris Pietschmann
License: Ms-RL
Files: data/jhtmlarea/scripts/jquery-1.3.2*
Copyright: 2009, John Resig
2009, The Dojo Foundation
License: MIT
Files: data/jhtmlarea/scripts/jquery-ui-*
Copyright: 2009, jQuery UI Team (http://jqueryui.com/about)
License: MIT and GPL
Files: debian/*
Copyright: 2001-2002, Brandon L. Griffith
2002, Alex Roitman
2002-2012, James A. Treacy
2013, Ross Gammon
2013-2018, Ross Gammon
License: GPL-2+
Files: gramps/webapp/grampsdb/view/png.py
Copyright: 2006, Johann C. Rocholl
2009, David Jones
2006, Nicko van Someren
License: MIT
License: BSD
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the <organization> nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
.
THIS SOFTWARE IS PROVIDED BY John Resig ''AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
License: GPL
This package 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; version 1 only of the License.
.
On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL'.
License: GPL-2
This package 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; version 2 only of the License.
.
This package 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 package; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
.
On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL-2'.
License: GPL-2+
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -187,128 +113,3 @@ License: GPL-2+
.
On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL-2'.
License: MIT
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
License: Ms-PL
This license governs use of the accompanying software. If you use the
software, you accept this license. If you do not accept the license, do not
use the software.
.
1. Definitions
.
The terms "reproduce," "reproduction," "derivative works," and "distribution"
have the same meaning here as under U.S. copyright law.
.
A "contribution" is the original software, or any additions or changes to the
software.
.
A "contributor" is any person that distributes its contribution under this
license.
.
"Licensed patents" are a contributor's patent claims that read directly on its
contribution.
.
2. Grant of Rights
.
(A) Copyright Grant- Subject to the terms of this license, including the
license conditions and limitations in section 3, each contributor grants you a
non-exclusive, worldwide, royalty-free copyright license to reproduce its
contribution, prepare derivative works of its contribution, and distribute its
contribution or any derivative works that you create.
.
(B) Patent Grant- Subject to the terms of this license, including the license
conditions and limitations in section 3, each contributor grants you a
non-exclusive, worldwide, royalty-free license under its licensed patents to
make, have made, use, sell, offer for sale, import, and/or otherwise dispose of
its contribution in the software or derivative works of the contribution in the
software.
.
3. Conditions and Limitations
.
(A) No Trademark License- This license does not grant you rights to use any
contributors' name, logo, or trademarks.
.
(B) If you bring a patent claim against any contributor over patents that you
claim are infringed by the software, your patent license from such contributor
to the software ends automatically.
.
(C) If you distribute any portion of the software, you must retain all copyright,
patent, trademark, and attribution notices that are present in the software.
.
(D) If you distribute any portion of the software in source code form, you may do
so only under this license by including a complete copy of this license with your
distribution. If you distribute any portion of the software in compiled or object
code form, you may only do so under a license that complies with this license.
.
(E) The software is licensed "as-is." You bear the risk of using it. The
contributors give no express warranties, guarantees or conditions. You may have
additional consumer rights under your local laws which this license cannot change.
To the extent permitted under your local laws, the contributors exclude the
implied warranties of merchantability, fitness for a particular purpose and
non-infringement.
License: Ms-RL
This license governs use of the accompanying software. If you use the software,
you accept this license. If you do not accept the license, do not use the software.
.
1. Definitions
The terms "reproduce," "reproduction," "derivative works," and "distribution" have
the same meaning here as under U.S. copyright law.
A "contribution" is the original software, or any additions or changes to the
software.
A "contributor" is any person that distributes its contribution under this license.
"Licensed patents" are a contributor's patent claims that read directly on its
contribution.
.
2. Grant of Rights
(A) Copyright Grant- Subject to the terms of this license, including the license
conditions and limitations in section 3, each contributor grants you a
non-exclusive, worldwide, royalty-free copyright license to reproduce its
contribution, prepare derivative works of its contribution, and distribute its
contribution or any derivative works that you create.
(B) Patent Grant- Subject to the terms of this license, including the license
conditions and limitations in section 3, each contributor grants you a
non-exclusive, worldwide, royalty-free license under its licensed patents to make,
have made, use, sell, offer for sale, import, and/or otherwise dispose of its
contribution in the software or derivative works of the contribution in the software.
.
3. Conditions and Limitations
(A) Reciprocal Grants- For any file you distribute that contains code from the
software (in source code or binary format), you must provide recipients the source
code to that file along with a copy of this license, which license will govern that
file. You may license other files that are entirely your own work and do not contain
code from the software under any terms you choose.
(B) No Trademark License- This license does not grant you rights to use any
contributors' name, logo, or trademarks.
(C) If you bring a patent claim against any contributor over patents that you claim
are infringed by the software, your patent license from such contributor to the
software ends automatically.
(D) If you distribute any portion of the software, you must retain all copyright,
patent, trademark, and attribution notices that are present in the software.
(E) If you distribute any portion of the software in source code form, you may do so
only under this license by including a complete copy of this license with your
distribution. If you distribute any portion of the software in compiled or object code
form, you may only do so under a license that complies with this license.
(F) The software is licensed "as-is." You bear the risk of using it. The contributors
give no express warranties, guarantees or conditions. You may have additional consumer
rights under your local laws which this license cannot change. To the extent permitted
under your local laws, the contributors exclude the implied warranties of
merchantability, fitness for a particular purpose and non-infringement.
+1
View File
@@ -0,0 +1 @@
RELEASE_NOTES
+25 -22
View File
@@ -1,35 +1,38 @@
#!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
export DH_VERBOSE=1
export DH_OPTIONS=-v
#export DH_VERBOSE=1
#export DH_OPTIONS=-v
export PYBUILD_NAME=gramps
export PYBUILD_INSTALL_ARGS_python3=--resourcepath=/usr/share --force
%:
dh $@ --with python3 --buildsystem=pybuild
# Override auto test because upstream do not use the standard unittest discover
# Override auto test to enable nose tests
override_dh_auto_test:
# Override of auto_build
override_dh_auto_build:
python3 setup.py build
HOME=$(CURDIR)/build \
nosetests3 -vv \
--exclude=TestcaseGenerator \
--exclude=test4_arbitrary_uncode_path \
--exclude-dir=gramps/plugins/test/ \
gramps
# Override of auto_install to remove information from package
override_dh_auto_install:
#dh_auto_install
python3 setup.py install --resourcepath=/usr/share --root=debian/python3-gramps --install-layout=deb
# Remove duplicate license/copyright information
rm $(CURDIR)/debian/python3-gramps/usr/share/doc/gramps/COPYING
dh_installchangelogs NEWS
dh_auto_install
# Remove install file as it is not needed by package users
rm $(CURDIR)/debian/python3-gramps/usr/share/doc/gramps/INSTALL
# Link license/copyright information to debians
ln -s /usr/share/common-licenses/GPL-2 $(CURDIR)/debian/python3-gramps/usr/share/doc/gramps/COPYING
rm $(CURDIR)/debian/gramps/usr/share/doc/gramps/INSTALL
# Remove NEWS file as it is now installed as the changelog
rm $(CURDIR)/debian/gramps/usr/share/doc/gramps/NEWS
#Remove license information in COPYING file & link to system license
rm $(CURDIR)/debian/gramps/usr/share/doc/gramps/COPYING
ln -s /usr/share/common-licenses/GPL-2 $(CURDIR)/debian/gramps/usr/share/doc/gramps/COPYING
# Make css style sheets and png icons non-executable
override_dh_fixperms:
dh_fixperms
chmod a-x $(CURDIR)/debian/python3-gramps/usr/share/gramps/css/Web_*.css
# Avoid compressing COPYING file so that it can appear in the "About" dialog
override_dh_compress:
dh_compress -X COPYING
# Fix clean target
override_dh_clean:
rm -rf data/tips.xml
rm -rf gramps/plugins/lib/holidays.xml
rm -rf po/.intltool-merge-cache
dh_clean
+1 -1
View File
@@ -1 +1 @@
1.8
3.0 (quilt)
+1
View File
@@ -0,0 +1 @@
unapply-patches
+3
View File
@@ -0,0 +1,3 @@
Tests: gramps-import-export
Depends: gramps, gzip
Restrictions: allow-stderr
+38
View File
@@ -0,0 +1,38 @@
#!/bin/sh
# Author: Ross Gammon <rossgammon@mail.dk>
#
# autopkgtest check: Tests that gramps can import the sample gedcom file and
# export it in the .gpkg format, and then import the example gramps database
# and export it in gedcom format.
set -e
echo "--------------------------------"
echo "GEDCOM to Gramps conversion test"
echo "--------------------------------"
echo "Retrieving sample gedcom"
cp /usr/share/doc/gramps/example/gedcom/sample.ged.gz .
echo "Unzipping sample gedcom"
gunzip sample.ged.gz
echo "Importing gedcom into gramps and exporting a gramps .gpkg file"
gramps -i sample.ged -e sample.gpkg
echo "-----------------------------------"
echo "GEDCOM to Gramps conversion SUCCESS"
echo "-----------------------------------"
echo
echo "--------------------------------"
echo "Gramps to GEDCOM conversion test"
echo "--------------------------------"
echo "Retrieving example gramps file"
cp /usr/share/doc/gramps/example/gramps/example.gramps.gz .
echo "Unzipping example gramps file"
gunzip example.gramps.gz
echo "Importing gramps file into gramps and exporting a gedcom"
gramps -i example.gramps -e example.ged
echo "-----------------------------------"
echo "Gramps to GEDCOM conversion SUCCESS"
echo "-----------------------------------"
echo
echo "gramps-import-export: TEST PASSED"
+7
View File
@@ -0,0 +1,7 @@
Bug-Database: https://gramps-project.org/bugs/my_view_page.php
Contact: https://lists.sourceforge.net/lists/listinfo/gramps-users
Donation: https://sourceforge.net/project/project_donations.php?group_id=25770
Name: Gramps
Homepage: https://gramps-project.org/
Repository: https://github.com/gramps-project/gramps.git
Repository-Browse: https://github.com/gramps-project/gramps
+8
View File
@@ -0,0 +1,8 @@
version=3
opts=\
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 \
.*/archive/v?([\d\.]+).tar.gz
+1 -1
View File
@@ -57,7 +57,7 @@ master_doc = 'index'
# General information about the project.
project = 'Gramps'
copyright = '2017, The Gramps Project'
copyright = '2001-2018, The Gramps Project'
author = 'Donald N. Allingham'
# The version info for the project you're documenting, acts as replacement for
+1 -1
View File
@@ -46,7 +46,7 @@ Generic
DummyDb
====================================
.. automodule:: gramps.plugins.db.dummydb
.. automodule:: gramps.gen.db.dummydb
:members:
:undoc-members:
:show-inheritance:
+1 -1
View File
@@ -15,7 +15,7 @@
<resphone>(555)123-4567</resphone>
<resemail>anyone@someplace.com</resemail>
</researcher>
<mediapath>{GRAMPS_RESOURCES}/example/gramps</mediapath>
<mediapath>{GRAMPS_RESOURCES}/doc/gramps/example/gramps</mediapath>
</header>
<tags>
<tag handle="_c7642d9389b54417e8b" change="1370206720" name="tag1" color="#000000000000" priority="0"/>
+31 -20
View File
@@ -3,11 +3,11 @@
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd">
<database xmlns="http://gramps-project.org/xml/1.7.1/">
<header>
<created date="2016-08-31" version="5.0.0"/>
<created date="2018-03-08" version="5.0.0"/>
<researcher>
<resname>Alex Roitman,,,</resname>
</researcher>
<mediapath>{GRAMPS_RESOURCES}/example/gramps</mediapath>
<mediapath>{GRAMPS_RESOURCES}/doc/gramps/example/gramps</mediapath>
</header>
<name-formats>
<format number="-1" name="SURNAME, Given (Common)" fmt_str="SURNAME, given (common)" active="1"/>
@@ -13946,10 +13946,10 @@
<place hlink="_VDCKQCZX3MEHKVDR8S"/>
<description>Death of Schultz, Rev.Isaac</description>
</event>
<event handle="_a5af0ed3f64432fb742" change="1284030595" id="E2618">
<event handle="_a5af0ed3f64432fb742" change="1520536150" id="E2618">
<type>Burial</type>
<dateval val="1818" type="about"/>
<place hlink="_4ECKQCWCLO5YIHXEXZ"/>
<place hlink="_c965872633b600e8b5ca4d5e6db"/>
<description>Burial of Schultz, Rev.Isaac</description>
</event>
<event handle="_a5af0ed3f9b07f938fb" change="1284030602" id="E2619">
@@ -59379,10 +59379,6 @@
<ptitle>USA</ptitle>
<pname value="USA"/>
</placeobj>
<placeobj handle="_4ECKQCWCLO5YIHXEXZ" change="1234373374" id="P1704" type="Country">
<ptitle>Puerto Rico</ptitle>
<pname value="Puerto Rico"/>
</placeobj>
<placeobj handle="_4FUJQCDFTJJJNKKJMH" change="1234390522" id="P0958" type="City">
<ptitle>Boone, IA</ptitle>
<pname value="Boone"/>
@@ -65622,29 +65618,44 @@
<pname value="St. Lawrence"/>
<placeref hlink="_c96587263cc11e217c35cc9003f"/>
</placeobj>
<placeobj handle="_d583a5b7ab21971300a" change="1467134436" id="P0435" type="Unknown">
<placeobj handle="_d583a5b7ab21971300a" change="1520535854" id="P0435" type="City">
<ptitle>Δράμα</ptitle>
<pname value="Δράμα"/>
<pname value="Δράμα" lang="el"/>
<pname value="Drama" lang="en"/>
<placeref hlink="_dd445e5bfcc17bd1838"/>
</placeobj>
<placeobj handle="_d583a5b8614206a939d" change="1467134581" id="P0436" type="Unknown">
<placeobj handle="_d583a5b8614206a939d" change="1520535887" id="P0436" type="City">
<ptitle>Θεσσαλονίκη</ptitle>
<pname value="Θεσσαλονίκη"/>
<pname value="Θεσσαλονίκη" lang="el"/>
<pname value="Thessaloniki" lang="en"/>
<placeref hlink="_dd445e5bfcc17bd1838"/>
</placeobj>
<placeobj handle="_d583a5b8a8c1474357d" change="1467135440" id="P0437" type="Unknown">
<placeobj handle="_d583a5b8a8c1474357d" change="1520535915" id="P0437" type="City">
<ptitle>Ιωάννινα</ptitle>
<pname value="Ιωάννινα"/>
<pname value="Ιωάννινα" lang="el"/>
<pname value="Ioannina" lang="en"/>
<placeref hlink="_dd445e5bfcc17bd1838"/>
</placeobj>
<placeobj handle="_d583a5b8b586fb992c8" change="1467135553" id="P0438" type="Unknown">
<placeobj handle="_d583a5b8b586fb992c8" change="1520535978" id="P0438" type="City">
<ptitle>Σιάτιστα</ptitle>
<pname value="Σιάτιστα"/>
<pname value="Σιάτιστα" lang="el"/>
<pname value="Siatista" lang="en"/>
<placeref hlink="_dd445e5bfcc17bd1838"/>
</placeobj>
<placeobj handle="_d583a5b8c380fb024c9" change="1467136002" id="P0439" type="Unknown">
<placeobj handle="_d583a5b8c380fb024c9" change="1520535800" id="P0439" type="City">
<ptitle>Άργος</ptitle>
<pname value="Άργος"/>
<pname value="Άργος" lang="el"/>
<pname value="Argos" lang="en"/>
<placeref hlink="_dd445e5bfcc17bd1838"/>
</placeobj>
<placeobj handle="_d583a5b8d1106cda712" change="1467136077" id="P0440" type="Unknown">
<placeobj handle="_d583a5b8d1106cda712" change="1520535947" id="P0440" type="City">
<ptitle>Μεσολόγγι</ptitle>
<pname value="Μεσολόγγι"/>
<pname value="Μεσολόγγι" lang="el"/>
<pname value="Missolonghi" lang="en"/>
<placeref hlink="_dd445e5bfcc17bd1838"/>
</placeobj>
<placeobj handle="_dd445e5bfcc17bd1838" change="1520535973" id="P0441" type="Country">
<pname value="Greece" lang="en"/>
</placeobj>
</places>
<objects>
+4 -1
View File
@@ -382,7 +382,7 @@ class ArgHandler:
self.open = db_path
self.__open_action()
else:
sys.exit(1)
sys.exit(_("Error: cannot open '%s'") % self.open_gui)
return db_path
# if not open_gui, parse any command line args. We can only have one
@@ -554,6 +554,9 @@ class ArgHandler:
if self.dbman.needs_recovery(dbpath):
self.__error(_("Database needs recovery, cannot open it!"))
return False
if self.dbman.backend_unavailable(dbpath):
self.__error(_("Database backend unavailable, cannot open it!"))
return False
return True
#-------------------------------------------------------------------------
+14 -15
View File
@@ -48,8 +48,8 @@ import logging
from gramps.gen.plug import BasePluginManager
from gramps.gen.config import config
from gramps.gen.constfunc import win
from gramps.gen.db.dbconst import DBLOGNAME
from gramps.gen.db.utils import make_database
from gramps.gen.db.dbconst import DBLOGNAME, DBBACKEND
from gramps.gen.db.utils import make_database, get_dbid_from_path
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
@@ -68,8 +68,8 @@ _LOG = logging.getLogger(DBLOGNAME)
#-------------------------------------------------------------------------
DEFAULT_TITLE = _("Family Tree")
NAME_FILE = "name.txt"
BACKEND_FILE = "database.txt"
META_NAME = "meta_data.db"
UNAVAILABLE = _('Unavailable')
#-------------------------------------------------------------------------
#
@@ -155,11 +155,7 @@ class CLIDbManager:
_("Version")
_("Schema version")
"""
dbid = "bsddb"
dbid_path = os.path.join(dirpath, "database.txt")
if os.path.isfile(dbid_path):
with open(dbid_path) as file:
dbid = file.read().strip()
dbid = get_dbid_from_path(dirpath)
if not self.is_locked(dirpath):
try:
database = make_database(dbid)
@@ -183,7 +179,7 @@ class CLIDbManager:
for plugin in pmgr.get_reg_databases():
if plugin.id == dbid:
return plugin._name
return _("Unknown")
return UNAVAILABLE
def print_family_tree_summaries(self, database_names=None):
"""
@@ -236,11 +232,7 @@ class CLIDbManager:
for dpath in os.listdir(dbdir):
dirpath = os.path.join(dbdir, dpath)
path_name = os.path.join(dirpath, NAME_FILE)
try:
with open(os.path.join(dirpath, "database.txt")) as file:
backend_type = file.read()
except:
backend_type = "bsddb"
backend_type = get_dbid_from_path(dirpath)
if os.path.isfile(path_name):
with open(path_name, 'r', encoding='utf8') as file:
name = file.readline().strip()
@@ -308,7 +300,7 @@ class CLIDbManager:
dbid = config.get('database.backend')
newdb = make_database(dbid)
backend_path = os.path.join(new_path, BACKEND_FILE)
backend_path = os.path.join(new_path, DBBACKEND)
with open(backend_path, "w", encoding='utf8') as backend_file:
backend_file.write(dbid)
@@ -402,6 +394,13 @@ class CLIDbManager:
return True
return False
def backend_unavailable(self, dbpath):
"""
Returns True if the database in dirpath has an unavailable backend
"""
dbid = get_dbid_from_path(dbpath)
return self.get_backend_name_from_dbid(dbid) == UNAVAILABLE
def remove_database(self, dbname, user=None):
"""
Deletes a database folder given a pattenr that matches
+3 -4
View File
@@ -221,9 +221,9 @@ register('interface.view', True)
register('interface.surname-box-height', 150)
register('interface.treemodel-cache-size', 1000)
register('paths.recent-export-dir', '')
register('paths.recent-export-dir', USER_HOME)
register('paths.recent-file', '')
register('paths.recent-import-dir', '')
register('paths.recent-import-dir', USER_HOME)
register('paths.report-directory', USER_HOME)
register('paths.website-directory', USER_HOME)
register('paths.website-cms-uri', '')
@@ -236,7 +236,6 @@ register('preferences.quick-backup-include-mode', False)
register('preferences.date-format', 0)
register('preferences.calendar-format-report', 0)
register('preferences.cprefix', 'C%04d')
register('preferences.alternate-fonthandler', False)
register('preferences.default-source', False)
register('preferences.tag-on-import', False)
register('preferences.tag-on-import-format', _("Imported %Y/%m/%d %H:%M:%S"))
@@ -325,7 +324,7 @@ if not os.path.exists(CONFIGMAN.filename):
# check previous version of gramps:
fullpath, filename = os.path.split(CONFIGMAN.filename)
fullpath, previous = os.path.split(fullpath)
match = re.match('gramps(\d*)', previous)
match = re.match(r'gramps(\d*)', previous)
if match:
# cycle back looking for previous versions of gramps
for i in range(1, 20): # check back 2 gramps versions
+1 -1
View File
@@ -138,7 +138,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
#
# Glade files
+6 -6
View File
@@ -124,12 +124,12 @@ class DateParserAR(DateParser):
_span_2 = ['إلى']
_range_1 = ['بين']
_range_2 = ['و']
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
self._span = re.compile(
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)), re.IGNORECASE)
self._range = re.compile(
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)), re.IGNORECASE)
#-------------------------------------------------------------------------
#
+6 -6
View File
@@ -166,12 +166,12 @@ class DateParserBG(DateParser):
_span_2 = ['до']
_range_1 = ['между']
_range_2 = ['и']
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
self._span = re.compile(
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)), re.IGNORECASE)
self._range = re.compile(
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)), re.IGNORECASE)
#-------------------------------------------------------------------------
#
+7 -7
View File
@@ -98,14 +98,14 @@ class DateParserCA(DateParser):
DateParser.init_strings(self)
_span_1 = ['des de']
_span_2 = ['fins a']
_range_1 = ['entre', 'ent\.', 'ent']
_range_1 = ['entre', r'ent\.', 'ent']
_range_2 = ['i']
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
self._span = re.compile(
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)), re.IGNORECASE)
self._range = re.compile(
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)), re.IGNORECASE)
#-------------------------------------------------------------------------
#
+5 -4
View File
@@ -89,10 +89,11 @@ class DateParserDa(DateParser):
def init_strings(self):
DateParser.init_strings(self)
self._span = re.compile("(fra)?\s*(?P<start>.+)\s*(til|--|)\s*(?P<stop>.+)",
re.IGNORECASE)
self._range = re.compile("(mellem)\s+(?P<start>.+)\s+og\s+(?P<stop>.+)",
re.IGNORECASE)
self._span = re.compile(
r"(fra)?\s*(?P<start>.+)\s*(til|--|)\s*(?P<stop>.+)",
re.IGNORECASE)
self._range = re.compile(
r"(mellem)\s+(?P<start>.+)\s+og\s+(?P<stop>.+)", re.IGNORECASE)
#-------------------------------------------------------------------------
#
+10 -8
View File
@@ -248,14 +248,16 @@ class DateParserDE(DateParser):
def init_strings(self):
DateParser.init_strings(self)
self._span = re.compile("(von|vom)\s+(?P<start>.+)\s+(bis)\s+(?P<stop>.+)",
re.IGNORECASE)
self._range = re.compile("zwischen\s+(?P<start>.+)\s+und\s+(?P<stop>.+)",
re.IGNORECASE)
self._text2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._mon_str,
re.IGNORECASE)
self._jtext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._jmon_str,
re.IGNORECASE)
self._span = re.compile(
r"(von|vom)\s+(?P<start>.+)\s+(bis)\s+(?P<stop>.+)", re.IGNORECASE)
self._range = re.compile(
r"zwischen\s+(?P<start>.+)\s+und\s+(?P<stop>.+)", re.IGNORECASE)
self._text2 = re.compile(
r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._mon_str,
re.IGNORECASE)
self._jtext2 = re.compile(
r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._jmon_str,
re.IGNORECASE)
#-------------------------------------------------------------------------
#
+7 -7
View File
@@ -116,14 +116,14 @@ class DateParserEL(DateParser):
DateParser.init_strings(self)
_span_1 = ['από']
_span_2 = ['έως']
_range_1 = ['μετ', 'μετ\.', 'μεταξύ']
_range_1 = ['μετ', r'μετ\.', 'μεταξύ']
_range_2 = ['και']
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
self._span = re.compile(
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)), re.IGNORECASE)
self._range = re.compile(
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)), re.IGNORECASE)
#-------------------------------------------------------------------------
#
+7 -7
View File
@@ -97,14 +97,14 @@ class DateParserES(DateParser):
DateParser.init_strings(self)
_span_1 = ['de']
_span_2 = ['a']
_range_1 = ['entre', 'ent\.', 'ent']
_range_1 = ['entre', r'ent\.', 'ent']
_range_2 = ['y']
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
self._span = re.compile(
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)), re.IGNORECASE)
self._range = re.compile(
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)), re.IGNORECASE)
#-------------------------------------------------------------------------
#
+5 -5
View File
@@ -98,12 +98,12 @@ class DateParserFI(DateParser):
def init_strings(self):
DateParser.init_strings(self)
self._text2 = re.compile('(\d+)?\.?\s+?%s\.?\s*((\d+)(/\d+)?)?\s*$'
% self._mon_str, re.IGNORECASE)
self._span = re.compile("(?P<start>.+)\s+(-)\s+(?P<stop>.+)",
re.IGNORECASE)
self._text2 = re.compile(r'(\d+)?\.?\s+?%s\.?\s*((\d+)(/\d+)?)?\s*$'
% self._mon_str, re.IGNORECASE)
self._span = re.compile(r"(?P<start>.+)\s+(-)\s+(?P<stop>.+)",
re.IGNORECASE)
self._range = re.compile(
"(vuosien\s*)?(?P<start>.+)\s+ja\s+(?P<stop>.+)\s+välillä",
r"(vuosien\s*)?(?P<start>.+)\s+ja\s+(?P<stop>.+)\s+välillä",
re.IGNORECASE)
#-------------------------------------------------------------------------
+51 -16
View File
@@ -22,6 +22,7 @@
#
# Croatian version 2008 by Josip
# Croatian version 2018 by Milo
"""
Croatian-specific classes for parsing and displaying dates.
@@ -51,13 +52,15 @@ from ._datehandler import register_datehandler
#-------------------------------------------------------------------------
class DateParserHR(DateParser):
modifier_to_int = {
'prije' : Date.MOD_BEFORE,
'prije' : Date.MOD_BEFORE,
'pr. ' : Date.MOD_BEFORE,
'poslije' : Date.MOD_AFTER,
'po. ' : Date.MOD_AFTER,
'okolo' : Date.MOD_ABOUT,
'ok. ' : Date.MOD_ABOUT,
'poslije' : Date.MOD_AFTER,
'po. ' : Date.MOD_AFTER,
'nakon' : Date.MOD_AFTER,
'na. ' : Date.MOD_AFTER,
'oko' : Date.MOD_ABOUT,
'okolo' : Date.MOD_ABOUT,
'ok. ' : Date.MOD_ABOUT,
}
quality_to_int = {
@@ -75,19 +78,27 @@ class DateParserHR(DateParser):
compiles regular expression strings for matching dates
"""
DateParser.init_strings(self)
#~ DateParser.calendar_to_int.update({
#~ 'персидский' : Date.CAL_PERSIAN,
#~ 'п' : Date.CAL_PERSIAN,
#~ })
# match 'Day. MONTH year.' format with or without dots
self._text2 = re.compile(r'(\d+)?\.?\s*?%s\.?\s*((\d+)(/\d+)?)?\s*\.?$'
% self._mon_str, re.IGNORECASE)
# match Day.Month.Year.
self._numeric = re.compile(
r"((\d+)[/\. ])?\s*((\d+)[/\.])?\s*(\d+)\.?$")
self._jtext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'
% self._jmon_str, re.IGNORECASE)
_span_1 = ['od']
_span_2 = ['do']
_range_1 = ['između']
_range_2 = ['i']
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)),
self._span = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
% ('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
% ('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
#-------------------------------------------------------------------------
@@ -105,11 +116,35 @@ class DateDisplayHR(DateDisplay):
display = DateDisplay.display_formatted
def format_short_month_year(self, month, year, inflect, short_months):
""" Allow a subclass to modify the year, e.g. add a period """
if not hasattr(short_months[1], 'f'): # not a Lexeme: no inflection
return "{short_month} {year}.".format(
short_month = short_months[month], year = year)
return self.FORMATS_short_month_year[inflect].format(
short_month = short_months[month], year = year)
def _get_localized_year(self, year):
""" Allow a subclass to modify the year, e.g. add a period """
return year + '.'
# FIXME probably there should be a Croatian-specific "formats" (and this
# ("American comma") format (and dd_dformat03 too) should be eliminated)
def dd_dformat02(self, date_val, inflect, long_months):
""" month_name day, year """
return DateDisplay.dd_dformat02(
self, date_val, inflect, long_months).replace(' .', '')
def dd_dformat04(self, date_val, inflect, long_months):
""" day month_name year """
return DateDisplay.dd_dformat04(
self, date_val, inflect, long_months).replace(' .', '')
#-------------------------------------------------------------------------
#
# Register classes
#
#-------------------------------------------------------------------------
register_datehandler(
('hr_HR', 'hr', 'HR', 'croatian', 'Croatian', 'hrvatski', ('%d.%m.%Y',)),
('hr_HR', 'hr', 'HR', 'croatian', 'Croatian', 'hrvatski', ('%d. %m. %Y.',)),
DateParserHR, DateDisplayHR)
+9 -9
View File
@@ -228,19 +228,19 @@ class DateParserHU(DateParser):
DateParser.init_strings(self)
self._numeric = re.compile(
"((\d+)[/\.])?\s*((\d+)[/\.])?\s*(\d+)[/\. ]?$")
r"((\d+)[/\.])?\s*((\d+)[/\.])?\s*(\d+)[/\. ]?$")
# this next RE has the (possibly-slashed) year at the string's start
self._text2 = re.compile('((\d+)(/\d+)?\.)?\s+?%s\.?\s*(\d+\.)?\s*$'
% self._mon_str, re.IGNORECASE)
_span_1 = ['-tó\\)l', '-tól', '-től']
self._text2 = re.compile(r'((\d+)(/\d+)?\.)?\s+?%s\.?\s*(\d+\.)?\s*$'
% self._mon_str, re.IGNORECASE)
_span_1 = [r'-tó\\)l', '-tól', '-től']
_span_2 = ['-ig']
_range_1 = ['és']
_range_2 = ['között']
self._span = re.compile("(?P<start>.+)(%s)\s+(?P<stop>.+)(%s)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(?P<start>.+)\s+(%s)\s+(?P<stop>.+)\s+(%s)" %
('|'.join(_range_1), '|'.join(_range_2)),
self._span = re.compile(r"(?P<start>.+)(%s)\s+(?P<stop>.+)(%s)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile(r"(?P<start>.+)\s+(%s)\s+(?P<stop>.+)\s+(%s)"
% ('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
+10 -8
View File
@@ -90,22 +90,23 @@ class DateParserIs(DateParser):
}
def dhformat_changed(self):
self._dhformat_parse = re.compile(".*%(\S).*%(\S).*%(\S).*%(\S).*")
self._dhformat_parse = re.compile(r".*%(\S).*%(\S).*%(\S).*%(\S).*")
def init_strings(self):
DateParser.init_strings(self)
# match 'day. month year' format
self._text2 = re.compile('(\d+)?\.?\s*?%s\.?\s*((\d+)(/\d+)?)?\s*$'
self._text2 = re.compile(r'(\d+)?\.?\s*?%s\.?\s*((\d+)(/\d+)?)?\s*$'
% self._mon_str, re.IGNORECASE)
# match 'short-day day.month year' format
short_day_str = '(' + '|'.join(self._ds.short_days[1:]) + ')'
self._numeric = re.compile("%s\s*((\d+)[\.]\s*)?((\d+)\s*)?(\d+)\s*$"
self._numeric = re.compile(r"%s\s*((\d+)[\.]\s*)?((\d+)\s*)?(\d+)\s*$"
% short_day_str, re.IGNORECASE)
self._span = re.compile("(frá)?\s*(?P<start>.+)\s*(til|--|)\s*(?P<stop>.+)",
re.IGNORECASE)
self._range = re.compile("(milli)\s+(?P<start>.+)\s+og\s+(?P<stop>.+)",
re.IGNORECASE)
self._span = re.compile(
r"(frá)?\s*(?P<start>.+)\s*(til|--|)\s*(?P<stop>.+)",
re.IGNORECASE)
self._range = re.compile(
r"(milli)\s+(?P<start>.+)\s+og\s+(?P<stop>.+)", re.IGNORECASE)
#-------------------------------------------------------------------------
#
@@ -185,7 +186,8 @@ class DateDisplayIs(DateDisplay):
text, scal)
def _get_weekday(self, date_val):
if date_val[0] == 0 or date_val[1] == 0: # no day or no month or both
if (date_val[0] == 0 or date_val[1] == 0 # no day or no month or both
or date_val[2] > datetime.MAXYEAR): # bug 10815
return ''
w_day = datetime.date(date_val[2], date_val[1], date_val[0]) # y, m, d
return self.short_days[((w_day.weekday() + 1) % 7) + 1]
+5 -5
View File
@@ -96,12 +96,12 @@ class DateParserIT(DateParser):
_span_2 = ['al', 'a']
_range_1 = ['tra', 'fra']
_range_2 = ['e']
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)),
self._span = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile(
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)), re.IGNORECASE)
#-------------------------------------------------------------------------
#
+5 -5
View File
@@ -166,13 +166,13 @@ class DateParserJA(DateParser):
_span_2 = ['まで', '']
_range_1 = ['から', '', '~', '']
_range_2 = ['までの間', 'の間']
self._span = re.compile("(?P<start>.+)(%s)(?P<stop>\d+)(%s)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(?P<start>.+)(%s)(?P<stop>.+)(%s)" %
self._span = re.compile(r"(?P<start>.+)(%s)(?P<stop>\d+)(%s)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile(r"(?P<start>.+)(%s)(?P<stop>.+)(%s)" %
('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
self._numeric = re.compile("((\d+)年\s*)?((\d+)月\s*)?(\d+)?日?\s*$")
self._numeric = re.compile(r"((\d+)年\s*)?((\d+)月\s*)?(\d+)?日?\s*$")
#-------------------------------------------------------------------------
#
+9 -8
View File
@@ -131,18 +131,19 @@ class DateParserLT(DateParser):
def init_strings(self):
DateParser.init_strings(self)
# this next RE has the (possibly-slashed) year at the string's start
self._text2 = re.compile('((\d+)(/\d+)?)?\s+?m\.\s+%s\s*(\d+)?\s*d?\.?$'
% self._mon_str, re.IGNORECASE)
self._text2 = re.compile(
r'((\d+)(/\d+)?)?\s+?m\.\s+%s\s*(\d+)?\s*d?\.?$'
% self._mon_str, re.IGNORECASE)
_span_1 = ['nuo']
_span_2 = ['iki']
_range_1 = ['tarp']
_range_2 = ['ir']
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
self._span = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile(
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)), re.IGNORECASE)
#-------------------------------------------------------------------------
#
+12 -6
View File
@@ -58,6 +58,7 @@ class DateParserNb(DateParser):
'innen' : Date.MOD_BEFORE,
'etter' : Date.MOD_AFTER,
'omkring' : Date.MOD_ABOUT,
'omtrent' : Date.MOD_ABOUT,
'ca' : Date.MOD_ABOUT
}
@@ -89,12 +90,13 @@ class DateParserNb(DateParser):
def init_strings(self):
DateParser.init_strings(self)
# match day. month year
self._numeric = re.compile("((\d+)[\.])?\s*((\d+))?\s*(\d+)$")
self._span = re.compile("(fra)?\s*(?P<start>.+)\s*(til|--|)\s*(?P<stop>.+)",
re.IGNORECASE)
self._range = re.compile("(mellom)\s+(?P<start>.+)\s+og\s+(?P<stop>.+)",
re.IGNORECASE)
self._numeric = re.compile(
r"((\d+)[/\.\s]\s*)?((\d+)[/\.\-\s]\s*)?(\d+)\s*$")
self._span = re.compile(
r"(fra)?\s*(?P<start>.+)\s*(til|--|)\s*(?P<stop>.+)",
re.IGNORECASE)
self._range = re.compile(
r"(mellom)\s+(?P<start>.+)\s+og\s+(?P<stop>.+)", re.IGNORECASE)
#-------------------------------------------------------------------------
#
@@ -173,6 +175,10 @@ class DateDisplayNb(DateDisplay):
return "%s%s%s%s" % (qual_str, self._mod_str[mod],
text, scal)
def dd_dformat01(self, date_val):
""" numerical -- for Norwegian dates """
return DateDisplay.dd_dformat01(self, date_val).lstrip()
#-------------------------------------------------------------------------
#
# Register classes
+7 -9
View File
@@ -119,16 +119,14 @@ class DateParserNL(DateParser):
def init_strings(self):
DateParser.init_strings(self)
self._span = re.compile("(van)\s+(?P<start>.+)\s+(tot)\s+(?P<stop>.+)",
self._span = re.compile(
r"(van)\s+(?P<start>.+)\s+(tot)\s+(?P<stop>.+)", re.IGNORECASE)
self._range = re.compile(r"tussen\s+(?P<start>.+)\s+en\s+(?P<stop>.+)",
re.IGNORECASE)
self._range = re.compile("tussen\s+(?P<start>.+)\s+en\s+(?P<stop>.+)",
re.IGNORECASE)
self._text2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'
% self._mon_str,
re.IGNORECASE)
self._jtext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'
% self._jmon_str,
re.IGNORECASE)
self._text2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'
% self._mon_str, re.IGNORECASE)
self._jtext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'
% self._jmon_str, re.IGNORECASE)
#-------------------------------------------------------------------------
#
+9 -6
View File
@@ -156,13 +156,16 @@ class DateParserPL(DateParser):
def init_strings(self):
DateParser.init_strings(self)
self._span = re.compile("(od)\s+(?P<start>.+)\s+(do)\s+(?P<stop>.+)", re.IGNORECASE)
self._span = re.compile(
r"(od)\s+(?P<start>.+)\s+(do)\s+(?P<stop>.+)", re.IGNORECASE)
# Also handle a common mistakes
self._range = re.compile("((?:po)?mi(?:ę|e)dzy)\s+(?P<start>.+)\s+(a)\s+(?P<stop>.+)", re.IGNORECASE)
self._text2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._mon_str,
re.IGNORECASE)
self._jtext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._jmon_str,
re.IGNORECASE)
self._range = re.compile(
r"((?:po)?mi(?:ę|e)dzy)\s+(?P<start>.+)\s+(a)\s+(?P<stop>.+)",
re.IGNORECASE)
self._text2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'
% self._mon_str, re.IGNORECASE)
self._jtext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'
% self._jmon_str, re.IGNORECASE)
#-------------------------------------------------------------------------
#
+6 -6
View File
@@ -102,13 +102,13 @@ class DateParserPT(DateParser):
DateParser.init_strings(self)
_span_1 = ['de']
_span_2 = ['a']
_range_1 = ['entre','ent\.','ent']
_range_1 = ['entre', r'ent\.', 'ent']
_range_2 = ['e']
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)),
self._span = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
% ('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
% ('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
#-------------------------------------------------------------------------
+16 -6
View File
@@ -94,13 +94,13 @@ class DateParserRU(DateParser):
_span_1 = ['с', 'от']
#_span_2 = ['по', 'до'] # <-- clashes with bce parsing :-(
_span_2 = ['по']
_range_1 = ['между', 'меж\.', 'меж']
_range_1 = ['между', r'меж\.', 'меж']
_range_2 = ['и']
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)),
self._span = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
% ('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
% ('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
#-------------------------------------------------------------------------
@@ -132,6 +132,11 @@ class DateDisplayRU(DateDisplay):
inflect, long_months)
elif date_val[1] == 0: # month is zero but day is not (see 8477)
return self.display_iso(date_val)
elif not hasattr(long_months[date_val[1]], 'f'): # not a Lexeme
return "{day:d} {long_month} {year}".format(
day = date_val[0],
long_month = long_months[date_val[1]],
year = year)
else:
return "{day:d} {long_month.f[Р]} {year}".format(
day = date_val[0],
@@ -151,6 +156,11 @@ class DateDisplayRU(DateDisplay):
inflect, short_months)
elif date_val[1] == 0: # month is zero but day is not (see 8477)
return self.display_iso(date_val)
elif not hasattr(short_months[date_val[1]], 'f'): # not a Lexeme
return "{day:d} {short_month} {year}".format(
day = date_val[0],
short_month = short_months[date_val[1]],
year = year)
else:
return "{day:d} {short_month.f[Р]} {year}".format(
day = date_val[0],
+5 -5
View File
@@ -86,11 +86,11 @@ class DateParserSK(DateParser):
_span_2 = ['do']
_range_1 = ['medzi']
_range_2 = ['a']
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)),
self._span = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
% ('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
% ('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
#-------------------------------------------------------------------------
+8 -8
View File
@@ -88,18 +88,18 @@ class DateParserSL(DateParser):
DateParser.init_strings(self)
# match 'Day. MONTH year.' format with or without dots
self._text2 = re.compile('(\d+)?\.?\s*?%s\.?\s*((\d+)(/\d+)?)?\s*\.?$'
% self._mon_str, re.IGNORECASE)
self._text2 = re.compile(r'(\d+)?\.?\s*?%s\.?\s*((\d+)(/\d+)?)?\s*\.?$'
% self._mon_str, re.IGNORECASE)
# match Day.Month.Year.
self._numeric = re.compile("((\d+)[/\.-])?\s*((\d+)[/\.-])?\s*(\d+)\.?$")
self._numeric = re.compile(
r"((\d+)[/\.-])?\s*((\d+)[/\.-])?\s*(\d+)\.?$")
self._span = re.compile("od\s+(?P<start>.+)\s+do\s+(?P<stop>.+)",
self._span = re.compile(r"od\s+(?P<start>.+)\s+do\s+(?P<stop>.+)",
re.IGNORECASE)
self._range = re.compile(
"med\s+(?P<start>.+)\s+in\s+(?P<stop>.+)",
re.IGNORECASE)
self._jtext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'\
% self._jmon_str, re.IGNORECASE)
r"med\s+(?P<start>.+)\s+in\s+(?P<stop>.+)", re.IGNORECASE)
self._jtext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'
% self._jmon_str, re.IGNORECASE)
#-------------------------------------------------------------------------
#
+9 -8
View File
@@ -208,21 +208,22 @@ class DateParserSR(DateParser):
"""
DateParser.init_strings(self)
# match 'Day. MONTH year.' format with or without dots
self._text2 = re.compile('(\d+)?\.?\s*?%s\s*((\d+)(/\d+)?)?\.?\s*$'
% self._mon_str, re.IGNORECASE)
self._text2 = re.compile(r'(\d+)?\.?\s*?%s\s*((\d+)(/\d+)?)?\.?\s*$'
% self._mon_str, re.IGNORECASE)
# match Day.Month.Year.
self._numeric = re.compile("((\d+)[/\. ])?\s*((\d+)[/\.])?\s*(\d+)\.?$")
self._numeric = re.compile(
r"((\d+)[/\. ])?\s*((\d+)[/\.])?\s*(\d+)\.?$")
_span_1 = ['od', 'од']
_span_2 = ['do', 'до']
_range_1 = ['između', 'између']
_range_2 = ['i', 'и']
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)),
self._span = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
% ('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
% ('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
#-------------------------------------------------------------------------
+9 -7
View File
@@ -95,14 +95,16 @@ class DateParserSv(DateParser):
def init_strings(self):
""" Define, in Swedish, span and range regular expressions"""
DateParser.init_strings(self)
self._numeric = re.compile("((\d+)/)?\s*((\d+)/)?\s*(\d+)[/ ]?$")
self._numeric = re.compile(r"((\d+)/)?\s*((\d+)/)?\s*(\d+)[/ ]?$")
# this next RE has the (possibly-slashed) year at the string's start
self._text2 = re.compile('((\d+)(/\d+)?)?\s+?%s\s*(\d+)?\s*$'
% self._mon_str, re.IGNORECASE)
self._span = re.compile("(från)?\s*(?P<start>.+)\s*(till|--|)\s*(?P<stop>.+)",
re.IGNORECASE)
self._range = re.compile("(mellan)\s+(?P<start>.+)\s+och\s+(?P<stop>.+)",
re.IGNORECASE)
self._text2 = re.compile(r'((\d+)(/\d+)?)?\s+?%s\s*(\d+)?\s*$'
% self._mon_str, re.IGNORECASE)
self._span = re.compile(
r"(från)?\s*(?P<start>.+)\s*(till|--|)\s*(?P<stop>.+)",
re.IGNORECASE)
self._range = re.compile(
r"(mellan)\s+(?P<start>.+)\s+och\s+(?P<stop>.+)",
re.IGNORECASE)
#-------------------------------------------------------------------------
#
+6 -6
View File
@@ -108,14 +108,14 @@ class DateParserUK(DateParser):
_span_1 = ['з', 'від']
# b.c.e. pattern also have "до" so skip "до н."
_span_2 = ['по', 'до(?!\s+н)']
_span_2 = ['по', r'до(?!\s+н)']
_range_1 = ['між']
_range_2 = ['і', 'та']
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)),
self._span = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
% ('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
#-------------------------------------------------------------------------
+5 -5
View File
@@ -124,13 +124,13 @@ class DateParserZH_CN(DateParser):
_span_2 = ['']
_range_1 = ['介于']
_range_2 = ['']
self._span = re.compile("(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
self._span = re.compile(r"(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile(r"(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
self._numeric = re.compile("((\d+)年\s*)?((\d+)月\s*)?(\d+)?日?\s*$")
self._numeric = re.compile(r"((\d+)年\s*)?((\d+)月\s*)?(\d+)?日?\s*$")
#-------------------------------------------------------------------------
#
+5 -5
View File
@@ -124,13 +124,13 @@ class DateParserZH_TW(DateParser):
_span_2 = ['']
_range_1 = ['介於']
_range_2 = ['']
self._span = re.compile("(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
self._span = re.compile(r"(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile(r"(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
self._numeric = re.compile("((\d+)年\s*)?((\d+)月\s*)?(\d+)?日?\s*$")
self._numeric = re.compile(r"((\d+)年\s*)?((\d+)月\s*)?(\d+)?日?\s*$")
#-------------------------------------------------------------------------
#
+26 -16
View File
@@ -4,7 +4,7 @@
#
# Copyright (C) 2004-2006 Donald N. Allingham
# Copyright (C) 2013 Vassilii Khachaturov
# Copyright (C) 2014-2017 Paul Franklin
# Copyright (C) 2014-2018 Paul Franklin
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -570,6 +570,7 @@ class DateDisplay:
def _get_short_weekday(self, date_val):
if (date_val[0] == 0 or date_val[1] == 0 # no day or no month or both
or date_val[1] == 13 # Hebrew has 13 months
or date_val[2] > datetime.MAXYEAR # bug 10815
or date_val[2] < 0): # B.C.E. date
return ''
w_day = datetime.date(date_val[2], date_val[1], date_val[0]) # y, m, d
@@ -578,11 +579,16 @@ class DateDisplay:
def _get_long_weekday(self, date_val):
if (date_val[0] == 0 or date_val[1] == 0 # no day or no month or both
or date_val[1] == 13 # Hebrew has 13 months
or date_val[2] > datetime.MAXYEAR # bug 10815
or date_val[2] < 0): # B.C.E. date
return ''
w_day = datetime.date(date_val[2], date_val[1], date_val[0]) # y, m, d
return self.long_days[((w_day.weekday() + 1) % 7) + 1]
def _get_localized_year(self, year):
""" Allow a subclass to modify the year, e.g. add a period """
return year
def dd_dformat01(self, date_val):
"""
numerical
@@ -594,19 +600,23 @@ class DateDisplay:
return self.display_iso(date_val)
else:
if date_val[0] == date_val[1] == 0:
return str(date_val[2])
return self._get_localized_year(str(date_val[2]))
else:
value = self.dhformat.replace('%m', str(date_val[1]))
# some locales have %b for the month, e.g. ar_EG, is_IS, nb_NO
# so it would be "Jan" but as it's "numeric" I'll make it "1"
value = value.replace('%b', str(date_val[1]))
# some locales have %B for the month, e.g. ta_IN
# so it would be "January" but as it's "numeric" I'll make it 1
value = value.replace('%B', str(date_val[1]))
# some locales have %a for the abbreviated day, e.g. is_IS
value = value.replace('%a', self._get_short_weekday(date_val))
# some locales have %A for the long/full day, e.g. ta_IN
value = value.replace('%A', self._get_long_weekday(date_val))
if '%b' in value or '%B' in value:
# some locales have %b for the month (ar_EG, is_IS, nb_NO)
# so it would be "Jan" but as it's "numeric" make it "1"
value = value.replace('%b', str(date_val[1]))
# some locales have %B for the month, e.g. ta_IN
# so it would be "January" but as it's "numeric" make it 1
value = value.replace('%B', str(date_val[1]))
if '%a' in value or '%A' in value:
# some locales have %a for the abbreviated day, e.g. is_IS
value = value.replace('%a',
self._get_short_weekday(date_val))
# some locales have %A for the long/full day, e.g. ta_IN
value = value.replace('%A',
self._get_long_weekday(date_val))
if date_val[0] == 0: # ignore the zero day and its delimiter
i_day = value.find('%d')
if len(value) == i_day + 2: # delimiter is left of the day
@@ -628,7 +638,7 @@ class DateDisplay:
year = self._slash_year(date_val[2], date_val[3])
if date_val[0] == 0:
if date_val[1] == 0:
return year
return self._get_localized_year(year)
else:
return self.format_long_month_year(date_val[1], year,
inflect, long_months)
@@ -654,7 +664,7 @@ class DateDisplay:
year = self._slash_year(date_val[2], date_val[3])
if date_val[0] == 0:
if date_val[1] == 0:
return year
return self._get_localized_year(year)
else:
return self.format_short_month_year(date_val[1], year,
inflect, short_months)
@@ -680,7 +690,7 @@ class DateDisplay:
year = self._slash_year(date_val[2], date_val[3])
if date_val[0] == 0:
if date_val[1] == 0:
return year
return self._get_localized_year(year)
else:
return self.format_long_month_year(date_val[1], year,
inflect, long_months)
@@ -706,7 +716,7 @@ class DateDisplay:
year = self._slash_year(date_val[2], date_val[3])
if date_val[0] == 0:
if date_val[1] == 0:
return year
return self._get_localized_year(year)
else:
return self.format_short_month_year(date_val[1], year,
inflect, short_months)
+57 -51
View File
@@ -193,7 +193,7 @@ class DateParser:
converted, the text string is assigned.
"""
_dhformat_parse = re.compile(".*%(\S).*%(\S).*%(\S).*")
_dhformat_parse = re.compile(r".*%(\S).*%(\S).*%(\S).*")
# RFC-2822 only uses capitalized English abbreviated names, no locales.
_rfc_days = ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat')
@@ -423,63 +423,69 @@ class DateParser:
# bce, calendar type and quality may be either at the end or at
# the beginning of the given date string, therefore they will
# be parsed from the middle and will be in match.group(2).
self._bce_re = re.compile("(.*)\s+%s( ?.*)" % self._bce_str)
self._bce_re = re.compile(r"(.*)\s+%s( ?.*)" % self._bce_str)
self._cal = re.compile("(.*)\s+\(%s\)( ?.*)" % self._cal_str,
re.IGNORECASE)
self._calny = re.compile("(.*)\s+\(%s,\s*%s\)( ?.*)" % (self._cal_str,
self._ny_str),
re.IGNORECASE)
self._calny_iso = re.compile("(.*)\s+\(%s,\s*(\d{1,2}-\d{1,2})\)( ?.*)" % self._cal_str,
re.IGNORECASE)
self._cal = re.compile(r"(.*)\s+\(%s\)( ?.*)" % self._cal_str,
re.IGNORECASE)
self._calny = re.compile(r"(.*)\s+\(%s,\s*%s\)( ?.*)" %
(self._cal_str, self._ny_str), re.IGNORECASE)
self._calny_iso = re.compile(
r"(.*)\s+\(%s,\s*(\d{1,2}-\d{1,2})\)( ?.*)" % self._cal_str,
re.IGNORECASE)
self._ny = re.compile("(.*)\s+\(%s\)( ?.*)" % self._ny_str,
re.IGNORECASE)
self._ny_iso = re.compile("(.*)\s+\((\d{1,2}-\d{1,2})\)( ?.*)")
self._ny = re.compile(r"(.*)\s+\(%s\)( ?.*)" % self._ny_str,
re.IGNORECASE)
self._ny_iso = re.compile(r"(.*)\s+\((\d{1,2}-\d{1,2})\)( ?.*)")
self._qual = re.compile("(.* ?)%s\s+(.+)" % self._qual_str,
re.IGNORECASE)
self._qual = re.compile(r"(.* ?)%s\s+(.+)" % self._qual_str,
re.IGNORECASE)
self._span = re.compile("(from)\s+(?P<start>.+)\s+to\s+(?P<stop>.+)",
self._span = re.compile(r"(from)\s+(?P<start>.+)\s+to\s+(?P<stop>.+)",
re.IGNORECASE)
self._range = re.compile(
r"(bet|bet.|between)\s+(?P<start>.+)\s+and\s+(?P<stop>.+)",
re.IGNORECASE)
self._modifier = re.compile(r'%s\s+(.*)' % self._mod_str,
re.IGNORECASE)
self._range = re.compile("(bet|bet.|between)\s+(?P<start>.+)\s+and\s+(?P<stop>.+)",
re.IGNORECASE)
self._modifier = re.compile('%s\s+(.*)' % self._mod_str,
re.IGNORECASE)
self._modifier_after = re.compile('(.*)\s+%s' % self._mod_after_str,
self._modifier_after = re.compile(r'(.*)\s+%s' % self._mod_after_str,
re.IGNORECASE)
self._abt2 = re.compile('<(.*)>', re.IGNORECASE)
self._text = re.compile('%s\.?(\s+\d+)?\s*,?\s+((\d+)(/\d+)?)?\s*$'
% self._mon_str, re.IGNORECASE)
self._abt2 = re.compile('<(.*)>', re.IGNORECASE)
self._text = re.compile(r'%s\.?(\s+\d+)?\s*,?\s+((\d+)(/\d+)?)?\s*$'
% self._mon_str, re.IGNORECASE)
# this next RE has the (possibly-slashed) year at the string's end
self._text2 = re.compile('(\d+)?\s+?%s\.?\s*((\d+)(/\d+)?)?\s*$' % self._mon_str,
re.IGNORECASE)
self._jtext = re.compile('%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$' % self._jmon_str,
re.IGNORECASE)
self._jtext2 = re.compile('(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$' % self._jmon_str,
re.IGNORECASE)
self._ftext = re.compile('%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$' % self._fmon_str,
re.IGNORECASE)
self._ftext2 = re.compile('(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$' % self._fmon_str,
re.IGNORECASE)
self._ptext = re.compile('%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$' % self._pmon_str,
re.IGNORECASE)
self._ptext2 = re.compile('(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$' % self._pmon_str,
re.IGNORECASE)
self._itext = re.compile('%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$' % self._imon_str,
re.IGNORECASE)
self._itext2 = re.compile('(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$' % self._imon_str,
re.IGNORECASE)
self._stext = re.compile('%s\.?\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$' % self._smon_str,
re.IGNORECASE)
self._stext2 = re.compile('(\d+)?\s+?%s\.?\s*((\d+)(/\d+)?)?\s*$' % self._smon_str,
re.IGNORECASE)
self._numeric = re.compile("((\d+)[/\.]\s*)?((\d+)[/\.]\s*)?(\d+)\s*$")
self._iso = re.compile("(\d+)(/(\d+))?-(\d+)-(\d+)\s*$")
self._isotimestamp = re.compile("^\s*?(\d{4})([01]\d)([0123]\d)(?:(?:[012]\d[0-5]\d[0-5]\d)|(?:\s+[012]\d:[0-5]\d(?::[0-5]\d)?))?\s*?$")
self._rfc = re.compile("(%s,)?\s+(\d|\d\d)\s+%s\s+(\d+)\s+\d\d:\d\d(:\d\d)?\s+(\+|-)\d\d\d\d"
% (self._rfc_day_str, self._rfc_mon_str))
self._today = re.compile("^\s*%s\s*$" % self._today_str, re.IGNORECASE)
self._text2 = re.compile(r'(\d+)?\s+?%s\.?\s*((\d+)(/\d+)?)?\s*$'
% self._mon_str, re.IGNORECASE)
self._jtext = re.compile(r'%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$'
% self._jmon_str, re.IGNORECASE)
self._jtext2 = re.compile(r'(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$'
% self._jmon_str, re.IGNORECASE)
self._ftext = re.compile(r'%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$'
% self._fmon_str, re.IGNORECASE)
self._ftext2 = re.compile(r'(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$'
% self._fmon_str, re.IGNORECASE)
self._ptext = re.compile(r'%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$'
% self._pmon_str, re.IGNORECASE)
self._ptext2 = re.compile(r'(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$'
% self._pmon_str, re.IGNORECASE)
self._itext = re.compile(r'%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$'
% self._imon_str, re.IGNORECASE)
self._itext2 = re.compile(r'(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$'
% self._imon_str, re.IGNORECASE)
self._stext = re.compile(r'%s\.?\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$'
% self._smon_str, re.IGNORECASE)
self._stext2 = re.compile(r'(\d+)?\s+?%s\.?\s*((\d+)(/\d+)?)?\s*$'
% self._smon_str, re.IGNORECASE)
self._numeric = re.compile(
r"((\d+)[/\.]\s*)?((\d+)[/\.]\s*)?(\d+)\s*$")
self._iso = re.compile(r"(\d+)(/(\d+))?-(\d+)-(\d+)\s*$")
self._isotimestamp = re.compile(
r"^\s*?(\d{4})([01]\d)([0123]\d)(?:(?:[012]\d[0-5]\d[0-5]\d)|"
r"(?:\s+[012]\d:[0-5]\d(?::[0-5]\d)?))?\s*?$")
self._rfc = re.compile(
r"(%s,)?\s+(\d|\d\d)\s+%s\s+(\d+)\s+\d\d:\d\d(:\d\d)?\s+"
r"(\+|-)\d\d\d\d" % (self._rfc_day_str, self._rfc_mon_str))
self._today = re.compile(r"^\s*%s\s*$" % self._today_str,
re.IGNORECASE)
def _get_int(self, val):
"""
+8 -42
View File
@@ -42,7 +42,7 @@ import glob
#
#------------------------------------------------------------------------
from . import (DbReadBase, DbWriteBase, DbUndo, DBLOGNAME, DBUNDOFN,
KEY_TO_CLASS_MAP, REFERENCE_KEY, PERSON_KEY, FAMILY_KEY,
REFERENCE_KEY, PERSON_KEY, FAMILY_KEY,
CITATION_KEY, SOURCE_KEY, EVENT_KEY, MEDIA_KEY, PLACE_KEY,
REPOSITORY_KEY, NOTE_KEY, TAG_KEY, TXNADD, TXNUPD, TXNDEL,
KEY_TO_NAME_MAP, DBMODE_R, DBMODE_W)
@@ -144,9 +144,9 @@ class DbGenericUndo(DbUndo):
pickle.loads(self.undodb[record_id])
if key == REFERENCE_KEY:
self.undo_reference(new_data, handle)
self.db.undo_reference(new_data, handle)
else:
self.undo_data(new_data, handle, key)
self.db.undo_data(new_data, handle, key)
sigs[key][trans_type].append(handle)
# now emit the signals
self.undo_sigs(sigs, False)
@@ -193,9 +193,9 @@ class DbGenericUndo(DbUndo):
pickle.loads(self.undodb[record_id])
if key == REFERENCE_KEY:
self.undo_reference(old_data, handle)
self.db.undo_reference(old_data, handle)
else:
self.undo_data(old_data, handle, key)
self.db.undo_data(old_data, handle, key)
sigs[key][trans_type].append(handle)
# now emit the signals
self.undo_sigs(sigs, True)
@@ -221,39 +221,6 @@ class DbGenericUndo(DbUndo):
db.undo_history_callback()
return True
def undo_reference(self, data, handle):
"""
Helper method to undo a reference map entry
"""
if data is None:
sql = ("DELETE FROM reference " +
"WHERE obj_handle = ? AND ref_handle = ?")
self.db.dbapi.execute(sql, [handle[0], handle[1]])
else:
sql = ("INSERT INTO reference " +
"(obj_handle, obj_class, ref_handle, ref_class) " +
"VALUES(?, ?, ?, ?)")
self.db.dbapi.execute(sql, data)
def undo_data(self, data, handle, obj_key):
"""
Helper method to undo/redo the changes made
"""
cls = KEY_TO_CLASS_MAP[obj_key]
table = cls.lower()
if data is None:
sql = "DELETE FROM %s WHERE handle = ?" % table
self.db.dbapi.execute(sql, [handle])
else:
if self.db._has_handle(obj_key, handle):
sql = "UPDATE %s SET blob_data = ? WHERE handle = ?" % table
self.db.dbapi.execute(sql, [pickle.dumps(data), handle])
else:
sql = "INSERT INTO %s (handle, blob_data) VALUES (?, ?)" % table
self.db.dbapi.execute(sql, [handle, pickle.dumps(data)])
obj = self.db._get_table_func(cls)["class_func"].create(data)
self.db._update_secondary_values(obj)
def undo_sigs(self, sigs, undo):
"""
Helper method to undo/redo the signals for changes made
@@ -625,9 +592,7 @@ class DbGeneric(DbWriteBase, DbReadBase, UpdateCallback, Callback):
# run backend-specific code:
self._initialize(directory, username, password)
# We use the existence of the person table as a proxy for the database
# being new
if not self.dbapi.table_exists("person"):
if not self._schema_exists():
self._create_schema()
self._set_metadata('version', str(self.VERSION[0]))
@@ -706,7 +671,7 @@ class DbGeneric(DbWriteBase, DbReadBase, UpdateCallback, Callback):
if update is False, don't change access times, etc.
"""
if self._directory != ":memory:":
if update:
if update and not self.readonly:
# This is just a dummy file to indicate last modified time of
# the database for gramps.cli.clidbman:
filename = os.path.join(self._directory, "meta_data.db")
@@ -2496,4 +2461,5 @@ class DbGeneric(DbWriteBase, DbReadBase, UpdateCallback, Callback):
enclosed_by = ""
for placeref in place.get_placeref_list():
enclosed_by = placeref.ref
break
return enclosed_by
+23 -8
View File
@@ -41,7 +41,7 @@ from ..plug import BasePluginManager
from ..const import PLUGINS_DIR, USER_PLUGINS
from ..constfunc import win, get_env_var
from ..config import config
from .dbconst import DBLOGNAME, DBLOCKFN
from .dbconst import DBLOGNAME, DBLOCKFN, DBBACKEND
#-------------------------------------------------------------------------
#
@@ -109,13 +109,7 @@ def lookup_family_tree(dbname):
if dbname == name:
locked = False
locked_by = None
backend = None
fname = os.path.join(dirpath, "database.txt")
if os.path.isfile(fname):
with open(fname, 'r', encoding='utf8') as ifile:
backend = ifile.read().strip()
else:
backend = "bsddb"
backend = get_dbid_from_path(dirpath)
try:
fname = os.path.join(dirpath, "lock")
with open(fname, 'r', encoding='utf8') as ifile:
@@ -126,6 +120,17 @@ def lookup_family_tree(dbname):
return (dirpath, locked, locked_by, backend)
return None
def get_dbid_from_path(dirpath):
"""
Return a database backend from a directory path.
"""
dbid = "bsddb"
dbid_path = os.path.join(dirpath, DBBACKEND)
if os.path.isfile(dbid_path):
with open(dbid_path) as file:
dbid = file.read().strip()
return dbid
def import_as_dict(filename, user, skp_imp_adds=True):
"""
Import the filename into a InMemoryDB and return it.
@@ -133,6 +138,16 @@ def import_as_dict(filename, user, skp_imp_adds=True):
db = make_database("sqlite")
db.load(":memory:")
db.set_feature("skip-import-additions", skp_imp_adds)
db.set_prefixes(
config.get('preferences.iprefix'),
config.get('preferences.oprefix'),
config.get('preferences.fprefix'),
config.get('preferences.sprefix'),
config.get('preferences.cprefix'),
config.get('preferences.pprefix'),
config.get('preferences.eprefix'),
config.get('preferences.rprefix'),
config.get('preferences.nprefix'))
status = import_from_filename(db, filename, user)
return db if status else None
+7 -7
View File
@@ -1059,13 +1059,13 @@ class NameDisplay:
format_str = format_str[1:]
else:
patterns = [
",\W*\"%(" + ("|".join(codes)) + ")\"", # ,\W*"%s"
",\W*\(%(" + ("|".join(codes)) + ")\)", # ,\W*(%s)
",\W*%(" + ("|".join(codes)) + ")", # ,\W*%s
"\"%(" + ("|".join(codes)) + ")\"", # "%s"
"_%(" + ("|".join(codes)) + ")_", # _%s_
"\(%(" + ("|".join(codes)) + ")\)", # (%s)
"%(" + ("|".join(codes)) + ")", # %s
",\\W*\"%(" + ("|".join(codes)) + ")\"", # ,\W*"%s"
",\\W*\\(%(" + ("|".join(codes)) + ")\\)", # ,\W*(%s)
",\\W*%(" + ("|".join(codes)) + ")", # ,\W*%s
"\"%(" + ("|".join(codes)) + ")\"", # "%s"
"_%(" + ("|".join(codes)) + ")_", # _%s_
"\\(%(" + ("|".join(codes)) + ")\\)", # (%s)
"%(" + ("|".join(codes)) + ")", # %s
]
new_fmt = format_str
+30 -20
View File
@@ -35,7 +35,8 @@ import xml.dom.minidom
# Gramps modules
#
#-------------------------------------------------------------------------
from ..const import PLACE_FORMATS
from ..const import PLACE_FORMATS, GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
from ..config import config
from ..utils.location import get_location_list
from ..lib import PlaceType
@@ -53,11 +54,6 @@ class PlaceFormat:
self.street = street
self.reverse = reverse
def to_xml(self):
return (' <format name="%s" levels="%s" language="%s" '
'street="%s" reverse="%s"/>\n' %
(self.name, self.levels, self.language,
self.street, self.reverse))
#-------------------------------------------------------------------------
#
@@ -70,12 +66,15 @@ class PlaceDisplay:
self.place_formats = []
self.default_format = config.get('preferences.place-format')
if os.path.exists(PLACE_FORMATS):
self.load_formats()
else:
pf = PlaceFormat('Full', ':', '', 0, False)
self.place_formats.append(pf)
try:
self.load_formats()
return
except BaseException:
print(_("Error in '%s' file: cannot load.") % PLACE_FORMATS)
pf = PlaceFormat(_('Full'), ':', '', 0, False)
self.place_formats.append(pf)
def display_event(self, db, event, fmt=None):
def display_event(self, db, event, fmt=-1):
if not event:
return ""
place_handle = event.get_place_handle()
@@ -85,13 +84,13 @@ class PlaceDisplay:
else:
return ""
def display(self, db, place, date=None, fmt=None):
def display(self, db, place, date=None, fmt=-1):
if not place:
return ""
if not config.get('preferences.place-auto'):
return place.title
else:
if fmt is None:
if fmt == -1:
fmt = config.get('preferences.place-format')
pf = self.place_formats[fmt]
lang = pf.language
@@ -105,7 +104,10 @@ class PlaceDisplay:
if len(parts) == 1:
offset = _get_offset(parts[0], index)
if offset is not None:
places.append(all_places[offset])
try:
places.append(all_places[offset])
except IndexError:
pass
elif len(parts) == 2:
start = _get_offset(parts[0], index)
end = _get_offset(parts[1], index)
@@ -160,12 +162,20 @@ class PlaceDisplay:
dom.unlink()
def save_formats(self):
with open(PLACE_FORMATS, 'w') as fd:
fd.write('<?xml version="1.0" encoding="utf-8"?>\n')
fd.write('<place_formats>\n')
for fmt in self.place_formats:
fd.write(fmt.to_xml())
fd.write('</place_formats>\n')
doc = xml.dom.minidom.Document()
place_formats = doc.createElement('place_formats')
doc.appendChild(place_formats)
for fmt in self.place_formats:
node = doc.createElement('format')
place_formats.appendChild(node)
node.setAttribute('name', fmt.name)
node.setAttribute('levels', fmt.levels)
node.setAttribute('language', fmt.language)
node.setAttribute('street', str(fmt.street))
node.setAttribute('reverse', str(fmt.reverse))
with open(PLACE_FORMATS, 'w', encoding='utf-8') as f_d:
doc.writexml(f_d, addindent=' ', newl='\n', encoding='utf-8')
def _get_offset(value, index):
if index is not None and value.startswith('p'):
+3
View File
@@ -62,6 +62,9 @@ class FilterParser(handler.ContentHandler):
self.namespace = attrs['type']
else:
self.namespace = "generic"
if self.namespace == 'MediaObject':
# deals with older custom filters
self.namespace = 'Media'
elif tag == "filter":
self.f = GenericFilterFactory(self.namespace)()
self.f.set_name(attrs['name'])
+27 -12
View File
@@ -124,6 +124,9 @@ class GenericFilter:
def get_cursor(self, db):
return db.get_person_cursor()
def get_tree_cursor(self, db):
return db.get_person_cursor()
def make_obj(self):
return Person()
@@ -133,13 +136,15 @@ class GenericFilter:
def get_number(self, db):
return db.get_number_of_people()
def check_func(self, db, id_list, task, user=None, tupleind=None):
def check_func(self, db, id_list, task, user=None, tupleind=None,
tree=False):
final_list = []
if user:
user.begin_progress(_('Filter'), _('Applying ...'),
self.get_number(db))
if id_list is None:
with self.get_cursor(db) as cursor:
with (self.get_tree_cursor(db) if tree else
self.get_cursor(db)) as cursor:
for handle, data in cursor:
person = self.make_obj()
person.unserialize(data)
@@ -162,14 +167,15 @@ class GenericFilter:
user.end_progress()
return final_list
def check_and(self, db, id_list, user=None, tupleind=None):
def check_and(self, db, id_list, user=None, tupleind=None, tree=False):
final_list = []
flist = self.flist
if user:
user.begin_progress(_('Filter'), _('Applying ...'),
self.get_number(db))
if id_list is None:
with self.get_cursor(db) as cursor:
with (self.get_tree_cursor(db) if tree else
self.get_cursor(db)) as cursor:
for handle, data in cursor:
person = self.make_obj()
person.unserialize(data)
@@ -194,14 +200,17 @@ class GenericFilter:
user.end_progress()
return final_list
def check_or(self, db, id_list, user=None, tupleind=None):
return self.check_func(db, id_list, self.or_test, user, tupleind)
def check_or(self, db, id_list, user=None, tupleind=None, tree=False):
return self.check_func(db, id_list, self.or_test, user, tupleind,
tree=False)
def check_one(self, db, id_list, user=None, tupleind=None):
return self.check_func(db, id_list, self.one_test, user, tupleind)
def check_one(self, db, id_list, user=None, tupleind=None, tree=False):
return self.check_func(db, id_list, self.one_test, user, tupleind,
tree=False)
def check_xor(self, db, id_list, user=None, tupleind=None):
return self.check_func(db, id_list, self.xor_test, user, tupleind)
def check_xor(self, db, id_list, user=None, tupleind=None, tree=False):
return self.check_func(db, id_list, self.xor_test, user, tupleind,
tree=False)
def xor_test(self, db, person):
test = False
@@ -231,7 +240,7 @@ class GenericFilter:
def check(self, db, handle):
return self.get_check_func()(db, [handle])
def apply(self, db, id_list=None, tupleind=None, user=None):
def apply(self, db, id_list=None, tupleind=None, user=None, tree=False):
"""
Apply the filter using db.
If id_list given, the handles in id_list are used. If not given
@@ -251,7 +260,7 @@ class GenericFilter:
m = self.get_check_func()
for rule in self.flist:
rule.requestprepare(db, user)
res = m(db, id_list, user, tupleind)
res = m(db, id_list, user, tupleind, tree)
for rule in self.flist:
rule.requestreset()
return res
@@ -315,6 +324,9 @@ class GenericCitationFilter(GenericFilter):
def get_cursor(self, db):
return db.get_citation_cursor()
def get_tree_cursor(self, db):
return db.get_citation_cursor()
def make_obj(self):
return Citation()
@@ -332,6 +344,9 @@ class GenericPlaceFilter(GenericFilter):
def get_cursor(self, db):
return db.get_place_cursor()
def get_tree_cursor(self, db):
return db.get_place_tree_cursor()
def make_obj(self):
return Place()
@@ -56,17 +56,17 @@ class ChangedSinceBase(Rule):
category = _('General filters')
def add_time(self, date):
if re.search("\d.*\s+\d{1,2}:\d{2}:\d{2}", date):
if re.search(r"\d.*\s+\d{1,2}:\d{2}:\d{2}", date):
return date
elif re.search("\d.*\s+\d{1,2}:\d{2}", date):
elif re.search(r"\d.*\s+\d{1,2}:\d{2}", date):
return date + ":00"
elif re.search("\d.*\s+\d{1,2}", date):
elif re.search(r"\d.*\s+\d{1,2}", date):
return date + ":00:00"
elif re.search("\d{4}-\d{1,2}-\d{1,2}", date):
elif re.search(r"\d{4}-\d{1,2}-\d{1,2}", date):
return date + " 00:00:00"
elif re.search("\d{4}-\d{1,2}", date):
elif re.search(r"\d{4}-\d{1,2}", date):
return date + "-01 00:00:00"
elif re.search("\d{4}", date):
elif re.search(r"\d{4}", date):
return date + "-01-01 00:00:00"
else:
return date
+7 -1
View File
@@ -28,9 +28,11 @@ Base class for filter rules.
# Standard Python modules
#
#-------------------------------------------------------------------------
import re
from ...errors import FilterError
from ...const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
import re
#-------------------------------------------------------------------------
#
@@ -88,6 +90,10 @@ class Rule:
self.match_substring = self.match_regex
self.prepare(db, user)
self.nrprepare += 1
if self.nrprepare > 20: # more references to a filter than expected
raise FilterError(_("The filter definition contains a loop."),
_("One rule references another which eventually"
" references the first."))
def prepare(self, db, user):
"""prepare so the rule can be executed efficiently"""
@@ -72,18 +72,15 @@ class IsDuplicatedAncestorOf(Rule):
f_id = fam.get_father_handle()
m_id = fam.get_mother_handle()
if m_id:
self.mother_side(db, db.get_person_from_handle(m_id))
self.go_deeper(db, db.get_person_from_handle(m_id))
if f_id:
self.father_side(db, db.get_person_from_handle(f_id))
self.go_deeper(db, db.get_person_from_handle(f_id))
def mother_side(self, db, person):
if person and person.handle in self.map:
self.map2.add((person.handle))
self.map.add((person.handle))
self.init_ancestor_list(db, person)
def father_side(self, db, person):
def go_deeper(self, db, person):
if person and person.handle in self.map:
self.map2.add((person.handle))
# the following keeps from scanning same parts of tree multiple
# times and avoids crash on tree loops.
return
self.map.add((person.handle))
self.init_ancestor_list(db, person)
@@ -55,7 +55,7 @@ class RelationshipPathBetween(Rule):
try:
root1_handle = db.get_person_from_gramps_id(self.list[0]).get_handle()
root2_handle = db.get_person_from_gramps_id(self.list[1]).get_handle()
self.init_list(root1_handle,root2_handle)
self.init_list(root1_handle, root2_handle)
except:
pass
@@ -75,6 +75,8 @@ class RelationshipPathBetween(Rule):
self.desc_list(child_ref.ref, map, 0)
def apply_filter(self, rank, handle, plist, pmap):
if not handle:
return
person = self.db.get_person_from_handle(handle)
if person is None:
return
@@ -82,6 +84,8 @@ class RelationshipPathBetween(Rule):
pmap[person.get_handle()] = rank
fam_id = person.get_main_parents_family_handle()
if not fam_id:
return
family = self.db.get_family_from_handle(fam_id)
if family is not None:
self.apply_filter(rank+1, family.get_father_handle(), plist, pmap)
@@ -17,7 +17,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
from build.lib.gramps.gen.filters.rules.person._matchidof import MatchIdOf
from ....filters.rules.person._matchidof import MatchIdOf
"""
Unittest that tests person-specific filter rules
+4 -4
View File
@@ -520,11 +520,11 @@ class Place(CitationBase, NoteBase, MediaBase, UrlBase, PrimaryObject):
Return a list of alternate :class:`~.location.Location` objects the
present alternate information about the current Place.
A Place can have more than one :class:`~.location.Location`, since names
and jurisdictions can change over time for the same place.
A Place can have more than one :class:`~.location.Location`, since
names and jurisdictions can change over time for the same place.
:returns: Returns the alternate :class:`~.location.Location`\ s for the
Place
:returns: Returns the alternate :class:`~.location.Location` objects
for the Place
:rtype: list of :class:`~.location.Location` objects
"""
return self.alt_loc
+1 -1
View File
@@ -75,7 +75,7 @@ def to_json(obj):
:returns: A JSON string.
:rtype: str
"""
return json.dumps(obj, default=__default)
return json.dumps(obj, default=__default, ensure_ascii=False)
def from_json(data):
"""
+14 -5
View File
@@ -133,7 +133,8 @@ class MergeFamilyQuery:
old_handle = self.titanic.get_handle()
with DbTxn(_('Merge Family'), self.database) as trans:
# commit family in case Phoenix GrampsID, relationship has changed
self.database.commit_family(self.phoenix, trans)
if self.phoenix_fh != self.titanic_fh:
if self.phoenix_fh:
phoenix_father = self.database.get_person_from_handle(
@@ -161,13 +162,21 @@ class MergeFamilyQuery:
titanic_mother = None
self.merge_person(phoenix_mother, titanic_mother,
'mother', trans)
# Reload families from db in case the merge_person above changed
# them
self.phoenix = self.database.get_family_from_handle(new_handle)
self.titanic = self.database.get_family_from_handle(old_handle)
phoenix_father = self.database.get_person_from_handle(self.phoenix_fh)
phoenix_mother = self.database.get_person_from_handle(self.phoenix_mh)
self.phoenix = self.database.get_family_from_handle(new_handle)
self.titanic = self.database.get_family_from_handle(old_handle)
if self.phoenix_fh:
phoenix_father = self.database.get_person_from_handle(
self.phoenix_fh)
else:
phoenix_father = None
if self.phoenix_mh:
phoenix_mother = self.database.get_person_from_handle(
self.phoenix_mh)
else:
phoenix_mother = None
self.phoenix.merge(self.titanic)
self.database.commit_family(self.phoenix, trans)
for childref in self.titanic.get_child_ref_list():
+2
View File
@@ -182,5 +182,7 @@ class MergePersonQuery:
self.database.commit_family(family, trans)
parent_list.append(parents)
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
+1 -1
View File
@@ -85,7 +85,7 @@ def _get_extension(mime_type):
extension = None
try:
hcr = ConnectRegistry(None, HKEY_CLASSES_ROOT)
subkey = OpenKey(hcr, "MIME\DataBase\Content Type")
subkey = OpenKey(hcr, r"MIME\DataBase\Content Type")
mimekey = OpenKey(subkey, mime_type)
extension, value_type = QueryValueEx(mimekey, "Extension")
CloseKey(mimekey)
+9
View File
@@ -33,9 +33,11 @@ LOG = logging.getLogger(".Gramplets")
# Gramps modules
#
#------------------------------------------------------------------------
from ...gui.dbguielement import DbGUIElement
from ..const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
class Gramplet:
"""
Base class for non-graphical gramplet code.
@@ -397,6 +399,13 @@ class Gramplet:
if hasattr(self.gui, 'navtypes') and 'Person' in self.gui.navtypes:
self.connect_signal('Person', self._active_changed)
self.db_changed()
# Some Gramplets use DbGUIElement; and DbGUIElement needs to know if
# db is changed. However, at initialization, DbGUIElement is not yet
# initialized when _db_changed is called, thus the test for callman
if hasattr(self, "callman") and isinstance(self, DbGUIElement):
# get DbGUIElement informed if in use
self._change_db(db) # DbGUIElement method
self.update()
def _no_db(self):
+2 -2
View File
@@ -206,7 +206,7 @@ class DocBackend:
if not self.STYLETYPE_MAP or \
self.CLASSMAP != tagtype.__class__.__name__ :
self.CLASSMAP == tagtype.__class__.__name__
self.CLASSMAP = tagtype.__class__.__name__
self.STYLETYPE_MAP[tagtype.BOLD] = self.BOLD
self.STYLETYPE_MAP[tagtype.ITALIC] = self.ITALIC
self.STYLETYPE_MAP[tagtype.UNDERLINE] = self.UNDERLINE
@@ -217,7 +217,7 @@ class DocBackend:
self.STYLETYPE_MAP[tagtype.SUPERSCRIPT] = self.SUPERSCRIPT
self.STYLETYPE_MAP[tagtype.LINK] = self.LINK
if s_tag.name == 'Link':
if s_tag.name == tagtype.LINK:
return self.format_link(s_tag.value)
typeval = int(s_tag.name)
s_tagvalue = s_tag.value
+5 -4
View File
@@ -63,7 +63,7 @@ LOG = logging.getLogger(".graphdoc")
# Private Constants
#
#-------------------------------------------------------------------------
_FONTS = [{'name' : _("Default"), 'value' : ""},
_FONTS = [{'name' : _("Default"), 'value' : "serif"},
{'name' : _("PostScript / Helvetica"), 'value' : "Helvetica"},
{'name' : _("TrueType / FreeSans"), 'value' : "FreeSans"}]
@@ -977,8 +977,9 @@ class GVPdfGsDoc(GVDocBase):
tmp_pdf_piece = "%s_%d_%d.pdf" % (tmp_ps, __x, __y)
list_of_pieces.append(tmp_pdf_piece)
# Generate Ghostscript code
command = '%s -q -dBATCH -dNOPAUSE -dSAFER -g%dx%d '\
'-sOutputFile="%s" -r72 -sDEVICE=pdfwrite '\
command = '%s -q -dBATCH -dNOPAUSE -dSAFER '\
'-dDEVICEWIDTHPOINTS=%d -dDEVICEHEIGHTPOINTS=%d '\
'-sOutputFile="%s" -sDEVICE=pdfwrite '\
'-c "<</.HWMargins [%d %d %d %d] /PageOffset [%d %d]>> '\
'setpagedevice" -f "%s"' % (
_GS_CMD, width_pt + 10, height_pt + 10, tmp_pdf_piece,
@@ -988,7 +989,7 @@ class GVPdfGsDoc(GVDocBase):
os.system(command)
# Merge pieces to single multipage PDF ;
command = '%s -q -dBATCH -dNOPAUSE '\
'-sOUTPUTFILE=%s -r72 -sDEVICE=pdfwrite %s '\
'-sOUTPUTFILE="%s" -sDEVICE=pdfwrite %s '\
% (_GS_CMD, self._filename, ' '.join(list_of_pieces))
os.system(command)
+2 -1
View File
@@ -461,7 +461,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')
+2 -2
View File
@@ -334,8 +334,8 @@ def add_place_format_option(menu, category):
Insert an option for changing the report's place format to a
report-specific format instead of the user's Edit=>Preferences choice
"""
place_format = EnumeratedListOption(_("Place format"), None)
place_format.add_item(None, _("Default"))
place_format = EnumeratedListOption(_("Place format"), -1)
place_format.add_item(-1, _("Default"))
for number, fmt in enumerate(_pd.get_formats()):
place_format.add_item(number, fmt.name)
place_format.set_help(_("Select the format to display places"))
+3
View File
@@ -306,6 +306,9 @@ class LivingProxyDb(ProxyDbBase):
new_name.set_first_name(old_name.get_first_name())
new_name.set_suffix(old_name.get_suffix())
new_name.set_title(old_name.get_title())
new_name.set_call_name(old_name.get_call_name())
new_name.set_nick_name(old_name.get_nick_name())
new_name.set_family_nick_name(old_name.get_family_nick_name())
surnlst = []
if self.mode == self.MODE_REPLACE_COMPLETE_NAME:
+4 -3
View File
@@ -427,9 +427,10 @@ class ReferencedBySelectionProxyDb(ProxyDbBase):
def process_lds_ord(self, lds_ord):
""" Find all of the primary objects referred to """
fam_handle = lds_ord.get_family_handle()
fam = self.db.get_family_from_handle(fam_handle)
if fam:
self.queue_object("Family", fam_handle)
if fam_handle:
fam = self.db.get_family_from_handle(fam_handle)
if fam:
self.queue_object("Family", fam_handle)
place_handle = lds_ord.get_place_handle()
if place_handle:
+6 -6
View File
@@ -2181,18 +2181,18 @@ class RelationshipCalculator:
return trans_text("gender unknown|ex-spouse")
elif spouse_type == self.PARTNER_UNMARRIED:
if gender == MALE:
return trans_text("unmarried|husband")
return trans_text("male,unmarried|partner")
elif gender == FEMALE:
return trans_text("unmarried|wife")
return trans_text("female,unmarried|partner")
else:
return trans_text("gender unknown,unmarried|spouse")
return trans_text("gender unknown,unmarried|partner")
elif spouse_type == self.PARTNER_EX_UNMARRIED:
if gender == MALE:
return trans_text("unmarried|ex-husband")
return trans_text("male,unmarried|ex-partner")
elif gender == FEMALE:
return trans_text("unmarried|ex-wife")
return trans_text("female,unmarried|ex-partner")
else:
return trans_text("gender unknown,unmarried|ex-spouse")
return trans_text("gender unknown,unmarried|ex-partner")
elif spouse_type == self.PARTNER_CIVIL_UNION:
if gender == MALE:
return trans_text("male,civil union|partner")
+2 -1
View File
@@ -787,7 +787,8 @@ class SimpleAccess:
with self.dbase.get_person_cursor() as cursor:
# data[3] is primary_name; data[3][5][0][0] is surname
slist = sorted((data[3][5][0][0], key) for key, data in cursor)
slist = sorted((data[3][5][0][0] if data[3][5] else '', key)
for key, data in cursor)
for info in slist:
obj = self.dbase.get_person_from_handle(info[1])
+1 -1
View File
@@ -34,7 +34,7 @@ import unicodedata
# constants
#
#-------------------------------------------------------------------------
IGNORE = "HW~!@#$%^&*()_+=-`[]\|;:'/?.,<>\" \t\f\v"
IGNORE = "HW~!@#$%^&*()_+=-`[]\\|;:'/?.,<>\" \t\f\v"
TABLE = bytes.maketrans(b'ABCDEFGIJKLMNOPQRSTUVXYZ',
b'012301202245501262301202')
+1 -1
View File
@@ -256,7 +256,7 @@ def get_participant_from_event(db, event_handle, all_=False):
Obtain the first primary or family participant to an event we find in the
database. Note that an event can have more than one primary or
family participant, only one is returned, adding ellipses if there are
more. If the all\_ parameter is true a comma-space separated string with
more. If the all_ parameter is true a comma-space separated string with
the names of all primary participants is returned and no ellipses is used.
"""
participant = ""
+9 -3
View File
@@ -251,11 +251,17 @@ def create_checksum(full_path):
Create a md5 hash for the given file.
"""
full_path = os.path.normpath(full_path)
md5 = hashlib.md5()
try:
with open(full_path, 'rb') as media_file:
md5sum = hashlib.md5(media_file.read()).hexdigest()
while True:
buf = media_file.read(65536)
if not buf:
break
md5.update(buf)
md5sum = md5.hexdigest()
except IOError:
md5sum = ''
md5sum = ''
except UnicodeEncodeError:
md5sum = ''
md5sum = ''
return md5sum
+1 -1
View File
@@ -49,7 +49,7 @@ Keyword translation interface
# 'g' : familynick = family nick name
from ..const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
_ = glocale.translation.sgettext
KEYWORDS = [("title", "t", _("Person|Title"), _("Person|TITLE")),
("given", "f", _("Given"), _("GIVEN")),

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