Compare commits

...

443 Commits

Author SHA1 Message Date
romjerome
1c241125d7 8555: Database repair tool always modify all source objects 2016-11-26 12:51:56 +01:00
romjerome
e81c82fcc0 9003: Locality data in address was not imported 2015-10-27 09:48:20 +01:00
romjerome
7d91f4fae8 8188: Problem with existing selection in media reference editor
like selection box disappears when scrollbar appears

Now, do not expand bottom section (Media Object fields) by default

Wonder if we should not do that on all Reference Editors?
2015-09-24 11:07:56 +02:00
Nick Hall
78a74cae5c Make place title in GEDCOM export date dependent 2015-07-25 23:17:08 +01:00
Doug Blank
5039ad10f0 7261: Import GEDCOM file from MyHeritage, added __str__ to Attribute 2015-07-23 10:25:36 -04:00
Doug Blank
926bb60650 Merge pull request #43 from sam-m888/8702UpdateMapServicelinksOpenStreetMap
8702 Update Map Service links for OpenStreetMap
2015-07-14 07:04:24 -04:00
Doug Blank
314484cf84 Merge pull request #41 from ennoborg/maintenance/gramps41
8663: add exception for UnicodeEncodeError.
2015-07-13 23:12:01 -04:00
Enno Borgsteede
ae0a039216 8663: add exception for UnicodeEncodeError. 2015-07-12 11:41:57 +02:00
kulath
296e8ca562 fix testcasegenerator AttributeError 2015-06-20 00:14:52 +02:00
kulath
4e6a06bfac 0008537: Gedcom import crashes. Fix problem when matching places with
the same name which are enclosed by different places.
2015-06-18 22:52:53 +01:00
Doug Blank
5ff70a665e Merge pull request #37 from ennoborg/maintenance/gramps41
Re-aligned check buttons in remove unused objects dialog.
2015-06-18 16:03:41 -04:00
Enno Borgsteede
c0a0c1d302 Re-aligned check buttons in remove unused objects dialog. 2015-06-18 21:34:21 +02:00
kulath
e71115af1b 8614: pickleupgrade.txt should not be written for python2 2015-06-18 20:25:33 +01:00
Doug Blank
5828dd3aa8 8537: Gedcom import crashes; kulath patch 2015-06-17 07:59:19 -04:00
Doug Blank
273a5f986f 8614: addresses pickleupgrade.txt issue, by kulath 2015-06-17 06:27:08 -04:00
Hivernat Emmanuel
00032f0cad 7347: fix a bug 'on mouse over' event 2015-06-12 16:37:45 +02:00
Josip
1ed6103a41 8625: Cannot open Citation references from Clip Board 2015-06-12 16:07:44 +02:00
Zdeněk Hataš
ea2c71d238 fix mistake that prevent python2 to work 2015-06-07 11:10:22 +02:00
SNoiraud
6605d868cb Geography : bug 8612 : introspection problem with gtk 3.16. 2015-06-07 10:30:00 +02:00
Doug Blank
7a57c8584e 8621: Recursion Filter error 2015-06-06 19:58:41 -04:00
Zdeněk Hataš
46a509ee1d merge inflection fixes for cs lang from gramps42 branch 2015-06-06 14:14:29 +02:00
Josip
1aad1d6be0 Data Verify Tool: fix set transient parent 2015-06-05 12:13:43 +02:00
Josip
104808cf8f Relationship Calculator: fix set transient parent 2015-06-05 12:11:44 +02:00
Josip
8a34d98fb5 8619: Relationship Calculator - can't select person to relate to 2015-06-04 23:01:49 +02:00
erikdrgm
c42f714393 Updated 150602 Dutch translation 2015-06-02 21:18:49 +02:00
erikdrgm
d8ba31cc29 Merge branch 'maintenance/gramps41' of github.com:gramps-project/gramps into gramps41 2015-06-02 20:48:50 +02:00
Nick Hall
f9bb9e5e73 8488: Use place displayer for headings 2015-05-28 19:57:54 +01:00
Nick Hall
ed0b50e9b8 8487: Use place displayer to generate title in views 2015-05-28 16:31:59 +01:00
Jérôme Rapinat
19acd368c0 8583: Custom Events not shown in the filter siderbar 2015-05-26 20:51:30 +02:00
Enno Borgsteede
9de644bf1d #4161 #8548: Fix a baptism date error
https://gramps-project.org/bugs/view.php?id=8548#c41455

also reported and patched by 'hmmmpf' on #4161
2015-05-26 20:38:03 +02:00
Jérôme Rapinat
bdd70dec1c 4161: Fix empty #buri fields
Still present on Geneweb 6 and 7alpha

patch by 'hmmmpf'
2015-05-26 20:36:37 +02:00
Jérôme Rapinat
2a26ca6c5c 8567: Imprecise French translation in Place dialog
'Enclosed by' was translated in French by 'Lié à'
2015-05-26 18:55:20 +02:00
Jérôme Rapinat
f675fc1114 8580: "_Apply" button not translated on "Events comparison" tool 2015-05-26 18:46:44 +02:00
Doug Blank
143df8d42c Merge pull request #23 from belissent/belissent/gramps41
Modification for example.gramps database 
(custom parent relationship, notes)
2015-05-24 17:00:59 -04:00
Josip
d71a36b240 8579: Creation of Narration Website report fails 2015-05-24 12:13:54 +02:00
Josip
085d1ee095 8398: lock.file with accent letter cause gramps to crash at start 2015-05-22 18:55:21 +02:00
Leonhaeuser
cc2f803b86 update German translation 2015-05-17 10:30:04 +02:00
Josip
9c34e17bd9 Fix AgeStats gramplet for Python3 2015-05-16 12:51:18 +02:00
Josip
136bdd015a fix identation error of 8561#c41511 2015-05-16 06:06:14 +02:00
Josip
e0b56f65ef 8561#c41511 2015-05-16 05:04:48 +02:00
Josip
089d028e8f 8562: Cannot create family lines diagram 2015-05-16 04:50:07 +02:00
Josip
6e4ce84396 Set transient parent for errorview and errorreportassistant 2015-05-16 04:19:11 +02:00
Josip
0930c0041f 8561: Problem with importing ged file from My Heritage 2015-05-16 00:32:40 +02:00
Doug Blank
ef0492e0ff 8564: Recursion error when filtering for relatives 2015-05-15 18:01:59 -04:00
Josip
e1a71dcd34 8497: Error on use of Ctrl-Z 2015-05-14 17:30:41 +02:00
Pierre Bélissent
6895594cdc Modification for exemple.gramps database (custom parent relationship, notes)
Modification for exemple.gramps database (custom parent relationship,
notes):
- Added custom parent relationship for I0044
- Added notes with ID: '_header1', '_footer1', '_custom1'
- Added a date for media O0010
These modifications are used for the DynamicWeb report addon tests.
2015-05-11 18:36:48 +02:00
Josip
45f82f1ec5 Workaround for broken introspection
8474: Crash after merge places
8498: Crash when attempting to add gramplet
8536: clicking on tag icon in person view causes gramps to crash
2015-05-11 17:45:42 +02:00
Josip
c26fcf6d56 8445: Drag & Drop to add media: wrong handling of non-ascii characters 2015-05-07 21:04:22 +02:00
Doug Blank
2701d51b62 8541: Crash following update: addon permission issue blocks
re-starting gramps

There were two issues:

1. attempting to read a new addon file that wasn't readable
   threw an exception, aborted updating addons

2. global error catching didn't properly handle error code
   from an OSError for Python3
2015-05-05 13:44:20 -04:00
Matti Niemelä
9683a9e9eb new Finnish translation for gramps41 2015-05-05 00:37:14 -07:00
Jérôme Rapinat
d03e9e6553 fix mistake on versioning (inherited from '4.1.3' release) 2015-05-03 17:41:26 +02:00
Josip
0f8b77b706 8469: GUI allows multiple Find Duplicates, then faults
Yet another case of dialog without transient parent
2015-05-03 11:32:07 +02:00
John Ralls
a2244c6ab4 Update mac info for 4.1.3 release. 2015-05-02 11:53:51 -07:00
Jérôme Rapinat
2eccc6c4ce 8532: typo on the french translation
plural = single form for month(s) (moi => mois)
2015-05-02 17:02:27 +02:00
Jérôme Rapinat
815596a88d bump to 4.1.4 2015-05-02 10:51:08 +02:00
SNoiraud
98fdeaeb6b narrativeweb : bug 8528 : local variable 'body' referenced before assignment 2015-05-01 10:32:55 +02:00
Jérôme Rapinat
4d57633006 update NEWS before '4.1.3' release 2015-04-30 17:59:33 +02:00
Fabrice Arbogast
9c3450531b 8225 8311: Crash on geneweb export with python3 2015-04-30 17:26:36 +02:00
Jérôme Rapinat
2a35887da7 Don't need a date quality-month inflection in french 2015-04-29 11:08:25 +02:00
Jérôme Rapinat
b34e088fe7 8522: fix a typo on commit 436487... 2015-04-29 10:55:54 +02:00
Jérôme Rapinat
189cc853b2 update translation template
was change around GEDCOM SUBM tag

update french translation
2015-04-29 10:50:30 +02:00
John Ralls
1d3d002490 Use MSWin environment variables USERPROFILE and APPDATA.
Instead of GRAMPSHOME. GRAMPSHOME is based on the assumption that
the config directory is GRAMPSHOME/gramps, and that causes the
default location for reports and backups to be ~/Library/Application Support.
The MSWin variables allow the two to be separated.

Thanks to Tim Lyons for the suggestion.

(cherry picked from commit c11c63169f08495e8f03d7bb1aefc8ce5b3d6d5a)
2015-04-25 16:58:35 -07:00
kulath
eb34416727 0001360: Gedcom input: SUBN and SUBM record handling
Fixed:
(a) Additional spaces beyond the first between a GEDCOM tag and the rest
of the line are not ignored.

(b) The SUBMitter name is ignored (it is overwritten by the XREF).

(c) SUBmissioN data items are not committed to the database.
2015-04-24 10:51:43 +01:00
Leonhaeuser
52842f8200 German translation typo fixes 2015-04-20 13:37:21 +02:00
Paul Franklin
646afece89 Update _datedisplay.py 2015-04-18 15:38:06 -07:00
Josip
45adb70330 fix few more dialog without parent 2015-04-18 23:00:54 +02:00
Josip
4ac02a4ca0 8128: GtkDialog mapped without a transient parent 2015-04-18 21:22:37 +02:00
Stéphane Charette
ffe417f43e 8213: event columns too narrow
Web_Basic-Cypress stylesheet improvements
2015-04-18 16:12:23 +02:00
John Ralls
dc50b14ed3 Fix gtk-critical error when setting mac menubar. 2015-04-17 15:14:02 -07:00
Josip
35f5426a33 Merge pull request #17 from ennoborg/maintenance/gramps41
Some terms corrected, other ones added.
2015-04-17 21:18:06 +02:00
Enno Borgsteede
8ff85415e8 Some terms corrected, other ones added. 2015-04-16 22:37:33 +02:00
Josip
be1980e39a fix typo in commit 93bd200 2015-04-13 15:31:19 +02:00
Josip
93bd200ea0 8473: problem by start program 2015-04-13 01:15:17 +02:00
kulath
906e46b0a5 0002370: GEDCOM import/export round trip causes lost information
Fixed output of Adoption records so "1 ADOP" is only written once for
the person event and the adoption relationship.
2015-04-12 19:04:24 +01:00
Enno Borgsteede
51324b182f 8483: db upgrade fails, fatal damage 2015-04-12 10:44:28 -07:00
Nick Hall
4b8d25083b Merge pull request #15 from sebschub/maintenance/gramps41
Make place type in Place Reference Editor editable, add tooltip (maintenance/gramps41)
2015-04-10 19:14:24 +01:00
Paul Franklin
7ef450515c 8477: date format month/year is not well reported at editing time 2015-04-09 22:05:36 -07:00
Leonhaeuser
cb5fb2ed27 typo fix in German translation 2015-04-09 21:50:01 +02:00
Sebastian Schubert
b4eae781f8 Make place type in Place Reference Editor editable, add tooltip 2015-04-09 14:04:52 +02:00
Leonhaeuser
c5c5889a42 update German translation 2015-04-05 00:25:50 +02:00
Jérôme Rapinat
fe2a36c580 6403: add a rule for checking mapping key 2015-04-01 15:52:32 +02:00
kulath
e3538e8a8b 0004412: Entering a witness to an event such as marriage
In some circumstances (after a Father's age of Mother's age) a witness
could be ignored.
2015-04-01 14:49:33 +01:00
Matt Keenan
475e78669b 8468: GuiColorOption missing avail-changed event handler 2015-03-31 10:22:35 -07:00
kulath
f022597545 0008355: Gramps can't [GEDCOM] import estim. date period exported by
itself

Changed output format to DATE EST FROM TO and DATE CALC FROM TO. Also
changed in Narrative Web (which uses the same functions).
2015-03-31 10:48:44 +01:00
Paul Franklin
672bffe620 7742: bad generation of [timeline report] ODT files since 4.0.0 2015-03-30 13:29:16 -07:00
kulath
70e453f031 Fix bug in processing of Place FORM in GEDCOM import as a result of fix
for 8233.

When an unused Place was removed, PlaceImport still tried to generate
the place hierarchy. Also fixed bug in GEDCOM import where a default
PLAC FORM in the GEDCOM header was ignored.
2015-03-26 12:18:46 +00:00
Leonhaeuser
8a4b9c7ee0 update German translation 2015-03-26 02:34:43 +01:00
Jérôme Rapinat
e86f796cf7 Update french translation 2015-03-25 19:51:03 +01:00
Jérôme Rapinat
436487072a xgettext prior to 0.18.3 leads to error
update template after fixing one string
2015-03-25 19:46:32 +01:00
kulath
a2a68c64f7 Fix spurious generation of empty 'Alternative Name' in place.merge()
with an empty name

Bug discovered during testing of fix to 8233 (thanks, Enno for
discovering the problem and the fix).
2015-03-25 18:29:01 +00:00
Leonhaeuser
c9d9925965 update German translation 2015-03-25 00:19:59 +01:00
kulath
4b8ca4a824 3082, 4439, 7134, 8279 Various fixes for GEDCOM import.
0003082: 1/4 and 1/2 ANSEL characters not supported on importing ANSEL
GEDCOM
0004439: [Info]: characters ignored on a Gedcom encoded ANSI (cp1252
West Europe, USA)
0007134: Failure importing ANSEL encoded gedcom file.
0008279: GEDCOM import fails for ANSI file incorrectly opened with the
utf8 locale

