Compare commits

..

1172 Commits

Author SHA1 Message Date
romjerome
908aa90b61 make official '4.2.1' release 2015-10-12 13:01:06 +02:00
romjerome
32426459db Add '4.2.1' to NEWS 2015-10-12 12:57:13 +02:00
Sveinn í Felli
66114432df Update Icelandic translation 2015-10-12 12:50:43 +02:00
Zdeněk Hataš
5baf8d322c czech translation update 2015-10-12 10:58:38 +02:00
Nick Hall
1302743541 Revert gramplet id changes
This partially reverts commit 80a9597.
2015-10-11 18:01:24 +01:00
Josip
da417a5ee7 7601: Support for Retina Display / HiDPI
fix setup.py
2015-10-10 19:03:31 +02:00
Josip
08338db8ab 7601: Support for Retina Display / HiDPI
added 24px icons
2015-10-10 18:53:30 +02:00
romjerome
9fecb67bd8 Update new urls for wiki (french version) 2015-10-10 15:29:36 +02:00
romjerome
d89e9d2c67 Update template 2015-10-10 15:20:41 +02:00
Leonhaeuser
67e0f75107 update German transklation 2015-10-10 01:35:45 +02:00
Leonhaeuser
3e4569bd49 update German translation 2015-10-10 01:05:59 +02:00
Paul Franklin
dddd5b5db2 8888: Gramps Help button User Manual wiki-links 2015-10-09 13:37:46 -07:00
Nick Hall
2fc9459aad 8168: Sort custom place types in editors 2015-10-09 19:00:57 +01:00
Nick Hall
ba98dc0412 Fix error converting color into string 2015-10-09 17:47:03 +01:00
romjerome
586bd2fcf5 [Geography] Ignore places without hierarchy
Cannot get value if there is no levels

See country = state = county set on self.get_location()
2015-10-08 17:12:49 +02:00
romjerome
f7e8b90d60 Fix directive, avoid msgfmt errors 2015-10-08 14:31:51 +02:00
Matti Niemelä
e6b8dacfc3 Update finnish translation
TODO: fix Python brace format on lines 1828 -> 1913
2015-10-08 14:17:49 +02:00
Doug Blank
a6de1c81bc Holidays: added cmp() for Python3 2015-10-07 06:12:27 -04:00
Zdeněk Hataš
03773fe9a2 czech translation update 2015-10-05 16:13:08 +02:00
Paul Franklin
6f849befe0 Fix countries selector on Reports
use strings comparison, avoid encoded Element names
2015-10-05 15:49:46 +02:00
Ζήσης Παπαδόπουλος
6ec12af6d7 Update Greek translation 2015-10-05 15:23:49 +02:00
Paul Franklin
5fa70824a3 handle case of no intltool when doing "python3 setup.py build"
I installed my development environment on a different machine
but for some reason didn't install intltool.  But it took me
a while to notice since I normally routinely divert the output
to a file.  So it was crashing but I didn't know.

But when I examined setup.py I saw that was tested for, at least
it was supposed to be tested for.  But on my particular machine
when the test was piped into more commands the whole piped command
was returning a zero status, even though there was no intltool
at all.  So I have added an explicit test for intltool and that
does indeed fail on my machine, without one.
2015-10-04 19:14:04 -07:00
=Vlada Perić
05a53a40c9 8971: the easter method in libholiday.py isn't Python3-friendly 2015-10-04 16:24:32 -07:00
romjerome
1b09074fc4 Update french translation 2015-10-02 11:26:01 +02:00
Sveinn í Felli
b0d040ee99 Update Icelandic translation 2015-10-02 11:18:53 +02:00
romjerome
b56b63a9fa Update template 2015-10-02 11:15:21 +02:00
Paul Franklin
e6cc62ff9c Suggestion:Use 'People and Events.'' instead of of an 'etc' 2015-10-02 13:27:22 +10:00
Sveinn Felli
d81e851fd5 [Tips] Typo's in gramps.pot 'prefered>preferred' 2015-10-01 08:06:29 +10:00
Doug Blank
c96a8b85b9 if s_tagvalue is None: 2015-09-30 06:41:20 -04:00
SNoiraud
0d07292d23 bug 8799 : verification tool : Exception raised when used with the "Estimate missing or inexact dates" 2015-09-29 09:18:11 +02:00
Sam Manzi
a8198c3ef1 8888 'baseselector's add help urls only 2015-09-29 16:29:56 +10:00
Zdeněk Hataš
b4827dc9c1 czech translation update 2015-09-28 20:21:37 +02:00
Sam Manzi
6d99a47b5e Revert "Usability:Update initial [interface] startup defaults for (height/width)"
This reverts commit 2309747413.
2015-09-28 10:23:32 +10:00
Detlef Wolz
db2037fe08 3670: hourglass graph report - link missing in ancestor graph 2015-09-27 13:11:22 -07:00
Sam Manzi
2309747413 Usability:Update initial [interface] startup defaults for (height/width)
- Fully show each Category sidebar filter without having to resize initially. eg:Citation Category sidebar filter is the largest!
2015-09-26 15:05:37 +10:00
Paul Franklin
a3bf2e4d6e 8936: Descendants-detailed report crashes 2015-09-24 16:46:39 -07:00
romjerome
bd694b0baa New and modified translation strings
Update french translation
2015-09-24 11:02:33 +02:00
romjerome
8bf081ccc3 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 10:48:50 +02:00
Josip
6f66a021bb 8937: Unable to produce graph reports [in Greek locale] 2015-09-21 18:58:14 -07:00
Sam Manzi
55733cb264 8888 'Generate Testcases' add help url 2015-09-22 07:53:53 +10:00
Paul Franklin
17f8b4818c allow for get_dbname() returning None 2015-09-21 10:53:25 -07:00
Sam Manzi
3755337db9 8888 'References Gramplet' rename links from 'backlink>references' for consistency on wiki 2015-09-21 13:33:13 +10:00
Sam Manzi
afbfaa815d 8888 'Select a media object' add help url 2015-09-20 17:10:38 +10:00
Sam Manzi
7beb66dd66 8888 'Undo History' add help button & url 2015-09-19 07:22:45 +10:00
Sam Manzi
e3374b8cb5 8888 'Filter dialogs' add/update help urls 2015-09-18 09:21:40 +10:00
Sam Manzi
d3f90860c1 8888 'Tagging dialogs' update help urls after wiki section update 2015-09-18 08:40:42 +10:00
Sam Manzi
227da7671f 8888#c44511 Fix AttributeError: 'EditMediaRef' object has no attribute 'glade' 2015-09-17 07:28:03 +10:00
Sam Manzi
7c3eaa9684 8888 'Place Name Editor' Add New wiki section & help link 2015-09-16 09:47:16 +10:00
Lajos Nemeséri
4cfa03ab16 5505: Need a date handler for Hungarian locale 2015-09-15 14:03:56 -07:00
romjerome
ae89bc4d83 8914: FanChartDescendants View should at least have 2 generations 2015-09-15 12:29:06 +02:00
Sam Manzi
75ac634fa9 8888 'Person Reference Editor' add Help link & wiki section stub 2015-09-15 10:11:16 +10:00
Paul Franklin
2e6e13e166 8930: allow hyphenated gramps-id in Graphviz reports 2015-09-14 16:42:19 -07:00
Matti Niemelä
dec1130c81 update Finnish translation 2015-09-14 11:09:22 -07:00
Sam Manzi
dcb0aa8c35 8888 'Link Editor' add help url 2015-09-14 10:15:00 +10:00
Sam Manzi
1b4143f83c 8888 'Editors' continue updating broken wiki help links 2015-09-13 09:09:35 +10:00
Paul Franklin
f5adb32bb6 8889: Complete Individual Report fails to run 2015-09-12 15:44:48 -07:00
Nick Hall
c36e3f4747 Update en_GB translation 2015-09-12 15:04:03 +01:00
Nick Hall
688ee0f918 Merge en_GB translation into new template 2015-09-12 14:57:46 +01:00
Sam Manzi
f548570af1 8888 more 'Editors' update broken wiki help links 2015-09-12 17:51:18 +10:00
Sam Manzi
09e3ff2a62 8888 'Edit dialogs' update broken wiki help links 2015-09-12 09:11:53 +10:00
Sam Manzi
73f75f7317 8888:'Error Report' dialog fix help url 2015-09-11 09:27:08 +10:00
romjerome
1e3ad0d325 Update french translation 2015-09-10 16:22:21 +02:00
Lajos Nemeséri
09dd6deea3 Update Hungarian translation 2015-09-10 16:18:38 +02:00
romjerome
460049809d update template 2015-09-10 16:17:24 +02:00
Sam Manzi
80a9597e5a 8888 'Gramplets' update broken wiki help links 2015-09-09 08:23:50 +10:00
SNoiraud
428c341005 Geography : bug 8902 : ValueError: Place.set_name(name) requires a PlaceName() 2015-09-08 21:06:22 +02:00
Sam Manzi
a8d2f21b23 8888 'Media Reference Editor' link help button in glade 2015-09-08 11:03:38 +10:00
Sam Manzi
93962adaef 8888 Fix some links for Tools 2015-09-06 09:26:28 +10:00
Sam Manzi
d893ec5de5 8888 Fix link for Tag Selection(Selector) 2015-09-06 09:05:06 +10:00
Nick Hall
9ff1f7781c 8833: Set TextOption widget to expand vertically 2015-09-05 17:21:17 +01:00
Nick Hall
b2fa1350f0 Revert workaround for bug
This reverts commit 01a68f5692.
2015-09-05 17:17:37 +01:00
romjerome
67e6a53951 6684: Unused Object Dialog box too small 2015-09-05 10:38:48 +02:00
romjerome
01a68f5692 8833: Workaround for displaying more lines on Text box via label's height 2015-09-05 10:36:25 +02:00
romjerome
0f8bdbca00 Update french translation 2015-09-05 10:22:23 +02:00
romjerome
f582592cf1 Update template 2015-09-05 10:02:32 +02:00
romjerome
96173da947 python3 only for latex backend and related 2015-09-05 10:00:59 +02:00
Sam Manzi
e9ddd513a4 Update a few broken help URLs 2015-09-04 16:13:48 +10:00
Jérôme Rapinat
39cc00963d 2531: Short cut keys does not work in 'Change Event Types' dialog 2015-09-04 13:12:55 +10:00
Sam Manzi
cc25a21ad7 6824#c44102 Fix outdate tip. Soundex utility > Soundex Gramplet 2015-09-04 10:20:25 +10:00
Sam Manzi
f7084a775b 8481 Update some Tips of the day 2015-09-03 15:41:10 +10:00
SNoiraud
2ac9f5bbd6 Geography : 8866 : placeselection : changeAttributeError: 'str' object has no attribute 'value' 2015-09-02 09:38:44 +02:00
romjerome
7a7ac5376d Let display translation string on family label 2015-08-31 18:18:35 +02:00
Peter Landgren
ad01a680aa Updated Swedish translation for Gramps 4.2 2015-08-30 19:04:09 +02:00
Peter Landgren
318f2e93ce First updated Swedish translation for Gramps 4.2 2015-08-30 19:04:09 +02:00
Sam Manzi
d210ea64f6 Update URL to Gramps 4.2 page 2015-08-30 14:04:20 +10:00
Sam Manzi
0f11ac01c8 GRAMPS > Gramps 2015-08-29 11:22:14 +10:00
romjerome
25b999a140 [Debian] Fix name and version for suggested packages 2015-08-28 09:14:23 +02:00
Leonhaeuser
be59619444 update German translation 2015-08-26 20:58:57 +02:00
Doug Blank
a1c0db37ad 8863: Error when extracting place names 2015-08-25 06:42:31 -04:00
Enno Borgsteede
a2dbc495df 7595 Custom filters for note text repaired 2015-08-24 08:47:08 +10:00
Sam Manzi
3104900c21 Update links to 4.2 user manual etc.. 2015-08-22 18:52:28 +10:00
Hivernat Emmanuel
50911b7cf1 8824 Fix Pedigreeview crash when selecting Compact view 2015-08-22 12:25:01 +10:00
Doug Blank
dd33a4b172 Fix for exponential cost on treeviews; whitespace cleanup 2015-08-21 10:11:45 -04:00
Sam Manzi
d03f13c503 Merge pull request from orner/bug8471-gramps42
8471: Set "visable_window" in GtkEventBox to fix transparency.
2015-08-21 14:53:49 +10:00
Lance Orner
65f0df74c7 8471: Set "visable_window" in GtkEventBox to fix transparency.
Was showing transparent background in a Compiz environment without
this option "visable_window" being explicitly set.
2015-08-20 20:21:59 -07:00
Doug Blank
dce07dcb1d Removed duplicate 'database-changed' signal, which was loading data in GUI twice 2015-08-19 22:23:33 -04:00
Doug Blank
2dae5c3a08 8377: Slow scrolling in Gramps 4.X, on all platforms.
Additions:

1. cache database access for column values
2. cache do_get_path lookups
3. sped up load access on treeviews with no filters
4. use cache in do_get_path from siblings
5. new LRU size of 1k (was 250)
2015-08-19 22:15:14 -04:00
Nick Hall
3ed5e74657 8775: Avoid using person-centric date matching for places 2015-08-17 19:21:27 +01:00
Nick Hall
67e6c66555 8789: Use place title as default name in GEDCOM import 2015-08-15 22:24:47 +01:00
Nick Hall
a121922310 8810: Ensure place names are not empty after upgrade 2015-08-15 21:32:51 +01:00
Nick Hall
6fc4d1f536 8842: Fix proxy to include all referenced place objects
The referenced by selection proxy needs to include places that
enclose referenced places.
2015-08-15 19:03:59 +01:00
Doug Blank
98409ca194 OpenOrStdin/out: add encoding 2015-08-11 15:37:22 -04:00
Leonhaeuser
085409bcc0 update German translation 2015-08-10 22:26:38 +02:00
Nick Hall
bd06550331 8517: Remove copy button from family tree manager 2015-08-09 18:34:58 +01:00
=Matti Niemelä
1dc8746810 update Finnish translation 2015-08-08 08:37:09 -07:00
=Matti Niemelä
e53f15e8a9 update Finnish translation 2015-08-08 08:34:45 -07:00
Nick Hall
8209096b73 Suppress deprecation warnings in intltool-update 2015-08-08 21:30:37 +01:00
Doug Blank
7fa9e647e5 8112: Common means nick, call, or otherwise first of given 2015-08-08 00:29:10 -04:00
Nick Hall
dcb8efd8e6 8637: Use keyword arguments to initialise Adjustment widgets
This should prevent the value being set to zero or the minumum
limit incorrectly.
2015-08-07 16:10:58 +01:00
Doug Blank
c0bdfafbda ImportCSV: remove debugging code 2015-08-07 11:04:50 -04:00
Doug Blank
e5d564dbf0 ImportCSV: allow person, family, and marriage to reference places with place_id columns 2015-08-07 10:09:31 -04:00
Doug Blank
aabb06ab11 ImportCSV: removed duplicate entry; added 'enclosedby' 2015-08-07 08:06:09 -04:00
Doug Blank
a14894fce7 ExportCSV: allow lowercase matching of place type 2015-08-04 08:38:15 -04:00
Doug Blank
3df700b22a Added Places to CSV import/export 2015-08-03 20:40:40 -04:00
Doug Blank
58d7cbe99d All sidebars with Types should show custom types in combo list 2015-08-03 11:42:58 -04:00
Jérôme Rapinat
b5f419cbf3 8774: Wrong italian sentence in tip of the day
patched by Daniele
2015-08-03 16:38:16 +02:00
Zdeněk Hataš
9aaaaa3816 sync with recent pot 2015-08-02 20:02:30 +02:00
John Ralls
f2b1a5bdbc Mac changes to release 4.2.0 2015-08-02 10:12:27 -07:00
Jérôme Rapinat
58fc415e28 Update translation strings template
No modified messages, just update references and lines on comments
2015-08-02 15:05:25 +02:00
Zdeněk Hataš
f3898c5d43 czech translation update 2015-08-02 13:57:26 +02:00
Doug Blank
de6847db7b 8768: Gramps throws fatal error when trying to delete a family 2015-08-01 19:07:22 -04:00
Nick Hall
e7ce80a06e Tidy up style editor layout 2015-08-01 21:12:07 +01:00
Nick Hall
789a94b59b Fix style name bug in style editor 2015-08-01 19:41:53 +01:00
Nick Hall
10029e3a67 5693: Set some dialog response codes
The response codes are used to position the buttons in the dialog
action area.
2015-08-01 19:25:08 +01:00
Nick Hall
31aa503934 8778: Avoid using place objects during database upgrade 2015-07-31 23:41:14 +01:00
Josip
5cf54d4300 7910: tool to Edit Database Owner Information crashes 2015-07-30 12:12:05 +02:00
Josip
7b5c692787 8766: GraphViz does not seem to like double-quotes in Given names 2015-07-30 12:12:03 +02:00
SNoiraud
1b91f53622 Geography: 8375 : Must test if kml file exists. 2015-07-30 10:00:46 +02:00
Jérôme Rapinat
f3a3da5e5c update id/string related to pygobject dependency
sed -Ei 's/3.3.2/3.12/g' *.po
2015-07-29 20:42:43 +02:00
Jérôme Rapinat
e525aab0c8 Update template
one modified string, 'pygobject 3.3.2 to 3.12'
2015-07-29 20:15:41 +02:00
Jérôme Rapinat
8346836cf9 Fix some mismatching format keys on Chinese translations 2015-07-29 20:13:32 +02:00
Jérôme Rapinat
ce6edaf901 Fix some mismatching keys on translations 2015-07-29 20:08:04 +02:00
Jérôme Rapinat
83e671afd5 Merge branch 'maintenance/gramps42' of github.com:gramps-project/gramps into gramps42 2015-07-29 20:05:22 +02:00
Nick Hall
5d5ca47863 8701: GEDCOM version should be exported as 5.5.1 2015-07-29 19:04:22 +01:00
Nick Hall
2a8d75c493 Increase minimum pygobject version required to 3.12 2015-07-29 14:25:37 +01:00
elderamevans
63f09baab0 Fix 'python' filename under Windows
executable named 'python.exe' whatever major python version (2 or 3)
2015-07-29 11:07:46 +02:00
Josip
f96df5658c 8764: [Compare Individual Events :Tool ]
Selecting "Save" causes a UnicodeEncodeError error
2015-07-29 04:28:19 +02:00
Jérôme Rapinat
5d86e44264 'update_po.py' should use python3
Revert temp workaround for el, vi, zh* translations
2015-07-28 20:55:00 +02:00
Ondrej Krč-Jediný
b5eaeff3a4 Pull request : update Slovak translation 2015-07-28 18:53:05 +02:00
Richard Bos (radoeka)
d2da00989a Pull request : improvements for Dutch translation 2015-07-28 18:44:32 +02:00
Jérôme Rapinat
36687cd703 Temp workaround for el, vi, zh_* 2015-07-27 10:26:36 +02:00
Jérôme Rapinat
25a9f17d66 Temp workaround for an ascii UnicodeEncodeError into console 2015-07-27 10:15:48 +02:00
Jérôme Rapinat
f8380e1b0c Update french translation
was new entry for Gtk requirements
2015-07-27 08:46:35 +02:00
Jérôme Rapinat
3c2b7406c5 Update translation strings template 2015-07-27 08:39:53 +02:00
Nick Hall
595828ba99 Update en_GB translation 2015-07-26 23:52:36 +01:00
Nick Hall
8b09bcdb98 Remove duplicate message strings 2015-07-26 22:22:14 +01:00
Sam Manzi
d19bed4b42 8352 Change lesser than to less than 2015-07-26 19:32:53 +01:00
Sam Manzi
8e0e07240f 7553 Change GraphViz to Graphviz 2015-07-26 19:15:13 +01:00
Nick Hall
e7ba2423aa Make place title in GEDCOM export date dependent 2015-07-25 23:16:57 +01:00
Josip
c19402f731 8745: cli_test.py needs OS specific path to find Python interpreter 2015-07-25 00:03:22 +02:00
Doug Blank
faba7ddc2c 7261: Import GEDCOM file from MyHeritage, added __str__ to Attribute 2015-07-23 10:24:50 -04:00
Leonhaeuser
4379f42999 update German translation 2015-07-20 20:30:33 +02:00
Doug Blank
f30a353e15 8725: Create Filter from the [xxxxx] selected, in Clipboard (and add use_regex) 2015-07-20 07:31:36 -04:00
Doug Blank
029241bae9 8725: right-click on Citation in Clipboard 2015-07-20 07:31:20 -04:00
Doug Blank
86cab99e7a docbackend: protect from sytledtexttag with value is None 2015-07-20 07:31:02 -04:00
Doug Blank
85a97c1c7f 8732: Media: Radiobox's Include label is missing from the Gramps XML Backup dialog 2015-07-20 07:28:39 -04:00
Doug Blank
538b00b3c8 8730: Error Report Assistant fails 2015-07-19 07:47:24 -04:00
Sam Manzi
2637e2dcc1 8726:43320 Fix two different wordings on button for BsddbUpgradeRequiredError 2015-07-18 21:26:13 -04:00
Doug Blank
cc1d15fc3f Merge pull request from cjmayo/docstring
Stop using concatenation to create docstring
2015-07-18 21:25:35 -04:00
Doug Blank
ad8259814d 8730: Error Report Assistant fails 2015-07-18 21:18:13 -04:00
Paul Franklin
0cd63965a7 8728: Merge citations caused crash 2015-07-18 11:05:16 -07:00
Leonhaeuser
7b987cfa88 update German translation 2015-07-15 22:15:55 +02:00
Nick Hall
3e6fd00286 Remove redundant code since Gtk 3.10 required 2015-07-15 19:55:58 +01:00
Paul Franklin
27e6d9b2a9 fix check_po to work with lexemes in po files 2015-07-15 10:43:43 -07:00
Paul Franklin
8b65c60a04 8572: gramps crashes if gtk < 3.10 2015-07-14 22:17:51 -07:00
Paul Franklin
6e69cbcb04 Revert "8572: gramps crashes if gtk < 3.10"
This reverts commit 6b929e9c7e.
2015-07-14 15:58:38 -07:00
Paul Franklin
6b929e9c7e 8572: gramps crashes if gtk < 3.10 2015-07-14 12:39:35 -07:00
Doug Blank
f9ccea0149 children gramplet: protect from crash when no family 2015-07-14 15:25:45 -04:00
Doug Blank
feee26f74a events gramplet: check for existing family 2015-07-14 15:24:40 -04:00
Doug Blank
6e68cc3f73 Merge pull request from sam-m888/8702UpdateMapServicelinksOpenStreetMap
8702 Update Map Service links for OpenStreetMap
2015-07-14 07:03:54 -04:00
Doug Blank
bce1462567 Merge pull request from ennoborg/maintenance/gramps41
8663: add exception for UnicodeEncodeError.
2015-07-13 23:15:15 -04:00
Doug Blank
61443ad9ce Merge pull request from sam-m888/fixissues2462linguist
Make Github recognise Gramps as a Python project
2015-07-13 22:51:15 -04:00
Doug Blank
2e93109d75 Merge pull request from sam-m888/6908popupmenuclipboardgrampletfix
6908 partial for fix popup menu for clipboardgramplet
2015-07-13 22:49:48 -04:00
Josip
bbab0cdbba translation: Croatian
fix some name mismatches and runaway context errors
2015-07-14 00:25:09 +02:00
Josip
ae73a30a6d translation: Croatian 2015-07-12 23:18:31 +02:00
Josip
eed9e6505e 8591: Product crashed when attempting to print a report 2015-07-12 22:33:36 +02:00
Jérôme Rapinat
34bb729c7a Debian: do not need to recommend devel package 2015-07-12 16:37:07 +02:00
John Ralls
3060d7504a Prep package Gramps-4.2.0beta2. 2015-07-11 16:14:56 -07:00
Paul Franklin
2e32fc7141 4089: fix Lithuanian date parser (another y-m-d one) 2015-07-09 23:20:29 -07:00
Paul Franklin
ee060b85a2 translation: Croatian
fix months parsing
2015-07-09 14:35:16 +02:00
Paul Franklin
289436ee33 fix date parser for y-m-d locales (e.g. Hungarian) 2015-07-08 10:10:49 -07:00
Jérôme Rapinat
905ac154d3 8683: keep support for XML v1.7.0 2015-07-06 15:45:35 +02:00
Jérôme Rapinat
ac29b091a7 8683: Bump to Gramps XML 1.7.1 2015-07-06 15:08:38 +02:00
Paul Franklin
1a618c3a2e 8623: Detailed Descendant Report - only first family event output 2015-07-05 13:42:12 -07:00
Bernard Banko
c731c68ec5 Pull Request : Slovenian translation update 2015-07-05 11:07:33 +02:00
Jérôme Rapinat
ab80af602c 8683: Cover custom types on DTD and RNG files
Now, xmllint passes '--dtdvalid' and '--relaxng'
2015-07-05 11:03:03 +02:00
Jérôme Rapinat
4caa412a06 8683: polish; remove old reference 2015-07-05 10:54:26 +02:00
Jérôme Rapinat
49ec2e1244 8683: fix duplicate <name> element on pre-1.7.0 XML version
XML: use <pname> tag into place hierarchy instead of duplicate <name>
2015-07-05 10:50:13 +02:00
Paul Franklin
63dc1ddff8 cover pathological case (perhaps from privacy proxy) 2015-07-04 19:30:39 -07:00
Zdeněk Hataš
b9c3b077e8 czech translation update 2015-07-04 11:16:01 +02:00
Gerald Kunzmann
8c9333b58d 8648: Print Gramps IDs in familygroup report 2015-07-03 14:48:36 -07:00
Paul Franklin
fd22effab3 8670: Crash when trying to create a book 2015-07-02 19:24:45 -07:00
Leonhaeuser
5e5e92ac9a German translation fix typo 2015-07-02 22:55:31 +02:00
Paul Franklin
7fac5c6607 8666: statistics report does not run (filter?) 2015-07-01 21:45:01 -07:00
Paul Franklin
fa26216839 8677: Narrated Web report failed 2015-07-01 17:18:49 -07:00
Matti Niemelä
9032c0a37d update Finnish translation 2015-06-30 09:05:44 -07:00
Paul Franklin
fb6a2cecf2 8666: statistics report does not run (filter?) 2015-06-30 08:23:14 -07:00
Jérôme Rapinat
90de5dffec Update template
Update french translation
2015-06-30 15:19:18 +02:00
erikdrgm
8ec10c067f Updated 150630 nl translation 2015-06-30 09:10:41 +02:00
Jérôme Rapinat
84be6de6ab 8572: gramps crashes if gtk < 3.10; workaround for debian (packaging) 2015-06-29 11:17:36 +02:00
Jérôme Rapinat
0b88c61421 Update NEWS according to commit log data 2015-06-29 11:11:00 +02:00
Josip
d943e122a8 8667: SVG Document output 2015-06-28 15:15:52 -07:00
Leonhaeuser
fc08e7de4e update German translation 2015-06-28 20:56:07 +02:00
Doug Blank
a04c8dc497 8577: Statistics Charts report crashes in Windows 4.1.3 AIO
Changed 0 to actual number of people in database.
2015-06-28 14:38:08 -04:00
Nick Hall
66c943f69d Replace "Title" with "Enclosed By" in place sidebar filter 2015-06-28 19:32:52 +01:00
Nick Hall
0ad17ac27f Fix IsEnclosedBy rule for non-existent places 2015-06-28 19:32:49 +01:00
Jérôme Rapinat
01536e4b50 Update informations about major enhancements 2015-06-28 18:11:03 +02:00
Paul Franklin
811261609f 8666: statistics report does not run (filter?) 2015-06-27 12:47:15 -07:00
Nick Hall
cba763611d 8645: Use place displayer when sorting places in narrated web report 2015-06-27 19:38:35 +01:00
Jérôme Rapinat
56de5ff4af Update/Migrate 'data.gramps' 2015-06-27 15:02:09 +02:00
Jérôme Rapinat
928a0af713 Update/Migrate 'example.gramps' and XML schema files 2015-06-27 14:50:07 +02:00
John Ralls
913fdd071c Set up gramps module and info.plist for Gramps42 branch. 2015-06-26 15:40:15 -07:00
Paul Franklin
22a27e9707 8661: Errors producing Ancestor Tree (4.2.0beta1) 2015-06-26 11:01:06 -07:00
Jérôme Rapinat
2142118832 8645: add GobjectIntrospection dependency
Fix Lintian issue: 'python-script-but-no-python-dep'
2015-06-25 20:09:40 +02:00
Nick Hall
fabd5742fc 8643: Workaround for excessive height of rule editor window
The height of the Gtk.Box containing the rule name and description
labels is calculated incorrectly.  The parent widget seems to
think that the label text is wrapped onto many lines.

This workaround sets a minimum label width which makes the problem
less apparent.
2015-06-24 22:05:22 +01:00
Nick Hall
7a3da35543 Tidy up and remove redundant code 2015-06-24 22:05:22 +01:00
Lajos Nemeséri
c0c165d155 Update Hungarian translation 2015-06-24 19:12:09 +02:00
Fedik
030ffd8226 Update Ukrainian translation 2015-06-23 20:58:34 +03:00
Luigi Toscano
4964461fa4 Italian translation updates 2015-06-21 03:16:48 +02:00
Luigi Toscano
42c4662329 Refresh Italian translation with the last template 2015-06-21 03:14:40 +02:00
Josip
d3eafc00db translation: Croatian
remove print statments
2015-06-20 20:08:42 +02:00
Josip
a2030431c0 fix some PyGI/DeprecationWarning 2015-06-20 19:59:56 +02:00
Josip
56f867d783 fix transient parent of few dialogs 2015-06-20 15:55:08 +02:00
Josip
5a752205b3 translation: Croatian
fix inflected long month names
fix dd_dformat04
2015-06-19 23:50:31 +02:00
Jérôme Rapinat
6e87ee433c Update DEBIAN stuff
For more recent environments; python3, pybuild
2015-06-19 16:13:58 +02:00
kulath
70806f2388 0008537: Gedcom import crashes. Fix problem when matching places with
the same name which are enclosed by different places.
2015-06-18 22:53:46 +01:00
Enno Borgsteede
b8b186dde2 0008639: check buttons misaligned in remove unused objects dialog 2015-06-18 19:17:45 +01:00
Nick Hall
d10c4faffe Remove executable permission from gedcom file 2015-06-18 14:18:49 +01:00
Nick Hall
8bff04729f Remove executable permission from python code 2015-06-18 14:13:41 +01:00
Jérôme Rapinat
9cddf3ebdb Merge some fixes from git://anonscm.debian.org/collab-maint/gramps.git 2015-06-18 15:02:25 +02:00
Nick Hall
c089eba1c3 Remove executable permission from png files 2015-06-18 13:44:16 +01:00
Jérôme Rapinat
a94f3100df png icons seem no more executable (debian rules) 2015-06-17 19:34:39 +02:00
Lajos Nemeséri
5d341a684e Update Hungarian translation 2015-06-17 18:41:16 +02:00
Doug Blank
26723c1b60 8537: Gedcom import crashes; kulath patch 2015-06-17 08:00:17 -04:00
Doug Blank
de7430eeb8 8614: addresses pickleupgrade.txt issue, by kulath 2015-06-17 06:28:29 -04:00
Jérôme Rapinat
89ffc6b4cc minor update for DEBIAN stuff 2015-06-17 09:38:11 +02:00
Zdeněk Hataš
a18120f17d czech translation update 2015-06-17 08:44:00 +02:00
Jérôme Rapinat
2846fc7dc5 Update french translation 2015-06-16 08:09:06 +02:00
Jérôme Rapinat
e6c5232ae8 Update template 2015-06-16 08:00:55 +02:00
Doug Blank
e7ab8b322b Merge pull request from RossGammon/8047-resourcepath
8047 - Add new --resourcepath option to setup.py
2015-06-15 17:47:27 -04:00
Doug Blank
fde34bb53b SimpleAccess: sort by surname; fixes crash in python3 2015-06-14 22:03:23 -04:00
Josip
60c0843861 translation: Croatian 2015-06-14 20:24:24 +02:00
Doug Blank
2ae2ca5c7d Merge pull request from RossGammon/packagermode
Remove setup.py --enable-package-mode option text from INSTALL
2015-06-14 13:08:50 -04:00
Nick Hall
9747d1deea Validate place name language 2015-06-13 18:43:50 +01:00
Jérôme Rapinat
e52d0a7a90 Merge NEWS (releases on 41 branch) 2015-06-12 16:47:17 +02:00
Hivernat Emmanuel
eefd3e13e4 7347: fix a bug 'on mouse over' event 2015-06-12 16:35:50 +02:00
Jérôme Rapinat
918317434f Update french translation 2015-06-12 16:29:26 +02:00
Lajos Nemeséri
8dfc5381cd Update Hungarian translation 2015-06-12 16:25:39 +02:00
Josip
6511a80b47 8625: Cannot open Citation references from Clip Board 2015-06-12 16:15:40 +02:00
erikdrgm
a5074e9478 Merge branch 'maintenance/gramps42' of github.com:gramps-project/gramps into gramps42 2015-06-10 10:22:31 +02:00
erikdrgm
b90808525c Updated 150610 Dutch translation 2015-06-10 10:20:01 +02:00
Josip
fedfabc87e setting dialogs parent 2015-06-10 02:22:21 +02:00
Jérôme Rapinat
891b9d2e34 update french translation 2015-06-09 16:53:20 +02:00
Jérôme Rapinat
3b0579afc3 Remove one remaining context argument 2015-06-08 19:30:22 +02:00
Zdeněk Hataš
5e763026a4 czech translation update 2015-06-07 22:08:54 +02:00
Jérôme Rapinat
de706de317 update template 2015-06-07 20:08:26 +02:00
Jérôme Rapinat
b884dc0e4c Remove context into glade file
Gramps (python) is not ready for supporting msgctxt for now
2015-06-07 20:07:22 +02:00
Jérôme Rapinat
aaba2ec347 Remove some unicode stuff for python3 2015-06-07 19:47:29 +02:00
Jérôme Rapinat
bdd44b57fd 7476: letter as custom paper size generated a ValueError 2015-06-07 19:17:29 +02:00
Zdeněk Hataš
8deb444a6c datehandler translation fix 2015-06-07 10:53:24 +02:00
Doug Blank
ca3158a6ff 8621: Recursion Filter error 2015-06-06 19:57:40 -04:00
SNoiraud
53a9cfc83f Geography : bug 8612 and 8616 : gtk 3.16 introspection problem and change for new place structure. 2015-06-06 18:59:23 +02:00
Zdeněk Hataš
92fc8f8dcb czech translation update 2015-06-06 17:04:23 +02:00
Zdeněk Hataš
7a488c2fd4 czech translation fixes
inflection fixes
2015-06-06 10:48:06 +02:00
Zdeněk Hataš
98ff7693f3 czech translation update
POT update
2015-06-05 15:12:00 +02:00
Doug Blank
6b7258dfe0 Undo git_revision number change; premature 2015-06-05 08:07:56 -04:00
Zdeněk Hataš
aceee07544 czech translation update 2015-06-05 12:51:40 +02:00
Josip
9e670d51bd Data Verify Tool: fix set transient parent
In init of ManagedWindow self.show() must be called
2015-06-05 12:07:59 +02:00
Josip
8e97b25f38 Relationship Calculator: fix set transient parent
In Glade file of any dialog which is Gramps ManagedWindow
property name "visible" must not be set to True
2015-06-05 12:07:58 +02:00
Doug Blank
6aeeafe74d Merge pull request from sam-m888/master
country > county
2015-06-05 00:34:32 -04:00
Josip
4189799d45 8619: Relationship Calculator - can't select person to relate to 2015-06-04 22:56:58 +02:00
Doug Blank
5bfe514f45 Merge pull request from gramps-project/sam-m888-patch-6
Hide unused code
2015-06-04 13:01:05 -04:00
Doug Blank
aa35dbfb82 Merge pull request from gramps-project/sam-m888-patch-5
Remove duplicate line in dictionary
2015-06-04 13:00:44 -04:00
Doug Blank
784ab0c3c7 Merge pull request from gramps-project/sam-m888-patch-4
spelling correction to stop duplicate key
2015-06-04 13:00:33 -04:00
Doug Blank
5847bb0e17 Merge pull request from gramps-project/sam-m888-patch-3
Spelling mistake inlae > inlaw
2015-06-04 13:00:22 -04:00
Doug Blank
08ac0b0996 Merge pull request from gramps-project/sam-m888-patch-2
6366: Correct text on "Display tab"
2015-06-04 13:00:08 -04:00
Doug Blank
c38ccf22ed Merge pull request from gramps-project/sam-m888-patch-1
Fix outdated "Tags" help link
2015-06-04 12:59:42 -04:00
Matti Niemelä
1866b7ace1 update Finnish translation 2015-06-04 16:52:08 +02:00
erikdrgm
27b7676caa Updated 150603 Dutch translation 2015-06-03 21:48:54 +02:00
Jérôme Rapinat
c273926941 Disable 'behavior.betawarn' on first start
No more master, new branch
2015-06-02 14:08:24 +02:00
Doug Blank
ba8392923a Updated travis to test gramps42, and changed version to omit git number 2015-06-01 13:02:55 -04:00
Jérôme Rapinat
2b8b92dab9 Get some translation strings back (41 -> master) 2015-06-01 16:57:35 +02:00
Jérôme Rapinat
d5cb32d4ee Update french translation 2015-06-01 16:26:00 +02:00
Jérôme Rapinat
3a9717f143 Merge translations with last template 2015-06-01 16:10:24 +02:00
John Ralls
021bb0532e Add setuptools dependency for pil. 2015-05-31 10:12:10 -07:00
John Ralls
c268e4055c Change Gramps repository to Github. 2015-05-31 10:12:10 -07:00
John Ralls
958af590b2 Include modulesets from gnome.org, not jralls's personal ones. 2015-05-31 10:12:10 -07:00
Nick Hall
2f4682acbd Add a couple more place displayer options 2015-05-31 17:54:21 +01:00
Nick Hall
fff6a5ce15 Add extra place displayer options 2015-05-31 16:51:39 +01:00
Leonhaeuser
25e62a7797 update German translation 2015-05-31 17:36:36 +02:00
Matti Niemelä
95b9057810 Update Finnish translation 2015-05-31 12:31:24 +02:00
Jérôme Rapinat
f5d6c72a93 update translation template 2015-05-31 12:22:16 +02:00
Jérôme Rapinat
67238a16c6 Merge translations with last template 2015-05-31 12:19:22 +02:00
Jérôme Rapinat
d0c9f868de fix a typo on the french translation 2015-05-31 12:09:58 +02:00
Nick Hall
fec5a5dab0 Remove place format preference setting 2015-05-31 11:01:06 +01:00
Nick Hall
966551385b Remove unused import 2015-05-31 10:40:05 +01:00
Jérôme Rapinat
d7ac28a12a update french translation 2015-05-29 16:38:18 +02:00
Jérôme Rapinat
988137e5f3 update translation template 2015-05-29 16:27:17 +02:00
Jérôme Rapinat
5b039eb2f0 PhpGedView tool moves to addons
https://github.com/gramps-project/addons-source/tree/master/PhpGedView
2015-05-29 16:22:57 +02:00
Nick Hall
a21dff8bf7 8488: Use place displayer for headings 2015-05-28 19:47:06 +01:00
Jérôme Rapinat
8d188effac 8548: GeneWeb moved to github 2015-05-28 19:59:09 +02:00
Jérôme Rapinat
18a3731e5b update year on man files config for sphinx 2015-05-28 19:47:14 +02:00
Jérôme Rapinat
ae227084d1 update DEBIAN section for matching python3 2015-05-28 19:36:24 +02:00
Jérôme Rapinat
aad2aea73d update french translation 2015-05-28 19:17:02 +02:00
Jérôme Rapinat
5a23088ff9 8548: Enable gwplus event types translation 2015-05-28 18:29:08 +02:00
Jérôme Rapinat
04583236c5 8548: Review GeneWeb file format on import (.gw)
start to support gwplus file format (addition)

provide a testing environment for gwplus import
2015-05-28 18:19:20 +02:00
Jérôme Rapinat
d7bf498f15 8128: GtkDialog mapped without a transient parent
QuestionDialog into DB manager dialog (Remove action)
2015-05-28 17:59:59 +02:00
Jérôme Rapinat
b2fdb2349d update translation template
$ intltool-update -m
2015-05-28 17:54:23 +02:00
Nick Hall
fd782bd057 8487: Use place displayer to generate title in views 2015-05-28 16:29:43 +01:00
Doug Blank
4276970565 Clipboard: some items are not tied to a specific database (text) 2015-05-28 11:25:20 -04:00
Doug Blank
9c406e10d6 Clipboard: Allow for bytes or string 2015-05-28 08:52:47 -04:00
Doug Blank
5d3a7edaa3 8598: Drop text on Clipboard crashes with byte/string issue 2015-05-28 07:43:28 -04:00
Doug Blank
51402bd486 PlaceName constructor shortcut; Place.set_name type check;
bug fixes for testcasegenerator

1. Added PlaceName(value=..., lang=...) shortcut; will add to others

2. Added an instance check on Place.set_name() to make sure it
is a PlaceName

3. Fixed Testcasegenerator to make proper fake places, and a bug
in handling windows
2015-05-27 18:13:44 -04:00
Josip
a943e63b84 Merge pull request from beernarrd/slovenian
new framework slovenian datehandler, updated sl.po, including plural forms correction
2015-05-27 23:02:37 +02:00
Doug Blank
cb852385bd 8593: spelling mistake in the class SimpleAccess 2015-05-27 16:55:53 -04:00
Nick Hall
24c1104f71 Add place name edit button to place editors 2015-05-27 19:20:43 +01:00
Doug Blank
8a9fbc35e3 Note Link Report: adjust columns for better fit 2015-05-27 13:05:39 -04:00
Nick Hall
3c08eb5b80 Correct tooltips in place name editor 2015-05-27 15:16:08 +01:00
Doug Blank
f2e4fa779e 7242: let the user know that links inside notes can rot
Added report
Fixed quickreport
2015-05-27 08:14:47 -04:00
Doug Blank
91ac3c699a PlaceName: updated GUI merge for new placenames 2015-05-27 06:24:27 -04:00
Doug Blank
962608c6bf Fixed merge tests for Places; fixed init for PlaceNames with source 2015-05-26 22:03:07 -04:00
Bernard Banko
c3a4f85e72 new framework slovenian datehandler and plural forms correction in sl.po
Inflections corrected in sl.po

Date parser corrected

Plural forms expression corrected. Range, Span, Estimated, Calculated precised.

Estimated and Calculated strings added.

updated sl.po
2015-05-26 23:02:36 +02:00
Nick Hall
cc6820f80c GEPS 036: Add date and language to place names 2015-05-26 21:12:36 +01:00
Jérôme Rapinat
e448272259 8583: Custom Events not shown in the filter siderbar 2015-05-26 20:59:19 +02:00
Jérôme Rapinat
24bf67db3c 4161: Fix empty #buri fields
Still present on Geneweb 6 and 7alpha

patch by 'hmmmpf'
2015-05-26 20:30:43 +02:00
Enno Borgsteede
afe7fa39f9 : Fix a baptism date error
https://gramps-project.org/bugs/view.php?id=8548#c41455

also reported and patched by 'hmmmpf' on 
2015-05-26 20:23:21 +02:00
Jérôme Rapinat
fd90c19515 update french translation 2015-05-26 19:30:46 +02:00
Doug Blank
124b45eccc Merge branch 'master' of https://github.com/gramps-project/gramps 2015-05-26 13:22:03 -04:00
Doug Blank
9c9dc2c8e2 7143: Database Differences Report fails on gpkg with media
Added return values on imports, so we can tell the difference
between failure and success. Return value of None means failed.

Now, all importers should return an ImportInfo object.

The Differences will now stop if there is an error (such as
existing media directory.)
2015-05-26 13:19:03 -04:00
Jérôme Rapinat
0c232eb807 update translation template 2015-05-26 19:11:40 +02:00
Jérôme Rapinat
d2d2f4cf9e Missing place filter rule for translation
$ intltool-update -m command
2015-05-26 19:09:53 +02:00
Jérôme Rapinat
001744d5f7 8567: Imprecise French translation in Place dialog
'Enclosed by' was translated in French by 'Lié à'
2015-05-26 18:57:29 +02:00
Doug Blank
0a0fbc6d6a Add webapp fixtures to .gitignore 2015-05-25 20:24:47 -04:00
Paul Franklin
9af365c2b0 new translation template (gramps.pot) for "master" 2015-05-24 21:53:47 -07:00
Paul Franklin
e016199958 tweak POTFILES yet more (glade files) 2015-05-24 21:45:58 -07:00
Doug Blank
ef646190d9 4221: Deleting Multiple Items Dialogue Unclear 2015-05-24 18:33:09 -04:00
Doug Blank
c2d4e0c7ba Merge pull request from belissent/belissent/gramps41
Modification for example.gramps database
(custom parent relationship, notes)
2015-05-24 18:01:47 -04:00
Doug Blank
abbe27f53a Make Family muli-select remove operate like the People view 2015-05-24 16:46:45 -04:00
Doug Blank
eaf0061087 Give previous/proper message when deleting 1 person 2015-05-24 15:54:25 -04:00
Doug Blank
dfb45bdc5d Refined MultiSelectDialog to do all of the work 2015-05-24 15:48:23 -04:00
Nick Hall
015f882826 Fix mistake in alignment conversion 2015-05-24 16:09:40 +01:00
Doug Blank
2835f51fb6 7822: Yes To All button; added MultiSelectDialog, and use in remove multiple people 2015-05-24 11:05:45 -04:00
Josip
b363360ac8 8579: Creation of Narration Website report fails 2015-05-24 12:20:00 +02:00
Doug Blank
75cc4fb721 Fixed GW import issue with citation handles 2015-05-23 07:58:28 -04:00
Nick Hall
8fd1a93f97 Specify label keyword in Label constructor 2015-05-23 00:19:18 +01:00
Nick Hall
0f079c4320 Another escape change from cgi to html 2015-05-23 00:01:24 +01:00
Nick Hall
53887d2033 Specify label keyword in Button constructor 2015-05-22 23:35:10 +01:00
Nick Hall
ae1af073a7 Use icon names for drag source 2015-05-22 23:29:23 +01:00
Nick Hall
f2f78ef2f4 Convert deprecated set_alignment method 2015-05-22 23:22:11 +01:00
Nick Hall
9790890e02 Fix popup menu 2015-05-22 23:21:53 +01:00
Nick Hall
b0c82f6b6e Fix syntax error 2015-05-22 23:21:53 +01:00
Doug Blank
b8ffc8a77d Diff struct comparison, can be a list 2015-05-22 14:25:40 -04:00
Nick Hall
e554e324af Set new button labels as translatable 2015-05-22 18:13:07 +01:00
Nick Hall
cd1a6ba45a Use add instead of add_with_viewport
The add method adds a viewport where necessary when adding a
child to a scrolled window.  The add_with_viewport method is
deprecated.
2015-05-22 17:53:03 +01:00
Josip
dd68fbf75d 8398: lock.file with accent letter cause gramps to crash at start 2015-05-22 18:48:49 +02:00
Nick Hall
e355a93dc1 Use escape utility from html rather than cgi module 2015-05-22 14:50:19 +01:00
Nick Hall
e5591da496 Specify required Pango and PangoCairo version 2015-05-21 23:01:57 +01:00
Nick Hall
56d83c1c5c Remove deprecated show-unicode-menu setting 2015-05-21 21:15:03 +01:00
Nick Hall
75009f0fe0 Convert deprecated stock items in glade files 2015-05-21 21:05:30 +01:00
Paul Franklin
bd5d463299 tweak POTFILES some more 2015-05-21 10:13:11 -07:00
Paul Franklin
4cab86897f tweak POTFILES 2015-05-21 09:42:00 -07:00
Nick Hall
457ed21c6c Replace stock items with named icons
Stock items have been deprecated since 3.10.
Named icons are now loaded from the default icon theme.
2015-05-20 18:54:26 +01:00
=Matti Niemelä
293556b88e updated Finnish translation (for trunk-master) 2015-05-19 23:06:00 -07:00
Paul Franklin
ec0c705b55 slight tweaks to calendat-type reports 2015-05-19 23:01:27 -07:00
Nick Hall
f125a982d6 Remove SourceForge username from authors file
This was used by the svn2cl utility to generate a change log.
2015-05-18 14:59:57 +01:00
SNoiraud
9e648b0de5 Geography : feature request for kml files loading. 2015-05-17 12:54:51 +02:00
Leonhaeuser
9e7ec88d3f update German translation 2015-05-17 11:39:19 +02:00
Paul Franklin
cd8a0cd2f2 new translation template (gramps.pot) for "master" 2015-05-16 20:31:52 -07:00
Paul Franklin
2bf4718af7 add a gramps-XML file to test date formats in different locales 2015-05-16 20:25:21 -07:00
Paul Franklin
cbe83feeaa tweaks to Chinese date handlers (fix parsing, reduce date formats) 2015-05-16 20:20:01 -07:00
Paul Franklin
0ad582f7b0 fix date display when month is zero but day is not (see 8477) 2015-05-16 20:15:03 -07:00
Josip
6e0e7d3763 Fix AgeStats gramplet 2015-05-16 16:43:48 +02:00
Doug Blank
9f8ffc5226 8564: Recursion error when filtering for relatives 2015-05-15 23:30:31 -04:00
Josip
612c4665ae add parent to gedcom import report dialog 2015-05-16 03:56:09 +02:00
Josip
11878e41f4 8497: Error on use of Ctrl-Z 2015-05-16 02:46:49 +02:00
Nick Hall
e3ba779edb Convert deprecated xpad and ypad properties 2015-05-15 22:20:48 +01:00
Nick Hall
87022267d9 Convert deprecated xalign and yalign properties 2015-05-15 19:02:08 +01:00
Matti Niemelä
36bb4471a3 updated Finnish translation (for trunk-master) 2015-05-15 00:42:07 -07:00
Paul Franklin
578cdf6c79 8413: Finnish Date format settings does nothing
The corresponding fi.po, with month inflections, is from:
Matti Niemelä <matti.u.niemela@gmail.com>
2015-05-15 00:37:37 -07:00
Nick Hall
d7719962fd 8427: Add new IsEnclosedBy rule 2015-05-14 23:47:03 +01:00
Nick Hall
2b90e90987 Remove deprecated rules hint setting 2015-05-14 23:12:47 +01:00
Doug Blank
b2606fb6d3 Gramps 4.2 addons URL from github 2015-05-14 15:12:56 -04:00
Nick Hall
cde99b6f24 Remove deprecated resize mode 2015-05-14 18:54:27 +01:00
Paul Franklin
74e90431c0 8109: fixes for Japanese date parser 2015-05-14 00:33:58 -07:00
Paul Franklin
3d9d9e2851 fix numeric date parser pathological case 2015-05-14 00:31:18 -07:00
Doug Blank
35a38bc2bd DbDjango: added load() for delayed init 2015-05-13 07:29:16 -04:00
Doug Blank
ad1babbd4c DbDjango: added missing methods 2015-05-12 22:10:40 -04:00
Nick Hall
f0bfce68c2 Add a title preview to the place editors 2015-05-12 23:00:20 +01:00
Nick Hall
0eb027a095 Update required gtk version in glade files 2015-05-12 21:21:28 +01:00
Nick Hall
d8946d75ac Hide place title field in place editor
Add option in preferences to display legacy title field.  Hide by default.
2015-05-12 21:00:25 +01:00
Bernard Banko
9e468c7cd8 modified: po/sl.po 2015-05-11 20:20:41 -07:00
Doug Blank
f74f4942d5 DbDjango: method to checkpoint modules, to allow reloading Django 2015-05-11 21:17:57 -04:00
Doug Blank
b615fcb93c DbDjango: Removed debugging code 2015-05-11 18:24:03 -04:00
Doug Blank
aabd158944 DbDjango: use Gramps signals; to update, delete and add;
tag change from tuple to list--must match exactly:
[] does not match ()
2015-05-11 16:53:43 -04:00
Doug Blank
3a38f21eb7 DbDjango: return a default person 2015-05-11 13:04:43 -04:00
Doug Blank
89e20b90b7 Webapp: added databases directory; changed semantics of save_cache;
working signals, for the most part
2015-05-11 12:36:35 -04:00
Doug Blank
03b78a0884 DbDjango database works read-only in Gtk Gramps
These changes add most of what is necessary to use DbDjango as
a full database to Gtk Gramps.
2015-05-10 22:43:51 -04:00
Doug Blank
ccbab78fbc Allow database-changed signal to work with more general databases 2015-05-10 22:42:30 -04:00
Josip
306ede4e8e Set transient parent for errorview and errorreportassistant 2015-05-10 21:07:41 +02:00
Josip
b966ba74af 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-10 21:07:40 +02:00
Doug Blank
d57fccc9c6 Webapp: bare minimum to use a Django database with Gtk Gramps 2015-05-10 13:59:20 -04:00
Doug Blank
c8fa5169b5 Base db: at least have right signature for NotImplemented 2015-05-10 13:25:06 -04:00
Doug Blank
4a1a42783a Webapp: updated copyright to 2015 2015-05-10 09:56:26 -04:00
Doug Blank
45a1e17bd7 Webapp: Django 1.6 and Python3 fixes 2015-05-09 22:02:24 -04:00
Doug Blank
4e0927eba4 Back to being able to import; need to decide how to store alt_name_list 2015-05-09 21:29:48 -04:00
Doug Blank
40fa203659 pyicu: pin at version 1.8, until they fix 1.9 installer 2015-05-09 21:17:01 -04:00
Doug Blank
5fde29a34c django.setup() now required; bringing database up to date
with current gramps (missing db.is_empty())
2015-05-09 18:07:54 -04:00
Doug Blank
0360a5987e Bringing webapp up to date with python3 and django 1.6 2015-05-09 17:52:11 -04:00
Doug Blank
dfe88deeda Merge pull request from RossGammon/find-admin-resources
Adds 'django.contrib.staticfiles' to INSTALLED_APPS
2015-05-09 17:51:07 -04:00
Doug Blank
2ad372bcba Added right-click "Copy all" to all QuickTables.
This currently copies all data from the TreeView to the clipboard,
including non-viewed columns.

Refactored rows2text to model_to_text, and moved to gramps.gui.utils

Added text_to_clipboard to gramps.gui.utils as well.
2015-05-09 09:49:19 -04:00
Paul Kilgo
23f46f6679 Enable the django.contrib.staticfiles app so admin panel finds its resources
Part of a commit cherry-picked from Paul Kilgo's fork
2015-05-09 14:12:44 +02:00
Ross Gammon
d890942b43 Merge branch 'master' of https://github.com/RossGammon/gramps 2015-05-09 14:05:52 +02:00
Josip
f4f83e456e 8445: Drag & Drop to add media: wrong handling of non-ascii characters 2015-05-09 00:53:53 +02:00
Doug Blank
53a00dd2d2 Bring webapp in master up to Django, version 1.6.1 2015-05-09 00:31:36 +02:00
Doug Blank
a566be07a5 Turn underscores in menuitems into mnemonic accelerator key 2015-05-09 00:31:36 +02:00
Doug Blank
c6ad403cab Add execute permissions and she-bang python3 to Gramps.py 2015-05-09 00:31:35 +02:00
Doug Blank
ecac48e5b1 Added right-click API to ListModel; allow copy all from Descendants
Gramplet.
2015-05-09 00:31:35 +02:00
Doug Blank
774855496f 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
2015-05-09 00:31:35 +02:00
Doug Blank
b86ec4ffe9 Fixed QuestionDialog2 failure 2015-05-09 00:31:35 +02:00
Josip
710f7eab3c 8128: GtkDialog mapped without a transient parent 2015-05-09 00:31:35 +02:00
Josip
f7c6acaec8 8469: GUI allows multiple Find Duplicates, then faults 2015-05-09 00:31:35 +02:00
Jérôme Rapinat
92709c2fb0 8532: typo on the french translation
plural = single form for month(s) (moi => mois)
2015-05-09 00:31:35 +02:00
Paul Franklin
ad404317cb new translation template (gramps.pot) for "master" 2015-05-09 00:31:35 +02:00
Paul Franklin
49d195037d remove ambiguous strings to make update_po.py happy 2015-05-09 00:31:35 +02:00
Paul Franklin
2cfe156ad8 7541: Add places in rel_graph 2015-05-09 00:31:35 +02:00
Paul Franklin
3294c07275 8182: Complete Individual Report - Family Notes 2015-05-09 00:31:35 +02:00
Paul Franklin
befddcbfb6 enable localized span and range date displayer code 2015-05-09 00:31:35 +02:00
Paul Franklin
f8b74490b7 cover two pathological place=None cases in family-group report 2015-05-09 00:31:35 +02:00
SNoiraud
aee8c07c83 narrativeweb : bug 8528 : local variable 'body' referenced before assignment 2015-05-09 00:31:35 +02:00
Fabrice Arbogast
42df438ea0 8225 8311: Crash on geneweb export with python3 2015-05-09 00:31:34 +02:00
John Ralls
dbc68eef53 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.
2015-05-09 00:31:34 +02:00
John Ralls
816b05b7e8 Fix a bundling omission and create python2 and python3 meta-modules.
The latter to improve automation.
2015-05-09 00:31:34 +02:00
kulath
52ce4883ed 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-05-09 00:31:34 +02:00
Paul Franklin
007c05086c Update _datedisplay.py 2015-05-09 00:31:34 +02:00
Jérôme Rapinat
ef8f197afd 8213: event columns too narrow
Web_Basic-Cypress stylesheet improvements
2015-05-09 00:31:34 +02:00
SNoiraud
d2a49ffb98 Geography : bug 8499 : follow fix a bad copy/past 2015-05-09 00:31:34 +02:00
John Ralls
42e52f9d3e Fix gtk-critical error when setting mac menubar. 2015-05-09 00:31:34 +02:00
Josip
d6f1c65325 Deprecated (since gtk-3.0): Gtk.Widget.modify_font 2015-05-09 00:31:34 +02:00
Zdeněk Hataš
dfeaedb261 czech translation update 2015-05-09 00:31:34 +02:00
Paul Franklin
5eb92f6f6f new translation template (gramps.pot) for "master" 2015-05-09 00:31:34 +02:00
Craig J. Anderson
bf7e9d6b0b New 'Include Siblings' feature added.
and got things ready for the report to go in multiple directions
2015-05-09 00:31:34 +02:00
Josip
ad42e741e2 fix typo in commit 7a507a6 2015-05-09 00:31:34 +02:00
Josip
34c0668866 8473: problem by start program 2015-05-09 00:31:33 +02:00
kulath
ac85b4eca3 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-05-09 00:31:33 +02:00
Enno Borgsteede
47dab1e0fe 8483: db upgrade fails, fatal damage 2015-05-09 00:31:33 +02:00
Paul Franklin
9f85c03278 fix some check_po complaints 2015-05-09 00:31:33 +02:00
Paul Franklin
83c689dd87 8477: date format month/year is not well reported at editing time 2015-05-09 00:31:33 +02:00
Leonhaeuser
8c7aa07992 update German translation 2015-05-09 00:31:33 +02:00
Craig J. Anderson
ec02e74371 minor updates 2015-05-09 00:31:33 +02:00
Sebastian Schubert
114decfb3d Make place type in Place Reference Editor editable, add tooltip 2015-05-09 00:31:33 +02:00
Craig J. Anderson
74e5f0dc2c Updated library recursive routines. Not used (yet) 2015-05-09 00:31:33 +02:00
Paul Franklin
63af2bd82c make report name consistent with gpr registration 2015-05-09 00:31:33 +02:00
Dale Athanasias
bf6fe1bf36 mention 1.8 is LTS 2015-05-09 00:31:33 +02:00
Leonhaeuser
618fd83f22 update German translation 2015-05-09 00:31:32 +02:00
Dale Athanasias
9abd7fed10 Rename readme.md to README.md 2015-05-09 00:31:32 +02:00
Dale Athanasias
6f76538f95 Create readme with existing instructions.
Copied from http://sourceforge.net/projects/gramps/files/Unstable/readme.rst

Have not managed to get this running yet.
2015-05-09 00:31:32 +02:00
Dale Athanasias
56841abd92 Mark a TODO 2015-05-09 00:31:32 +02:00
Dale Athanasias
33a702474f Mention Git 2015-05-09 00:31:32 +02:00
Doug Blank
79d6f886f9 Travis: Pin Django at version 1.7 2015-05-09 00:31:32 +02:00
Dale Athanasias
ee6c787ef9 Update __init__.py
make it clearer
2015-05-09 00:31:32 +02:00
Dale Athanasias
6ce4f458ad Update COPYING-DOCS
A few fixes since you guys are now on Github, good move by the way.
2015-05-09 00:31:32 +02:00
Paul Franklin
1ee7409866 make reports' privacy option more prominent, harder to miss 2015-05-09 00:31:32 +02:00
Paul Franklin
bfcf2110ec new translation template (gramps.pot) for "master" 2015-05-09 00:31:32 +02:00
Nemeséri Lajos
ae2223bd8b update Hungarian translation 2015-05-09 00:31:32 +02:00
Jérôme Rapinat
a7d63e2eee 6403: false positive on pattern 2015-05-09 00:31:32 +02:00
kulath
e74955d5f8 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-05-09 00:31:32 +02:00
Jérôme Rapinat
50ce6c6c79 6403: add a rule for checking mapping key 2015-05-09 00:31:31 +02:00
Matt Keenan
d94e67399e 8468: GuiColorOption missing avail-changed event handler 2015-05-09 00:31:31 +02:00
Nick Hall
af41f88760 8128: Add transient parent to editor warning dialog 2015-05-09 00:31:31 +02:00
kulath
506e380431 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-05-09 00:31:31 +02:00
Paul Franklin
f6859e21bf tweak report's filter option to display per the report's name-format 2015-05-09 00:31:31 +02:00
Paul Franklin
3cfbc16ff5 tweak report's filter option to display per the report's name-format 2015-05-09 00:31:31 +02:00
Paul Franklin
9900edc5c1 add filter name to report's title, tweak report's filter option display 2015-05-09 00:31:31 +02:00
Paul Franklin
aceb7430bd tweak report's filter option to display per the report's name-format 2015-05-09 00:31:31 +02:00
Paul Franklin
5795edd6ed tweak report's filter option to display per the report's name-format 2015-05-09 00:31:31 +02:00
Paul Franklin
303d830a36 add name-format option, and deferred translation to report's second line 2015-05-09 00:31:31 +02:00
Paul Franklin
4bd3e77d99 add deferred translation to report's second line 2015-05-09 00:31:31 +02:00
Nemeséri Lajos
b8f5c482d1 merge Hungarian translation 2015-05-09 00:31:31 +02:00
Jérôme Rapinat
36e57ad59f update Hungarian translation 2015-05-09 00:31:30 +02:00
Paul Franklin
014507ad88 slight tweak to name-format option 2015-05-09 00:31:30 +02:00
Paul Franklin
30fd78ccf1 add another missing import 2015-05-09 00:31:30 +02:00
Paul Franklin
5d87d712f5 add missing import 2015-05-09 00:31:30 +02:00
Paul Franklin
18300e28de slight tweak to name_format option 2015-05-09 00:31:30 +02:00
Paul Franklin
2cd8de2313 enable deferred translation of get_person_filters filter list 2015-05-09 00:31:30 +02:00
Paul Franklin
82d6e5d215 add DeferredFilter class (a subclass of GenericFilter) 2015-05-09 00:31:30 +02:00
kulath
e6cb3b1360 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-05-09 00:31:30 +02:00
erikdrgm
4c69260c4b Updated 150326 Dutch translation 2015-05-09 00:31:30 +02:00
Leonhaeuser
8db502cea5 update German translation 2015-05-09 00:31:29 +02:00
Jérôme Rapinat
4a088bae53 Remove --no-wrap option from merging
Consistency with most translation files
2015-05-09 00:31:29 +02:00
kulath
a6abc76a74 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-05-09 00:31:29 +02:00
Jérôme Rapinat
e1ff1a78b3 6403: remove markup in translation
new strings on style editor used old builder style
2015-05-09 00:31:29 +02:00
Sveinn í Felli
d772bb8357 Update Icelandic translation 2015-05-09 00:31:29 +02:00
Jérôme Rapinat
4326d00591 quick test and update 2015-05-09 00:31:29 +02:00
Jérôme Rapinat
5180620a49 fix confusing strings
update tempate

xgettext prior to 0.18.3 leads to error

try to limit bsddb3 mistake on new installation
2015-05-09 00:31:29 +02:00
Paul Franklin
e9741e138d move some unrelated comments away from translated strings 2015-05-09 00:31:29 +02:00
Paul Franklin
cf4f3f549f typo 2015-05-09 00:31:28 +02:00
Leonhaeuser
988797dc21 update German translation 2015-05-09 00:31:28 +02:00
kulath
075f2ccb7b 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-05-09 00:31:28 +02:00
John Ralls
3f23c2c5cd Updates for building and bundling with Python3
Note that building currently requires bouncing back and forth between python2 and python3.
2015-05-09 00:31:28 +02:00
Paul Franklin
092a9025dc fix date displayer TODO: estimated and calculated month inflections 2015-05-09 00:31:28 +02:00
Leonhaeuser
9877666fa5 small fix in German translation 2015-05-09 00:31:28 +02:00
Paul Franklin
35e42dbd06 update "master" da.po (with "update_po.py -m da.po") 2015-05-09 00:31:28 +02:00
erikdrgm
71e3729b14 Updated 150320 Dutch translation 2015-05-09 00:31:27 +02:00
Jérôme Rapinat
20ec704d5d Update french translation 2015-05-09 00:31:27 +02:00
Jérôme Rapinat
2e2c32708f Test merging on french translation 2015-05-09 00:31:27 +02:00
Jérôme Rapinat
68f319052c tweak, polish argument for encoding 2015-05-09 00:31:27 +02:00
Jérôme Rapinat
dcdf2be76f Improve TipsParse for python3 support 2015-05-09 00:31:27 +02:00
Paul Franklin
16ef886292 new translation template (gramps.pot) for "master" 2015-05-09 00:31:27 +02:00
Paul Franklin
a9806d649e slight tweak to date displayer, for Finnish 2015-05-09 00:31:27 +02:00
SNoiraud
5af8c0d992 geography: bad copy/paste. Points are at the same level. 2015-05-09 00:31:27 +02:00
SNoiraud
a40f3e70cf geography: bug8450: Attempting to add a bookmark causes an error. 2015-05-09 00:31:27 +02:00
Paul Franklin
6ca9487709 remove unneeded code 2015-05-09 00:31:27 +02:00
Jérôme Rapinat
a1f67b92e0 workaround before python3 support 2015-05-09 00:31:26 +02:00
Jérôme Rapinat
bc6cc2befe update template, one new string; 8103: sidebar gramplet does not fit well into Event and Citation views under french locale 2015-05-09 00:31:26 +02:00
Jérôme Rapinat
0ae571de7d 8451: Fix crash on Relationships Graph report with unknown gender, related sibling label and french locale 2015-05-09 00:31:26 +02:00
Zdeněk Hataš
ec427f602c czech translation update, POT update 2015-05-09 00:31:26 +02:00
Anthony Fok
d8b996212e Update Chinese translation 2015-05-09 00:31:26 +02:00
Leonhaeuser
796aaad339 fixed some errors in German translation 2015-05-09 00:31:25 +02:00
Paul Franklin
36e6ede0a2 7155: Support creating directories in various scenarios 2015-05-09 00:31:25 +02:00
Matti Niemelä
4ae9a23931 update Finniah translation (in master), by Matti Niemelä 2015-05-09 00:31:25 +02:00
Nick Hall
2f609d2f25 Add parent window to an update addons dialog 2015-05-09 00:31:24 +02:00
Doug Blank
59303fd7d0 Enable all tests, except those to be rewritten/excluded 2015-05-09 00:31:24 +02:00
Doug Blank
6e38945ab1 Fix and enable test_util_test 2015-05-09 00:31:24 +02:00
Nick Hall
28567ab58e Add parent windows to report dialogs 2015-05-09 00:31:24 +02:00
Nick Hall
a4f85f05ad Remove a couple a spare placeholders in glade file 2015-05-09 00:31:24 +02:00
Nick Hall
877a2e9e4e Remove default values from paper menu glade file
Setting default margins of 2.54 was causing a warning message when
the glade file was loaded.
2015-05-09 00:31:24 +02:00
erikdrgm
9422c088e9 Updated 150317 Dutch translation 2015-05-09 00:31:24 +02:00
SNoiraud
d36a72ee18 geography: bug 8450: Attempting to add a bookmark causes an error. 2015-05-09 00:31:24 +02:00
Mathieu MD
7ef7e3bbf5 8109: Japanese data localisation 2015-05-09 00:31:24 +02:00
SNoiraud
7afda11c9b geography : some minor tweaks for kml and prepare for feature request 08428 2015-05-09 00:31:24 +02:00
SNoiraud
588e2f9427 geography : some minor tweaks for kml and prepare for feature request 08428 2015-05-09 00:31:24 +02:00
Nick Hall
0affffb241 Fix transient parent window warnings 2015-05-09 00:31:24 +02:00
Nick Hall
edc3a001d6 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-05-09 00:31:24 +02:00
Sveinn í Felli
116e484fce update Icelandic translation 2015-05-09 00:31:23 +02:00
Nick Hall
c1a37c2dac Remove fallback to md5 module
All supported versions now include the hashlib module.
2015-05-09 00:31:23 +02:00
Doug Blank
e630c87f50 Update setup.py
Added missing commas
2015-05-09 00:31:23 +02:00
cadrlp
a3be3fd482 Point to User manual. 2015-05-09 00:31:23 +02:00
cadrlp
6c480baffe Year 2015
Update the year
2015-05-09 00:31:23 +02:00
cadrlp
7cef5babe7 Add Classifiers from Gramps pypi entry.
https://pypi.python.org/pypi/Gramps/
2015-05-09 00:31:23 +02:00
cadrlp
3a10a0fc04 Minor updates to FAQ
Remove section on Webhosting.
2015-05-09 00:31:23 +02:00
cadrlp
b0c2203b98 Lower Case Gramps
Be consistent with rest of project
2015-05-09 00:31:23 +02:00
cadrlp
663ec3f1d5 Minor updates to readme
Change to reflect Gramps 4.1 has been released.
2015-05-09 00:31:23 +02:00
Doug Blank
b2b514a390 Travis: add mock, prevents skips 2015-05-09 00:31:23 +02:00
Nick Hall
f7e3294a65 Convert remaining unicode literals 2015-05-09 00:31:23 +02:00
Zdeněk Hataš
a11245ef97 czech translation update 2015-05-09 00:31:23 +02:00
Nick Hall
92fe4cd7bc 8023: Remove HtmlView plugin 2015-05-09 00:31:22 +02:00
Doug Blank
5106de5687 Removed xml import test, as that is thoroughly tested elsewhere.
Removed excluded nosetests for Travis
2015-05-09 00:31:22 +02:00
Paul Franklin
8b360b4588 new gramps.pot for trunk-master 2015-05-09 00:31:22 +02:00
Doug Blank
aa1acac08f gi.overrides is no longer needed 2015-05-09 00:31:22 +02:00
Doug Blank
40cebe4893 Don't crash trying to create a Gdk.Cursor without a DISPLAY; enable more tests for Travis 2015-05-09 00:31:22 +02:00
erikdrgm
4e2a0ff1a5 Updated 150315 Dutch translation 2015-05-09 00:31:22 +02:00
erikdrgm
1ead84b831 Updated Dutch translation 2015-05-09 00:31:22 +02:00
Doug Blank
762323fac9 Travis: remove new test, until we can include it (xvfb, or avoid Gtk Cursor calls) 2015-05-09 00:31:21 +02:00
Doug Blank
d9b42ac2dc Travis: try using virtual frame buffer to test graphics 2015-05-09 00:31:21 +02:00
Doug Blank
88c06d41fb 8435: Crash when trying to link existing place as an enclosing place using P0001 number; added tests, updated Travis testing 2015-05-09 00:31:21 +02:00
Doug Blank
7970b04113 DictionaryDb: fixed return type in get_person_from_gramps_id; added get_place_from_gramps_id 2015-05-09 00:31:21 +02:00
Doug Blank
5cb0fa4ca5 Some issues comparing Today close to midnight, in Travis 2015-05-09 00:31:21 +02:00
Josip
ad54db2cb5 8023: HTML view fails to load
add encoding attribute
2015-05-09 00:31:21 +02:00
Nick Hall
102463d9ef Replace cuni with str 2015-05-09 00:31:21 +02:00
Nick Hall
1f922d17be Replace UNITYPE with str 2015-05-09 00:31:21 +02:00
Nick Hall
6033a2141e Replace STRTYPE with str 2015-05-09 00:31:20 +02:00
Nick Hall
8c18eae777 Replace conv_to_unicode_direct with str 2015-05-09 00:31:20 +02:00
Nick Hall
66c410f55e Remove uni_to_gui function
We no longer need to convert strings to utf8 before passing them
to Gtk functions.
2015-05-09 00:31:20 +02:00
Nick Hall
3195f10a36 Fix failing unit test 2015-05-09 00:31:20 +02:00
Nick Hall
37ff832288 Remove use-bsddb3 configuration setting 2015-05-09 00:31:20 +02:00
Nick Hall
caac0901cb Remove python2 specific code 2015-05-09 00:31:19 +02:00
Zdeněk Hataš
70c11878f4 czech translation update 2015-05-09 00:31:19 +02:00
Nick Hall
2ee685e71b Remove imports from __future__ module 2015-05-09 00:31:19 +02:00
Nick Hall
906b9e737d Increase minimum Gtk version required to 3.10 2015-05-09 00:31:19 +02:00
Doug Blank
b401741143 Bring webapp in master up to Django, version 1.6.1 2015-05-08 10:54:35 -04:00
Doug Blank
4566c62014 Turn underscores in menuitems into mnemonic accelerator key 2015-05-08 08:58:13 -04:00
Doug Blank
b14a2abdfc Add execute permissions and she-bang python3 to Gramps.py 2015-05-08 08:56:49 -04:00
Doug Blank
7967f47934 Merge pull request from dsblank/master
Added right-click API to ListModel; allow copy all from Descendants
2015-05-07 13:04:51 -04:00
Doug Blank
c5cf398e64 Added right-click API to ListModel; allow copy all from Descendants
Gramplet.
2015-05-07 12:04:14 -04:00
Doug Blank
7c9fd0ae63 Merge branch 'master' of https://github.com/gramps-project/gramps 2015-05-05 13:29:26 -04:00
Doug Blank
5149ac7554 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
2015-05-05 13:25:20 -04:00
Doug Blank
f7dc7ba859 Fixed QuestionDialog2 failure 2015-05-05 11:28:35 -04:00
Josip
e172b6520d 8128: GtkDialog mapped without a transient parent 2015-05-03 20:04:28 +02:00
Josip
1e9f1dbb3e 8469: GUI allows multiple Find Duplicates, then faults 2015-05-03 15:43:32 +02:00
Jérôme Rapinat
8b934fd651 8532: typo on the french translation
plural = single form for month(s) (moi => mois)
2015-05-02 17:00:59 +02:00
Paul Franklin
d73b9e9249 new translation template (gramps.pot) for "master" 2015-05-01 22:40:12 -07:00
Paul Franklin
0b35e90fc1 remove ambiguous strings to make update_po.py happy 2015-05-01 22:39:08 -07:00
Paul Franklin
7be52a96fd 7541: Add places in rel_graph 2015-05-01 21:04:06 -07:00
Paul Franklin
8ac6617e71 8182: Complete Individual Report - Family Notes 2015-05-01 20:31:32 -07:00
Paul Franklin
f9f369fb03 enable localized span and range date displayer code 2015-05-01 20:03:16 -07:00
Paul Franklin
1d9391dfc9 cover two pathological place=None cases in family-group report 2015-05-01 19:42:42 -07:00
SNoiraud
5ccd4a4377 narrativeweb : bug 8528 : local variable 'body' referenced before assignment 2015-05-01 10:33:43 +02:00
Fabrice Arbogast
e1621b70a8 8225 8311: Crash on geneweb export with python3 2015-04-30 17:23:58 +02:00
John Ralls
c11c63169f 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.
2015-04-25 16:47:43 -07:00
John Ralls
cfb9f64db9 Fix a bundling omission and create python2 and python3 meta-modules.
The latter to improve automation.
2015-04-25 15:02:09 -07:00
kulath
c36ddf0845 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:52:25 +01:00
Paul Franklin
b79b2c3955 Update _datedisplay.py 2015-04-18 15:35:02 -07:00
Jérôme Rapinat
152535f61b 8213: event columns too narrow
Web_Basic-Cypress stylesheet improvements
2015-04-18 16:07:12 +02:00
SNoiraud
3dd194698a Geography : bug 8499 : follow fix a bad copy/past 2015-04-18 11:53:17 +02:00
John Ralls
3147cf5a2b Fix gtk-critical error when setting mac menubar. 2015-04-17 15:13:13 -07:00
Josip
8e8c206a8f Deprecated (since gtk-3.0): Gtk.Widget.modify_font 2015-04-17 12:42:50 +02:00
Zdeněk Hataš
cb8e726f2b czech translation update 2015-04-17 08:39:59 +02:00
Paul Franklin
7a6879999d new translation template (gramps.pot) for "master" 2015-04-17 08:39:59 +02:00
Craig J. Anderson
64db425ab0 New 'Include Siblings' feature added.
and got things ready for the report to go in multiple directions
2015-04-13 14:11:37 -04:00
Josip
bb1e5f4e3d fix typo in commit 7a507a6 2015-04-13 10:01:13 +02:00
Josip
7a507a6b01 8473: problem by start program 2015-04-13 01:23:53 +02:00
kulath
0e19785b92 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:42 +01:00
Enno Borgsteede
4bd5faf446 8483: db upgrade fails, fatal damage 2015-04-12 10:44:10 -07:00
Paul Franklin
a02c68edfb fix some check_po complaints 2015-04-11 18:54:24 -07:00
Nick Hall
1f5c8be4db Merge pull request from sebschub/master
Make place type in Place Reference Editor editable, add tooltip (master)
2015-04-10 19:14:41 +01:00
Paul Franklin
d86aa283eb 8477: date format month/year is not well reported at editing time 2015-04-09 22:07:41 -07:00
Leonhaeuser
8069855017 update German translation 2015-04-09 21:43:27 +02:00
Craig J. Anderson
7f180f3883 minor updates 2015-04-09 09:04:22 -04:00
Sebastian Schubert
f7f0f60d8b Make place type in Place Reference Editor editable, add tooltip 2015-04-09 14:23:31 +02:00
Craig J. Anderson
1d1a4de566 Updated library recursive routines. Not used (yet) 2015-04-07 10:07:45 -04:00
Doug Blank
ef965caf4a Merge pull request from daleathan/patch-3
Mark a TODO
2015-04-06 21:21:47 -04:00
Doug Blank
2e6fbc5e6e Merge pull request from daleathan/patch-1
Mention Git
2015-04-06 21:19:54 -04:00
Doug Blank
7e1ba04faa Merge pull request from daleathan/patch-4
Create readme with existing instructions.
2015-04-05 13:44:39 -04:00
Paul Franklin
70a7922b9d make report name consistent with gpr registration 2015-04-05 09:47:02 -07:00
Dale Athanasias
c886725e3b mention 1.8 is LTS 2015-04-05 08:28:07 +10:00
Leonhaeuser
f886698723 update German translation 2015-04-05 00:20:22 +02:00
Dale Athanasias
b384635529 Rename readme.md to README.md 2015-04-05 07:59:21 +10:00
Dale Athanasias
c40d2d200d Create readme with existing instructions.
Copied from http://sourceforge.net/projects/gramps/files/Unstable/readme.rst

Have not managed to get this running yet.
2015-04-04 15:28:09 +11:00
Dale Athanasias
d4310848e9 Mark a TODO 2015-04-04 10:33:35 +11:00
Dale Athanasias
f81673cdac Mention Git 2015-04-04 10:25:04 +11:00
Doug Blank
7a3941e80e Merge pull request from daleathan/patch-2
Update __init__.py
2015-04-02 23:16:33 -04:00
Doug Blank
3af6e0853d Merge pull request from daleathan/patch-1
Update COPYING-DOCS
2015-04-02 23:15:05 -04:00
Doug Blank
35440f241a Travis: Pin Django at version 1.7 2015-04-02 23:02:00 -04:00
Dale Athanasias
9e22e94645 Update __init__.py
make it clearer
2015-04-03 13:28:54 +11:00
Dale Athanasias
200ffd385d Update COPYING-DOCS
A few fixes since you guys are now on Github, good move by the way.
2015-04-03 13:20:27 +11:00
Paul Franklin
1ee9c60814 make reports' privacy option more prominent, harder to miss 2015-04-01 12:30:55 -07:00
Paul Franklin
e4b2cf9583 new translation template (gramps.pot) for "master" 2015-04-01 10:37:55 -07:00
Nemeséri Lajos
deeb408690 update Hungarian translation 2015-04-01 16:05:20 +02:00
Jérôme Rapinat
50c1080d37 6403: false positive on pattern 2015-04-01 15:46:03 +02:00
kulath
5af7335e54 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:50:37 +01:00
Jérôme Rapinat
b5610e9d5f 6403: add a rule for checking mapping key 2015-04-01 15:30:47 +02:00
Matt Keenan
ef19a11889 8468: GuiColorOption missing avail-changed event handler 2015-03-31 10:22:54 -07:00
Nick Hall
d6c6d208c5 8128: Add transient parent to editor warning dialog 2015-03-31 16:46:58 +01:00
kulath
54dde99ad0 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:49:04 +01:00
Paul Franklin
042f57d2e9 tweak report's filter option to display per the report's name-format 2015-03-30 13:05:55 -07:00
Paul Franklin
9ce42f7174 tweak report's filter option to display per the report's name-format 2015-03-30 13:02:41 -07:00
Paul Franklin
d984e5796b add filter name to report's title, tweak report's filter option display 2015-03-30 12:55:51 -07:00
Paul Franklin
f53d6482da tweak report's filter option to display per the report's name-format 2015-03-30 12:47:30 -07:00
Paul Franklin
d1653be44d tweak report's filter option to display per the report's name-format 2015-03-30 12:42:57 -07:00
Paul Franklin
e25a2d23e2 add name-format option, and deferred translation to report's second line 2015-03-30 12:31:25 -07:00
Paul Franklin
0657680432 add deferred translation to report's second line 2015-03-30 12:19:15 -07:00
Nemeséri Lajos
7ab417da94 merge Hungarian translation 2015-03-30 14:43:20 +02:00
Jérôme Rapinat
a9a91b19c9 update Hungarian translation 2015-03-30 14:41:45 +02:00
Paul Franklin
5dba5711b9 slight tweak to name-format option 2015-03-29 10:11:28 -07:00
Paul Franklin
1fff4e7b0c add another missing import 2015-03-28 13:19:49 -07:00
Paul Franklin
946a4fbd2b add missing import 2015-03-27 09:11:20 -07:00
Paul Franklin
57acf9d21a slight tweak to name_format option 2015-03-26 22:03:35 -07:00
Paul Franklin
6961361c61 enable deferred translation of get_person_filters filter list 2015-03-26 21:47:34 -07:00
Paul Franklin
41d9bbe4c0 add DeferredFilter class (a subclass of GenericFilter) 2015-03-26 21:45:47 -07:00
kulath
2a1da2efba 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:19:26 +00:00
erikdrgm
a8f08749d4 Updated 150326 Dutch translation 2015-03-26 10:22:31 +01:00
Leonhaeuser
afb6603b27 update German translation 2015-03-26 02:14:16 +01:00
Jérôme Rapinat
99d38a539e Remove --no-wrap option from merging
Consistency with most translation files
2015-03-25 19:53:20 +01:00
Jérôme Rapinat
a40fbc1716 Merge branch 'master' of github.com:gramps-project/gramps 2015-03-25 19:25:06 +01:00
kulath
a15bfd98df 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:30:05 +00:00
Jérôme Rapinat
c2adf1be01 6403: remove markup in translation
new strings on style editor used old builder style
2015-03-25 19:24:47 +01:00
Sveinn í Felli
a550abe41b Update Icelandic translation 2015-03-25 19:09:32 +01:00
Jérôme Rapinat
7000992bf0 quick test and update 2015-03-25 19:05:28 +01:00
Jérôme Rapinat
4a06f9c0e3 fix confusing strings
update tempate

xgettext prior to 0.18.3 leads to error

try to limit bsddb3 mistake on new installation
2015-03-25 18:58:15 +01:00
Paul Franklin
98e21d9fb9 move some unrelated comments away from translated strings 2015-03-25 09:23:36 -07:00
Paul Franklin
336d627b6d typo 2015-03-24 22:40:37 -07:00
Leonhaeuser
1bd9ec19df update German translation 2015-03-25 00:11:27 +01:00
kulath
0f5bbce528 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 15:24:28 +00:00
John Ralls
0eff99871a Updates for building and bundling with Python3
Note that building currently requires bouncing back and forth between python2 and python3.
2015-03-23 11:00:25 +09:00
Paul Franklin
d42a8b7adb fix date displayer TODO: estimated and calculated month inflections 2015-03-21 12:49:26 -07:00
Leonhaeuser
c6052e12fe small fix in German translation 2015-03-21 16:57:54 +01:00
Paul Franklin
553de2ce24 update "master" da.po (with "update_po.py -m da.po") 2015-03-20 09:46:08 -07:00
erikdrgm
99ab72ff82 Updated 150320 Dutch translation 2015-03-20 11:06:48 +01:00
Jérôme Rapinat
0700a8c25d Update french translation 2015-03-20 10:54:53 +01:00
Jérôme Rapinat
94c293ab5e Test merging on french translation 2015-03-20 09:47:22 +01:00
Jérôme Rapinat
1e0d34dc4f tweak, polish argument for encoding 2015-03-20 09:13:24 +01:00
Jérôme Rapinat
727d96cc22 Improve TipsParse for python3 support 2015-03-20 09:06:06 +01:00
Paul Franklin
f727d6b4a9 new translation template (gramps.pot) for "master" 2015-03-19 19:47:28 -07:00
Paul Franklin
8d0ae96b7d slight tweak to date displayer, for Finnish 2015-03-19 19:41:51 -07:00
Sam Manzi
8cf9e7324d Merge pull request from anthonyfok/l10n-chinese
Update Chinese translation
2015-03-20 12:59:35 +11:00
SNoiraud
a3c923d180 geography: bad copy/paste. Points are at the same level. 2015-03-19 19:45:20 +01:00
SNoiraud
115b16ffb7 geography: bug8450: Attempting to add a bookmark causes an error. 2015-03-19 19:28:58 +01:00
Paul Franklin
768dcbf112 remove unneeded code 2015-03-19 10:00:46 -07:00
Jérôme Rapinat
b324e0fb80 workaround before python3 support 2015-03-19 17:39:55 +01:00
Jérôme Rapinat
40da51849e update template, one new string; 8103: sidebar gramplet does not fit well into Event and Citation views under french locale 2015-03-19 15:36:50 +01:00
Jérôme Rapinat
be0744d454 8451: Fix crash on Relationships Graph report with unknown gender, related sibling label and french locale 2015-03-19 15:25:16 +01:00
Zdeněk Hataš
787c76e013 czech translation update, POT update 2015-03-19 08:42:25 +01:00
Anthony Fok
12d29e79f6 Update Chinese translation 2015-03-18 21:45:40 -06:00
Leonhaeuser
075a237873 fixed some errors in German translation 2015-03-19 02:06:16 +01:00
Paul Franklin
64ef033724 7155: Support creating directories in various scenarios 2015-03-18 14:01:13 -07:00
Matti Niemelä
c40ea85727 update Finniah translation (in master), by Matti Niemelä 2015-03-18 09:29:38 -07:00
Nick Hall
bf57632deb Add parent window to an update addons dialog 2015-03-18 10:08:04 +00:00
Doug Blank
35dead7b26 Enable all tests, except those to be rewritten/excluded 2015-03-18 03:57:27 -04:00
Doug Blank
ad1d47cc37 Fix and enable test_util_test 2015-03-18 03:25:39 -04:00
Nick Hall
43882165cf Add parent windows to report dialogs 2015-03-17 23:21:35 +00:00
Nick Hall
6100a5b7da Remove a couple a spare placeholders in glade file 2015-03-17 23:21:35 +00:00
Nick Hall
d095458ec0 Remove default values from paper menu glade file
Setting default margins of 2.54 was causing a warning message when
the glade file was loaded.
2015-03-17 23:21:35 +00:00
erikdrgm
5b39a018cf Updated 150317 Dutch translation 2015-03-17 21:33:33 +01:00
SNoiraud
e400ff6944 geography: bug 8450: Attempting to add a bookmark causes an error. 2015-03-17 21:08:08 +01:00
Mathieu MD
cc1ab8bac4 8109: Japanese data localisation 2015-03-17 12:35:26 -07:00
SNoiraud
bb30862c1b geography : some minor tweaks for kml and prepare for feature request 08428 2015-03-17 19:35:58 +01:00
SNoiraud
fdc42a9693 geography : some minor tweaks for kml and prepare for feature request 08428 2015-03-17 19:33:07 +01:00
Nick Hall
9fe9083e36 Fix transient parent window warnings 2015-03-17 17:40:04 +00:00
Nick Hall
13bee7cf26 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:03:03 +00:00
Sveinn í Felli
ec35a5d0cb update Icelandic translation 2015-03-16 16:19:02 +01:00
Nick Hall
4d66fbe8c3 Remove fallback to md5 module
All supported versions now include the hashlib module.
2015-03-16 14:20:19 +00:00
Doug Blank
b5fb4292c9 Merge pull request from sam-manzi/patch-5
Year 2015
2015-03-15 22:20:21 -04:00
Doug Blank
1d70822764 Update setup.py
Added missing commas
2015-03-15 22:13:24 -04:00
Doug Blank
41fad77bf9 Merge pull request from sam-manzi/patch-4
Add Classifiers from Gramps pypi entry.
2015-03-15 22:07:45 -04:00
Doug Blank
efcd86697c Merge pull request from sam-manzi/patch-2
Lower Case Gramps
2015-03-15 22:06:56 -04:00
Doug Blank
126dbf8800 Merge pull request from sam-manzi/patch-1
Minor updates to readme
2015-03-15 22:06:29 -04:00
Doug Blank
254fb87ab3 Merge pull request from sam-manzi/patch-3
Minor updates to FAQ
2015-03-15 22:05:54 -04:00
Doug Blank
c7187fafc3 Merge pull request from sam-manzi/patch-6
Point to User manual.
2015-03-15 22:03:38 -04:00
cadrlp
ca08999cf8 Point to User manual. 2015-03-16 12:06:58 +11:00
cadrlp
4f2239cb9f Year 2015
Update the year
2015-03-16 12:04:50 +11:00
cadrlp
3b5e2c99cf Add Classifiers from Gramps pypi entry.
https://pypi.python.org/pypi/Gramps/
2015-03-16 11:56:52 +11:00
cadrlp
3ab1f6ce0e Minor updates to FAQ
Remove section on Webhosting.
2015-03-16 11:45:53 +11:00
cadrlp
c606dc512e Lower Case Gramps
Be consistent with rest of project
2015-03-16 11:38:37 +11:00
cadrlp
33dd8e8e0f Minor updates to readme
Change to reflect Gramps 4.1 has been released.
2015-03-16 11:36:29 +11:00
Doug Blank
4b11ed740a Travis: add mock, prevents skips 2015-03-15 17:26:28 -04:00
Nick Hall
5dfbd791a7 Convert remaining unicode literals 2015-03-15 19:50:27 +00:00
Zdeněk Hataš
046d046a30 czech translation update 2015-03-15 18:35:42 +01:00
Nick Hall
6c256b96d6 8023: Remove HtmlView plugin 2015-03-15 16:53:15 +00:00
Doug Blank
3163d39f95 Removed xml import test, as that is thoroughly tested elsewhere.
Removed excluded nosetests for Travis
2015-03-15 11:55:35 -04:00
Paul Franklin
11cc83403d new gramps.pot for trunk-master 2015-03-15 08:23:31 -07:00
Doug Blank
46bdb38a11 gi.overrides is no longer needed 2015-03-15 10:01:43 -04:00
Doug Blank
ac530d8a34 Don't crash trying to create a Gdk.Cursor without a DISPLAY; enable more tests for Travis 2015-03-15 09:48:10 -04:00
erikdrgm
4bb60a80e7 Updated 150315 Dutch translation 2015-03-15 10:07:32 +01:00
erikdrgm
bee9ac5a44 Updated Dutch translation 2015-03-15 09:24:54 +01:00
Doug Blank
fc58b123b4 Travis: remove new test, until we can include it (xvfb, or avoid Gtk Cursor calls) 2015-03-15 01:35:14 -04:00
Doug Blank
f4418d65b9 Travis: try using virtual frame buffer to test graphics 2015-03-15 01:06:09 -04:00
Doug Blank
23c023f787 8435: Crash when trying to link existing place as an enclosing place using P0001 number; added tests, updated Travis testing 2015-03-15 00:33:39 -04:00
Doug Blank
12490b4600 DictionaryDb: fixed return type in get_person_from_gramps_id; added get_place_from_gramps_id 2015-03-15 00:31:15 -04:00
Doug Blank
07aec2000a Some issues comparing Today close to midnight, in Travis 2015-03-14 23:01:24 -04:00
Josip
53d3c96e58 8023: HTML view fails to load
add encoding attribute
2015-03-15 01:24:27 +01:00
Nick Hall
5da10c5a80 Replace cuni with str 2015-03-14 23:48:32 +00:00
Nick Hall
c9fd339289 Replace UNITYPE with str 2015-03-14 22:33:55 +00:00
Nick Hall
beab7892e5 Replace STRTYPE with str 2015-03-14 22:11:54 +00:00
Nick Hall
6d047c946c Replace conv_to_unicode_direct with str 2015-03-14 21:49:45 +00:00
Nick Hall
63ffd83021 Remove uni_to_gui function
We no longer need to convert strings to utf8 before passing them
to Gtk functions.
2015-03-14 21:30:26 +00:00
Nick Hall
2ecf1a3ddc Fix failing unit test 2015-03-14 20:51:08 +00:00
Nick Hall
7147236403 Remove use-bsddb3 configuration setting 2015-03-14 19:52:13 +00:00
Nick Hall
e0608f0ec4 Remove python2 specific code 2015-03-14 19:29:16 +00:00
Zdeněk Hataš
3299deda11 czech translation update 2015-03-14 17:26:49 +01:00
Nick Hall
3b5efdf7ae Remove imports from __future__ module 2015-03-14 16:10:36 +00:00
Nick Hall
ad073326e5 Increase minimum Gtk version required to 3.10 2015-03-14 14:49:51 +00:00
Doug Blank
7cb69fa7c2 Merge branch 'master' of https://github.com/gramps-project/gramps 2015-03-13 22:10:00 -04:00
Doug Blank
4d0508e6bf 8023: HTML view fails to load; replaced file with open 2015-03-13 22:09:41 -04:00
Leonhaeuser
8845f2d4c0 update German translation 2015-03-14 00:34:52 +01:00
Doug Blank
6bdc7fea05 Webapp: bring up to date for Django 1.7.1 2015-03-13 15:49:04 -04:00
Paul Franklin
ba748030b4 new gramps.pot for trunk-master 2015-03-13 10:42:16 -07:00
Paul Franklin
d1fdf737a7 8203: Complete Individual Report -- option to output all media 2015-03-13 10:32:10 -07:00
Zdeněk Hataš
965e0d22a3 czech translation update 2015-03-13 17:38:01 +01:00
Doug Blank
ccc296d748 Merge pull request from sebschub/master
Remove executable flag of two css files
2015-03-13 12:14:22 -04:00
Doug Blank
245a3f5d8b Travis: use python3 to build gramps 2015-03-13 09:59:49 -04:00
Doug Blank
68cc250fe9 Travis: need sudo on global pip3; this is going to work 2015-03-13 09:53:42 -04:00
Doug Blank
7fdfd81ca0 Travis: format error 2015-03-13 09:47:10 -04:00
Doug Blank
6b00029831 Travis: run from global python3 env 2015-03-13 09:39:09 -04:00
Doug Blank
9e763f1584 Travis: move to all virtual env build 2015-03-13 09:09:34 -04:00
Zdeněk Hataš
b890c0ab2f czech translation update 2015-03-13 12:14:38 +01:00
Doug Blank
8e24aee3e6 Travis: attempting pip3 available globally 2015-03-13 07:08:59 -04:00
Doug Blank
0a6880d45e Travis: install django icu in global python3 2015-03-13 07:04:40 -04:00
Doug Blank
b28f762afd Travis: just using Python 3.3 for now 2015-03-13 02:50:32 -04:00
Doug Blank
acef2c29c2 Travis: try pip3.4, and pip3.3 2015-03-13 02:47:25 -04:00
Doug Blank
79558ac588 Travis: use pip3, presume it is already installed 2015-03-13 02:20:42 -04:00
Doug Blank
3cd8a8f38f Travis: use pip3; make gramps home; allow cli test to work if dir exists 2015-03-13 02:05:02 -04:00
Doug Blank
4eff49762f Travis: remove failing tests 2015-03-13 01:44:27 -04:00
Doug Blank
e551fad10f Travis: list test names 2015-03-13 01:31:54 -04:00
Doug Blank
cbcfcfd14d Travis: removing failing tests 2015-03-13 01:17:08 -04:00
Doug Blank
456482f43b Travis: install python3-nose 2015-03-13 01:01:46 -04:00
Doug Blank
6a04b63fa5 Travis: make sure we are testing with python3 2015-03-13 00:57:02 -04:00
Doug Blank
6bdd17f9a6 Travis: gi in pip is not gobject related 2015-03-13 00:46:33 -04:00
Doug Blank
f52c53738f Travis: don't attempt to build bsddb3 from pip 2015-03-13 00:39:38 -04:00
Doug Blank
7e7c0d6e3d Travis: use pip to install gi and bsddb3 2015-03-13 00:03:52 -04:00
Doug Blank
8a868bdae1 Travis: use pip to install pyicu 2015-03-12 23:56:53 -04:00
Doug Blank
e80fa5b4a5 Travis now running: removed Python 2.7 testing; use all python3 libs 2015-03-12 23:50:34 -04:00
Doug Blank
86486ce043 Travis config: perhaps no need to change directory 2015-03-12 23:41:43 -04:00
Doug Blank
2b7829a746 Travis config: attempting to change to correct subdirectory 2015-03-12 23:38:40 -04:00
Doug Blank
c44092b576 Travis config: no need to clone gramps, already done 2015-03-12 23:33:08 -04:00
Doug Blank
4db8558a1b Changes to get django models to run under Python3; added travis config file--should run travis 2015-03-12 23:29:10 -04:00
Doug Blank
021da38047 Added missing DictionaryDb.is_empty(); fixed moved constfunc reference 2015-03-12 22:44:08 -04:00
Nick Hall
102c099f1d 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:13:54 +00:00
Nick Hall
1e1cea792e Fix another handle type bug 2015-03-12 18:18:36 +00:00
Nick Hall
f540f2a511 Convert deprecated color widgets 2015-03-12 18:18:36 +00:00
Paul Franklin
e80445127f 8423: Python3 needs new_subpixbuf not subpixbuf 2015-03-12 10:11:58 -07:00
Paul Franklin
c136791a00 typo 2015-03-12 09:58:38 -07:00
kulath
411b2995eb 0008401: NameError in GEDCOM importer 2015-03-12 14:11:28 +00:00
kulath
159fa31888 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:35:05 +00:00
Anthony Fok
2796d77566 remove typo flagged by "python update_po.py -p" when generating gramps.pot 2015-03-10 08:43:04 -07:00
Sebastian Schubert
d75860f6c1 Remove executable flag of two css files 2015-03-10 13:48:31 +01:00
Jérôme Rapinat
3c4eef5461 8407: gramps -i option in manpage not reflecting what happens; update french translation 2015-03-09 19:07:32 +01:00
Ross Gammon
d595d46129 8407: gramps -o option in manpage not reflecting what happens, https://bugs.launchpad.net/ubuntu/+source/gramps/+bug/1427444 2015-03-07 11:30:21 +01:00
Paul Franklin
70fd3d1dbc 8204: Enable "Complete Individual Report" to show individual's tags 2015-03-06 10:29:18 -08:00
Anthony Fok
2da2bcdeac implement both "traditional" and "simplfied" Chinese -- partial 2015-03-05 16:57:46 -08:00
Paul Franklin
9335a21e3a shorten po/check_po lines (indent=4-chars, etc.) 2015-03-05 16:23:33 -08:00
leonhaeuser
9f843464b3 German translation update and typo fix 2015-03-05 21:00:57 +01:00
Paul Franklin
dd20212156 give "update_po.py -p" fewer things to moan about 2015-03-01 15:01:52 -08:00
Paul Franklin
e70bb04f82 add missing import 2015-03-01 14:53:14 -08:00
Anthony Fok
92610bf486 enable python3 to run po/update_po.py 2015-03-01 09:00:38 -08:00
kulath
9444cbe388 0007824: Regression: running gramps from crontab fails 2015-03-01 16:53:45 +00:00
Nick Hall
b89cdeb077 Check python version >= 3.2 when running setup script 2015-03-01 16:40:32 +00:00
Anthony Fok
c800524955 correct incorrect tip49, new gramps.pot 2015-02-28 18:58:40 -08:00
Paul Franklin
f7443a3a41 clarify new string, new gramps.pot 2015-02-28 16:03:03 -08:00
Nick Hall
97433d2189 Tidy up About dialog
Use standard string for translator credits.
Add new section for contributors.
Align artwork section properly.
2015-02-28 23:00:59 +00:00
kulath
94776a3e4f 0008380: tag_map is not initialized 2015-02-28 20:52:38 +00:00
Nick Hall
1a661bcc3d Set minimum python version required to 3.2 2015-02-28 17:57:00 +00:00
SNoiraud
4f72a8bc6a geography : added the layer to osmgpsmap. 2015-02-27 20:50:59 +01:00
SNoiraud
09fa42dd94 geography : added the possibility to show kml files. 2015-02-27 20:50:02 +01:00
Anthony Fok
deba8169bb 7573: implement both "traditional" and "simplfied" Chinese
* Translation revisions and fixes
   * Generate zh_TW.po and new zh_HK.po from zh_CN.po
     with the help of https://github.com/BYVoid/OpenCC
     and a small sed script (see f.r. 7573 for the script)
2015-02-26 14:19:01 -08:00
Nick Hall
3d043a7b53 Convert update addons dialog to no longer be a ManagedWindow 2015-02-26 21:34:10 +00:00
Nick Hall
149b049650 Remove place title from default view columns 2015-02-26 21:02:47 +00:00
Tim G L Lyons
0778a6f706 Missing import statement 2015-02-25 01:13:20 +00:00
Nick Hall
9713b08bf0 Remove deprecated Gtk Alignment widgets 2015-02-24 22:51:38 +00:00
kulath
fab7afd2a3 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:44:19 +00:00
Nick Hall
423559f48e Fix schema upgrade from 15 to 16 with python3 2015-02-23 19:20:49 +00:00
Paul Franklin
3145eadd0a 8316: Family with children but no parents is lost on filtered export 2015-02-23 08:54:57 -08:00
John Ralls
0ae56692eb Update PyICU to 1.8
1.5 won't compile against ICU-5.4.
2015-02-22 12:50:32 -08:00
Nick Hall
a01722d35f 8134: Fix pickle upgrade of python2 strings to python3 str 2015-02-22 15:24:47 +00:00
Jérôme Rapinat
39450c0590 two new filter rules were missing on template, 'intltool-update -m' 2015-02-21 15:31:27 +01:00
Nick Hall
21d850783c Use place displayer in relationship view 2015-02-18 22:17:59 +00:00
noirauds
bb9e630bba geography: 7149: some minor problems. 2015-02-18 18:28:20 +01:00
Jérôme Rapinat
12c4b21587 update translation strings template 2015-02-18 10:49:31 +01:00
noirauds
e1957471d7 geographie: 7149 : Views into Geography should not always use the last option set by the user 2015-02-18 09:32:55 +01:00
Doug Blank
d5b93c52be Moved stderr and stdin handlers to only be installed for cli application; allows Gramps libraries to be used in other REPLs 2015-02-17 16:36:52 -05:00
noirauds
ffa92451f9 geography: 7948 : Add path selector to the text entry for tile cache 2015-02-17 19:03:32 +01:00
Doug Blank
c6a8af9eb6 Allow gramps to be used from source, without GRAMPS_RESOURCES env variable 2015-02-17 09:06:54 -05:00
leonhaeuser
49320f0fc4 update German translation 2015-02-17 02:46:07 +01:00
Nick Hall
203f216679 Fix graphviz report dialog after conversion to use Grid widget 2015-02-16 23:20:51 +00:00
kulath
d913cd45ae 0008347: GEDCOM import of embedded notes attached to media does not work 2015-02-16 22:55:00 +00:00
Nick Hall
df6e2f9946 Remove deprecated widgets from glade files for tools 2015-02-16 22:37:57 +00:00
Jérôme Rapinat
2e71c22d3f fix typos, thank you phcook 2015-02-16 19:23:50 +01:00
Sveinn í Felli
68f909c4e6 Update Icelandic translation 2015-02-16 19:14:42 +01:00
noirauds
9396be3cad geography - forgot to suppress debug lines, forgot the config option 2015-02-15 23:51:01 +01:00
noirauds
7393b483e3 geography - new feature (8327) Moving around the map using arrow keys and possibility to zoom from keyboard/keypad with the +/- keys 2015-02-15 22:42:23 +01:00
Jérôme Rapinat
45af196e03 typo 2015-02-13 15:32:33 +01:00
Sveinn í Felli
240252292d Add partial (30%) Icelandic support 2015-02-13 15:29:58 +01:00
Nick Hall
2fd3e42e91 8353: Fix default size of detached gramplet window 2015-02-12 19:36:13 +00:00
Nick Hall
18a22478c3 8351: Allow gramplets detached from the dashboard to fill the window 2015-02-12 19:16:08 +00:00
Nick Hall
a7e23c5a63 8350: Fix spacing in export assistant file chooser 2015-02-11 22:50:14 +00:00
Nick Hall
274bf75fd1 Swap description and main participants columns
Change column order introduced in  due to adverse comments
on mailing list.
2015-02-11 21:28:37 +00:00
noirauds
5391d20cf0 geography : bug 7615 : Filter panel on geography view displays improperly 2015-02-11 21:12:58 +01:00
Nick Hall
0ac34fb885 Fix bug in export assistant after conversion to use Grid widget 2015-02-10 23:02:59 +00:00
Nick Hall
0163a8528c 7930: Fix removing rows in flat list views 2015-02-09 17:27:05 +00:00
Nick Hall
71ae1fbca3 8344: Ensure key is correct type when updating reference map 2015-02-09 15:44:51 +00:00
Nick Hall
30d809ed17 Convert more deprecated Gtk widgets
Converted HButtonBox and VButtonBox to ButtonBox widgets.
Converted HPaned and VPaned to Paned widgets.
Converted HScale to Scale widget.
2015-02-07 18:53:42 +00:00
Nick Hall
59238765e8 Fix overwritten heading in relationship view
Line deleted by mistake in commit [89da61].
2015-02-07 17:32:41 +00:00
Nick Hall
bc920f8f19 Fix citation editor resizing 2015-02-07 16:07:48 +00:00
John Ralls
fdf52c5ff4 Fix wrong instruction about removing /usr/local/bin in INSTALL. 2015-02-07 07:27:33 -08:00
Nick Hall
9c8afdd155 Convert Gtk HBox and VBox widgets into Box widgets 2015-02-06 22:57:10 +00:00
John Ralls
e2718770b9 More INSTALL clarifications. 2015-02-06 14:29:11 -08:00
John Ralls
1177e3a87e Improve distutils install instructions. 2015-02-06 13:57:02 -08:00
John Ralls
d16f13adcf Remove mention of 'super-short-version' of INSTALL file.
There isn't one.
2015-02-06 13:50:13 -08:00
Nick Hall
89da611e38 Convert Gtk Table widgets into Grid widgets 2015-02-06 19:46:53 +00:00
John Ralls
9faca8b943 Remove trailing whitespace from INSTALL and README. 2015-02-06 11:35:55 -08:00
John Ralls
0e75f4bc44 Clarify/correct uninstall instructions. 2015-02-06 10:39:34 -08:00
John Ralls
5f2b4202ed Remove $Id from INSTALL, left over from SVN. 2015-02-06 09:43:43 -08:00
John Ralls
5006cbe244 Remove no-longer-needed packagers note about osm-gps-map.
Version 1.0.0 was released 18 June 2013.
2015-02-06 09:36:59 -08:00
Paul Franklin
4d8678b821 typo (and third github-push test) 2015-02-06 08:52:01 -08:00
Zdeněk Hataš
5f67aa271d czech translation update 2015-02-06 14:22:35 +01:00
Paul Franklin
a9ecad943f typo (another, and another github-push test) 2015-02-05 16:42:15 -08:00
Paul Franklin
8c6dad631c typo 2015-02-05 09:47:42 -08:00
Paul Franklin
4a1022bad3 neaten imports 2015-02-04 18:14:37 -08:00
Nick Hall
c1ef48d6d2 Remove deprecated widgets from glade files 2015-02-04 17:56:04 +00:00
Paul Franklin
5a64ffed7c add "python-pillow" to "python-imaging" mention 2015-02-03 09:43:56 -08:00
kulath
b69171f1a1 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:46 +00:00
Nick Hall
3e3abbf3e1 Update import to cope with missing place name and type 2015-02-02 17:58:57 +00:00
Paul Franklin
89dc89d83a 7276: translate some currently-untranslated punctuation marks -- partial 2015-02-01 11:51:34 -08:00
Nick Hall
b5dcd09e11 8233: Fix bad handle in explanation note for unknown event 2015-02-01 14:45:06 +00:00
Paul Franklin
83da6e241c fix trailing comma in pathological cases 2015-01-31 16:57:28 -08:00
Paul Franklin
46146a4893 neaten up add_reference method 2015-01-31 16:55:22 -08:00
Paul Franklin
331ea351a2 neaten some imports 2015-01-31 16:52:24 -08:00
Nick Hall
06cae9ed32 Remove check for empty place title 2015-01-30 22:09:39 +00:00
Paul Franklin
e38a080a3e 8320: Detailed descendent report crashes 2015-01-28 09:45:00 -08:00
Nick Hall
c0054fd4e4 7860: Update place sidebar filter 2015-01-27 23:00:06 +00:00
Nick Hall
938f38c077 7860: Add new place HasTitle rule 2015-01-27 22:58:34 +00:00
Nick Hall
7ec60ae6a3 7860: Add new place HasData rule 2015-01-27 22:58:27 +00:00
Nick Hall
8be5616802 8058: New place reference editor
This allows standard "add" and "share" buttons to be used in the place
reference embedded list.
2015-01-26 23:36:23 +00:00
Nick Hall
5bdb45416f 8056: Activate drag and drop on "enclosed by" tab 2015-01-26 22:42:07 +00:00
Nick Hall
63fe1a4bd2 8242: Put places in data.gramps into a hierarchy 2015-01-24 19:34:17 +00:00
Matti Niemelä
7311ea147a update Finnish translation (not backported to gramps41 yet) 2015-01-24 15:02:30 +01:00
Nick Hall
f89990b5f1 7860: Rename "Name" to "Title" 2015-01-23 21:36:24 +00:00
Nick Hall
3a0f699fae 8057: Remove auto-update of place titles 2015-01-23 19:55:39 +00:00
Nick Hall
28bc8ba590 7942: Implement place displayer 2015-01-23 19:09:55 +00:00
Nick Hall
46b2f0a169 7533: Check for active person in session log gramplet 2015-01-21 23:03:23 +00:00
Nick Hall
ec9dbcc045 7844: Check that the mediapath is not set to None 2015-01-21 21:42:05 +00:00
Nick Hall
0bc7bc8b40 7770: Always display main participants 2015-01-21 18:44:42 +00:00
Nick Hall
c8e60460c1 7299: Fix bug when family has no parents 2015-01-21 17:45:33 +00:00
Jérôme Rapinat
e75d901b29 8288: Keywords entry in gramps.desktop does not end with ';' 2015-01-17 16:05:16 +01:00
Espen Berg
597f4bb1ac Done with Norwegian bokmål translation 2015-01-09 21:34:29 +01:00
kulath
d69a84d56e 0008283: GEDCOM export does not export media attached to citations. Fix
for gramps master
2015-01-08 18:07:50 +00:00
Doug Blank
cd779d5163 8145: Some Addons provide an update even it was already done during the last start of Gramps 2015-01-05 15:23:39 -05:00
Bastien Jacquet
8fd456f604 Merge branch 'geps/interactivesearch'
Use our own interactive-search box to get it
 - more efficient (binary search on sorted columns).
 - customizable (delayed launch of search to avoid text scrambling)
2015-01-05 17:33:15 +01:00
Bastien Jacquet
bb26e53fc0 Interactive-search: Quick search with LIST_ONLY sorted views 2015-01-05 17:32:38 +01:00
Bastien Jacquet
f2fc776d41 speedup srt_key sorting by sorting them in-place 2015-01-05 15:45:14 +01:00
Doug Blank
d295142a4d In testing, reset config options in tearDown so subsequent tests are not affected 2015-01-04 14:44:12 -05:00
Doug Blank
66fd541eea Renamed gramps.gen.lib.calendar to gramps.gen.lib.gcalendar to avoid import conflict with Python lib calendar 2015-01-04 12:33:06 -05:00
Josip
f4abd460ba 7851: translations don't show in many labels, buttons, and other elements, Windows only
Added fix for Python3
2015-01-03 20:25:12 +01:00
Doug Blank
e568babb33 Records Gramplet uses wrong text 2015-01-03 11:01:35 -08:00
Josip
479992935c 6548: 'Available Gramps Updates for Addons' window not on top 2015-01-03 18:02:27 +01:00
Doug Blank
f626cb9d0a Test method name changes for automatic test detection 2015-01-03 11:24:13 -05:00
Doug Blank
bc4cd8ec2e Merge branch 'master' of ssh://git.code.sf.net/p/gramps/source 2015-01-03 10:28:06 -05:00
Doug Blank
cfb3b2cc84 Renamed test methods for proper automatic detection 2015-01-03 10:27:39 -05:00
Jérôme Rapinat
9bf4661453 8169 8267 typo: Glib should be GLib 2015-01-03 16:08:55 +01:00
Doug Blank
ed70aa0d74 Fix date_handler by renaming non-test methods; removed gedcom import tests that rely on old code, and didn't test much 2015-01-03 09:15:58 -05:00
Doug Blank
2b1405624f Fixes to DictionaryDb for Python3 and current gramps 2015-01-03 09:01:48 -05:00
Doug Blank
797f6c1683 merge_ref_test and importxml_test now passing 2015-01-02 22:32:25 -05:00
Doug Blank
626c11999e merge_test now passing all tests 2015-01-02 21:57:25 -05:00
Doug Blank
dcea49c2a7 Updates for struct to pass unit tests 2015-01-02 17:28:38 -05:00
Jérôme Rapinat
1f8aa6917f New year... 2015-01-02 10:05:07 +01:00
Paul Franklin
faeeeb6ceb specify SVG font size is in points, for stupid viewers 2014-12-30 10:54:23 -08:00
Paul Franklin
f137c5b909 8240: can't disable box shadow in SVG descendant tree 2014-12-30 10:37:26 -08:00
Ondrej Krč-Jediný
d6b00841d7 merge request ; git clone http://git.code.sf.net/u/ondrisko/gramps ; update slovak translation 2014-12-29 18:01:37 +01:00
Paul Franklin
594e1aa0a2 move privacy option higher, make it more noticeable 2014-12-27 10:12:17 -08:00
Gerald Kunzmann
2f5ab9c6f8 7953: Kekule numbering in Detailed Ancestral Report 2014-12-27 10:08:28 -08:00
Bastien Jacquet
d426f6232e Our own interactive-search enabling customized and delayed search.
This commit provides same search capabilities as Gtk's.
The only difference should be the search being delayed
by 150ms after last keypress.

Signed-off-by: Bastien Jacquet <bastien.jacquet_dev@m4x.org>
2014-12-27 03:10:59 +01:00
Paul Franklin
f67620dbfe 8257: Crash when mixed "inflected" and "non inflected" months 2014-12-24 12:36:31 -08:00
Fedir Zinchuk
0643949cbf Update Ukrainian translation 2014-12-22 20:14:53 +02:00
Fedir Zinchuk
3be2150861 Update Ukrainian date handler 2014-12-22 20:10:45 +02:00
Fedir Zinchuk
88033fe549 Update Ukrainian translation 2014-12-19 15:31:24 +02:00
Paul Franklin
0b117f6adc 8148: Turkish language updates 2014-12-17 20:25:50 -08:00
Paul Franklin
713675521f 8185: Gramps freeze after defining a report stile with German cm values 2014-12-17 19:59:49 -08:00
Paul Franklin
1ed41b33e3 8237: descendant tree graphical report, syntax error in svg output 2014-12-17 19:40:37 -08:00
Paul Franklin
67206a7f4f add gramps-ID option 2014-12-15 18:54:32 -08:00
Paul Franklin
9284e3d1c9 add gramps-ID option 2014-12-15 18:54:20 -08:00
Paul Franklin
de8575fd18 modify gramps-ID option 2014-12-15 18:53:55 -08:00
kulath
c57f574cb8 Fix 0008234: part (2) Various problems with
docgen.TextDoc.add_media_object part (2) for master branch
2014-12-16 00:37:59 +00:00
kulath
4af340c1e1 Fix 0008234: Various problems with docgen.TextDoc.add_media_object part
(1) for master branch
2014-12-14 18:16:15 +00:00
Zdeněk Hataš
4e95abe0c9 czech translation update 2014-12-14 12:49:52 +01:00
leonhaeuser
e0822322a7 Fix German grammer bug [8231] 2014-12-13 22:24:51 +01:00
Jérôme Rapinat
a36a2a36e6 Enable Attributes gramplet support on Source/Citation bars; not backported yet because of 2014-12-13 15:39:06 +01:00
Paul Franklin
660cf1b5af cover pathological case (perhaps from privacy proxy) 2014-12-12 11:07:59 -08:00
leonhaeuser
9774f405f1 Fix German typo Bug [8226] 2014-12-12 15:39:42 +01:00
Paul Franklin
bc02336867 make a new template (trunk-master gramps.pot) 2014-12-11 19:51:40 -08:00
Paul Franklin
2ba8a051b7 typo 2014-12-11 11:03:55 -08:00
Bastien Jacquet
22ef07cdeb FlatTreeView : Fix wrong return values 2014-12-11 01:02:56 +01:00
Nick Hall
4995765c5f 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:55 +00:00
Matti Niemelä
45326898dd Review by the Finnish team (Pekka and Matti) 2014-12-06 17:25:39 +01:00
Bastien Jacquet
d4a99d8488 Remove needless use of handles in FlatBaseModel.do_iter_next 2014-12-05 06:17:50 +01:00
Bastien Jacquet
48eb2842ee Optimize FlatNodeMap update of _hndl2index for add/delete
tests with python2.6 and python3 show that it's much quicker to get
the handles after the inser/deleted index and upgrade those
(because random-access in a hash-table is super fast)

Here is the code use for tests:

import string,random,sys
import timeit

def id_generator(size=6, chars=string.ascii_lowercase):
    return ''.join(random.choice(chars) for _ in range(size))

num_items=80000
handle_sizes=10
num_operation=2000
setup="""
from __main__ import id_generator,string,num_items,handle_sizes,random
_index2hndl=[("",id_generator(handle_sizes)) for e in range (num_items)]
_hndl2index=dict([key[1], index]
                for index, key in enumerate(_index2hndl))
"""

add0='''
h=id_generator(handle_sizes)
insert_pos= random.randrange(len(_hndl2index))
srtkey_hndl=("",h)
_index2hndl.insert(insert_pos, srtkey_hndl)
for hndl, index in _hndl2index.iteritems():
    if index >= insert_pos:
        _hndl2index[hndl] += 1
_hndl2index[h]=insert_pos
'''
add1='''
h=id_generator(handle_sizes)
insert_pos= random.randrange(len(_hndl2index))
srtkey_hndl=("",h)
_index2hndl.insert(insert_pos, srtkey_hndl)
for hndl, index in _hndl2index.items():
    if index >= insert_pos:
        _hndl2index[hndl] += 1
_hndl2index[h]=insert_pos
'''
add2='''
h=id_generator(handle_sizes)
insert_pos= random.randrange(len(_hndl2index))
srtkey_hndl=("",h)
_index2hndl.insert(insert_pos, srtkey_hndl)
for srt_key,hndl in _index2hndl[insert_pos+1:]:
    _hndl2index[hndl] += 1
_hndl2index[h]=insert_pos
'''
del0='''
index= random.randrange(len(_hndl2index))
srt_key,handle=_index2hndl[index]
del _index2hndl[index]
del _hndl2index[handle]
for key, val in _hndl2index.iteritems():
    if val > index:
        _hndl2index[key] -= 1
'''
del1='''
index= random.randrange(len(_hndl2index))
srt_key,handle=_index2hndl[index]
del _index2hndl[index]
del _hndl2index[handle]
for key, val in _hndl2index.items():
    if val > index:
        _hndl2index[key] -= 1
'''
del2='''
index= random.randrange(len(_hndl2index))
srt_key,handle=_index2hndl[index]
del _index2hndl[index]
del _hndl2index[handle]
for srt_key,hndl in _index2hndl[index:]:
    _hndl2index[hndl] -= 1
'''
if sys.version_info[0] < 3:
    cmds=[add0,add1,add2,del0,del1,del2]
else:
    cmds=[add1,add2,del1,del2]
for c in cmds:
    print(c)
    random.seed(1)
    t=timeit.Timer(c, setup=setup).timeit(num_operation)
    print(num_operation,"ops in ", t, "seconds. avg:",t/num_operation,"seconds")
2014-12-05 06:08:50 +01:00
Bastien Jacquet
a52a931b57 Fix doc and harmless typo (real_index instead of real_path) 2014-12-05 06:04:26 +01:00
Bastien Jacquet
813075ae2f Fix handling of keypresses in treeview 2014-12-05 06:04:21 +01:00
Josip
1fae92ca54 7865: Closing detached gramplet causes python to crash 2014-12-01 18:51:34 +01:00
Nick Hall
efe55a7fc3 7866: Crash on Ancestry.com .ged import; consistent. 2014-12-01 18:19:49 +01:00
Nick Hall
3818d7e5e3 Fix place reference editor for drag support 2014-12-01 15:24:36 +00:00
Paul Franklin
2d590abebd ignore a zero day and its delimiter, in numerical date format 2014-11-24 17:15:33 -08:00
kulath
bfc2ef5ab3 8196: Spurious spaces in CLI List Family Trees, tab delimited output.
Print statements changed to assemble the whole line before output.
2014-11-24 23:10:35 +00:00
Paul Franklin
0436228eb1 8175: date inflections in _datahandler.py 2014-11-22 16:05:32 -08:00
Paul Franklin
a7bffb9259 8184: regression: Complete Individual report has some untranslated output 2014-11-20 10:05:09 -08:00
Josip
90d35cc678 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-11-16 16:53:13 +01:00
Paul Franklin
2264f5506a typo 2014-11-13 19:30:44 -08:00
Paul Franklin
c2e2be69fa add a few date examples (near the top of the list) 2014-11-13 10:14:31 -08:00
Josip
0301ddd1a6 8157: ImageMetadata doesn't show metadata 2014-11-07 19:26:36 +01:00
Craig J. Anderson
da2c8aa644 small feature update to add z,n,e to the date format string.
these are used for dates with ending dates (date ranges)
  Craig A.
2014-11-06 10:40:42 -05:00
Bastien Jacquet
cd540cdb13 8102: Fix problem with fanchart if max_generation = 1 2014-11-05 23:22:48 +01:00
Bastien Jacquet
d716146e9d 8149: Error on opening twice an object from clipboard because of missing import 2014-11-05 21:26:44 +01:00
Bastien Jacquet
e9c441c62f Allow to drag a person by dragging the "Father/Mother/Spouse" label or around Add/edt/share buttons
Signed-off-by: Bastien Jacquet <bastien.jacquet_dev@m4x.org>
2014-11-05 17:52:07 +00:00
Bastien Jacquet
4ad884d54e Add Family drag support from RelationshipView 2014-11-05 17:52:07 +00:00
Bastien Jacquet
e83190dd82 EditPerson new person calls create_id() to have a handler in clipboard (as in EditFamily) 2014-11-05 17:52:07 +00:00
Bastien Jacquet
88c919d034 Allow for dragging a family from EditFamily 2014-11-05 17:52:07 +00:00
Bastien Jacquet
4ade6db556 Add Person drag support from RelationshipView
Signed-off-by: Bastien Jacquet <bastien.jacquet_dev@m4x.org>
2014-11-05 17:52:07 +00:00
Bastien Jacquet
ebb9b53589 Add Support for dragging from the add/choose selector of Place/Source/Media/Note-Entry 2014-11-05 17:52:07 +00:00
Bastien Jacquet
b7ab556393 Add drag support to parents in EditFamily (when set) and move drop capability if parent already set 2014-11-05 17:52:07 +00:00
Bastien Jacquet
1797b66f48 Allow to drag a person from EditPerson (if not a unsaved person) 2014-11-05 17:52:06 +00:00
Bastien Jacquet
4e86fdafc5 Add person drag support from EditChildRef (always possible as child are
always set)
2014-11-05 17:52:06 +00:00
Bastien Jacquet
79d876e350 And drag support to EditPersonRef when person is set 2014-11-05 17:52:06 +00:00
Bastien Jacquet
ea3afbb35c Create prefilled PersonRef when drop of a Person on Association EmbeddedTab (same as ChildTab) 2014-11-05 17:52:06 +00:00
Bastien Jacquet
077be0c07e 8095:Association editor refuses dropped persons 2014-11-05 17:52:06 +00:00
Paul Franklin
5324ca28d4 5150: new Event types are saved as a disordered list 2014-11-04 07:28:22 -08:00
Nick Hall
addcf6f034 7604: Fix error setting gramplet tab label 2014-11-03 21:47:32 +00:00
Zdeněk Hataš
6bf0cfa857 czech translation update 2014-10-30 14:16:02 +01:00
Paul Franklin
0ca906298b 8154: Some text not translatable in context menu fancharts (GUI) 2014-10-29 09:19:05 -07:00
Paul Franklin
4fb677283e 8152: Error converting database after upgrade to Gramps 4.1.1 2014-10-28 17:01:43 -07:00
Nick Hall
93a26b26d2 8020: Ensure that reference map has string keys 2014-10-28 17:47:34 +00:00
John Ralls
a372922e02 8140: Gramps doesn't work under Turkish locale 2014-10-27 11:22:45 -07:00
Ugur Cetin
c7dfeaf25f update Turkish translation (partial) 2014-10-26 15:24:25 -07:00
leonhaeuser
6e73dba8e2 update German translation 2014-10-26 19:29:09 +01:00
Paul Franklin
bf23a94f5d neaten language list in setup.py 2014-10-24 12:34:48 -07:00
Jérôme Rapinat
f02247b89c Serbian should be ready for Windows OS and LOCALE_NAMES mapping 2014-10-24 20:01:25 +02:00
Jérôme Rapinat
b1a686445f 8122: DB lock not checked when opening database from the recent opened trees 2014-10-24 09:41:10 +02:00
Craig J. Anderson
9e0f8b2f28 Merge branch 'master' of ssh://git.code.sf.net/p/gramps/source 2014-10-23 15:02:51 -04:00
Zdeněk Hataš
e799b9d3d0 czech translation update 2014-10-23 20:55:19 +02:00
Craig J. Anderson
3575964835 fix for https://gramps-project.org/bugs/view.php?id=6355.
Craig A.
2014-10-23 12:57:21 -04:00
Paul Franklin
93744057ad enable Serbian Cyrillic translation 2014-10-22 22:48:04 -07:00
Мирослав Николић
91c85ee0d0 add Serbian Cyrillic translation file 2014-10-22 22:47:01 -07:00
Paul Franklin
6952304b34 rename old Serbian translation file 2014-10-22 22:45:04 -07:00
Jérôme Rapinat
9edd496b8d New locations gramplet [6ff9ed] 2014-10-22 08:21:16 +02:00
Nick Hall
ad0d3d19c1 7902: Update place details gramplet
Add name, type and alternative names.
Locations are now displayed in a separate gramplet.
2014-10-21 19:31:43 +01:00
Nick Hall
6ff9ed00f0 Add new place locations gramplet 2014-10-21 19:31:43 +01:00
Jérôme Rapinat
bb67bdb83c Re-enable Esperento support after a large review (8% to 99%); No support under Windows (see _LOCALE_NAMES in gen/utils/grampslocale.py) 2014-10-21 15:34:38 +02:00
Pier Luigi Cinquantini
7a06f0b8e1 Update and review for the Esperanto translation 2014-10-21 15:11:45 +02:00
Jérôme Rapinat
d4e43ef663 7362 8103: some labels fit better on citations sidebar filter (patch by Nick H.), fix a typo on swedish translation, add the new translated string on most translation files 2014-10-20 11:28:24 +02:00
Paul Franklin
55c7e223d4 enhance Serbian date handler to handle Cyrillic dates 2014-10-17 18:11:37 -07:00
Nick Hall
a29232a133 7813: Add check for empty handle in gramplets 2014-10-17 23:05:57 +01:00
Jérôme Rapinat
9eb8700cfd 8103: sidebarfilter gramplet does not fit well into People, Events, Citations or Media views (non-english locales) 2014-10-15 21:47:03 +02:00
Jérôme Rapinat
246694b0f7 8103: sidebarfilter gramplet does not fit well into People, Events, Citations or Media views 2014-10-15 21:37:03 +02:00
Paul Franklin
f68e8837f7 8113: 'Unknown' person in detailed ancestor report can not be translated 2014-10-11 14:39:37 -07:00
Paul Franklin
df15991a8e add datespan example 2014-10-11 10:57:14 -07:00
Jérôme Rapinat
612a72a455 1685: Tools: some strings into print statement were untranslated 2014-10-08 11:43:11 +02:00
Paul Franklin
d3e75650b4 typo ("data format" => "date format") 2014-10-07 11:03:25 -07:00
noirauds
9075066cca Geography : bug 0007795: geography.gpr.py: Probable typos 2014-10-07 09:59:22 +02:00
Jérôme Rapinat
206b397e7c 4673: update french version for the man file via 'sphinx-build' cmd 2014-10-03 14:07:25 +02:00
Jérôme Rapinat
395184d519 4673: bump man files to '4.2.0' 2014-10-03 13:57:10 +02:00
Jérôme Rapinat
50be0fc292 4673: minor spacing on man template (english) 2014-10-03 12:22:33 +02:00
Bastien Jacquet
236b5e68fa 8096: Fix new event default type considering existing events with *default* role 2014-10-01 19:09:41 +01:00
Sam Manzi
e2e4d3c57a 6028: Cleaned up and improved the Gramps API docs, Sphinx - fixed four ERROR: Unexpected indentation, added 'sphinx.ext.viewcode' to allow Sphinx to 'Add links to highlighted source code' http://sphinx-doc.org/latest/ext/viewcode.html , updated the copyright year and instructions to use pip 2014-09-29 19:51:38 +02:00
Luigi Toscano
453b339775 Italian translation updates and fixes 2014-09-28 03:16:05 +02:00
Nick Hall
aea848de23 7868: Rebuild secondary indexes after database upgrade 2014-09-26 19:38:15 +01:00
Nick Hall
bdf38344ff 8015: Update location utilities to work with proxies 2014-09-26 16:39:16 +01:00
Enno Borgsteede
4c71006c9d 7931: Fix check and repair tool for empty placerefs 2014-09-25 22:24:13 +01:00
Jérôme Rapinat
b22b66877e 8033: cannot generate Narrative Web report with gendex option enabled, was previous place model (location fields) 2014-09-23 16:30:55 +02:00
Mirko Leonhaeuser
d8a37c1089 update German translation withversion fom 4.1 2014-09-20 17:27:51 +02:00
Zdeněk Hataš
59e3a7814a czech translation update 2014-09-19 11:18:25 +02:00
Zdeněk Hataš
d59290e69f 8064: translation fixes
minor translation update
2014-09-18 12:59:28 +02:00
Zdeněk Hataš
19130134c3 typo fix 2014-09-14 20:23:07 +02:00
Ross Gammon
f6e7d32b06 8062: .desktop file missing Keywords entry 2014-09-11 17:25:51 +02:00
Petr Hejl
0c587838b4 8051: Can't fill in calculated and estimated dates in cs locale 2014-09-11 17:23:02 +02:00
Paul Franklin
2441f341d7 5895: "name format" option in descendant and ancestortree reports 2014-09-10 15:45:13 -07:00
Paul Franklin
8e0fb6fd2c 8021: Grafical reports don't use the correct name format 2014-09-10 15:40:13 -07:00
John Ralls
13ff503bed 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:54:22 -07:00
Paul Franklin
43cfb600d5 8014: Importing gedcom files containing multibyte UTF-8 characters fails 2014-09-01 19:06:15 -07:00
Paul Franklin
da97578658 7833: Complete Individual Report Sources 2014-08-30 10:22:11 -07:00
Paul Franklin
35c8d10899 revert part of 8014 patch, pending further review 2014-08-25 11:40:36 -07:00
Björn Samvik
592707deea 8014: Importing gedcom files containing multibyte UTF-8 characters fails 2014-08-25 10:56:02 -07:00
Nick Hall
550eac7d64 8011: Fix backlinks code in place report
Backlinks for places can now also be places as well as events.
2014-08-24 19:01:50 +01:00
Paul Franklin
60ca25deee python3 bytes-string mismatch with ICU installed 2014-08-22 18:18:38 -07:00
Paul Franklin
462897bf44 8012: Text reports don't use the correct name format 2014-08-22 18:02:24 -07:00
Nick Hall
6ce73e128e Add draw styles to style sheet editor 2014-08-22 19:39:52 +01:00
Paul Franklin
f66a810b46 tweak to "default" CSS choice for the narrated web report 2014-08-20 07:55:47 -07:00
Nick Hall
0751d49adc Add cell styles to style sheet editor 2014-08-19 23:00:37 +01:00
Nick Hall
da2023b3f8 7991: Enhance style sheet editor to include table styles 2014-08-18 22:50:03 +01:00
Paul Franklin
136fabfc16 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:49:28 -07:00
Paul Franklin
4f85cf0278 7276: translate some punctuation marks -- partial 2014-08-13 09:22:04 -07:00
Ondrej Krc-Jediny
5d26c3b6a1 7979: Invalid format string in media mamager message 2014-08-12 13:55:19 -07:00
Nick Hall
2ec9de511a 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:48:10 +01:00
Craig J. Anderson
75f62ea5b9 feature request: 7963
https://gramps-project.org/bugs/view.php?id=7963
to add an optional [alternate name] on the $n and $s vars as follows:
$n[Married Name](regular format string)
$s[Also Known As](regular format string)
  Craig A.
2014-08-09 11:30:21 -04:00
Malcom Lewis
86303f6116 Update FSF address to current location. 2014-08-08 19:39:45 -07:00
Paul Franklin
ebc213f0ac add a few examples (Thai script, Married Name, "estimated about" date) 2014-08-06 12:53:06 -07:00
Jérôme Rapinat
be3da94188 typo on doc string 2014-08-05 13:52:49 +02:00
Jérôme Rapinat
ceeab158b4 6934: add a support for embeded custom attributes list on media object 2014-08-02 16:50:18 +02:00
Paul Franklin
5e61827693 7573: slight tweak to (two zh) [9c8cf2] 2014-07-29 19:33:41 -07:00
Paul Franklin
8312bfa839 4011: "reports" should have a "no private information" button 2014-07-26 09:52:32 -07:00
Paul Franklin
bfa8795144 4011: "reports" should have a "no private information" button 2014-07-26 09:52:31 -07:00
Paul Franklin
f37f61ae5f 4011: "reports" should have a "no private information" button 2014-07-26 09:52:31 -07:00
Paul Franklin
19b843f541 4011: "reports" should have a "no private information" button 2014-07-26 09:52:31 -07:00
Paul Franklin
eac193566f 4011: "reports" should have a "no private information" button 2014-07-26 09:52:31 -07:00
Paul Franklin
0e805c1f5c 4011: "reports" should have a "no private information" button 2014-07-26 09:52:31 -07:00
Paul Franklin
7f8b3e538c 4011: "reports" should have a "no private information" button 2014-07-26 09:52:31 -07:00
Paul Franklin
06b063a5d5 4011: "reports" should have a "no private information" button 2014-07-26 09:52:31 -07:00
Paul Franklin
149021a131 4011: "reports" should have a "no private information" button 2014-07-26 09:52:31 -07:00
Paul Franklin
62a64f2ea5 4011: "reports" should have a "no private information" button 2014-07-26 09:52:31 -07:00
Paul Franklin
d239aa78b7 4011: "reports" should have a "no private information" button 2014-07-26 09:52:31 -07:00
Paul Franklin
90ff13a4dd 4011: "reports" should have a "no private information" button 2014-07-26 09:52:31 -07:00
Paul Franklin
0fdffe7814 4011: "reports" should have a "no private information" button 2014-07-26 09:52:31 -07:00
Paul Franklin
f9ecc2ebef 4011: "reports" should have a "no private information" button 2014-07-26 09:52:31 -07:00
Paul Franklin
23b0025c1c 4011: "reports" should have a "no private information" button 2014-07-26 09:52:30 -07:00
Paul Franklin
f752c69c5c 4011: "reports" should have a "no private information" button 2014-07-26 09:52:30 -07:00
Paul Franklin
2998a8d03b 4011: "reports" should have a "no private information" button 2014-07-26 09:52:30 -07:00
Paul Franklin
1d00e5a2fb 4011: "reports" should have a "no private information" button 2014-07-26 09:52:30 -07:00
Paul Franklin
5068ec1849 4011: "reports" should have a "no private information" button 2014-07-26 09:52:30 -07:00
Paul Franklin
ab2fc3a6b4 4011: "reports" should have a "no private information" button 2014-07-26 09:52:30 -07:00
Paul Franklin
a3c13cdecc 4011: "reports" should have a "no private information" button 2014-07-26 09:52:30 -07:00
Paul Franklin
0aaa7f316d 4011: "reports" should have a "no private information" button 2014-07-26 09:52:30 -07:00
Paul Franklin
b75516feaf 4011: "reports" should have a "no private information" button 2014-07-26 09:52:30 -07:00
Paul Franklin
8159de4f49 4011: "reports" should have a "no private information" button 2014-07-26 09:52:30 -07:00
Paul Franklin
7626068792 4011: "reports" should have a "no private information" button 2014-07-26 09:52:30 -07:00
Paul Franklin
a5dd462e4f 4011: "reports" should have a "no private information" button 2014-07-26 09:52:30 -07:00
Paul Franklin
24299857b7 4011: "reports" should have a "no private information" button 2014-07-26 09:52:29 -07:00
Paul Franklin
f4dac50a69 "7927: Exclude private data [...] for detailed ancestor report" -- partial 2014-07-24 15:34:43 -07:00
Paul Franklin
43e52e012b skip events referring to private data 2014-07-24 10:39:58 -07:00
Paul Franklin
d9923bdf77 slight tweaks to recent work 2014-07-23 09:48:01 -07:00
Paul Franklin
0659083568 migrate the existing uses to the new run_private_data_option method 2014-07-22 12:29:23 -07:00
Paul Franklin
4a95862d81 add run_private_data_option to stdoptions.py 2014-07-22 12:21:34 -07:00
Paul Franklin
1ef95df160 migrate the existing uses to the new add_private_data_option method 2014-07-22 10:45:00 -07:00
Paul Franklin
59c92d1207 add add_private_data_option to stdoptions.py 2014-07-22 10:19:27 -07:00
Paul Franklin
0aac5469ca start using stdoptions.py's run_name_format_option 2014-07-21 20:53:34 -07:00
Paul Franklin
aaecb02187 add run_name_format_option to stdoptions.py 2014-07-21 18:29:03 -07:00
Paul Franklin
98db4da3ff type in [8c94dc] 2014-07-21 18:27:19 -07:00
Vlada Perić
33178a2337 7913: add Serbian holidays to holidays.xml.in 2014-07-17 17:27:00 -07:00
Vlada Perić
6f002ea173 7912-related: simplify Bulgaria and Ukraine Easter using new method 2014-07-17 17:25:33 -07:00
Vlada Perić
d8a6d2f6a8 7912: Add julian_easter(y) function to libholiday.py 2014-07-17 17:22:54 -07:00
Jérôme Rapinat
daee6c032c Merge Request : Slovak holidays and other slovak translation updates 2014-07-17 16:09:10 +02:00
Jérôme Rapinat
63d8ef783c 7869 7912 7913 6403: various fixes, additions and requests on code; updated template 2014-07-17 15:33:30 +02:00
Jérôme Rapinat
a615ba35a4 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:24:05 +02:00
Paul Franklin
48763c8ade simplify Canadian Ash Wednesday holiday 2014-07-15 22:59:26 -07:00
Nick Hall
fa5011003c 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 .
2014-07-16 00:18:10 +01:00
Nick Hall
8ffa78ad19 7915: Prevent user creating a cycle in the place hierarchy 2014-07-15 19:41:26 +01:00
Paul Franklin
8de7d287b7 add Arabic-script and Islamic-date examples (courtesy of Munzir Taha) 2014-07-15 09:24:41 -07:00
Nick Hall
cc794110d1 7846: Prevent creation of a place cycle when merging 2014-07-14 22:53:01 +01:00
Nick Hall
8627429987 7846: Avoid infinite loop when place cycle encountered 2014-07-14 22:50:05 +01:00
Nick Hall
78ec767368 7911: Fix bug adding parent places to a new place 2014-07-14 22:42:49 +01:00
Nick Hall
de790d12da 7904: Fix place type for places without a main location 2014-07-12 19:58:17 +01:00
Paul Franklin
4581c40a53 7861: In Ahnentafel Report, Use Christening Date if no Birth Date 2014-07-11 15:39:22 -07:00
Ondrej Krc-Jediny
2bfd496870 7869: Various small issues in gramps.pot 2014-07-10 12:18:05 -07:00
Paul Franklin
fe46587c2e 7739: [Narweb:] Missing webpage for media [under some circumstances] 2014-07-10 09:25:43 -07:00
Paul Franklin
b456b10a8d include Gramps.py in the tarball 2014-07-10 09:05:58 -07:00
Paul Franklin
1c75a997d6 6403: Remove markup in translatable messages -- slight tweaks 2014-07-07 12:00:54 -07:00
Paul Franklin
8c94dcfd27 6403: Remove markup in translatable messages -- partial 2014-07-06 13:14:01 -07:00
Ondrej Krc-Jediny
5680becf16 7882: Invalid link for Merge citation Help button 2014-07-05 09:46:44 -07:00
Josip
28f31ba65c 7883: I can't add a people in my tree 2014-07-05 01:34:09 +02:00
Munzir Taha
2441654242 update Arabic translation 2014-06-29 10:46:56 -07:00
Paul Franklin
52dcd93f83 7839: Place report does not run 2014-06-28 13:04:07 -07:00
Paul Franklin
f55379e7a6 two small typos 2014-06-26 11:58:50 -07:00
Paul Franklin
9c8cf267e6 7573: implement both "traditional" and "simplified" Chinese
(With thanks to YH Tan, who provided the translations for both
the date handlers, as well as this early-prototype zh_TW.po)
2014-06-26 11:24:36 -07:00
John Ralls
65dbb1bd46 7851: translations don't show in many labels
Ensure python text domain gets the right encoding.
2014-06-23 20:16:56 -07:00
Mirko Leonhaeuser
89b923d1ab Fixed 0006655 and 0007840 2014-06-22 18:02:48 +02:00
Nick Hall
d3dfcdf2b9 7837: Fix path when using drag & drop to add media 2014-06-22 00:04:27 +01:00
Nick Hall
6950679504 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:22:57 +01:00
Nick Hall
7987e8c1d6 7836: Limit the number of generations displayed in the ancestor gramplet 2014-06-21 14:21:11 +01:00
Nick Hall
9a664acc20 7834: export of a subset of the tree fails 2014-06-19 12:07:16 -07:00
John Ralls
cd9a00b787 Module fixups from gramps40 2014-06-19 10:37:01 -07:00
Zdeněk Hataš
c7810b217f czech translation update 2014-06-18 23:03:18 +02:00
Jérôme Rapinat
85466e1289 bump gramplet.gpr.py to new '4.2' major version, rows have used an alternate form 2014-06-18 15:34:25 +02:00
Jérôme Rapinat
36f481a5ef bump to '4.2.0' version 2014-06-18 15:26:29 +02:00
Paul Franklin
546a53e6f2 slight MissingMediaDialog improvement 2014-06-17 17:24:10 -07:00
Ross Gammon
a95cbc624f 7828: Syntax Error with python3 on test function for Ukrainian relationship calculator 2014-06-17 16:44:53 +02:00
Paul Franklin
234ee04a7e slight warning-wording change 2014-06-16 10:33:10 -07:00
Jérôme Rapinat
bc26a2c2fe Try to avoid confusion between branches; limit usage of hard coded version number into translation strings 2014-06-16 17:28:29 +02:00
Jérôme Rapinat
a328f3f6ca Test on the french translation for handling urls on wiki according to locale and release version (Person and Name Editors, Welcome gramplet) 2014-06-16 16:23:47 +02:00
Jérôme Rapinat
325c4efb8b Test for alternate urls handling according to locale and translation, easier environment for next major versions 2014-06-16 16:15:00 +02:00
Jérôme Rapinat
c93bffb8f6 typo 2014-06-16 16:08:50 +02:00
Jérôme Rapinat
70a30c6c3d Try to use constants like URL_MANUAL_PAGE, URL_WIKISTRING for easier migrations to new major versions 2014-06-16 15:52:28 +02:00
Jérôme Rapinat
5770a38ea4 Fix some typos on french translation 2014-06-16 15:18:22 +02:00
Jérôme Rapinat
21df604765 Add release version support 2014-06-16 15:15:38 +02:00
Paul Franklin
176493c011 add translated-output option to B.R. TOC and Index reports 2014-06-14 13:39:28 -07:00
Paul Franklin
d633c7711d Fix alphabetic index and toc bug in books
Another bad indent from master commit [796240] (and gramps40 [3196f8])
2014-06-13 09:25:20 -07:00
Marc Hulsman
aeda10a3fe Add unit test for treemodel nodes 2014-06-12 22:49:53 +01:00
Marc Hulsman
f3566ebc34 Add unit test for tree cursors 2014-06-12 22:49:30 +01:00
Nick Hall
52928e3a7c 7471: Fix python3 sort key errors
Ensure input to strxfrm is correct type.
Apply patch by Marc Hulsman.
2014-06-12 22:00:51 +01:00
Nick Hall
52a4e5d581 Fix alphabetic index and toc bug in books
Bad indent introduced in commit [796240].
2014-06-11 22:40:51 +01:00
Paul Franklin
637f72d4af revert [02b8ec] (bump trunk/master to 4.2.0) 2014-06-11 10:36:16 -07:00
Paul Franklin
12e7019af9 7398: Gedcom import deletes first char of notes 2014-06-11 10:06:53 -07:00
Paul Franklin
02b8ec013f bump trunk/master to 4.2.0 2014-06-10 08:30:42 -07:00
Paul Franklin
89b054d39e 6241: Non-sensical sentences when individuals name record is absent 2014-06-08 15:53:07 -07:00
Paul Franklin
f5b404108d improve plugin warning 2014-06-08 13:03:39 -07:00
Paul Franklin
c61f11c5e8 7678 typo 2014-06-08 12:59:47 -07:00
Jérôme Rapinat
63f0a77cf2 7678: some gir modules were not called 2014-06-07 13:30:05 +02:00
Jérôme Rapinat
2e2fbe8fc6 7678: some fixes around gettext and messages handling 2014-06-07 12:51:30 +02:00
Paul Franklin
c5d5285e7e 7784 "IndexError: list index out of range" on [initial CLI "gramps -t"] 2014-06-05 08:04:07 -07:00
Jérôme Rapinat
e87ca38574 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 15:00:37 +02:00
Jérôme Rapinat
96ceb1534a add checksum values on 'example.gramps' 2014-06-04 14:47:42 +02:00
Jérôme Rapinat
666b4fd56e 7678: typo, missing self argument on fallback for personpos_at_angle() 2014-06-04 12:14:48 +02:00
Jérôme Rapinat
3a3af67106 7678: typo, set_border_width was set twice on CLIVbox() 2014-06-03 21:17:28 +02:00
Jérôme Rapinat
e6edfefd99 7766: Fan Chart views crash with self.maxperiod = self.minperiod 2014-06-03 10:40:34 +02:00
Ondrej Krc
78e9bb070a Git Merge Request : Slovak translation updates 2014-06-02 17:18:38 +02:00
Nick Hall
76d365a3f7 Update English (British) translation 2014-05-30 23:24:25 +01:00
Zdeněk Hataš
39b6954062 czech translation update 2014-05-30 22:05:32 +02:00
Ondrej Krc
1af22a530c Git Merge Request : Update Slovak date handler 2014-05-30 10:12:22 +02:00
Omar Kohl
de797ec63a Git Merge Request : Spanish typo 2014-05-29 15:53:48 +02:00
Ondrej Krc
f29341fcb3 Git Merge Request : Slovak translation updates 2014-05-29 15:36:28 +02:00
Jérôme Rapinat
6ff6c479fa Add support for Slovak manual 2014-05-29 15:33:06 +02:00
Zdeněk Hataš
50f283552d typo 2014-05-28 21:30:06 +02:00
Nick Hall
58843c01b4 7712: Use full path for file existence check 2014-05-27 15:25:56 +01:00
Luigi Toscano
d06cf9ab08 Italian translation updates (master) 2014-05-27 01:52:10 +02:00
Jérôme Rapinat
4f165ab959 7554: update template 2014-05-26 17:53:42 +02:00
Nick Hall
98e2b7c582 Add check for PangoCairo typelib at startup 2014-05-25 14:15:50 +01:00
noirauds
30376b802e BUG : years are displayed as floating numbers 2014-05-25 11:27:45 +02:00
Nick Hall
72b96c96f9 Fix tree cursor for read-only databases 2014-05-25 00:01:14 +01:00
Zdeněk Hataš
545b99e348 czech translation update 2014-05-24 23:09:58 +02:00
Nick Hall
313d015ceb 7554: Replace LaTex by LaTeX 2014-05-24 21:20:23 +01:00
Nick Hall
6af8fe607f Match alternative names in HasPlace filter 2014-05-24 20:43:32 +01:00
Nick Hall
84bde16850 7177: Rebuild place tree view when a place moves in the hierarchy 2014-05-24 00:08:47 +01:00
John Ralls
225b244aca Patch PIL to build with Freetype2 2014-05-23 11:31:06 -07:00
John Ralls
70a0650ba0 7736: MacOSX Version 4.0.4-1 missing libgtkspell3 from bundle. 2014-05-22 20:25:44 -07:00
Ondrej Krc
ab58ca890e Merge Request : Typo fix in slovak translation 2014-05-22 20:48:20 +02:00
Peter Landgren
8b38ce5bce Updated Swedish translation 2014-05-22 17:54:03 +02:00
Nick Hall
b7bb377939 7731: Fix error tagging source in citation tree view 2014-05-22 14:19:16 +01:00
Jérôme Rapinat
77f652bb22 merge NEWS from gramps40 2014-05-22 14:46:20 +02:00
Zdeněk Hataš
daa8cb755e czech translation update 2014-05-22 10:24:48 +02:00
Jérôme Rapinat
975c6ef577 typo on country level (example.gramps) 2014-05-22 09:01:40 +02:00
Jérôme Rapinat
084e56d1aa merge back some french modules from gramps41 2014-05-22 08:43:27 +02:00
Jérôme Rapinat
91fe0fe083 typo 2014-05-22 08:29:34 +02:00
Nick Hall
68726b9c62 Enable drag & drop for place references 2014-05-22 00:05:46 +01:00
Nick Hall
2af09727b7 7729: Extend tag report to show all primary object types 2014-05-21 23:49:17 +01:00
Nick Hall
842379e6db Revert [27453a] and [9d6049]
Fix broken proxies and make proxies read-only.
2014-05-21 21:59:36 +01:00
Nick Hall
b45bda2e57 Reduce label width in assistants (Gtk 3.10) 2014-05-21 21:22:45 +01:00
Paul Franklin
b2426f9c0e add name-format option to trunk's tag report 2014-05-21 12:03:21 -07:00
Jérôme Rapinat
ec112667a4 update french translation 2014-05-21 17:46:22 +02:00
1067 changed files with 595632 additions and 388021 deletions
.gitattributes.gitignore.travis.ymlFAQGramps.pyINSTALLNEWSREADMERELEASE_NOTES
data
debian
docs
example
gramps
__init__.py
cli
gen
config.pyconst.pyconstfunc.py
datehandler
db
dbstate.py
display
filters
git_revision.py
lib
merge
mime
plug
proxy
recentfiles.pyrelationship.py
simple
sort.pysoundex.py
test
updatecallback.py
utils
grampsapp.py
gui
aboutdialog.pyactiongroup.pyautocomp.pyclipboard.pycolumnorder.pyconfigure.pydbloader.pydbman.pyddtargets.pydialog.pydisplay.pydisplaystate.py
editors
filters
glade.py
glade
grampsgui.pylistmodel.py
logger
makefilter.pymanagedwindow.py
merge
navigator.py
plug
pluginmanager.py
selectors
test
thumbnails.pytipofday.pyundohistory.pyuser.pyutils.pyutilscairo.pyviewmanager.py
views
widgets
guiQML
plugins
docgen
drawreport
export
gramplet
graph
importer
lib
mapservices
quickview
rel
sidebar
textreport
tool
view
webreport
webstuff
test
version.py
webapp
help
images/hicolor
16x16
22x22
24x24
48x48
scalable
mac
po
setup.py

9
.gitattributes vendored Normal file

@@ -0,0 +1,9 @@
# Make Github recognise Gramps as a Python project,
# by marking .sql files as text files!
# See: https://github.com/github/linguist/issues/2462
# https://github.com/github/linguist/blob/master/README.md
*.sql linguist-language=txt
# Have Github ignore js vendored files.
# https://github.com/gramps-project/gramps/tree/master/data/javascript
#data/javascript/*.js linguist-vendored

1
.gitignore vendored

@@ -18,3 +18,4 @@ tags
# Testing
test/data
gramps/webapp/grampsdb/fixtures/initial_data.json

29
.travis.yml Normal file

@@ -0,0 +1,29 @@
# After changing this file, check it on:
# http://lint.travis-ci.org/
language: c
#python:
# - 3.3
# - 3.4
install:
- git clone --depth=50 --branch=maintenance/gramps42 git://github.com/gramps-project/gramps.git gramps-project/gramps
- cd gramps-project/gramps
- time sudo apt-get update
- travis_retry sudo apt-get install gir1.2-pango gir1.2-gtk xdg-utils librsvg2-common libglib2.0-dev intltool
- travis_retry sudo apt-get install python3-gobject python3-gi python3-cairo python3-gi-cairo python3-bsddb3 python3-dev python3-nose
- travis_retry curl https://bootstrap.pypa.io/get-pip.py | sudo python3
- travis_retry sudo pip3 install Django==1.7
- travis_retry sudo pip3 install pyicu==1.8
- travis_retry sudo pip3 install mock
- python3 setup.py build
#before_script:
# - sudo Xvfb :99 -ac &
# - export DISPLAY=:99
script:
- mkdir -p /home/travis/.gramps/grampsdb/
- DJANGO_SETTINGS_MODULE=gramps.webapp.settings nosetests3 --exclude=TestcaseGenerator --exclude=vcard --exclude=merge_ref_test gramps

185
FAQ

@@ -1,4 +1,4 @@
**** This is GRAMPS Frequently Asked Questions ****
**** This is Gramps Frequently Asked Questions ****
The questions below frequently come up in mailing list discussions and forums.
This list is by no means complete. If you would like to add questions/answers
@@ -9,23 +9,23 @@ to this list, please email your suggestions to gramps-devel@lists.sf.net
==General==
1. What is GRAMPS?
1. What is Gramps?
2. Where do I get it and how much does it cost?
3. Does GRAMPS exist in other languages?
3. Does Gramps exist in other languages?
4. How do I keep backups?
5. Does Gramps support Unicode fonts? In particular, does it support non-Roman Unicode fonts?
6. What is needed to install GRAMPS under Linux, Solaris, or FreeBSD?
6. What is needed to install Gramps under Linux, Solaris, or FreeBSD?
7. Does it work with Windows (tm)?
8. Does it work with the Mac?
9. What are the Minimum Specs to run GRAMPS?
9. What are the Minimum Specs to run Gramps?
==Preferences==
@@ -33,43 +33,43 @@ to this list, please email your suggestions to gramps-devel@lists.sf.net
==Collaboration-Portability==
11. Is GRAMPS compatible with other genealogical software?
11. Is Gramps compatible with other genealogical software?
12. Can GRAMPS read files created by GenApp X?
12. Can Gramps read files created by GenApp X?
13. Can GRAMPS write files readable by GenApp X?
13. Can Gramps write files readable by GenApp X?
14. What standards does GRAMPS support?
14. What standards does Gramps support?
15. How do I import data from another genealogy program into GRAMPS?
15. How do I import data from another genealogy program into Gramps?
16. Can I install GRAMPS on a Linux Web Server and use it via a web browser? This would enable my relations worldwide to access and update it.
16. Can I install Gramps on a Linux Web Server and use it via a web browser? This would enable my relations worldwide to access and update it.
==Reports==
17. Can GRAMPS print a genealogical tree for my family?
17. Can Gramps print a genealogical tree for my family?
18. In what formats can GRAMPS output its reports?
18. In what formats can Gramps output its reports?
19. How can I change the default language in reports?
20. Is GRAMPS compatible with the Internet?
20. Is Gramps compatible with the Internet?
21. Can I create custom reports/filters/whatever?
22. Why are non-latin characters displayed as garbage in PDF/PS reports?
23. I would like to contribute to GRAMPS by writing my favorite report.
23. I would like to contribute to Gramps by writing my favorite report.
==Database - GRAMPS file formats==
==Database - Gramps file formats==
24. What is the maximum database size (bytes) GRAMPS can handle?
24. What is the maximum database size (bytes) Gramps can handle?
25. How many people can GRAMPS database handle?
25. How many people can Gramps database handle?
26. My database is really big. Is there a way around loading all the data into memory?
27. Can I run GRAMPS from a database on a NFS share?
27. Can I run Gramps from a database on a NFS share?
28. Why is the database format not portable?
@@ -77,123 +77,116 @@ to this list, please email your suggestions to gramps-devel@lists.sf.net
29. I found a bug and I want it fixed right now! What do I do?
30. GRAMPS should be a .... type of application
30. Gramps should be a .... type of application
==GRAMPS Webhosting ==
31. How can I publish web sites generated by GRAMPS?
32. How do I submit my pages to the GRAMPS library site (http://library.gramps-project.org)?
33. After I upload my Family Web Page to library.gramps-project.org, is the password used for write privileges only or read privileges?
34. Do I view the Family Web Page with a url into my browser? Or through a link on a list of Family Web Pages on the GRAMPS-Project.org site?
==Gramps Webhosting ==
31. How can I publish web sites generated by Gramps?
**** Questions and answers ****
==General==
1. What is GRAMPS?
1. What is Gramps?
GRAMPS is the Genealogical Research and Analysis Management Program System.
Gramps is the Genealogical Research and Analysis Management Program System.
In other words, it is a personal genealogy program letting you store, edit,
and research genealogical data using the powers of your computer.
2. Where do I get it and how much does it cost?
GRAMPS can be downloaded from http://sf.net/projects/gramps at no charge.
GRAMPS is an Open Source project covered by the GNU General Public License.
Gramps can be downloaded from http://sf.net/projects/gramps at no charge.
Gramps is an Open Source project covered by the GNU General Public License.
You have full access to the source code and are allowed to distribute the
program and source code freely.
3. Does GRAMPS exist in other languages?
3. Does Gramps exist in other languages?
Yes, at the moment GRAMPS is translated in 15 languages
Yes, at the moment Gramps is translated in 15 languages
4. How do I keep backups?
Use a recent version of GRAMPS! From 2.2.5 onwards there is an automatic backup utility.
It is extremely important to keep backups of your data, and keep them in a safe place. GRAMPS has a specific portable file format which is small, and human readable, denoted by .gramps. If you have allowed this in the preferences (In Edit menu->Preferences->General), GRAMPS will keep a backup of your database on exit. You can copy this backup file from time to time to a save location (eg a usb stick).
Use a recent version of Gramps! From 2.2.5 onwards there is an automatic backup utility.
It is extremely important to keep backups of your data, and keep them in a safe place. Gramps has a specific portable file format which is small, and human readable, denoted by .gramps. If you have allowed this in the preferences (In Edit menu->Preferences->General), Gramps will keep a backup of your database on exit. You can copy this backup file from time to time to a save location (eg a usb stick).
Note: The .gramps files are compressed. Clicking them will open GRAMPS. To see the XML select them and open them with a decompressing utility (like ark, gunzip), after which you can extract the XML file which is human readable.
Do not keep backups in GEDCOM. Not all information GRAMPS stores can be written in the GEDCOM. Hence, an export/import operation GRAMPS --> GEDCOM --> GRAMPS, will mean you lose data. Use the .gramps file format for backups!
Note: The .gramps files are compressed. Clicking them will open Gramps. To see the XML select them and open them with a decompressing utility (like ark, gunzip), after which you can extract the XML file which is human readable.
Do not keep backups in GEDCOM. Not all information Gramps stores can be written in the GEDCOM. Hence, an export/import operation Gramps --> GEDCOM --> Gramps, will mean you lose data. Use the .gramps file format for backups!
Do not keep backups in GRDB format. GRDB is a database, which might be computer dependent (read, not working on a different PC). Small damage to a GRDB file can also not be repaired. Use the .gramps file format for backups!
5. Does Gramps support Unicode fonts? In particular, does it support non-Roman Unicode fonts?
Yes. GRAMPS works internally with Unicode (UTF-8), so all alphabets can be used on all entry fields. All reports fully support this, although for PDF/PS you need to work with gnome-print or openoffice.
Yes. Gramps works internally with Unicode (UTF-8), so all alphabets can be used on all entry fields. All reports fully support this, although for PDF/PS you need to work with gnome-print or openoffice.
==Installation==
6. What is needed to install GRAMPS under Linux, Solaris, or FreeBSD?
6. What is needed to install Gramps under Linux, Solaris, or FreeBSD?
GRAMPS is a [http://en.wikipedia.org/wiki/Gtk GTK] application. GRAMPS needs to have the [http://en.wikipedia.org/wiki/Pygtk pygtk] libraries installed on the system. As long as these libraries are installed, GRAMPS should function. It will operate under the GNOME desktop, KDE desktop, or any other desktop. If the GNOME bindings for Python are installed on the system, GRAMPS will have additional functionality. The GRAMPS project recommends version 2.8 or higher of GTK.
Gramps is a [http://en.wikipedia.org/wiki/Gtk GTK] application. Gramps needs to have the [http://en.wikipedia.org/wiki/Pygtk pygtk] libraries installed on the system. As long as these libraries are installed, Gramps should function. It will operate under the GNOME desktop, KDE desktop, or any other desktop. If the GNOME bindings for Python are installed on the system, Gramps will have additional functionality. The Gramps project recommends version 2.8 or higher of GTK.
7. Does it work with Windows (tm)?
The Linux Genealogy CD can function as a live CD that you boot directly from. You can then run Linux and GRAMPS off the CD, even if your computer is entirely Windows.
The Linux Genealogy CD can function as a live CD that you boot directly from. You can then run Linux and Gramps off the CD, even if your computer is entirely Windows.
An experimental Windows installer is available, however we do not have the manpower to offer support for Windows. A windows mailing list is available however and we do do our best to solve windows related problems.
8. Does it work with the Mac?
The Fink project has ported some older versions of GRAMPS to OS X (tm). The Mac OS X port is not directly supported by the GRAMPS project, primarily because none of the GRAMPS developers have access to Mac OS X and because OS X is not Free Software.
The Fink project has ported some older versions of Gramps to OS X (tm). The Mac OS X port is not directly supported by the Gramps project, primarily because none of the Gramps developers have access to Mac OS X and because OS X is not Free Software.
This present version of GRAMPS (2.2.x) does not appear to have been ported by the Fink project. Please contact the Fink project for more information. However, some users had success in installing 2.2.x on Mac OSX either running in native mode or running on X11 using some of the fink packages.
This present version of Gramps (2.2.x) does not appear to have been ported by the Fink project. Please contact the Fink project for more information. However, some users had success in installing 2.2.x on Mac OSX either running in native mode or running on X11 using some of the fink packages.
9. What are the Minimum Specs to run GRAMPS?
9. What are the Minimum Specs to run Gramps?
We would recommend at least an 800x600 video display. For GRAMPS 2.0, the memory requirements have been reduced, and GRAMPS can run quite efficiently on a 256MB system, holding considerably more people. A system with 512MB should be able to hold around 200,000 people. Disk space requirements for databases are however considerably larger, with a typical database being several megabytes in size. For 120.000 people you must consider already 530Mb for the database. Pictures are stored on disk separately, so a large harddisk is necessary.
We would recommend at least an 800x600 video display. For Gramps 2.0, the memory requirements have been reduced, and Gramps can run quite efficiently on a 256MB system, holding considerably more people. A system with 512MB should be able to hold around 200,000 people. Disk space requirements for databases are however considerably larger, with a typical database being several megabytes in size. For 120.000 people you must consider already 530Mb for the database. Pictures are stored on disk separately, so a large harddisk is necessary.
==Preferences==
10. Can I change the dates in reports to 'day month year'
Yes, change in the preferences ("Edit->Preferences") the date for GRAMPS to the required format (eg YYYY-MM-DD or day mont year), and make the report. Your global date preferences will be used.
Yes, change in the preferences ("Edit->Preferences") the date for Gramps to the required format (eg YYYY-MM-DD or day mont year), and make the report. Your global date preferences will be used.
==Collaboration-Portability==
11. Is GRAMPS compatible with other genealogical software?
11. Is Gramps compatible with other genealogical software?
GRAMPS makes every effort to maintain compatibility with GEDCOM, the general standard of recording genealogical information. We have import and export filters that enable GRAMPS to read and write GEDCOM files.
Gramps makes every effort to maintain compatibility with GEDCOM, the general standard of recording genealogical information. We have import and export filters that enable Gramps to read and write GEDCOM files.
It is important to understand that the GEDCOM standard is poorly implemented -- virtually every genealogical software has its own "flavor" of GEDCOM. As we learn about new flavor, the import/export filters can be created very quickly. However, finding out about the unknown flavors requires user feedback. Please feel free to inform us about any GEDCOM flavor not supported by GRAMPS, and we will do our best to support it!
It is important to understand that the GEDCOM standard is poorly implemented -- virtually every genealogical software has its own "flavor" of GEDCOM. As we learn about new flavor, the import/export filters can be created very quickly. However, finding out about the unknown flavors requires user feedback. Please feel free to inform us about any GEDCOM flavor not supported by Gramps, and we will do our best to support it!
12. Can GRAMPS read files created by GenApp X?
12. Can Gramps read files created by GenApp X?
See above.
13. Can GRAMPS write files readable by GenApp X?
13. Can Gramps write files readable by GenApp X?
See above.
14. What standards does GRAMPS support?
14. What standards does Gramps support?
The nice thing about standards is that there never is a shortage of them. GRAMPS is tested to support the following flavors of GEDCOM: GEDCOM5.5, Brother's Keeper, Family Origins, Family Tree Maker, Ftree, GeneWeb, Legacy, Personal Ancestral File, Pro-Gen, Reunion, and Visual Genealogie.
The nice thing about standards is that there never is a shortage of them. Gramps is tested to support the following flavors of GEDCOM: GEDCOM5.5, Brother's Keeper, Family Origins, Family Tree Maker, Ftree, GeneWeb, Legacy, Personal Ancestral File, Pro-Gen, Reunion, and Visual Genealogie.
15. How do I import data from another genealogy program into GRAMPS?
15. How do I import data from another genealogy program into Gramps?
The best way is to create a new gramps database file (.grdb), and select the import option in the file menu. Here you select the GEDCOM you generated with the other program, and import it.
16. Can I install GRAMPS on a Linux Web Server and use it via a web browser? This would enable my relations worldwide to access and update it.
16. Can I install Gramps on a Linux Web Server and use it via a web browser? This would enable my relations worldwide to access and update it.
While GRAMPS can generate web sites, it does not provide a web interface that allows for editing. If this is a requirement, then [http://geneweb.org GeneWeb] or [http://phpgedview.sourceforge.net PhpGedView] are programs more likely to meet your needs. However, you may wish to ask yourself the following questions:
While Gramps can generate web sites, it does not provide a web interface that allows for editing. If this is a requirement, then [http://geneweb.org GeneWeb] or [http://phpgedview.sourceforge.net PhpGedView] are programs more likely to meet your needs. However, you may wish to ask yourself the following questions:
* Do I really want relatives or other people to directly edit my genealogy database?
* Do I implicitly trust, without verification, any data that people may enter?
* Do these people have the same understanding of good genealogy practice that I have?
@@ -204,7 +197,7 @@ You may also want to consider the effects of possible downtime of your site if y
==Reports==
17. Can GRAMPS print a genealogical tree for my family?
17. Can Gramps print a genealogical tree for my family?
Yes. Different people have different ideas of what a genealogical tree is.
Some think of it as a chart going from the distant ancestor and listing
@@ -212,14 +205,14 @@ all his/her descendants and their families. Others think it should be a
chart going from the person back in time, listing the ancestors and their
families. Yet other people think of a table, text report, etc.
GRAMPS can produce any of the above, and many more different charts and
Gramps can produce any of the above, and many more different charts and
reports. Moreover, the plugin architechture enables users (you) to create
their own plugins which could be new reports, charts, or research tools.
18. In what formats can GRAMPS output its reports?
18. In what formats can Gramps output its reports?
Text reports are available in HTML, PDF, ODT, LaTeX, and RTF formats. Graphical reports (charts and diagrams) are available in PostScript, PDF, SVG, ODS, and GraphViz formats.
Text reports are available in HTML, PDF, ODT, LaTeX, and RTF formats. Graphical reports (charts and diagrams) are available in PostScript, PDF, SVG, ODS, and Graphviz formats.
19. How can I change the default language in reports?
@@ -227,11 +220,11 @@ Text reports are available in HTML, PDF, ODT, LaTeX, and RTF formats. Graphical
The reports are in the language of your linux installation. You can change it by installing extra language packs, see [Howto: Change the language of reports] on wiki.
20. Is GRAMPS compatible with the Internet?
20. Is Gramps compatible with the Internet?
GRAMPS can store web addresses and direct your browser to them. It can import
Gramps can store web addresses and direct your browser to them. It can import
data that you download from the Internet. It can export data that you could
send over the Internet. GRAMPS is familiar with the standard file formats
send over the Internet. Gramps is familiar with the standard file formats
widely used on the Internet (e.g. JPEG, PNG, and GIF images, MP3, OGG, and
WAV sound files, QuickTime, MPEG, and AVI movie files, etc). Other than that,
there is little that a genealogical program can do with the Internet :-)
@@ -241,7 +234,7 @@ there is little that a genealogical program can do with the Internet :-)
Yes. There are many levels of customization. One is creating or modifying
the templates used for the reports. This gives you some control over
the fonts, colors, and some layout of the reports. You can also use GRAMPS
the fonts, colors, and some layout of the reports. You can also use Gramps
controls in the report dialogs to tell what contents should be used for a
particular report. In addition to this, you have an ability to create your
own filters -- this is useful in selecting people based on criteria set
@@ -253,47 +246,47 @@ knowledge of programming in Python.
22. Why are non-latin characters displayed as garbage in PDF/PS reports?
This is a limitation of the built-in fonts of PS and PDF formats. To print non-Latin text, use the Print... in the format selection menu of the report dialog. This will use the gnome-print backend, which supports PS and PDF creation, as well as direct printing. (Note: you might need to install gnome-print separately as it is not required for GRAMPS).
This is a limitation of the built-in fonts of PS and PDF formats. To print non-Latin text, use the Print... in the format selection menu of the report dialog. This will use the gnome-print backend, which supports PS and PDF creation, as well as direct printing. (Note: you might need to install gnome-print separately as it is not required for Gramps).
If you only have Latin text, the PDF option will produce a smaller PDF compared to that created by gnome-print, simply because no font information will be embedded.
23. I would like to contribute to GRAMPS by writing my favorite report.
23. I would like to contribute to Gramps by writing my favorite report.
How do I do that?
The easiest way to contribute to reports, filters, tools, etc. is to copy an existing GRAMPS report, filter, or tool. If you can create what you want by modifying existing code -- great! If your idea does not fit into the logic of any existing GRAMPS tool, you will need to write your own plugin from scratch. Help is available on the [Developers Portal] on wiki, or on the developers mailing list: gramps-devel@lists.sourceforge.net.
The easiest way to contribute to reports, filters, tools, etc. is to copy an existing Gramps report, filter, or tool. If you can create what you want by modifying existing code -- great! If your idea does not fit into the logic of any existing Gramps tool, you will need to write your own plugin from scratch. Help is available on the [Developers Portal] on wiki, or on the developers mailing list: gramps-devel@lists.sourceforge.net.
To test your work in progress, you may save your plugin under $HOME/.gramps/plugins directory and it should be found and imported on startup. The correctly written plugin will register itself with GRAMPS, create menu item, and so on.
To test your work in progress, you may save your plugin under $HOME/.gramps/plugins directory and it should be found and imported on startup. The correctly written plugin will register itself with Gramps, create menu item, and so on.
If you are happy with your plugin and would like to contribute your code back to the GRAMPS project, you are very welcome to do so by contacting us at gramps-devel@lists.sourceforge.net
If you are happy with your plugin and would like to contribute your code back to the Gramps project, you are very welcome to do so by contacting us at gramps-devel@lists.sourceforge.net
==Database - GRAMPS file formats==
==Database - Gramps file formats==
24. What is the maximum database size (bytes) GRAMPS can handle?
24. What is the maximum database size (bytes) Gramps can handle?
GRAMPS has no hard limits on the size of a database that it can handle. Starting with 2.0.0 release, GRAMPS no longer loads all data into memory, which allows it to work with a much larger database than before. In reality, however, there are practical limits. The main limiting factors are the available memory on the system and the cache size used for BSDDB database access. With common memory sizes these days, GRAMPS should have no problem using databases with tens of thousands of people.
Gramps has no hard limits on the size of a database that it can handle. Starting with 2.0.0 release, Gramps no longer loads all data into memory, which allows it to work with a much larger database than before. In reality, however, there are practical limits. The main limiting factors are the available memory on the system and the cache size used for BSDDB database access. With common memory sizes these days, Gramps should have no problem using databases with tens of thousands of people.
25. How many people can GRAMPS database handle?
25. How many people can Gramps database handle?
See above. Again, this is dependent on how much memory you have, see [GRAMPS Performance] on wiki.
See above. Again, this is dependent on how much memory you have, see [Gramps Performance] on wiki.
26. My database is really big. Is there a way around loading all the data into memory?
Starting with 2.0.0 release, GRAMPS no longer loads all data into memory, which allows it to work with a much larger database than before. The fileformat used is .grdb which means gramps database.
Starting with 2.0.0 release, Gramps no longer loads all data into memory, which allows it to work with a much larger database than before. The fileformat used is .grdb which means gramps database.
27. Can I run GRAMPS from a database on a NFS share?
27. Can I run Gramps from a database on a NFS share?
Yes you can.
28. Why is the database format not portable?
The biggest issue with GRAMPS portability lies with 'transactions'. With
GRAMPS 2.2, we added support for atomic transactions to protect data.
The biggest issue with Gramps portability lies with 'transactions'. With
Gramps 2.2, we added support for atomic transactions to protect data.
With atomic transactions, multiple changes are committed as a single
unit. Either all the changes make it, or none of the changes make it.
You are never left in a situation with a partial set of changes. A side
@@ -341,41 +334,25 @@ If the above explanations seem vague, please follow this link:
http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
30. GRAMPS should be a .... type of application
30. Gramps should be a .... type of application
The surest way to see it happen is to get it done by yourself. Since GRAMPS is free/open source, nobody prevents you from taking all of the code and continuing its development in whatever direction you see fit. In doing so, you may consider giving your new project another name to avoid confusion with the continuing GRAMPS development. If you would like the GRAMPS project to provide advice, expertise, filters, etc., we will gladly cooperate with your new project, to ensure compatibility or import/export options to your new format of a project.
The surest way to see it happen is to get it done by yourself. Since Gramps is free/open source, nobody prevents you from taking all of the code and continuing its development in whatever direction you see fit. In doing so, you may consider giving your new project another name to avoid confusion with the continuing Gramps development. If you would like the Gramps project to provide advice, expertise, filters, etc., we will gladly cooperate with your new project, to ensure compatibility or import/export options to your new format of a project.
If, however, you would like the GRAMPS project to adopt your strategy, you would need to convince GRAMPS developers that your strategy is good for GRAMPS and superior to the present development strategy.
If, however, you would like the Gramps project to adopt your strategy, you would need to convince Gramps developers that your strategy is good for Gramps and superior to the present development strategy.
HINT: if GRAMPS developers are still not convinced after about three
HINT: if Gramps developers are still not convinced after about three
messages sent to gramps-devel, maybe you are better off on your own
rather than with a company of retards who can't fully realize the
potential of your great idea :-)
==GRAMPS Webhosting ==
==Gramps Webhosting ==
31. How can I publish web sites generated by GRAMPS?
31. How can I publish web sites generated by Gramps?
Since GRAMPS generates HTML pages, you can upload the pages to your personal web site. If you do not have a personal web site, and still wish to have your pages available on the internet, the GRAMPS project can provide space for you at the http://library.gramps-project.org, see the [webhosting article] on wiki.
Since Gramps generates HTML pages, you can upload the pages to your personal web site. If you do not have a personal web site, and still wish to have your pages available on the internet.
32. How do I submit my pages to the GRAMPS library site (http://library.gramps-project.org)?
If you wish to submit pages to the GRAMPS library site, you will need to contact the GRAMPS project, typically by sending a message to the gramps-users mailing list. You will then be given a username and password that will allow you to upload your files to the site. After you upload the files (in a gzip'ed tar file), the GRAMPS project will install the pages for you on the site.
33. After I upload my Family Web Page to library.gramps-project.org, is the password used for write privileges only or read privileges?
In order to prevent abuse of the library.gramsp-project.org site, the password given allows uploads only. If you wish to have a username and password combination to restrict read access to your pages, you will need to contact the GRAMPS project, and we could set this up for you. However, the read and write accounts will be separate accounts.
34. Do I view the Family Web Page with a url into my browser? Or through a link on a list of Family Web Pages on the GRAMPS-Project.org site?
The main page on the library.gramps-project.org site will contain an index of the available family sites. However, there will be a unique URL for each site as well.
**** End of GRAMPS Frequently Asked Questions ****
**** End of Gramps Frequently Asked Questions ****
$Id$

2
Gramps.py Normal file → Executable file

@@ -1,4 +1,4 @@
#! /usr/bin/env python
#! /usr/bin/env python3
#
# Gramps - a GTK+/GNOME based genealogy program
#

72
INSTALL

@@ -1,50 +1,55 @@
$Id$
This file contains some useful details on the installation from source code
for GRAMPS. It does not cover installation of a pre-built binary package.
for Gramps. It does not cover installation of a pre-built binary package.
For that use your package manager, the rest is already done by the packager.
Uninstall old version
---------------------
If you do a source install in the same place of an existing install,
If you do a source install in the same place as an existing install,
you need to remove the old version first. You can delete the old
version by deleting the installed directories (for example,
/usr/share/gramps
version by deleting the installed directories. For example, if your installation prefix is /usr/local, remove the following:
/usr/local/share/gramps
/usr/local/lib/pythonx.x/site-packages/gramps
If you installed with a package manager you might instead need to remove
/usr/local/lib/pythonx.x/dist-packages/gramps
/usr/lib/pythonx.x/site-packages/gramps
/usr/lib/pythonx.x/dist-packages/gramps
where pythonx.x is python2.7 or whatever version you installed gramps with.
Also remove the gramps .egg files that are installed along with the gramps
directory.
replacing pythonx.x with the python version you used, e.g. python3.4.
Also remove any gramps .egg files that are installed along with the gramps
directory and the file /usr/local/bin/gramps.
If you don't know the list of all files that Gramps installed, you can
reinstall it with the --record option, and take a look at the list this
produces (so python setup.py install --record grampsfiles.txt
GRAMPS is a python application, so loading happens on reading the
Gramps is a python application, so loading happens on reading the
files, meaning that files of a previous version that are no longer
present in the new version can still be loaded, making the new install
unstable!
distutils install
-----------------
We do not check all dependencies of Gramps, see README for a
list of all required and optional dependencies. On running Gramps, errors will
be returned if dependencies are missing.
If you are building from released tarball, you should be able to just
run
We do not check all dependencies of Gramps, see README for a list of
all required and optional dependencies. Missing dependencies will
result in runtime errors.
To build and install, whether from a tarball or git repo:
python setup.py build
python setup.py install
sudo python setup.py install
where the last must be done as root. You can work with Gramps if you only build
it by pointing the PYTHONPATH to the build directory, but things like MIME type
and desktop entries will not be created then.
You can avoid using sudo for the install step by specifying a prefix to which you have write priviledge. The default is /usr/local, which is usually owned by root. You can learn of more options with
python setup.py --help
One can use gramps from the command line without installing it by
setting the following environment variables, but that won't provide
things like MIME type and desktop entries.
export PYTHONPATH="/top/grampsdir/gramps:$PYTHONPATH"
export GRAMPS_RESOURCES="/top/grampsdir"
See below for ways to invoke Gramps.
Typical install directories in linux (ubuntu) are:
* /usr/local/lib/python2.7/dist-packages/gramps/ : the gramps python module
* /usr/local/lib/python3.4/dist-packages/gramps/ : the gramps python module
* /usr/local/share/mime-info : mime info so gramps opens files automatically
* /usr/local/share/icons/gnome : our icons
* /usr/local/share/doc/gramps : documentation, also example .gramps and .gedcom
@@ -57,18 +62,18 @@ Typical install directories in linux (ubuntu) are:
Running Gramps
--------------
Gramps is python only, so no compilation is needed, you can even run gramps
from the source directory.
from the source directory.
a) You installed Gramps, then you can run it with the command
gramps
gramps
b) You installed Gramps, and want to start it from the PYTHONPATH. In this
case use the command:
python -c 'from gramps.grampsapp import main; main()'
The executable 'gramps' in /usr/local/bin or /usr/bin from a) does
The executable 'gramps' in /usr/local/bin or /usr/bin from a) does
this for you.
b) You downloaded the Gramps source code to a directory, and want to run it.
@@ -76,22 +81,16 @@ from the source directory.
python Gramps.py
See gramps/gen/const.py how Gramps finds his resource directories in case
See gramps/gen/const.py how Gramps finds its resource directories in case
you encounter problems.
Custom directory installation
-------------------------------------
If you would like to install GRAMPS without being root, or in an
If you would like to install Gramps without being root, or in an
alternative location on windows, supply the --root argument to setup.py
For example:
python setup.py install --root ~/test
or
python setup.py install --root ~/test --enable-packager-mode
The last option, --enable-packager-mode, is needed if you want to disable
execution of post-install mime processing. If you don't have root/admin
access, this will be needed
Packager's issues
------------------
@@ -100,3 +99,8 @@ To create a source distribution run:
python setup.py sdist
If Gramps is built outside of the source tree in a temporary location (e.g. when
packaging for a distribution), the --resourcepath option can be used to specify
the path to the installed location of the Gramps resources (e.g. /usr/share):
python setup.py install --resourcepath=/usr/share

202
NEWS

@@ -1,3 +1,201 @@
2015-10-12
Version 4.2.1,
* Support for Retina and HiDPI Display, added 24px icons
* Fix verification tool with "Estimate missing or inexact dates"
* Fix missing link in hourglass graph report
* Sort custom place types in editors
* Allow Easter calculation with python3
* Fix crash on Descendants-detailed report
* FanChartDescendants View should at least have 2 generations
* Allow hyphenated gramps-id in Graphviz reports
* Complete Individual Report fails to run
* Fix broken wiki help links
* Set TextOption widget to expand vertically
* Unused Object Dialog box too small
* Short cut keys does not work in 'Change Event Types' dialog
* Update some Tips of the day
* Error when extracting place names
* Custom filters for note text repaired
* Fix Pedigreeview crash when selecting Compact view
* Set "visable_window" in GtkEventBox to fix transparency
* Faster scrolling
** cache database access for column values
** cache do_get_path lookups
** speed up load access on treeviews with no filters
** new LRU size of 1k (was 250)
** use cache in do_get_path from siblings
* Avoid using person-centric date matching for places
* Use place title as default name in GEDCOM import
* Ensure place names are not empty after upgrade
* Fix proxy to include all referenced place objects
* Fix bug that prevented any addons being loaded onto the Mac version
* Remove copy button from family tree manager
* Consistency for name fields on Person Editor
* [Geography] Place.set_name(name) requires a PlaceName()
* [Geography] Fix and improvements on place selection
* Limit problems with existing selection in media reference editor
* Stability fixes on Mac port
* Mac port localization crash with non-standard locale (e.g. en_IT).
* Fix color on history
* Fix countries selector for holidays
* Fix missing markups into textual reports
* All sidebars with Types now show custom types in combo list
* [New] Added Places to CSV import/export
* Some fixes on installer (setup.py)
* Various improvements on gen.plug.utils
* Fix graph reports [in Greek locale]
* New date handler for Hungarian locale
* Updated translations : cs, de, el, en_GB, fi, fr, hu, is, sv
2015-08-02
Version 4.2.0,
* New date and language fields on place name
* Review on GtkBuilder, fix some Gtk3 warnings and move from deprecated methods
* Change icons and buttons handling methods
* Enhanced Place Editor and new Place Name editor
* New widget: use own interactive-search
* Ability to import kml data into Geography views
* Enhancement for removing multiple selected items from Views (action group)
* Add drag support on more Views, Selectors and Editors
* Add right-click "Copy all" to ListModel and all QuickTables
* Review Alternate Place handling and edition
* New 'Place' configuration keys set by user (settings)
* New filter rule: is enclosed by
* Consistency on Privacy option for reports
* Consistency on "Name-format" options for reports
* Add DeferredFilter class (a subclass of GenericFilter)
* New textual Report: Links on Notes
* Fix alphabetic index and toc bug in books
* Enhancements on Style Editor
* Enhancements on End Notes into textual reports
* Changes on Individuals complete textual report
* Changes on Ancestors Tree draw report: Include Siblings
* Add name-format option, and deferred translation on Records report
* Add deferred translation on Timeline draw report
* Enable attributes gramplet on Source and Citation Views
* New place locations gramplet
* Optimizations around index, Flat and TreeView models
* Enhanced samples files
* All importers return now an ImportInfo object
* Experimental gwplus (geneweb) import file format support
* Remove experimental HTML renderer view
* New test scripts
* New Date handler for Japanese
* Review on Slovenian and Czech Date Handlers
* Implement both "traditional" and "simplfied" Chinese (translations and dates)
* Serbian review
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
@@ -249,8 +447,8 @@ Version 3.4.3 of Gramps! "Whenever life gets you down, Mrs. Brown", a maintenanc
* GEDCOM Repositories not imported correctly from FTM for Windows and Heredis.
* Fixes to a number of errors in filtering notes.
* Fix some errors in determining whether someone is alive (e.g. for filtering out alive people).
* Make availability of GraphViz settings depend on output format
* Improve the descriptions and tooltip for GraphViz aspect ratio option
* Make availability of Graphviz settings depend on output format
* Improve the descriptions and tooltip for Graphviz aspect ratio option
* Fixed update problems with citation bottombar gramplet (bug #6336)
* Fixed Open Document Text output in Book report (bug #6457)
* A number of changes to Narrative Web:

59
README

@@ -1,24 +1,21 @@
$Id$
Please read the COPYING file first.
If building from source, also read the INSTALL file (at least through the
"SUPER-SHORT VERSION") before going further.
Please read the INSTALL file if you intend to build from source.
Requirements
--------------------------------
The following packages *MUST* be installed in order for Gramps to work:
Python 2.7 or greater, Python 3.2 or greater (or both python versions)
GTK 3.0 or greater
pygobject 3.3.2 or greater
Python 3.2 or greater
GTK 3.10 or greater
pygobject 3.12 or greater
cairo, pango, pangocairo with introspection bindings (the gi packages)
librsvg2 (svg icon view)
xdg-utils
bsddb3 is required for Python 3.2 (not python 2.7)
bsddb3
The following package is needed for full translation of the interface
to your language:
language-pack-gnome-xx
language-pack-gnome-xx
Translation of GTK elements to your language, with
xx your language code; e.g. for Dutch you need
language-pack-gnome-nl. The translation of the
@@ -27,21 +24,13 @@ to your language:
The following packages are *STRONGLY RECOMMENDED* to be installed:
osmgpsmap Used to show maps in the geography view.
osmgpsmap Used to show maps in the geography view.
It may be osmgpsmap, osm-gps-map, or python-osmgpsmap,
but the Python bindings for this must also be present.
Without this the GeoView will not be active, see
http://gramps-project.org/wiki/index.php?title=Gramps_4.0_Wiki_Manual_-_Main_Window#Geography_Category
!! PACKAGERS: unfortunately, at the moment (March 2013),
the patches which gramps 4.0 needs osm-gps-map to have
are not yet released (as a new osm-gps-map version). The
osm-gps-map sources must be dated 6 February 2013 (or
later) to have the necessary patches. You may obtain
it from: http://nzjrs.github.com/osm-gps-map/ or else
http://sourceforge.net/projects/gramps/files/Dependencies
(The necessary version seems to be 0.8 -- or later.)
https://gramps-project.org/wiki/index.php?title=Gramps_4.2_Wiki_Manual_-_Categories#Geography_Category
GraphViz Enable creation of graphs using GraphViz engine.
Graphviz Enable creation of graphs using Graphviz engine.
Without this, three reports cannot be run.
Obtain it from: http://www.graphviz.org
@@ -53,23 +42,25 @@ The following packages are *STRONGLY RECOMMENDED* to be installed:
sorting is done through built-in libraries. PyICU is
fairly widely available through the package managers of
distributions. See http://pyicu.osafoundation.org/
(These are Python bindings for the ICU package.)
(These are Python bindings for the ICU package.
https://pypi.python.org/pypi/PyICU/)
The following packages are optional
gtkspell Enable spell checking in the notes. Gtkspell depends on
gtkspell Enable spell checking in the notes. Gtkspell depends on
enchant. A version of gtkspell with gobject introspection
is needed, so minimally version 3.0.0
rcs The GNU Revision Control System (RCS) can be used to manage
multiple revisions of your family trees. See info at
http://www.gramps-project.org/wiki/index.php?title=Gramps_4.0_Wiki_Manual_-_Manage_Family_Trees#Archiving_a_Family_Tree
https://gramps-project.org/wiki/index.php?title=Gramps_4.2_Wiki_Manual_-_Manage_Family_Trees#Archiving_a_Family_Tree
Only rcs is needed, NO python bindings are required
PIL Python Image Library is needed to crop
images and also to convert non-JPG images to
JPG so as to include them in LaTeX output.
(For Python3 a different source may be needed.)
(For Python3 a different source may be needed,
python-imaging or python-pillow or python3-pillow)
GExiv2 Enables Gramps to manage Exif metadata embedded in your
media. Gramps needs version 0.5 or greater.
@@ -77,20 +68,12 @@ The following packages are optional
ttf-freefont More font support in the reports
gir-webkit GObject introspection data of WebKit is required for the
hidden view 'Htmlview', which allows websites to be
opened in Gramps. Users can unhide the view in the
plugin manager. A html renderer must be installed to
use the view.
!! PACKAGERS, Test if on your distribution
webkit and Gramps is stable. If you obtain crashes, patch
src/plugins/view/htmlrenderer.py and
src/plugins/view/geoview.gpr.py, so as to remove:
from gi.repository import WebKit as webkit
gir-webkit Required for the (user-downloadable) HtmlView plugin
goocanvas2:
Required for the (user-downloadable) Graphview plugin
goocanvas2 Required for the (user-downloadable) GraphView plugin
No longer needed in 4.1:
?
No longer needed in 4.0:
pygoocanvas, pygtk, pyexiv2
No longer needed in 3.3:
@@ -98,12 +81,12 @@ No longer needed in 3.3:
No longer needed in 3.2:
python glade bindings
No longer needed in 3.1:
yelp Gnome help browser. At the moment no help is shipped
yelp Gnome help browser. No offline help is shipped see Gramps website for User manual
Documentation
---------------------------------
The User Manual is now maintained on the gramps website,
The User Manual is maintained on the Gramps website,
http://www.gramps-project.org/wiki/index.php?title=User_manual
--------------------------------

@@ -1,36 +1,13 @@
$Id$
Major enhancements in Gramps 4.2.0:
UNSTABLE Gramps 4.0.0 Beta2 release.
* GEP 36: GEPS 036: Extended Alternative Place Name Handling:
https://gramps-project.org/wiki/index.php?title=GEPS_036:_Extended_Alternative_Place_Name_Handling
This is a technology preview to allow distribution packagers (and plugin
writers) to update their scripts (and plugins). This release is not
production ready, so only use it for testing!
* GEP interactive search: own interactive-search box.
It is recommended that Gramps 4.0.0 be used with python 2.7 since many
dependent packages do not yet have python 3 versions. A determined person
can probably download their sources and build them, however.
The dependencies for Gramps 4.0.0 are _completely_ different than 3.4 due
to the switch to GObject introspection, and the removal of autotools. So
only install 4.0.0 if you are certain you can obtain the dependencies,
see README and INSTALL.
For linux, in Ubuntu 12.10 you can install 4.0.0, but you will need to
compile and install osmgpsmap manually to have the maps working (see
http://www.gramps-project.org/wiki/index.php?title=GEPS_029:_GTK3-GObject_introspection_Conversion#OsmGpsMap_for_Geography )
Major enhancements in Gramps 4.0.0:
* GEP 8: code reorganization: http://www.gramps-project.org/wiki/index.php?title=GEPS_008:_File_Organization
* GEP 26: Replace make: http://www.gramps-project.org/wiki/index.php?title=GEPS_026:_Replace_%27make%27_for_Gramps_build
* GEP 29: Gtk 3 :http://www.gramps-project.org/wiki/index.php?title=GEPS_029:_GTK3-GObject_introspection_Conversion
* GEP 31: Python 3 support: http://www.gramps-project.org/wiki/index.php?title=GEPS_031:_Python_3_support
* Speedup on Tree and Flat Views
More info in the manual
http://www.gramps-project.org/wiki/index.php?title=Gramps_4.0_Wiki_Manual_-_What%27s_new%3F
http://www.gramps-project.org/wiki/index.php?title=Gramps_4.2_Wiki_Manual_-_What%27s_new%3F
Everybody is invited to update the manual to make it current!

@@ -1,142 +1,142 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Id$ -->
<authors xmlns:html="http://www.w3.org/1999/xhtml">
<author uid="rshura" title="author">
<author title="author">
Alex Roitman &lt;<html:a href="mailto:shura@gramps-project.org">shura@gramps-project.org</html:a>&gt;
</author>
<author uid="asleinius" title="contributor">
<author title="contributor">
Arturas Sleinius &lt;<html:a href="mailto:asleinius@users.sourceforge.net">asleinius@users.sourceforge.net</html:a>&gt;
</author>
<author uid="bmcage" title="author">
<author title="author">
Benny Malengier &lt;<html:a href="mailto:benny.malengier@gramps-project.org">benny.malengier@gramps-project.org</html:a>&gt;
</author>
<author uid="borilg" title="contributor">
<author title="contributor">
Boril Gourinov &lt;<html:a href="mailto:boril.gourinov@gmail.com">boril.gourinov@gmail.com</html:a>&gt;
</author>
<author uid="pez4brian" title="author">
<author title="author">
Brian Matherly &lt;<html:a href="mailto:brian@gramps-project.org">brian@gramps-project.org</html:a>&gt;
</author>
<author uid="dallingham" title="author">
<author title="author">
Don Allingham &lt;<html:a href="mailto:don@gramps-project.org">don@gramps-project.org</html:a>&gt;
</author>
<author uid="dpeterso" title="author">
<author title="author">
Donald A. Peterson &lt;<html:a href="mailto:"></html:a>&gt;
</author>
<author uid="dsblank" title="author">
<author title="author">
Doug Blank &lt;<html:a href="mailto:doug.blank@gmail.com">doug.blank@gmail.com</html:a>&gt;
</author>
<author uid="eerot" title="contributor">
<author title="contributor">
Eero Tamminen &lt;<html:a href="mailto:eerot@users.sourceforge.net">eerot@users.sourceforge.net</html:a>&gt;
</author>
<author uid="erikdrgm" title="contributor">
<author title="contributor">
Erik De Richter &lt;<html:a href="mailto:erikdrgm@users.sourceforge.net">erikdrgm@users.sourceforge.net</html:a>&gt;
</author>
<author uid="espenbe" title="contributor">
<author title="contributor">
Espen Berg &lt;<html:a href="mailto:espenbe@gmail.com">espenbe@gmail.com</html:a>&gt;
</author>
<author uid="gburto01" title="contributor">
<author title="contributor">
Gary Burton &lt;<html:a href="mailto:gary.burton@zen.co.uk">gary.burton@zen.co.uk</html:a>&gt;
</author>
<author uid="gbritton" title="contributor">
Gerald Britton &lt;<html:a href="mailto:gerald.britton@gmail.com">gerald.britton@gmail.com</html:a>&gt;
</author>
<author uid="jgsack" title="contributor">
<author title="contributor">
James G Sack &lt;<html:a href="mailto:jgsack@san.rr.com">jgsack@san.rr.com</html:a>&gt;
</author>
<author uid="has_no_svn_access" title="contributor">
<author title="contributor">
Janne Kovesjärvi &lt;<html:a href="mailto:janne.kovesjarvi@gmail.com">janne.kovesjarvi@gmail.com</html:a>&gt;
</author>
<author uid="has_no_svn_access" title="contributor">
<author title="contributor">
Jason Simanek &lt;<html:a href="mailto:jsimanek@gmail.com">jsimanek@gmail.com</html:a>&gt;
</author>
<author uid="romjerome" title="contributor">
<author title="contributor">
Jérôme Rapinat &lt;<html:a href="mailto:romjerome@yahoo.fr">romjerome@yahoo.fr</html:a>&gt;
</author>
<author uid="jcreus" title="contributor">
<author title="contributor">
Joan Creus &lt;<html:a href="mailto:joan.creus@gmail.com">joan.creus@gmail.com</html:a>&gt;
</author>
<author uid="josip" title="contributor">
<author title="contributor">
Josip Pisoj &lt;<html:a href="mailto:josip@pisoj.com">josip@pisoj.com</html:a>&gt;
</author>
<author uid="jsanchez" title="contributor">
<author title="contributor">
Julio Sánchez &lt;<html:a href="mailto:julio.sanchez@gmail.com">julio.sanchez@gmail.com</html:a>&gt;
</author>
<author uid="keesb" title="contributor">
<author title="contributor">
Kees Bakker &lt;<html:a href="mailto:kees.bakker@xs4all.nl">kees.bakker@xs4all.nl</html:a>&gt;
</author>
<author uid="kdorichev" title="contributor">
<author title="contributor">
Konstantin Dorichev &lt;<html:a href="mailto:kdorichev@gmail.com">kdorichev@gmail.com</html:a>&gt;
</author>
<author uid="has_no_svn_access" title="contributor">
<author title="contributor">
Lubo Vasko &lt;<html:a href="mailto:pgval@inMail.sk">pgval@inMail.sk</html:a>&gt;
</author>
<author uid="ltosky" title="contributor">
<author title="contributor">
Luigi Toscano &lt;<html:a href="mailto:luigi.toscano@tiscali.it">luigi.toscano@tiscali.it</html:a>&gt;
</author>
<author uid="has_no_svn_access" title="contributor">
<author title="contributor">
Luiz Gonzaga dos Santos Filho &lt;<html:a href="mailto:lfilho@gmail.com">lfilho@gmail.com</html:a>&gt;
</author>
<author uid="has_no_svn_access" title="contributor">
<author title="contributor">
Łukasz Rymarczyk &lt;<html:a href="mailto:yenidai@poczta.onet.pl">yenidai@poczta.onet.pl</html:a>&gt;
</author>
<author uid="m_d_n" title="contributor">
<author title="contributor">
Michiel Nauta &lt;<html:a href="mailto:m.d.nauta@hetnet.nl">m.d.nauta@hetnet.nl</html:a>&gt;
</author>
<author uid="leonhaeuser" title="contributor">
<author title="contributor">
Mirko Leonhäuser &lt;<html:a href="mailto:mirko@leonhaeuser.de">mirko@leonhaeuser.de</html:a>&gt;
</author>
<author uid="has_no_svn_access" title="contributor">
<author title="contributor">
Morten Bo Johansen &lt;<html:a href="mailto:mbj@spamcop.net">mbj@spamcop.net</html:a>&gt;
</author>
<author uid="loshawlos" title="author">
<author title="author">
Martin Hawlisch &lt;<html:a href="mailto:martin.hawlisch@gmx.de">martin.hawlisch@gmx.de</html:a>&gt;
</author>
<author uid="nick-h" title="contributor">
<author title="contributor">
Nick Hall &lt;<html:a href="mailto:nick__hall@hotmail.com">nick__hall@hotmail.com</html:a>&gt;
</author>
<author uid="ldnp" title="contributor">
<author title="contributor">
Peter Landgren &lt;<html:a href="mailto:peter.talken@telia.com">peter.talken@telia.com</html:a>&gt;
</author>
<author uid="acraphae" title="contributor">
<author title="contributor">
Raphael Ackermann &lt;<html:a href="mailto:raphael.ackermann@gmail.com">raphael.ackermann@gmail.com</html:a>&gt;
</author>
<author uid="hippy" title="author">
<author title="author">
Richard Taylor &lt;<html:a href="mailto:rjt-gramps@thegrindstone.me.uk">rjt-gramps@thegrindstone.me.uk</html:a>&gt;
</author>
<author uid="noirauds" title="contributor">
<author title="contributor">
Serge Noiraud &lt;<html:a href="mailto:Serge.Noiraud@free.fr">Serge.Noiraud@free.fr</html:a>&gt;
</author>
<author uid="has_no_svn_access" title="contributor">
<author title="contributor">
Sigmund Lorentsen &lt;<html:a href="mailto:sigmund.lorentsen@tele2.no">sigmund.lorentsen@tele2.no</html:a>&gt;
</author>
<author uid="betula" title="contributor">
<author title="contributor">
Stefan Bjork &lt;<html:a href="mailto:betula@users.sourceforge.net">betula@users.sourceforge.net</html:a>&gt;
</author>
<author uid="s_charette" title="contributor">
<author title="contributor">
Stéphane Charette &lt;<html:a href="mailto:stephanecharette@gmail.com">stephanecharette@gmail.com</html:a>&gt;
</author>
<author uid="twaugh" title="author">
<author title="author">
Tim Waugh &lt;<html:a href="mailto:twaugh@redhat.com">twaugh@redhat.com</html:a>&gt;
</author>
<author uid="vassilii" title="contributor">
<author title="contributor">
Vassilii Khachaturov &lt;<html:a href="mailto:vassilii@tarunz.org">vassilii@tarunz.org</html:a>&gt;
</author>
<author uid="matlas" title="contributor">
<author title="contributor">
Zdeněk Hataš &lt;<html:a href="mailto:zdenek.hatas@gmail.com">zdenek.hatas@gmail.com</html:a>&gt;
</author>
<author uid="robhealey1" title="author">
<author title="author">
Rob G. Healey &lt;<html:a href="mailto:robhealey1@gmail.com">robhealey1@gmail.com</html:a>&gt;
</author>
<author uid="zfoldvar" title="contributor">
<author title="contributor">
Zsolt Foldvari &lt;<html:a href="mailto:zfoldvar@users.sourceforge.net">zfoldvar@users.sourceforge.net</html:a>&gt;
</author>
<author uid="ander882" title="contributor">
<author title="contributor">
Craig J. Anderson &lt;<html:a href="mailto:ander882@hotmail.com">ander882@hotmail.com</html:a>&gt;
</author>
<author uid="kulath" title="author">
<author title="author">
Tim G L Lyons &lt;<html:a href="mailto:tim.g.lyons@gmail.com">tim.g.lyons@gmail.com</html:a>&gt;
</author>
<author uid="jralls" title="author">
<author title="author">
John Ralls &lt;<html:a href="mailto:jralls@ceridwen.us">jralls@ceridwen.us</html:a>&gt;
</author>
</authors>

@@ -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%;
}

0
data/css/Web_Horizontal-Menus.css Executable file → Normal file

0
data/css/Web_Vertical-Menus.css Executable file → Normal file

@@ -8,6 +8,6 @@ Terminal=false
Type=Application
StartupNotify=true
Categories=GTK;Office;
_Keywords=Genealogy;Family History;Research;Family Tree;GEDCOM
_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

@@ -25,15 +25,15 @@
-->
<!--
This is the Document Type Definition file for v1.6.0
This is the Document Type Definition file for v1.7.1
of the GRAMPS XML genealogy data format.
Please use the following formal public identifier to identify it:
"-//GRAMPS//DTD GRAMPS XML V1.6.0//EN"
"-//GRAMPS//DTD GRAMPS XML V1.7.1//EN"
For example:
<!DOCTYPE database PUBLIC "-//GRAMPS//DTD GRAMPS XML V1.6.0//EN"
"http://gramps-project.org/xml/1.6.0/grampsxml.dtd"
<!DOCTYPE database PUBLIC "-//GRAMPS//DTD GRAMPS XML V1.7.1//EN"
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd"
[...]>
-->
@@ -62,7 +62,7 @@ DATABASE
<!ELEMENT database (header, name-formats?, tags?, events?, people?, families?,
citations?, sources?, places?, objects?, repositories?,
notes?, bookmarks?, namemaps?)>
<!ATTLIST database xmlns CDATA #FIXED "http://gramps-project.org/xml/1.6.0/">
<!ATTLIST database xmlns CDATA #FIXED "http://gramps-project.org/xml/1.7.1/">
<!-- ************************************************************
@@ -122,6 +122,7 @@ GENDER has values of M, F, or U.
<!ELEMENT name (first?, call?, surname*, suffix?, title?, nick?, familynick?, group?,
(daterange|datespan|dateval|datestr)?, noteref*, citationref*)>
<!-- (Unknown|Also Know As|Birth Name|Married Name|Other Name) -->
<!ATTLIST name
alt (0|1) #IMPLIED
type CDATA #IMPLIED
@@ -138,6 +139,8 @@ GENDER has values of M, F, or U.
<!ELEMENT familynick (#PCDATA)>
<!ELEMENT group (#PCDATA)>
<!ELEMENT surname (#PCDATA)>
<!-- (Unknown|Inherited|Given|Taken|Patronymic|Matronymic|Feudal|
Pseudonym|Patrilineal|Matrilineal|Occupation|Location) -->
<!ATTLIST surname
prefix CDATA #IMPLIED
prim (1|0) #IMPLIED
@@ -196,12 +199,13 @@ FAMILY
<!ELEMENT mother EMPTY>
<!ATTLIST mother hlink IDREF #REQUIRED>
<!-- (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) -->
<!ELEMENT childref (citationref*,noteref*)>
<!ATTLIST childref
hlink IDREF #REQUIRED
priv (0|1) #IMPLIED
mrel (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) #IMPLIED
frel (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) #IMPLIED
mrel CDATA #IMPLIED
frel CDATA #IMPLIED
>
<!ELEMENT type (#PCDATA)>
@@ -248,20 +252,25 @@ PLACES
<!ELEMENT places (placeobj)*>
<!ELEMENT placeobj (ptitle?, code?, alt_name*, coord?, placeref*, location*,
<!ELEMENT placeobj (ptitle?, pname+, code?, coord?, placeref*, location*,
objref*, url*, noteref*, citationref*, tagref*)>
<!ATTLIST placeobj
id CDATA #IMPLIED
handle ID #REQUIRED
priv (0|1) #IMPLIED
change CDATA #REQUIRED
name CDATA #REQUIRED
type CDATA #REQUIRED
>
<!ELEMENT pname (daterange|datespan|dateval|datestr)?>
<!ATTLIST pname
lang CDATA #IMPLIED
value CDATA #REQUIRED
>
<!ELEMENT ptitle (#PCDATA)>
<!ELEMENT code (#PCDATA)>
<!ELEMENT alt_name (#PCDATA)>
<!ELEMENT coord EMPTY>
<!ATTLIST coord

@@ -25,13 +25,13 @@
-->
<!--
This is the RELAX NG schema for the Gramps XML genealogy data format.
This is the RELAX NG schema for the GRAMPS XML genealogy data format.
-->
<grammar
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
ns="http://gramps-project.org/xml/1.6.0/"
ns="http://gramps-project.org/xml/1.7.1/"
xmlns="http://relaxng.org/ns/structure/1.0">
<start><element name="database">
@@ -210,16 +210,7 @@
</define>
<define name="child-rel">
<choice>
<value>Birth</value>
<value>Adopted</value>
<value>Stepchild</value>
<value>Sponsored</value>
<value>Foster</value>
<value>None</value>
<value>Other</value>
<value>Unknown</value>
</choice>
<text/>
</define>
<define name="name-content">
@@ -230,13 +221,7 @@
<optional><attribute name="priv">
<ref name="priv-content"/>
</attribute></optional>
<optional><attribute name="type"><choice>
<value>Unknown</value>
<value>Also Known As</value>
<value>Birth Name</value>
<value>Married Name</value>
<value>Other Name</value>
</choice></attribute></optional>
<optional><attribute name="type"><text/></attribute></optional>
<optional><attribute name="sort"><text/></attribute></optional>
<optional><attribute name="display"><text/></attribute></optional>
<optional><element name="first"><text/></element></optional>
@@ -265,20 +250,7 @@
<value>1</value>
<value>0</value>
</choice></attribute></optional>
<optional><attribute name="derivation"><choice>
<value>Unknown</value>
<value>Inherited</value>
<value>Given</value>
<value>Taken</value>
<value>Patronymic</value>
<value>Matronymic</value>
<value>Feudal</value>
<value>Pseudonym</value>
<value>Patrilineal</value>
<value>Matrilineal</value>
<value>Occupation</value>
<value>Location</value>
</choice></attribute></optional>
<optional><attribute name="derivation"><text/></attribute></optional>
<optional><attribute name="connector"><text/></attribute></optional>
</define>
@@ -479,11 +451,12 @@
<define name="place-content">
<ref name="primary-object"/>
<attribute name="name"><text/></attribute>
<attribute name="type"><text/></attribute>
<optional><element name="ptitle"><text/></element></optional>
<oneOrMore><element name="pname">
<ref name="placename-content"/>
</element></oneOrMore>
<optional><element name="code"><text/></element></optional>
<zeroOrMore><element name="alt_name"><text/></element></zeroOrMore>
<optional><element name="coord">
<attribute name="long"><text/></attribute>
<attribute name="lat"><text/></attribute>
@@ -772,6 +745,12 @@
<text/>
</define>
<define name="placename-content">
<attribute name="value"><text/></attribute>
<optional><attribute name="lang"><text/></attribute></optional>
<optional><ref name="date-content"/></optional>
</define>
<define name="placeref-content">
<attribute name="hlink"><data type="IDREF"/></attribute>
<optional><ref name="date-content"/></optional>

@@ -41,16 +41,16 @@ master_doc = 'index'
# General information about the project.
project = u'Gramps'
copyright = u'2012, Gramps project'
copyright = u'2015, Gramps project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '4.1'
version = '4.2'
# The full version, including alpha/beta/rc tags.
release = '4.1.0'
release = '4.2.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

@@ -41,16 +41,16 @@ master_doc = 'cs'
# General information about the project.
project = u'Gramps'
copyright = u'2012, Gramps project'
copyright = u'2015, Gramps project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '4.0'
version = '4.2'
# The full version, including alpha/beta/rc tags.
release = '4.0.0'
release = '4.2.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

@@ -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.

@@ -41,16 +41,16 @@ master_doc = 'fr'
# General information about the project.
project = u'Gramps'
copyright = u'2012, Gramps project'
copyright = u'2015, Gramps project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '4.1'
version = '4.2'
# The full version, including alpha/beta/rc tags.
release = 'trunk'
release = '4.2.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

@@ -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

@@ -1,4 +1,4 @@
.TH "GRAMPS" "1" "28 December 2012" "4.0" "Gramps"
.TH "GRAMPS" "1" "09 March 2015" "4.2" "Gramps"
.SH NAME
gramps \- Gramps Documentation
.
@@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.\" Man page generated from reStructuredText.
.\" Man page generated from reStructeredText.
.
.sp
gramps(1) @VERSION@ gramps(1)
@@ -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
@@ -312,15 +312,15 @@ besoins
.INDENT 0.0
.TP
.B \fBAUTEURS\fP
Donald Allingham <\fI\%don@gramps-project.org\fP>
\fI\%http://gramps-project.org/\fP
Donald Allingham <\fI\%don@gramps\-project.org\fP>
\fI\%http://gramps\-project.org/\fP
.sp
Cette page man a d\(aqabord été écrite par :
Brandon L. Griffith <\fI\%brandon@debian.org\fP>
pour Debian GNU/Linux système.
.sp
Cette page man est maintenue par :
Gramps project <\fI\%xxx@gramps-project.org\fP>
Gramps project <\fI\%xxx@gramps\-project.org\fP>
.sp
La traduction française :
Jérôme Rapinat <\fI\%romjerome@yahoo.fr\fP>
@@ -330,13 +330,14 @@ La documentation\-utilisateur est disponible par un navigateur
standard sous la forme du manuel Gramps.
.sp
La documentation pour développeur est disponible sur le site
\fI\%http://www.gramps-project.org/wiki/index.php?title=Portal:Developers\fP .
\fI\%http://www.gramps\-project.org/wiki/index.php?title=Portal:Developers\fP .
.UNINDENT
.sp
gramps(1) @VERSION@ gramps(1)
.SH AUTHOR
Jerome Rapinat
.SH COPYRIGHT
2012, Gramps project
2015, Gramps project
.\" Generated by docutils manpage writer.
.\"
.

@@ -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

@@ -41,16 +41,16 @@ master_doc = 'nl'
# General information about the project.
project = u'Gramps'
copyright = u'2012, Gramps project'
copyright = u'2015, Gramps project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '4.0'
version = '4.2'
# The full version, including alpha/beta/rc tags.
release = '4.0.0'
release = '4.2.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

@@ -41,16 +41,16 @@ master_doc = 'pl'
# General information about the project.
project = u'Gramps'
copyright = u'2012, Gramps project'
copyright = u'2015, Gramps project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '4.0'
version = '4.2'
# The full version, including alpha/beta/rc tags.
release = '4.0.0'
release = '4.2.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

@@ -41,16 +41,16 @@ master_doc = 'pt_BR'
# General information about the project.
project = u'Gramps'
copyright = u'2012, Gramps project'
copyright = u'2015, Gramps project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '4.0'
version = '4.2'
# The full version, including alpha/beta/rc tags.
release = '4.0.0'
release = '4.2.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

@@ -41,16 +41,16 @@ master_doc = 'sv'
# General information about the project.
project = u'Gramps'
copyright = u'2012, Gramps project'
copyright = u'2015, Gramps project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '4.0'
version = '4.2'
# The full version, including alpha/beta/rc tags.
release = '4.0.0'
release = '4.2.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

@@ -43,7 +43,7 @@ except:
DOCUTILS = False
LANGUAGES = ['sv', 'nl', 'pl', 'cs', 'pt_BR', 'fr']
VERSION = '4.0.0'
VERSION = '4.2.0'
DATE = ''
# You can set these variables from the command line.

@@ -390,7 +390,7 @@ function buttonOut(button) {
<p id="createdate">
<a href="http://www.gramps-project.org/wiki/index.php?title=Gramps-Connect">Gramps-Connect, version {{gramps_version}}</a>.
</p>
<p id="copyright">&copy; 2009-2013 <a href="http://www.gramps-project.org/">www.gramps-project.org</a>
<p id="copyright">&copy; 2009-2015 <a href="http://www.gramps-project.org/">www.gramps-project.org</a>
</p>
{% endblock %}
</div>

@@ -27,7 +27,7 @@
<_tip number="14"><b>Calculating Relationships</b><br/>To check if two people in the database are related (by blood, not marriage) try the tool under &quot;Tools &gt; Utilities &gt; Relationship Calculator...&quot;. The exact relationship as well as all common ancestors are reported.</_tip>
<_tip number="15"><b>SoundEx can help with family research</b><br/>SoundEx solves a long standing problem in genealogy, how to handle spelling variations. The SoundEx utility takes a surname and generates a simplified form that is equivalent for similar sounding names. Knowing the SoundEx Code for a surname is very helpful for researching Census Data files (microfiche) at a library or other research facility. To get the SoundEx codes for surnames in your database, go to &quot;Tools &gt; Utilities &gt; Generate SoundEx Codes...&quot;.</_tip>
<_tip number="15"><b>SoundEx can help with family research</b><br/>SoundEx solves a long standing problem in genealogy, how to handle spelling variations. The SoundEx Gramplet takes a surname and generates a simplified form that is equivalent for similar sounding names. Knowing the SoundEx Code for a surname is very helpful for researching Census Data files (microfiche) at a library or other research facility. To view the SoundEx codes for surnames in your database, add the SoundEx Gramplet.</_tip>
<_tip number="16"><b>Setting Your Preferences</b><br/>&quot;Edit &gt; Preferences...&quot; lets you modify a number of settings, such as the path to your media files, and allows you to adjust many aspects of the Gramps presentation to your needs. Each separate view can also be configured under &quot;View &gt; Configure View...&quot;</_tip>
@@ -45,7 +45,7 @@
<_tip number="23"><b>Organising the Views</b><br/>Many of the views can present your data as either a hierarchical tree or as a simple list. Each view can also be configured to the way you like it. Have a look to the right of the top toolbar or under the &quot;View&quot; menu.</_tip>
<_tip number="24"><b>Navigating Back and Forward</b><br/>Gramps maintains a list of previous active objects such as People, Events and . You can move forward and backward through the list using &quot;Go &gt; Forward&quot; and &quot;Go &gt; Back&quot; or the arrow buttons.</_tip>
<_tip number="24"><b>Navigating Back and Forward</b><br/>Gramps maintains a list of previous active objects such as People and Events. You can move forward and backward through the list using &quot;Go &gt; Forward&quot; and &quot;Go &gt; Back&quot; or the arrow buttons.</_tip>
<_tip number="25"><b>Keyboard Shortcuts</b><br/>Tired of having to take your hand off the keyboard to use the mouse? Many functions in Gramps have keyboard shortcuts. If one exists for a function it is displayed on the right side of the menu.</_tip>
@@ -67,11 +67,11 @@
<_tip number="36"><b>Bookmarking Individuals</b><br/>The Bookmarks menu is a convenient place to store the names of frequently used individuals. Selecting a bookmark will make that person the Active Person. To bookmark someone make them the Active Person then go to &quot;Bookmarks &gt; Add Bookmark&quot; or press Ctrl+D. You can also bookmark most of the other objects.</_tip>
<_tip number="37"><b>Incorrect Dates</b><br/>Everyone occasionally enters dates with an invalid format. Incorrect date formats will show up in Gramps with a reddish background. You can fix the date using the Date Selection dialog which can be opened by clicking on the date button. The format of the date is set under &quot;Edit &gt; Preferences &gt; Display&quot;.</_tip>
<_tip number="37"><b>Incorrect Dates</b><br/>Everyone occasionally enters dates with an invalid format. Incorrect date formats will show up in Gramps with a either a reddish background or a red dot on the right edge of the field. You can fix the date using the Date Selection dialog which can be opened by clicking on the date button. The format of the date is set under &quot;Edit &gt; Preferences &gt; Display&quot;.</_tip>
<_tip number="38"><b>Listing Events</b><br/>Events are added using the editor opened with &quot;Person &gt; Edit Person &gt; Events&quot;. There is a long list of preset event types. You can add your own event types by typing in the text field, they will be added to the available events, but not translated.</_tip>
<_tip number="39"><b>Managing Names</b><br/>It is easy to manage people with several names in Gramps. In the Person Editor select the Names tab. You can add names of different types and set the prefered name by dragging it to the Prefered Name section.</_tip>
<_tip number="39"><b>Managing Names</b><br/>It is easy to manage people with several names in Gramps. In the Person Editor select the Names tab. You can add names of different types and set the preferred name by dragging it to the Preferred Name section.</_tip>
<_tip number="40"><b>Ancestor View</b><br/>The Ancestry View displays a traditional pedigree chart. Hold the mouse over an individual to see more information about them or right click on an individual to access other family members and settings. Play with the settings to see the different options.</_tip>
@@ -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>
@@ -111,7 +111,7 @@
<_tip number="62"><b>The 'How and Why' of Your Genealogy</b><br/> Genealogy isn't only about dates and names. It is about people. Be descriptive. Include why things happened, and how descendants might have been shaped by the events they went through. Narratives go a long way in making your family history come alive.</_tip>
<_tip number="63"><b>Don't speak English?</b><br/>Volunteers have translated Gramps into more than 20 languages. If Gramps supports your language and it is not being displayed, set the default language in your operating system and restart Gramps.</_tip>
<_tip number="63"><b>Don't speak English?</b><br/>Volunteers have translated Gramps into more than 40 languages. If Gramps supports your language and it is not being displayed, set the default language in your operating system and restart Gramps.</_tip>
<_tip number="64"><b>Gramps Translators</b><br/>Gramps has been designed so that new translations can easily be added with little development effort. If you are interested in participating please email gramps-devel@lists.sf.net</_tip>

33
debian/control vendored

@@ -7,41 +7,44 @@ Build-Depends-Indep:
gettext,
intltool,
libxml-parser-perl,
python-all,
python-setuptools
python3-all,
python3-setuptools
Build-Depends:
dh-python,
debhelper (>= 9.0.0)
Standards-Version: 3.9.5
Vcs-Git: git://anonscm.debian.org/collab-maint/gramps.git
Vcs-browser: http://anonscm.debian.org/gitweb/?p=collab-maint/gramps.git
Homepage: http://www.gramps-project.org/
X-Python-Version: >= 2.7
X-Python-Version: >= 3.2
Package: python-gramps
Package: python3-gramps
Architecture: all
Depends:
gir1.2-gtk-3.0,
gir1.2-gtk-3.0 (>= 3.10.0),
librsvg2-2,
python-gi,
python-gi-cairo,
python3-gi,
python3-gi-cairo,
python3-bsddb3,
xdg-utils,
${misc:Depends},
${python:Depends}
${python3:Depends}
Recommends:
graphviz,
libosmgpsmap-1.0-0-dev,
python-pyicu
libosmgpsmap-1.0-0,
gir1.2-osmgpsmap-1.0,
python3-pyicu
Suggests:
fonts-freefont-ttf,
gir1.2-gexiv2-0.4,
gir1.2-gtk-gtkspell3-3.0,
python-pil,
gir1.2-gexiv2-0.10,
gir1.2-gtkspell3-3.0,
python3-pil,
rcs
Description: Genealogical research program
GRAMPS is an Open Source genealogy program written in Python, using
Gramps is an Open Source genealogy program written in Python, using
the GTK/GNOME interface. It is an extremely flexible program fitting
the needs for both the amateur genealogist and serious genealogical
researcher.
GRAMPS has the ability to import GEDCOM files exported from many
Gramps has the ability to import GEDCOM files exported from many
proprietary genealogy programs and can produce a large number of
reports in many popular formats.

@@ -1,13 +0,0 @@
diff --git a/setup.py b/setup.py
index 3f702ae..9622d75 100644
--- a/setup.py
+++ b/setup.py
@@ -248,7 +248,7 @@ class install(_install):
'utils', 'resource-path')
with io.open(resource_file, 'w', encoding='utf-8',
errors='strict') as fp:
- path = os.path.abspath(os.path.join(self.install_data, 'share'))
+ path = '/usr/share'
if sys.version_info[0] < 3:
path = unicode(path)
fp.write(path)

@@ -1,22 +0,0 @@
diff --git a/gramps/plugins/view/htmlrenderer.py b/gramps/plugins/view/htmlrenderer.py
index c41942a..8f35b16 100644
--- a/gramps/plugins/view/htmlrenderer.py
+++ b/gramps/plugins/view/htmlrenderer.py
@@ -122,11 +122,12 @@ user_pref("general.useragent.locale, %(lang)s);
TOOLKIT = NOWEB
-try:
- from gi.repository import WebKit as webkit
- TOOLKIT = WEBKIT
-except:
- pass
+#Disable webkit as it is causing a crash in Gramps 4.0.2
+#try:
+# from gi.repository import WebKit as webkit
+# TOOLKIT = WEBKIT
+#except:
+# pass
#no interfaces present, raise Error so that options for GeoView do not show
if TOOLKIT == NOWEB :

@@ -1,2 +0,0 @@
0001-Correct-resource-path-in-setup.py.patch
0002-Disable-HTML-View.patch

17
debian/rules vendored

@@ -5,32 +5,31 @@ export DH_VERBOSE=1
export DH_OPTIONS=-v
%:
dh $@ --with python2
dh $@ --with python3 --buildsystem=pybuild
# Override auto test because upstream do not use the standard unittest discover
override_dh_auto_test:
# Override of auto_build
override_dh_auto_build:
python setup.py build
python3 setup.py build
# Override of auto_install to remove information from package
override_dh_auto_install:
#dh_auto_install
python3 setup.py install --resourcepath=/usr/share --root=debian/python3-gramps --install-layout=deb
# Remove duplicate copyright information
#rm $(CURDIR)/debian/python-gramps/usr/share/doc/gramps/COPYING
rm $(CURDIR)/debian/python3-gramps/usr/share/doc/gramps/COPYING
# Remove install file as it is not needed by package users
#rm $(CURDIR)/debian/python-gramps/usr/share/doc/gramps/INSTALL
rm $(CURDIR)/debian/python3-gramps/usr/share/doc/gramps/INSTALL
# Remove duplicate license information
#rm $(CURDIR)/debian/python-gramps/usr/share/doc/gramps/LICENSE
python setup.py install --root=debian/python-gramps --install-layout=deb
rm $(CURDIR)/debian/python3-gramps/usr/share/doc/gramps/LICENSE
ln -s /usr/share/common-licenses/GPL-2 $(CURDIR)/debian/python3-gramps/usr/share/doc/gramps/COPYING
# Make css style sheets and png icons non-executable
override_dh_fixperms:
dh_fixperms
chmod a-x $(CURDIR)/debian/python-gramps/usr/share/gramps/css/Web_*.css
chmod a-x $(CURDIR)/debian/python-gramps/usr/share/gramps/images/22x22/gramps*.png
chmod a-x $(CURDIR)/debian/python-gramps/usr/share/gramps/images/16x16/gramps*.png
chmod a-x $(CURDIR)/debian/python3-gramps/usr/share/gramps/css/Web_*.css
# Avoid compressing COPYING file so that it can appear in the "About" dialog
override_dh_compress:

@@ -1 +1 @@
1.0
1.8

@@ -1 +0,0 @@
unapply-patches

4
debian/watch vendored

@@ -1,4 +0,0 @@
version=3
opts="dversionmangle=s/\+dfsg//g" \
http://sf.net/gramps/gramps-(.+)\.tar\.gz

@@ -3,7 +3,9 @@ Installation and building the docs
You need to install sphinx. Assuming you have installed the python setuptools, just do:
sudo easy_install sphinx
sudo easy_install sphinx
or
sudo pip install sphinx
Once installed, go to the docs directory, and do:
@@ -17,7 +19,7 @@ Documentation Guidelines
Doc strings in python files should be written in reStructured text: http://docutils.sourceforge.net/docs/user/rst/quickref.html
The typical docstring for GRAMPS should look like this:
The typical docstring for Gramps should look like this:
"""Brief synopsis
@@ -69,4 +71,4 @@ Change in many files something:
perl -pi -w -e "s/L{PersonRef}/:class:\`\~gen.lib.personref.PersonRef\`/g;" *.py
here L{PersonRef} is changed in :class:`~gen.lib.personref.PersonRef
`
`

@@ -25,7 +25,7 @@ sys.path.append(os.path.abspath(os.pardir))
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.coverage']
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.viewcode']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
@@ -41,16 +41,16 @@ master_doc = 'index'
# General information about the project.
project = u'Gramps'
copyright = u'2012, The Gramps Project'
copyright = u'2015, The Gramps Project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '4.1'
version = '4.2.0'
# The full version, including alpha/beta/rc tags.
release = '4.0.99-trunk'
release = '4.2.0-master'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

@@ -1,4 +1,4 @@
Developer Guide
===============
Please consult the API documentation, and the development part of `our wiki <http://gramps-project.org>`_\ .
Please consult the API documentation, and the development section of `our wiki <https://gramps-project.org/wiki/index.php?title=Portal:Developers>`_\ .

@@ -1,4 +1,4 @@
User Guide
==========
Please consult the manual which you find on `our wiki <http://www.gramps-project.org/wiki/index.php?title=User_manual>`_\ .
Please consult the manual which you find on `our wiki <https://gramps-project.org/wiki/index.php?title=User_manual>`_\ .

0
example/gedcom/sample.ged Executable file → Normal file

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE database PUBLIC "-//Gramps//DTD Gramps XML 1.6.0//EN"
"http://gramps-project.org/xml/1.6.0/grampsxml.dtd">
<database xmlns="http://gramps-project.org/xml/1.6.0/">
<!DOCTYPE database PUBLIC "-//Gramps//DTD Gramps XML 1.7.1//EN"
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd">
<database xmlns="http://gramps-project.org/xml/1.7.1/">
<header>
<created date="2014-05-15" version="4.1.0"/>
<created date="2015-07-04" version="4.2.0"/>
<researcher>
<resname>Alex Roitman,,,</resname>
</researcher>
@@ -1523,80 +1523,218 @@
</source>
</sources>
<places>
<placeobj handle="_4ZLT6DVCWT9LTZRDCS" change="1198197326" id="P0003" name="Ronne" type="None">
<placeobj handle="_4ZLT6DVCWT9LTZRDCS" change="1422124381" id="P0003" type="City">
<ptitle>Ronne, Bornholm, Denmark</ptitle>
<pname value="Ronne"/>
<placeref hlink="_cef2428d9dd233688ea3ed3cc24"/>
</placeobj>
<placeobj handle="_61NT6D3G1JMOTO6Z7Y" change="1198197326" id="P0012" name="Grostorp" type="None">
<placeobj handle="_61NT6D3G1JMOTO6Z7Y" change="1422123855" id="P0012" type="Municipality">
<ptitle>Grostorp, Kristianstad Lan, Sweden</ptitle>
<pname value="Grostorp"/>
<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" type="City">
<ptitle>San Francisco, San Francisco Co., CA, USA</ptitle>
<pname value="San Francisco"/>
<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" type="City">
<ptitle>Reno, Washoe Co., NV, USA</ptitle>
<pname value="Reno"/>
<placeref hlink="_cef2513e057732c3f27780750d"/>
</placeobj>
<placeobj handle="_A9MT6DHVWGWRP59DEV" change="1198197326" id="P0011" name="Sweden" type="None">
<placeobj handle="_A9MT6DHVWGWRP59DEV" change="1422123595" id="P0011" type="Country">
<ptitle>Sweden</ptitle>
<pname value="Sweden"/>
</placeobj>
<placeobj handle="_AANT6D026O5SHNUCDH" change="1198197326" id="P0015" name="Simrishamn" type="None">
<placeobj handle="_AANT6D026O5SHNUCDH" change="1422123942" id="P0015" type="Municipality">
<ptitle>Simrishamn, Kristianstad Lan, Sweden</ptitle>
<pname value="Simrishamn"/>
<placeref hlink="_cef23a81ba8c837cc364895d88"/>
</placeobj>
<placeobj handle="_AKMT6DMEYZDTG9J6DS" change="1198197326" id="P0013" name="Copenhagen" type="None">
<placeobj handle="_AKMT6DMEYZDTG9J6DS" change="1422124249" id="P0013" type="City">
<ptitle>Copenhagen, Denmark</ptitle>
<pname value="Copenhagen"/>
<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" type="City">
<ptitle>San Ramon, Conta Costa Co., CA, USA</ptitle>
<pname value="San Ramon"/>
<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" type="City">
<ptitle>Hoya, Sweden</ptitle>
<pname value="Hoya"/>
<pname value="Jona"/>
<pname value="Hoia"/>
<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" type="City">
<ptitle>Hayward, Alameda Co., CA, USA</ptitle>
<pname value="Hayward"/>
<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" type="City">
<ptitle>Santa Rosa, Sonoma Co., CA, USA</ptitle>
<pname value="Santa Rosa"/>
<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" type="City">
<ptitle>Sacramento, Sacramento Co., CA, USA</ptitle>
<pname value="Sacramento"/>
<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" type="City">
<ptitle>Fremont, Alameda Co., CA, USA</ptitle>
<pname value="Fremont"/>
<placeref hlink="_cef245b044820b7405a1180f298"/>
</placeobj>
<placeobj handle="_HINT6DP8JGGL0KKB8J" change="1198197326" id="P0000" name="Loderup" type="None">
<placeobj handle="_HINT6DP8JGGL0KKB8J" change="1422123879" id="P0000" type="Municipality">
<ptitle>Loderup, Malmous Lan, Sweden</ptitle>
<pname value="Loderup"/>
<placeref hlink="_cef23c1ee8b7da58c764e88c637"/>
</placeobj>
<placeobj handle="_IEOT6DOW3RE8AQ94HH" change="1198197326" id="P0025" name="Bí" type="None">
<placeobj handle="_IEOT6DOW3RE8AQ94HH" change="1422126043" id="P0025" type="Unknown">
<ptitle>Bí</ptitle>
<pname value="Bí"/>
</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" type="City">
<ptitle>San Jose, Santa Clara Co., CA, USA</ptitle>
<pname value="San Jose"/>
<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" type="University">
<ptitle>UC Berkeley, CA, USA</ptitle>
<pname value="UC Berkeley"/>
<placeref hlink="_cef243fb5634559442323368f63"/>
</placeobj>
<placeobj handle="_PXMT6DBL0WSBL76WD7" change="1198197326" id="P0026" name="Smestorp" type="None">
<placeobj handle="_PXMT6DBL0WSBL76WD7" change="1422123936" id="P0026" type="Municipality">
<ptitle>Smestorp, Kristianstad Lan, Sweden</ptitle>
<pname value="Smestorp"/>
<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" type="City">
<ptitle>Woodland, Yolo Co., CA, USA</ptitle>
<pname value="Woodland"/>
<placeref hlink="_cef24c2e3592e759b7797f95465"/>
</placeobj>
<placeobj handle="_QJMT6DGII29FWCPX2E" change="1198197326" id="P0028" name="Ronne Bornholm" type="None">
<placeobj handle="_QJMT6DGII29FWCPX2E" change="1422124361" id="P0028" type="City">
<ptitle>Ronne Bornholm, Denmark</ptitle>
<pname value="Ronne Bornholm"/>
<placeref hlink="_cef2418f9333e16e00f6ce2eb14"/>
</placeobj>
<placeobj handle="_R8MT6DRIZVNRYDK0VN" change="1198197326" id="P0027" name="Tommarp" type="None">
<placeobj handle="_R8MT6DRIZVNRYDK0VN" change="1422123930" id="P0027" type="Municipality">
<ptitle>Tommarp, Kristianstad Lan, Sweden</ptitle>
<pname value="Tommarp"/>
<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" type="City">
<ptitle>Denver, Denver Co., CO, USA</ptitle>
<pname value="Denver"/>
<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" type="City">
<ptitle>Sparks, Washoe Co., NV, USA</ptitle>
<pname value="Sparks"/>
<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" type="Church">
<ptitle>Community Presbyterian Church, Danville, CA, USA</ptitle>
<pname value="Community Presbyterian Church"/>
<placeref hlink="_cef24d930653dc59ec3a36510e4"/>
</placeobj>
<placeobj handle="_XSMT6DNISHYRCR1E78" change="1198197326" id="P0004" name="Gladsax" type="None">
<placeobj handle="_XSMT6DNISHYRCR1E78" change="1422123836" id="P0004" type="Municipality">
<ptitle>Gladsax, Kristianstad Lan, Sweden</ptitle>
<pname value="Gladsax"/>
<placeref hlink="_cef23a81ba8c837cc364895d88"/>
</placeobj>
<placeobj handle="_cef23a81ba8c837cc364895d88" change="1422123677" id="P0005" type="County">
<ptitle>Kristianstad Lan, Sweden</ptitle>
<pname value="Kristianstad Lan"/>
<placeref hlink="_A9MT6DHVWGWRP59DEV"/>
</placeobj>
<placeobj handle="_cef23c1ee8b7da58c764e88c637" change="1422123662" id="P0006" type="County">
<ptitle>Malmous Lan, Sweden</ptitle>
<pname value="Malmous Lan"/>
<placeref hlink="_A9MT6DHVWGWRP59DEV"/>
</placeobj>
<placeobj handle="_cef2418f9333e16e00f6ce2eb14" change="1422124233" id="P0007" type="Country">
<ptitle>Denmark</ptitle>
<pname value="Denmark"/>
</placeobj>
<placeobj handle="_cef2428d9dd233688ea3ed3cc24" change="1422124337" id="P0017" type="Region">
<ptitle>Bornholm, Denmark</ptitle>
<pname value="Bornholm"/>
<placeref hlink="_cef2418f9333e16e00f6ce2eb14"/>
</placeobj>
<placeobj handle="_cef2438892244290ca7fb5750" change="1422124440" id="P0018" type="Country">
<ptitle>USA</ptitle>
<pname value="USA"/>
</placeobj>
<placeobj handle="_cef243fb5634559442323368f63" change="1422124487" id="P0023" type="State">
<ptitle>CA, USA</ptitle>
<pname value="CA"/>
<placeref hlink="_cef2438892244290ca7fb5750"/>
</placeobj>
<placeobj handle="_cef244224d14af0273799b281e" change="1422124514" id="P0031" type="State">
<ptitle>CO, USA</ptitle>
<pname value="CO"/>
<placeref hlink="_cef2438892244290ca7fb5750"/>
</placeobj>
<placeobj handle="_cef24468f6e3a984bf57967e95d" change="1422124542" id="P0032" type="State">
<ptitle>NV, USA</ptitle>
<pname value="NV"/>
<placeref hlink="_cef2438892244290ca7fb5750"/>
</placeobj>
<placeobj handle="_cef245b044820b7405a1180f298" change="1422124666" id="P0033" type="County">
<ptitle>Alameda Co., CA, USA</ptitle>
<pname value="Alameda Co."/>
<placeref hlink="_cef243fb5634559442323368f63"/>
</placeobj>
<placeobj handle="_cef246117947f75e54c09680419" change="1422124908" id="P0034" type="County">
<ptitle>Sacramento Co., CA, USA</ptitle>
<pname value="Sacramento Co."/>
<placeref hlink="_cef243fb5634559442323368f63"/>
</placeobj>
<placeobj handle="_cef24668db23c27d421f51c667d" change="1422124741" id="P0035" type="County">
<ptitle>San Francisco Co., CA, USA</ptitle>
<pname value="San Francisco Co."/>
<placeref hlink="_cef243fb5634559442323368f63"/>
</placeobj>
<placeobj handle="_cef246c95c132bcf6a0255d4d17" change="1422124781" id="P0036" type="County">
<ptitle>Santa Clara Co., CA, USA</ptitle>
<pname value="Santa Clara Co."/>
<placeref hlink="_cef243fb5634559442323368f63"/>
</placeobj>
<placeobj handle="_cef2478a94b48a58d3be6a10493" change="1422124860" id="P0037" type="County">
<ptitle>Conta Costa Co., CA, USA</ptitle>
<pname value="Conta Costa Co."/>
<placeref hlink="_cef243fb5634559442323368f63"/>
</placeobj>
<placeobj handle="_cef24b7a76efa8b9d98d67ea5a" change="1422125273" id="P0038" type="County">
<ptitle>Sonoma Co., CA, USA</ptitle>
<pname value="Sonoma Co."/>
<placeref hlink="_cef243fb5634559442323368f63"/>
</placeobj>
<placeobj handle="_cef24c2e3592e759b7797f95465" change="1422125420" id="P0039" type="County">
<ptitle>Yolo Co., CA, USA</ptitle>
<pname value="Yolo Co."/>
<placeref hlink="_cef243fb5634559442323368f63"/>
</placeobj>
<placeobj handle="_cef24d930653dc59ec3a36510e4" change="1422125493" id="P0040" type="City">
<ptitle>Danville, CA, USA</ptitle>
<pname value="Danville"/>
<placeref hlink="_cef243fb5634559442323368f63"/>
</placeobj>
<placeobj handle="_cef24ffc57f28a50ea65f0af645" change="1422125745" id="P0041" type="County">
<ptitle>Denver Co., CO, USA</ptitle>
<pname value="Denver Co."/>
<placeref hlink="_cef244224d14af0273799b281e"/>
</placeobj>
<placeobj handle="_cef2513e057732c3f27780750d" change="1422125877" id="P0042" type="County">
<ptitle>Washoe Co., NV, USA</ptitle>
<pname value="Washoe Co."/>
<placeref hlink="_cef24468f6e3a984bf57967e95d"/>
</placeobj>
</places>
<objects>

@@ -0,0 +1,782 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE database PUBLIC "-//Gramps//DTD Gramps XML 1.5.0//EN"
"http://gramps-project.org/xml/1.5.0/grampsxml.dtd">
<database xmlns="http://gramps-project.org/xml/1.5.0/">
<header>
<created date="2015-05-14" version="3.4.0"/>
<researcher>
</researcher>
</header>
<events>
<event handle="_cde77b2c30c13ea85db" change="1426803047" id="E0000">
<type>Birth</type>
<dateval val="1823" type="before"/>
</event>
<event handle="_cde77b7eff96ae8455f" change="1426803072" id="E0001">
<type>Birth</type>
<dateval val="1823-03" type="before"/>
</event>
<event handle="_cde77be2a67401f7b16" change="1426803096" id="E0002">
<type>Birth</type>
<dateval val="1823-03-13" type="before"/>
</event>
<event handle="_cde7b70d22b30f00b14" change="1426802975" id="E0003">
<type>Birth</type>
<dateval val="1822" type="after"/>
</event>
<event handle="_cde7b8eb90e0a8792a9" change="1426802998" id="E0004">
<type>Birth</type>
<dateval val="1822-02" type="after"/>
</event>
<event handle="_cde7b95cb7e40432538" change="1426803021" id="E0005">
<type>Birth</type>
<dateval val="1822-02-13" type="after"/>
</event>
<event handle="_cde7b9b2b00713c42af" change="1426802885" id="E0006">
<type>Birth</type>
<dateval val="1821" type="about"/>
</event>
<event handle="_cde7b9f0da51d2ff10a" change="1426802925" id="E0007">
<type>Birth</type>
<dateval val="1821-01" type="about"/>
</event>
<event handle="_cde7ba310240e18a0ea" change="1426802949" id="E0008">
<type>Birth</type>
<dateval val="1821-01-13" type="about"/>
</event>
<event handle="_ce00f22be3443f0c30b" change="1426803671" id="E0009">
<type>Birth</type>
<dateval val="1851"/>
</event>
<event handle="_ce00f2ab83911df5354" change="1426803701" id="E0010">
<type>Birth</type>
<dateval val="1852-02"/>
</event>
<event handle="_ce00f2eb2f86d94ece0" change="1426803729" id="E0011">
<type>Birth</type>
<dateval val="1853-03-04"/>
</event>
<event handle="_cfa02e904f161e652da" change="1426793018" id="E0014">
<type>Birth</type>
<dateval val="1801-01"/>
</event>
<event handle="_cfa02efc75b0eb05cfa" change="1426793062" id="E0015">
<type>Birth</type>
<dateval val="1801-01-13"/>
</event>
<event handle="_cfa02f60fbe55ad36f7" change="1426793103" id="E0016">
<type>Birth</type>
<dateval val="1802-02"/>
</event>
<event handle="_cfa02fd93615614dc94" change="1426793153" id="E0017">
<type>Birth</type>
<dateval val="1802-02-13"/>
</event>
<event handle="_cfa030376d1228fb29b" change="1426793191" id="E0018">
<type>Birth</type>
<dateval val="1803-03"/>
</event>
<event handle="_cfa0308a9e766a18a5a" change="1426793225" id="E0019">
<type>Birth</type>
<dateval val="1803-03-13"/>
</event>
<event handle="_cfa0311ff9474a33dad" change="1426793404" id="E0020">
<type>Birth</type>
<dateval val="1804-04"/>
</event>
<event handle="_cfa0314208a175c695f" change="1426793300" id="E0021">
<type>Birth</type>
<dateval val="1804-04-13"/>
</event>
<event handle="_cfa031df6bb2f50f9c5" change="1426793365" id="E0022">
<type>Birth</type>
<dateval val="1805-05"/>
</event>
<event handle="_cfa0335efcf6eeb6bf6" change="1426793522" id="E0024">
<type>Birth</type>
<dateval val="1805-05-13"/>
</event>
<event handle="_cfa0342171e10e9a0c8" change="1426793602" id="E0025">
<type>Birth</type>
<dateval val="1806-06"/>
</event>
<event handle="_cfa03468bc76cf7a295" change="1426793631" id="E0026">
<type>Birth</type>
<dateval val="1807-07"/>
</event>
<event handle="_cfa034b07c9408b12cc" change="1426793660" id="E0027">
<type>Birth</type>
<dateval val="1808-08"/>
</event>
<event handle="_cfa034f8da44738c323" change="1426793690" id="E0028">
<type>Birth</type>
<dateval val="1809-09"/>
</event>
<event handle="_cfa03547c3765017895" change="1426793722" id="E0029">
<type>Birth</type>
<dateval val="1810-10"/>
</event>
<event handle="_cfa035965a02da81147" change="1426793754" id="E0030">
<type>Birth</type>
<dateval val="1811-11"/>
</event>
<event handle="_cfa035ee99b03f59cbc" change="1426793790" id="E0031">
<type>Birth</type>
<dateval val="1812-12"/>
</event>
<event handle="_cfa038cce441e73b1c5" change="1426794091" id="E0032">
<type>Birth</type>
<dateval val="1806-06-13"/>
</event>
<event handle="_cfa039308b34bf173be" change="1426794132" id="E0033">
<type>Birth</type>
<dateval val="1807-07-13"/>
</event>
<event handle="_cfa0399114e40ffcadf" change="1426794172" id="E0034">
<type>Birth</type>
<dateval val="1808-08-13"/>
</event>
<event handle="_cfa039f6e510c198300" change="1426794213" id="E0035">
<type>Birth</type>
<dateval val="1809-09-13"/>
</event>
<event handle="_cfa03a5c2fe4ce6e75d" change="1426794255" id="E0036">
<type>Birth</type>
<dateval val="1810-10-13"/>
</event>
<event handle="_cfa03aabe141219bb22" change="1426794287" id="E0037">
<type>Birth</type>
<dateval val="1811-11-13"/>
</event>
<event handle="_cfa03afa2ac4d140d9d" change="1426794319" id="E0038">
<type>Birth</type>
<dateval val="1812-12-13"/>
</event>
<event handle="_cfa0424ffcb19aed9f7" change="1426804001" id="E0039">
<type>Birth</type>
<datespan start="1876" stop="1877"/>
</event>
<event handle="_cfa042e5a0d52e9c63f" change="1426804044" id="E0040">
<type>Birth</type>
<datespan start="1876-06" stop="1877-07"/>
</event>
<event handle="_cfa0436b49b7746d225" change="1426804087" id="E0041">
<type>Birth</type>
<datespan start="1876-06-13" stop="1877-07-13"/>
</event>
<event handle="_cfa044b58de7b9a9759" change="1426803857" id="E0042">
<type>Birth</type>
<daterange start="1864" stop="1865"/>
</event>
<event handle="_cfa0454785d7f7fe074" change="1426803895" id="E0043">
<type>Birth</type>
<daterange start="1864-04" stop="1865-05"/>
</event>
<event handle="_cfa045f559074cd25a6" change="1426803934" id="E0044">
<type>Birth</type>
<daterange start="1864-04-13" stop="1865-05-13"/>
</event>
<event handle="_cfa05eab109493097d1" change="1426803468" id="E0045">
<type>Birth</type>
<dateval val="1849" quality="estimated"/>
</event>
<event handle="_cfa05fb82182cf228bc" change="1426803506" id="E0046">
<type>Birth</type>
<dateval val="1849-09" quality="estimated"/>
</event>
<event handle="_cfa0604633236ff9d43" change="1426803535" id="E0047">
<type>Birth</type>
<dateval val="1849-09-13" quality="estimated"/>
</event>
<event handle="_cfa060d09d433ae6313" change="1426803223" id="E0048">
<type>Birth</type>
<dateval val="1835" quality="calculated"/>
</event>
<event handle="_cfa062751af6a105a82" change="1426803248" id="E0049">
<type>Birth</type>
<dateval val="1835-05" quality="calculated"/>
</event>
<event handle="_cfa062e50d3096da9a5" change="1426803275" id="E0050">
<type>Birth</type>
<dateval val="1835-05-13" quality="calculated"/>
</event>
<event handle="_cfa063e88800cb80b33" change="1426803138" id="E0051">
<type>Birth</type>
<dateval val="1834" type="before" quality="calculated"/>
</event>
<event handle="_cfa064a6da37f0563f5" change="1426803166" id="E0052">
<type>Birth</type>
<dateval val="1834-04" type="before" quality="calculated"/>
</event>
<event handle="_cfa0654060124488afa" change="1426803189" id="E0053">
<type>Birth</type>
<dateval val="1834-04-13" type="before" quality="calculated"/>
</event>
<event handle="_cfa0670f11e1049f07b" change="1426803306" id="E0054">
<type>Birth</type>
<dateval val="1846" type="about" quality="estimated"/>
</event>
<event handle="_cfa067a8bbe2900a40c" change="1426803330" id="E0055">
<type>Birth</type>
<dateval val="1846-06" type="about" quality="estimated"/>
</event>
<event handle="_cfa0681c5085ac5e9e0" change="1426803354" id="E0056">
<type>Birth</type>
<dateval val="1846-06-13" type="about" quality="estimated"/>
</event>
<event handle="_cfa069a50b23f6b87fa" change="1426803388" id="E0057">
<type>Birth</type>
<daterange start="1848" stop="1849" quality="estimated"/>
</event>
<event handle="_cfa086bc43c31bcd49b" change="1426803415" id="E0058">
<type>Birth</type>
<daterange start="1848-08" stop="1849-09" quality="estimated"/>
</event>
<event handle="_cfa0873e5170a315aea" change="1426803439" id="E0059">
<type>Birth</type>
<daterange start="1848-08-13" stop="1849-09-13" quality="estimated"/>
</event>
<event handle="_cfa087488800cb80b33" change="1426803138" id="E0060">
<type>Birth</type>
<dateval val="1847" type="after" quality="estimated"/>
</event>
<event handle="_cfa08756da37f0563f5" change="1426803166" id="E0061">
<type>Birth</type>
<dateval val="1847-07" type="after" quality="estimated"/>
</event>
<event handle="_cfa0876060124488afa" change="1426803189" id="E0062">
<type>Birth</type>
<dateval val="1847-07-13" type="after" quality="estimated"/>
</event>
<event handle="_cfa0877ffcb19aed9f7" change="1426804001" id="E0063">
<type>Birth</type>
<datespan start="1878" stop="1879" quality="estimated"/>
</event>
<event handle="_cfa08785a0d52e9c63f" change="1426804044" id="E0064">
<type>Birth</type>
<datespan start="1878-08" stop="1879-09" quality="estimated"/>
</event>
<event handle="_cfa0879b49b7746d225" change="1426804087" id="E0065">
<type>Birth</type>
<datespan start="1878-08-13" stop="1879-09-13" quality="estimated"/>
</event>
<event handle="_d0545e83fa37336070a" change="1431629910" id="E0066">
<type>Birth</type>
<dateval val="1800-00-13"/>
</event>
</events>
<people home="_ce00f22fdb926a87cdd">
<person handle="_cde77b359d42a7abeb8" change="1426803052" id="I0000">
<gender>M</gender>
<name type="Birth Name">
<first>A</first>
<surname>Before-Person</surname>
</name>
<eventref hlink="_cde77b2c30c13ea85db" role="Primary"/>
</person>
<person handle="_cde77b89083519bcf0b" change="1426803077" id="I0001">
<gender>M</gender>
<name type="Birth Name">
<first>B</first>
<surname>Before-Person</surname>
</name>
<eventref hlink="_cde77b7eff96ae8455f" role="Primary"/>
</person>
<person handle="_cde77be591457afcffb" change="1426803099" id="I0002">
<gender>M</gender>
<name type="Birth Name">
<first>C</first>
<surname>Before-Person</surname>
</name>
<eventref hlink="_cde77be2a67401f7b16" role="Primary"/>
</person>
<person handle="_cde7b70f31a17456a2e" change="1426802978" id="I0003">
<gender>M</gender>
<name type="Birth Name">
<first>A</first>
<surname>After-Person</surname>
</name>
<eventref hlink="_cde7b70d22b30f00b14" role="Primary"/>
</person>
<person handle="_cde7b8ed6cd11b5562e" change="1426803002" id="I0004">
<gender>M</gender>
<name type="Birth Name">
<first>B</first>
<surname>After-Person</surname>
</name>
<eventref hlink="_cde7b8eb90e0a8792a9" role="Primary"/>
</person>
<person handle="_cde7b95ec952bc2b12d" change="1426803025" id="I0005">
<gender>M</gender>
<name type="Birth Name">
<first>C</first>
<surname>After-Person</surname>
</name>
<eventref hlink="_cde7b95cb7e40432538" role="Primary"/>
</person>
<person handle="_cde7b9b4e9e5e81800d" change="1426802890" id="I0006">
<gender>M</gender>
<name type="Birth Name">
<first>A</first>
<surname>About-Person</surname>
</name>
<eventref hlink="_cde7b9b2b00713c42af" role="Primary"/>
</person>
<person handle="_cde7b9f2d2e633055b9" change="1426802928" id="I0007">
<gender>M</gender>
<name type="Birth Name">
<first>B</first>
<surname>About-Person</surname>
</name>
<eventref hlink="_cde7b9f0da51d2ff10a" role="Primary"/>
</person>
<person handle="_cde7ba324d85d019053" change="1426802954" id="I0008">
<gender>M</gender>
<name type="Birth Name">
<first>C</first>
<surname>About-Person</surname>
</name>
<eventref hlink="_cde7ba310240e18a0ea" role="Primary"/>
</person>
<person handle="_ce00f22fdb926a87cdd" change="1426803678" id="I0009">
<gender>M</gender>
<name type="Birth Name">
<first>A</first>
<surname>Normal-Person</surname>
</name>
<eventref hlink="_ce00f22be3443f0c30b" role="Primary"/>
</person>
<person handle="_ce00f2aeb776bb53be5" change="1426803705" id="I0010">
<gender>M</gender>
<name type="Birth Name">
<first>B</first>
<surname>Normal-Person</surname>
</name>
<eventref hlink="_ce00f2ab83911df5354" role="Primary"/>
</person>
<person handle="_ce00f2eda384642791d" change="1426803733" id="I0011">
<gender>M</gender>
<name type="Birth Name">
<first>C</first>
<surname>Normal-Person</surname>
</name>
<eventref hlink="_ce00f2eb2f86d94ece0" role="Primary"/>
</person>
<person handle="_cfa02ea21cf2c08d6e2" change="1426793828" id="I0014">
<gender>M</gender>
<name type="Birth Name">
<first>B01</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa02e904f161e652da" role="Primary"/>
</person>
<person handle="_cfa02f060870eef1f71" change="1426793996" id="I0015">
<gender>M</gender>
<name type="Birth Name">
<first>C01</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa02efc75b0eb05cfa" role="Primary"/>
</person>
<person handle="_cfa02f6db513f4e1c14" change="1426793845" id="I0016">
<gender>M</gender>
<name type="Birth Name">
<first>B02</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa02f60fbe55ad36f7" role="Primary"/>
</person>
<person handle="_cfa02fe4e8d3cad65e6" change="1426794012" id="I0017">
<gender>M</gender>
<name type="Birth Name">
<first>C02</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa02fd93615614dc94" role="Primary"/>
</person>
<person handle="_cfa03042b93635f71a0" change="1426793861" id="I0018">
<gender>M</gender>
<name type="Birth Name">
<first>B03</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa030376d1228fb29b" role="Primary"/>
</person>
<person handle="_cfa03092fb610f772ba" change="1426794027" id="I0019">
<gender>M</gender>
<name type="Birth Name">
<first>C03</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa0308a9e766a18a5a" role="Primary"/>
</person>
<person handle="_cfa0314a7de1852f830" change="1426794043" id="I0021">
<gender>M</gender>
<name type="Birth Name">
<first>C04</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa0314208a175c695f" role="Primary"/>
</person>
<person handle="_cfa031e7f6333a37f87" change="1426793893" id="I0022">
<gender>M</gender>
<name type="Birth Name">
<first>B05</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa031df6bb2f50f9c5" role="Primary"/>
</person>
<person handle="_cfa03248bae711cb306" change="1426793877" id="I0023">
<gender>M</gender>
<name type="Birth Name">
<first>B04</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa0311ff9474a33dad" role="Primary"/>
</person>
<person handle="_cfa033674d813cb83fb" change="1426794060" id="I0024">
<gender>M</gender>
<name type="Birth Name">
<first>C05</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa0335efcf6eeb6bf6" role="Primary"/>
</person>
<person handle="_cfa03429a3506b90a17" change="1426793911" id="I0025">
<gender>M</gender>
<name type="Birth Name">
<first>B06</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa0342171e10e9a0c8" role="Primary"/>
</person>
<person handle="_cfa03471249305e11a3" change="1426793926" id="I0026">
<gender>M</gender>
<name type="Birth Name">
<first>B07</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa03468bc76cf7a295" role="Primary"/>
</person>
<person handle="_cfa034ba95d55bbb30d" change="1426793947" id="I0027">
<gender>M</gender>
<name type="Birth Name">
<first>B08</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa034b07c9408b12cc" role="Primary"/>
</person>
<person handle="_cfa035043d730daedcc" change="1426793965" id="I0028">
<gender>M</gender>
<name type="Birth Name">
<first>B09</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa034f8da44738c323" role="Primary"/>
</person>
<person handle="_cfa03553f6327fb3aa3" change="1426793727" id="I0029">
<gender>M</gender>
<name type="Birth Name">
<first>B10</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa03547c3765017895" role="Primary"/>
</person>
<person handle="_cfa035a31fd38ced89e" change="1426793759" id="I0030">
<gender>M</gender>
<name type="Birth Name">
<first>B11</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa035965a02da81147" role="Primary"/>
</person>
<person handle="_cfa035f87450688702b" change="1426793794" id="I0031">
<gender>M</gender>
<name type="Birth Name">
<first>B12</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa035ee99b03f59cbc" role="Primary"/>
</person>
<person handle="_cfa038d6790220eb6a0" change="1426794095" id="I0032">
<gender>M</gender>
<name type="Birth Name">
<first>C06</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa038cce441e73b1c5" role="Primary"/>
</person>
<person handle="_cfa039412cf2c81aaa6" change="1426794139" id="I0033">
<gender>M</gender>
<name type="Birth Name">
<first>C07</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa039308b34bf173be" role="Primary"/>
</person>
<person handle="_cfa0399d5b4296c09ed" change="1426794177" id="I0034">
<gender>M</gender>
<name type="Birth Name">
<first>C08</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa0399114e40ffcadf" role="Primary"/>
</person>
<person handle="_cfa03a00ae7431e3c10" change="1426794217" id="I0035">
<gender>M</gender>
<name type="Birth Name">
<first>C09</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa039f6e510c198300" role="Primary"/>
</person>
<person handle="_cfa03a68a5e1f70d524" change="1426794260" id="I0036">
<gender>M</gender>
<name type="Birth Name">
<first>C10</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa03a5c2fe4ce6e75d" role="Primary"/>
</person>
<person handle="_cfa03ab437d05844dc3" change="1426794291" id="I0037">
<gender>M</gender>
<name type="Birth Name">
<first>C11</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa03aabe141219bb22" role="Primary"/>
</person>
<person handle="_cfa03b0c1635ed179a5" change="1426794327" id="I0038">
<gender>M</gender>
<name type="Birth Name">
<first>C12</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_cfa03afa2ac4d140d9d" role="Primary"/>
</person>
<person handle="_cfa0425f40e5bd7f546" change="1426804005" id="I0039">
<gender>M</gender>
<name type="Birth Name">
<first>A</first>
<surname>SpanFrom-Person</surname>
</name>
<eventref hlink="_cfa0424ffcb19aed9f7" role="Primary"/>
</person>
<person handle="_cfa0431254247adca83" change="1426804048" id="I0040">
<gender>M</gender>
<name type="Birth Name">
<first>B</first>
<surname>SpanFrom-Person</surname>
</name>
<eventref hlink="_cfa042e5a0d52e9c63f" role="Primary"/>
</person>
<person handle="_cfa0439de437d741e80" change="1426804091" id="I0041">
<gender>M</gender>
<name type="Birth Name">
<first>C</first>
<surname>SpanFrom-Person</surname>
</name>
<eventref hlink="_cfa0436b49b7746d225" role="Primary"/>
</person>
<person handle="_cfa044c262e1e5c8503" change="1426803860" id="I0042">
<gender>M</gender>
<name type="Birth Name">
<first>A</first>
<surname>RangeBetween-Person</surname>
</name>
<eventref hlink="_cfa044b58de7b9a9759" role="Primary"/>
</person>
<person handle="_cfa04565ce470dcd2f8" change="1426803898" id="I0043">
<gender>M</gender>
<name type="Birth Name">
<first>B</first>
<surname>RangeBetween-Person</surname>
</name>
<eventref hlink="_cfa0454785d7f7fe074" role="Primary"/>
</person>
<person handle="_cfa0460050935c9a427" change="1426803937" id="I0044">
<gender>M</gender>
<name type="Birth Name">
<first>C</first>
<surname>RangeBetween-Person</surname>
</name>
<eventref hlink="_cfa045f559074cd25a6" role="Primary"/>
</person>
<person handle="_cfa05ec0033766aaf99" change="1426803473" id="I0045">
<gender>M</gender>
<name type="Birth Name">
<first>A</first>
<surname>Estimated-Person</surname>
</name>
<eventref hlink="_cfa05eab109493097d1" role="Primary"/>
</person>
<person handle="_cfa05fccf2c4051824b" change="1426803510" id="I0046">
<gender>M</gender>
<name type="Birth Name">
<first>B</first>
<surname>Estimated-Person</surname>
</name>
<eventref hlink="_cfa05fb82182cf228bc" role="Primary"/>
</person>
<person handle="_cfa060511337394614d" change="1426803539" id="I0047">
<gender>M</gender>
<name type="Birth Name">
<first>C</first>
<surname>Estimated-Person</surname>
</name>
<eventref hlink="_cfa0604633236ff9d43" role="Primary"/>
</person>
<person handle="_cfa060e177361c262d1" change="1426803227" id="I0048">
<gender>M</gender>
<name type="Birth Name">
<first>A</first>
<surname>Calculated-Person</surname>
</name>
<eventref hlink="_cfa060d09d433ae6313" role="Primary"/>
</person>
<person handle="_cfa0627d4346f5a6156" change="1426803252" id="I0049">
<gender>M</gender>
<name type="Birth Name">
<first>B</first>
<surname>Calculated-Person</surname>
</name>
<eventref hlink="_cfa062751af6a105a82" role="Primary"/>
</person>
<person handle="_cfa062f0f6d6be03ddb" change="1426803278" id="I0050">
<gender>M</gender>
<name type="Birth Name">
<first>C</first>
<surname>Calculated-Person</surname>
</name>
<eventref hlink="_cfa062e50d3096da9a5" role="Primary"/>
</person>
<person handle="_cfa063f5677702eaa46" change="1426803142" id="I0051">
<gender>M</gender>
<name type="Birth Name">
<first>A</first>
<surname>Calculated-Before-Person</surname>
</name>
<eventref hlink="_cfa063e88800cb80b33" role="Primary"/>
</person>
<person handle="_cfa064bb7630e608798" change="1426803169" id="I0052">
<gender>M</gender>
<name type="Birth Name">
<first>B</first>
<surname>Calculated-Before-Person</surname>
</name>
<eventref hlink="_cfa064a6da37f0563f5" role="Primary"/>
</person>
<person handle="_cfa0654ca9f46930cc4" change="1426803193" id="I0053">
<gender>M</gender>
<name type="Birth Name">
<first>C</first>
<surname>Calculated-Before-Person</surname>
</name>
<eventref hlink="_cfa0654060124488afa" role="Primary"/>
</person>
<person handle="_cfa06717fb57c27f756" change="1426803310" id="I0054">
<gender>M</gender>
<name type="Birth Name">
<first>A</first>
<surname>Estimated-About-Person</surname>
</name>
<eventref hlink="_cfa0670f11e1049f07b" role="Primary"/>
</person>
<person handle="_cfa067b2e020880caf3" change="1426803333" id="I0055">
<gender>M</gender>
<name type="Birth Name">
<first>B</first>
<surname>Estimated-About-Person</surname>
</name>
<eventref hlink="_cfa067a8bbe2900a40c" role="Primary"/>
</person>
<person handle="_cfa068250bc3c821f3c" change="1426803357" id="I0056">
<gender>M</gender>
<name type="Birth Name">
<first>C</first>
<surname>Estimated-About-Person</surname>
</name>
<eventref hlink="_cfa0681c5085ac5e9e0" role="Primary"/>
</person>
<person handle="_cfa069b80556bceaf0b" change="1426803392" id="I0057">
<gender>M</gender>
<name type="Birth Name">
<first>A</first>
<surname>Estimated-RangeBetween-Person</surname>
</name>
<eventref hlink="_cfa069a50b23f6b87fa" role="Primary"/>
</person>
<person handle="_cfa086c6e4e248b4ac6" change="1426803418" id="I0058">
<gender>M</gender>
<name type="Birth Name">
<first>B</first>
<surname>Estimated-RangeBetween-Person</surname>
</name>
<eventref hlink="_cfa086bc43c31bcd49b" role="Primary"/>
</person>
<person handle="_cfa0874684b42b63ab7" change="1426803443" id="I0059">
<gender>M</gender>
<name type="Birth Name">
<first>C</first>
<surname>Estimated-RangeBetween-Person</surname>
</name>
<eventref hlink="_cfa0873e5170a315aea" role="Primary"/>
</person>
<person handle="_cfa087580556bceaf0b" change="1426803392" id="I0060">
<gender>M</gender>
<name type="Birth Name">
<first>A</first>
<surname>Estimated-After-Person</surname>
</name>
<eventref hlink="_cfa087488800cb80b33" role="Primary"/>
</person>
<person handle="_cfa08766e4e248b4ac6" change="1426803418" id="I0061">
<gender>M</gender>
<name type="Birth Name">
<first>B</first>
<surname>Estimated-After-Person</surname>
</name>
<eventref hlink="_cfa08756da37f0563f5" role="Primary"/>
</person>
<person handle="_cfa0877684b42b63ab7" change="1426803443" id="I0062">
<gender>M</gender>
<name type="Birth Name">
<first>C</first>
<surname>Estimated-After-Person</surname>
</name>
<eventref hlink="_cfa0876060124488afa" role="Primary"/>
</person>
<person handle="_cfa087780556bceaf0b" change="1426803392" id="I0063">
<gender>M</gender>
<name type="Birth Name">
<first>A</first>
<surname>Estimated-SpanFrom-Person</surname>
</name>
<eventref hlink="_cfa0877ffcb19aed9f7" role="Primary"/>
</person>
<person handle="_cfa08786e4e248b4ac6" change="1426803418" id="I0064">
<gender>M</gender>
<name type="Birth Name">
<first>B</first>
<surname>Estimated-SpanFrom-Person</surname>
</name>
<eventref hlink="_cfa08785a0d52e9c63f" role="Primary"/>
</person>
<person handle="_cfa0879684b42b63ab7" change="1426803443" id="I0065">
<gender>M</gender>
<name type="Birth Name">
<first>C</first>
<surname>Estimated-SpanFrom-Person</surname>
</name>
<eventref hlink="_cfa0879b49b7746d225" role="Primary"/>
</person>
<person handle="_d0545e25fed7da2d864" change="1431629912" id="I0066">
<gender>M</gender>
<name type="Birth Name">
<first>Zero-Month</first>
<surname>Month-Person</surname>
</name>
<eventref hlink="_d0545e83fa37336070a" role="Primary"/>
</person>
</people>
</database>

File diff suppressed because it is too large Load Diff

@@ -20,9 +20,9 @@
# gen/__init__.py
"""
The core gramps module provides the different packages
The core gramps modules that provide the different packages
Plugins are loaded dynamically, so they the plugin directory is not included
Plugins are loaded dynamically, so that plugin directory is not included
"""
__all__ = ["gen", "cli", "gui"]

@@ -34,7 +34,6 @@ Module responsible for handling the command line arguments for Gramps.
# Standard python modules
#
#-------------------------------------------------------------------------
from __future__ import print_function
import os
import sys
@@ -395,7 +394,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 +405,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()
@@ -415,28 +415,32 @@ class ArgHandler(object):
for item in sorted(summary):
if item != "Family Tree":
# translators: needed for French, ignore otherwise
print(_(" %s: %s") % (item, summary[item]))
print(_(" %(item)s: %(summary)s") % {
'item' : item,
'summary' : 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()
if not summary_list:
sys.exit(0)
print(_("Family Tree"), end="")
# 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()
# translators: ignore unless your quotation marks differ
line_list += [(_('"%s"') % summary[item])]
print("\t".join(line_list))
sys.exit(0)
self.__open_action()

@@ -34,7 +34,6 @@ Module responsible for handling the command line arguments for Gramps.
# Standard python modules
#
#-------------------------------------------------------------------------
from __future__ import print_function, unicode_literals
import sys
import getopt
import logging

@@ -30,18 +30,12 @@ creating, and deleting of databases.
# Standard python modules
#
#-------------------------------------------------------------------------
from __future__ import print_function
import os
import sys
import time
import io
if sys.version_info[0] < 3:
from urlparse import urlparse
from urllib2 import urlopen, url2pathname
else:
from urllib.parse import urlparse
from urllib.request import urlopen, url2pathname
from urllib.parse import urlparse
from urllib.request import urlopen, url2pathname
import tempfile
#-------------------------------------------------------------------------
#
@@ -63,7 +57,7 @@ _ = glocale.translation.gettext
from gramps.gen.db import DbBsddb
from gramps.gen.plug import BasePluginManager
from gramps.gen.config import config
from gramps.gen.constfunc import win, conv_to_unicode, UNITYPE
from gramps.gen.constfunc import win, conv_to_unicode
#-------------------------------------------------------------------------
#
# constants
@@ -144,10 +138,7 @@ class CLIDbManager(object):
current DB.
Returns ("Unknown", "Unknown", "Unknown") if invalid DB or other error.
"""
if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3:
from bsddb3 import dbshelve, db
else:
from bsddb import dbshelve, db
from bsddb3 import dbshelve, db
from gramps.gen.db import META, PERSON_TBL
from gramps.gen.db.dbconst import BDBVERSFN
@@ -517,6 +508,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

@@ -31,8 +31,6 @@ Provides also two small base classes: :class:`CLIDbLoader`, :class:`CLIManager`
# Python modules
#
#-------------------------------------------------------------------------
from __future__ import print_function
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
import os
@@ -297,7 +295,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)

@@ -32,7 +32,6 @@
# Python modules
#
#-------------------------------------------------------------------------
from __future__ import print_function
import traceback
import os
import sys
@@ -60,7 +59,6 @@ from gramps.gen.plug.report import (CATEGORY_TEXT, CATEGORY_DRAW, CATEGORY_BOOK,
from gramps.gen.plug.report._paper import paper_sizes
from gramps.gen.const import USER_HOME
from gramps.gen.dbstate import DbState
from gramps.gen.constfunc import STRTYPE, conv_to_unicode_direct
from ..grampscli import CLIManager
from ..user import User
from gramps.gen.const import GRAMPS_LOCALE as glocale
@@ -78,13 +76,13 @@ def _convert_str_to_match_type(str_val, type_val):
str_val = str_val.strip()
ret_type = type(type_val)
if isinstance(type_val, STRTYPE):
if isinstance(type_val, str):
if ( str_val.startswith("'") and str_val.endswith("'") ) or \
( str_val.startswith('"') and str_val.endswith('"') ):
# Remove enclosing quotes
return conv_to_unicode_direct(str_val[1:-1])
return str(str_val[1:-1])
else:
return conv_to_unicode_direct(str_val)
return str(str_val)
elif ret_type == int:
if str_val.isdigit():
@@ -227,7 +225,7 @@ class CommandLineReport(object):
self.raw_name = name
self.option_class = option_class(name, database)
if category == CATEGORY_GRAPHVIZ:
# Need to include GraphViz options
# Need to include Graphviz options
self.__gvoptions = graphdoc.GVOptions()
menu = self.option_class.menu
self.__gvoptions.add_menu_options(menu)

@@ -21,8 +21,6 @@
""" Unittest for argparser.py """
from __future__ import print_function
import unittest
from ..argparser import ArgParser
import sys

@@ -20,16 +20,13 @@
""" CLI tests for gramps """
from __future__ import unicode_literals
import sys
import os
import unittest
import re
import io
import sys
import subprocess
from gramps.gen.constfunc import cuni
from gramps.gen.const import TEMP_DIR
test_ged = """0 HEAD
@@ -43,13 +40,6 @@ test_ged = """0 HEAD
0 TRLR
"""
# see gramps.grampsapp.py
## hack to avoid mentioning 'utf8' encoding everywhere unicode or str is is used
if sys.version_info[0] < 3:
reload(sys)
sys.setdefaultencoding('utf8')
##
ddir = os.path.dirname(__file__)
min1r = os.path.join(ddir, "min1r.ged")
out_ged = os.path.join(ddir, "test_out.ged")
@@ -83,10 +73,11 @@ class Test(unittest.TestCase):
# This tests the fix for bug #1331-1334
# read trivial gedcom input, write gedcom output
def test2_exec_CLI(self):
pyexec = sys.executable
ifile = min1r
ofile = out_ged
gcmd = "Gramps.py -i %s -e %s" % (ifile, ofile)
process = subprocess.Popen("python %s" % gcmd,
process = subprocess.Popen("%s %s" % (pyexec ,gcmd),
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE, shell=True)
@@ -105,17 +96,21 @@ class Test(unittest.TestCase):
# (eg cleanout stale files from prior crash-runs)
def test3_files_in_import_dir(self):
ddir = os.path.join(TEMP_DIR, "import_dbdir")
os.makedirs(ddir)
try:
os.makedirs(ddir)
except:
pass
bogofiles = [os.path.join(ddir, fn) for fn in ("family.db", "lock")]
for fn in bogofiles:
with io.open(fn, "w") as f:
f.write("garbage")
# ~same as test 2
pyexec = sys.executable
ifile = min1r
ofile = out_ged
gcmd = "Gramps.py -i %s -e %s" % (ifile, ofile)
process = subprocess.Popen("python %s" % gcmd,
process = subprocess.Popen("%s %s" % (pyexec, gcmd),
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE, shell=True)
@@ -128,28 +123,27 @@ class Test(unittest.TestCase):
class UnicodeTest(unittest.TestCase):
@unittest.skipIf(sys.version_info[0] < 3 and sys.platform == 'win32',
"Python2 bsddb doesn't handle unicode paths")
def setUp(self):
from gramps.cli.clidbman import CLIDbManager
from gramps.gen.config import set as setconfig
from gramps.gen.config import set as setconfig, get as getconfig
from gramps.gen.dbstate import DbState
self.newpath = os.path.join(os.path.dirname(__file__),
cuni('\u0393\u03c1\u03b1\u03bc\u03c3\u03c0'))
self.newtitle = cuni('Gr\u00e4mps T\u00e9st')
'\u0393\u03c1\u03b1\u03bc\u03c3\u03c0')
self.newtitle = 'Gr\u00e4mps T\u00e9st'
os.makedirs(self.newpath)
self.old_path = getconfig('behavior.database-path')
setconfig('behavior.database-path', self.newpath)
self.cli = CLIDbManager(DbState())
def tearDown(self):
from gramps.gen.config import set as setconfig
for (dirpath, dirnames, filenames) in os.walk(self.newpath, False):
for afile in filenames:
os.remove(os.path.join(dirpath, afile))
for adir in dirnames:
os.rmdir(os.path.join(dirpath, adir))
os.rmdir(self.newpath)
pass
setconfig('behavior.database-path', self.old_path)
# Test that clidbman will open files in a path containing
# arbitrary Unicode characters.

@@ -21,8 +21,6 @@
""" Unittest for user.py """
from __future__ import print_function
import unittest
from .. import user
from ...gen.test.user_test import TestUser

@@ -22,14 +22,6 @@
The User class provides basic interaction with the user.
"""
#------------------------------------------------------------------------
#
# Python Modules
#
#------------------------------------------------------------------------
from __future__ import print_function, unicode_literals
import sys
#------------------------------------------------------------------------
#
# Gramps Modules
@@ -66,7 +58,7 @@ class User(user.User):
user.User.__init__(self, callback, error)
self.steps = 0;
self.current_step = 0;
self._input = raw_input if sys.version_info[0] < 3 else input
self._input = input
def yes(*args):
return True
@@ -117,7 +109,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.

@@ -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/branches/gramps41/")
register('behavior.addons-url', "https://raw.githubusercontent.com/gramps-project/addons/master/gramps42")
register('export.proxy-order', [
["privacy", 0],
@@ -169,9 +169,7 @@ register('geography.zoom', 0)
register('geography.zoom_when_center', 12)
register('geography.show_cross', False)
register('geography.path', "")
register('htmlview.start-url', "http://gramps-project.org")
register('htmlview.url-handler', False)
register('geography.use-keypad', True)
register('interface.address-height', 450)
register('interface.address-width', 650)
@@ -212,7 +210,6 @@ register('interface.grampletbar-close', False)
register('interface.height', 500)
register('interface.ignore-gexiv2', False)
register('interface.ignore-osmgpsmap', False)
register('interface.ignore-webkit', False)
register('interface.lds-height', 450)
register('interface.lds-width', 600)
register('interface.location-height', 250)
@@ -272,6 +269,7 @@ register('interface.url-width', 600)
register('interface.view', True)
register('interface.width', 775)
register('interface.surname-box-height', 150)
register('interface.treemodel-cache-size', 1000)
register('paths.recent-export-dir', '')
register('paths.recent-file', '')
@@ -295,6 +293,11 @@ 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-auto', True)
register('preferences.place-number', False)
register('preferences.place-reverse', False)
register('preferences.place-restrict', 0)
register('preferences.place-lang', '')
register('preferences.patronimic-surname', False)
register('preferences.no-given-text', "[%s]" % _("Missing Given Name"))
register('preferences.no-record-text', "[%s]" % _("Missing Record"))
@@ -313,7 +316,6 @@ register('preferences.sprefix', 'S%04d')
register('preferences.use-last-view', False)
register('preferences.last-view', '')
register('preferences.last-views', [])
register('preferences.use-bsddb3', False)
register('preferences.family-relation-type', 3) # UNKNOWN
register('preferences.age-display-precision', 1)
register('preferences.color-gender-male-alive', '#b8cee6')
@@ -343,7 +345,7 @@ register('researcher.researcher-phone', '')
register('researcher.researcher-postal', '')
register('researcher.researcher-state', '')
register('plugin.hiddenplugins', ['htmlview'])
register('plugin.hiddenplugins', [])
register('plugin.addonplugins', [])
#---------------------------------------------------------------

@@ -25,8 +25,6 @@
Provides constants for other modules
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Standard python modules
@@ -49,7 +47,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
@@ -57,9 +55,14 @@ from ..version import VERSION, VERSION_TUPLE, major_version
#-------------------------------------------------------------------------
URL_HOMEPAGE = "http://gramps-project.org/"
URL_MAILINGLIST = "http://sourceforge.net/mail/?group_id=25770"
URL_BUGTRACKER = "http://bugs.gramps-project.org/bug_report_advanced_page.php"
URL_BUGHOME = "http://bugs.gramps-project.org"
URL_BUGTRACKER = "http://bugs.gramps-project.org/bug_report_page.php"
URL_WIKISTRING = "http://gramps-project.org/wiki/index.php?title="
URL_MANUAL_PAGE = "Gramps_%s_Wiki_Manual" % major_version
URL_MANUAL_DATA = '%s_-_Entering_and_editing_data:_detailed' % URL_MANUAL_PAGE
URL_MANUAL_SECT1 = '%s_-_part_1' % URL_MANUAL_DATA
URL_MANUAL_SECT2 = '%s_-_part_2' % URL_MANUAL_DATA
URL_MANUAL_SECT3 = '%s_-_part_3' % URL_MANUAL_DATA
WIKI_FAQ = "FAQ"
WIKI_KEYBINDINGS = "Gramps_%s_Wiki_Manual_-_Keybindings" % major_version
WIKI_EXTRAPLUGINS= "%s_Addons" % major_version
@@ -122,20 +125,15 @@ USER_DIRLIST = (USER_HOME, HOME_DIR, VERSION_DIR, ENV_DIR, TEMP_DIR, THUMB_DIR,
# above this one, and that the plugins directory is below the root directory.
#
#-------------------------------------------------------------------------
# test for sys.frozen to detect a py2exe executable on Windows
if sys.version_info[0] < 3 and hasattr(sys, "frozen"):
ROOT_DIR = os.path.abspath(os.path.dirname(unicode(sys.executable)))
else:
ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(
conv_to_unicode(__file__)), os.pardir))
ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(
conv_to_unicode(__file__)), os.pardir))
sys.path.insert(0, ROOT_DIR)
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"
#VERSION += "-1"
#
# Glade files
@@ -192,7 +190,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.")
@@ -215,9 +213,6 @@ DOCUMENTERS = [
'Alexander Roitman',
]
TRANSLATORS = _('TRANSLATORS: Translate this to your '
'name in your native language')
#-------------------------------------------------------------------------
#
# Constants

@@ -50,35 +50,11 @@ WINDOWS = ["Windows", "win32"]
# Public Functions
#
#-------------------------------------------------------------------------
#python 2 and 3 support, use correct conversion to unicode
if sys.version_info[0] < 3:
conv_to_unicode_direct = unicode
STRTYPE = basestring
UNITYPE = unicode
else:
conv_to_unicode_direct = str
STRTYPE = str
UNITYPE = str
cuni = conv_to_unicode_direct
def conv_to_unicode(x, y='utf8'):
return x if x is None or isinstance(x, UNITYPE) else cuni(x, y) if y else cuni(x)
def uni_to_gui(x):
'''
In Py2 we need to convert strings to utf8 before passing them to
Gtk functions.
'''
if sys.version_info[0] < 3 and isinstance(x, UNITYPE):
return x.encode('utf8')
else:
return x
return x if x is None or isinstance(x, str) else str(x, y) if y else str(x)
# handle in database is bytes, while internally Gramps wants unicode for py3
if sys.version_info[0] < 3:
handle2internal = lambda x: x
else:
handle2internal = lambda x: conv_to_unicode(x, 'utf-8')
handle2internal = lambda x: conv_to_unicode(x, 'utf-8')
#-------------------------------------------------------------------------
#
@@ -184,16 +160,6 @@ def get_env_var(name, default=None):
if not name or not name in os.environ:
return default
if sys.version_info[0] < 3 and win():
name = unicode(name) # make sure string argument is unicode
n = ctypes.windll.kernel32.GetEnvironmentVariableW(name, None, 0)
if n==0:
return default
# n is number of codepoints
buf = ctypes.create_unicode_buffer(n+1)
ctypes.windll.kernel32.GetEnvironmentVariableW(name, buf, n)
return buf.value
return os.environ[name]
def get_curr_dir():
@@ -203,14 +169,4 @@ def get_curr_dir():
an arbitrary unicode character in a path. This function uses the
native GetCurrentDirectory function to return a unicode cwd.
'''
if not (sys.version_info[0] < 3 and win()):
return os.getcwd()
n = ctypes.windll.kernel32.GetCurrentDirectoryW(0, None)
if n == 0:
return None
buf = ctypes.create_unicode_buffer(n+1)
ctypes.windll.kernel32.GetCurrentDirectoryW(n, buf)
return buf.value
return os.getcwd()

@@ -22,8 +22,6 @@
Class handling language-specific selection for date parser and displayer.
"""
from __future__ import print_function, unicode_literals
#-------------------------------------------------------------------------
#
# set up logging
@@ -50,7 +48,9 @@ from . import _date_es
from . import _date_fi
from . import _date_fr
from . import _date_hr
from . import _date_hu
from . import _date_it
from . import _date_ja
from . import _date_lt
from . import _date_nb
from . import _date_nl
@@ -62,6 +62,8 @@ from . import _date_sl
from . import _date_sr
from . import _date_sv
from . import _date_uk
from . import _date_zh_CN
from . import _date_zh_TW
# Initialize global parser
try:

@@ -28,7 +28,6 @@ Arabic-specific classes for parsing and displaying dates.
# Python modules
#
#-------------------------------------------------------------------------
from __future__ import unicode_literals
import re
#-------------------------------------------------------------------------
@@ -67,9 +66,6 @@ class DateParserAR(DateParser):
'حوالي.' : Date.MOD_ABOUT,
'حوالي' : Date.MOD_ABOUT,
}
# in some languages some of above listed modifiers are after the date,
# in that case the subclass should put them into this dictionary instead
modifier_after_to_int = {}
islamic_to_int = {
"محرّم" : 1, "محرّم الحرام" : 1,

@@ -22,7 +22,7 @@
"""
Bulgarian-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Python modules

@@ -24,7 +24,7 @@
"""
Catalan-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Python modules

@@ -22,7 +22,7 @@
"""
Czech-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Python modules
@@ -164,7 +164,7 @@ class DateParserCZ(DateParser):
quality_to_int = {
'přibližně' : Date.QUAL_ESTIMATED,
'odhadované' : Date.QUAL_ESTIMATED,
'odhadem' : Date.QUAL_ESTIMATED,
'odh.' : Date.QUAL_ESTIMATED,
'vypočteno' : Date.QUAL_CALCULATED,
'vypočtené' : Date.QUAL_CALCULATED,
@@ -173,6 +173,8 @@ class DateParserCZ(DateParser):
def init_strings(self):
DateParser.init_strings(self)
self._text2 = re.compile('(\d+)?\.?\s+?%s\.?\s*((\d+)(/\d+)?)?\s*$'
% self._mon_str, re.IGNORECASE)
self._span = re.compile(
"(od)\s+(?P<start>.+)\s+(do)\s+(?P<stop>.+)",
re.IGNORECASE)
@@ -221,7 +223,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.
"""

@@ -22,7 +22,7 @@
"""
Danish-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Python modules

@@ -22,7 +22,7 @@
"""
German-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Python modules

@@ -24,7 +24,6 @@
Greek-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Python modules
@@ -78,9 +77,6 @@ class DateParserEL(DateParser):
'γυρ.' : Date.MOD_ABOUT,
'~' : Date.MOD_ABOUT,
}
# in some languages some of above listed modifiers are after the date,
# in that case the subclass should put them into this dictionary instead
modifier_after_to_int = {}
bce = ["π.Χ.", "π.Κ.Χ.", "π.Κ.Ε.", "π.Χ" ]

@@ -22,7 +22,7 @@
"""
Spanish-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Python modules

@@ -22,7 +22,7 @@
"""
Finnish-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Python modules
@@ -98,7 +98,8 @@ class DateParserFI(DateParser):
def init_strings(self):
DateParser.init_strings(self)
# date, whitespace
self._text2 = re.compile('(\d+)?\.?\s+?%s\.?\s*((\d+)(/\d+)?)?\s*$'
% self._mon_str, re.IGNORECASE)
self._span = re.compile("(?P<start>.+)\s+(-)\s+(?P<stop>.+)",
re.IGNORECASE)
self._range = re.compile(
@@ -114,90 +115,68 @@ class DateDisplayFI(DateDisplay):
"""
Finnish language date display class.
"""
long_months = ("", "Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu",
"Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu",
"Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu")
short_months = ("", "Tammi", "Helmi", "Maali", "Huhti", "Touko",
"Kesäk", "Heinä", "Eloku", "Syysk", "Lokak", "Marra",
"Joulu")
calendar = ("",
"juliaaninen",
"heprealainen",
"ranskan v.",
"persialainen",
"islamilainen",
"svensk"
)
_qual_str = ("", "arviolta", "laskettuna")
_bce_str = "%s ekr."
formats = (
"VVVV-KK-PP (ISO)",
"PP.KK.VVVV"
"PP.KK.VVVV",
"Päivä Kuukausi Vuosi" # Day, full month name, year
)
# normally, this would agree with DateDisplayEn's "formats"
# (since no locale-specific _display_gregorian exists, here),
# but the locale-specific "display" (below) forces self.format = 1
# this definition must agree with its "_display_calendar" method
def display(self, date):
"""
Return a text string representing the date.
"""
mod = date.get_modifier()
qual = date.get_quality()
cal = date.get_calendar()
start = date.get_start_date()
newyear = date.get_new_year()
if mod == Date.MOD_TEXTONLY:
return date.get_text()
if start == Date.EMPTY:
return ""
display = DateDisplay.display_formatted
# select numerical date format
self.format = 1
def _display_calendar(self, date_val, long_months, short_months = None,
inflect=""):
# this must agree with its locale-specific "formats" definition
if mod == Date.MOD_SPAN:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
text = "%s - %s" % (d1, d2)
elif mod == Date.MOD_RANGE:
stop = date.get_stop_date()
if start[0] == start[1] == 0 and stop[0] == 0 and stop[1] == 0:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](stop)
text = "vuosien %s ja %s välillä" % (d1, d2)
else:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](stop)
text = "%s ja %s välillä" % (d1, d2)
if short_months is None:
# Let the short formats work the same as long formats
short_months = long_months
if self.format == 0:
return self.display_iso(date_val)
elif self.format == 1:
# numerical
value = self.dd_dformat01(date_val)
# elif self.format == 4:
else:
text = self.display_cal[date.get_calendar()](start)
if mod == Date.MOD_AFTER:
text = text + " jälkeen"
elif mod == Date.MOD_ABOUT:
text = "noin " + text
elif mod == Date.MOD_BEFORE:
text = "ennen " + text
# day month_name year
value = self.dd_dformat04(date_val, inflect, long_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
else:
return value
if qual:
# prepend quality
text = "%s %s" % (self._qual_str[qual], text)
if cal or newyear:
# append calendar type
scal = self.format_extras(cal, newyear)
text = "%s %s" % (text, scal)
return text
def dd_dformat04(self, date_val, inflect, long_months):
"""
day month_name year -- for Finnish locale
"""
year = self._slash_year(date_val[2], date_val[3])
if date_val[0] == 0:
if date_val[1] == 0:
return year
else:
if inflect:
return self.format_long_month_year(date_val[1], year,
inflect, long_months)
else:
return "{long_month.f[IN]} {year}".format(
long_month = long_months[date_val[1]],
year = year)
else:
if not hasattr(long_months[date_val[1]], 'f'): # not a Lexeme
return self.dd_dformat01(date_val) # maybe the month is zero
return "{day:d}. {long_month.f[P]} {year}".format(
day = date_val[0],
long_month = long_months[date_val[1]],
year = year)
#-------------------------------------------------------------------------
#
# Register classes
#
#-------------------------------------------------------------------------
register_datehandler(('fi_FI', 'fi', 'finnish', 'Finnish'), DateParserFI, DateDisplayFI)
register_datehandler(('fi_FI', 'fi', 'finnish', 'Finnish'),
DateParserFI, DateDisplayFI)

@@ -21,16 +21,15 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
French-specific classes for parsing and displaying dates.
"""
#-------------------------------------------------------------------------
#
# Python modules
#
#-------------------------------------------------------------------------
"""
French-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
import re
#-------------------------------------------------------------------------

@@ -26,7 +26,7 @@
"""
Croatian-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Python modules
@@ -57,8 +57,7 @@ class DateParserHR(DateParser):
'po. ' : Date.MOD_AFTER,
'okolo' : Date.MOD_ABOUT,
'ok. ' : Date.MOD_ABOUT,
}
}
quality_to_int = {
'približno' : Date.QUAL_ESTIMATED,
@@ -75,20 +74,20 @@ 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+)\.?$")
#"((\d+)[/\.]\s*)?((\d+)[/\.]\s*)?(\d+)\s*$")
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)
#-------------------------------------------------------------------------
#
@@ -105,6 +104,47 @@ class DateDisplayHR(DateDisplay):
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
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)
elif date_val[1] == 0: # month is zero but day is not (see 8477)
return self.display_iso(date_val)
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).replace(' .', ''),
year = year)
#-------------------------------------------------------------------------
#
# Register classes

@@ -0,0 +1,368 @@
# -*- coding: utf-8 -*-
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2004-2006 Donald N. Allingham
# Copyright (C) 2015 Lajos Nemeséri <nemeseril@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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
Hungarian-specific classes for parsing and displaying dates.
"""
#-------------------------------------------------------------------------
#
# Python modules
#
#-------------------------------------------------------------------------
import re
#-------------------------------------------------------------------------
#
# GRAMPS modules
#
#-------------------------------------------------------------------------
from ..lib.date import Date
from ._dateparser import DateParser
from ._datedisplay import DateDisplay
from ._datehandler import register_datehandler
#-------------------------------------------------------------------------
#
# Hungarian parser
#
#
#-------------------------------------------------------------------------
class DateParserHU(DateParser):
month_to_int = DateParser.month_to_int
month_to_int["-"]=0 #to make the Zero month to work
month_to_int["január"] = 1
month_to_int["jan"] = 1
month_to_int["jan."] = 1
month_to_int["I"] = 1
# month_to_int["i"] = 1
month_to_int["február"] = 2
month_to_int["feb"] = 2
month_to_int["feb."] = 2
month_to_int["II"] = 2
# month_to_int["ii"] = 2
month_to_int["március"] = 3
month_to_int["márc"] = 3
month_to_int["márc."] = 3
month_to_int["III"] = 3
# month_to_int["iii"] = 3
month_to_int["április"] = 4
month_to_int["ápr"] = 4
month_to_int["ápr."] = 4
month_to_int["IV"] = 4
# month_to_int["iv"] = 4
month_to_int["május"] = 5
month_to_int["máj"] = 5
month_to_int["máj."] = 5
month_to_int["V"] = 5
# month_to_int["v"] = 5
month_to_int["június"] = 6
month_to_int["jún"] = 6
month_to_int["jún."] = 6
month_to_int["VI"] = 6
# month_to_int["vi"] = 6
month_to_int["július"] = 7
month_to_int["júl"] = 7
month_to_int["júl."] = 7
month_to_int["VII"] = 7
# month_to_int["vii"] = 7
month_to_int["augusztus"] = 8
month_to_int["aug"] = 8
month_to_int["aug."] = 8
month_to_int["VIII"] = 8
# month_to_int["viii"] = 8
month_to_int["szeptember"] = 9
month_to_int["szept"] = 9
month_to_int["szept."] = 9
month_to_int["IX"] = 9
# month_to_int["ix"] = 9
month_to_int["október"] = 10
month_to_int["okt"] = 10
month_to_int["okt."] = 10
month_to_int["X"] = 10
# month_to_int["x"] = 10
month_to_int["november"] = 11
month_to_int["nov"] = 11
month_to_int["nov."] = 11
month_to_int["XI"] = 11
# month_to_int["xi"] = 11
month_to_int["december"] = 12
month_to_int["dec"] = 12
month_to_int["dec."] = 12
month_to_int["XII"] = 12
# month_to_int["xii"] = 12
#-----------------------------------------------------------------------
#
# Alternative and latin names - not verified
#
#-----------------------------------------------------------------------
# Other common latin names
# month_to_int["januaris"] = 01
# month_to_int["januarii"] = 01
# month_to_int["januarius"] = 01
# month_to_int["februaris"] = 02
# month_to_int["februarii"] = 02
# month_to_int["februarius"] = 02
# month_to_int["martii"] = 03
# month_to_int["martius"] = 03
# month_to_int["aprilis"] = 04
# month_to_int["maius"] = 05
# month_to_int["maii"] = 05
# month_to_int["junius"] = 06
# month_to_int["junii"] = 06
# month_to_int["julius"] = 07
# month_to_int["julii"] = 07
# month_to_int["augustus"] = 08
# month_to_int["augusti"] = 08
# month_to_int["septembris"] = 09
# month_to_int["7bris"] = 09
# month_to_int["september"] = 09
# month_to_int["october"] = 10
# month_to_int["octobris"] = 10
# month_to_int["8bris"] = 10
# month_to_int["novembris"] = 11
# month_to_int["9bris"] = 11
# month_to_int["november"] = 11
# month_to_int["decembris"] = 12
# month_to_int["10bris"] = 12
# month_to_int["xbris"] = 12
# month_to_int["december"] = 12
# old Hungarian names
# month_to_int["Boldogasszony hava"] = 01
# month_to_int["Fergeteg hava"] = 01
# month_to_int["Böjtelő hava"] = 02
# month_to_int["Jégbontó hava"] = 02
# month_to_int["Böjtmás hava"] = 03
# month_to_int["Kikelet hava"] = 03
# month_to_int["Szent György hava"] = 04
# month_to_int["Szelek hava"] = 04
# month_to_int["Pünkösd hava"] = 05
# month_to_int["Ígéret hava"] = 05
# month_to_int["Szent Iván hava"] = 06
# month_to_int["Napisten hava"] = 06
# month_to_int["Szent Jakab hava"] = 07
# month_to_int["Áldás hava"] = 07
# month_to_int["Kisasszony hava"] = 08
# month_to_int["Újkenyér hava"] = 08
# month_to_int["Szent Mihály hava"] = 09
# month_to_int["Földanya hava"] = 09
# month_to_int["Mindszent hava"] = 10
# month_to_int["Magvető hava"] = 10
# month_to_int["Szent András hava"] = 11
# month_to_int["Enyészet hava"] = 11
# month_to_int["Karácsony hava"] = 12
# month_to_int["Álom hava"] = 12
modifier_after_to_int={
'előtt' : Date.MOD_BEFORE,
'körül' : Date.MOD_ABOUT,
'után' : Date.MOD_AFTER,
}
quality_to_int = {
'becsült' : Date.QUAL_ESTIMATED,
'hozzávetőleg' : Date.QUAL_ESTIMATED,
'becs.' : Date.QUAL_ESTIMATED,
'számított' : Date.QUAL_CALCULATED,
'körülbelül' : Date.QUAL_ESTIMATED,
'számolt' : Date.QUAL_CALCULATED,
'szám.' : Date.QUAL_CALCULATED,
}
bce = ["időszámításunk előtt", "időszámítás előtt", "i. e.",
"Krisztus előtt", "Krisztus előtti", "Kr. e."] + DateParser.bce
calendar_to_int = {
'Gergely' : Date.CAL_GREGORIAN,
'Julián' : Date.CAL_JULIAN,
'héber' : Date.CAL_HEBREW,
'iszlám' : Date.CAL_ISLAMIC,
'francia köztársasági' : Date.CAL_FRENCH,
'perzsa' : Date.CAL_PERSIAN,
'svéd' : Date.CAL_SWEDISH,
}
def init_strings(self):
# Compiles regular expression strings for matching dates
DateParser.init_strings(self)
self._numeric = re.compile(
"((\d+)[/\.])?\s*((\d+)[/\.])?\s*(\d+)[/\. ]?$")
self._text2 = re.compile('((\d+)(/\d+)?\.)?\s+?%s\.?\s*(\d+\.)?\s*$'
% self._mon_str, re.IGNORECASE)
_span_1 = ['-tó\\)l', '-tól', '-től']
_span_2 = ['-ig']
_range_1 = ['és']
_range_2 = ['között']
self._span = re.compile("(?P<start>.+)(%s)\s+(?P<stop>.+)(%s)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(?P<start>.+)\s+(%s)\s+(?P<stop>.+)\s+(%s)" %
('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
def _get_int(self, val):
"""
Convert the string to an integer if the value is not None. If the
value is None, a zero is returned
"""
if val is None:
return 0
else:
return int(val.replace('.', ''))
#-------------------------------------------------------------------------
#
# Hungarian display
#
#-------------------------------------------------------------------------
class DateDisplayHU(DateDisplay):
"""
Hungarian language date display class.
"""
_bce_str = "i. e. %s"
roman_months=(
"-.", "I.", "II.", "III.", "IV.", "V.", "VI.",
"VII.", "VIII.", "IX.", "X.", "XI.", "XII."
)
formats = (
"ÉÉÉÉ-HH-NN (ISO)", # 0
"Alapértelmezett éééé. hh. nn.", # 1
"Év hónap nap", # year, full month name, day # 2
"Év hó nap", #year, short month name, day # 3
"Év római h.sz. nap" #year, Roman number, day # 4
)
# this definition must agree with its "_display_calendar" method
display = DateDisplay.display_formatted
def _display_calendar(self, date_val, long_months, short_months = None,
inflect=""):
# this must agree with its locale-specific "formats" definition
year = self._slash_year(date_val[2], date_val[3])
if short_months is None:
# Let the short formats work the same as long formats
short_months = long_months
if self.format == 0:
return self.display_iso(date_val)
elif self.format == 1:
# Base defined Hungarian form
if date_val[3]:
return self.display_iso(date_val)
else:
if date_val[0]==0: #No day
if date_val[1]==0: #No month -> year
value="%s" % year
else:
value="%s. %02d." % (year, date_val[1]) #If no day -> year, month
else:
value="%s. %02d. %02d." % (year, date_val[1], date_val[0])
elif self.format == 2:
# year, full month name, day
if date_val[0]==0:
if date_val[1]==0:
value="%s" % year
else:
value="%s. %s" % (year, self.long_months[date_val[1]]) #If no day -> year, month
else:
if date_val[1]==0:
value="%s. %s %02d." % (year, '-', date_val[0]) #To indicate somehow if the month is missing
else:
value="%s. %s %02d." % (year, self.long_months[date_val[1]], date_val[0])
elif self.format == 3:
#year, short month name, day
if date_val[0]==0:
if date_val[1]==0:
value="%s" % year
else:
value="%s. %s" % (year, self.short_months[date_val[1]]) #If no day -> year, month
else:
if date_val[1]==0:
value="%s. %s %02d." % (year, '-.', date_val[0]) #To indicate somehow if the month is missing
else:
value="%s. %s %02d." % (year, self.short_months[date_val[1]], date_val[0])
elif self.format == 4:
#year, Roman number, day
if date_val[0]==0:
if date_val[1]==0:
value="%s" % year
else:
value="%s. %s" % (year, self.roman_months[date_val[1]]) #If no day -> year, month
else:
value="%s. %s %02d." % (year, self.roman_months[date_val[1]], date_val[0])
else:
# day month_name year
value = self.dd_dformat04(date_val, inflect, long_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
else:
return value
#-------------------------------------------------------------------------
#
# Register classes
#
#-------------------------------------------------------------------------
register_datehandler(('hu_HU', 'hu', 'hungarian', 'Hungarian', 'magyar'),
DateParserHU, DateDisplayHU)

@@ -24,7 +24,7 @@
"""
Italian-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Python modules

@@ -0,0 +1,269 @@
# -*- coding: utf-8 -*-
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2004-2006 Donald N. Allingham
# Copyright (C) 2014 Mathieu MD <mathieu.md@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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#
"""
Japanese-specific classes for parsing and displaying dates.
"""
#-------------------------------------------------------------------------
#
# Python modules
#
#-------------------------------------------------------------------------
import re
#-------------------------------------------------------------------------
#
# GRAMPS modules
#
#-------------------------------------------------------------------------
from ..lib.date import Date
from ._dateparser import DateParser
from ._datedisplay import DateDisplay
from ._datehandler import register_datehandler
from . import _grampslocale
#-------------------------------------------------------------------------
#
# Japanese parser
#
#-------------------------------------------------------------------------
class DateParserJA(DateParser):
"""
Convert a text string into a Date object. If the date cannot be
converted, the text string is assigned.
"""
# modifiers before the date
modifier_to_int = {
'以前' : Date.MOD_BEFORE,
'以降' : Date.MOD_AFTER,
'' : Date.MOD_ABOUT,
'ごろ' : Date.MOD_ABOUT,
}
month_to_int = DateParser.month_to_int
quality_to_int = {
'およそ' : Date.QUAL_ESTIMATED,
'ごろ' : Date.QUAL_ESTIMATED,
'' : Date.QUAL_ESTIMATED,
'計算上' : Date.QUAL_CALCULATED,
}
bce = ["紀元前", "BC"] + DateParser.bce
def init_strings(self):
"""
This method compiles regular expression strings for matching dates.
"""
DateParser.init_strings(self)
DateParser.calendar_to_int.update({
'グレゴリオ暦' : Date.CAL_GREGORIAN,
'g' : Date.CAL_GREGORIAN,
'ユリウス暦' : Date.CAL_JULIAN,
'j' : Date.CAL_JULIAN,
'ユダヤ暦' : Date.CAL_HEBREW,
'h' : Date.CAL_HEBREW,
'ヒジュラ暦' : Date.CAL_ISLAMIC,
'i' : Date.CAL_ISLAMIC,
'フランス革命暦' : Date.CAL_FRENCH,
'共和暦' : Date.CAL_FRENCH,
'f' : Date.CAL_FRENCH,
'イラン暦' : Date.CAL_PERSIAN,
'p' : Date.CAL_PERSIAN,
'スウェーデン暦' : Date.CAL_SWEDISH,
's' : Date.CAL_SWEDISH,
})
DateParser.month_to_int.update({
"一月" : 1,
"ichigatsu" : 1,
"睦月" : 1,
"mutsuki" : 1,
"二月" : 2,
"nigatsu" : 2,
"如月" : 2,
"kisaragi" : 2,
"衣更着" : 2,
"kinusaragi" : 2,
"三月" : 3,
"sangatsu" : 3,
"弥生" : 3,
"yayoi" : 3,
"四月" : 4,
"shigatsu" : 4,
"卯月" : 4,
"uzuki" : 4,
"五月" : 5,
"gogatsu" : 5,
"皐月" : 5,
"satsuki" : 5,
"早苗月" : 5,
"sanaetsuki" : 5,
"六月" : 6,
"rokugatsu" : 6,
"水無月" : 6,
"minazuki" : 6,
"七月" : 7,
"shichigatsu" : 7,
"文月" : 7,
"fumizuki" : 7,
"八月" : 8,
"hachigatsu" : 8,
"葉月" : 8,
"hazuki" : 8,
"九月" : 9,
"kugatsu" : 9,
"長月" : 9,
"nagatsuki" : 9,
"十月" : 10,
"jugatsu" : 10,
"jūgatsu" : 10,
"juugatsu" : 10,
"神無月" : 10,
"kannazuki" : 10,
"kaminazuki" : 10,
"神有月" : 10,
"神在月" : 10,
"kamiarizuki" : 10,
"十一月" : 11,
"juichigatsu" : 11,
"jūichigatsu" : 11,
"juuichigatsu" : 11,
"霜月" : 11,
"shimotsuki" : 11,
"十二月" : 12,
"junigatsu" : 12,
"jūnigatsu" : 12,
"juunigatsu" : 12,
"師走" : 12,
"shiwasu" : 12,
})
_span_1 = ['から', '~', '']
_span_2 = ['まで', '']
_range_1 = ['から', '', '~', '']
_range_2 = ['までの間', 'の間']
self._span = re.compile("(?P<start>.+)(%s)(?P<stop>\d+)(%s)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(?P<start>.+)(%s)(?P<stop>.+)(%s)" %
('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
self._numeric = re.compile("((\d+)年\s*)?((\d+)月\s*)?(\d+)?日?\s*$")
#-------------------------------------------------------------------------
#
# Japanese display
#
#-------------------------------------------------------------------------
class DateDisplayJA(DateDisplay):
"""
Japanese language date display class.
"""
# Specify what is actually the "System Default".
_locale_tformat = _grampslocale.tformat
_locale_tformat = _locale_tformat.replace('%d', "31")
_locale_tformat = _locale_tformat.replace('%m', "12")
_locale_tformat = _locale_tformat.replace('%Y', "1999")
# This definition must agree with its "_display_gregorian" method
formats = ("YYYY-MM-DD (ISO)", # 0
"システムデフォールト (" + _locale_tformat + ")", # 1
"1999年12月31日", # 2
"1999年十二月31日", # 3
)
def _display_gregorian(self, date_val, **kwargs):
"""
display gregorian calendar date in different format
"""
# this must agree with its locale-specific "formats" definition
year = self._slash_year(date_val[2], date_val[3])
if self.format == 0:
# ISO
return self.display_iso(date_val)
elif self.format == 1:
# System Default
if date_val[2] < 0 or 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]))
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(date_val[2]))
elif self.format == 2:
# 1999年12月31日
if date_val[0] == 0:
if date_val[1] == 0:
value = "%s" % year
else:
value = "%s%s" % (year,
self.short_months[date_val[1]])
else:
value = "%s%s%s" % (year,
self.short_months[date_val[1]],
date_val[0])
elif self.format == 3:
# 1999年十二月31日
if date_val[0] == 0:
if date_val[1] == 0:
value = "%s" % year
else:
value = "%s%s" % (year,
self.long_months[date_val[1]])
else:
value = "%s%s%s" % (year,
self.long_months[date_val[1]],
date_val[0])
else:
return self.display_iso(date_val)
if date_val[2] < 0:
return self._bce_str % value
else:
return value
display = DateDisplay.display_formatted
#-------------------------------------------------------------------------
#
# Register classes
#
#-------------------------------------------------------------------------
register_datehandler(('ja_JP', 'ja', 'japanese', 'Japanese'),
DateParserJA, DateDisplayJA)

@@ -22,7 +22,7 @@
"""
Lithuanian-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Python modules
@@ -130,6 +130,8 @@ class DateParserLT(DateParser):
def init_strings(self):
DateParser.init_strings(self)
self._text2 = re.compile('((\d+)(/\d+)?)?\s+?m\.\s+%s\s*(\d+)?\s*d?\.?$'
% self._mon_str, re.IGNORECASE)
_span_1 = ['nuo']
_span_2 = ['iki']
_range_1 = ['tarp']
@@ -141,27 +143,6 @@ class DateParserLT(DateParser):
('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
#------------------------------------------------------------------------
#
# FIXME: oficial long date format (ex, 2011 m. vasario 4 d.)
# is not recognized correctly:
# with self._text2 - day is recognized as year, year - as day
# with self._iso - month not recognized, day recognized,
# year increased by 1, date treated as double
# TODO: in _DateParser.py in _parse_calendar modify groups
#
#------------------------------------------------------------------------
#
# # gregorian and julian
#
# self._text2 = re.compile('(\d+)?\s*?m\.?\s*?%s\.?\s*((\d+)(/\d+)?)?\s*?d?\.?' %
# self._mon_str, re.IGNORECASE)
#
# self._iso = re.compile('(\d+)(/\d+)?\s*?m?\.?\s+?%s\.?\s*((\d+))?\s*?d?\.?' %
# self._mon_str, re.IGNORECASE)
#
#-------------------------------------------------------------------------
#-------------------------------------------------------------------------
#
# Lithuanian displayer

@@ -22,7 +22,7 @@
"""
Norwegian-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Python modules

@@ -28,7 +28,6 @@
"""
Dutch-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#

@@ -25,7 +25,7 @@
"""
Polish-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Python modules

@@ -24,7 +24,7 @@
"""
Portuguese-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Python modules

@@ -22,7 +22,7 @@
"""
Russian-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Python modules
@@ -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

@@ -22,7 +22,7 @@
"""
Slovak-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Python modules

@@ -22,7 +22,7 @@
# Slovenian version 2010 by Bernard Banko, based on croatian one by Josip
"""
Slovenian-specific classes for parsing and displaying dates.
Slovenian-specific classes for parsing and displaying dates - new framework.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
@@ -51,79 +51,6 @@ class DateParserSL(DateParser):
"""
Converts a text string into a Date object
"""
month_to_int = DateParser.month_to_int
month_to_int["januar"] = 1
month_to_int["januarja"] = 1
month_to_int["januarjem"] = 1
month_to_int["jan"] = 1
month_to_int["i"] = 1
month_to_int["februar"] = 2
month_to_int["februarjem"] = 2
month_to_int["februarja"] = 2
month_to_int["feb"] = 2
month_to_int["ii"] = 2
month_to_int["mar"] = 3
month_to_int["marcem"] = 3
month_to_int["marec"] = 3
month_to_int["marca"] = 3
month_to_int["iii"] = 3
month_to_int["apr"] = 4
month_to_int["april"] = 4
month_to_int["aprilom"] = 4
month_to_int["aprila"] = 4
month_to_int["iv"] = 4
month_to_int["maj"] = 5
month_to_int["maja"] = 5
month_to_int["majem"] = 5
month_to_int["v"] = 5
month_to_int["jun"] = 6
month_to_int["junij"] = 6
month_to_int["junijem"] = 6
month_to_int["junija"] = 6
month_to_int["vi"] = 6
month_to_int["jul"] = 7
month_to_int["julij"] = 7
month_to_int["julijem"] = 7
month_to_int["julija"] = 7
month_to_int["vii"] = 7
month_to_int["avg"] = 8
month_to_int["avgust"] = 8
month_to_int["avgustom"] = 8
month_to_int["avgusta"] = 8
month_to_int["viii"] = 8
month_to_int["sep"] = 9
month_to_int["sept"] = 9
month_to_int["september"] = 9
month_to_int["septembrom"] = 9
month_to_int["septembra"] = 9
month_to_int["ix"] = 9
month_to_int["okt"] = 10
month_to_int["oktober"] = 10
month_to_int["oktobrom"] = 10
month_to_int["oktobra"] = 10
month_to_int["x"] = 10
month_to_int["nov"] = 11
month_to_int["november"] = 11
month_to_int["novembrom"] = 11
month_to_int["novembra"] = 11
month_to_int["xi"] = 11
month_to_int["dec"] = 12
month_to_int["december"] = 12
month_to_int["decembrom"] = 12
month_to_int["decembra"] = 12
month_to_int["xii"] = 12
modifier_to_int = {
'pred' : Date.MOD_BEFORE,
@@ -136,31 +63,18 @@ class DateParserSL(DateParser):
'cca.' : Date.MOD_ABOUT,
'cca' : Date.MOD_ABOUT,
'circa' : Date.MOD_ABOUT,
'ca.' : Date.MOD_ABOUT,
}
calendar_to_int = {
'gregorijanski' : Date.CAL_GREGORIAN,
'greg.' : Date.CAL_GREGORIAN,
'julijanski' : Date.CAL_JULIAN,
'jul.' : Date.CAL_JULIAN,
'hebrejski' : Date.CAL_HEBREW,
'hebr.' : Date.CAL_HEBREW,
'islamski' : Date.CAL_ISLAMIC,
'isl.' : Date.CAL_ISLAMIC,
'francoski republikanski': Date.CAL_FRENCH,
'franc.' : Date.CAL_FRENCH,
'perzijski' : Date.CAL_PERSIAN,
'perz. ' : Date.CAL_PERSIAN,
'švedski' : Date.CAL_SWEDISH,
'šved.' : Date.CAL_SWEDISH,
'ca.' : Date.MOD_ABOUT,
'približno' : Date.MOD_ABOUT,
'pribl.' : Date.MOD_ABOUT,
}
quality_to_int = {
'približno' : Date.QUAL_ESTIMATED,
'pribl.' : Date.QUAL_ESTIMATED,
'izračunano' : Date.QUAL_CALCULATED,
'izrač.' : Date.QUAL_CALCULATED,
'ocenjeno' : Date.QUAL_ESTIMATED,
'oc.' : Date.QUAL_ESTIMATED,
'po oceni' : Date.QUAL_ESTIMATED,
'izračunano' : Date.QUAL_CALCULATED,
'izrač.' : Date.QUAL_CALCULATED,
'po izračunu': Date.QUAL_CALCULATED,
}
bce = ["pred našim štetjem", "pred Kristusom",
@@ -170,6 +84,7 @@ class DateParserSL(DateParser):
"""
compiles regular expression strings for matching dates
"""
DateParser.init_strings(self)
# match 'Day. MONTH year.' format with or without dots
self._text2 = re.compile('(\d+)?\.?\s*?%s\.?\s*((\d+)(/\d+)?)?\s*\.?$'
@@ -194,116 +109,11 @@ class DateDisplaySL(DateDisplay):
"""
Slovenian language date display class.
"""
long_months = ( "", "januarja", "februarja", "marca","aprila",
"maja", "junija", "julija", "avgusta", "septembra",
"oktobra", "novembra", "decembra"
)
short_months = ( "", "jan", "feb", "mar", "apr", "maj", "jun",
"jul", "avg", "sep", "okt", "nov", "dec"
)
calendar = (
"", "julijanski", "hebrejski",
"francoski republikanski", "perzijski", "islamski",
"švedski"
)
# TODO fix BUG 7064: non-Gregorian calendars wrongly use BCE notation for negative dates
# not refactoring _bce_str into base class because it'll be gone under #7064
_bce_str = "%s pr.Kr."
_mod_str = ("", "pred ", "po ", "okrog ", "", "", "")
_qual_str = ("", "približno ", "izračunano ")
_bce_str = "%s p.n.š."
formats = (
"ISO (leto-mm-dd)",
"številčno",
"dan. mes. leto",
"dan. mesec leto"
)
# this definition must agree with its "_display_gregorian" method
def _display_gregorian(self, date_val):
"""
display gregorian calendar date in different format
"""
# this must agree with its locale-specific "formats" definition
year = self._slash_year(date_val[2], date_val[3])
if self.format == 0:
return self.display_iso(date_val)
elif self.format == 1:
# day. month_number. year
if date_val[3]:
return self.display_iso(date_val)
else:
if date_val[0] == 0 and 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(date_val[2]))
value = value.replace('-', '. ')
elif self.format == 2:
# day. month_abbreviation. year
if date_val[0] == 0:
if date_val[1] == 0:
value = year
else:
value = "%s. %s" % (self.short_months[date_val[1]], year)
else:
value = "%d. %s. %s" % (date_val[0],
self.short_months[date_val[1]], year)
else:
# day. month_name year
if date_val[0] == 0:
if date_val[1] == 0:
value = "%s." % year
else:
value = "%s %s" % (self.long_months[date_val[1]], year)
else:
value = "%d. %s %s" % (
date_val[0],self.long_months[date_val[1]], year)
if date_val[2] < 0:
return self._bce_str % value
else:
return value
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()
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:
d_1 = self.display_cal[cal](start)
d_2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%sod %s do %s%s" % (qual_str, d_1, 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)
date_string = "%smed %s in %s%s" % (qual_str, d_1, d_2, scal)
date_string = date_string.replace("a ","em ") #to correct declination
date_string = date_string.replace("lem ","lom ")
date_string = date_string.replace("rem ","rom ")
date_string = date_string.replace("tem ","tom ")
return date_string
else:
text = self.display_cal[date.get_calendar()](start)
scal = self.format_extras(cal, newyear)
date_string = "%s%s%s%s" % (qual_str, self._mod_str[mod], text, scal)
return date_string
display = DateDisplay.display_formatted
#-------------------------------------------------------------------------
#

@@ -25,7 +25,7 @@
"""
Serbian-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Python modules

@@ -22,7 +22,7 @@
"""
Swedish-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
# Python modules

@@ -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
@@ -29,7 +29,6 @@ Ukrainian-specific classes for parsing and displaying dates.
# Python modules
#
#-------------------------------------------------------------------------
from __future__ import unicode_literals
import re
#-------------------------------------------------------------------------
@@ -42,7 +41,6 @@ from ..lib.date import Date
from ._dateparser import DateParser
from ._datedisplay import DateDisplay
from ._datehandler import register_datehandler
from . import _grampslocale
#-------------------------------------------------------------------------
#
@@ -51,53 +49,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 +71,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 +78,7 @@ class DateParserUK(DateParser):
'орієнтовно' : Date.QUAL_ESTIMATED,
'приблизно' : Date.QUAL_ESTIMATED,
'прибл.' : Date.QUAL_ESTIMATED,
'підраховано' : Date.QUAL_CALCULATED,
'підрах.' : Date.QUAL_CALCULATED,
'розраховано' : Date.QUAL_CALCULATED,
@@ -213,6 +86,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 +99,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 = ['по', 'до?!\sн\.']
_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 +128,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)
#-------------------------------------------------------------------------
#

@@ -1,250 +0,0 @@
# -*- coding: utf-8 -*-
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2004-2006 Donald N. Allingham
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
#-------------------------------------------------------------------------
#
# Python modules
#
#-------------------------------------------------------------------------
"""
Chinese-specific classes for parsing and displaying dates.
"""
from __future__ import unicode_literals
import re
#-------------------------------------------------------------------------
#
# GRAMPS modules
#
#-------------------------------------------------------------------------
from ..lib.date import Date
from ._dateparser import DateParser
from ._datedisplay import DateDisplay
from ._datehandler import register_datehandler
#-------------------------------------------------------------------------
#
# Chinese parser
#
#-------------------------------------------------------------------------
class DateParserZH(DateParser):
"""
Convert a text string into a Date object. If the date cannot be
converted, the text string is assigned.
"""
# translate english strings into chinese
modifier_to_int = {
'before' : Date.MOD_BEFORE, 'bef' : Date.MOD_BEFORE,
'bef.' : Date.MOD_BEFORE, 'after' : Date.MOD_AFTER,
'aft' : Date.MOD_AFTER, 'aft.' : Date.MOD_AFTER,
'about' : Date.MOD_ABOUT, 'abt.' : Date.MOD_ABOUT,
'abt' : Date.MOD_ABOUT, 'circa' : Date.MOD_ABOUT,
'c.' : Date.MOD_ABOUT, 'around' : Date.MOD_ABOUT,
}
month_to_int = DateParser.month_to_int
month_to_int[""] = 1
month_to_int[""] = 1
month_to_int["zhēngyuè"] = 1
month_to_int[""] = 2
month_to_int["èryuè"] = 2
month_to_int[""] = 3
month_to_int["sānyuè"] = 3
month_to_int[""] = 4
month_to_int["sìyuè"] = 4
month_to_int[""] = 5
month_to_int["wǔyuè"] = 5
month_to_int[""] = 6
month_to_int["liùyuè"] = 6
month_to_int[""] = 7
month_to_int["qīyuè"] = 7
month_to_int[""] = 8
month_to_int["bāyuè"] = 8
month_to_int[""] = 9
month_to_int["jiǔyuè"] = 9
month_to_int[""] = 10
month_to_int["shíyuè"] = 10
month_to_int["十一"] = 11
month_to_int["shíyīyuè"] = 11
month_to_int["十二"] = 12
month_to_int["shí'èryuè"] = 12
month_to_int["假閏"] = 13
month_to_int["jiǎ rùn yùe"] = 13
# translate english strings into chinese
calendar_to_int = {
'gregorian' : Date.CAL_GREGORIAN,
'g' : Date.CAL_GREGORIAN,
'julian' : Date.CAL_JULIAN,
'j' : Date.CAL_JULIAN,
'hebrew' : Date.CAL_HEBREW,
'h' : Date.CAL_HEBREW,
'islamic' : Date.CAL_ISLAMIC,
'i' : Date.CAL_ISLAMIC,
'french' : Date.CAL_FRENCH,
'french republican': Date.CAL_FRENCH,
'f' : Date.CAL_FRENCH,
'persian' : Date.CAL_PERSIAN,
'p' : Date.CAL_PERSIAN,
'swedish' : Date.CAL_SWEDISH,
's' : Date.CAL_SWEDISH,
}
# translate english strings into chinese
quality_to_int = {
'estimated' : Date.QUAL_ESTIMATED,
'est.' : Date.QUAL_ESTIMATED,
'est' : Date.QUAL_ESTIMATED,
'calc.' : Date.QUAL_CALCULATED,
'calc' : Date.QUAL_CALCULATED,
'calculated' : Date.QUAL_CALCULATED,
}
# translate english strings into chinese
bce = ["before calendar", "negative year"] + DateParser.bce
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
invariant expresions don't need to be repeteadly coded. All differences
can be coded after DateParser.init_strings(self) call, that way they
override stuff from this method. See DateParserRU() as an example.
"""
DateParser.init_strings(self)
# day: 日 ; month : 月 ; year : 年
# See DateParser class; translate english strings (from/to, between/and) into chinese
# do not translate <start> and <stop>
self._span = re.compile("(from)\s+(?P<start>.+)\s+to\s+(?P<stop>.+)",
re.IGNORECASE)
self._range = re.compile("(bet|bet.|between)\s+(?P<start>.+)\s+and\s+(?P<stop>.+)",
re.IGNORECASE)
#def _parse_lunisolar(self, date_val=text):
#text = text.strip() # otherwise spaces can make it a bad date
#date = Date(self._qual_str, self._mod_str, self._cal_str, text, self._ny_str)
#return unicode(text)
#-------------------------------------------------------------------------
#
# Chinese display
#
#-------------------------------------------------------------------------
class DateDisplayZH(DateDisplay):
"""
Chinese language date display class.
"""
# translate english strings into chinese
long_months = ( "", "January", "February", "March", "April", "May",
"June", "July", "August", "September", "October",
"November", "December" )
short_months = ( "", "Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" )
calendar = (
"", "Julian", "Hebrew", "French Republican",
"Persian", "Islamic", "Swedish"
)
_mod_str = ("", "before ", "after ", "around ", "", "", "")
_qual_str = ("", "estimated ", "calculated ", "")
_bce_str = "%s B.C.E."
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()
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:
date1 = self.display_cal[cal](start)
date2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
# translate english strings into chinese
return "%s%s %s %s %s%s" % (qual_str, 'from', date1, 'to',
date2, scal)
elif mod == Date.MOD_RANGE:
date1 = self.display_cal[cal](start)
date2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
# translate english strings into chinese
return "%s%s %s %s %s%s" % (qual_str, 'between', date1, 'and',
date2, 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)
#def _display_chinese(self, date_val):
#self._tformat = '%Y年%m月%d日'
#year = self._slash_year(date_val[2], date_val[3])
#if date_val[3]:
#return self.display_iso(date_val)
#else:
#if date_val[0] == date_val[1] == 0:
#value = u'%Y年' % date_val[2]
#else:
#value = self._tformat.replace('%m月', str(self.lunisolar[date_val[1]]))
#value = u'%m月' % date_val[1]
#value = u'%d日' % date_val[0]
#value = u'%Y年' % date_val[2]
#-------------------------------------------------------------------------
#
# Register classes
#
#-------------------------------------------------------------------------
register_datehandler(('zh_CN', 'zh_TW', 'zh_SG', 'zh_HK', 'zh', 'chinese', 'Chinese'),
DateParserZH, DateDisplayZH)

@@ -0,0 +1,182 @@
# -*- coding: utf-8 -*-
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2004-2006 Donald N. Allingham
# Copyright (C) 2014-2015 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
Simplified-Chinese-specific classes for parsing and displaying dates.
"""
#-------------------------------------------------------------------------
#
# Python modules
#
#-------------------------------------------------------------------------
import re
#-------------------------------------------------------------------------
#
# GRAMPS modules
#
#-------------------------------------------------------------------------
from ..lib.date import Date
from ._dateparser import DateParser
from ._datedisplay import DateDisplay
from ._datehandler import register_datehandler
#-------------------------------------------------------------------------
#
# Simplified-Chinese parser
#
#-------------------------------------------------------------------------
class DateParserZH_CN(DateParser):
"""
Convert a text string into a Date object. If the date cannot be
converted, the text string is assigned.
"""
# modifiers before the date
modifier_to_int = {
'以前' : Date.MOD_BEFORE,
'以后' : Date.MOD_AFTER,
'大约' : Date.MOD_ABOUT,
}
month_to_int = DateParser.month_to_int
month_to_int[""] = 1
month_to_int[""] = 1
month_to_int["zhēngyuè"] = 1
month_to_int[""] = 2
month_to_int["èryuè"] = 2
month_to_int[""] = 3
month_to_int["sānyuè"] = 3
month_to_int[""] = 4
month_to_int["sìyuè"] = 4
month_to_int[""] = 5
month_to_int["wǔyuè"] = 5
month_to_int[""] = 6
month_to_int["liùyuè"] = 6
month_to_int[""] = 7
month_to_int["qīyuè"] = 7
month_to_int[""] = 8
month_to_int["bāyuè"] = 8
month_to_int[""] = 9
month_to_int["jiǔyuè"] = 9
month_to_int[""] = 10
month_to_int["shíyuè"] = 10
month_to_int["十一"] = 11
month_to_int["shíyīyuè"] = 11
month_to_int["十二"] = 12
month_to_int["shí'èryuè"] = 12
month_to_int["假閏"] = 13
month_to_int["jiǎ rùn yùe"] = 13
calendar_to_int = {
'阳历' : Date.CAL_GREGORIAN,
'g' : Date.CAL_GREGORIAN,
'儒略历' : Date.CAL_JULIAN,
'j' : Date.CAL_JULIAN,
'希伯来历' : Date.CAL_HEBREW,
'h' : Date.CAL_HEBREW,
'伊斯兰历' : Date.CAL_ISLAMIC,
'i' : Date.CAL_ISLAMIC,
'法国共和历' : Date.CAL_FRENCH,
'f' : Date.CAL_FRENCH,
'伊郎历' : Date.CAL_PERSIAN,
'p' : Date.CAL_PERSIAN,
'瑞典历' : Date.CAL_SWEDISH,
's' : Date.CAL_SWEDISH,
}
quality_to_int = {
'据估计' : Date.QUAL_ESTIMATED,
'据计算' : Date.QUAL_CALCULATED,
}
# FIXME translate these English strings into simplified-Chinese ones
bce = ["before calendar", "negative year"] + DateParser.bce
def init_strings(self):
"""
This method compiles regular expression strings for matching dates.
"""
DateParser.init_strings(self)
_span_1 = ['']
_span_2 = ['']
_range_1 = ['介于']
_range_2 = ['']
self._span = re.compile("(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
self._numeric = re.compile("((\d+)年\s*)?((\d+)月\s*)?(\d+)?日?\s*$")
#-------------------------------------------------------------------------
#
# Simplified-Chinese display
#
#-------------------------------------------------------------------------
class DateDisplayZH_CN(DateDisplay):
"""
Simplified-Chinese language date display class.
"""
formats = (
"年年年年-月月-日日 (ISO)", "数字格式",
)
# this definition must agree with its "_display_calendar" method
# FIXME translate these English strings into simplified-Chinese ones
_bce_str = "%s B.C.E."
display = DateDisplay.display_formatted
def _display_calendar(self, date_val, long_months, short_months = None,
inflect=""):
# this must agree with its locale-specific "formats" definition
if short_months is None:
# Let the short formats work the same as long formats
short_months = long_months
if self.format == 0:
return self.display_iso(date_val)
# elif self.format == 1:
else:
# numerical
value = self.dd_dformat01(date_val)
if date_val[2] < 0:
# TODO fix BUG 7064: non-Gregorian calendars wrongly use BCE notation for negative dates
return self._bce_str % value
else:
return value
#-------------------------------------------------------------------------
#
# Register classes
#
#-------------------------------------------------------------------------
register_datehandler(('zh_CN', 'zh_SG', 'zh', 'chinese', 'Chinese'),
DateParserZH_CN, DateDisplayZH_CN)

@@ -0,0 +1,182 @@
# -*- coding: utf-8 -*-
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2004-2006 Donald N. Allingham
# Copyright (C) 2014-2015 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""
Traditional-Chinese-specific classes for parsing and displaying dates.
"""
#-------------------------------------------------------------------------
#
# Python modules
#
#-------------------------------------------------------------------------
import re
#-------------------------------------------------------------------------
#
# GRAMPS modules
#
#-------------------------------------------------------------------------
from ..lib.date import Date
from ._dateparser import DateParser
from ._datedisplay import DateDisplay
from ._datehandler import register_datehandler
#-------------------------------------------------------------------------
#
# Traditional-Chinese parser
#
#-------------------------------------------------------------------------
class DateParserZH_TW(DateParser):
"""
Convert a text string into a Date object. If the date cannot be
converted, the text string is assigned.
"""
# modifiers before the date
modifier_to_int = {
'以前' : Date.MOD_BEFORE,
'以後' : Date.MOD_AFTER,
'大約' : Date.MOD_ABOUT,
}
month_to_int = DateParser.month_to_int
month_to_int[""] = 1
month_to_int[""] = 1
month_to_int["zhēngyuè"] = 1
month_to_int[""] = 2
month_to_int["èryuè"] = 2
month_to_int[""] = 3
month_to_int["sānyuè"] = 3
month_to_int[""] = 4
month_to_int["sìyuè"] = 4
month_to_int[""] = 5
month_to_int["wǔyuè"] = 5
month_to_int[""] = 6
month_to_int["liùyuè"] = 6
month_to_int[""] = 7
month_to_int["qīyuè"] = 7
month_to_int[""] = 8
month_to_int["bāyuè"] = 8
month_to_int[""] = 9
month_to_int["jiǔyuè"] = 9
month_to_int[""] = 10
month_to_int["shíyuè"] = 10
month_to_int["十一"] = 11
month_to_int["shíyīyuè"] = 11
month_to_int["十二"] = 12
month_to_int["shí'èryuè"] = 12
month_to_int["假閏"] = 13
month_to_int["jiǎ rùn yùe"] = 13
calendar_to_int = {
'陽曆' : Date.CAL_GREGORIAN,
'g' : Date.CAL_GREGORIAN,
'儒略曆' : Date.CAL_JULIAN,
'j' : Date.CAL_JULIAN,
'希伯來歷' : Date.CAL_HEBREW,
'h' : Date.CAL_HEBREW,
'伊斯蘭曆' : Date.CAL_ISLAMIC,
'i' : Date.CAL_ISLAMIC,
'法國共和歷' : Date.CAL_FRENCH,
'f' : Date.CAL_FRENCH,
'伊郎歷' : Date.CAL_PERSIAN,
'p' : Date.CAL_PERSIAN,
'瑞典歷' : Date.CAL_SWEDISH,
's' : Date.CAL_SWEDISH,
}
quality_to_int = {
'據估計' : Date.QUAL_ESTIMATED,
'據計算' : Date.QUAL_CALCULATED,
}
# FIXME translate these English strings into traditional-Chinese ones
bce = ["before calendar", "negative year"] + DateParser.bce
def init_strings(self):
"""
This method compiles regular expression strings for matching dates.
"""
DateParser.init_strings(self)
_span_1 = ['']
_span_2 = ['']
_range_1 = ['介於']
_range_2 = ['']
self._span = re.compile("(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
self._numeric = re.compile("((\d+)年\s*)?((\d+)月\s*)?(\d+)?日?\s*$")
#-------------------------------------------------------------------------
#
# Traditional-Chinese display
#
#-------------------------------------------------------------------------
class DateDisplayZH_TW(DateDisplay):
"""
Traditional-Chinese language date display class.
"""
formats = (
"年年年年-月月-日日 (ISO)", "數字格式",
)
# this definition must agree with its "_display_calendar" method
# FIXME translate these English strings into traditional-Chinese ones
_bce_str = "%s B.C.E."
display = DateDisplay.display_formatted
def _display_calendar(self, date_val, long_months, short_months = None,
inflect=""):
# this must agree with its locale-specific "formats" definition
if short_months is None:
# Let the short formats work the same as long formats
short_months = long_months
if self.format == 0:
return self.display_iso(date_val)
# elif self.format == 1:
else:
# numerical
value = self.dd_dformat01(date_val)
if date_val[2] < 0:
# TODO fix BUG 7064: non-Gregorian calendars wrongly use BCE notation for negative dates
return self._bce_str % value
else:
return value
#-------------------------------------------------------------------------
#
# Register classes
#
#-------------------------------------------------------------------------
register_datehandler(('zh_TW', 'zh_HK'),
DateParserZH_TW, DateDisplayZH_TW)

@@ -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-2015 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
@@ -23,7 +25,6 @@
U.S English date display class. Should serve as the base class for all
localized tasks.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
@@ -65,7 +66,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 +84,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 _
@@ -159,44 +161,70 @@ class DateDisplay(object):
"from"
# first date in a span
# You only need to translate this string if you translate one of the
# inflect=_("...") with "from"
# If "from <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)
# else leave it untranslated
: _("from|{long_month} {year}"),
"to"
# second date in a span
# You only need to translate this string if you translate one of the
# inflect=_("...") with "to"
# If "to <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)
# else leave it untranslated
: _("to|{long_month} {year}"),
"between"
# first date in a range
# You only need to translate this string if you translate one of the
# inflect=_("...") with "between"
# If "between <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)
# else leave it untranslated
: _("between|{long_month} {year}"),
"and"
# second date in a range
# You only need to translate this string if you translate one of the
# inflect=_("...") with "and"
# If "and <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)
# else leave it untranslated
: _("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)
# else leave it untranslated
: _("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)
# else leave it untranslated
: _("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)
# else leave it untranslated
: _("about|{long_month} {year}"),
# TODO if no modifier, but with qual, might need to inflect in some lang.
"estimated"
# If "estimated <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)
# else leave it untranslated
: _("estimated|{long_month} {year}"),
"calculated"
# If "calculated <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)
# else leave it untranslated
: _("calculated|{long_month} {year}"),
}
self.FORMATS_short_month_year = {
@@ -205,28 +233,70 @@ class DateDisplay(object):
"from"
# first date in a span
# If "from <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)
# else leave it untranslated
: _("from|{short_month} {year}"),
"to"
# second date in a span
# If "to <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)
# else leave it untranslated
: _("to|{short_month} {year}"),
"between"
# first date in a range
# If "between <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)
# else leave it untranslated
: _("between|{short_month} {year}"),
"and"
# second date in a range
# If "and <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)
# else leave it untranslated
: _("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)
# else leave it untranslated
: _("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)
# else leave it untranslated
: _("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)
# else leave it untranslated
: _("about|{short_month} {year}"),
"estimated"
# If "estimated <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)
# else leave it untranslated
: _("estimated|{short_month} {year}"),
"calculated"
# If "calculated <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)
# else leave it untranslated
: _("calculated|{short_month} {year}"),
}
def set_format(self, format):
@@ -257,8 +327,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()
@@ -312,6 +383,56 @@ class DateDisplay(object):
else:
return value
def dd_span(self, date):
"""
Return a text string representing the span date
(it may be overridden if a locale-specific date displayer exists)
"""
cal = date.get_calendar()
qual_str = self._qual_str[date.get_quality()]
scal = self.format_extras(cal, date.get_new_year())
d1 = self.display_cal[cal](date.get_start_date(),
# If there is no special inflection for "from <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "from" in ENGLISH!!! ENGLISH!!!
inflect=self._("from-date|"))
d2 = self.display_cal[cal](date.get_stop_date(),
# If there is no special inflection for "to <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "to" in ENGLISH!!! ENGLISH!!!
inflect=self._("to-date|"))
return self._("{date_quality}from {date_start} to {date_stop}"
"{nonstd_calendar_and_ny}").format(
date_quality=qual_str,
date_start=d1,
date_stop=d2,
nonstd_calendar_and_ny=scal)
def dd_range(self, date):
"""
Return a text string representing the range date
(it may be overridden if a locale-specific date displayer exists)
"""
cal = date.get_calendar()
qual_str = self._qual_str[date.get_quality()]
scal = self.format_extras(cal, date.get_new_year())
d1 = self.display_cal[cal](date.get_start_date(),
# If there is no special inflection for "between <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "between" in ENGLISH!!! ENGLISH!!!
inflect=self._("between-date|"))
d2 = self.display_cal[cal](date.get_stop_date(),
# If there is no special inflection for "and <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "and" in ENGLISH!!! ENGLISH!!!
inflect=self._("and-date|"))
return self._("{date_quality}between {date_start} and {date_stop}"
"{nonstd_calendar_and_ny}").format(
date_quality=qual_str,
date_start=d1,
date_stop=d2,
nonstd_calendar_and_ny=scal)
def display_formatted(self, date):
"""
Return a text string representing the date, according to the format.
@@ -330,66 +451,59 @@ class DateDisplay(object):
elif start == Date.EMPTY:
return ""
elif mod == Date.MOD_SPAN:
d1 = self.display_cal[cal](start,
# If there is no special inflection for "from <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.
inflect=_("from-date|"))
d2 = self.display_cal[cal](date.get_stop_date(),
# If there is no special inflection for "to <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.
inflect=_("to-date|"))
scal = self.format_extras(cal, newyear)
return _("{date_quality}from {date_start} to {date_stop}"
"{nonstd_calendar_and_ny}").format(
date_quality=qual_str,
date_start=d1,
date_stop=d2,
nonstd_calendar_and_ny=scal)
return self.dd_span(date)
elif mod == Date.MOD_RANGE:
d1 = self.display_cal[cal](start,
# If there is no special inflection for "between <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.
inflect=_("between-date|"))
d2 = self.display_cal[cal](date.get_stop_date(),
# If there is no special inflection for "and <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.
inflect=_("and-date|"))
scal = self.format_extras(cal, newyear)
return _("{date_quality}between {date_start} and {date_stop}"
"{nonstd_calendar_and_ny}").format(
date_quality=qual_str,
date_start=d1,
date_stop=d2,
nonstd_calendar_and_ny=scal)
return self.dd_range(date)
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|")
elif qual == Date.QUAL_ESTIMATED:
# If there is no special inflection for "estimated <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "estimated" in ENGLISH!!! ENGLISH!!!
date_type = _("estimated-date|")
elif qual == Date.QUAL_CALCULATED:
# If there is no special inflection for "calculated <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "calculated" in ENGLISH!!! ENGLISH!!!
date_type = _("calculated-date|")
else:
date_type = ""
# TODO -- do "estimated" and "calculated" need their own "if"?
# i.e., what happens if a date is both "modified" and "qualified"?
# it won't matter if the month gets the same lexeme type, but
# what should be done if the types differ? there can only be one
# lexeme type for any month so which one should be last? so we
# will wait and see if any language ever requires such fine tuning
# as maybe it will be as simple as putting the "elif" choices for
# "estimated" and "calculated" before the others, or something
text = self.display_cal[cal](start, inflect=date_type)
modifier = self._mod_str[mod]
# some languages have a modifier after the date (e.g. Finnish)
# (if so, they are specified in DateParser.modifier_after_to_int)
if modifier.startswith(' '):
text += modifier
modifier = ''
scal = self.format_extras(cal, newyear)
return _("{date_quality}{noncompound_modifier}{date}"
"{nonstd_calendar_and_ny}").format(
date_quality=qual_str,
noncompound_modifier=self._mod_str[mod],
date=text,
nonstd_calendar_and_ny=scal)
"{nonstd_calendar_and_ny}").format(
date_quality=qual_str,
noncompound_modifier=modifier,
date=text,
nonstd_calendar_and_ny=scal)
def _display_gregorian(self, date_val, **kwargs):
return self._display_calendar(date_val, self.long_months,
@@ -398,104 +512,186 @@ 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)
elif date_val[1] == 0: # month is zero but day is not (see 8477)
return self.display_iso(date_val)
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)
elif date_val[1] == 0: # month is zero but day is not (see 8477)
return self.display_iso(date_val)
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)
elif date_val[1] == 0: # month is zero but day is not (see 8477)
return self.display_iso(date_val)
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)
elif date_val[1] == 0: # month is zero but day is not (see 8477)
return self.display_iso(date_val)
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 +728,4 @@ class DateDisplayEn(DateDisplay):
display = DateDisplay.display_formatted
_locale = DateDisplay._locale # normally set in register_datehandler

@@ -21,7 +21,6 @@
"""
Class handling language-specific selection for date parser and displayer.
"""
from __future__ import unicode_literals
#-------------------------------------------------------------------------
#
@@ -45,7 +44,7 @@ log = logging.getLogger(".gen.datehandler")
#-------------------------------------------------------------------------
from ._dateparser import DateParser
from ._datedisplay import DateDisplay, DateDisplayEn
from ..constfunc import win, cuni
from ..constfunc import win
from ..const import GRAMPS_LOCALE as glocale
from gramps.gen.utils.grampslocale import GrampsLocale
@@ -70,8 +69,8 @@ if LANG:
else:
LANG_SHORT = "C"
LANG = cuni(LANG)
LANG_SHORT = cuni(LANG_SHORT)
LANG = str(LANG)
LANG_SHORT = str(LANG_SHORT)
LANG_TO_PARSER = {
'C' : DateParser,
@@ -84,11 +83,6 @@ LANG_TO_DISPLAY = {
'en' : DateDisplayEn,
'en_GB' : DateDisplayEn,
'English_United States' : DateDisplayEn,
'zh_CN' : DateDisplay,
'zh_TW' : DateDisplay,
'zh_SG' : DateDisplay,
'zh_HK' : DateDisplay,
'ja_JP' : DateDisplay,
'ko_KR' : DateDisplay,
'nb_NO' : DateDisplay,
}

@@ -29,8 +29,6 @@ date parsing class. The default base class provides parsing for English.
# Python modules
#
#-------------------------------------------------------------------------
from __future__ import print_function, unicode_literals
import re
import calendar
@@ -352,6 +350,7 @@ class DateParser(object):
match.groups() == ('d', 'b', 'y'))
self.ymd = (match.groups() == ('y', 'm', 'd') or \
match.groups() == ('y', 'b', 'd'))
# note ('m','d','y') is valid -- in which case both will be False
else:
self.dmy = True
self.ymd = False
@@ -529,22 +528,38 @@ class DateParser(object):
match = regex2.match(text.lower())
if match:
groups = match.groups()
if groups[1] is None:
m = 0
else:
m = mmap[groups[1].lower()]
d = self._get_int(groups[0])
if groups[2] is None:
y = None
s = False
else:
if groups[4] is not None: # slash year digit
y = int(groups[3]) + 1 # fullyear + 1
s = True
if self.ymd:
if groups[3] is None:
m = 0
else:
y = int(groups[3])
m = mmap[groups[3].lower()]
d = self._get_int(groups[4])
if groups[0] is None:
y = None
s = False
else:
if groups[2] is not None: # slash year digit
y = int(groups[1]) + 1 # fullyear + 1
s = True
else: # regular, non-slash year
y = int(groups[1])
s = False
else:
if groups[1] is None:
m = 0
else:
m = mmap[groups[1].lower()]
d = self._get_int(groups[0])
if groups[2] is None:
y = None
s = False
else:
if groups[4] is not None: # slash year digit
y = int(groups[3]) + 1 # fullyear + 1
s = True
else: # regular, non-slash year
y = int(groups[3])
s = False
value = (d, m, y, s)
if check and not check((d, m, y)):
value = Date.EMPTY
@@ -616,12 +631,18 @@ class DateParser(object):
match = self._numeric.match(text)
if match:
groups = match.groups()
if groups == (None, None, None, None, None):
return Date.EMPTY
if self.ymd:
# '1789' and ymd: incomplete date
if groups[1] is None:
y = self._get_int(groups[4])
m = 0
d = 0
elif groups[3] is None:
y = self._get_int(groups[1])
m = self._get_int(groups[4])
d = 0
else:
y = self._get_int(groups[1])
m = self._get_int(groups[3])
@@ -629,8 +650,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])

@@ -21,8 +21,22 @@
"""
Date strings to translate per each language for display and parsing.
__main__
--------
Run this code with the appropriate ``LANG`` and ``LC_DATE`` set for your target
language, in order to generate the .po snippets initialized with the strings
from your locale (from the deprecated data provided in _grampslocale).
E.g., for French::
LANG=fr_FR.utf8 LC_ALL=fr_FR.utf8 GRAMPS_RESOURCES=$PWD python -m gramps.gen.datehandler._datestrings
Then merge the output into your language's .po file, and further modify the
strings as needed. Then remove the strings from your language's
:class:`DateParserXX` and :class:`DateHandlerXX` classes.
"""
from __future__ import print_function, unicode_literals
#-------------------------------------------------------------------------
#
@@ -206,8 +220,14 @@ class DateStrings(object):
)
self.modifiers = ("",
# TRANSLATORS: if the modifier is after the date
# put the space ahead of the word instead of after it
_("date modifier|before "),
# TRANSLATORS: if the modifier is after the date
# put the space ahead of the word instead of after it
_("date modifier|after "),
# TRANSLATORS: if the modifier is after the date
# put the space ahead of the word instead of after it
_("date modifier|about "),
"", "", "")
@@ -228,23 +248,6 @@ class DateStrings(object):
_("Saturday"),
)
__doc__ += """
__main__
--------
Run this code with the appropriate ``LANG`` and ``LC_DATE`` set for your target
language, in order to generate the .po snippets initialized with the strings
from your locale (from the deprecated data provided in _grampslocale).
E.g., for French::
LANG=fr_FR.utf8 LC_ALL=fr_FR.utf8 GRAMPS_RESOURCES=$PWD python -m gramps.gen.datehandler._datestrings
Then merge the output into your language's .po file, and further modify the
strings as needed. Then remove the strings from your language's
:class:`DateParserXX` and :class:`DateHandlerXX` classes.
"""
if __name__ == '__main__':
import sys
from ..utils.grampslocale import GrampsLocale

@@ -21,9 +21,6 @@
#
import locale
import sys
from ..constfunc import mac, win, conv_to_unicode
from gramps.gen.const import GRAMPS_LOCALE as glocale
"""
@@ -36,11 +33,6 @@ strftime.
Since these routines return values encoded into selected character
set, we have to convert to unicode.
"""
if sys.version_info[0] < 3:
to_uni = conv_to_unicode
else:
#locale returns unicode in python 3
to_uni = lambda x, y: x
codeset = glocale.encoding
try:
@@ -48,34 +40,34 @@ try:
# here only for the upgrade tool, see _datestrings.py __main__
_deprecated_long_months = (
"",
to_uni(locale.nl_langinfo(locale.MON_1), codeset),
to_uni(locale.nl_langinfo(locale.MON_2), codeset),
to_uni(locale.nl_langinfo(locale.MON_3), codeset),
to_uni(locale.nl_langinfo(locale.MON_4), codeset),
to_uni(locale.nl_langinfo(locale.MON_5), codeset),
to_uni(locale.nl_langinfo(locale.MON_6), codeset),
to_uni(locale.nl_langinfo(locale.MON_7), codeset),
to_uni(locale.nl_langinfo(locale.MON_8), codeset),
to_uni(locale.nl_langinfo(locale.MON_9), codeset),
to_uni(locale.nl_langinfo(locale.MON_10), codeset),
to_uni(locale.nl_langinfo(locale.MON_11), codeset),
to_uni(locale.nl_langinfo(locale.MON_12), codeset),
locale.nl_langinfo(locale.MON_1),
locale.nl_langinfo(locale.MON_2),
locale.nl_langinfo(locale.MON_3),
locale.nl_langinfo(locale.MON_4),
locale.nl_langinfo(locale.MON_5),
locale.nl_langinfo(locale.MON_6),
locale.nl_langinfo(locale.MON_7),
locale.nl_langinfo(locale.MON_8),
locale.nl_langinfo(locale.MON_9),
locale.nl_langinfo(locale.MON_10),
locale.nl_langinfo(locale.MON_11),
locale.nl_langinfo(locale.MON_12),
)
_deprecated_short_months = (
"",
to_uni(locale.nl_langinfo(locale.ABMON_1), codeset),
to_uni(locale.nl_langinfo(locale.ABMON_2), codeset),
to_uni(locale.nl_langinfo(locale.ABMON_3), codeset),
to_uni(locale.nl_langinfo(locale.ABMON_4), codeset),
to_uni(locale.nl_langinfo(locale.ABMON_5), codeset),
to_uni(locale.nl_langinfo(locale.ABMON_6), codeset),
to_uni(locale.nl_langinfo(locale.ABMON_7), codeset),
to_uni(locale.nl_langinfo(locale.ABMON_8), codeset),
to_uni(locale.nl_langinfo(locale.ABMON_9), codeset),
to_uni(locale.nl_langinfo(locale.ABMON_10), codeset),
to_uni(locale.nl_langinfo(locale.ABMON_11), codeset),
to_uni(locale.nl_langinfo(locale.ABMON_12), codeset),
locale.nl_langinfo(locale.ABMON_1),
locale.nl_langinfo(locale.ABMON_2),
locale.nl_langinfo(locale.ABMON_3),
locale.nl_langinfo(locale.ABMON_4),
locale.nl_langinfo(locale.ABMON_5),
locale.nl_langinfo(locale.ABMON_6),
locale.nl_langinfo(locale.ABMON_7),
locale.nl_langinfo(locale.ABMON_8),
locale.nl_langinfo(locale.ABMON_9),
locale.nl_langinfo(locale.ABMON_10),
locale.nl_langinfo(locale.ABMON_11),
locale.nl_langinfo(locale.ABMON_12),
)
# Gramps day number: Sunday => 1, Monday => 2, etc
@@ -86,24 +78,24 @@ try:
# see http://docs.python.org/library/locale.html
_deprecated_long_days = (
"",
to_uni(locale.nl_langinfo(locale.DAY_1), codeset), # Sunday
to_uni(locale.nl_langinfo(locale.DAY_2), codeset), # Monday
to_uni(locale.nl_langinfo(locale.DAY_3), codeset), # Tuesday
to_uni(locale.nl_langinfo(locale.DAY_4), codeset), # Wednesday
to_uni(locale.nl_langinfo(locale.DAY_5), codeset), # Thursday
to_uni(locale.nl_langinfo(locale.DAY_6), codeset), # Friday
to_uni(locale.nl_langinfo(locale.DAY_7), codeset), # Saturday
locale.nl_langinfo(locale.DAY_1), # Sunday
locale.nl_langinfo(locale.DAY_2), # Monday
locale.nl_langinfo(locale.DAY_3), # Tuesday
locale.nl_langinfo(locale.DAY_4), # Wednesday
locale.nl_langinfo(locale.DAY_5), # Thursday
locale.nl_langinfo(locale.DAY_6), # Friday
locale.nl_langinfo(locale.DAY_7), # Saturday
)
_deprecated_short_days = (
"",
to_uni(locale.nl_langinfo(locale.ABDAY_1), codeset), # Sunday
to_uni(locale.nl_langinfo(locale.ABDAY_2), codeset), # Monday
to_uni(locale.nl_langinfo(locale.ABDAY_3), codeset), # Tuesday
to_uni(locale.nl_langinfo(locale.ABDAY_4), codeset), # Wednesday
to_uni(locale.nl_langinfo(locale.ABDAY_5), codeset), # Thursday
to_uni(locale.nl_langinfo(locale.ABDAY_6), codeset), # Friday
to_uni(locale.nl_langinfo(locale.ABDAY_7), codeset), # Saturday
locale.nl_langinfo(locale.ABDAY_1), # Sunday
locale.nl_langinfo(locale.ABDAY_2), # Monday
locale.nl_langinfo(locale.ABDAY_3), # Tuesday
locale.nl_langinfo(locale.ABDAY_4), # Wednesday
locale.nl_langinfo(locale.ABDAY_5), # Thursday
locale.nl_langinfo(locale.ABDAY_6), # Friday
locale.nl_langinfo(locale.ABDAY_7), # Saturday
)
tformat = locale.nl_langinfo(locale.D_FMT).replace('%y','%Y')
@@ -116,34 +108,34 @@ except:
_deprecated_long_months = (
"",
to_uni(time.strftime('%B',(1,1,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,2,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,3,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,4,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,5,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,6,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,7,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,8,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,9,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,10,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,11,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,12,1,1,1,1,1,1,1)), codeset),
time.strftime('%B',(1,1,1,1,1,1,1,1,1)),
time.strftime('%B',(1,2,1,1,1,1,1,1,1)),
time.strftime('%B',(1,3,1,1,1,1,1,1,1)),
time.strftime('%B',(1,4,1,1,1,1,1,1,1)),
time.strftime('%B',(1,5,1,1,1,1,1,1,1)),
time.strftime('%B',(1,6,1,1,1,1,1,1,1)),
time.strftime('%B',(1,7,1,1,1,1,1,1,1)),
time.strftime('%B',(1,8,1,1,1,1,1,1,1)),
time.strftime('%B',(1,9,1,1,1,1,1,1,1)),
time.strftime('%B',(1,10,1,1,1,1,1,1,1)),
time.strftime('%B',(1,11,1,1,1,1,1,1,1)),
time.strftime('%B',(1,12,1,1,1,1,1,1,1)),
)
_deprecated_short_months = (
"",
to_uni(time.strftime('%b',(1,1,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,2,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,3,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,4,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,5,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,6,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,7,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,8,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,9,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,10,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,11,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,12,1,1,1,1,1,1,1)), codeset),
time.strftime('%b',(1,1,1,1,1,1,1,1,1)),
time.strftime('%b',(1,2,1,1,1,1,1,1,1)),
time.strftime('%b',(1,3,1,1,1,1,1,1,1)),
time.strftime('%b',(1,4,1,1,1,1,1,1,1)),
time.strftime('%b',(1,5,1,1,1,1,1,1,1)),
time.strftime('%b',(1,6,1,1,1,1,1,1,1)),
time.strftime('%b',(1,7,1,1,1,1,1,1,1)),
time.strftime('%b',(1,8,1,1,1,1,1,1,1)),
time.strftime('%b',(1,9,1,1,1,1,1,1,1)),
time.strftime('%b',(1,10,1,1,1,1,1,1,1)),
time.strftime('%b',(1,11,1,1,1,1,1,1,1)),
time.strftime('%b',(1,12,1,1,1,1,1,1,1)),
)
# Gramps day number: Sunday => 1, Monday => 2, etc
@@ -157,24 +149,24 @@ except:
# just a dummy.
_deprecated_long_days = (
"",
to_uni(time.strftime('%A',(1,1,1,1,1,1,6,1,1)), codeset), # Sunday
to_uni(time.strftime('%A',(1,1,1,1,1,1,0,1,1)), codeset), # Monday
to_uni(time.strftime('%A',(1,1,1,1,1,1,1,1,1)), codeset), # Tuesday
to_uni(time.strftime('%A',(1,1,1,1,1,1,2,1,1)), codeset), # Wednesday
to_uni(time.strftime('%A',(1,1,1,1,1,1,3,1,1)), codeset), # Thursday
to_uni(time.strftime('%A',(1,1,1,1,1,1,4,1,1)), codeset), # Friday
to_uni(time.strftime('%A',(1,1,1,1,1,1,5,1,1)), codeset), # Saturday
time.strftime('%A',(1,1,1,1,1,1,6,1,1)), # Sunday
time.strftime('%A',(1,1,1,1,1,1,0,1,1)), # Monday
time.strftime('%A',(1,1,1,1,1,1,1,1,1)), # Tuesday
time.strftime('%A',(1,1,1,1,1,1,2,1,1)), # Wednesday
time.strftime('%A',(1,1,1,1,1,1,3,1,1)), # Thursday
time.strftime('%A',(1,1,1,1,1,1,4,1,1)), # Friday
time.strftime('%A',(1,1,1,1,1,1,5,1,1)), # Saturday
)
_deprecated_short_days = (
"",
to_uni(time.strftime('%a',(1,1,1,1,1,1,6,1,1)), codeset), # Sunday
to_uni(time.strftime('%a',(1,1,1,1,1,1,0,1,1)), codeset), # Monday
to_uni(time.strftime('%a',(1,1,1,1,1,1,1,1,1)), codeset), # Tuesday
to_uni(time.strftime('%a',(1,1,1,1,1,1,2,1,1)), codeset), # Wednesday
to_uni(time.strftime('%a',(1,1,1,1,1,1,3,1,1)), codeset), # Thursday
to_uni(time.strftime('%a',(1,1,1,1,1,1,4,1,1)), codeset), # Friday
to_uni(time.strftime('%a',(1,1,1,1,1,1,5,1,1)), codeset), # Saturday
time.strftime('%a',(1,1,1,1,1,1,6,1,1)), # Sunday
time.strftime('%a',(1,1,1,1,1,1,0,1,1)), # Monday
time.strftime('%a',(1,1,1,1,1,1,1,1,1)), # Tuesday
time.strftime('%a',(1,1,1,1,1,1,2,1,1)), # Wednesday
time.strftime('%a',(1,1,1,1,1,1,3,1,1)), # Thursday
time.strftime('%a',(1,1,1,1,1,1,4,1,1)), # Friday
time.strftime('%a',(1,1,1,1,1,1,5,1,1)), # Saturday
)
# depending on the locale, the value returned for 20th Feb 2009 could be
@@ -194,6 +186,8 @@ 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.',
'25. 10. 2005.' : '%d. %m. %Y.',
'10.25.2005' : '%m.%d.%Y',
'2005.10.25' : '%Y.%m.%d',
}

@@ -23,7 +23,6 @@
Deeper testing of some DateParser internals.
"""
from __future__ import print_function, unicode_literals
import unittest
from ...utils.grampslocale import GrampsLocale

@@ -32,7 +32,6 @@ Based on the Check Localized Date Displayer and Parser tool.
# standard python modules
#
#-------------------------------------------------------------------------
from __future__ import unicode_literals, division
import unittest
import sys
@@ -57,7 +56,7 @@ from .. import displayer as _dd
#
#-------------------------------------------------------------------------
class DateHandlerTest(unittest.TestCase):
def base_test(self, test_date):
def base_case(self, test_date):
datestr = _dd.display(test_date)
new_date = _dp.parse(datestr)
@@ -86,7 +85,7 @@ class DateHandlerTest(unittest.TestCase):
dates.append(d)
for test_date in dates:
self.base_test(test_date)
self.base_case(test_date)
def test_span(self):
@@ -125,7 +124,7 @@ class DateHandlerTest(unittest.TestCase):
dates.append(d)
for test_date in dates:
self.base_test(test_date)
self.base_case(test_date)
def test_textual(self):
calendar = Date.CAL_GREGORIAN
@@ -135,7 +134,7 @@ class DateHandlerTest(unittest.TestCase):
test_date = Date()
test_date.set(quality, modifier, calendar, Date.EMPTY,
"This is a textual date")
self.base_test(test_date)
self.base_case(test_date)
def test_too_few_arguments(self):
dateval = (4, 7, 1789, False)

@@ -23,7 +23,6 @@
Deeper testing of some DateParser internals.
"""
from __future__ import print_function, unicode_literals
import unittest
from ...utils.grampslocale import GrampsLocale

@@ -19,8 +19,6 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
from __future__ import print_function, unicode_literals
import unittest
from .. import _datestrings

@@ -53,11 +53,7 @@ db.
#
#-------------------------------------------------------------------------
import os
import sys
if sys.version_info[0] < 3:
import cPickle as pickle
else:
import pickle
import pickle
#------------------------------------------------------------------------
#

@@ -77,7 +77,7 @@ class DbReadBase(object):
Databases can implement certain features or not. The default is
None, unless otherwise explicitly stated.
"""
return self.__feature.get(feature, None) # can also be explitily None
return self.__feature.get(feature, None) # can also be explicitly None
def set_feature(self, feature, value):
"""
@@ -1149,8 +1149,8 @@ class DbReadBase(object):
"""
raise NotImplementedError
def set_prefixes(self, person, media, family, source, place, event,
repository, note):
def set_prefixes(self, person, media, family, source, citation,
place, event, repository, note):
"""
Set the prefixes for the gramps ids for all gramps objects
"""

@@ -27,7 +27,6 @@ BSDDBTxn class: Wrapper for BSDDB transaction-oriented methods
# BSDDBTxn
#
#-------------------------------------------------------------------------
from __future__ import print_function, with_statement
class BSDDBTxn(object):
"""
@@ -186,12 +185,7 @@ class BSDDBTxn(object):
# test code
if __name__ == "__main__":
print("1")
from ..config import config
import sys
if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3:
from bsddb3 import db, dbshelve
else:
from bsddb import db, dbshelve
from bsddb3 import db, dbshelve
print("2")
x = db.DBEnv()
print("3")

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