Fixed GEDCOM import not working properly for Python3; other problems
also corected, including fixing the inability to import Windows CP1252
coded files. Also more consistent fix for 8014. Ensured any error
messages are not lost. Fixed a few ANSEL characters that were not
translated.
2015-03-24 16:36:12 +00:00
Leonhaeuser
57a367e8c4 Fixed 0008456: Translation string missing in Not Related tool for help and close button
made _Close _Apply and _Help translateable in notrelated.glade and updated gramps.pot and de.po
2015-03-23 11:59:59 +01:00
Leonhaeuser
9ff34f2934 small fix in German translation 2015-03-21 16:56:22 +01:00
Jérôme Rapinat
88f5fbeb9e Improve TipsParse for python3 support 2015-03-20 09:24:46 +01:00
Jérôme Rapinat
42cf24205b 8103: typo, minor update 2015-03-20 09:22:49 +01:00
SNoiraud
36c03a0a53 geography: bug8450: Attempting to add a bookmark causes an error. 2015-03-19 19:32:34 +01:00
Leonhaeuser
cf264e8d89 German translation fix typo 2015-03-19 19:06:57 +01:00
Jérôme Rapinat
ab056c8ac5 update template, one new string\n; 8103: sidebar gramplet does not fit well into Event and Citation views\n under french locale 2015-03-19 15:55:06 +01:00
Jérôme Rapinat
cc1f5b734a 8451: Fix crash on Relationships Graph report with unknown gender, related sibling label and french locale 2015-03-19 15:42:40 +01:00
Leonhaeuser
ac21380b60 Fixed some errors in German translation 2015-03-19 01:42:11 +01:00
Paul Franklin
706437f57d 7155: Support creating directories in various scenarios 2015-03-18 14:02:35 -07:00
SNoiraud
ab0dfc8d68 geography: bug 8450: Attempting to add a bookmark causes an error. 2015-03-17 21:16:26 +01:00
Nick Hall
4cb4d912fe 7992: Fix call to get_participant_from_event during batch transaction
During a batch transaction the secondary tables are closed.  This
causes an error when find_backlink_handles is called.  Although
not ideal, we return an empty string for participants.
2015-03-17 14:13:53 +00:00
Leonhaeuser
315ddd6ffd update German translation 2015-03-16 22:04:56 +01:00
Sveinn í Felli
60ff2584fb update Icelandic translation 2015-03-16 16:22:21 +01:00
Nick Hall
d2363249b9 Convert remaining unicode literals 2015-03-15 23:48:12 +00:00
Doug Blank
b70adcb74a 8435: Crash when trying to link existing place as an enclosing place using P0001 number 2015-03-15 00:36:30 -04:00
Josip
f63385ac4b 8023: HTML view fails to load
support both py2 and py3 with non-ascii chars
2015-03-15 01:04:15 +01:00
Doug Blank
d9cc3d3b0e 8023: HTML view fails to load; replaced file with open 2015-03-13 22:12:39 -04:00
leonhaeuser
ccbf763ac4 update German translation 2015-03-13 17:41:42 +01:00
Zdeněk Hataš
111c245297 czech translation update 2015-03-13 17:30:46 +01:00
Nick Hall
359d277423 8430: Place displayer should not return None
The place displayer should return an empty string for an event
with no place.
2015-03-12 23:15:27 +00:00
Nick Hall
1a0784b154 Fix another handle type bug 2015-03-12 18:16:11 +00:00
kulath
b02e1fe467 0008401: NameError in GEDCOM importer 2015-03-12 17:38:12 +00:00
Paul Franklin
8fe31528cf 8423: Python3 needs new_subpixbuf not subpixbuf 2015-03-12 10:11:11 -07:00
kulath
38b5b8ec54 0008322: Event address is lost on import, i.e. disconnected from event.
On GEDCOM import, Places are only merged if the Place Title and the
whole of the main location are identical.
2015-03-12 12:34:31 +00:00
Jérôme Rapinat
8d57884b5b 8407: gramps -i option in manpage not reflecting what happens; update french translation 2015-03-09 19:03:43 +01:00
erikdrgm
69e7501acc Update Dutch Translation 2015-03-09 10:09:38 +01:00
leonhaeuser
385c10a068 update German translation 2015-03-08 13:08:50 +01:00
Ross Gammon
d99adb8bd4 8407: gramps -o option in manpage not reflecting what happens, https://bugs.launchpad.net/ubuntu/+source/gramps/+bug/1427444 2015-03-07 11:24:25 +01:00
leonhaeuser
74995c0994 fix typo 2015-03-05 21:04:07 +01:00
Anthony Fok
14ccc01acb enable python3 to run po/update_po.py 2015-03-01 09:00:12 -08:00
kulath
542450bf6d 0007824: Regression: running gramps from crontab fails 2015-03-01 16:52:08 +00:00
Anthony Fok
b381f2dd8b correct incorrect tip49, new gramps.pot 2015-02-28 18:57:33 -08:00
Paul Franklin
25f9ea64fc clarify new string, new gramps.pot 2015-02-28 16:02:32 -08:00
Nick Hall
c1b65d8cbe Tidy up About dialog
Use standard string for translator credits.
Add new section for contributors.
Align artwork section properly.
2015-02-28 23:01:53 +00:00
John Ralls
89a5d3fcda Some additional packaging fixups for the new dependency versions. 2015-02-28 14:47:36 -08:00
kulath
38addcedb3 0008380: tag_map is not initialized 2015-02-28 20:51:19 +00:00
John Ralls
6c0fdb27d6 Update mac build for Gramps-4.1.2 2015-02-28 09:27:05 -08:00
Jérôme Rapinat
3e5a7fe970 bump to 4.1.3 2015-02-27 17:11:59 +01:00
Jérôme Rapinat
cf88fef1e8 make 4.1.2 release 2015-02-27 17:08:58 +01:00
Jérôme Rapinat
94f28daf03 updated existing Chinese translation 2015-02-27 16:23:31 +01:00
Jérôme Rapinat
bd8c08596b update NEWS before 4.1.2 release 2015-02-27 16:10:57 +01:00
Anthony Fok
d43ff61913 Chinese (simplified) translation update, for gramps41 2015-02-26 14:36:07 -08:00
Nick Hall
307bed5e44 Convert update addons dialog to no longer be a ManagedWindow 2015-02-26 21:30:52 +00:00
Nick Hall
e7cf8fe70c Remove place title from default view columns 2015-02-26 21:17:37 +00:00
Jérôme Rapinat
c390a0f490 New translation: Icelandic 2015-02-25 08:54:46 +01:00
Tim G L Lyons
8cc86bd153 import statement missing 2015-02-25 01:07:41 +00:00
kulath
2cd23356b4 8134: Fix pickle upgrade of python2 strings to python3 str
Move load of metadata (which can also have pickle upgrade errors) and
make zip backup for pickle or schema upgrade.
2015-02-24 22:41:37 +00:00
Nick Hall
03579aa4a1 Fix schema upgrade from 15 to 16 with python3 2015-02-23 19:19:57 +00:00
Paul Franklin
7f9686ba8d 8316: Family with children but no parents is lost on filtered export 2015-02-23 08:54:14 -08:00
John Ralls
f827fff712 Update PyICU to 1.8
1.5 won't compile against ICU-5.4.
2015-02-22 12:50:54 -08:00
Nick Hall
27648255c0 8134: Fix pickle upgrade of python2 strings to python3 str 2015-02-22 15:23:49 +00:00
leonhaeuser
f0b022564b update German translation 2015-02-22 02:09:16 +01:00
Jérôme Rapinat
2727044bc7 update french translation 2015-02-21 15:28:48 +01:00
Jérôme Rapinat
04bc04896b two new filter rules were missing on template, 'intltool-update -m' 2015-02-21 15:25:07 +01:00
Nemeséri Lajos
44d8c31bc9 Update Hungarian translation 2015-02-21 11:20:51 +01:00
leonhaeuser
1c4e91e891 update German translation 2015-02-19 01:35:48 +01:00
Nick Hall
09caa90530 Use place displayer in relationship view 2015-02-18 22:22:27 +00:00
noirauds
68a0a0d087 geography: 7149: some minor problems. 2015-02-18 18:27:05 +01:00
Jérôme Rapinat
e5701e9641 typo 2015-02-18 14:10:07 +01:00
Jérôme Rapinat
e2e75559c2 update french translation 2015-02-18 14:07:10 +01:00
Jérôme Rapinat
c489c8ec34 update template 2015-02-18 13:56:51 +01:00
noirauds
8e11d1bd64 geographie: 7149 : Views into Geography should not always use the last option set by the user 2015-02-18 09:30:27 +01:00
noirauds
5c71a35aea geography: 7948 : Add path selector to the text entry for tile cache 2015-02-17 20:30:03 +01:00
kulath
a99196dde5 0008347: GEDCOM import of embedded notes attached to media does not work 2015-02-16 22:53:34 +00:00
Jérôme Rapinat
7c71e098f1 fix typos, thank you phcook 2015-02-16 20:01:44 +01:00
leonhaeuser
db04225e83 update German translation 2015-02-16 02:33:09 +01:00
noirauds
40686d50ef geography - forgot to suppress debug lines 2015-02-15 23:42:42 +01:00
noirauds
66b0d389c7 geography - new feature (8327) Moving around the map using arrow keys and possibility to zoom from keyboard/keypad with the +/- keys 2015-02-15 23:00:37 +01:00
Nick Hall
4ff5d6460e 8353: Fix default size of detached gramplet window 2015-02-12 19:36:25 +00:00
Nick Hall
77c530f5ed 8351: Allow gramplets detached from the dashboard to fill the window 2015-02-12 19:15:07 +00:00
Nick Hall
db138e646c 8350: Fix spacing in export assistant file chooser 2015-02-11 22:52:37 +00:00
Nick Hall
bef5ed6386 Swap description and main participants columns
Change column order introduced in #7342 due to adverse comments
on mailing list.
2015-02-11 21:26:11 +00:00
noirauds
dadb588d83 geography : bug 7615 : Filter panel on geography view displays improperly 2015-02-11 21:17:19 +01:00
Nick Hall
55a20ab1e3 7930: Fix removing rows in flat list views 2015-02-09 17:26:49 +00:00
Nick Hall
71e2077805 8344: Ensure key is correct type when updating reference map 2015-02-09 15:44:32 +00:00
Zdeněk Hataš
b151f17117 czech translation update 2015-02-06 14:24:30 +01:00
kulath
3b5e3cbe6e 0007014: Errors handling owner/submitter information in GEDCOM files.
Only import researcher from GEDCOM or XML if the family tree was
originally empty.
2015-02-02 18:56:56 +00:00
Nick Hall
55c7becb68 Update import to cope with missing place name and type 2015-02-02 17:45:22 +00:00
Nick Hall
643ffcb479 8233: Fix bad handle in explanation note for unknown event 2015-02-01 14:44:48 +00:00
leonhaeuser
218ea80d2b update German translation 2015-01-31 17:35:08 +01:00
Nick Hall
2d27ada429 Remove check for empty place title 2015-01-30 22:12:49 +00:00
Paul Franklin
9cf8a940f9 8320: Detailed descendent report crashes 2015-01-28 09:44:34 -08:00
leonhaeuser
80ace16550 update German translation 2015-01-28 17:36:55 +01:00
Nick Hall
4ffce0b915 7860: Update place sidebar filter 2015-01-27 23:01:33 +00:00
Nick Hall
a16bc2de9c 7860: Add new place HasTitle rule 2015-01-27 23:01:32 +00:00
Nick Hall
ce9723eec8 7860: Add new place HasData rule 2015-01-27 23:01:30 +00:00
Nick Hall
24df17cc2f 8058: New place reference editor
This allows standard "add" and "share" buttons to be used in the place
reference embedded list.
2015-01-27 19:36:27 +00:00
leonhaeuser
6b50f932db update German translation 2015-01-27 15:00:45 +01:00
Nick Hall
3781e75d60 8056: Activate drag and drop on "enclosed by" tab 2015-01-26 22:44:53 +00:00
Nick Hall
4396a09081 8242: Put places in data.gramps into a hierarchy 2015-01-24 19:33:30 +00:00
leonhaeuser
3e19b099f8 update German translation 2015-01-24 15:05:31 +01:00
Nick Hall
254a605543 7860: Rename "Name" to "Title" 2015-01-23 21:41:03 +00:00
Nick Hall
f16772c393 8057: Remove auto-update of place titles 2015-01-23 19:52:41 +00:00
Nick Hall
415a843be9 7942: Implement place displayer 2015-01-23 19:16:16 +00:00
Nick Hall
82646d0d67 7533: Check for active person in session log gramplet 2015-01-21 23:03:36 +00:00
Nick Hall
db352c5c4c 7844: Check that the mediapath is not set to None 2015-01-21 21:43:14 +00:00
Nick Hall
ac62a978e0 7770: Always display main participants 2015-01-21 18:45:18 +00:00
Nick Hall
d0a83dd39c 7299: Fix bug when family has no parents 2015-01-21 17:32:31 +00:00
Jérôme Rapinat
53b415c0d0 8062 8288: Keywords entry in gramps.desktop does not end with ';' 2015-01-17 16:24:22 +01:00
Espen Berg
2f4767fd6f Done with Norwegian bokmål translation 2015-01-09 20:02:53 +01:00
Espen Berg
d230948c6a Some revision of Norwegian bokmål translation 2015-01-08 22:31:09 +01:00
Espen Berg
a8de78c452 Some revision of Norwegian bokmål translation 2015-01-08 21:11:22 +01:00
kulath
0e3c3cdbdd 0008283: GEDCOM export does not export media attached to citations. Fix
for gramps41
2015-01-08 18:05:28 +00:00
Espen Berg
bff873f174 Some revision of Norwegian bokmål translation 2015-01-07 22:16:14 +01:00
Peter Landgren
417d379726 Updated Swedish translation 2015-01-06 18:37:13 +01:00
leonhaeuser
88115561cc update German translation 2015-01-04 22:21:14 +01:00
Doug Blank
563ffe22b4 Records Gramplet uses wrong text 2015-01-03 11:00:44 -08:00
Josip
3f70f716c4 6548: 'Available Gramps Updates for Addons' window not on top 2015-01-03 17:48:57 +01:00
Doug Blank
25fbf57219 Fixes for struct tests to pass: method name changes, and removed tests for struct assignment 2015-01-03 10:35:43 -05:00
Craig Anderson
eebcd5c8a2 6355: Report event attribute name is not translated 2015-01-02 09:17:32 -08:00
Jérôme Rapinat
20917e4b09 8169 8267 typo: Glib should be GLib ... 2015-01-02 12:10:18 +01:00
Jérôme Rapinat
a166ed9ca4 New year... 2015-01-02 10:23:25 +01:00
Sigmund Lorentsen
492a40b5b4 Update and merge Norwegian Nynorsk translation 2015-01-02 10:22:08 +01:00
Paul Franklin
516d716b83 specify SVG font size is in points, for stupid viewers 2014-12-30 10:52:47 -08:00
Paul Franklin
de8efc9d12 8240: can't disable box shadow in SVG descendant tree 2014-12-30 10:36:05 -08:00
Ondrej Krč-Jediný
079abd1df3 merge request #15 ; git clone http://git.code.sf.net/u/ondrisko/gramps ; update slovak translation 2014-12-29 18:04:22 +01:00
Josip
42a56bf31b 7851: translations don't show in many labels, buttons, and other elements, Windows only
Added fix for Python3
2014-12-28 22:16:32 +01:00
Paul Franklin
236261e2db 8257: Crash when mixed "inflected" and "non inflected" months 2014-12-24 12:34:57 -08:00
Fedir Zinchuk
7fa12faed2 Update Ukrainian translation for 4.1 2014-12-22 13:21:47 +02:00
Fedir Zinchuk
032051c093 Update Hebrew month parser, for Ukrainian dateparset 2014-12-21 19:33:09 +02:00
Fedir Zinchuk
ad961132eb more string update, remove display_OLD() 2014-12-21 17:13:38 +02:00
Fedir Zinchuk
c248767c1d Fix parsing for the span date in Ukrainian language, was conflict with b.c.e. string 2014-12-21 15:45:57 +02:00
Fedir Zinchuk
8497e8c4b2 use inflection for Ukrainian dates 2014-12-21 14:54:33 +02:00
Fedir Zinchuk
05da780166 Update Ukrainian translation for 4.1 2014-12-19 15:19:42 +02:00
Paul Franklin
03ab81e2d1 8148: Turkish language updates 2014-12-17 20:25:17 -08:00
Paul Franklin
205529f448 8185: Gramps freeze after defining a report stile with German cm values 2014-12-17 19:57:43 -08:00
Paul Franklin
10c62800ef 8237: descendant tree graphical report, syntax error in svg output 2014-12-17 19:39:31 -08:00
Matti Niemelä
61625e2a9b update gramps41 Finnish translation 2014-12-15 17:26:10 -08:00
kulath
b8b61521d8 Fix 0008234: part (2) Various problems with
docgen.TextDoc.add_media_object part (2) for gramps41 branch
2014-12-16 00:27:32 +00:00
kulath
a1402552e2 Merge branch 'maintenance/gramps41' of ssh://kulath@git.code.sf.net/p/gramps/source into maintenance/gramps41 2014-12-14 18:03:36 +00:00
kulath
4722ce2e7f Fix 0008234: Various problems with docgen.TextDoc.add_media_object part
(1) for gramps41 branch
2014-12-14 17:59:28 +00:00
Zdeněk Hataš
b86bbf44d1 czech translation update 2014-12-14 12:51:31 +01:00
leonhaeuser
49f53a1fe7 fix German grammer bug [8231] 2014-12-13 22:19:31 +01:00
Paul Franklin
1c8cc6e33f cover pathological case (perhaps from privacy proxy) 2014-12-12 11:07:18 -08:00
Paul Franklin
040c9010d2 merge trunk-master Finnish translation into gramps41 2014-12-12 09:06:12 -08:00
leonhaeuser
c9a19a5954 Fix German typo Bug [8226] 2014-12-12 15:36:21 +01:00
Paul Franklin
bda98e7b1e make a new template (gramps41 gramps.pot) 2014-12-11 19:49:39 -08:00
Paul Franklin
c035dd3df4 typo 2014-12-11 11:03:12 -08:00
Nick Hall
2de3ea43c3 8029: Suppress warnings in UndoableEntry widget
Bug 644927 - Support out parameters in signals
https://bugzilla.gnome.org/show_bug.cgi?id=644927
2014-12-10 22:25:42 +00:00
Jérôme Rapinat
939eb423a6 typo on french translation 2014-12-09 21:33:34 +01:00
Jérôme Rapinat
0fe8bd5e4a update french translation 2014-12-06 18:13:04 +01:00
Josip
acb7f3cded 7865: Closing detached gramplet causes python to crash 2014-12-01 18:44:05 +01:00
Nick Hall
d84109f435 7866: Crash on Ancestry.com .ged import; consistent. 2014-12-01 18:09:33 +01:00
Paul Franklin
e84bf70347 ignore a zero day and its delimiter, in numerical date format 2014-11-24 17:15:01 -08:00
kulath
d6f7cfcd20 Fix error in previous commit (spurious comments) 2014-11-24 18:35:34 +00:00
kulath
a9640f327f 8196: Spurious spaces in CLI List Family Trees, tab delimited output.
Print statements changed to assemble the whole line before output.
2014-11-24 18:15:27 +00:00
leonhaeuser
80be25adae improved German translation 2014-11-23 23:51:36 +01:00
Josip
1030d1627e Croatian translation 2014-11-23 22:11:32 +01:00
leonhaeuser
d2ffb0484a update German translation 2014-11-23 15:37:38 +01:00
Josip
7b6dede9ea 10f47d: Serbian should be ready for Windows OS and LOCALE_NAMES mapping
mapping should be on of:
'Serbian (Latin)_Bosnia and Herzegovina.1250'
'Serbian (Latin)_Serbia.1250'
'Serbian (Latin)_Serbia and Montenegro (Former).1250'
'Serbian (Cyrillic)_Bosnia and Herzegovina.1251'
'Serbian (Cyrillic)_Serbia.1251'
'Serbian (Cyrillic)_Serbia and Montenegro (Former).1251'
2014-11-23 14:14:38 +01:00
Paul Franklin
e4061d605c make a new template (gramps.pot) 2014-11-22 16:20:22 -08:00
Paul Franklin
4afc4933c2 8175: date inflections in _datahandler.py 2014-11-22 16:05:04 -08:00
Paul Franklin
14ed0c4d16 8184: regression: Complete Individual report has some untranslated output 2014-11-20 10:03:55 -08:00
Paul Franklin
1a8c73212e add a few date examples (near the top of the list) 2014-11-13 10:13:47 -08:00
Zdeněk Hataš
18ef02d424 czech translation update 2014-11-10 10:34:30 +01:00
Josip
85b4c25d02 Fix esperanto duplicate message definition 2014-11-08 13:33:57 +01:00
Josip
e0b44ff355 8157: ImageMetadata doesn't show metadata 2014-11-07 19:18:19 +01:00
Pier Luigi Cinquantini
9a00d5533d improvements on Esperanto translation 2014-11-06 14:54:13 +01:00
Paul Franklin
d349f247ea 5150: new Event types are saved as a disordered list 2014-11-04 07:27:39 -08:00
Paul Franklin
f44e84f054 new gramps41 template (gramps.pot) 2014-11-03 20:22:33 -08:00
Nick Hall
0a7b8fb6ee 7604: Fix error setting gramplet tab label 2014-11-03 21:51:24 +00:00
Jérôme Rapinat
85914babdf 8126: Warnings: deprecated Gtk properties and errors loading theme icon
Fix: database manager dialog is inconsistent for older gtk+3 versions
2014-11-02 13:49:40 +01:00
Josip
448986875b Fix typo on commit 12ed5d 2014-11-01 20:14:06 +01:00
leonhaeuser
b81f80bace update German translation 2014-10-31 14:09:59 +01:00
Josip
12ed5deb24 7857: gramps fails to start with gtk+-3.13.3 (Gdk.Event(Gdk.EventType.NOTHING)
TypeError: function takes at most 0 arguments (1 given)
2014-10-31 13:40:29 +01:00
Josip
e6d35b8cbd Fix: Warning: The property GtkSettings:gtk-show-unicode-menu is deprecated
and shouldn't be used anymore
2014-10-31 13:25:13 +01:00
Josip
84055c01dc Fix: The property GtkAlignment:yalign|xalign is deprecated
and shouldn't be used anymore
2014-10-31 12:16:19 +01:00
Josip
b475c47994 0008126: Warnings: deprecated Gtk properties and errors loading theme icon
Fix: Error loading theme icon 'gtk-apply'
2014-10-31 09:59:01 +01:00
Josip
f9ebdaadc3 croatian translation 2014-10-31 03:12:02 +01:00
leonhaeuser
9478468977 update German translation 2014-10-29 19:34:49 +01:00
Paul Franklin
01baffae32 8154: Some text not translatable in context menu fancharts (GUI) 2014-10-29 09:18:36 -07:00
Zdeněk Hataš
4fd6b0f7c4 czech translation update 2014-10-29 09:56:29 +01:00
Paul Franklin
84318f6ee1 8152: Error converting database after upgrade to Gramps 4.1.1 2014-10-28 17:01:17 -07:00
Nick Hall
54fdf3ef8a 8020: Ensure that reference map has string keys 2014-10-28 17:40:29 +00:00
John Ralls
9740e7fc0c 8140: Gramps doesn't work under Turkish locale
(cherry picked from commit 4662cf1cf94c3502ca8490f213b34d3d094e2d38)
2014-10-27 11:23:55 -07:00
Ugur Cetin
b0b64b0b5c update Turkish translation (partial) 2014-10-26 15:22:58 -07:00
leonhaeuser
57ed1d7cb8 smal change in German translation 2014-10-26 19:17:23 +01:00
leonhaeuser
21e4d8e5ad update German translation 2014-10-26 10:21:14 +01:00
Jérôme Rapinat
3d249cfa01 7362 8103 typo on translations, find po -name *.po -exec sed -i'' -e 's/... 2014-10-26 07:36:41 +01:00
Jérôme Rapinat
9d858d7167 [backport]: 7362 8103: some labels fit better on citations sidebar filter (patch by Nick H.), add the new translated string on most translation files 2014-10-25 16:50:09 +02:00
Paul Franklin
081b2a4ed2 generate new template (gramps.pot) 2014-10-24 14:29:31 -07:00
John Ralls
49f7137577 Update gramps mac version to 4.1.1 2014-10-24 12:41:22 -07:00
Paul Franklin
8732b1e237 add language-warning message to setup.py 2014-10-24 12:33:56 -07:00
Jérôme Rapinat
10f47d73ad Serbian should be ready for Windows OS and LOCALE_NAMES mapping 2014-10-24 19:58:54 +02:00
Jérôme Rapinat
778e87971f bump to 4.1.2 2014-10-24 16:01:40 +02:00
Jérôme Rapinat
0e43df69fb make official '4.1.1' release 2014-10-24 15:56:21 +02:00
Jérôme Rapinat
7a98bc174c 8122: add one line into NEWS (pre-4.1.1) 2014-10-24 09:54:58 +02:00
Jérôme Rapinat
ba22fca9bc 8122: update french translation 2014-10-24 09:21:37 +02:00
Jérôme Rapinat
a1750394d7 8122: DB lock not checked when opening database from the recent opened trees list 2014-10-24 09:17:05 +02:00
Jérôme Rapinat
7c763eb5f8 start to update NEWS for '4.1.1' release 2014-10-24 08:52:02 +02:00
Zdeněk Hataš
d1a81958a8 czech translation update 2014-10-23 20:57:54 +02:00
Jérôme Rapinat
a7966a7a48 typo on Swedish translation 2014-10-23 15:37:22 +02:00
Pier Luigi Cinquantini
d4b8967036 update Esperanto 2014-10-23 15:31:40 +02:00
Paul Franklin
597f1ee8c2 enable Serbian Cyrillic translation 2014-10-22 22:33:26 -07:00
Мирослав Николић
b8323d2132 add Serbian Cyrillic translation file 2014-10-22 22:32:29 -07:00
Paul Franklin
b7a7bca282 rename old Serbian translation file 2014-10-22 22:30:17 -07:00
Jérôme Rapinat
447541e0b2 typo 2014-10-22 19:21:15 +02:00
Jérôme Rapinat
506d7e3160 New locations gramplet [8316e0] 2014-10-22 08:30:19 +02:00
Nick Hall
4bbc0f74d4 7902: Update place details gramplet
Add name, type and alternative names.
Locations are now displayed in a separate gramplet.
2014-10-21 19:31:12 +01:00
Nick Hall
8316e06853 Add new place locations gramplet 2014-10-21 19:31:12 +01:00
Jérôme Rapinat
1ac41d1287 Re-enable Esperento support after a large review (8% to 99%) 2014-10-21 15:23:27 +02:00
Pier Luigi Cinquantini
4a64d306cc Update and review for the Esperanto translation 2014-10-21 15:17:26 +02:00
leonhaeuser
1c038db179 update German translation 2014-10-19 12:56:29 +02:00
Paul Franklin
a868efdeb0 enhance Serbian date handler to handle Cyrillic dates 2014-10-17 18:11:11 -07:00
Nick Hall
294e053212 7813: Add check for empty handle in gramplets 2014-10-17 23:07:50 +01:00
Jérôme Rapinat
457e7207c3 8103: sidebarfilter gramplet does not fit well into People, Events, Citations or Media views (non-english locales) 2014-10-15 21:46:25 +02:00
Jérôme Rapinat
0701c0c0d0 8103: sidebarfilter gramplet does not fit well into People, Events, Citations or Media views 2014-10-15 21:42:07 +02:00
Zdeněk Hataš
433299beec czech translation update 2014-10-13 22:31:34 +02:00
Paul Franklin
3136b041a6 8113: 'Unknown' person in detailed ancestor report can not be translated 2014-10-11 14:38:46 -07:00
Paul Franklin
a2b31f8d55 add datespan example 2014-10-11 10:56:35 -07:00
Jérôme Rapinat
4e9ea44ded 1685: rebuild template; typo for date format; 2 new strings on tools; update french translation 2014-10-08 11:39:16 +02:00
Jérôme Rapinat
353bb62523 1685: Tools: some strings into print statement were untranslated 2014-10-08 11:33:29 +02:00
Paul Franklin
ecb4c1d58e typo ("data format" => "date format") 2014-10-07 11:02:55 -07:00
Jérôme Rapinat
758bf61ae0 7795: typos on geography, rebuild template, update french translation 2014-10-07 15:06:07 +02:00
noirauds
7c5234d333 Geography : bug 0007795: geography.gpr.py: Probable typos 2014-10-07 10:01:56 +02:00
Bastien Jacquet
8ca9a9cccf 8096: Fix new event default type considering existing events with *default* role 2014-10-01 19:09:03 +01:00
Luigi Toscano
5e718ac0ca Italian translation updates and fixes 2014-09-28 03:07:50 +02:00
Nick Hall
5a98e1a9b0 7868: Rebuild secondary indexes after database upgrade 2014-09-26 19:34:58 +01:00
Nick Hall
082b7c8940 8015: Update location utilities to work with proxies 2014-09-26 16:43:00 +01:00
Enno Borgsteede
c667cd5430 7931: Fix check and repair tool for empty placerefs 2014-09-25 22:23:42 +01:00
Jérôme Rapinat
26560d0590 8033: cannot generate Narrative Web report with gendex option enabled, was previous place model (location fields) 2014-09-23 16:33:33 +02:00
Mirko Leonhaeuser
b62e0208c2 update German translation 2014-09-20 17:14:43 +02:00
Zdeněk Hataš
00ef7110bd 8064: translation fixes 2014-09-18 12:21:18 +02:00
Zdeněk Hataš
607c23f546 Fixed issue #0008063
czech translation update
2014-09-14 20:13:42 +02:00
John Ralls
e5e610d9b8 Make Bundle ID 4.1.0-2 to distinguish osmgpsmap upgrade. 2014-09-11 10:27:53 -07:00
Petr Hejl
3c84e93b7a 8051: Can't fill in calculated and estimated dates in cs locale 2014-09-11 17:17:34 +02:00
Ross Gammon
e196bf606f 8062: .desktop file missing Keywords entry 2014-09-11 16:58:38 +02:00
Pekka Valta
a79cc2996a update and review for finnish translation 2014-09-11 16:46:40 +02:00
Paul Franklin
3fba4f0ec0 8021: Grafical reports don't use the correct name format 2014-09-10 15:38:56 -07:00
John Ralls
b9a12c4ecf Update OsmGpsMap to version 1.0.2
Addresses problem with retrieving tiles from OpenStreetMap.
Note as well https://gramps-project.org/bugs/view.php?id=8037
2014-09-09 16:55:04 -07:00
Paul Franklin
ed0ff156ee 8014: Importing gedcom files containing multibyte UTF-8 characters fails 2014-09-01 19:05:48 -07:00
Paul Franklin
1fc35fd0cc revert part of 8014 patch, pending further review 2014-08-25 11:39:41 -07:00
Björn Samvik
1a8e08d80f 8014: Importing gedcom files containing multibyte UTF-8 characters fails 2014-08-25 10:55:21 -07:00
Nick Hall
7ec13cac24 8011: Fix backlinks code in place report
Backlinks for places can now also be places as well as events.
2014-08-24 19:01:04 +01:00
Paul Franklin
63f4abfe47 python3 bytes-string mismatch with ICU installed 2014-08-22 18:15:50 -07:00
Paul Franklin
ca65aa8b37 8012: Text reports don't use the correct name format 2014-08-22 18:01:59 -07:00
Paul Franklin
39beb81e59 tweak to "default" CSS choice for the narrated web report 2014-08-20 07:55:14 -07:00
Mirko Leonhaeuser
c78a0958bc update German translation 2014-08-19 23:18:16 +02:00
Paul Franklin
04b4489a34 enable the "default" CSS choice for the narrated web report
Otherwise, whenever you start the report, you get this:

WARNING: _enumeratedlist.py: line 124: Value 'default' not found for option 'StyleSheet'
2014-08-17 12:48:14 -07:00
Jérôme Rapinat
9f05e33bc2 6934: better GUI support for embeded custom attributes list on media object (backport from master) 2014-08-17 19:19:07 +02:00
Paul Franklin
f867caf61e 7276: translate some punctuation marks -- partial 2014-08-13 09:23:04 -07:00
Nick Hall
1ad6634888 Allow gramplets to be displayed in the dashboard only
Add a new navigation type of 'Dashboard' in gramplet definitions.
Define the dashboard To Do gramplet to be dashboard-only.
2014-08-12 18:54:29 +01:00
Malcom Lewis
9eacd472da Update FSF address to current location. 2014-08-08 19:36:49 -07:00
Paul Franklin
7169784a4b add a few examples (Thai script, Married Name, "estimated about" date) 2014-08-06 12:52:30 -07:00
Zdeněk Hataš
6c965a0860 czech translation update 2014-08-06 14:33:33 +02:00
Mirko Leonhaeuser
101d261bf5 Update German translation 2014-07-18 22:04:33 +02:00
Jérôme Rapinat
0929f677ca update french translation 2014-07-17 15:46:34 +02:00
Jérôme Rapinat
08e1a88c27 7869 7912 7913 6403: various fixes and additions; updated template 2014-07-17 15:38:13 +02:00
Jérôme Rapinat
66b051d3f0 7258 7618 7837: let the win() stuff to windows, fix url/uri handling with non-ascii characters under linux and mac (not tested under mac) 2014-07-17 15:20:47 +02:00
Paul Franklin
42ce347ff5 simplify Canadian Ash Wednesday holiday 2014-07-15 22:57:49 -07:00
Nick Hall
78e5ed05fc 7856: Fix error when no place is selected
Check that a place has been selected when saving.
Use the standard place selection widget to be consistent.
This also implements feature request #7893.
2014-07-16 00:24:46 +01:00
Nick Hall
27fdeb65d6 7915: Prevent user creating a cycle in the place hierarchy 2014-07-15 19:41:14 +01:00
Paul Franklin
75470fd7ca add Arabic-script and Islamic-date examples (courtesy of Munzir Taha) 2014-07-15 09:24:18 -07:00
Nick Hall
4ffa3e8c49 7846: Prevent creation of a place cycle when merging 2014-07-14 22:57:17 +01:00
Nick Hall
82543486d0 7846: Avoid infinite loop when place cycle encountered 2014-07-14 22:57:15 +01:00
Nick Hall
9d419f3f5c 7911: Fix bug adding parent places to a new place 2014-07-14 22:57:12 +01:00
Zdeněk Hataš
c4bcf66e29 czech translation update 2014-07-14 12:45:10 +02:00
Nick Hall
9cc216ed2e 7904: Fix place type for places without a main location 2014-07-12 21:32:14 +01:00
Paul Franklin
b67b060c8c 7861: In Ahnentafel Report, Use Christening Date if no Birth Date 2014-07-11 15:39:00 -07:00
Ondrej Krc-Jediny
a170243369 7869: Various small issues in gramps.pot 2014-07-10 12:47:30 -07:00
Paul Franklin
c8cf6377c6 7739: [Narweb:] Missing webpage for media [under some circumstances] 2014-07-10 09:25:18 -07:00
Paul Franklin
74694b5eee include Gramps.py in the tarball 2014-07-10 09:05:31 -07:00
Mirko Leonhaeuser
76c8708a74 samll fix in German translation 2014-07-05 23:07:27 +02:00
Ondrej Krc
c1b7e8aa67 7882: Invalid link for Merge citation Help button 2014-07-05 10:10:09 +02:00
Josip
b584c0d450 7883: I can't add a people in my tree 2014-07-05 01:25:46 +02:00
Peter Landgren
2c672c4650 Updated gramps.po. 2014-07-02 15:27:15 +02:00
Peter Landgren
c72bac7012 Updated Swedish translation. 2014-07-02 14:48:44 +02:00
Munzir Taha
fcab24ba20 update Arabic translation 2014-06-29 10:46:20 -07:00
Paul Franklin
6592a2e719 7839: Place report does not run 2014-06-28 13:03:26 -07:00
Josip
86bfff69a1 7854: localisation Italian 2014-06-28 18:48:43 +02:00
John Ralls
1537eed079 7851: translations don't show in many labels
Ensure python text domain gets the right encoding.

(cherry picked from commit 65dbb1bd46f6bb632e31a262c1486c49fc024157)
2014-06-23 20:17:26 -07:00
Mirko Leonhaeuser
325cac8335 Fixed 0007840 and 0006655 and update German translation 2014-06-22 17:50:53 +02:00
Nick Hall
bf7d9c48fa 7837: Fix path when using drag & drop to add media 2014-06-22 00:04:45 +01:00
Nick Hall
2706bfb552 7842: Fix custom place types in the place editor
Allow place type combobox to receive focus.
Store custom place types in the metadata table.
2014-06-21 17:34:22 +01:00
Nick Hall
604e9ac9aa 7836: Limit the number of generations displayed in the ancestor gramplet 2014-06-21 14:25:44 +01:00
Nick Hall
bcb9141273 7834: export of a subset of the tree fails 2014-06-19 12:06:36 -07:00
John Ralls
df23a12132 Module fixups from gramps40 2014-06-19 10:39:57 -07:00
Ross Gammon
166dace001 7828: Syntax Error with python3 on test function for Ukrainian relationship calculator 2014-06-17 16:50:58 +02:00
John Ralls
6f7f30f547 Mac bundle for Gramps 4.1.0 2014-06-16 08:12:50 -07:00
Jérôme Rapinat
3b5eb5adf3 Bump to 4.1.1 2014-06-16 15:12:27 +02:00
Nick Hall
4141b7e34a Review on NEWS before '4.1.0' release 2014-06-15 16:05:55 +02:00
Jérôme Rapinat
fadb082afa typo on the urls for french pages (wiki) 2014-06-15 14:22:36 +02:00
Jérôme Rapinat
c031eea046 typo on versioning 2014-06-15 13:52:27 +02:00
Jérôme Rapinat
5f722e4c6c make official '4.1.0' release 2014-06-15 13:37:09 +02:00
Jérôme Rapinat
a1085dac15 update NEWS 2014-06-15 13:03:37 +02:00
Paul Franklin
dc175ea1a1 add translated-output option to B.R. TOC and Index reports 2014-06-14 13:38:26 -07:00
Peter Landgren
1223a75e68 Some updated place translations. 2014-06-14 15:10:02 +02:00
Paul Franklin
707edf3df0 Fix alphabetic index and toc bug in books
Another bad indent from master commit [796240] (and gramps40 [3196f8])
2014-06-13 09:24:31 -07:00
Marc Hulsman
076d514cd2 Add unit test for treemodel nodes 2014-06-12 22:55:35 +01:00
Marc Hulsman
35c4236f27 Add unit test for tree cursors 2014-06-12 22:55:29 +01:00
Nick Hall
baf368c049 7471: Fix python3 sort key errors
Ensure input to strxfrm is correct type.
Apply patch by Marc Hulsman.
2014-06-12 22:06:28 +01:00
Nick Hall
ccd6c3143e Fix alphabetic index and toc bug in books
Bad indent introduced in commit [796240].
2014-06-11 22:34:20 +01:00
Paul Franklin
c7ffa8d075 7398: Gedcom import deletes first char of notes 2014-06-11 10:06:21 -07:00
Paul Franklin
e8ba397f75 improve plugin warning 2014-06-08 13:03:10 -07:00
Paul Franklin
f21e23cd70 7678 typo 2014-06-08 12:59:16 -07:00
Jérôme Rapinat
d16feb7265 7678: some gir modules were not called 2014-06-07 13:28:18 +02:00
Jérôme Rapinat
6e25dd83f5 7678: some fixes around gettext and messages handling 2014-06-07 13:02:27 +02:00
Paul Franklin
090721408b 7784 "IndexError: list index out of range" on [initial CLI "gramps -t"] 2014-06-05 08:02:37 -07:00
Jérôme Rapinat
c9d12d4150 add a missing date value sample on a media object, re-order according to handle value for a place added outside XML export (idempotent) 2014-06-04 14:59:29 +02:00
Jérôme Rapinat
f4d6dbb64b add checksum values on 'example.gramps' 2014-06-04 14:49:11 +02:00
Jérôme Rapinat
ed284d44a5 7678: typo, missing self argument on fallback for personpos_at_angle() 2014-06-04 12:12:02 +02:00
Jérôme Rapinat
7d849d39cf update french translation 2014-06-04 11:30:39 +02:00
Łukasz Rymarczyk
d220ea65f8 update Polish translation 2014-06-04 11:21:56 +02:00
Jérôme Rapinat
6df1e6bd32 7678: typo, set_border_width was set twice on CLIVbox() 2014-06-03 21:16:22 +02:00
Jérôme Rapinat
d4df31abf3 7766: Fan Chart views crash with self.maxperiod = self.minperiod 2014-06-03 10:38:25 +02:00
Espen Berg
bbefe30256 Some revision of Norwegian bokmål 2014-06-02 21:05:58 +02:00
Ondrej Krc
d0aa2c63fc Git Merge Request #11: Slovak translation updates 2014-06-02 17:21:02 +02:00
Josip
7d98f08949 Updated Croatian translation 2014-06-01 12:23:31 +02:00
Nick Hall
2c06392f57 Update English (British) translation 2014-05-30 23:18:39 +01:00
Ondrej Krc
8f1fca7fed Git Merge Request #10: Update Slovak date handler 2014-05-30 10:14:36 +02:00
Mirko Leonhaeuser
85f425e8cf smal fix in German translation 2014-05-30 00:50:49 +02:00
Mirko Leonhaeuser
9d57c640c5 some correc tions in German translation regarding the new place structure 2014-05-30 00:43:30 +02:00
Peter Landgren
1a79077235 Updated Swedish translation 2014-05-29 17:35:48 +02:00
Omar Kohl
e3d524d18e Git Merge Request #9: Spanish typo 2014-05-29 15:54:55 +02:00
Ondrej Krc
9dec158e65 Git Merge Request #10: Slovak translation updates 2014-05-29 15:39:06 +02:00
Jérôme Rapinat
742f946970 Add support for Slovak manual 2014-05-29 15:32:10 +02:00
Zdeněk Hataš
87d92fc54f typo 2014-05-28 21:31:28 +02:00
Mirko Leonhaeuser
ec1a794648 update German translation 2014-05-27 18:40:12 +02:00
Nick Hall
fd3ca0348f 7712: Use full path for file existence check 2014-05-27 15:25:44 +01:00
Luigi Toscano
d0d9e5b207 Italian translation updates (4.1.x) 2014-05-27 01:51:02 +02:00
Jérôme Rapinat
9d4e3a022b 7554: update template 2014-05-26 17:51:31 +02:00
Nick Hall
16a038d2be Add check for PangoCairo typelib at startup 2014-05-25 14:15:20 +01:00
noirauds
23f64a155b BUG #0007744 : years are displayed as floating numbers 2014-05-25 11:24:16 +02:00
Nick Hall
0e6b71eb6f Fix tree cursor for read-only databases 2014-05-25 00:00:40 +01:00
Nick Hall
8ceb80bc29 7554: Replace LaTex by LaTeX 2014-05-24 21:26:03 +01:00
Nick Hall
2578252d11 Match alternative names in HasPlace filter 2014-05-24 20:53:42 +01:00
Nick Hall
dd77bf74d5 7177: Rebuild place tree view when a place moves in the hierarchy 2014-05-24 00:08:31 +01:00
John Ralls
26f028afb1 Patch PIL to build with Freetype2 2014-05-23 12:10:17 -07:00
John Ralls
a68679766c 7736: MacOSX Version 4.0.4-1 missing libgtkspell3 from bundle. 2014-05-22 20:26:44 -07:00
Pekka Valta
582b6f7f80 update Finnish translation 2014-05-22 20:53:06 +02:00
Jérôme Rapinat
9822b7d12e Merge branch 'maintenance/gramps41' of ssh://git.code.sf.net/p/gramps/source into gramps41 2014-05-22 20:46:58 +02:00
Ondrej Krc
12ad7514f5 Merge Request #8: Typo fix in slovak translation 2014-05-22 20:45:56 +02:00
Peter Landgren
7909c352f1 Updated Swedish translation 2014-05-22 17:55:21 +02:00
Lajos Nemeséri
28c1823062 update Hungarian translation 2014-05-22 17:01:19 +02:00
Nick Hall
26ca29b122 7731: Fix error tagging source in citation tree view 2014-05-22 14:07:58 +01:00
Jérôme Rapinat
f7c4cddcc8 remove trunk references for addons 2014-05-22 14:59:07 +02:00
Jérôme Rapinat
bfd7d804f2 merge NEWS from gramps40 2014-05-22 14:51:24 +02:00
Zdeněk Hataš
79ed0c638b czech translation update 2014-05-22 10:20:23 +02:00
Jérôme Rapinat
6a6e1cd73a Do not need to warn user anymore about UNSTABLE code (trunk) 2014-05-22 09:04:37 +02:00
Jérôme Rapinat
098dc0a05c typo on country level (example.gramps) 2014-05-22 09:00:16 +02:00
Jérôme Rapinat
d8cd9b8d72 Consistency (Place levels) on the french translation 2014-05-22 08:39:24 +02:00
Nick Hall
debedc57e9 Enable drag & drop for place references 2014-05-22 00:06:02 +01:00
Nick Hall
3b2bb00706 7729: Extend tag report to show all primary object types 2014-05-21 23:49:56 +01:00
Nick Hall
7bbbafe377 Revert [27453a] and [9d6049]
Fix broken proxies and make proxies read-only.
2014-05-21 22:01:18 +01:00
Jérôme Rapinat
0319dc7490 try to have common place divisions for all countries speaking french 2014-05-21 22:54:25 +02:00
Nick Hall
751b3d5a34 Reduce label width in assistants (Gtk 3.10) 2014-05-21 21:19:48 +01:00
Jérôme Rapinat
978c5055d8 typo 2014-05-21 20:55:43 +02:00
Zdeněk Hataš
76424b61f8 czech translation update 2014-05-21 20:37:51 +02:00
Jérôme Rapinat
c2ee4b0ab9 polish date handler for french locales 2014-05-21 19:40:22 +02:00
Jérôme Rapinat
20ca667b61 update french translation 2014-05-21 18:25:18 +02:00
1223 changed files with 227033 additions and 169244 deletions

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#
"""

View File

@ -1,6 +1,7 @@
include AUTHORS
include COPYING
include FAQ
include Gramps.py
include INSTALL
include LICENSE
include MANIFEST.in

330
NEWS
View File

@ -1,3 +1,333 @@
2015-05-01
Version 4.1.3, "Thou shalt not count to five", a maintenance release.
* Fix db upgrade failure
* GtkDialog mapped without a transient parent
* [Gedcom} SUBN and SUBM record handling
* [Gedcom] Import/export round trip causes lost information
* [Gedcom] Entering a witness to an event such as marriage might be ignored
* [Gedcom] Gramps can't import estim. date period exported by itself
* [Gedcom] 1/4 and 1/2 ANSEL characters not supported on importing ANSEL
* [Gedcom] Importing file containing multibyte UTF-8 characters fails
* [Gedcom] Import fails for ANSI file under python 3
* [Gedcom] Failure importing ANSEL encoded gedcom file.
* [Gedcom] Characters ignored on a Gedcom encoded ANSI (cp1252 West Europe, USA)
* [Gedcom] NameError in importer
* [Gedcom] Event address is lost on import, i.e. disconnected from event
* Crash on geneweb export with python3
* GuiColorOption missing avail-changed event handler
* Bad generation of [timeline report] ODT files since 4.0.0
* Fix bad handle in explanation note for unknown event
* Fix spurious generation of empty 'Alternative Name' in place.merge()
* Support creating directories in various scenarios
* Attempting to add a bookmark causes an error
* Long series of "unhandled exception" popup boxes while doing a check & repair
* Crash when trying to link existing place as an enclosing place using P0001 number
* HTML view fails to load
* Relationship Graph crashes
* Python3 needs new_subpixbuf not subpixbuf
* Regression: running gramps from crontab fails
* tag_map is not initialized
* Some labels now fit better on citations sidebar filter
* Event columns in web narrative are too narrow
* Problem by start program (launcher)
* Translation string missing in Not Related tool for help and close button
* Date format month/year is not well reported at editing time [in Italian]
* Fix unknown gender relationships handler for the french locale
* Fix a handle type bug on sidebar filter
* Tidy up About dialog
* Cleanup on some man files
* Convert some remaining unicode literals
* Fix mac menubar setting
* Enable python3 to run po/update_po.py
* Updated translations: cs, de, fr, is, nl
2015-02-28
Version 4.1.2, "That's no ordinary rabbit", a maintenance release.
* Error converting python2 utf-8 strings to python3 str when loading data from database
* Removing a parent place from a place leaves a dangling reference
* Error during checking the database
* Stubborn blank space in database won't be removed, fix removing rows in flat list views
* Database upgrade fails if default media path is not set
* Error converting database after upgrade to Gramps 4.1.1
* Error in a single place within the places section
* Entries from the add-or-choose selector of Place/Source/Media/Note cannot be dragged
* Enclosing places tab should work like other similar tabs, new place reference editor
* Association editor refuses dropped persons
* Error on opening twice an object from clipboard
* Incorrect spacing in export assistant file chooser
* New Event types are saved as a disordered list
* Always display main participants
* Place titles can now be generated on-the-fly by a place displayer, default is still to use the place title field
* GEDCOM import of embedded notes attached to media does not work
* Crash on Ancestry.com .ged import; consistent.
* Errors handling owner/submitter information in GEDCOM files.
Only import researcher from GEDCOM or XML if the family tree was originally empty.
* GEDCOM export does not export media attached to citations.
* The fanchart view crashes if max generation is set to 1 away.
* Sidebar Filters do not match placetypes in new placeview, two new filter rules (HasTitle, HasData)
* Fix bug when family has no parents
* Fix bad handle in explanation note for unknown event
* Some labels now fit better on citations sidebar filter
* Views in Geography should not always use the last option set by the user
* Request for keyboard-controlled zoom on Geography view
* Error geography view - Displaying main menu
* Configure screen needs a file selector to select directory for "offline mode" files
* Filter panel on geography view displays improperly
* Detailed descendant report crashes, bibliography (citations)
* Can't disable box shadow in SVG descendant tree
* Descendant tree graphical report, syntax error in svg output
* Regression: Complete Individual report has partially-untranslated output
* Events Page in Narrative Report not working
* Gramps freeze after defining a report style with German cm values
* Various problems with docgen.TextDoc.add_media_object
* Report event attribute name is not translated
* Records Gramplet uses wrong text
* Closing detached gramplet causes python to crash
* Cannot reduce size of gramplets detached from a gramplet bar
* Gramplets don't fill window when detached from dashboard
* ImageMetadata doesn't show metadata
* typo on GLib call, used by an addon only
* Fix error setting gramplet tab label
* Check for active person in session log gramplet
* Spurious spaces in CLI List Family Trees, tab delimited output.
Print statements changed to assemble the whole line before output.
* Gtk3 warning and custom undoableentry widget, see bugzilla_id 644927
* Warnings: deprecated Gtk properties and errors loading theme icon.
Fix: database manager dialog is inconsistent for older gtk+3 versions.
Warnings: deprecated Gtk properties and errors loading theme icon.
Fix: Error loading theme icon 'gtk-apply'
* gramps fails to start with gtk+-3.13.3
* Places in data.gramps are not in the new Place hierarchy
* Upgrade the version of some dependencies for Mac OS and Windows OS.
* Keywords entry in gramps.desktop does not work
* 'Available Gramps Updates for Addons' window not on top
* Some text not translatable in context menu fancharts
* Fix for Unit test
* date inflections in _datehandler.py, update for Ukrainian, Russian, Croatian
* Better support for Serbian and Turkish locales
* New translation: Icelandic
* Re-enable Turkish support after a major review. Thank you Uğur.
* Updated translations: cs, de, eo, fi, fr, hr, hu, it, nb, nn, ru, sk, sr, sv, uk, zh_CN
2014-10-24
Version 4.1.1, "MachineThatGoes...Ping!", a maintenance release.
* Fix custom place types in the place editor
* Allow place type combobox to receive focus.
* Store custom place types in the metadata table
* Fix place type for places without a main location
* Fix bug adding parent places to a new place
* Prevent user creating a cycle in the place hierarchy
* Avoid infinite loop when place cycle encountered
* Prevent creation of a place cycle when merging
* Fix error when no place is selected
* Check that a place has been selected when saving.
* Use the standard place selection widget to be consistent.
* Add a new Top Level place through the Place Reference Editor
* Fix backlinks code in place report
* Backlinks for places can now also be places as well as events.
* Fix check and repair tool for empty placerefs
* Update location utilities to work with proxies
* Place report does not run
* Update place details gramplet
* Locations are now displayed in a new separate gramplet.
* Add check for empty handle in gramplets
* Check DB lock on the recent opened trees list
* Sidebarfilter gramplet does not fit well into People, Events or Media views
* Fix new event default type considering existing events with *default* role
* Rebuild secondary indexes after database upgrade
* Importing gedcom files containing multibyte UTF-8 characters fails
* Ahnentafel Report did not use Christening Date if no Birth Date
* [Narweb:] Missing webpage for media under some circumstances
* Fix narrated web report with gendex option enabled
* Tweak to "default" CSS choice for the narrated web report
* Invalid link for Merge citation Help button
* Fix 'todo' gramplet
* Fix path when using drag & drop to add media
* Limit the number of generations displayed in the ancestor gramplet
* Export of a subset of the tree failed
* Fix issues in python3, and bytes-string mismatch with ICU
* Fix url/uri handling with non-ascii characters under linux and mac
* Fix name format on graphical reports
* Fix name format on textual reports
* Better GUI support for embeded custom attributes list on media object
* Better keys for search under linux shells (.desktop file)
* 'Unknown' person in detailed ancestor report can not be translated
* Translations don't show in many labels
* Ensure python text domain gets the right encoding.
* Translate some punctuation marks
* Various fixes around Geography and osmgpsmap
* Allow gramplets to be displayed in the dashboard only
* Update FSF address
* Add Arabic-script, Islamic-date, Thai script, Married Name and more dates examples
* Fix on czech date handler for calculated and estimated dates
* Enhance Serbian date handler to handle Cyrillic dates
* Simplify Canadian Ash Wednesday holiday
* Re-enable Esperanto support (for non-Windows OS only) after a large review
* New translation: Serbian
* Various fixes in German and Czech
* Updated translations: ar, cs, de, fi, fr, it, sv
2014-06-15
Version 4.1.0, the "Name go in book", new major release.
* GEP 006: Better Place handling
* New Tags support on Event, Place, Repository, Source, and Citation
* Source/Citation Data becomes Attributes
* Add optional support for checksum on Media object
* New place hierarchies model
* By default, you can choose navigator modes with a drop down.
* New Place editor
* Enhanced MediaReference Editor
* Some debug tools move to new gramplets
* Full Python 3 support
* New functions and widgets related to Place and Media selections
* Enhancements on to_struct()
* New methods on Date handlers
* Better support on translation for inflection rules
2014-05-22
Version 4.0.4, "Not the comfy chair", a maintenance release.
* Upgrade to db version 17 fails in Python 3 due to use of iteritems
* Database corrupted - TypeError: unhashable type: 'list'
* Fix bug in abandon changes and quit
* Consistency on create_id method
* Better handling for non-ASCII characters on database-path
* Better support for ANSEL characters
* 'Display as' field in Name Editor reverts to Preferences default
* Fix vcard date converter
* View does not communicate over proxy server with autorisation
* Enhanced Bookmark support
* Event gramplet filter does not have field for primary role,
* New HasDayOfWeek filter rule
* Error when leaving a Gramps type field blank in an editor
* Fix creation of events with same Gramps-ID
* Crash when opening details of a person
* Fix spacing on dialogs for some recent linux distribution
* date editor and Date class allow e.g. Hebrew dates with newyear (Mar25)
* Fix crash in fan chart view when scrolling
* Poor contrast mouse on mouse over
* Drag and drop only one data into Editors tabs
* Enhancements and consitency on events gramplet, selector and view
* Sometimes says 'no data exists for note' when saving
* Enhanced Citation Editor
* Do not always raise errors when some plugins are hidden
* Remove hover selection from embedded lists
* Fix update of active object after merge
* Cleanup on warnings and messages around locale directory
* Media Editor error if Path value was changed to a non existing file
* Register history objects at startup
* Avoid dumb encoding error when compiling gpr file
* Work around Py2Cairo
* Given Name Cloud Gramplet splits up given names into words
* Users should not be allowed to edit and delete 'default' style into Style Editor
* Filename Decoding Error in Graphical Reports
* Missing closing bracket in Web_Basic-Spruce.css
* Reorder tool: global name 'gen' is not defined
* Fix start in East Asian language, force UTF-8 locale on Mac
* Fix apple_collation
* Spelling messages at random cause hang for a few seconds.
* Media viewer list crashes during start if one try to select an entry where the media isn't available
* 'Available Gramps Updates for Addons' window not on top
* HTML View fails to load
* Paper names and Styles values are now translated
* Sort failure using glocale.sort_key
* Improve support for collation variants
* Translate some punctuation marks
* Fix unit tests and python3 issues
* Fix Relationships handler for Portuguese
* Updated translations: ar, cs, de, fi, fr, he, it, lt, nb, nl, pl, pt_BR, ru, sv, uk
2014-01-27
Version 4.0.3, "It's tomorrow, ask me now", a maintenance release.
* Fix copy via context menu on Views into Charts Category
* Fix Tab sequence in Name Editor
* Fix citations gramplet into media view
* Fix unhandled exception when inspecting media
* Fix Citation sidebar filter for python3
* Fix add link to a "Html code" note
* Fix message on backup dialog
* Fix space for selection lists
* Fix spell with myspell and LANG
* Fix changes root cursor to hand
* Recent file parser now gives the file location
* Fix vertical overflows on check and repair-tool dialog
* Fix custom key/value (data item) on Database difference report
* Fix unhandled exception in media exif information under Windows OS
* Fix person selector in searchfilter under Windows OS
* Starting Gramps without console is now possible under Windows OS
* Specific OS handling
* Common fixes and changes with 3.4.7.
* Updated translations: ca, de, fi, fr, ru
2013-11-08
Version 4.0.2, "Welcome to our humble abode", a maintenance release.
* Citation merge works better for all objects with citations
* Fixed citations attached to family events
* Fixed several crashes, hangs, and data corruption scenarios
* Fixed bugs in determining whether a person is alive, potentially resolving private data leak via export or report
* Fixed bugs on proxies
* VCF export/import now support gender information
* Several bugs with filtering fixed, most filters now support regular expressions
* Fixed bug in Hebrew calendar date calculations
* Fix some regressions on GEDCOM file format export and enhancement on CONT/CONC handling
* Multiple fixes and improvements on gramplets
* Multiple fixes in the narrated website and web calendar reports
* Enhancements on date and calendar
* Some fixes and improvements of the webapp
* Fix on Database Differences module
* Enhancements of the citation tree view (Sources category)
* Improvements on User classes
* Polish and consistency on Gramps XML export
* Bump XML schema to 1.5.1
* Fixed several long-standing problems with report generation
* Better support of RTL locales (Arabic, Hebrew, etc.) in GUI
* Better support for selected lang on some reports
* Better way for displaying missing dependencies
* Better Spell support
* Platform-specific fixes for Mac and Windows
* Add printing functionality for all geography views
* New date handlers for Arabic and Greek
* Translation updates (ar, cs, de, fr, lt, nb, nl, ru, sv) and translation-related fixes
* Repaired and enhanced tests broken since 3.3.x, resulting in overall reliability improvements
* Add a support for AppData
2013-06-24
Version 4.0.1, the "What is washing when we are on the verge of a great scientific breakthrough?", a maintenance release.
* Gtk3: fix menu on person editor and Geography views, convert deprecated code for the indicator in entryfield
* Gedcom: Fix crash on export when there are addresses, fix space on ID
* Disallow bookmarking a source in the Citation Tree View
* Better RTL support on Pedigreeview and position for gramplets
* Fix bad scaling in address editor
* Fix crash on ancestor chart report
* Fix navigation issues with selected line
* Fix size of the 'Tip of the day' dialog
* Fix right-click on tables in Quick Views
* Fix cursor corruption on Pedigree view
* Improvements when exporting via CLI
* Reports: Various fixes on dialogs, output file formats and cleanup on error messages
* MacOS: Fix bad filename on Gramps URL, osm-gps-map revision, image paths, resource-path file, maclocale
* Move the HTML resources from gramps/plugins/webstuff to Data and Images
* Alternate Names in Person Details Gramplet (patch by Heinz Brinker)
* New holidays, date and relationship handlers for Ukrainian
* Enhancements for testing localized Relationship handlers (contribution by Fedir)
* More names and events on data.gramps sample
* Translations updated: cs, de, es, fr, hu, nb, nl, ru, uk, and new support for Arabic
2013-05-21
Version 4.0.0, the "The Miracle of Birth", new major release.
* GEP 8: code reorganization
* GEP 26: Replace make
* GEP 29: Gtk 3 support
* GEP 31: Python 3 support
* Completely reworked localization handling
* The Gramplet view has been renamed Dashboard. This to avoid an overload of the word Gramplet, and to make it more clear to new users what can be expected in this view
* GTK 3 uses new themes, so users not on Gnome must set a nice GTK 3 theme to fully appreciate Gramps 4.0. Install a GTK 3 theme and set it. If Gramps looks ugly, you made an error in this step.
* Different sidebar navigators can be installed
* New Ancestor Fan Chart View and Descendant Fan Chart View, which offer a lot of insight in your family tree on a small space. Direct printing is available from these views.
* All wizards are reworked, so the exporter dialog, help and bug report dialog are different from version 3.4, but offer the same functions
* New To Do Gramplets listing all To Do Notes
* More reports support output in a different language than the interface language
* Narrative Web has been reworked to make it more stable.
2013-05-15
Version 3.4.4 of Gramps! "The Ministry of Silly Names", a maintenance release.
* infinite recursion bug in narrative web generation

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
----------------------------------------------------------------------------

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# $Id: Web_Basic-Blue.css 15540 2010-06-07 16:32:00Z robhealey1 $
#

View File

@ -248,6 +248,14 @@ table.primobjlist tr.BeginLetter td, table.primobjlist tr.BeginSurname td {
td.ColumnLetter, td.ColumnRowLabel {
font-weight: bold;
}
/* bug #8213 testing by Stephane, 2014-12-6 */
td.ColumnEvent, td.ColumnDate {
white-space: nowrap;
}
td.ColumnPlace, td.ColumnDescription {
width: 20%
}
/* end of customizations by Stephane */
td.ColumnBirth, td.ColumnDeath, td.ColumnPartner, td.ColumnParents {
font-size: 90%;
}

View File

@ -17,7 +17,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
******************************************************

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# $Id$
#

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# $Id$
#

View File

@ -17,7 +17,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
******************************************************

View File

@ -17,7 +17,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
**************************************************************************************************

View File

@ -17,7 +17,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
**************************************************************************************************

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# $Id: $
#

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
**************************************************************************************************

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# $Id$
#

View File

@ -8,5 +8,6 @@ Terminal=false
Type=Application
StartupNotify=true
Categories=GTK;Office;
_Keywords=Genealogy;Family History;Research;Family Tree;GEDCOM;
MimeType=application/x-gramps;application/x-gedcom;application/x-gramps-package;application/x-gramps-xml;
Exec=gramps %F

View File

@ -16,7 +16,7 @@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
$Id$

View File

@ -19,7 +19,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# $Id$
-->

View File

@ -18,7 +18,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# Written by Alex Roitman

View File

@ -50,7 +50,7 @@ copyright = u'2012, Gramps project'
# The short X.Y version.
version = '4.1'
# The full version, including alpha/beta/rc tags.
release = 'trunk'
release = '4.1.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

View File

@ -82,9 +82,9 @@ gramps(1) @VERSION@ gramps(1)
**-i** , **--import=** *FILE*
Import data from *FILE* . If you haven't specified a database then
a temporary database is used; this is deleted when you exit
gramps.
Import data from *FILE* . If you haven't specified a database, then
an empty database is created for you called Family Tree x
(where x is an incrementing number).
When more than one input file is given, each has to be preceded
by **-i** flag. The files are imported in the specified order, i.e.

View File

@ -82,8 +82,8 @@ gramps(1) @VERSION@ gramps(1)
**-i** , **--import=** *FICHIER*
Importer des données depuis un *FICHIER* . Si vous n'avez pas
spécifié de base de données alors une base de données temporaire
est utilisée; elle sera effacée quand vous quitterez gramps.
spécifié de base de données, alors une base de données vide
est utilisée.
Quand plus d'un fichier doit être importé, chacun doit être
précédé par la commande **-i** . Ces fichiers sont importés dans le

View File

@ -1,4 +1,4 @@
.TH "GRAMPS" "1" "28 December 2012" "4.0" "Gramps"
.TH "GRAMPS" "1" "09 mars 2015" "4.1" "Gramps"
.SH NAME
gramps \- Gramps Documentation
.
@ -106,8 +106,8 @@ sources, vous devez utiliser l\(aqoption d\(aqimport.
.TP
.B \fB\-i\fP , \fB\-\-import=\fP \fIFICHIER\fP
Importer des données depuis un \fIFICHIER\fP . Si vous n\(aqavez pas
spécifié de base de données alors une base de données temporaire
est utilisée; elle sera effacée quand vous quitterez gramps.
spécifié de base de données, alors une base de données vide
est utilisée.
.sp
Quand plus d\(aqun fichier doit être importé, chacun doit être
précédé par la commande \fB\-i\fP . Ces fichiers sont importés dans le
@ -337,6 +337,6 @@ gramps(1) @VERSION@ gramps(1)
.SH AUTHOR
Jerome Rapinat
.SH COPYRIGHT
2012, Gramps project
2015, Gramps project
.\" Generated by docutils manpage writer.
.

View File

@ -104,7 +104,7 @@ If no action, import or export options are given on the command line then an int
.TP
.BI \-i,\-\^\-import= " FILE"
Import data from \fIFILE\fR. If you haven't specified a database then a temporary database is used; this is deleted when you exit gramps.
Import data from \fIFILE\fR. If you haven't specified a database, then an empty database is created for you called Family Tree x (where x is an incrementing number).
.br
When more than one input file is given, each has to be preceded by \fB\-i\fR

View File

@ -19,7 +19,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
"""
update_man.py for command line documentation.

View File

@ -89,7 +89,7 @@
<_tip number="48"><b>Web Family Tree Format</b><br/>Gramps can export data to the Web Family Tree (WFT) format. This format allows a family tree to be displayed online using a single file, instead of many html files.</_tip>
<_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. The Gramps project provides free hosting of websites made with Gramps.</_tip>
<_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>

View File

@ -19,7 +19,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
"""
update_doc.py for Gramps API(s) documentation.

View File

@ -25,7 +25,7 @@
1 BIRT
2 TYPE Birth of Anna Hansdotter
2 DATE 2 OCT 1864
2 PLAC Loderup, Malmous Lan, Sweden
2 PLAC Löderup, Malmöhus Län, Sweden
1 DEAT
2 TYPE Death of Anna Hansdotter
2 DATE 29 SEP 1945
@ -55,7 +55,7 @@
1 BIRT
2 TYPE Birth of Hans Peter Smith
2 DATE 17 APR 1904
2 PLAC Ronne, Bornholm, Denmark
2 PLAC Rønne, Bornholm, Denmark
1 DEAT
2 TYPE Death of Hans Peter Smith
2 DATE 29 JAN 1977
@ -74,7 +74,7 @@
1 BIRT
2 TYPE Birth of Hanna Smith
2 DATE 29 JAN 1821
2 PLAC Gladsax, Kristianstad Lan, Sweden
2 PLAC Gladsax, Kristianstad Län, Sweden
1 FAMC @F0@
1 CHAN
2 DATE 21 DEC 2007
@ -87,7 +87,7 @@
1 BIRT
2 TYPE Birth of Herman Julius Nielsen
2 DATE 31 AUG 1889
2 PLAC Ronne, Bornholm, Denmark
2 PLAC Rønne, Bornholm, Denmark
1 DEAT
2 TYPE Death of Herman Julius Nielsen
2 DATE 1945
@ -128,7 +128,7 @@
1 BIRT
2 TYPE Birth of Gus Smith
2 DATE 11 SEP 1897
2 PLAC Ronne, Bornholm, Denmark
2 PLAC Rønne, Bornholm, Denmark
1 DEAT
2 TYPE Death of Gus Smith
2 DATE 21 OCT 1963
@ -146,7 +146,7 @@
1 BIRT
2 TYPE Birth of Jennifer Anderson
2 DATE 5 NOV 1907
2 PLAC Ronne, Bornholm, Denmark
2 PLAC Rønne, Bornholm, Denmark
1 DEAT
2 TYPE Death of Jennifer Anderson
2 DATE 29 MAY 1985
@ -163,7 +163,7 @@
1 BIRT
2 TYPE Birth of Lillie Harriet Jones
2 DATE 2 MAY 1910
2 PLAC Ronne, Bornholm, Denmark
2 PLAC Rønne, Bornholm, Denmark
1 DEAT
2 TYPE Death of Lillie Harriet Jones
2 DATE 26 JUN 1990
@ -227,7 +227,7 @@
1 BIRT
2 TYPE Birth of Carl Emil Smith
2 DATE 20 DEC 1899
2 PLAC Ronne, Bornholm, Denmark
2 PLAC Rønne, Bornholm, Denmark
1 DEAT
2 TYPE Death of Carl Emil Smith
2 DATE 28 JAN 1959
@ -245,11 +245,11 @@
1 BIRT
2 TYPE Birth of Hjalmar Smith
2 DATE 31 JAN 1893
2 PLAC Ronne, Bornholm, Denmark
2 PLAC Rønne, Bornholm, Denmark
1 DEAT
2 TYPE Death of Hjalmar Smith
2 DATE 25 SEP 1894
2 PLAC Ronne, Bornholm, Denmark
2 PLAC Rønne, Bornholm, Denmark
1 FAMC @F3@
1 CHAN
2 DATE 21 DEC 2007
@ -262,7 +262,7 @@
1 BIRT
2 TYPE Birth of Martin Smith
2 DATE 19 NOV 1830
2 PLAC Gladsax, Kristianstad Lan, Sweden
2 PLAC Gladsax, Kristianstad Län, Sweden
1 DEAT
2 TYPE Death of Martin Smith
2 DATE BET 1899 AND 1905
@ -270,7 +270,7 @@
1 BAPM
2 TYPE Baptism of Martin Smith
2 DATE 23 NOV 1830
2 PLAC Gladsax, Kristianstad Lan, Sweden
2 PLAC Gladsax, Kristianstad Län, Sweden
1 FAMC @F0@
1 FAMS @F2@
1 NOTE @N0002@
@ -285,7 +285,7 @@
1 BIRT
2 TYPE Birth of Astrid Shermanna Augusta Smith
2 DATE 31 JAN 1889
2 PLAC Ronne, Bornholm, Denmark
2 PLAC Rønne, Bornholm, Denmark
1 DEAT
2 TYPE Death of Astrid Shermanna Augusta Smith
2 DATE 21 DEC 1963
@ -304,7 +304,7 @@
1 BIRT
2 TYPE Birth of Gustaf Smith, Sr.
2 DATE 28 NOV 1862
2 PLAC Grostorp, Kristianstad Lan, Sweden
2 PLAC Grostorp, Kristianstad Län, Sweden
1 DEAT
2 TYPE Death of Gustaf Smith, Sr.
2 DATE BEF 23 JUL 1930
@ -316,7 +316,7 @@
1 CHR
2 TYPE Christening of Gustaf Smith, Sr.
2 DATE 7 DEC 1862
2 PLAC Gladsax, Kristianstad Lan, Sweden
2 PLAC Gladsax, Kristianstad Län, Sweden
1 FAMC @F2@
1 FAMS @F3@
1 CHAN
@ -343,7 +343,7 @@
1 BIRT
2 TYPE Birth of Kirsti Marie Smith
2 DATE 15 DEC 1886
2 PLAC Ronne, Bornholm, Denmark
2 PLAC Rønne, Bornholm, Denmark
1 DEAT
2 TYPE Death of Kirsti Marie Smith
2 DATE 18 JUL 1966
@ -378,7 +378,7 @@
1 DEAT
2 TYPE Death of Anna Streiffert
2 DATE 2 FEB 1927
2 PLAC Ronne, Bornholm, Denmark
2 PLAC Rønne, Bornholm, Denmark
1 FAMS @F11@
1 CHAN
2 DATE 21 DEC 2007
@ -407,11 +407,11 @@
1 BIRT
2 TYPE Birth of Magnes Smith
2 DATE 6 OCT 1858
2 PLAC Simrishamn, Kristianstad Lan, Sweden
2 PLAC Simrishamn, Kristianstad Län, Sweden
1 DEAT
2 TYPE Death of Magnes Smith
2 DATE 20 FEB 1910
2 PLAC Ronne, Bornholm, Denmark
2 PLAC Rønne, Bornholm, Denmark
1 FAMC @F2@
1 FAMS @F11@
1 CHAN
@ -515,14 +515,14 @@
1 BIRT
2 TYPE Birth of Elna Jefferson
2 DATE 14 SEP 1800
2 PLAC Gladsax, Kristianstad Lan, Sweden
2 PLAC Gladsax, Kristianstad Län, Sweden
1 DEAT
2 TYPE Death of Elna Jefferson
2 PLAC Sweden
1 CHR
2 TYPE Christening of Elna Jefferson
2 DATE 16 SEP 1800
2 PLAC Gladsax, Kristianstad Lan, Sweden
2 PLAC Gladsax, Kristianstad Län, Sweden
1 FAMS @F0@
1 CHAN
2 DATE 21 DEC 2007
@ -560,7 +560,7 @@
1 BIRT
2 TYPE Birth of Kerstina Hansdotter
2 DATE 29 NOV 1832
2 PLAC Smestorp, Kristianstad Lan, Sweden
2 PLAC Smestorp, Kristianstad Län, Sweden
1 DEAT
2 TYPE Death of Kerstina Hansdotter
2 DATE BEF 1908
@ -577,7 +577,7 @@
1 BIRT
2 TYPE Birth of Martin Smith
2 DATE BET 1794 AND 1796
2 PLAC Tommarp, Kristianstad Lan, Sweden
2 PLAC Tommarp, Kristianstad Län, Sweden
1 DEAT
2 TYPE Death of Martin Smith
2 PLAC Sweden
@ -594,7 +594,7 @@
1 BIRT
2 TYPE Birth of Ingeman Smith
2 DATE 29 JAN 1826
2 PLAC Gladsax, Kristianstad Lan, Sweden
2 PLAC Gladsax, Kristianstad Län, Sweden
1 FAMC @F0@
1 CHAN
2 DATE 21 DEC 2007
@ -661,7 +661,7 @@
1 BIRT
2 TYPE Birth of Ingar Smith
2 DATE AFT 1823
2 PLAC Gladsax, Kristianstad Lan, Sweden
2 PLAC Gladsax, Kristianstad Län, Sweden
1 FAMC @F0@
1 CHAN
2 DATE 21 DEC 2007
@ -674,7 +674,7 @@
1 BIRT
2 TYPE Birth of Hjalmar Smith
2 DATE 7 APR 1895
2 PLAC Ronne, Bornholm, Denmark
2 PLAC Rønne, Bornholm, Denmark
1 DEAT
2 TYPE Death of Hjalmar Smith
2 DATE 26 JUN 1975
@ -682,7 +682,7 @@
1 BAPM
2 TYPE Baptism of Hjalmar Smith
2 DATE 3 JUN 1895
2 PLAC Ronne Bornholm, Denmark
2 PLAC Rønne Bornholm, Denmark
1 EVEN
2 TYPE Immi
2 DATE 14 NOV 1912
@ -701,7 +701,7 @@
1 BIRT
2 TYPE Birth of Emil Smith
2 DATE 27 SEP 1860
2 PLAC Simrishamn, Kristianstad Lan, Sweden
2 PLAC Simrishamn, Kristianstad Län, Sweden
1 FAMC @F2@
1 CHAN
2 DATE 21 DEC 2007
@ -712,7 +712,7 @@
1 MARR
2 TYPE Marriage of Martin Smith and Elna Jefferson
2 DATE ABT 1816
2 PLAC Gladsax, Kristianstad Lan, Sweden
2 PLAC Gladsax, Kristianstad Län, Sweden
1 CHIL @I11@
1 CHIL @I7@
1 CHIL @I4@
@ -748,7 +748,7 @@
1 MARR
2 TYPE Marriage of Magnes Smith and Anna Streiffert
2 DATE 24 AUG 1884
2 PLAC Ronne, Bornholm, Denmark
2 PLAC Rønne, Bornholm, Denmark
1 CHAN
2 DATE 21 DEC 2007
3 TIME 01:35:26
@ -805,7 +805,7 @@
1 MARR
2 TYPE Marriage of Gustaf Smith, Sr. and Anna Hansdotter
2 DATE 27 NOV 1885
2 PLAC Ronne, Bornholm, Denmark
2 PLAC Rønne, Bornholm, Denmark
1 CHIL @I26@
1 CHIL @I23@
1 CHIL @I21@
@ -831,7 +831,7 @@
1 MARR
2 TYPE Marriage of Herman Julius Nielsen and Astrid Shermanna Augusta Smith
2 DATE 30 NOV 1912
2 PLAC Ronne, Bornholm, Denmark
2 PLAC Rønne, Bornholm, Denmark
1 CHAN
2 DATE 21 DEC 2007
3 TIME 01:35:26

View File

@ -3,7 +3,7 @@
"http://gramps-project.org/xml/1.6.0/grampsxml.dtd">
<database xmlns="http://gramps-project.org/xml/1.6.0/">
<header>
<created date="2014-05-15" version="4.1.0"/>
<created date="2015-01-24" version="4.1.2"/>
<researcher>
<resname>Alex Roitman,,,</resname>
</researcher>
@ -1523,80 +1523,175 @@
</source>
</sources>
<places>
<placeobj handle="_4ZLT6DVCWT9LTZRDCS" change="1198197326" id="P0003" name="Ronne" type="None">
<placeobj handle="_4ZLT6DVCWT9LTZRDCS" change="1422124381" id="P0003" name="Ronne" type="City">
<ptitle>Ronne, Bornholm, Denmark</ptitle>
<placeref hlink="_cef2428d9dd233688ea3ed3cc24"/>
</placeobj>
<placeobj handle="_61NT6D3G1JMOTO6Z7Y" change="1198197326" id="P0012" name="Grostorp" type="None">
<placeobj handle="_61NT6D3G1JMOTO6Z7Y" change="1422123855" id="P0012" name="Grostorp" type="Municipality">
<ptitle>Grostorp, Kristianstad Lan, Sweden</ptitle>
<placeref hlink="_cef23a81ba8c837cc364895d88"/>
</placeobj>
<placeobj handle="_67MT6DB6KWOVMBAXSY" change="1198197326" id="P0002" name="San Francisco" type="None">
<ptitle>San Francisco, San Francisco Co., CA</ptitle>
<placeobj handle="_67MT6DB6KWOVMBAXSY" change="1422125128" id="P0002" name="San Francisco" type="City">
<ptitle>San Francisco, San Francisco Co., CA, USA</ptitle>
<placeref hlink="_cef24668db23c27d421f51c667d"/>
</placeobj>
<placeobj handle="_7JMT6DN2LOF54KXHTU" change="1198197326" id="P0010" name="Reno" type="None">
<ptitle>Reno, Washoe Co., NV</ptitle>
<placeobj handle="_7JMT6DN2LOF54KXHTU" change="1422125958" id="P0010" name="Reno" type="City">
<ptitle>Reno, Washoe Co., NV, USA</ptitle>
<placeref hlink="_cef2513e057732c3f27780750d"/>
</placeobj>
<placeobj handle="_A9MT6DHVWGWRP59DEV" change="1198197326" id="P0011" name="Sweden" type="None">
<placeobj handle="_A9MT6DHVWGWRP59DEV" change="1422123595" id="P0011" name="Sweden" type="Country">
<ptitle>Sweden</ptitle>
</placeobj>
<placeobj handle="_AANT6D026O5SHNUCDH" change="1198197326" id="P0015" name="Simrishamn" type="None">
<placeobj handle="_AANT6D026O5SHNUCDH" change="1422123942" id="P0015" name="Simrishamn" type="Municipality">
<ptitle>Simrishamn, Kristianstad Lan, Sweden</ptitle>
<placeref hlink="_cef23a81ba8c837cc364895d88"/>
</placeobj>
<placeobj handle="_AKMT6DMEYZDTG9J6DS" change="1198197326" id="P0013" name="Copenhagen" type="None">
<placeobj handle="_AKMT6DMEYZDTG9J6DS" change="1422124249" id="P0013" name="Copenhagen" type="City">
<ptitle>Copenhagen, Denmark</ptitle>
<placeref hlink="_cef2418f9333e16e00f6ce2eb14"/>
</placeobj>
<placeobj handle="_BAOT6D1WY6J4O4ARRN" change="1198197326" id="P0030" name="San Ramon" type="None">
<ptitle>San Ramon, Conta Costa Co., CA</ptitle>
<placeobj handle="_BAOT6D1WY6J4O4ARRN" change="1422125198" id="P0030" name="San Ramon" type="City">
<ptitle>San Ramon, Conta Costa Co., CA, USA</ptitle>
<placeref hlink="_cef2478a94b48a58d3be6a10493"/>
</placeobj>
<placeobj handle="_DYLT6DF4DX2MNZICJ8" change="1198197326" id="P0014" name="Hoya/Jona/Hoia" type="None">
<ptitle>Hoya/Jona/Hoia, Sweden</ptitle>
<placeobj handle="_DYLT6DF4DX2MNZICJ8" change="1422126222" id="P0014" name="Hoya" type="City">
<ptitle>Hoya, Sweden</ptitle>
<alt_name>Jona</alt_name>
<alt_name>Hoia</alt_name>
<placeref hlink="_A9MT6DHVWGWRP59DEV"/>
</placeobj>
<placeobj handle="_ELNT6DS8GN8WI7Z4SO" change="1198197326" id="P0008" name="Hayward" type="None">
<ptitle>Hayward, Alameda Co., CA</ptitle>
<placeobj handle="_ELNT6DS8GN8WI7Z4SO" change="1422125073" id="P0008" name="Hayward" type="City">
<ptitle>Hayward, Alameda Co., CA, USA</ptitle>
<placeref hlink="_cef245b044820b7405a1180f298"/>
</placeobj>
<placeobj handle="_FBNT6DL92NDY0Z5SGP" change="1198197326" id="P0021" name="Santa Rosa" type="None">
<ptitle>Santa Rosa, Sonoma Co., CA</ptitle>
<placeobj handle="_FBNT6DL92NDY0Z5SGP" change="1422125294" id="P0021" name="Santa Rosa" type="City">
<ptitle>Santa Rosa, Sonoma Co., CA, USA</ptitle>
<placeref hlink="_cef24b7a76efa8b9d98d67ea5a"/>
</placeobj>
<placeobj handle="_GWNT6D12ZV06PK969X" change="1198197326" id="P0020" name="Sacramento" type="None">
<ptitle>Sacramento, Sacramento Co., CA</ptitle>
<placeobj handle="_GWNT6D12ZV06PK969X" change="1422125101" id="P0020" name="Sacramento" type="City">
<ptitle>Sacramento, Sacramento Co., CA, USA</ptitle>
<placeref hlink="_cef246117947f75e54c09680419"/>
</placeobj>
<placeobj handle="_HFNT6D12ZC0KOWY69T" change="1198197326" id="P0016" name="Fremont" type="None">
<ptitle>Fremont, Alameda Co., CA</ptitle>
<placeobj handle="_HFNT6D12ZC0KOWY69T" change="1422125018" id="P0016" name="Fremont" type="City">
<ptitle>Fremont, Alameda Co., CA, USA</ptitle>
<placeref hlink="_cef245b044820b7405a1180f298"/>
</placeobj>
<placeobj handle="_HINT6DP8JGGL0KKB8J" change="1198197326" id="P0000" name="Loderup" type="None">
<placeobj handle="_HINT6DP8JGGL0KKB8J" change="1422123879" id="P0000" name="Loderup" type="Municipality">
<ptitle>Loderup, Malmous Lan, Sweden</ptitle>
<placeref hlink="_cef23c1ee8b7da58c764e88c637"/>
</placeobj>
<placeobj handle="_IEOT6DOW3RE8AQ94HH" change="1198197326" id="P0025" name="Bí" type="None">
<placeobj handle="_IEOT6DOW3RE8AQ94HH" change="1422126043" id="P0025" name="Bí" type="Unknown">
<ptitle>Bí</ptitle>
</placeobj>
<placeobj handle="_LTNT6DKZ5CR8PZSVUS" change="1198197326" id="P0022" name="San Jose" type="None">
<ptitle>San Jose, Santa Clara Co., CA</ptitle>
<placeobj handle="_LTNT6DKZ5CR8PZSVUS" change="1422125169" id="P0022" name="San Jose" type="City">
<ptitle>San Jose, Santa Clara Co., CA, USA</ptitle>
<placeref hlink="_cef246c95c132bcf6a0255d4d17"/>
</placeobj>
<placeobj handle="_PUNT6D1XHS0DJW9QP6" change="1198197326" id="P0024" name="UC Berkeley" type="None">
<ptitle>UC Berkeley</ptitle>
<placeobj handle="_PUNT6D1XHS0DJW9QP6" change="1422125605" id="P0024" name="UC Berkeley" type="University">
<ptitle>UC Berkeley, CA, USA</ptitle>
<placeref hlink="_cef243fb5634559442323368f63"/>
</placeobj>
<placeobj handle="_PXMT6DBL0WSBL76WD7" change="1198197326" id="P0026" name="Smestorp" type="None">
<placeobj handle="_PXMT6DBL0WSBL76WD7" change="1422123936" id="P0026" name="Smestorp" type="Municipality">
<ptitle>Smestorp, Kristianstad Lan, Sweden</ptitle>
<placeref hlink="_cef23a81ba8c837cc364895d88"/>
</placeobj>
<placeobj handle="_QBOT6DN7UCCTZQ055" change="1198197326" id="P0029" name="Woodland" type="None">
<ptitle>Woodland, Yolo Co., CA</ptitle>
<placeobj handle="_QBOT6DN7UCCTZQ055" change="1422125399" id="P0029" name="Woodland" type="City">
<ptitle>Woodland, Yolo Co., CA, USA</ptitle>
<placeref hlink="_cef24c2e3592e759b7797f95465"/>
</placeobj>
<placeobj handle="_QJMT6DGII29FWCPX2E" change="1198197326" id="P0028" name="Ronne Bornholm" type="None">
<placeobj handle="_QJMT6DGII29FWCPX2E" change="1422124361" id="P0028" name="Ronne Bornholm" type="City">
<ptitle>Ronne Bornholm, Denmark</ptitle>
<placeref hlink="_cef2418f9333e16e00f6ce2eb14"/>
</placeobj>
<placeobj handle="_R8MT6DRIZVNRYDK0VN" change="1198197326" id="P0027" name="Tommarp" type="None">
<placeobj handle="_R8MT6DRIZVNRYDK0VN" change="1422123930" id="P0027" name="Tommarp" type="Municipality">
<ptitle>Tommarp, Kristianstad Lan, Sweden</ptitle>
<placeref hlink="_cef23a81ba8c837cc364895d88"/>
</placeobj>
<placeobj handle="_RPMT6DTQR8J7LK98HJ" change="1198197326" id="P0019" name="Denver" type="None">
<ptitle>Denver, Denver Co., CO</ptitle>
<placeobj handle="_RPMT6DTQR8J7LK98HJ" change="1422125771" id="P0019" name="Denver" type="City">
<ptitle>Denver, Denver Co., CO, USA</ptitle>
<placeref hlink="_cef24ffc57f28a50ea65f0af645"/>
</placeobj>
<placeobj handle="_S1NT6DPOBYC1JGMR1P" change="1198197326" id="P0001" name="Sparks" type="None">
<ptitle>Sparks, Washoe Co., NV</ptitle>
<placeobj handle="_S1NT6DPOBYC1JGMR1P" change="1422125992" id="P0001" name="Sparks" type="City">
<ptitle>Sparks, Washoe Co., NV, USA</ptitle>
<placeref hlink="_cef2513e057732c3f27780750d"/>
</placeobj>
<placeobj handle="_XLNT6DUONITFPPEGVH" change="1198197326" id="P0009" name="Community Presbyterian Church" type="None">
<ptitle>Community Presbyterian Church, Danville, CA</ptitle>
<placeobj handle="_XLNT6DUONITFPPEGVH" change="1422125508" id="P0009" name="Community Presbyterian Church" type="Church">
<ptitle>Community Presbyterian Church, Danville, CA, USA</ptitle>
<placeref hlink="_cef24d930653dc59ec3a36510e4"/>
</placeobj>
<placeobj handle="_XSMT6DNISHYRCR1E78" change="1198197326" id="P0004" name="Gladsax" type="None">
<placeobj handle="_XSMT6DNISHYRCR1E78" change="1422123836" id="P0004" name="Gladsax" type="Municipality">
<ptitle>Gladsax, Kristianstad Lan, Sweden</ptitle>
<placeref hlink="_cef23a81ba8c837cc364895d88"/>
</placeobj>
<placeobj handle="_cef23a81ba8c837cc364895d88" change="1422123677" id="P0005" name="Kristianstad Lan" type="County">
<ptitle>Kristianstad Lan, Sweden</ptitle>
<placeref hlink="_A9MT6DHVWGWRP59DEV"/>
</placeobj>
<placeobj handle="_cef23c1ee8b7da58c764e88c637" change="1422123662" id="P0006" name="Malmous Lan" type="County">
<ptitle>Malmous Lan, Sweden</ptitle>
<placeref hlink="_A9MT6DHVWGWRP59DEV"/>
</placeobj>
<placeobj handle="_cef2418f9333e16e00f6ce2eb14" change="1422124233" id="P0007" name="Denmark" type="Country">
<ptitle>Denmark</ptitle>
</placeobj>
<placeobj handle="_cef2428d9dd233688ea3ed3cc24" change="1422124337" id="P0017" name="Bornholm" type="Region">
<ptitle>Bornholm, Denmark</ptitle>
<placeref hlink="_cef2418f9333e16e00f6ce2eb14"/>
</placeobj>
<placeobj handle="_cef2438892244290ca7fb5750" change="1422124440" id="P0018" name="USA" type="Country">
<ptitle>USA</ptitle>
</placeobj>
<placeobj handle="_cef243fb5634559442323368f63" change="1422124487" id="P0023" name="CA" type="State">
<ptitle>CA, USA</ptitle>
<placeref hlink="_cef2438892244290ca7fb5750"/>
</placeobj>
<placeobj handle="_cef244224d14af0273799b281e" change="1422124514" id="P0031" name="CO" type="State">
<ptitle>CO, USA</ptitle>
<placeref hlink="_cef2438892244290ca7fb5750"/>
</placeobj>
<placeobj handle="_cef24468f6e3a984bf57967e95d" change="1422124542" id="P0032" name="NV" type="State">
<ptitle>NV, USA</ptitle>
<placeref hlink="_cef2438892244290ca7fb5750"/>
</placeobj>
<placeobj handle="_cef245b044820b7405a1180f298" change="1422124666" id="P0033" name="Alameda Co." type="County">
<ptitle>Alameda Co., CA, USA</ptitle>
<placeref hlink="_cef243fb5634559442323368f63"/>
</placeobj>
<placeobj handle="_cef246117947f75e54c09680419" change="1422124908" id="P0034" name="Sacramento Co." type="County">
<ptitle>Sacramento Co., CA, USA</ptitle>
<placeref hlink="_cef243fb5634559442323368f63"/>
</placeobj>
<placeobj handle="_cef24668db23c27d421f51c667d" change="1422124741" id="P0035" name="San Francisco Co." type="County">
<ptitle>San Francisco Co., CA, USA</ptitle>
<placeref hlink="_cef243fb5634559442323368f63"/>
</placeobj>
<placeobj handle="_cef246c95c132bcf6a0255d4d17" change="1422124781" id="P0036" name="Santa Clara Co." type="County">
<ptitle>Santa Clara Co., CA, USA</ptitle>
<placeref hlink="_cef243fb5634559442323368f63"/>
</placeobj>
<placeobj handle="_cef2478a94b48a58d3be6a10493" change="1422124860" id="P0037" name="Conta Costa Co." type="County">
<ptitle>Conta Costa Co., CA, USA</ptitle>
<placeref hlink="_cef243fb5634559442323368f63"/>
</placeobj>
<placeobj handle="_cef24b7a76efa8b9d98d67ea5a" change="1422125273" id="P0038" name="Sonoma Co." type="County">
<ptitle>Sonoma Co., CA, USA</ptitle>
<placeref hlink="_cef243fb5634559442323368f63"/>
</placeobj>
<placeobj handle="_cef24c2e3592e759b7797f95465" change="1422125420" id="P0039" name="Yolo Co." type="County">
<ptitle>Yolo Co., CA, USA</ptitle>
<placeref hlink="_cef243fb5634559442323368f63"/>
</placeobj>
<placeobj handle="_cef24d930653dc59ec3a36510e4" change="1422125493" id="P0040" name="Danville" type="City">
<ptitle>Danville, CA, USA</ptitle>
<placeref hlink="_cef243fb5634559442323368f63"/>
</placeobj>
<placeobj handle="_cef24ffc57f28a50ea65f0af645" change="1422125745" id="P0041" name="Denver Co." type="County">
<ptitle>Denver Co., CO, USA</ptitle>
<placeref hlink="_cef244224d14af0273799b281e"/>
</placeobj>
<placeobj handle="_cef2513e057732c3f27780750d" change="1422125877" id="P0042" name="Washoe Co." type="County">
<ptitle>Washoe Co., NV, USA</ptitle>
<placeref hlink="_cef24468f6e3a984bf57967e95d"/>
</placeobj>
</places>
<objects>

View File

@ -3,11 +3,11 @@
"http://gramps-project.org/xml/1.6.0/grampsxml.dtd">
<database xmlns="http://gramps-project.org/xml/1.6.0/">
<header>
<created date="2014-05-19" version="4.1.0"/>
<created date="2015-05-10" version="4.1.4"/>
<researcher>
<resname>Alex Roitman,,,</resname>
</researcher>
<mediapath>/home/cristina/gramps/master/example/gramps</mediapath>
<mediapath>/home/pierre/Gramps/master/example/gramps</mediapath>
</header>
<name-formats>
<format number="-1" name="SURNAME, Given (Common)" fmt_str="SURNAME, given (common)" active="1"/>
@ -88,9 +88,14 @@
</event>
<event handle="_a5af0eb6abd74c3d7fb" change="1284030605" id="E0013">
<type>Birth</type>
<dateval val="1592"/>
<dateval val="1592" type="about"/>
<description>Birth of Abbott, Frances</description>
</event>
<event handle="_a5af0eb6abd74c3d7fc" change="1284030605" id="E3415">
<type>Death</type>
<dateval val="1642-01" type="about"/>
<description>Death of Abbott, Frances</description>
</event>
<event handle="_a5af0eb6add73de72aa" change="1284030598" id="E0014">
<type>Birth</type>
<dateval val="1520" type="about"/>
@ -10024,7 +10029,7 @@
</event>
<event handle="_a5af0ecd27c36369bba" change="1284030606" id="E1894">
<type>Birth</type>
<dateval val="1737-10-01"/>
<dateval val="1737-10-01" type="after"/>
<place hlink="_N04KQC5Z5IGGUBSE9X"/>
<description>Birth of Adkins, John</description>
</event>
@ -10042,6 +10047,7 @@
</event>
<event handle="_a5af0ecd2e07c2f2bdc" change="1284030618" id="E1897">
<type>Death</type>
<datespan start="1800" stop="1805" quality="estimated"/>
<place hlink="_WIVJQCUZOWUMT7VS2Q"/>
<description>Death of Adams, Jane</description>
</event>
@ -10090,7 +10096,7 @@
</event>
<event handle="_a5af0ecd429521b5d6b" change="1284030611" id="E1906">
<type>Birth</type>
<dateval val="1763-06-20"/>
<dateval val="1763-06-20" type="before"/>
<place hlink="_TGVJQCRFKHZESR6WNB"/>
<description>Birth of Adkins, Martha</description>
</event>
@ -11458,7 +11464,7 @@
</event>
<event handle="_a5af0ecfc7f527e0191" change="1284030617" id="E2158">
<type>Birth</type>
<dateval val="1700-10-26"/>
<dateval val="1700-10-26" type="about"/>
<place hlink="_NR6KQCSNMPJHAJEWNV"/>
<description>Birth of Adams, William</description>
</event>
@ -11476,13 +11482,13 @@
</event>
<event handle="_a5af0ecfcf201952525" change="1284030604" id="E2161">
<type>Birth</type>
<dateval val="1717"/>
<dateval val="1717" type="after"/>
<place hlink="_YS6KQCLHBN4N6TE5JL"/>
<description>Birth of Aguilar, Eleanor</description>
</event>
<event handle="_a5af0ecfd0a47d2ae44" change="1284030604" id="E2162">
<type>Death</type>
<dateval val="1760"/>
<dateval val="1760-02" type="after"/>
<place hlink="_HMVJQCAKOUGYE0JNVI"/>
<description>Death of Aguilar, Eleanor</description>
</event>
@ -13943,7 +13949,7 @@
<event handle="_a5af0ed3f64432fb742" change="1284030595" id="E2618">
<type>Burial</type>
<dateval val="1818" type="about"/>
<place hlink="_4ECKQCWCLO5YIHXEXC"/>
<place hlink="_4ECKQCWCLO5YIHXEXZ"/>
<description>Burial of Schultz, Rev.Isaac</description>
</event>
<event handle="_a5af0ed3f9b07f938fb" change="1284030602" id="E2619">
@ -13976,13 +13982,13 @@
</event>
<event handle="_a5af0ed405d190cc4f9" change="1284030611" id="E2624">
<type>Birth</type>
<dateval val="1665"/>
<dateval val="1665" type="before"/>
<place hlink="_LP3KQCM533F3TRBKRT"/>
<description>Birth of Aguilar, John</description>
</event>
<event handle="_a5af0ed4070703f2665" change="1284030611" id="E2625">
<type>Death</type>
<dateval val="1745"/>
<dateval val="1745-02" type="before"/>
<place hlink="_W04KQCN0SLXWA1Z46O"/>
<description>Death of Aguilar, John</description>
</event>
@ -17848,6 +17854,54 @@
<dateval val="1974-03-30"/>
<description>Marriage of Peters, John C. and Cruz, Joyce Marie</description>
</event>
<event handle="_cc8205d81e2695b08bc" change="1402521343" id="E3403">
<type>Birth</type>
<dateval val="0570-04-19"/>
</event>
<event handle="_cc8205d86c903db892d" change="1402521395" id="E3404">
<type>Death</type>
<dateval val="0632-06-08"/>
</event>
<event handle="_cc8205d86fc4e9706a5" change="1402522476" id="E3405">
<type>Marriage</type>
<dateval val="0610"/>
</event>
<event handle="_cc820604e846de3c210" change="1403157667" id="E3406">
<type>Birth</type>
<dateval val="0164-03" cformat="Islamic"/>
</event>
<event handle="_cc820604ebe2877212d" change="1403157610" id="E3407">
<type>Death</type>
<dateval val="0241-03-12" cformat="Islamic"/>
</event>
<event handle="_cc820604ef05cb67907" change="1403158792" id="E3408">
<type>Marriage</type>
<dateval val="0204" cformat="Islamic"/>
</event>
<event handle="_cc820604f313cc072c6" change="1403157647" id="E3409">
<type>Death</type>
<dateval val="0241-03-12" cformat="Islamic"/>
</event>
<event handle="_cc820604f6364f627bf" change="1403159091" id="E3410">
<type>Death</type>
<dateval val="0234" cformat="Islamic"/>
</event>
<event handle="_cc820604f967aa1d9a5" change="1403159681" id="E3411">
<type>Birth</type>
<dateval val="0213" cformat="Islamic"/>
</event>
<event handle="_cc820604fcf3d08a81a" change="1403159708" id="E3412">
<type>Death</type>
<dateval val="0290" cformat="Islamic"/>
</event>
<event handle="_cc82060500222649d98" change="1403159938" id="E3413">
<type>Birth</type>
<dateval val="0203" cformat="Islamic"/>
</event>
<event handle="_cccc047c40841a5993c" change="1407353879" id="E3414">
<type>Death</type>
<dateval val="1850" type="about" quality="estimated"/>
</event>
</events>
<people home="_GNUJQCL9MD64AM56OH">
<person handle="_004KQCGYT27EEPQHK" change="1185438865" id="I0552">
@ -20206,7 +20260,7 @@
<parentin hlink="_HQ8KQCT2UX4S9I0E26"/>
<citationref hlink="_c140d24b31f74169170"/>
</person>
<person handle="_3RFKQCNKMX9HVLNSLW" change="1185438865" id="I1116">
<person handle="_3RFKQCNKMX9HVLNSLW" change="1431174900" id="I1116">
<gender>F</gender>
<name type="Birth Name">
<surname>Garner</surname>
@ -20450,12 +20504,16 @@
<parentin hlink="_HCDKQCO86IZDWE7E7C"/>
<citationref hlink="_c140d24bbb52d0cb605"/>
</person>
<person handle="_46WJQCIOLQ0KOX2XCC" change="1185438865" id="I0107">
<person handle="_46WJQCIOLQ0KOX2XCC" change="1407352752" id="I0107">
<gender>F</gender>
<name type="Birth Name">
<first>Phoebe Emily</first>
<surname>Zieliński</surname>
</name>
<name alt="1" type="Married Name">
<first>Phoebe Emily</first>
<surname>Garner</surname>
</name>
<eventref hlink="_a5af0eb76bf19f7e28b" role="Primary"/>
<eventref hlink="_a5af0eb76ce7f2b0e95" role="Primary"/>
<eventref hlink="_a5af0eb76dc65a4d2a8" role="Primary"/>
@ -22046,7 +22104,7 @@
<parentin hlink="_JT4KQC83ZKPOLC0UEJ"/>
<citationref hlink="_c140d24fa2503a14583"/>
</person>
<person handle="_6TFKQCUTO94WB2NHN" change="1185438865" id="I1119">
<person handle="_6TFKQCUTO94WB2NHN" change="1431174900" id="I1119">
<gender>F</gender>
<name type="Birth Name">
<first>Zelpha Josephine</first>
@ -22637,6 +22695,7 @@
<surname>Abbott</surname>
</name>
<eventref hlink="_a5af0eb6abd74c3d7fb" role="Primary"/>
<eventref hlink="_a5af0eb6abd74c3d7fc" role="Primary"/>
<parentin hlink="_CI3KQCZZE11QOAP8G9"/>
<citationref hlink="_c140d250e5d1110c14d"/>
</person>
@ -23854,7 +23913,7 @@
<parentin hlink="_1RUJQCCL9MVRYLMTBO"/>
<citationref hlink="_c140d254dcc234394a3"/>
</person>
<person handle="_9QFKQC54ET79K2SD57" change="1185438865" id="I1115">
<person handle="_9QFKQC54ET79K2SD57" change="1431174900" id="I1115">
<gender>F</gender>
<name type="Birth Name">
<first>Mary M.</first>
@ -24541,7 +24600,7 @@
<parentin hlink="_4W1KQCYZD6N5M576RA"/>
<citationref hlink="_c140d2566d57b164cf5"/>
</person>
<person handle="_AWFKQCJELLUWDY2PD3" change="1284030919" id="I1123">
<person handle="_AWFKQCJELLUWDY2PD3" change="1431174900" id="I1123">
<gender>M</gender>
<name type="Birth Name">
<first>Robert F.</first>
@ -27123,7 +27182,7 @@
<parentin hlink="_0Q3KQCBZ4421A3L5B4"/>
<citationref hlink="_c140d25c5be3120050a"/>
</person>
<person handle="_EPFKQCETTDTEL3PYIR" change="1185438865" id="I1114">
<person handle="_EPFKQCETTDTEL3PYIR" change="1431174900" id="I1114">
<gender>F</gender>
<name type="Birth Name">
<first>Mary J.</first>
@ -28167,7 +28226,7 @@
<parentin hlink="_BWAKQCZLIWDX9ZEFED"/>
<citationref hlink="_c140d25eec45aabbd80"/>
</person>
<person handle="_GNUJQCL9MD64AM56OH" change="1328027440" id="I0044">
<person handle="_GNUJQCL9MD64AM56OH" change="1431174904" id="I0044">
<gender>M</gender>
<name type="Birth Name">
<first>Lewis Anderson</first>
@ -28395,7 +28454,7 @@
<childof hlink="_05XJQC935HU62H3KL4"/>
<citationref hlink="_c140d25f5c448b251ca"/>
</person>
<person handle="_GYFKQCPH8Q0JDN94GR" change="1185438865" id="I1126">
<person handle="_GYFKQCPH8Q0JDN94GR" change="1431174900" id="I1126">
<gender>F</gender>
<name type="Birth Name">
<first>Anetta</first>
@ -32046,7 +32105,7 @@
<parentin hlink="_ZA6KQC27P0I8E2JZUC"/>
<citationref hlink="_c140d2677c105a1b132"/>
</person>
<person handle="_MUFKQCMXUJ07MCDUNI" change="1185438865" id="I1121">
<person handle="_MUFKQCMXUJ07MCDUNI" change="1431174900" id="I1121">
<gender>F</gender>
<name type="Birth Name">
<first>Iola Elizabeth Betty</first>
@ -33220,7 +33279,7 @@
<parentin hlink="_9SEKQCAAWRUCIO7A0M"/>
<citationref hlink="_c140d269f4c7c13bf87"/>
</person>
<person handle="_ORFKQC4KLWEGTGR19L" change="1185438865" id="I1117">
<person handle="_ORFKQC4KLWEGTGR19L" change="1431174900" id="I1117">
<gender>F</gender>
<name type="Birth Name">
<first>Rebecca Catharine</first>
@ -33904,7 +33963,7 @@
<parentin hlink="_IXDKQCOYLEMDKWJZPC"/>
<citationref hlink="_c140d26b98d33ec7f15"/>
</person>
<person handle="_PXFKQCXEHJX3W1Q1IV" change="1185438865" id="I1125">
<person handle="_PXFKQCXEHJX3W1Q1IV" change="1431174900" id="I1125">
<gender>F</gender>
<name type="Birth Name">
<first>Emma A.</first>
@ -35636,7 +35695,7 @@
<parentin hlink="_FP4KQCQQX8O84KK3IF"/>
<citationref hlink="_c140d27142a05b2d019"/>
</person>
<person handle="_SOFKQCBYAO18OWC0CS" change="1185438865" id="I1113">
<person handle="_SOFKQCBYAO18OWC0CS" change="1431174900" id="I1113">
<gender>F</gender>
<name type="Birth Name">
<first>Phebe</first>
@ -37009,7 +37068,7 @@
<parentin hlink="_7ZWJQC8ZR4WJZE09RW"/>
<citationref hlink="_c140d276c1802ec5ac3"/>
</person>
<person handle="_UZFKQCIHVT44DC9KGH" change="1185438865" id="I1128">
<person handle="_UZFKQCIHVT44DC9KGH" change="1431174900" id="I1128">
<gender>F</gender>
<name type="Birth Name">
<first>Antoinette</first>
@ -40063,6 +40122,117 @@
<parentin hlink="_F0WKQCXB6Y8RVGHIC7"/>
<citationref hlink="_c140d280aa7494978c4"/>
</person>
<person handle="_cc8205d872f532ab14e" change="1402522742" id="I2110">
<gender>M</gender>
<name type="Birth Name">
<first>محمد</first>
<surname></surname>
</name>
<eventref hlink="_cc8205d81e2695b08bc" role="Primary"/>
<eventref hlink="_cc8205d86c903db892d" role="Primary"/>
<eventref hlink="_cc8205d86fc4e9706a5" role="Primary"/>
<parentin hlink="_cc8205d874433c12fd8"/>
<parentin hlink="_cc8205d87492b90b437"/>
</person>
<person handle="_cc8205d87831c772e87" change="1402522479" id="I2105">
<gender>F</gender>
<name type="Birth Name">
<first>عائشة</first>
<surname></surname>
</name>
<eventref hlink="_cc8205d86fc4e9706a5" role="Primary"/>
<parentin hlink="_cc8205d874433c12fd8"/>
</person>
<person handle="_cc8205d87c20350420b" change="1402522742" id="I2106">
<gender>F</gender>
<name type="Birth Name">
<first>خديجة</first>
<surname></surname>
</name>
<parentin hlink="_cc8205d87492b90b437"/>
</person>
<person handle="_cc8205d87fd529000ff" change="1402522742" id="I2107">
<gender>M</gender>
<name type="Birth Name">
<first>القاسم</first>
<surname></surname>
</name>
<childof hlink="_cc8205d87492b90b437"/>
</person>
<person handle="_cc8205d883763f02abd" change="1402522742" id="I2108">
<gender>M</gender>
<name type="Birth Name">
<first>عبد الله</first>
<surname></surname>
<nick>الطيب</nick>
</name>
<childof hlink="_cc8205d87492b90b437"/>
</person>
<person handle="_cc8205d887376aacba2" change="1402522742" id="I2109">
<gender>F</gender>
<name type="Birth Name">
<first>أم كلثوم</first>
<surname></surname>
</name>
<childof hlink="_cc8205d87492b90b437"/>
</person>
<person handle="_cc82060504445ab6deb" change="1403159391" id="I2111">
<gender>M</gender>
<name type="Birth Name">
<first>أحمد</first>
<surname></surname>
</name>
<eventref hlink="_cc820604e846de3c210" role="Primary"/>
<eventref hlink="_cc820604ef05cb67907" role="Primary"/>
<eventref hlink="_cc820604f313cc072c6" role="Primary"/>
<parentin hlink="_cc82060505948b9e57f"/>
<parentin hlink="_cc82060505f631267b1"/>
</person>
<person handle="_cc8206050980ea622d0" change="1403159106" id="I2112">
<gender>F</gender>
<name type="Birth Name">
<first>العباسة</first>
<surname>الفضل</surname>
</name>
<eventref hlink="_cc820604ef05cb67907" role="Primary"/>
<eventref hlink="_cc820604f6364f627bf" role="Primary"/>
<parentin hlink="_cc82060505948b9e57f"/>
</person>
<person handle="_cc8206050e541f79f92" change="1403159124" id="I2113">
<gender>F</gender>
<name type="Birth Name">
<first>ريحانة</first>
<surname></surname>
</name>
<parentin hlink="_cc82060505f631267b1"/>
</person>
<person handle="_cc82060512042f67e2c" change="1403159743" id="I2114">
<gender>M</gender>
<name type="Birth Name">
<first>عبد الله</first>
<surname></surname>
</name>
<eventref hlink="_cc820604f967aa1d9a5" role="Primary"/>
<eventref hlink="_cc820604fcf3d08a81a" role="Primary"/>
<childof hlink="_cc82060505f631267b1"/>
</person>
<person handle="_cc82060516c6c141500" change="1403160273" id="I2115">
<gender>M</gender>
<name type="Birth Name">
<first>صالح</first>
<surname></surname>
</name>
<eventref hlink="_cc82060500222649d98" role="Primary"/>
<childof hlink="_cc82060505948b9e57f"/>
</person>
<person handle="_cccbffffd3e69819cd8" change="1407353883" id="I2116">
<gender>M</gender>
<name type="Birth Name">
<first>Foon</first>
<surname>บุญ</surname>
</name>
<eventref hlink="_cccc047c40841a5993c" role="Primary"/>
</person>
</people>
<families>
<family handle="_03GKQCH37C1SL9C5B3" change="1185438865" id="F0372">
@ -41890,12 +42060,12 @@
<childref hlink="_GH0KQCGPLF5J17PELU"/>
<citationref hlink="_c140d286d0e2f46fb29"/>
</family>
<family handle="_8OUJQCUVZ0XML7BQLF" change="1185438865" id="F0018">
<family handle="_8OUJQCUVZ0XML7BQLF" change="1431174900" id="F0018">
<rel type="Married"/>
<father hlink="_35WJQC1B7T7NPV8OLV"/>
<mother hlink="_46WJQCIOLQ0KOX2XCC"/>
<eventref hlink="_a5af0ed602318310d6d" role="Family"/>
<childref hlink="_GNUJQCL9MD64AM56OH"/>
<childref hlink="_GNUJQCL9MD64AM56OH" mrel="Custom relationship to mother" frel="Custom relationship to father"/>
<childref hlink="_SOFKQCBYAO18OWC0CS"/>
<childref hlink="_EPFKQCETTDTEL3PYIR"/>
<childref hlink="_9QFKQC54ET79K2SD57"/>
@ -46434,6 +46604,31 @@
<childref hlink="_F2TKQCM1TFWSLBO1X4"/>
<citationref hlink="_c140d2916aa5054a8af"/>
</family>
<family handle="_cc8205d874433c12fd8" change="1402522479" id="F0743">
<rel type="Married"/>
<father hlink="_cc8205d872f532ab14e"/>
<mother hlink="_cc8205d87831c772e87"/>
</family>
<family handle="_cc8205d87492b90b437" change="1402522742" id="F0744">
<rel type="Married"/>
<father hlink="_cc8205d872f532ab14e"/>
<mother hlink="_cc8205d87c20350420b"/>
<childref hlink="_cc8205d87fd529000ff"/>
<childref hlink="_cc8205d883763f02abd"/>
<childref hlink="_cc8205d887376aacba2"/>
</family>
<family handle="_cc82060505948b9e57f" change="1403158874" id="F0745">
<rel type="Married"/>
<father hlink="_cc82060504445ab6deb"/>
<mother hlink="_cc8206050980ea622d0"/>
<childref hlink="_cc82060516c6c141500"/>
</family>
<family handle="_cc82060505f631267b1" change="1403159161" id="F0746">
<rel type="Married"/>
<father hlink="_cc82060504445ab6deb"/>
<mother hlink="_cc8206050e541f79f92"/>
<childref hlink="_cc82060512042f67e2c"/>
</family>
</families>
<citations>
<citation handle="_c140d2362f25a92643b" change="1328025930" id="C0000">
@ -58386,7 +58581,10 @@
<placeref hlink="_c965872634337a6478283d68bc4"/>
</placeobj>
<placeobj handle="_4ECKQCWCLO5YIHXEXC" change="1234373374" id="P0957" name="USA" type="Country">
<ptitle>Puerto Rico,</ptitle>
<ptitle>USA</ptitle>
</placeobj>
<placeobj handle="_4ECKQCWCLO5YIHXEXZ" change="1234373374" id="P1704" name="Puerto Rico" type="Country">
<ptitle>Puerto Rico</ptitle>
</placeobj>
<placeobj handle="_4FUJQCDFTJJJNKKJMH" change="1234390522" id="P0958" name="Boone" type="City">
<ptitle>Boone, IA</ptitle>
@ -63449,30 +63647,31 @@
</places>
<objects>
<object handle="_238CGQ939HG18SS5MG" change="1328027353" id="O0010">
<file src="1897_expeditionsmannschaft_rio_a.jpg" mime="image/jpeg" description="1897_expeditionsmannschaft_rio_a"/>
<file src="1897_expeditionsmannschaft_rio_a.jpg" mime="image/jpeg" checksum="352c7ae13b8b642471ecae6fa78ce206" description="1897_expeditionsmannschaft_rio_a"/>
<dateval val="1897"/>
<tagref hlink="_bb80c2b235b0a1b3f49"/>
</object>
<object handle="_78V2GQX2FKNSYQ3OHE" change="1185438865" id="O0009">
<file src="Gunnlaugur_Larusson_-_Yawn.jpg" mime="image/jpeg" description="Yawn"/>
<file src="Gunnlaugur_Larusson_-_Yawn.jpg" mime="image/jpeg" checksum="6bae0888ffdbad79b2735a5ac17450aa" description="Yawn"/>
</object>
<object handle="_B1AUFQV7H8R9NR4SZM" change="1328027158" id="O0008">
<file src="654px-Aksel_Andersson.jpg" mime="image/jpeg" description="654px-Aksel_Andersson"/>
<file src="654px-Aksel_Andersson.jpg" mime="image/jpeg" checksum="542c7ed6f97c6af16907339439abffdf" description="654px-Aksel_Andersson"/>
<attribute type="Description" value="This seems to be a photo of a relative">
<citationref hlink="_c140dde678c5c4f4537"/>
</attribute>
<citationref hlink="_c140dd5edc11679f39b"/>
</object>
<object handle="_F0QIGQFT275JFJ75E8" change="1328026759" id="O0006">
<file src="Alimehemet.jpg" mime="image/jpeg" description="Alimehemet"/>
<file src="Alimehemet.jpg" mime="image/jpeg" checksum="a8df70b9c84208806e8e2cb4fb0fe0dd" description="Alimehemet"/>
</object>
<object handle="_F8JYGQFL2PKLSYH79X" change="1185438865" id="O0007">
<file src="E_W_Dahlgren.jpg" mime="image/jpeg" description="E_W_Dahlgren"/>
<file src="E_W_Dahlgren.jpg" mime="image/jpeg" checksum="918fd7fabe4878a687bf25a7c44749c5" description="E_W_Dahlgren"/>
</object>
<object handle="_Y3ARGQWE088EQRTTDH" change="1185438865" id="O0011">
<file src="AntoineClaudet.png" mime="image/png" description="AntoineClaudet"/>
<file src="AntoineClaudet.png" mime="image/png" checksum="7a0eced23b6e370c113b3ca628f45388" description="AntoineClaudet"/>
</object>
<object handle="_b39fe1cfc1305ac4a21" change="1328027069" id="O0000">
<file src="scanned_microfilm.png" mime="image/png" description="1855-06-25 scanned birth record"/>
<file src="scanned_microfilm.png" mime="image/png" checksum="812d016b1404073af69d11891ec2f8a1" description="1855-06-25 scanned birth record"/>
</object>
</objects>
<repositories>
@ -63729,6 +63928,94 @@ page 26 Repository:Address</text>
<range start="0" end="705"/>
</style>
</note>
<note handle="_d0436bba4ec328d3b631259a4ee" change="1431184305" id="_header1" type="General">
<text>Title for the example pages</text>
<style name="fontcolor" value="#ef2929">
<range start="0" end="27"/>
</style>
<style name="underline">
<range start="0" end="27"/>
</style>
<style name="fontface" value="Serif">
<range start="0" end="27"/>
</style>
<style name="bold">
<range start="0" end="27"/>
</style>
<style name="fontsize" value="8">
<range start="0" end="27"/>
</style>
</note>
<note handle="_d0436bcc69d6bba278bff5bc7db" change="1431184300" id="_footer1" type="General">
<text>Footer: exported by __GRAMPS_HOMEPAGE__ on __EXPORT_DATE__</text>
</note>
<note handle="_d0436be64ac277b615b79b34e72" change="1431211661" id="_custom1" type="General">
<text>Export date: __EXPORT_DATE__
GRAMPS homepage: __GRAMPS_HOMEPAGE__
GRAMPS version: __GRAMPS_VERSION__
Number of families: __NB_FAMILIES__
Number of persons: __NB_INDIVIDUALS__
Number of media objects: __NB_MEDIA__
Number of sources: __NB_SOURCES__
Number of repositories: __NB_REPOSITORIES__
Number of places: __NB_PLACES__
Search form:
__SEARCH_FORM__
Test link person: Garner von Zieliński, Lewis Anderson Sr
Test link family: Family of Warner, Allen Carl and Garner, Rita Marie
Test link source: World of the Wierd
Test link media: 1897_expeditionsmannschaft_rio_a
Test link place: Warren-Farmington Hills-Troy, MI
Test internet link: blog.codinghorror.com
Test relative path link: relative file path to &quot;archive.zip&quot;
Test relative path link: relative file path to &quot;archive.tgz&quot;
Thumbnail for &quot;1897_expeditionsmannschaft_rio_a&quot;:
__THUMB_O0010__
Image &quot;AntoineClaudet&quot;:
__MEDIA_O0011__
Thumbnail for &quot;1897_expeditionsmannschaft_rio_a&quot; with link:
__THUMB_O0010__
Image &quot;AntoineClaudet&quot; with link:
__MEDIA_O0011__
Wrong media ID:
__MEDIA_wrong id__</text>
<style name="link" value="relative://relative.archive.zip">
<range start="663" end="686"/>
</style>
<style name="link" value="gramps://Media/handle/238CGQ939HG18SS5MG">
<range start="952" end="967"/>
</style>
<style name="link" value="gramps://Media/handle/238CGQ939HG18SS5MG">
<range start="520" end="535"/>
</style>
<style name="link" value="gramps://Family/handle/48TJQCGNNIR5SJRCAK">
<range start="413" end="429"/>
</style>
<style name="link" value="gramps://Person/handle/GNUJQCL9MD64AM56OH">
<range start="355" end="371"/>
</style>
<style name="link" value="http://blog.codinghorror.com/">
<range start="621" end="639"/>
</style>
<style name="link" value="gramps://Source/handle/VUBKMQTA2XZG1V6QP8">
<range start="483" end="499"/>
</style>
<style name="link" value="gramps://Place/handle/3WTJQCB9F2MX9W98VP">
<range start="570" end="585"/>
</style>
<style name="link" value="gramps://Media/handle/Y3ARGQWE088EQRTTDH">
<range start="1002" end="1017"/>
</style>
<style name="link" value="relative://relative.archive.tgz">
<range start="724" end="747"/>
</style>
</note>
</notes>
<bookmarks>
<bookmark target="person" hlink="_AWFKQCJELLUWDY2PD3"/>

View File

@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# gen/__init__.py

View File

@ -14,7 +14,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -22,7 +22,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
@ -395,7 +395,7 @@ class ArgHandler(object):
:param: climan: the manager of a CLI session
:type: :class:`.CLIManager` object
"""
# Handle the "-l" List Family Trees option.
if self.list:
print(_('List of known Family Trees in your database path\n'))
@ -406,6 +406,7 @@ class ArgHandler(object):
% {'full_DB_path' : dirname, 'f_t_name' : name})
sys.exit(0)
# Handle the "-L" List Family Trees in detail option.
if self.list_more:
print(_('Gramps Family Trees:'))
summary_list = self.dbman.family_tree_summary()
@ -414,26 +415,30 @@ class ArgHandler(object):
print(_("Family Tree \"%s\":") % summary[_("Family Tree")])
for item in sorted(summary):
if item != "Family Tree":
print(" %s: %s" % (item, summary[item]))
# translators: needed for French, ignore otherwise
print(_(" %s: %s") % (item, summary[item]))
sys.exit(0)
# Handle the "-t" List Family Trees, tab delimited option.
if self.list_table:
print(_('Gramps Family Trees:'))
summary_list = self.dbman.family_tree_summary()
print(_("Family Tree"), end="")
if not summary_list:
sys.exit(0)
# We have to construct the line elements together, to avoid
# insertion of blank spaces when print on the same line is used
line_list = [_("Family Tree")]
for key in sorted(summary_list[0]):
if key != "Family Tree":
print("\t ", end="")
print(key, end="")
print()
if key != _("Family Tree"):
line_list += [key]
print("\t".join(line_list))
for summary in sorted(summary_list,
key=lambda sum: sum[_("Family Tree")].lower()):
print('"%s"' % summary[_("Family Tree")], end="")
line_list = [('"%s"' % summary[_("Family Tree")])]
for item in sorted(summary):
if item != _("Family Tree"):
print("\t ", end="")
print('"%s"' % summary[item], end="")
print()
line_list += [('"%s"' % summary[item])]
print("\t".join(line_list))
sys.exit(0)
self.__open_action()

View File

@ -22,7 +22,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -17,7 +17,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
@ -497,6 +497,8 @@ def time_val(dirpath):
if tval_mod > tval:
tval = tval_mod
last = time.strftime('%x %X', time.localtime(tval))
if sys.version_info[0] < 3:
last = last.decode(glocale.encoding)
else:
tval = 0
last = _("Never")
@ -517,6 +519,6 @@ def find_locker_name(dirpath):
# feature request 2356: avoid genitive form
last = _("Locked by %s") % username
ifile.close()
except (OSError, IOError):
except (OSError, IOError, UnicodeDecodeError):
last = _("Unknown")
return last

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
@ -249,6 +249,13 @@ class CLIManager(object):
_("Family Tree does not exist, as it has been deleted."))
return
if os.path.isfile(os.path.join(filename, "lock")):
self._errordialog(
_("The database is locked."),
_("Use the --force-unlock option if you are sure "
"that the database is not in use."))
return
if self.db_loader.read_file(filename):
# Attempt to figure out the database title
path = os.path.join(filename, "name.txt")
@ -290,7 +297,10 @@ class CLIManager(object):
# apply preferred researcher if loaded file has none
res = self.dbstate.db.get_researcher()
owner = get_researcher()
if res.get_name() == "" and owner.get_name() != "":
# If the DB Owner Info is empty and
# [default] Researcher is not empty and
# database is empty, then copy default researcher to DB owner
if res.is_empty() and not owner.is_empty() and self.dbstate.db.is_empty():
self.dbstate.db.set_researcher(owner)
name_displayer.set_name_format(self.dbstate.db.name_formats)

View File

@ -20,7 +20,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
#
# cli.plug.__init__

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
""" Unittest for argparser.py """

View File

@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
""" CLI tests for gramps """

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
""" Unittest for user.py """

View File

@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
@ -117,7 +117,7 @@ class User(user.User):
"""
self._fileout.write("\r100%\n")
def prompt(self, title, message, accept_label, reject_label):
def prompt(self, title, message, accept_label, reject_label, parent=None):
"""
Prompt the user with a message to select an alternative.

View File

@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# gen/__init__.py

View File

@ -19,7 +19,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
@ -150,7 +150,7 @@ register('behavior.surname-guessing', 0)
register('behavior.use-tips', False)
register('behavior.welcome', 100)
register('behavior.web-search-url', 'http://google.com/#&q=%(text)s')
register('behavior.addons-url', "http://svn.code.sf.net/p/gramps-addons/code/trunk/")
register('behavior.addons-url', "http://svn.code.sf.net/p/gramps-addons/code/branches/gramps41/")
register('export.proxy-order', [
["privacy", 0],
@ -169,6 +169,7 @@ register('geography.zoom', 0)
register('geography.zoom_when_center', 12)
register('geography.show_cross', False)
register('geography.path', "")
register('geography.use-keypad', True)
register('htmlview.start-url', "http://gramps-project.org")
register('htmlview.url-handler', False)
@ -295,6 +296,7 @@ register('preferences.hide-ep-msg', False)
register('preferences.invalid-date-format', "<b>%s</b>")
register('preferences.iprefix', 'I%04d')
register('preferences.name-format', 1)
register('preferences.place-format', 0)
register('preferences.patronimic-surname', False)
register('preferences.no-given-text', "[%s]" % _("Missing Given Name"))
register('preferences.no-record-text', "[%s]" % _("Missing Record"))

View File

@ -18,7 +18,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
@ -49,7 +49,7 @@ from .constfunc import get_env_var, conv_to_unicode
#
#-------------------------------------------------------------------------
PROGRAM_NAME = "Gramps"
from ..version import VERSION, VERSION_TUPLE, major_version
from gramps.version import VERSION, VERSION_TUPLE, major_version
#-------------------------------------------------------------------------
#
# Standard GRAMPS Websites
@ -135,6 +135,7 @@ git_revision = get_git_revision(ROOT_DIR)
if sys.platform == 'win32' and git_revision == "":
git_revision = get_git_revision(os.path.split(ROOT_DIR)[1])
VERSION += git_revision
#VERSION += "-1"
#
# Glade files
@ -191,7 +192,7 @@ GTK_GETTEXT_DOMAIN = 'gtk30'
#
#-------------------------------------------------------------------------
COPYRIGHT_MSG = "© 2001-2006 Donald N. Allingham\n" \
"© 2007-2014 The Gramps Developers"
"© 2007-2015 The Gramps Developers"
COMMENTS = _("Gramps\n (Genealogical Research and Analysis "
"Management Programming System)\n"
"is a personal genealogy program.")
@ -214,9 +215,6 @@ DOCUMENTERS = [
'Alexander Roitman',
]
TRANSLATORS = _('TRANSLATORS: Translate this to your '
'name in your native language')
#-------------------------------------------------------------------------
#
# Constants

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Catalan Version, 2008

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
@ -163,8 +163,10 @@ class DateParserCZ(DateParser):
}
quality_to_int = {
'přibližně' : Date.QUAL_ESTIMATED,
'odhadované' : Date.QUAL_ESTIMATED,
'odh.' : Date.QUAL_ESTIMATED,
'vypočteno' : Date.QUAL_CALCULATED,
'vypočtené' : Date.QUAL_CALCULATED,
'vyp.' : Date.QUAL_CALCULATED,
}
@ -219,7 +221,9 @@ class DateDisplayCZ(DateDisplay):
# this must agree with DateDisplayEn's "formats" definition
# (since no locale-specific _display_gregorian exists, here)
def display(self, date):
display = DateDisplay.display_formatted
def orig_display(self, date):
"""
Return a text string representing the date.
"""
@ -235,14 +239,14 @@ class DateDisplayCZ(DateDisplay):
return date.get_text()
elif start == Date.EMPTY:
return ""
elif mod == Date.MOD_NONE:
date_decl_string = self.display_cal[cal](start)
date_decl_string = date_decl_string.replace("den ", "dna ")
date_decl_string = date_decl_string.replace("or ", "ora ")
date_decl_string = date_decl_string.replace("en ", "na ")
date_decl_string = date_decl_string.replace("ad ", "adu ")
date_decl_string = date_decl_string.replace("ec ", "ce ")
return date_decl_string
# elif mod == Date.MOD_NONE:
# date_decl_string = self.display_cal[cal](start)
# date_decl_string = date_decl_string.replace("den ", "dna ")
# date_decl_string = date_decl_string.replace("or ", "ora ")
# date_decl_string = date_decl_string.replace("en ", "na ")
# date_decl_string = date_decl_string.replace("ad ", "adu ")
# date_decl_string = date_decl_string.replace("ec ", "ce ")
# return date_decl_string
elif mod == Date.MOD_SPAN:
dat1 = self.display_cal[cal](start)
dat2 = self.display_cal[cal](date.get_stop_date())

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -17,7 +17,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -18,7 +18,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
#-------------------------------------------------------------------------
@ -77,7 +77,7 @@ class DateParserFR(DateParser):
'vers' : Date.MOD_ABOUT,
'~' : Date.MOD_ABOUT,
}
quality_to_int = {
'estimée': Date.QUAL_ESTIMATED,
'est.' : Date.QUAL_ESTIMATED,
@ -96,7 +96,7 @@ class DateParserFR(DateParser):
def init_strings(self):
"""
This method compiles regular expression strings for matching dates.
Most of the re's in most languages can stay as is. span and range
most likely will need to change. Whatever change is done, this method
may be called first as DateParser.init_strings(self) so that the
@ -105,13 +105,13 @@ class DateParserFR(DateParser):
override stuff from this method. See DateParserRU() as an example.
"""
DateParser.init_strings(self)
DateParser.calendar_to_int.update({
'révolutionnaire' : Date.CAL_FRENCH,
'r' : Date.CAL_FRENCH,
'perse' : Date.CAL_PERSIAN,
})
DateParser.month_to_int.update({
"januaris" : 1,
"januarii" : 1,
@ -155,7 +155,7 @@ class DateParserFR(DateParser):
"ernting" : 8,
"septembris" : 9,
"7bre" : 9,
"7bris" : 9,
"7bris" : 9,
"september" : 9,
"scheidling" : 9,
"october" : 10,
@ -163,7 +163,7 @@ class DateParserFR(DateParser):
"8bre" : 10,
"8bris" : 10,
"gilbhard" : 10,
"november" : 11,
"november" : 11,
"novembris" : 11,
"9bre" : 11,
"9bris" : 11,
@ -177,15 +177,15 @@ class DateParserFR(DateParser):
"xbris" : 12,
"julmond" : 12,
"christmond" : 12,
})
})
# This self._numeric is different from the base
# avoid bug gregorian / french calendar conversion (+/-10 days)
self._numeric = re.compile("((\d+)[/\. ])?\s*((\d+)[/\.])?\s*(\d+)\s*$")
self._span = re.compile("(de)\s+(?P<start>.+)\s+(à)\s+(?P<stop>.+)",
self._numeric = re.compile(r"((\d+)[/\. ])?\s*((\d+)[/\.])?\s*(\d+)\s*$")
self._span = re.compile(r"(de)\s+(?P<start>.+)\s+(à)\s+(?P<stop>.+)",
re.IGNORECASE)
self._range = re.compile("(entre|ent\.|ent)\s+(?P<start>.+)\s+(et)\s+(?P<stop>.+)",
self._range = re.compile(r"(entre|ent\.|ent)\s+(?P<start>.+)\s+(et)\s+(?P<stop>.+)",
re.IGNORECASE)
# This self._text are different from the base
@ -193,32 +193,32 @@ class DateParserFR(DateParser):
#gregorian and julian
self._text2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
self._text2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
self._mon_str, re.IGNORECASE)
#hebrew
self._jtext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
self._jtext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
self._jmon_str, re.IGNORECASE)
#french
self._ftext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
self._ftext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
self._fmon_str, re.IGNORECASE)
#persian
self._ptext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
self._ptext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
self._pmon_str, re.IGNORECASE)
#islamic
self._itext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
self._itext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
self._imon_str, re.IGNORECASE)
#swedish
self._stext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
self._stext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
self._smon_str, re.IGNORECASE)
#-------------------------------------------------------------------------
@ -228,7 +228,7 @@ class DateParserFR(DateParser):
#-------------------------------------------------------------------------
class DateDisplayFR(DateDisplay):
"""
French language date display class.
French language date display class.
"""
_bce_str = "%s avant le calendrier"
@ -239,7 +239,7 @@ class DateDisplayFR(DateDisplay):
_locale_tformat = _locale_tformat.replace('%d', "J")
_locale_tformat = _locale_tformat.replace('%m', "M")
_locale_tformat = _locale_tformat.replace('%Y', "A")
formats = ("AAAA-MM-JJ (ISO)", # 0
"Défaut système (" + _locale_tformat + ")", # 1
"Jour Mois Année", # 2
@ -247,8 +247,8 @@ class DateDisplayFR(DateDisplay):
"Jour. Mois Année", # 4
"Jour. MOI Année", # 5
"Mois Jour, Année", # 6
"MOI Jour, Année", # 7
)
"MOI Jour, Année",) # 7
# this definition must agree with its "_display_gregorian" method
def _display_gregorian(self, date_val, **kwargs):
@ -291,7 +291,7 @@ class DateDisplayFR(DateDisplay):
value = "%s %s" % (self.long_months[date_val[1]], year)
else:
value = "%d %s %s" % (date_val[0],
value = "%d %s %s" % (date_val[0],
self.long_months[date_val[1]], year)
elif self.format == 3:
@ -304,7 +304,7 @@ class DateDisplayFR(DateDisplay):
value = "%s %s" % (self.short_months[date_val[1]], year)
else:
value = "%d %s %s" % (date_val[0],
value = "%d %s %s" % (date_val[0],
self.short_months[date_val[1]], year)
elif self.format == 4:
@ -318,10 +318,10 @@ class DateDisplayFR(DateDisplay):
else:
# base_display :
# value = "%d %s %s" % (date_val[0],
# value = "%d %s %s" % (date_val[0],
# self.long_months[date_val[1]], year)
value = "%d. %s %s" % (date_val[0],
value = "%d. %s %s" % (date_val[0],
self.long_months[date_val[1]],
year)
elif self.format == 5:
@ -336,11 +336,11 @@ class DateDisplayFR(DateDisplay):
else:
# base_display :
# value = "%d %s %s" % (date_val[0],
# value = "%d %s %s" % (date_val[0],
# self.short_months[date_val[1]], year)
value = "%d. %s %s" % (date_val[0],
self.short_months[date_val[1]], year)
value = "%d. %s %s" % (date_val[0],
self.short_months[date_val[1]], year)
elif self.format == 6:
# month_name day, year
@ -367,12 +367,12 @@ class DateDisplayFR(DateDisplay):
date_val[0], year)
else:
return self.display_iso(date_val)
if date_val[2] < 0:
return self._bce_str % value
else:
return value
display = DateDisplay.display_formatted
#-------------------------------------------------------------------------
@ -382,4 +382,4 @@ class DateDisplayFR(DateDisplay):
#-------------------------------------------------------------------------
register_datehandler(('fr_FR', 'fr', 'french', 'French', 'fr_CA',
'fr_BE', 'fr_CH'), DateParserFR, DateDisplayFR)
'fr_BE', 'fr_CH'), DateParserFR, DateDisplayFR)

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# $Id: _date_hr.py 22672 2013-07-13 18:01:08Z paul-franklin $
#
@ -75,20 +75,18 @@ 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,
#~ })
_span_1 = ['od']
_span_2 = ['do']
_range_1 = ['između']
_range_2 = ['i']
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
# match 'Day. MONTH year.' format with or without dots
self._text2 = re.compile('(\d+)?\.?\s*?%s\.?\s*((\d+)(/\d+)?)?\s*\.?$'
% self._mon_str, re.IGNORECASE)
# match Day.Month.Year.
self._numeric = re.compile(
"((\d+)[/\. ])?\s*((\d+)[/\.])?\s*(\d+)\.?$")
self._span = re.compile(
"(od)\s+(?P<start>.+)\s+(do)\s+(?P<stop>.+)",
re.IGNORECASE)
self._jtext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'\
% self._jmon_str, re.IGNORECASE)
#-------------------------------------------------------------------------
#
@ -104,6 +102,39 @@ class DateDisplayHR(DateDisplay):
_bce_str = "%s p.n.e."
display = DateDisplay.display_formatted
def dd_dformat01(self, date_val):
"""
numerical
"""
if date_val[3]:
return self.display_iso(date_val)
else:
if date_val[0] == date_val[1] == 0:
return str(date_val[2]) + '.'
else:
value = self._tformat.replace('%m', str(date_val[1]))
value = value.replace('%d', str(date_val[0]))
value = value.replace('%Y', str(abs(date_val[2])))
return value
def dd_dformat04(self, date_val, inflect, long_months):
"""
day month_name year
"""
year = self._slash_year(date_val[2], date_val[3])
if date_val[0] == 0:
if date_val[1] == 0:
return year + '.'
else:
return self.format_long_month_year(date_val[1], year,
inflect, long_months)
else:
return "{day:d}. {long_month.f[G]} {year}.".format(
day = date_val[0],
long_month = long_months[date_val[1]],
year = year)
#-------------------------------------------------------------------------
#

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Italian version, 2009 (derived from the catalan version)

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Written by Benny Malengier

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Polish version 2007 by Piotr Czubaszek

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Portuguese version translated by Duarte Loreto <happyguy_pt@hotmail.com>, 2007.
# Based on the Spanish file.

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
@ -119,6 +119,23 @@ class DateDisplayRU(DateDisplay):
display = DateDisplay.display_formatted
def dd_dformat04(self, date_val, inflect, long_months):
"""
day month_name year -- for Russian locale
"""
year = self._slash_year(date_val[2], date_val[3])
if date_val[0] == 0:
if date_val[1] == 0:
return year
else:
return self.format_long_month_year(date_val[1], year,
inflect, long_months)
else:
return "{day:d} {long_month.f[Р]} {year}".format(
day = date_val[0],
long_month = long_months[date_val[1]],
year = year)
#-------------------------------------------------------------------------
#
# Register classes

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
@ -59,7 +59,7 @@ class DateParserSK(DateParser):
calendar_to_int = {
'gregoriánsky' : Date.CAL_GREGORIAN,
'g' : Date.CAL_GREGORIAN,
'juliánský' : Date.CAL_JULIAN,
'juliánsky' : Date.CAL_JULIAN,
'j' : Date.CAL_JULIAN,
'hebrejský' : Date.CAL_HEBREW,
'h' : Date.CAL_HEBREW,
@ -69,7 +69,7 @@ class DateParserSK(DateParser):
'r' : Date.CAL_FRENCH,
'perzský' : Date.CAL_PERSIAN,
'p' : Date.CAL_PERSIAN,
'swedish' : Date.CAL_SWEDISH,
'švédsky' : Date.CAL_SWEDISH,
's' : Date.CAL_SWEDISH,
}
@ -110,9 +110,9 @@ class DateDisplaySK(DateDisplay):
"júl", "aug", "sep", "okt", "nov", "dec" )
calendar = (
"", "juliánský", "hebrejský",
"", "juliánsky", "hebrejský",
"republikánsky", "perzský", "islamský",
"swedish"
"švédsky"
)
_mod_str = ("", "pred ", "po ", "okolo ", "", "", "")

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Slovenian version 2010 by Bernard Banko, based on croatian one by Josip

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Serbian version by Vlada Perić <vlada.peric@gmail.com>, 2009.
@ -230,46 +230,15 @@ class DateParserSR(DateParser):
# Serbian display
#
#-------------------------------------------------------------------------
class DateDisplaySR_latin(DateDisplay):
class DateDisplaySR_Base(DateDisplay):
"""
Serbian (latin) date display class
Serbian (base) date display class
"""
long_months = ("",
"januara", "februara", "marta", "aprila",
"maja", "juna", "jula", "avgusta",
"septembra", "oktobra", "novembra", "decembra"
)
short_months = ("",
"jan", "feb", "mar", "apr", "maj", "jun",
"jul", "avg", "sep", "okt", "nov", "dec"
)
roman_months = (
"", "I", "II", "III", "IV", "V", "VI",
"VII", "VIII", "IX", "X", "XI", "XII"
)
calendar = (
"", "julijanski", "hebrejski",
"francuski republikanski", "persijski", "islamski",
"švedski"
)
_mod_str = ("", "pre ", "posle ", "oko ", "", "", "")
_qual_str = ("", "procenjeno ", "izračunato ")
_bce_str = "%s p.n.e."
formats = (
"GGGG-MM-DD (ISO-8601)",
"Numerički (DD.MM.GGGG.)",
"D. MMM GGGG.",
"D. Mesec GGGG.",
"D. Rb GGGG."
)
# this definition must agree with its "_display_gregorian" method
def _display_gregorian(self, date_val):
"""
@ -338,6 +307,10 @@ class DateDisplaySR_latin(DateDisplay):
newyear = date.get_new_year()
qual_str = self._qual_str[qual]
span1 = self._span1
span2 = self._span2
range1 = self._range1
range2 = self._range2
if mod == Date.MOD_TEXTONLY:
return date.get_text()
@ -347,13 +320,13 @@ class DateDisplaySR_latin(DateDisplay):
d_1 = self.display_cal[cal](start)
d_2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, 'od', d_1, 'do', d_2,
return "%s%s %s %s %s%s" % (qual_str, span1, d_1, span2, d_2,
scal)
elif mod == Date.MOD_RANGE:
d_1 = self.display_cal[cal](start)
d_2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, 'između', d_1, 'i', d_2,
return "%s%s %s %s %s%s" % (qual_str, range1, d_1, range2, d_2,
scal)
else:
text = self.display_cal[date.get_calendar()](start)
@ -361,11 +334,98 @@ class DateDisplaySR_latin(DateDisplay):
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text,
scal)
class DateDisplaySR_Latin(DateDisplaySR_Base):
"""
Serbian (Latin) date display class
"""
long_months = ("",
"januara", "februara", "marta", "aprila",
"maja", "juna", "jula", "avgusta",
"septembra", "oktobra", "novembra", "decembra"
)
short_months = ("",
"jan", "feb", "mar", "apr", "maj", "jun",
"jul", "avg", "sep", "okt", "nov", "dec"
)
calendar = (
"", "julijanski", "hebrejski",
"francuski republikanski", "persijski", "islamski",
"švedski"
)
_mod_str = ("", "pre ", "posle ", "oko ", "", "", "")
_qual_str = ("", "procenjeno ", "izračunato ")
_bce_str = "%s p.n.e."
formats = (
"GGGG-MM-DD (ISO-8601)",
"Numerički (DD.MM.GGGG.)",
"D. MMM GGGG.",
"D. Mesec GGGG.",
"D. Rb GGGG."
)
# this definition must agree with its "_display_gregorian" method
_span1 = 'od'
_span2 = 'do'
_range1 = 'između'
_range2 = 'i'
class DateDisplaySR_Cyrillic(DateDisplaySR_Base):
"""
Serbian (Cyrillic) date display class
"""
long_months = ("",
"Јануар", "Фебруар", "Март", "Април",
"Мај", "Јуне", "Јули", "Аугуст",
"Септембар", "Оцтобер", "Новембер", "Децембар"
)
short_months = ("",
"Јан", "Феб", "Мар", "Апр", "Мај", "Јун",
"Јул", "Авг", "Сеп", "Окт", "Нов", "Дец"
)
calendar = (
"", "Јулиан", "хебрејски",
"француски републиканац", "Персиан", "исламски",
"шведски"
)
_mod_str = ("", "пре ", "после ", "око ", "", "", "")
_qual_str = ("", "процењено ", "израчунато ")
_bce_str = "%s п.н.е."
formats = (
"ГГГГ-ММ-ДД (ISO-8601)",
"Нумеричка (ДД.ММ.ГГГГ.)",
"Д. МММ ГГГГ.",
"Д. Месец ГГГГ.",
"Д. Rb ГГГГ."
)
# this definition must agree with its "_display_gregorian" method
_span1 = 'из'
_span2 = 'до'
_range1 = 'између'
_range2 = 'и'
#-------------------------------------------------------------------------
#
# Register classes
#
#-------------------------------------------------------------------------
register_datehandler(('sr', 'serbian', 'srpski', 'sr_RS'),
DateParserSR, DateDisplaySR_latin)
register_datehandler(('srpski', 'Srpski',
'sr_Latn', 'sr_Latn_RS', 'sr_RS@latin'),
DateParserSR, DateDisplaySR_Latin)
register_datehandler(('sr', 'српски', 'Српски', 'serbian',
'sr_RS', 'sr_Cyrl', 'sr_Cyrl_RS'),
DateParserSR, DateDisplaySR_Cyrillic)

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -3,7 +3,7 @@
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2004-2006 Donald N. Allingham
# Copyright (C) 2013 Fedir Zinchuk <fedikw[at]gmail.com>
# Copyright (C) 2013-2014 Fedir Zinchuk <fedikw[at]gmail.com>
#
# 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
@ -17,7 +17,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
@ -42,7 +42,6 @@ from ..lib.date import Date
from ._dateparser import DateParser
from ._datedisplay import DateDisplay
from ._datehandler import register_datehandler
from . import _grampslocale
#-------------------------------------------------------------------------
#
@ -51,53 +50,10 @@ from . import _grampslocale
#-------------------------------------------------------------------------
class DateParserUK(DateParser):
"""
Convert a text string into a Date object. If the date cannot be
Convert a text string into a :class:`.Date` object. If the date cannot be
converted, the text string is assigned.
"""
month_to_int = DateParser.month_to_int
# the genitive
month_to_int["січня"] = 1
month_to_int["лютого"] = 2
month_to_int["березня"] = 3
month_to_int["квітня"] = 4
month_to_int["травня"] = 5
month_to_int["червня"] = 6
month_to_int["липня"] = 7
month_to_int["серпня"] = 8
month_to_int["вересня"] = 9
month_to_int["жовтня"] = 10
month_to_int["листопада"] = 11
month_to_int["грудня"] = 12
# some short variants of the months
month_to_int["січ."] = 1
month_to_int["січ"] = 1
month_to_int["лют."] = 2
month_to_int["лют"] = 2
month_to_int["бер."] = 3
month_to_int["бер"] = 3
month_to_int["квіт."] = 4
month_to_int["квіт"] = 4
month_to_int["трав."] = 5
month_to_int["трав"] = 5
month_to_int["черв."] = 6
month_to_int["черв"] = 6
month_to_int["лип."] = 7
month_to_int["лип"] = 7
month_to_int["серп."] = 8
month_to_int["серп"] = 8
month_to_int["вер."] = 9
month_to_int["вер"] = 9
month_to_int["жовт."] = 10
month_to_int["жовт"] = 10
month_to_int["лист."] = 11
month_to_int["лист"] = 11
month_to_int["груд."] = 12
month_to_int["груд"] = 12
# modifiers before the date
modifier_to_int = {
'перед' : Date.MOD_BEFORE,
@ -116,89 +72,6 @@ class DateParserUK(DateParser):
'біля' : Date.MOD_ABOUT,
}
hebrew_to_int = {
"тішрі" : 1, "хешвен" : 2, "кіслев" : 3,
"тевет" : 4, "шват" : 5, "адар" : 6,
"адара" : 7, "нісан" : 8, "іяр" : 9,
"сиван" : 10, "таммуз" : 11, "ав" : 12,
"елул" : 13,
#alternative spelling
"мархешван": 2, "ве адар" : 7,
#GEDCOM months
"tsh" : 1, "csh": 5, "ksl": 3, "tvt": 4, "shv": 5, "adr": 6,
"ads" : 7, "nsn": 8, "iyr": 9, "svn":10, "tmz":11, "aav":12,
"ell":13,
}
french_to_int = {
'вандем’єр' : 1, 'брюмер' : 2,
'фрімер' : 3, 'нівоз' : 4,
'плювіоз' : 5, 'вентоз' : 6,
'жерміналь' : 7, 'флореаль' : 8,
'преріаль' : 9, 'мессідор' : 10,
'термідор' : 11, 'фрюктідор': 12,
'додатковий' : 13,
#short
'ванд' : 1, 'брюм' : 2,
'фрім' : 3, 'нів' : 4,
'плюв' : 5, 'вент' : 6,
'жерм' : 7, 'флор' : 8,
'прер' : 9, 'месс' : 10,
'терм' : 11, 'фрюкт': 12,
'дод' : 13,
#GEDCOM months
'vend' : 1, 'brum' : 2,
'frim' : 3, 'nivo' : 4,
'pluv' : 5, 'vent' : 6,
'germ' : 7, 'flor' : 8,
'prai' : 9, 'mess' : 10,
'ther' : 11, 'fruc' : 12,
'comp' : 13,
}
islamic_to_int = {
"мухаррам" : 1, "мухаррем" : 1,
"сафар" : 2, "рабі-аль-авваль" : 3,
"рабі-ассані" : 4,
"джумада-аль-уля" : 5, "джумада-аль-авваль" : 5,
"джумада-аль-ахіра" : 6, "джумада-ас-сані" : 6,
"раджаб" : 7, "шаабан" : 8,
"рамадан" : 9, "рамазан" : 9,
"шавваль" : 10, "зуль-каада" : 11,
"зуль-хіджжа" : 12,
}
persian_to_int = {
"фарвардін" : 1, "ордібехешт" : 2,
"хордад" : 3, "тир" : 4,
"мордад" : 5, "шахрівар" : 6,
"мехр" : 7, "абан" : 8,
"азар" : 9, "дей" : 10,
"бахман" : 11, "есфанд" : 12,
}
bce = ['до нашої ери', 'до н. е.', 'до н.е.']
calendar_to_int = {
'григоріанський' : Date.CAL_GREGORIAN,
'г' : Date.CAL_GREGORIAN,
'юліанський' : Date.CAL_JULIAN,
'ю' : Date.CAL_JULIAN,
'єврейський' : Date.CAL_HEBREW,
'є' : Date.CAL_HEBREW,
'ісламський' : Date.CAL_ISLAMIC,
'і' : Date.CAL_ISLAMIC,
'французький' : Date.CAL_FRENCH,
'французький республіканський': Date.CAL_FRENCH,
'французький революційний' : Date.CAL_FRENCH,
'ф' : Date.CAL_FRENCH,
'іранський' : Date.CAL_PERSIAN,
'перський' : Date.CAL_PERSIAN,
'п' : Date.CAL_PERSIAN,
'шведський' : Date.CAL_SWEDISH,
'ш' : Date.CAL_SWEDISH,
}
quality_to_int = {
'за оцінкою' : Date.QUAL_ESTIMATED,
'за оц.' : Date.QUAL_ESTIMATED,
@ -206,6 +79,7 @@ class DateParserUK(DateParser):
'орієнтовно' : Date.QUAL_ESTIMATED,
'приблизно' : Date.QUAL_ESTIMATED,
'прибл.' : Date.QUAL_ESTIMATED,
'підраховано' : Date.QUAL_CALCULATED,
'підрах.' : Date.QUAL_CALCULATED,
'розраховано' : Date.QUAL_CALCULATED,
@ -213,6 +87,11 @@ class DateParserUK(DateParser):
'розрах.' : Date.QUAL_CALCULATED,
}
bce = [
'до нашої ери', 'до н. е.', 'до н.е.',
'до народження Христа'
] + DateParser.bce
def init_strings(self):
"""
This method compiles regular expression strings for matching dates.
@ -221,12 +100,19 @@ class DateParserUK(DateParser):
"""
DateParser.init_strings(self)
DateParser.hebrew_to_int.update({
'мархешван': 2,
'ве адар' : 7,
'адар бет' : 7,
'авів' : 8,
})
_span_1 = ['з', 'від']
# b.c.e. pattern also have "до" so skip "до н."
_span_2 = ['по', 'до?!\\.']
_span_2 = ['по', 'до(?!\s+н)']
_range_1 = ['між']
_range_2 = ['і', 'та']
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
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>.+)" %
@ -243,115 +129,10 @@ class DateDisplayUK(DateDisplay):
Ukrainian language date display class.
"""
# the months as the noun or as the genitive???
# as the genitive:
long_months = (
"", "січня", "лютого", "березня", "квітня",
"травня", "червня", "липня", "серпня",
"вересня", "жовтня", "листопада", "грудня"
)
# as the noun:
# long_months = (
# "", "січень", "лютий", "березень", "квітень",
# "травень", "червень", "липень", "серпень",
# "вересень", "жовтень", "листопад", "грудень"
# )
short_months = (
"", "січ.", "лют.", "бер.", "квіт.", "трав.", "черв.",
"лип.", "серп.", "вер.", "жовт.", "лист.", "груд."
)
hebrew = (
"", "тішрі", "хешвен", "кіслев", "тевет", "шват",
"адар", "адара", "нісан", "іяр", "сиван", "таммуз",
"ав", "елул"
)
french = (
'', 'вандем’єр', 'брюмер', 'фрімер', 'нівоз',
'плювіоз', 'вентоз', 'жерміналь', 'флореаль',
'преріаль', 'мессідор', 'термідор', 'фрюктідор',
'додатковий'
)
persian = (
"", "фарвардін", "ордібехешт", "хордад", "тир",
"мордад", "шахрівар", "мехр", "абан",
"азар", "дей", "бахман", "есфанд"
)
islamic = (
"", "мухаррам", "сафар", "рабі-аль-авваль",
"рабі-ассані", "джумада-аль-уля", "джумада-аль-ахіра",
"раджаб", "шаабан", "рамадан", "шавваль", "зуль-каада",
"зуль-хіджжа",
)
# Replace the previous "Numerical" by a string which
# do have an explicit meaning: "System default (format)"
_locale_tformat = _grampslocale.tformat
_locale_tformat = _locale_tformat.replace('%d', "д")
_locale_tformat = _locale_tformat.replace('%m', "м")
_locale_tformat = _locale_tformat.replace('%Y', "р")
formats = (
"рррр-мм-дд (ISO)", #0
"стандартний для системи (" + _locale_tformat + ")", #1
"місяць день, рік", #2
"міс. дд, рррр", #3
"день місяць рік", #4
"дд міс. рррр" #5
)
# this must agree with DateDisplayEn's "formats" definition
# (since no locale-specific _display_gregorian exists, here)
calendar = (
"", "юліанський", "єврейський", "французький республіканський",
"іранський", "ісламський", "шведський"
)
_mod_str = ("", "до ", "після ", "близько ", "", "", "")
_qual_str = ("", "орієнтовно ", "розрахунково ")
_bce_str = "%s до н.е."
def display(self, date):
"""
Return a text string representing the date.
"""
mod = date.get_modifier()
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
display = DateDisplay.display_formatted
qual_str = self._qual_str[qual]
if mod == Date.MOD_TEXTONLY:
return date.get_text()
elif start == Date.EMPTY:
return ""
elif mod == Date.MOD_SPAN:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%sз %s %s %s%s" % (qual_str, d1, 'по', d2,
scal)
elif mod == Date.MOD_RANGE:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, 'між', d1, 'та',
d2, scal)
else:
text = self.display_cal[date.get_calendar()](start)
scal = self.format_extras(cal, newyear)
return "%s%s%s%s" % (qual_str, self._mod_str[mod],
text, scal)
#-------------------------------------------------------------------------
#

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
#-------------------------------------------------------------------------

View File

@ -3,6 +3,8 @@
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2004-2006 Donald N. Allingham
# Copyright (C) 2013 Vassilii Khachaturov
# Copyright (C) 2014 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
@ -16,7 +18,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
@ -65,7 +67,7 @@ class DateDisplay(object):
# such as YY.MM.DD, MM-DD-YY, or whatever your locale prefers.
# This should be the format that is used under the locale by
# strftime() for '%x'.
# You may translate this string as "Numerical", "System preferred", or similar.
# You may translate this as "Numerical", "System preferred", or similar.
_("date format|Numerical"),
# Full month name, day, year
@ -83,10 +85,11 @@ class DateDisplay(object):
"""
.. note:: Will be overridden if a locale-specific date displayer exists.
If your localized :meth:`~_display_calendar`/:meth:`~_display_gregorian` are
overridden,you should override the whole formats list according to your own
formats, and you need not localize the format names here. This ``formats``
must agree with :meth:`~_display_calendar`/:meth:`~_display_gregorian`.
If your localized :meth:`~_display_calendar`/:meth:`~_display_gregorian`
are overridden, you should override the whole formats list according
to your own formats, and you need not localize the format names here.
This ``formats`` must agree with
:meth:`~_display_calendar`/:meth:`~_display_gregorian`.
"""
del _
@ -182,18 +185,21 @@ class DateDisplay(object):
: _("and|{long_month} {year}"),
"before"
# You only need to translate this string if you translate one of the
# inflect=_("...") with "before"
# If "before <Month>" needs a special inflection in your
# language, translate this to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
: _("before|{long_month} {year}"),
"after"
# You only need to translate this string if you translate one of the
# inflect=_("...") with "after"
# If "after <Month>" needs a special inflection in your
# language, translate this to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
: _("after|{long_month} {year}"),
"about"
# You only need to translate this string if you translate one of the
# inflect=_("...") with "about"
# If "about <Month>" needs a special inflection in your
# language, translate this to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
: _("about|{long_month} {year}"),
# TODO if no modifier, but with qual, might need to inflect in some lang.
@ -220,12 +226,21 @@ class DateDisplay(object):
: _("and|{short_month} {year}"),
"before"
# If "before <Month>" needs a special inflection in your
# language, translate this to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
: _("before|{short_month} {year}"),
"after"
# If "after <Month>" needs a special inflection in your
# language, translate this to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
: _("after|{short_month} {year}"),
"about"
# If "about <Month>" needs a special inflection in your
# language, translate this to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
: _("about|{short_month} {year}"),
}
@ -257,8 +272,9 @@ class DateDisplay(object):
"""
Return a text string representing the date.
(Will be overridden if a locale-specific date displayer exists.)
Disregard any format settings and use display_iso for each date.
(Will be overridden if a locale-specific date displayer exists.)
"""
mod = date.get_modifier()
cal = date.get_calendar()
@ -374,15 +390,24 @@ class DateDisplay(object):
date_stop=d2,
nonstd_calendar_and_ny=scal)
else:
text = self.display_cal[date.get_calendar()](start,
# If there is no special inflection for "before/after/around <Month>" in your
# language, don't translate this string.
# Otherwise, translate it to the ENGLISH!!! ENGLISH!!!
# key appearing above in the FORMATS_... dict
# that maps to the special inflected format string that you need to localize.
# TODO are there languages for which the inflections for the different
# modifiers are different?!
inflect=_("before-date|") if mod != Date.MOD_NONE else "")
if mod == Date.MOD_BEFORE:
# If there is no special inflection for "before <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "before" in ENGLISH!!! ENGLISH!!!
date_type = _("before-date|")
elif mod == Date.MOD_AFTER:
# If there is no special inflection for "after <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "after" in ENGLISH!!! ENGLISH!!!
date_type = _("after-date|")
elif mod == Date.MOD_ABOUT:
# If there is no special inflection for "about <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "about" in ENGLISH!!! ENGLISH!!!
date_type = _("about-date|")
else:
date_type = ""
text = self.display_cal[cal](start, inflect=date_type)
scal = self.format_extras(cal, newyear)
return _("{date_quality}{noncompound_modifier}{date}"
"{nonstd_calendar_and_ny}").format(
@ -398,104 +423,178 @@ class DateDisplay(object):
# Julian and Swedish date display is the same as Gregorian
_display_julian = _display_swedish = _display_gregorian
def format_long_month_year(self, month, year, inflect, long_months):
if not hasattr(long_months[1], 'f'): # not a Lexeme: no inflection
return "{long_month} {year}".format(
long_month = long_months[month], year = year)
return self.FORMATS_long_month_year[inflect].format(
long_month = long_months[month], year = year)
def format_short_month_year(self, month, year, inflect, short_months):
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 format_long_month(self, month, inflect, long_months):
if not hasattr(long_months[1], 'f'): # not a Lexeme: no inflection
return "{long_month}".format(long_month = long_months[month])
return self.FORMATS_long_month_year[inflect].format(
long_month = long_months[month], year = '').rstrip()
def format_short_month(self, month, inflect, short_months):
if not hasattr(short_months[1], 'f'): # not a Lexeme: no inflection
return "{short_month}".format(short_month = short_months[month])
return self.FORMATS_short_month_year[inflect].format(
short_month = short_months[month], year = '').rstrip()
def dd_dformat01(self, date_val):
"""
numerical
this must agree with DateDisplayEn's "formats" definition
(it may be overridden if a locale-specific date displayer exists)
"""
if date_val[3]:
return self.display_iso(date_val)
else:
if date_val[0] == date_val[1] == 0:
return str(date_val[2])
else:
value = self._tformat.replace('%m', str(date_val[1]))
if date_val[0] == 0: # ignore the zero day and its delimiter
i_day = value.find('%d')
value = value.replace(value[i_day:i_day+3], '')
value = value.replace('%d', str(date_val[0]))
value = value.replace('%Y', str(abs(date_val[2])))
return value.replace('-', '/')
def dd_dformat02(self, date_val, inflect, long_months):
"""
month_name day, year
this must agree with DateDisplayEn's "formats" definition
(it may be overridden if a locale-specific date displayer exists)
"""
_ = self._locale.translation.sgettext
year = self._slash_year(date_val[2], date_val[3])
if date_val[0] == 0:
if date_val[1] == 0:
return year
else:
return self.format_long_month_year(date_val[1], year,
inflect, long_months)
else:
# TRANSLATORS: this month is ALREADY inflected: ignore it
return _("{long_month} {day:d}, {year}").format(
long_month = self.format_long_month(date_val[1],
inflect,
long_months),
day = date_val[0],
year = year)
def dd_dformat03(self, date_val, inflect, short_months):
"""
month_abbreviation day, year
this must agree with DateDisplayEn's "formats" definition
(it may be overridden if a locale-specific date displayer exists)
"""
_ = self._locale.translation.sgettext
year = self._slash_year(date_val[2], date_val[3])
if date_val[0] == 0:
if date_val[1] == 0:
return year
else:
return self.format_short_month_year(date_val[1], year,
inflect, short_months)
else:
# TRANSLATORS: this month is ALREADY inflected: ignore it
return _("{short_month} {day:d}, {year}").format(
short_month = self.format_short_month(date_val[1],
inflect,
short_months),
day = date_val[0],
year = year)
def dd_dformat04(self, date_val, inflect, long_months):
"""
day month_name year
this must agree with DateDisplayEn's "formats" definition
(it may be overridden if a locale-specific date displayer exists)
"""
_ = self._locale.translation.sgettext
year = self._slash_year(date_val[2], date_val[3])
if date_val[0] == 0:
if date_val[1] == 0:
return year
else:
return self.format_long_month_year(date_val[1], year,
inflect, long_months)
else:
# TRANSLATORS: this month is ALREADY inflected: ignore it
return _("{day:d} {long_month} {year}").format(
day = date_val[0],
long_month = self.format_long_month(date_val[1],
inflect,
long_months),
year = year)
def dd_dformat05(self, date_val, inflect, short_months):
"""
day month_abbreviation year
this must agree with DateDisplayEn's "formats" definition
(it may be overridden if a locale-specific date displayer exists)
"""
_ = self._locale.translation.sgettext
year = self._slash_year(date_val[2], date_val[3])
if date_val[0] == 0:
if date_val[1] == 0:
return year
else:
return self.format_short_month_year(date_val[1], year,
inflect, short_months)
else:
# TRANSLATORS: this month is ALREADY inflected: ignore it
return _("{day:d} {short_month} {year}").format(
day = date_val[0],
short_month = self.format_short_month(date_val[1],
inflect,
short_months),
year = year)
def _display_calendar(self, date_val, long_months, short_months = None,
inflect=""):
inflect=""):
"""
this must agree with DateDisplayEn's "formats" definition
(it may be overridden if a locale-specific date displayer exists)
"""
if short_months is None:
# Let the short formats work the same as long formats
short_months = long_months
_ = self._locale.translation.sgettext
# this one must agree with DateDisplayEn's "formats" definition
# (it may be overridden if a locale-specific date displayer exists)
year = self._slash_year(date_val[2], date_val[3])
# For partial dates, several formats reduce to just month + year.
def format_long_month_year():
return self.FORMATS_long_month_year[inflect].format(
long_month = long_months[date_val[1]],
year = year)
def format_short_month_year():
return self.FORMATS_short_month_year[inflect].format(
short_month = short_months[date_val[1]],
year = year)
if self.format == 0:
return self.display_iso(date_val)
elif self.format == 1:
# numerical
if date_val[3]:
return self.display_iso(date_val)
else:
if date_val[0] == date_val[1] == 0:
value = str(date_val[2])
else:
value = self._tformat.replace('%m', str(date_val[1]))
value = value.replace('%d', str(date_val[0]))
value = value.replace('%Y', str(abs(date_val[2])))
value = value.replace('-', '/')
value = self.dd_dformat01(date_val)
elif self.format == 2:
# month_name day, year
if date_val[0] == 0:
if date_val[1] == 0:
value = year
else:
value = format_long_month_year()
else:
# TRANSLATORS: see
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
# to learn how to select proper inflection for your language.
value = _("{long_month} {day:d}, {year}").format(
long_month = long_months[date_val[1]],
day = date_val[0],
year = year)
value = self.dd_dformat02(date_val, inflect, long_months)
elif self.format == 3:
# month_abbreviation day, year
if date_val[0] == 0:
if date_val[1] == 0:
value = year
else:
value = format_short_month_year()
else:
# TRANSLATORS: see
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
# to learn how to select proper inflection for your language.
value = _("{short_month} {day:d}, {year}").format(
short_month = short_months[date_val[1]],
day = date_val[0],
year = year)
value = self.dd_dformat03(date_val, inflect, short_months)
elif self.format == 4:
# day month_name year
if date_val[0] == 0:
if date_val[1] == 0:
value = year
else:
value = format_long_month_year()
else:
# TRANSLATORS: see
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
# to learn how to select proper inflection for your language.
value = _("{day:d} {long_month} {year}").format(
day = date_val[0],
long_month = long_months[date_val[1]],
year = year)
value = self.dd_dformat04(date_val, inflect, long_months)
# elif self.format == 5:
else:
# day month_abbreviation year
if date_val[0] == 0:
if date_val[1] == 0:
value = year
else:
value = format_short_month_year()
else:
# TRANSLATORS: see
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
# to learn how to select proper inflection for your language.
value = _("{day:d} {short_month} {year}").format(
short_month = short_months[date_val[1]],
day = date_val[0],
year = year)
value = self.dd_dformat05(date_val, inflect, short_months)
if date_val[2] < 0:
# TODO fix BUG 7064: non-Gregorian calendars wrongly use BCE notation for negative dates
return self._bce_str % value
@ -532,3 +631,4 @@ class DateDisplayEn(DateDisplay):
display = DateDisplay.display_formatted
_locale = DateDisplay._locale # normally set in register_datehandler

View File

@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
@ -629,8 +629,12 @@ class DateParser(object):
else:
y = self._get_int(groups[4])
if self.dmy:
m = self._get_int(groups[3])
d = self._get_int(groups[1])
if groups[3] is None:
m = self._get_int(groups[1])
d = 0
else:
m = self._get_int(groups[3])
d = self._get_int(groups[1])
else:
m = self._get_int(groups[1])
d = self._get_int(groups[3])

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
@ -27,6 +27,7 @@ Class handling language-specific selection for date parser and displayer.
# Python modules
#
#-------------------------------------------------------------------------
import sys
import time
#-------------------------------------------------------------------------
@ -35,6 +36,7 @@ import time
#
#-------------------------------------------------------------------------
from ..lib.date import Date
from ..const import GRAMPS_LOCALE as glocale
from . import LANG_TO_DISPLAY, LANG, parser, displayer
#--------------------------------------------------------------
@ -94,4 +96,7 @@ def format_time(secs):
"""
t = time.localtime(secs)
d = Date(t.tm_year, t.tm_mon, t.tm_mday)
return displayer.display(d) + time.strftime(' %X', t)
if sys.version_info[0] < 3:
return displayer.display(d) + time.strftime(' %X', t).decode(glocale.encoding)
else:
return displayer.display(d) + time.strftime(' %X', t)

View File

@ -17,7 +17,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
import locale
@ -194,6 +194,7 @@ except:
'10/25/2005' : '%m/%d/%Y',
'2005/10/25' : '%Y/%m/%d',
'25.10.2005' : '%d.%m.%Y',
'25.10.2005.' : '%d.%m.%Y.',
'10.25.2005' : '%m.%d.%Y',
'2005.10.25' : '%Y.%m.%d',
}

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -18,7 +18,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
from __future__ import print_function, unicode_literals

View File

@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# gen/db/backup.py

View File

@ -17,7 +17,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
@ -864,6 +864,13 @@ class DbReadBase(object):
"""
raise NotImplementedError
def get_place_types(self):
"""
Return a list of all custom place types assocated with Place instances
in the database.
"""
raise NotImplementedError
def gramps_upgrade(self):
"""
Return True if database is upgraded

View File

@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# gen/db/cursor.py

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
@ -39,7 +39,7 @@ __all__ = (
('DBPAGE', 'DBMODE', 'DBCACHE', 'DBLOCKS', 'DBOBJECTS', 'DBUNDO',
'DBEXT', 'DBMODE_R', 'DBMODE_W', 'DBUNDOFN', 'DBLOCKFN',
'DBRECOVFN','BDBVERSFN', 'DBLOGNAME', 'DBFLAGS_O', 'DBFLAGS_R',
'DBFLAGS_D',
'DBFLAGS_D', 'SCHVERSFN', 'PCKVERSFN'
) +
('PERSON_KEY', 'FAMILY_KEY', 'SOURCE_KEY', 'CITATION_KEY',
@ -55,6 +55,8 @@ DBUNDOFN = "undo.db" # File name of 'undo' database
DBLOCKFN = "lock" # File name of lock file
DBRECOVFN = "need_recover" # File name of recovery file
BDBVERSFN = "bdbversion.txt"# File name of Berkeley DB version file
SCHVERSFN = "schemaversion.txt"# File name of schema version file
PCKVERSFN = "pickleupgrade.txt" # Indicator that pickle has been upgrade t Python3
DBLOGNAME = ".Db" # Name of logger
DBMODE_R = "r" # Read-only access
DBMODE_W = "w" # Full Read/Write access

View File

@ -14,7 +14,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
""" Implements a Db interface as a Dictionary """
@ -119,7 +119,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
"handles_func": self.get_person_handles,
"add_func": self.add_person,
"commit_func": self.commit_person,
"remove_func": self.remove_person,
})
self._tables['Family'].update(
{
@ -130,7 +129,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
"handles_func": self.get_family_handles,
"add_func": self.add_family,
"commit_func": self.commit_family,
"remove_func": self.remove_family,
})
self._tables['Source'].update(
{
@ -141,7 +139,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
"handles_func": self.get_source_handles,
"add_func": self.add_source,
"commit_func": self.commit_source,
"remove_func": self.remove_source,
})
self._tables['Citation'].update(
{
@ -152,7 +149,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
"handles_func": self.get_citation_handles,
"add_func": self.add_citation,
"commit_func": self.commit_citation,
"remove_func": self.remove_citation,
})
self._tables['Event'].update(
{
@ -163,7 +159,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
"handles_func": self.get_event_handles,
"add_func": self.add_event,
"commit_func": self.commit_event,
"remove_func": self.remove_event,
})
self._tables['Media'].update(
{
@ -174,7 +169,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
"handles_func": self.get_media_object_handles,
"add_func": self.add_object,
"commit_func": self.commit_media_object,
"remove_func": self.remove_object,
})
self._tables['Place'].update(
{
@ -185,7 +179,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
"handles_func": self.get_place_handles,
"add_func": self.add_place,
"commit_func": self.commit_place,
"remove_func": self.remove_place,
})
self._tables['Repository'].update(
{
@ -196,7 +189,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
"handles_func": self.get_repository_handles,
"add_func": self.add_repository,
"commit_func": self.commit_repository,
"remove_func": self.remove_repository,
})
self._tables['Note'].update(
{
@ -207,7 +199,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
"handles_func": self.get_note_handles,
"add_func": self.add_note,
"commit_func": self.commit_note,
"remove_func": self.remove_note,
})
self._tables['Tag'].update(
{
@ -218,7 +209,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
"handles_func": self.get_tag_handles,
"add_func": self.add_tag,
"commit_func": self.commit_tag,
"remove_func": self.remove_tag,
})
# skip GEDCOM cross-ref check for now:
self.set_feature("skip-check-xref", True)

View File

@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""Exceptions generated by the Db package."""

View File

@ -17,7 +17,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
@ -202,10 +202,12 @@ class DbReadCursor(BsddbBaseCursor):
#-------------------------------------------------------------------------
class DbBsddbTreeCursor(BsddbBaseCursor):
def __init__(self, source, txn=None, **kwargs):
def __init__(self, source, primary, readonly, txn=None, **kwargs):
BsddbBaseCursor.__init__(self, txn=txn, **kwargs)
self.cursor = source.cursor(txn)
self.source = source
self.primary = primary
self.readonly = readonly
def __iter__(self):
"""
@ -218,7 +220,14 @@ class DbBsddbTreeCursor(BsddbBaseCursor):
key = key.encode('utf-8') if not isinstance(key, bytes) else key
data = self.set(key)
while data:
payload = pickle.loads(data[1])
### FIXME: this is a dirty hack that works without no
### sensible explanation. For some reason, for a readonly
### database, secondary index returns a primary table key
### corresponding to the data, not the data.
if self.readonly:
payload = self.primary.get(data[1], txn=self.txn)
else:
payload = pickle.loads(data[1])
yield (payload[0], payload)
to_do.append(payload[0])
data = _n()
@ -411,6 +420,7 @@ class DbBsddbRead(DbReadBase, Callback):
self.source_media_types = set()
self.url_types = set()
self.media_attributes = set()
self.place_types = set()
self.open = 0
self.genderStats = GenderStats()
@ -434,6 +444,7 @@ class DbBsddbRead(DbReadBase, Callback):
self.citation_map = {}
self.repository_map = {}
self.note_map = {}
self.tag_map = {}
self.media_map = {}
self.event_map = {}
self.metadata = {}
@ -512,7 +523,8 @@ class DbBsddbRead(DbReadBase, Callback):
return self.get_cursor(self.place_map, *args, **kwargs)
def get_place_tree_cursor(self, *args, **kwargs):
return DbBsddbTreeCursor(self.parents, self.txn)
return DbBsddbTreeCursor(self.parents, self.place_map, self.readonly,
self.txn)
def get_source_cursor(self, *args, **kwargs):
return self.get_cursor(self.source_map, *args, **kwargs)
@ -1003,6 +1015,18 @@ class DbBsddbRead(DbReadBase, Callback):
"""
return self.get_number_of_records(self.tag_map)
def is_empty(self):
"""
Return true if there are no [primary] records in the database
"""
for obj_map in [self.person_map, self.family_map, self.event_map,
self.place_map, self.source_map, self.citation_map,
self.media_map, self.repository_map, self.note_map,
self.tag_map]:
if self.get_number_of_records(obj_map) > 0:
return False
return True
def all_handles(self, table):
""" return all the keys of a database table
@ -1623,6 +1647,13 @@ class DbBsddbRead(DbReadBase, Callback):
"""
return list(self.url_types)
def get_place_types(self):
"""
Return a list of all custom place types assocated with Place instances
in the database.
"""
return list(self.place_types)
def __log_error(self):
pass
@ -1636,10 +1667,6 @@ class DbBsddbRead(DbReadBase, Callback):
handle = handle.encode('utf-8')
try:
return table.get(handle, txn=self.txn)
except UnicodeDecodeError:
#we need to assume we opened data in python3 saved in python2
raw = table.db.get(handle, txn=self.txn)
return pickle.loads(raw, encoding='utf-8')
except DBERRS as msg:
self.__log_error()
raise DbError(msg)

View File

@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
import unittest
@ -31,6 +31,8 @@ if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3:
else:
from bsddb import dbshelve, db
from ..read import DbBsddbTreeCursor
class Data(object):
def __init__(self, handle,surname, name):
@ -76,6 +78,7 @@ class CursorTest(unittest.TestCase):
os.mkdir(env_name)
self.env.open(env_name,env_flags)
(self.person_map,self.surnames) = self._open_tables()
(self.place_map, self.placerefs) = self._open_treetables()
def _open_tables(self):
dbmap = dbshelve.DBShelf(self.env)
@ -100,10 +103,36 @@ class CursorTest(unittest.TestCase):
person_map.associate(surnames, find_surname, table_flags)
return (person_map,surnames)
def _open_treetables(self):
dbmap = dbshelve.DBShelf(self.env)
dbmap.db.set_pagesize(16384)
dbmap.open(self.full_name, 'places', db.DB_HASH,
db.DB_CREATE|db.DB_AUTO_COMMIT, 0o666)
place_map = dbmap
table_flags = db.DB_CREATE|db.DB_AUTO_COMMIT
placerefs = db.DB(self.env)
placerefs.set_flags(db.DB_DUP|db.DB_DUPSORT)
placerefs.open(self.full_name, "placerefs", db.DB_BTREE,
flags=table_flags)
def find_placeref(key,data):
val = data[2]
if isinstance(val, UNITYPE):
val = val.encode('utf-8')
return val
place_map.associate(placerefs, find_placeref, table_flags)
return (place_map, placerefs)
def tearDown(self):
self.person_map.close()
self.surnames.close()
self.place_map.close()
self.placerefs.close()
self.env.close()
shutil.rmtree(self._tmpdir)
@ -183,7 +212,29 @@ class CursorTest(unittest.TestCase):
self.assertEqual(v.handle, data.handle)
def test_treecursor(self):
#fill with data
the_txn = self.env.txn_begin()
data = [(b'1', 'countryA', '' ),
(b'2', 'localityA', '1' ),
(b'3', 'localityB', '1' ),
(b'4', 'countryB', '' ),
(b'5', 'streetA', '2' ),
(b'6', 'countryB', '' )]
for d in data:
self.place_map.put(d[0], d, txn=the_txn)
the_txn.commit()
cursor_txn = self.env.txn_begin()
cursor = DbBsddbTreeCursor(self.placerefs, self.place_map, False,
cursor_txn)
placenames = set([d[1] for handle, d in cursor])
cursor.close()
cursor_txn.commit()
pldata = set([d[1] for d in data])
self.assertEqual(placenames, pldata)
def testSuite():
suite = unittest.makeSuite(CursorTest, 'test')
return suite

View File

@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
import unittest

View File

@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
from __future__ import print_function

View File

@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
import unittest

View File

@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
@ -66,6 +66,27 @@ from gramps.gui.dialog import (InfoDialog)
LOG = logging.getLogger(".upgrade")
def gramps_upgrade_pickle(self):
"""
Upgrade to python3 pickle protocol.
"""
import pickle
tables = (self.person_map, self.event_map, self.family_map, self.place_map,
self.repository_map, self.source_map, self.citation_map,
self.media_map, self.note_map, self.tag_map, self.metadata,
self.reference_map)
self.set_total(sum(map(len, tables)))
for data_map in tables:
for handle in data_map.keys():
raw = data_map.db.get(handle)
data = pickle.loads(raw, encoding='utf-8')
with BSDDBTxn(self.env, data_map) as txn:
txn.put(handle, data)
self.update()
with BSDDBTxn(self.env, self.metadata) as txn:
txn.put(b'upgraded', 'Yes')
def gramps_upgrade_17(self):
"""
Upgrade database from version 16 to 17.
@ -161,7 +182,7 @@ def gramps_upgrade_17(self):
else:
placeref_list = []
type_num = 7 - level if name else 8
type_num = 7 - level if name else PlaceType.UNKNOWN
new_place = new_place[:5] + [placeref_list, name, [],
PlaceType(type_num).serialize(), zip_code] + \
new_place[6:12] + [[]] + new_place[12:]
@ -252,7 +273,10 @@ def gramps_upgrade_17(self):
# Modify Media
# ---------------------------------
# Add new checksum field.
base_path = self.metadata.get(b'mediapath', '')
base_path = self.metadata.get(b'mediapath')
if base_path is None:
# Check that the mediapath is not set to None (bug #7844).
base_path = ''
for handle in self.media_map.keys():
media = self.media_map[handle]
new_media = list(media)
@ -656,7 +680,9 @@ def gramps_upgrade_16(self):
private)
LOG.debug(" upgrade new_source %s" % [new_source])
with BSDDBTxn(self.env, self.source_map) as txn:
txn.put(str(handle), new_source)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_source)
self.update()
LOG.debug("%d sources upgraded with %d citations in %d seconds" %
@ -859,12 +885,12 @@ def convert_source_list_to_citation_list_16(self, source_list):
new_citation = (new_handle, new_gramps_id,
date, page, confidence, ref, note_list, new_media_list,
new_data_map, new_change, private)
citation_list.append((new_handle))
with BSDDBTxn(self.env, self.citation_map) as txn:
if isinstance(new_handle, UNITYPE):
new_handle = new_handle.encode('utf-8')
txn.put(new_handle, new_citation)
self.cmap_index += 1
citation_list.append((new_handle))
return citation_list
def gramps_upgrade_15(self):

View File

@ -17,7 +17,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
@ -299,7 +299,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
"handles_func": self.get_person_handles,
"add_func": self.add_person,
"commit_func": self.commit_person,
"remove_func": self.remove_person,
})
self._tables['Family'].update(
{
@ -310,7 +309,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
"handles_func": self.get_family_handles,
"add_func": self.add_family,
"commit_func": self.commit_family,
"remove_func": self.remove_family,
})
self._tables['Source'].update(
{
@ -321,7 +319,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
"handles_func": self.get_source_handles,
"add_func": self.add_source,
"commit_func": self.commit_source,
"remove_func": self.remove_source,
})
self._tables['Citation'].update(
{
@ -332,7 +329,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
"handles_func": self.get_citation_handles,
"add_func": self.add_citation,
"commit_func": self.commit_citation,
"remove_func": self.remove_citation,
})
self._tables['Event'].update(
{
@ -343,7 +339,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
"handles_func": self.get_event_handles,
"add_func": self.add_event,
"commit_func": self.commit_event,
"remove_func": self.remove_event,
})
self._tables['Media'].update(
{
@ -354,7 +349,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
"handles_func": self.get_media_object_handles,
"add_func": self.add_object,
"commit_func": self.commit_media_object,
"remove_func": self.remove_object,
})
self._tables['Place'].update(
{
@ -365,7 +359,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
"handles_func": self.get_place_handles,
"add_func": self.add_place,
"commit_func": self.commit_place,
"remove_func": self.remove_place,
})
self._tables['Repository'].update(
{
@ -376,7 +369,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
"handles_func": self.get_repository_handles,
"add_func": self.add_repository,
"commit_func": self.commit_repository,
"remove_func": self.remove_repository,
})
self._tables['Note'].update(
{
@ -387,7 +379,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
"handles_func": self.get_note_handles,
"add_func": self.add_note,
"commit_func": self.commit_note,
"remove_func": self.remove_note,
})
self._tables['Tag'].update(
{
@ -398,7 +389,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
"handles_func": self.get_tag_handles,
"add_func": self.add_tag,
"commit_func": self.commit_tag,
"remove_func": self.remove_tag,
})
self.secondary_connected = False
@ -406,6 +396,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
self.brief_name = None
self.update_env_version = False
self.update_python_version = False
self.update_pickle_version = False
def catch_db_error(func):
"""
@ -744,6 +735,26 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
self.__check_python_version(name, force_python_upgrade)
# Check for pickle upgrade
versionpath = os.path.join(self.path, cuni(PCKVERSFN))
if sys.version_info[0] >= 3 and not os.path.isfile(versionpath) and \
not self.readonly and not self.update_pickle_version:
_LOG.debug("Make backup in case there is a pickle upgrade")
self.__make_zip_backup(name)
self.update_pickle_version = True
# Check for schema upgrade
versionpath = os.path.join(self.path, cuni(SCHVERSFN))
if os.path.isfile(versionpath):
with open(versionpath, "r") as version_file:
schema_version = int(version_file.read().strip())
else:
schema_version = 0
if not self.readonly and schema_version < _DBVERSION and \
force_schema_upgrade:
_LOG.debug("Make backup in case there is a schema upgrade")
self.__make_zip_backup(name)
# Set up database environment
self.env = db.DBEnv()
self.env.set_cachesize(0, DBCACHE)
@ -798,7 +809,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
self.__close_early()
raise DbVersionError(tree_vers, _MINVERSION, _DBVERSION)
self.__load_metadata()
gstats = self.metadata.get(b'gender_stats', default=None)
# Ensure version info in metadata
@ -809,6 +819,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
# New database. Set up the current version.
#self.metadata.put(b'version', _DBVERSION, txn=the_txn)
txn.put(b'version', _DBVERSION)
txn.put(b'upgraded', 'Yes')
elif b'version' not in self.metadata:
# Not new database, but the version is missing.
# Use 0, but it is likely to fail anyway.
@ -854,7 +865,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
if isinstance(version, UNITYPE):
version = version.encode('utf-8')
version_file.write(version)
_LOG.debug("Updated BDBVERSFN file to %s" % str(db.version()))
_LOG.debug("Updated bsddb version file to %s" % str(db.version()))
if self.update_python_version:
versionpath = os.path.join(name, "pythonversion.txt")
@ -870,6 +881,21 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
# If secondary indices change, then they should removed
# or rebuilt by upgrade as well. In any case, the
# self.secondary_connected flag should be set accordingly.
if self.update_pickle_version:
from . import upgrade
UpdateCallback.__init__(self, callback)
upgrade.gramps_upgrade_pickle(self)
versionpath = os.path.join(name, cuni(PCKVERSFN))
with open(versionpath, "w") as version_file:
version = "Yes"
if sys.version_info[0] <3:
if isinstance(version, UNITYPE):
version = version.encode('utf-8')
version_file.write(version)
_LOG.debug("Updated pickle version file to %s" % str(version))
self.__load_metadata()
if self.need_schema_upgrade():
oldschema = self.metadata.get(b'version', default=0)
newschema = _DBVERSION
@ -877,6 +903,14 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
(oldschema, newschema))
if force_schema_upgrade == True:
self.gramps_upgrade(callback)
versionpath = os.path.join(name, cuni(SCHVERSFN))
with open(versionpath, "w") as version_file:
version = str(_DBVERSION)
if sys.version_info[0] <3:
if isinstance(version, UNITYPE):
version = version.encode('utf-8')
version_file.write(version)
_LOG.debug("Updated schema version file to %s" % str(version))
else:
self.__close_early()
clear_lock_file(name)
@ -946,12 +980,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
# bookmarks
def meta(key):
try:
return self.metadata.get(key, default=[])
except UnicodeDecodeError:
#we need to assume we opened data in python3 saved in python2
raw = self.metadata.db.get(key, default=[])
return pickle.loads(raw, encoding='utf-8') if raw else raw
return self.metadata.get(key, default=[])
self.bookmarks.set(meta(b'bookmarks'))
self.family_bookmarks.set(meta(b'family_bookmarks'))
@ -980,6 +1009,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
self.url_types = set(meta(b'url_types'))
self.media_attributes = set(meta(b'mattr_names'))
self.event_attributes = set(meta(b'eattr_names'))
self.place_types = set(meta(b'place_types'))
# surname list
self.surname_list = meta(b'surname_list')
@ -1244,7 +1274,11 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
existing_references = set()
primary_cur = self.get_reference_map_primary_cursor()
try:
ret = primary_cur.set(handle)
if isinstance(handle, UNITYPE):
key = handle.encode('utf-8')
else:
key = handle
ret = primary_cur.set(key)
except:
ret = None
@ -1320,7 +1354,10 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
"""
if isinstance(key, tuple):
#create a string key
key = str(key)
if sys.version_info[0] >= 3:
key= str(key)
else:
key = str(tuple(k.encode('utf-8') for k in key))
if isinstance(key, UNITYPE):
key = key.encode('utf-8')
if self.readonly or not key:
@ -1452,6 +1489,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
txn.put(b'url_types', list(self.url_types))
txn.put(b'mattr_names', list(self.media_attributes))
txn.put(b'eattr_names', list(self.event_attributes))
txn.put(b'place_types', list(self.place_types))
# name display formats
txn.put(b'surname_list', self.surname_list)
@ -2027,6 +2065,9 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
self.commit_base(place, self.place_map, PLACE_KEY,
transaction, change_time)
if place.get_type().is_custom():
self.place_types.add(str(place.get_type()))
self.url_types.update([str(url.type) for url in place.urls
if url.type.is_custom()])
@ -2140,10 +2181,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
handle = handle.encode('utf-8')
try:
data = data_map.get(handle, txn=self.txn)
except UnicodeDecodeError:
#we need to assume we opened data in python3 saved in python2
raw = data_map.db.get(handle, txn=self.txn)
data = pickle.loads(raw, encoding='utf-8')
except:
data = None
# under certain circumstances during a database reload,
@ -2335,8 +2372,9 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
version = self.metadata.get(b'version', default=_MINVERSION)
t = time.time()
from . import upgrade
if version < 14:
upgrade.gramps_upgrade_14(self)
if version < 15:
@ -2349,6 +2387,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
self.reset()
self.set_total(6)
self.__connect_secondary()
self.rebuild_secondary()
# Open undo database
self.__open_undodb()
self.db_is_open = True
@ -2432,6 +2471,24 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
with open(versionpath, "w") as version_file:
version_file.write(version)
# The pickle upgrade file is not written for Python2; its contents is
# never actually examined, all that matters is whether it is present
if sys.version_info[0] >= 3:
versionpath = os.path.join(name, cuni(PCKVERSFN))
_LOG.debug("Write pickle version file to %s" % "Yes")
with open(versionpath, "w") as version_file:
version = "Yes"
version_file.write(version)
versionpath = os.path.join(name, cuni(SCHVERSFN))
_LOG.debug("Write schema version file to %s" % str(_DBVERSION))
with open(versionpath, "w") as version_file:
version = str(_DBVERSION)
if sys.version_info[0] <3:
if isinstance(version, UNITYPE):
version = version.encode('utf-8')
version_file.write(version)
self.metadata.close()
self.env.close()
@ -2448,12 +2505,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
"""
return DbTxn
def remove_from_database(self, item, transaction):
"""
Remove the item from the database.
"""
self._tables[item.__class__.__name__]["remove_func"](item.handle, transaction)
def _mkname(path, name):
return os.path.join(path, name + DBEXT)
@ -2478,7 +2529,9 @@ def write_lock_file(name):
try:
user = os.getlogin()
except:
user = os.environ['USER'] #not win, don't need get_env_var
# not win, so don't need get_env_var.
# under cron getlogin() throws and there is no USER.
user = os.environ.get('USER', 'noUSER')
if host:
text = "%s@%s" % (user, host)
else:

View File

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

View File

@ -16,6 +16,6 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#

View File

@ -17,7 +17,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""

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