Compare commits
443 Commits
master
...
maintenanc
Author | SHA1 | Date | |
---|---|---|---|
|
1c241125d7 | ||
|
e81c82fcc0 | ||
|
7d91f4fae8 | ||
|
78a74cae5c | ||
|
5039ad10f0 | ||
|
926bb60650 | ||
|
314484cf84 | ||
|
ae0a039216 | ||
|
296e8ca562 | ||
|
4e6a06bfac | ||
|
5ff70a665e | ||
|
c0a0c1d302 | ||
|
e71115af1b | ||
|
5828dd3aa8 | ||
|
273a5f986f | ||
|
00032f0cad | ||
|
1ed6103a41 | ||
|
ea2c71d238 | ||
|
6605d868cb | ||
|
7a57c8584e | ||
|
46a509ee1d | ||
|
1aad1d6be0 | ||
|
104808cf8f | ||
|
8a34d98fb5 | ||
|
c42f714393 | ||
|
d8ba31cc29 | ||
|
f9bb9e5e73 | ||
|
ed0b50e9b8 | ||
|
19acd368c0 | ||
|
9de644bf1d | ||
|
bdd70dec1c | ||
|
2a26ca6c5c | ||
|
f675fc1114 | ||
|
143df8d42c | ||
|
d71a36b240 | ||
|
085d1ee095 | ||
|
cc2f803b86 | ||
|
9c34e17bd9 | ||
|
136bdd015a | ||
|
e0b56f65ef | ||
|
089d028e8f | ||
|
6e4ce84396 | ||
|
0930c0041f | ||
|
ef0492e0ff | ||
|
e1a71dcd34 | ||
|
6895594cdc | ||
|
45f82f1ec5 | ||
|
c26fcf6d56 | ||
|
2701d51b62 | ||
|
9683a9e9eb | ||
|
d03e9e6553 | ||
|
0f8b77b706 | ||
|
a2244c6ab4 | ||
|
2eccc6c4ce | ||
|
815596a88d | ||
|
98fdeaeb6b | ||
|
4d57633006 | ||
|
9c3450531b | ||
|
2a35887da7 | ||
|
b34e088fe7 | ||
|
189cc853b2 | ||
|
1d3d002490 | ||
|
eb34416727 | ||
|
52842f8200 | ||
|
646afece89 | ||
|
45adb70330 | ||
|
4ac02a4ca0 | ||
|
ffe417f43e | ||
|
dc50b14ed3 | ||
|
35f5426a33 | ||
|
8ff85415e8 | ||
|
be1980e39a | ||
|
93bd200ea0 | ||
|
906e46b0a5 | ||
|
51324b182f | ||
|
4b8d25083b | ||
|
7ef450515c | ||
|
cb5fb2ed27 | ||
|
b4eae781f8 | ||
|
c5c5889a42 | ||
|
fe2a36c580 | ||
|
e3538e8a8b | ||
|
475e78669b | ||
|
f022597545 | ||
|
672bffe620 | ||
|
70e453f031 | ||
|
8a4b9c7ee0 | ||
|
e86f796cf7 | ||
|
436487072a | ||
|
a2a68c64f7 | ||
|
c9d9925965 | ||
|
4b8ca4a824 | ||
|
57a367e8c4 | ||
|
9ff34f2934 | ||
|
88f5fbeb9e | ||
|
42cf24205b | ||
|
36c03a0a53 | ||
|
cf264e8d89 | ||
|
ab056c8ac5 | ||
|
cc1f5b734a | ||
|
ac21380b60 | ||
|
706437f57d | ||
|
ab0dfc8d68 | ||
|
4cb4d912fe | ||
|
315ddd6ffd | ||
|
60ff2584fb | ||
|
d2363249b9 | ||
|
b70adcb74a | ||
|
f63385ac4b | ||
|
d9cc3d3b0e | ||
|
ccbf763ac4 | ||
|
111c245297 | ||
|
359d277423 | ||
|
1a0784b154 | ||
|
b02e1fe467 | ||
|
8fe31528cf | ||
|
38b5b8ec54 | ||
|
8d57884b5b | ||
|
69e7501acc | ||
|
385c10a068 | ||
|
d99adb8bd4 | ||
|
74995c0994 | ||
|
14ccc01acb | ||
|
542450bf6d | ||
|
b381f2dd8b | ||
|
25f9ea64fc | ||
|
c1b65d8cbe | ||
|
89a5d3fcda | ||
|
38addcedb3 | ||
|
6c0fdb27d6 | ||
|
3e5a7fe970 | ||
|
cf88fef1e8 | ||
|
94f28daf03 | ||
|
bd8c08596b | ||
|
d43ff61913 | ||
|
307bed5e44 | ||
|
e7cf8fe70c | ||
|
c390a0f490 | ||
|
8cc86bd153 | ||
|
2cd23356b4 | ||
|
03579aa4a1 | ||
|
7f9686ba8d | ||
|
f827fff712 | ||
|
27648255c0 | ||
|
f0b022564b | ||
|
2727044bc7 | ||
|
04bc04896b | ||
|
44d8c31bc9 | ||
|
1c4e91e891 | ||
|
09caa90530 | ||
|
68a0a0d087 | ||
|
e5701e9641 | ||
|
e2e75559c2 | ||
|
c489c8ec34 | ||
|
8e11d1bd64 | ||
|
5c71a35aea | ||
|
a99196dde5 | ||
|
7c71e098f1 | ||
|
db04225e83 | ||
|
40686d50ef | ||
|
66b0d389c7 | ||
|
4ff5d6460e | ||
|
77c530f5ed | ||
|
db138e646c | ||
|
bef5ed6386 | ||
|
dadb588d83 | ||
|
55a20ab1e3 | ||
|
71e2077805 | ||
|
b151f17117 | ||
|
3b5e3cbe6e | ||
|
55c7becb68 | ||
|
643ffcb479 | ||
|
218ea80d2b | ||
|
2d27ada429 | ||
|
9cf8a940f9 | ||
|
80ace16550 | ||
|
4ffce0b915 | ||
|
a16bc2de9c | ||
|
ce9723eec8 | ||
|
24df17cc2f | ||
|
6b50f932db | ||
|
3781e75d60 | ||
|
4396a09081 | ||
|
3e19b099f8 | ||
|
254a605543 | ||
|
f16772c393 | ||
|
415a843be9 | ||
|
82646d0d67 | ||
|
db352c5c4c | ||
|
ac62a978e0 | ||
|
d0a83dd39c | ||
|
53b415c0d0 | ||
|
2f4767fd6f | ||
|
d230948c6a | ||
|
a8de78c452 | ||
|
0e3c3cdbdd | ||
|
bff873f174 | ||
|
417d379726 | ||
|
88115561cc | ||
|
563ffe22b4 | ||
|
3f70f716c4 | ||
|
25fbf57219 | ||
|
eebcd5c8a2 | ||
|
20917e4b09 | ||
|
a166ed9ca4 | ||
|
492a40b5b4 | ||
|
516d716b83 | ||
|
de8efc9d12 | ||
|
079abd1df3 | ||
|
42a56bf31b | ||
|
236261e2db | ||
|
7fa12faed2 | ||
|
032051c093 | ||
|
ad961132eb | ||
|
c248767c1d | ||
|
8497e8c4b2 | ||
|
05da780166 | ||
|
03ab81e2d1 | ||
|
205529f448 | ||
|
10c62800ef | ||
|
61625e2a9b | ||
|
b8b61521d8 | ||
|
a1402552e2 | ||
|
4722ce2e7f | ||
|
b86bbf44d1 | ||
|
49f53a1fe7 | ||
|
1c8cc6e33f | ||
|
040c9010d2 | ||
|
c9a19a5954 | ||
|
bda98e7b1e | ||
|
c035dd3df4 | ||
|
2de3ea43c3 | ||
|
939eb423a6 | ||
|
0fe8bd5e4a | ||
|
acb7f3cded | ||
|
d84109f435 | ||
|
e84bf70347 | ||
|
d6f7cfcd20 | ||
|
a9640f327f | ||
|
80be25adae | ||
|
1030d1627e | ||
|
d2ffb0484a | ||
|
7b6dede9ea | ||
|
e4061d605c | ||
|
4afc4933c2 | ||
|
14ed0c4d16 | ||
|
1a8c73212e | ||
|
18ef02d424 | ||
|
85b4c25d02 | ||
|
e0b44ff355 | ||
|
9a00d5533d | ||
|
d349f247ea | ||
|
f44e84f054 | ||
|
0a7b8fb6ee | ||
|
85914babdf | ||
|
448986875b | ||
|
b81f80bace | ||
|
12ed5deb24 | ||
|
e6d35b8cbd | ||
|
84055c01dc | ||
|
b475c47994 | ||
|
f9ebdaadc3 | ||
|
9478468977 | ||
|
01baffae32 | ||
|
4fd6b0f7c4 | ||
|
84318f6ee1 | ||
|
54fdf3ef8a | ||
|
9740e7fc0c | ||
|
b0b64b0b5c | ||
|
57ed1d7cb8 | ||
|
21e4d8e5ad | ||
|
3d249cfa01 | ||
|
9d858d7167 | ||
|
081b2a4ed2 | ||
|
49f7137577 | ||
|
8732b1e237 | ||
|
10f47d73ad | ||
|
778e87971f | ||
|
0e43df69fb | ||
|
7a98bc174c | ||
|
ba22fca9bc | ||
|
a1750394d7 | ||
|
7c763eb5f8 | ||
|
d1a81958a8 | ||
|
a7966a7a48 | ||
|
d4b8967036 | ||
|
597f1ee8c2 | ||
|
b8323d2132 | ||
|
b7a7bca282 | ||
|
447541e0b2 | ||
|
506d7e3160 | ||
|
4bbc0f74d4 | ||
|
8316e06853 | ||
|
1ac41d1287 | ||
|
4a64d306cc | ||
|
1c038db179 | ||
|
a868efdeb0 | ||
|
294e053212 | ||
|
457e7207c3 | ||
|
0701c0c0d0 | ||
|
433299beec | ||
|
3136b041a6 | ||
|
a2b31f8d55 | ||
|
4e9ea44ded | ||
|
353bb62523 | ||
|
ecb4c1d58e | ||
|
758bf61ae0 | ||
|
7c5234d333 | ||
|
8ca9a9cccf | ||
|
5e718ac0ca | ||
|
5a98e1a9b0 | ||
|
082b7c8940 | ||
|
c667cd5430 | ||
|
26560d0590 | ||
|
b62e0208c2 | ||
|
00ef7110bd | ||
|
607c23f546 | ||
|
e5e610d9b8 | ||
|
3c84e93b7a | ||
|
e196bf606f | ||
|
a79cc2996a | ||
|
3fba4f0ec0 | ||
|
b9a12c4ecf | ||
|
ed0ff156ee | ||
|
1fc35fd0cc | ||
|
1a8e08d80f | ||
|
7ec13cac24 | ||
|
63f4abfe47 | ||
|
ca65aa8b37 | ||
|
39beb81e59 | ||
|
c78a0958bc | ||
|
04b4489a34 | ||
|
9f05e33bc2 | ||
|
f867caf61e | ||
|
1ad6634888 | ||
|
9eacd472da | ||
|
7169784a4b | ||
|
6c965a0860 | ||
|
101d261bf5 | ||
|
0929f677ca | ||
|
08e1a88c27 | ||
|
66b051d3f0 | ||
|
42ce347ff5 | ||
|
78e5ed05fc | ||
|
27fdeb65d6 | ||
|
75470fd7ca | ||
|
4ffa3e8c49 | ||
|
82543486d0 | ||
|
9d419f3f5c | ||
|
c4bcf66e29 | ||
|
9cc216ed2e | ||
|
b67b060c8c | ||
|
a170243369 | ||
|
c8cf6377c6 | ||
|
74694b5eee | ||
|
76c8708a74 | ||
|
c1b7e8aa67 | ||
|
b584c0d450 | ||
|
2c672c4650 | ||
|
c72bac7012 | ||
|
fcab24ba20 | ||
|
6592a2e719 | ||
|
86bfff69a1 | ||
|
1537eed079 | ||
|
325cac8335 | ||
|
bf7d9c48fa | ||
|
2706bfb552 | ||
|
604e9ac9aa | ||
|
bcb9141273 | ||
|
df23a12132 | ||
|
166dace001 | ||
|
6f7f30f547 | ||
|
3b5eb5adf3 | ||
|
4141b7e34a | ||
|
fadb082afa | ||
|
c031eea046 | ||
|
5f722e4c6c | ||
|
a1085dac15 | ||
|
dc175ea1a1 | ||
|
1223a75e68 | ||
|
707edf3df0 | ||
|
076d514cd2 | ||
|
35c4236f27 | ||
|
baf368c049 | ||
|
ccd6c3143e | ||
|
c7ffa8d075 | ||
|
e8ba397f75 | ||
|
f21e23cd70 | ||
|
d16feb7265 | ||
|
6e25dd83f5 | ||
|
090721408b | ||
|
c9d12d4150 | ||
|
f4d6dbb64b | ||
|
ed284d44a5 | ||
|
7d849d39cf | ||
|
d220ea65f8 | ||
|
6df1e6bd32 | ||
|
d4df31abf3 | ||
|
bbefe30256 | ||
|
d0aa2c63fc | ||
|
7d98f08949 | ||
|
2c06392f57 | ||
|
8f1fca7fed | ||
|
85f425e8cf | ||
|
9d57c640c5 | ||
|
1a79077235 | ||
|
e3d524d18e | ||
|
9dec158e65 | ||
|
742f946970 | ||
|
87d92fc54f | ||
|
ec1a794648 | ||
|
fd3ca0348f | ||
|
d0d9e5b207 | ||
|
9d4e3a022b | ||
|
16a038d2be | ||
|
23f64a155b | ||
|
0e6b71eb6f | ||
|
8ceb80bc29 | ||
|
2578252d11 | ||
|
dd77bf74d5 | ||
|
26f028afb1 | ||
|
a68679766c | ||
|
582b6f7f80 | ||
|
9822b7d12e | ||
|
12ad7514f5 | ||
|
7909c352f1 | ||
|
28c1823062 | ||
|
26ca29b122 | ||
|
f7c4cddcc8 | ||
|
bfd7d804f2 | ||
|
79ed0c638b | ||
|
6a6e1cd73a | ||
|
098dc0a05c | ||
|
d8cd9b8d72 | ||
|
debedc57e9 | ||
|
3b2bb00706 | ||
|
7bbbafe377 | ||
|
0319dc7490 | ||
|
751b3d5a34 | ||
|
978c5055d8 | ||
|
76424b61f8 | ||
|
c2ee4b0ab9 | ||
|
20ca667b61 |
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -1,6 +1,7 @@
|
||||
include AUTHORS
|
||||
include COPYING
|
||||
include FAQ
|
||||
include Gramps.py
|
||||
include INSTALL
|
||||
include LICENSE
|
||||
include MANIFEST.in
|
||||
|
330
NEWS
330
NEWS
@ -1,3 +1,333 @@
|
||||
2015-05-01
|
||||
Version 4.1.3, "Thou shalt not count to five", a maintenance release.
|
||||
* Fix db upgrade failure
|
||||
* GtkDialog mapped without a transient parent
|
||||
* [Gedcom} SUBN and SUBM record handling
|
||||
* [Gedcom] Import/export round trip causes lost information
|
||||
* [Gedcom] Entering a witness to an event such as marriage might be ignored
|
||||
* [Gedcom] Gramps can't import estim. date period exported by itself
|
||||
* [Gedcom] 1/4 and 1/2 ANSEL characters not supported on importing ANSEL
|
||||
* [Gedcom] Importing file containing multibyte UTF-8 characters fails
|
||||
* [Gedcom] Import fails for ANSI file under python 3
|
||||
* [Gedcom] Failure importing ANSEL encoded gedcom file.
|
||||
* [Gedcom] Characters ignored on a Gedcom encoded ANSI (cp1252 West Europe, USA)
|
||||
* [Gedcom] NameError in importer
|
||||
* [Gedcom] Event address is lost on import, i.e. disconnected from event
|
||||
* Crash on geneweb export with python3
|
||||
* GuiColorOption missing avail-changed event handler
|
||||
* Bad generation of [timeline report] ODT files since 4.0.0
|
||||
* Fix bad handle in explanation note for unknown event
|
||||
* Fix spurious generation of empty 'Alternative Name' in place.merge()
|
||||
* Support creating directories in various scenarios
|
||||
* Attempting to add a bookmark causes an error
|
||||
* Long series of "unhandled exception" popup boxes while doing a check & repair
|
||||
* Crash when trying to link existing place as an enclosing place using P0001 number
|
||||
* HTML view fails to load
|
||||
* Relationship Graph crashes
|
||||
* Python3 needs new_subpixbuf not subpixbuf
|
||||
* Regression: running gramps from crontab fails
|
||||
* tag_map is not initialized
|
||||
* Some labels now fit better on citations sidebar filter
|
||||
* Event columns in web narrative are too narrow
|
||||
* Problem by start program (launcher)
|
||||
* Translation string missing in Not Related tool for help and close button
|
||||
* Date format month/year is not well reported at editing time [in Italian]
|
||||
* Fix unknown gender relationships handler for the french locale
|
||||
* Fix a handle type bug on sidebar filter
|
||||
* Tidy up About dialog
|
||||
* Cleanup on some man files
|
||||
* Convert some remaining unicode literals
|
||||
* Fix mac menubar setting
|
||||
* Enable python3 to run po/update_po.py
|
||||
* Updated translations: cs, de, fr, is, nl
|
||||
|
||||
2015-02-28
|
||||
Version 4.1.2, "That's no ordinary rabbit", a maintenance release.
|
||||
* Error converting python2 utf-8 strings to python3 str when loading data from database
|
||||
* Removing a parent place from a place leaves a dangling reference
|
||||
* Error during checking the database
|
||||
* Stubborn blank space in database won't be removed, fix removing rows in flat list views
|
||||
* Database upgrade fails if default media path is not set
|
||||
* Error converting database after upgrade to Gramps 4.1.1
|
||||
* Error in a single place within the places section
|
||||
* Entries from the add-or-choose selector of Place/Source/Media/Note cannot be dragged
|
||||
* Enclosing places tab should work like other similar tabs, new place reference editor
|
||||
* Association editor refuses dropped persons
|
||||
* Error on opening twice an object from clipboard
|
||||
* Incorrect spacing in export assistant file chooser
|
||||
* New Event types are saved as a disordered list
|
||||
* Always display main participants
|
||||
* Place titles can now be generated on-the-fly by a place displayer, default is still to use the place title field
|
||||
* GEDCOM import of embedded notes attached to media does not work
|
||||
* Crash on Ancestry.com .ged import; consistent.
|
||||
* Errors handling owner/submitter information in GEDCOM files.
|
||||
Only import researcher from GEDCOM or XML if the family tree was originally empty.
|
||||
* GEDCOM export does not export media attached to citations.
|
||||
* The fanchart view crashes if max generation is set to 1 away.
|
||||
* Sidebar Filters do not match placetypes in new placeview, two new filter rules (HasTitle, HasData)
|
||||
* Fix bug when family has no parents
|
||||
* Fix bad handle in explanation note for unknown event
|
||||
* Some labels now fit better on citations sidebar filter
|
||||
* Views in Geography should not always use the last option set by the user
|
||||
* Request for keyboard-controlled zoom on Geography view
|
||||
* Error geography view - Displaying main menu
|
||||
* Configure screen needs a file selector to select directory for "offline mode" files
|
||||
* Filter panel on geography view displays improperly
|
||||
* Detailed descendant report crashes, bibliography (citations)
|
||||
* Can't disable box shadow in SVG descendant tree
|
||||
* Descendant tree graphical report, syntax error in svg output
|
||||
* Regression: Complete Individual report has partially-untranslated output
|
||||
* Events Page in Narrative Report not working
|
||||
* Gramps freeze after defining a report style with German cm values
|
||||
* Various problems with docgen.TextDoc.add_media_object
|
||||
* Report event attribute name is not translated
|
||||
* Records Gramplet uses wrong text
|
||||
* Closing detached gramplet causes python to crash
|
||||
* Cannot reduce size of gramplets detached from a gramplet bar
|
||||
* Gramplets don't fill window when detached from dashboard
|
||||
* ImageMetadata doesn't show metadata
|
||||
* typo on GLib call, used by an addon only
|
||||
* Fix error setting gramplet tab label
|
||||
* Check for active person in session log gramplet
|
||||
* Spurious spaces in CLI List Family Trees, tab delimited output.
|
||||
Print statements changed to assemble the whole line before output.
|
||||
* Gtk3 warning and custom undoableentry widget, see bugzilla_id 644927
|
||||
* Warnings: deprecated Gtk properties and errors loading theme icon.
|
||||
Fix: database manager dialog is inconsistent for older gtk+3 versions.
|
||||
Warnings: deprecated Gtk properties and errors loading theme icon.
|
||||
Fix: Error loading theme icon 'gtk-apply'
|
||||
* gramps fails to start with gtk+-3.13.3
|
||||
* Places in data.gramps are not in the new Place hierarchy
|
||||
* Upgrade the version of some dependencies for Mac OS and Windows OS.
|
||||
* Keywords entry in gramps.desktop does not work
|
||||
* 'Available Gramps Updates for Addons' window not on top
|
||||
* Some text not translatable in context menu fancharts
|
||||
* Fix for Unit test
|
||||
* date inflections in _datehandler.py, update for Ukrainian, Russian, Croatian
|
||||
* Better support for Serbian and Turkish locales
|
||||
* New translation: Icelandic
|
||||
* Re-enable Turkish support after a major review. Thank you Uğur.
|
||||
* Updated translations: cs, de, eo, fi, fr, hr, hu, it, nb, nn, ru, sk, sr, sv, uk, zh_CN
|
||||
|
||||
2014-10-24
|
||||
Version 4.1.1, "MachineThatGoes...Ping!", a maintenance release.
|
||||
* Fix custom place types in the place editor
|
||||
* Allow place type combobox to receive focus.
|
||||
* Store custom place types in the metadata table
|
||||
* Fix place type for places without a main location
|
||||
* Fix bug adding parent places to a new place
|
||||
* Prevent user creating a cycle in the place hierarchy
|
||||
* Avoid infinite loop when place cycle encountered
|
||||
* Prevent creation of a place cycle when merging
|
||||
* Fix error when no place is selected
|
||||
* Check that a place has been selected when saving.
|
||||
* Use the standard place selection widget to be consistent.
|
||||
* Add a new Top Level place through the Place Reference Editor
|
||||
* Fix backlinks code in place report
|
||||
* Backlinks for places can now also be places as well as events.
|
||||
* Fix check and repair tool for empty placerefs
|
||||
* Update location utilities to work with proxies
|
||||
* Place report does not run
|
||||
* Update place details gramplet
|
||||
* Locations are now displayed in a new separate gramplet.
|
||||
* Add check for empty handle in gramplets
|
||||
* Check DB lock on the recent opened trees list
|
||||
* Sidebarfilter gramplet does not fit well into People, Events or Media views
|
||||
* Fix new event default type considering existing events with *default* role
|
||||
* Rebuild secondary indexes after database upgrade
|
||||
* Importing gedcom files containing multibyte UTF-8 characters fails
|
||||
* Ahnentafel Report did not use Christening Date if no Birth Date
|
||||
* [Narweb:] Missing webpage for media under some circumstances
|
||||
* Fix narrated web report with gendex option enabled
|
||||
* Tweak to "default" CSS choice for the narrated web report
|
||||
* Invalid link for Merge citation Help button
|
||||
* Fix 'todo' gramplet
|
||||
* Fix path when using drag & drop to add media
|
||||
* Limit the number of generations displayed in the ancestor gramplet
|
||||
* Export of a subset of the tree failed
|
||||
* Fix issues in python3, and bytes-string mismatch with ICU
|
||||
* Fix url/uri handling with non-ascii characters under linux and mac
|
||||
* Fix name format on graphical reports
|
||||
* Fix name format on textual reports
|
||||
* Better GUI support for embeded custom attributes list on media object
|
||||
* Better keys for search under linux shells (.desktop file)
|
||||
* 'Unknown' person in detailed ancestor report can not be translated
|
||||
* Translations don't show in many labels
|
||||
* Ensure python text domain gets the right encoding.
|
||||
* Translate some punctuation marks
|
||||
* Various fixes around Geography and osmgpsmap
|
||||
* Allow gramplets to be displayed in the dashboard only
|
||||
* Update FSF address
|
||||
* Add Arabic-script, Islamic-date, Thai script, Married Name and more dates examples
|
||||
* Fix on czech date handler for calculated and estimated dates
|
||||
* Enhance Serbian date handler to handle Cyrillic dates
|
||||
* Simplify Canadian Ash Wednesday holiday
|
||||
* Re-enable Esperanto support (for non-Windows OS only) after a large review
|
||||
* New translation: Serbian
|
||||
* Various fixes in German and Czech
|
||||
* Updated translations: ar, cs, de, fi, fr, it, sv
|
||||
|
||||
2014-06-15
|
||||
Version 4.1.0, the "Name go in book", new major release.
|
||||
* GEP 006: Better Place handling
|
||||
* New Tags support on Event, Place, Repository, Source, and Citation
|
||||
* Source/Citation Data becomes Attributes
|
||||
* Add optional support for checksum on Media object
|
||||
* New place hierarchies model
|
||||
* By default, you can choose navigator modes with a drop down.
|
||||
* New Place editor
|
||||
* Enhanced MediaReference Editor
|
||||
* Some debug tools move to new gramplets
|
||||
* Full Python 3 support
|
||||
* New functions and widgets related to Place and Media selections
|
||||
* Enhancements on to_struct()
|
||||
* New methods on Date handlers
|
||||
* Better support on translation for inflection rules
|
||||
|
||||
2014-05-22
|
||||
Version 4.0.4, "Not the comfy chair", a maintenance release.
|
||||
* Upgrade to db version 17 fails in Python 3 due to use of iteritems
|
||||
* Database corrupted - TypeError: unhashable type: 'list'
|
||||
* Fix bug in abandon changes and quit
|
||||
* Consistency on create_id method
|
||||
* Better handling for non-ASCII characters on database-path
|
||||
* Better support for ANSEL characters
|
||||
* 'Display as' field in Name Editor reverts to Preferences default
|
||||
* Fix vcard date converter
|
||||
* View does not communicate over proxy server with autorisation
|
||||
* Enhanced Bookmark support
|
||||
* Event gramplet filter does not have field for primary role,
|
||||
* New HasDayOfWeek filter rule
|
||||
* Error when leaving a Gramps type field blank in an editor
|
||||
* Fix creation of events with same Gramps-ID
|
||||
* Crash when opening details of a person
|
||||
* Fix spacing on dialogs for some recent linux distribution
|
||||
* date editor and Date class allow e.g. Hebrew dates with newyear (Mar25)
|
||||
* Fix crash in fan chart view when scrolling
|
||||
* Poor contrast mouse on mouse over
|
||||
* Drag and drop only one data into Editors tabs
|
||||
* Enhancements and consitency on events gramplet, selector and view
|
||||
* Sometimes says 'no data exists for note' when saving
|
||||
* Enhanced Citation Editor
|
||||
* Do not always raise errors when some plugins are hidden
|
||||
* Remove hover selection from embedded lists
|
||||
* Fix update of active object after merge
|
||||
* Cleanup on warnings and messages around locale directory
|
||||
* Media Editor error if Path value was changed to a non existing file
|
||||
* Register history objects at startup
|
||||
* Avoid dumb encoding error when compiling gpr file
|
||||
* Work around Py2Cairo
|
||||
* Given Name Cloud Gramplet splits up given names into words
|
||||
* Users should not be allowed to edit and delete 'default' style into Style Editor
|
||||
* Filename Decoding Error in Graphical Reports
|
||||
* Missing closing bracket in Web_Basic-Spruce.css
|
||||
* Reorder tool: global name 'gen' is not defined
|
||||
* Fix start in East Asian language, force UTF-8 locale on Mac
|
||||
* Fix apple_collation
|
||||
* Spelling messages at random cause hang for a few seconds.
|
||||
* Media viewer list crashes during start if one try to select an entry where the media isn't available
|
||||
* 'Available Gramps Updates for Addons' window not on top
|
||||
* HTML View fails to load
|
||||
* Paper names and Styles values are now translated
|
||||
* Sort failure using glocale.sort_key
|
||||
* Improve support for collation variants
|
||||
* Translate some punctuation marks
|
||||
* Fix unit tests and python3 issues
|
||||
* Fix Relationships handler for Portuguese
|
||||
* Updated translations: ar, cs, de, fi, fr, he, it, lt, nb, nl, pl, pt_BR, ru, sv, uk
|
||||
|
||||
2014-01-27
|
||||
Version 4.0.3, "It's tomorrow, ask me now", a maintenance release.
|
||||
* Fix copy via context menu on Views into Charts Category
|
||||
* Fix Tab sequence in Name Editor
|
||||
* Fix citations gramplet into media view
|
||||
* Fix unhandled exception when inspecting media
|
||||
* Fix Citation sidebar filter for python3
|
||||
* Fix add link to a "Html code" note
|
||||
* Fix message on backup dialog
|
||||
* Fix space for selection lists
|
||||
* Fix spell with myspell and LANG
|
||||
* Fix changes root cursor to hand
|
||||
* Recent file parser now gives the file location
|
||||
* Fix vertical overflows on check and repair-tool dialog
|
||||
* Fix custom key/value (data item) on Database difference report
|
||||
* Fix unhandled exception in media exif information under Windows OS
|
||||
* Fix person selector in searchfilter under Windows OS
|
||||
* Starting Gramps without console is now possible under Windows OS
|
||||
* Specific OS handling
|
||||
* Common fixes and changes with 3.4.7.
|
||||
* Updated translations: ca, de, fi, fr, ru
|
||||
|
||||
2013-11-08
|
||||
Version 4.0.2, "Welcome to our humble abode", a maintenance release.
|
||||
* Citation merge works better for all objects with citations
|
||||
* Fixed citations attached to family events
|
||||
* Fixed several crashes, hangs, and data corruption scenarios
|
||||
* Fixed bugs in determining whether a person is alive, potentially resolving private data leak via export or report
|
||||
* Fixed bugs on proxies
|
||||
* VCF export/import now support gender information
|
||||
* Several bugs with filtering fixed, most filters now support regular expressions
|
||||
* Fixed bug in Hebrew calendar date calculations
|
||||
* Fix some regressions on GEDCOM file format export and enhancement on CONT/CONC handling
|
||||
* Multiple fixes and improvements on gramplets
|
||||
* Multiple fixes in the narrated website and web calendar reports
|
||||
* Enhancements on date and calendar
|
||||
* Some fixes and improvements of the webapp
|
||||
* Fix on Database Differences module
|
||||
* Enhancements of the citation tree view (Sources category)
|
||||
* Improvements on User classes
|
||||
* Polish and consistency on Gramps XML export
|
||||
* Bump XML schema to 1.5.1
|
||||
* Fixed several long-standing problems with report generation
|
||||
* Better support of RTL locales (Arabic, Hebrew, etc.) in GUI
|
||||
* Better support for selected lang on some reports
|
||||
* Better way for displaying missing dependencies
|
||||
* Better Spell support
|
||||
* Platform-specific fixes for Mac and Windows
|
||||
* Add printing functionality for all geography views
|
||||
* New date handlers for Arabic and Greek
|
||||
* Translation updates (ar, cs, de, fr, lt, nb, nl, ru, sv) and translation-related fixes
|
||||
* Repaired and enhanced tests broken since 3.3.x, resulting in overall reliability improvements
|
||||
* Add a support for AppData
|
||||
|
||||
2013-06-24
|
||||
Version 4.0.1, the "What is washing when we are on the verge of a great scientific breakthrough?", a maintenance release.
|
||||
* Gtk3: fix menu on person editor and Geography views, convert deprecated code for the indicator in entryfield
|
||||
* Gedcom: Fix crash on export when there are addresses, fix space on ID
|
||||
* Disallow bookmarking a source in the Citation Tree View
|
||||
* Better RTL support on Pedigreeview and position for gramplets
|
||||
* Fix bad scaling in address editor
|
||||
* Fix crash on ancestor chart report
|
||||
* Fix navigation issues with selected line
|
||||
* Fix size of the 'Tip of the day' dialog
|
||||
* Fix right-click on tables in Quick Views
|
||||
* Fix cursor corruption on Pedigree view
|
||||
* Improvements when exporting via CLI
|
||||
* Reports: Various fixes on dialogs, output file formats and cleanup on error messages
|
||||
* MacOS: Fix bad filename on Gramps URL, osm-gps-map revision, image paths, resource-path file, maclocale
|
||||
* Move the HTML resources from gramps/plugins/webstuff to Data and Images
|
||||
* Alternate Names in Person Details Gramplet (patch by Heinz Brinker)
|
||||
* New holidays, date and relationship handlers for Ukrainian
|
||||
* Enhancements for testing localized Relationship handlers (contribution by Fedir)
|
||||
* More names and events on data.gramps sample
|
||||
* Translations updated: cs, de, es, fr, hu, nb, nl, ru, uk, and new support for Arabic
|
||||
|
||||
2013-05-21
|
||||
Version 4.0.0, the "The Miracle of Birth", new major release.
|
||||
* GEP 8: code reorganization
|
||||
* GEP 26: Replace make
|
||||
* GEP 29: Gtk 3 support
|
||||
* GEP 31: Python 3 support
|
||||
* Completely reworked localization handling
|
||||
* The Gramplet view has been renamed Dashboard. This to avoid an overload of the word Gramplet, and to make it more clear to new users what can be expected in this view
|
||||
* GTK 3 uses new themes, so users not on Gnome must set a nice GTK 3 theme to fully appreciate Gramps 4.0. Install a GTK 3 theme and set it. If Gramps looks ugly, you made an error in this step.
|
||||
* Different sidebar navigators can be installed
|
||||
* New Ancestor Fan Chart View and Descendant Fan Chart View, which offer a lot of insight in your family tree on a small space. Direct printing is available from these views.
|
||||
* All wizards are reworked, so the exporter dialog, help and bug report dialog are different from version 3.4, but offer the same functions
|
||||
* New To Do Gramplets listing all To Do Notes
|
||||
* More reports support output in a different language than the interface language
|
||||
* Narrative Web has been reworked to make it more stable.
|
||||
|
||||
2013-05-15
|
||||
Version 3.4.4 of Gramps! "The Ministry of Silly Names", a maintenance release.
|
||||
* infinite recursion bug in narrative web generation
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# $Id: Web_Basic-Blue.css 15540 2010-06-07 16:32:00Z robhealey1 $
|
||||
#
|
||||
|
@ -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%;
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
******************************************************
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
@ -17,7 +17,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
******************************************************
|
||||
|
@ -17,7 +17,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
**************************************************************************************************
|
||||
|
@ -17,7 +17,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
**************************************************************************************************
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# $Id: $
|
||||
#
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
**************************************************************************************************
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
@ -8,5 +8,6 @@ Terminal=false
|
||||
Type=Application
|
||||
StartupNotify=true
|
||||
Categories=GTK;Office;
|
||||
_Keywords=Genealogy;Family History;Research;Family Tree;GEDCOM;
|
||||
MimeType=application/x-gramps;application/x-gedcom;application/x-gramps-package;application/x-gramps-xml;
|
||||
Exec=gramps %F
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
|
||||
$Id$
|
||||
|
@ -19,7 +19,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
# $Id$
|
||||
-->
|
||||
|
@ -18,7 +18,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
# Written by Alex Roitman
|
||||
|
||||
|
@ -50,7 +50,7 @@ copyright = u'2012, Gramps project'
|
||||
# The short X.Y version.
|
||||
version = '4.1'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = 'trunk'
|
||||
release = '4.1.0'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
@ -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.
|
||||
|
@ -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 mars 2015" "4.1" "Gramps"
|
||||
.SH NAME
|
||||
gramps \- Gramps Documentation
|
||||
.
|
||||
@ -106,8 +106,8 @@ sources, vous devez utiliser l\(aqoption d\(aqimport.
|
||||
.TP
|
||||
.B \fB\-i\fP , \fB\-\-import=\fP \fIFICHIER\fP
|
||||
Importer des données depuis un \fIFICHIER\fP . Si vous n\(aqavez pas
|
||||
spécifié de base de données alors une base de données temporaire
|
||||
est utilisée; elle sera effacée quand vous quitterez gramps.
|
||||
spécifié de base de données, alors une base de données vide
|
||||
est utilisée.
|
||||
.sp
|
||||
Quand plus d\(aqun fichier doit être importé, chacun doit être
|
||||
précédé par la commande \fB\-i\fP . Ces fichiers sont importés dans le
|
||||
@ -337,6 +337,6 @@ gramps(1) @VERSION@ gramps(1)
|
||||
.SH AUTHOR
|
||||
Jerome Rapinat
|
||||
.SH COPYRIGHT
|
||||
2012, Gramps project
|
||||
2015, Gramps project
|
||||
.\" Generated by docutils manpage writer.
|
||||
.
|
||||
|
@ -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
|
||||
|
@ -19,7 +19,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
"""
|
||||
update_man.py for command line documentation.
|
||||
|
@ -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>
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
"""
|
||||
update_doc.py for Gramps API(s) documentation.
|
||||
|
@ -25,7 +25,7 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Anna Hansdotter
|
||||
2 DATE 2 OCT 1864
|
||||
2 PLAC Loderup, Malmous Lan, Sweden
|
||||
2 PLAC Löderup, Malmöhus Län, Sweden
|
||||
1 DEAT
|
||||
2 TYPE Death of Anna Hansdotter
|
||||
2 DATE 29 SEP 1945
|
||||
@ -55,7 +55,7 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Hans Peter Smith
|
||||
2 DATE 17 APR 1904
|
||||
2 PLAC Ronne, Bornholm, Denmark
|
||||
2 PLAC Rønne, Bornholm, Denmark
|
||||
1 DEAT
|
||||
2 TYPE Death of Hans Peter Smith
|
||||
2 DATE 29 JAN 1977
|
||||
@ -74,7 +74,7 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Hanna Smith
|
||||
2 DATE 29 JAN 1821
|
||||
2 PLAC Gladsax, Kristianstad Lan, Sweden
|
||||
2 PLAC Gladsax, Kristianstad Län, Sweden
|
||||
1 FAMC @F0@
|
||||
1 CHAN
|
||||
2 DATE 21 DEC 2007
|
||||
@ -87,7 +87,7 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Herman Julius Nielsen
|
||||
2 DATE 31 AUG 1889
|
||||
2 PLAC Ronne, Bornholm, Denmark
|
||||
2 PLAC Rønne, Bornholm, Denmark
|
||||
1 DEAT
|
||||
2 TYPE Death of Herman Julius Nielsen
|
||||
2 DATE 1945
|
||||
@ -128,7 +128,7 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Gus Smith
|
||||
2 DATE 11 SEP 1897
|
||||
2 PLAC Ronne, Bornholm, Denmark
|
||||
2 PLAC Rønne, Bornholm, Denmark
|
||||
1 DEAT
|
||||
2 TYPE Death of Gus Smith
|
||||
2 DATE 21 OCT 1963
|
||||
@ -146,7 +146,7 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Jennifer Anderson
|
||||
2 DATE 5 NOV 1907
|
||||
2 PLAC Ronne, Bornholm, Denmark
|
||||
2 PLAC Rønne, Bornholm, Denmark
|
||||
1 DEAT
|
||||
2 TYPE Death of Jennifer Anderson
|
||||
2 DATE 29 MAY 1985
|
||||
@ -163,7 +163,7 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Lillie Harriet Jones
|
||||
2 DATE 2 MAY 1910
|
||||
2 PLAC Ronne, Bornholm, Denmark
|
||||
2 PLAC Rønne, Bornholm, Denmark
|
||||
1 DEAT
|
||||
2 TYPE Death of Lillie Harriet Jones
|
||||
2 DATE 26 JUN 1990
|
||||
@ -227,7 +227,7 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Carl Emil Smith
|
||||
2 DATE 20 DEC 1899
|
||||
2 PLAC Ronne, Bornholm, Denmark
|
||||
2 PLAC Rønne, Bornholm, Denmark
|
||||
1 DEAT
|
||||
2 TYPE Death of Carl Emil Smith
|
||||
2 DATE 28 JAN 1959
|
||||
@ -245,11 +245,11 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Hjalmar Smith
|
||||
2 DATE 31 JAN 1893
|
||||
2 PLAC Ronne, Bornholm, Denmark
|
||||
2 PLAC Rønne, Bornholm, Denmark
|
||||
1 DEAT
|
||||
2 TYPE Death of Hjalmar Smith
|
||||
2 DATE 25 SEP 1894
|
||||
2 PLAC Ronne, Bornholm, Denmark
|
||||
2 PLAC Rønne, Bornholm, Denmark
|
||||
1 FAMC @F3@
|
||||
1 CHAN
|
||||
2 DATE 21 DEC 2007
|
||||
@ -262,7 +262,7 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Martin Smith
|
||||
2 DATE 19 NOV 1830
|
||||
2 PLAC Gladsax, Kristianstad Lan, Sweden
|
||||
2 PLAC Gladsax, Kristianstad Län, Sweden
|
||||
1 DEAT
|
||||
2 TYPE Death of Martin Smith
|
||||
2 DATE BET 1899 AND 1905
|
||||
@ -270,7 +270,7 @@
|
||||
1 BAPM
|
||||
2 TYPE Baptism of Martin Smith
|
||||
2 DATE 23 NOV 1830
|
||||
2 PLAC Gladsax, Kristianstad Lan, Sweden
|
||||
2 PLAC Gladsax, Kristianstad Län, Sweden
|
||||
1 FAMC @F0@
|
||||
1 FAMS @F2@
|
||||
1 NOTE @N0002@
|
||||
@ -285,7 +285,7 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Astrid Shermanna Augusta Smith
|
||||
2 DATE 31 JAN 1889
|
||||
2 PLAC Ronne, Bornholm, Denmark
|
||||
2 PLAC Rønne, Bornholm, Denmark
|
||||
1 DEAT
|
||||
2 TYPE Death of Astrid Shermanna Augusta Smith
|
||||
2 DATE 21 DEC 1963
|
||||
@ -304,7 +304,7 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Gustaf Smith, Sr.
|
||||
2 DATE 28 NOV 1862
|
||||
2 PLAC Grostorp, Kristianstad Lan, Sweden
|
||||
2 PLAC Grostorp, Kristianstad Län, Sweden
|
||||
1 DEAT
|
||||
2 TYPE Death of Gustaf Smith, Sr.
|
||||
2 DATE BEF 23 JUL 1930
|
||||
@ -316,7 +316,7 @@
|
||||
1 CHR
|
||||
2 TYPE Christening of Gustaf Smith, Sr.
|
||||
2 DATE 7 DEC 1862
|
||||
2 PLAC Gladsax, Kristianstad Lan, Sweden
|
||||
2 PLAC Gladsax, Kristianstad Län, Sweden
|
||||
1 FAMC @F2@
|
||||
1 FAMS @F3@
|
||||
1 CHAN
|
||||
@ -343,7 +343,7 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Kirsti Marie Smith
|
||||
2 DATE 15 DEC 1886
|
||||
2 PLAC Ronne, Bornholm, Denmark
|
||||
2 PLAC Rønne, Bornholm, Denmark
|
||||
1 DEAT
|
||||
2 TYPE Death of Kirsti Marie Smith
|
||||
2 DATE 18 JUL 1966
|
||||
@ -378,7 +378,7 @@
|
||||
1 DEAT
|
||||
2 TYPE Death of Anna Streiffert
|
||||
2 DATE 2 FEB 1927
|
||||
2 PLAC Ronne, Bornholm, Denmark
|
||||
2 PLAC Rønne, Bornholm, Denmark
|
||||
1 FAMS @F11@
|
||||
1 CHAN
|
||||
2 DATE 21 DEC 2007
|
||||
@ -407,11 +407,11 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Magnes Smith
|
||||
2 DATE 6 OCT 1858
|
||||
2 PLAC Simrishamn, Kristianstad Lan, Sweden
|
||||
2 PLAC Simrishamn, Kristianstad Län, Sweden
|
||||
1 DEAT
|
||||
2 TYPE Death of Magnes Smith
|
||||
2 DATE 20 FEB 1910
|
||||
2 PLAC Ronne, Bornholm, Denmark
|
||||
2 PLAC Rønne, Bornholm, Denmark
|
||||
1 FAMC @F2@
|
||||
1 FAMS @F11@
|
||||
1 CHAN
|
||||
@ -515,14 +515,14 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Elna Jefferson
|
||||
2 DATE 14 SEP 1800
|
||||
2 PLAC Gladsax, Kristianstad Lan, Sweden
|
||||
2 PLAC Gladsax, Kristianstad Län, Sweden
|
||||
1 DEAT
|
||||
2 TYPE Death of Elna Jefferson
|
||||
2 PLAC Sweden
|
||||
1 CHR
|
||||
2 TYPE Christening of Elna Jefferson
|
||||
2 DATE 16 SEP 1800
|
||||
2 PLAC Gladsax, Kristianstad Lan, Sweden
|
||||
2 PLAC Gladsax, Kristianstad Län, Sweden
|
||||
1 FAMS @F0@
|
||||
1 CHAN
|
||||
2 DATE 21 DEC 2007
|
||||
@ -560,7 +560,7 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Kerstina Hansdotter
|
||||
2 DATE 29 NOV 1832
|
||||
2 PLAC Smestorp, Kristianstad Lan, Sweden
|
||||
2 PLAC Smestorp, Kristianstad Län, Sweden
|
||||
1 DEAT
|
||||
2 TYPE Death of Kerstina Hansdotter
|
||||
2 DATE BEF 1908
|
||||
@ -577,7 +577,7 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Martin Smith
|
||||
2 DATE BET 1794 AND 1796
|
||||
2 PLAC Tommarp, Kristianstad Lan, Sweden
|
||||
2 PLAC Tommarp, Kristianstad Län, Sweden
|
||||
1 DEAT
|
||||
2 TYPE Death of Martin Smith
|
||||
2 PLAC Sweden
|
||||
@ -594,7 +594,7 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Ingeman Smith
|
||||
2 DATE 29 JAN 1826
|
||||
2 PLAC Gladsax, Kristianstad Lan, Sweden
|
||||
2 PLAC Gladsax, Kristianstad Län, Sweden
|
||||
1 FAMC @F0@
|
||||
1 CHAN
|
||||
2 DATE 21 DEC 2007
|
||||
@ -661,7 +661,7 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Ingar Smith
|
||||
2 DATE AFT 1823
|
||||
2 PLAC Gladsax, Kristianstad Lan, Sweden
|
||||
2 PLAC Gladsax, Kristianstad Län, Sweden
|
||||
1 FAMC @F0@
|
||||
1 CHAN
|
||||
2 DATE 21 DEC 2007
|
||||
@ -674,7 +674,7 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Hjalmar Smith
|
||||
2 DATE 7 APR 1895
|
||||
2 PLAC Ronne, Bornholm, Denmark
|
||||
2 PLAC Rønne, Bornholm, Denmark
|
||||
1 DEAT
|
||||
2 TYPE Death of Hjalmar Smith
|
||||
2 DATE 26 JUN 1975
|
||||
@ -682,7 +682,7 @@
|
||||
1 BAPM
|
||||
2 TYPE Baptism of Hjalmar Smith
|
||||
2 DATE 3 JUN 1895
|
||||
2 PLAC Ronne Bornholm, Denmark
|
||||
2 PLAC Rønne Bornholm, Denmark
|
||||
1 EVEN
|
||||
2 TYPE Immi
|
||||
2 DATE 14 NOV 1912
|
||||
@ -701,7 +701,7 @@
|
||||
1 BIRT
|
||||
2 TYPE Birth of Emil Smith
|
||||
2 DATE 27 SEP 1860
|
||||
2 PLAC Simrishamn, Kristianstad Lan, Sweden
|
||||
2 PLAC Simrishamn, Kristianstad Län, Sweden
|
||||
1 FAMC @F2@
|
||||
1 CHAN
|
||||
2 DATE 21 DEC 2007
|
||||
@ -712,7 +712,7 @@
|
||||
1 MARR
|
||||
2 TYPE Marriage of Martin Smith and Elna Jefferson
|
||||
2 DATE ABT 1816
|
||||
2 PLAC Gladsax, Kristianstad Lan, Sweden
|
||||
2 PLAC Gladsax, Kristianstad Län, Sweden
|
||||
1 CHIL @I11@
|
||||
1 CHIL @I7@
|
||||
1 CHIL @I4@
|
||||
@ -748,7 +748,7 @@
|
||||
1 MARR
|
||||
2 TYPE Marriage of Magnes Smith and Anna Streiffert
|
||||
2 DATE 24 AUG 1884
|
||||
2 PLAC Ronne, Bornholm, Denmark
|
||||
2 PLAC Rønne, Bornholm, Denmark
|
||||
1 CHAN
|
||||
2 DATE 21 DEC 2007
|
||||
3 TIME 01:35:26
|
||||
@ -805,7 +805,7 @@
|
||||
1 MARR
|
||||
2 TYPE Marriage of Gustaf Smith, Sr. and Anna Hansdotter
|
||||
2 DATE 27 NOV 1885
|
||||
2 PLAC Ronne, Bornholm, Denmark
|
||||
2 PLAC Rønne, Bornholm, Denmark
|
||||
1 CHIL @I26@
|
||||
1 CHIL @I23@
|
||||
1 CHIL @I21@
|
||||
@ -831,7 +831,7 @@
|
||||
1 MARR
|
||||
2 TYPE Marriage of Herman Julius Nielsen and Astrid Shermanna Augusta Smith
|
||||
2 DATE 30 NOV 1912
|
||||
2 PLAC Ronne, Bornholm, Denmark
|
||||
2 PLAC Rønne, Bornholm, Denmark
|
||||
1 CHAN
|
||||
2 DATE 21 DEC 2007
|
||||
3 TIME 01:35:26
|
||||
|
@ -3,7 +3,7 @@
|
||||
"http://gramps-project.org/xml/1.6.0/grampsxml.dtd">
|
||||
<database xmlns="http://gramps-project.org/xml/1.6.0/">
|
||||
<header>
|
||||
<created date="2014-05-15" version="4.1.0"/>
|
||||
<created date="2015-01-24" version="4.1.2"/>
|
||||
<researcher>
|
||||
<resname>Alex Roitman,,,</resname>
|
||||
</researcher>
|
||||
@ -1523,80 +1523,175 @@
|
||||
</source>
|
||||
</sources>
|
||||
<places>
|
||||
<placeobj handle="_4ZLT6DVCWT9LTZRDCS" change="1198197326" id="P0003" name="Ronne" type="None">
|
||||
<placeobj handle="_4ZLT6DVCWT9LTZRDCS" change="1422124381" id="P0003" name="Ronne" type="City">
|
||||
<ptitle>Ronne, Bornholm, Denmark</ptitle>
|
||||
<placeref hlink="_cef2428d9dd233688ea3ed3cc24"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_61NT6D3G1JMOTO6Z7Y" change="1198197326" id="P0012" name="Grostorp" type="None">
|
||||
<placeobj handle="_61NT6D3G1JMOTO6Z7Y" change="1422123855" id="P0012" name="Grostorp" type="Municipality">
|
||||
<ptitle>Grostorp, Kristianstad Lan, Sweden</ptitle>
|
||||
<placeref hlink="_cef23a81ba8c837cc364895d88"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_67MT6DB6KWOVMBAXSY" change="1198197326" id="P0002" name="San Francisco" type="None">
|
||||
<ptitle>San Francisco, San Francisco Co., CA</ptitle>
|
||||
<placeobj handle="_67MT6DB6KWOVMBAXSY" change="1422125128" id="P0002" name="San Francisco" type="City">
|
||||
<ptitle>San Francisco, San Francisco Co., CA, USA</ptitle>
|
||||
<placeref hlink="_cef24668db23c27d421f51c667d"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_7JMT6DN2LOF54KXHTU" change="1198197326" id="P0010" name="Reno" type="None">
|
||||
<ptitle>Reno, Washoe Co., NV</ptitle>
|
||||
<placeobj handle="_7JMT6DN2LOF54KXHTU" change="1422125958" id="P0010" name="Reno" type="City">
|
||||
<ptitle>Reno, Washoe Co., NV, USA</ptitle>
|
||||
<placeref hlink="_cef2513e057732c3f27780750d"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_A9MT6DHVWGWRP59DEV" change="1198197326" id="P0011" name="Sweden" type="None">
|
||||
<placeobj handle="_A9MT6DHVWGWRP59DEV" change="1422123595" id="P0011" name="Sweden" type="Country">
|
||||
<ptitle>Sweden</ptitle>
|
||||
</placeobj>
|
||||
<placeobj handle="_AANT6D026O5SHNUCDH" change="1198197326" id="P0015" name="Simrishamn" type="None">
|
||||
<placeobj handle="_AANT6D026O5SHNUCDH" change="1422123942" id="P0015" name="Simrishamn" type="Municipality">
|
||||
<ptitle>Simrishamn, Kristianstad Lan, Sweden</ptitle>
|
||||
<placeref hlink="_cef23a81ba8c837cc364895d88"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_AKMT6DMEYZDTG9J6DS" change="1198197326" id="P0013" name="Copenhagen" type="None">
|
||||
<placeobj handle="_AKMT6DMEYZDTG9J6DS" change="1422124249" id="P0013" name="Copenhagen" type="City">
|
||||
<ptitle>Copenhagen, Denmark</ptitle>
|
||||
<placeref hlink="_cef2418f9333e16e00f6ce2eb14"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_BAOT6D1WY6J4O4ARRN" change="1198197326" id="P0030" name="San Ramon" type="None">
|
||||
<ptitle>San Ramon, Conta Costa Co., CA</ptitle>
|
||||
<placeobj handle="_BAOT6D1WY6J4O4ARRN" change="1422125198" id="P0030" name="San Ramon" type="City">
|
||||
<ptitle>San Ramon, Conta Costa Co., CA, USA</ptitle>
|
||||
<placeref hlink="_cef2478a94b48a58d3be6a10493"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_DYLT6DF4DX2MNZICJ8" change="1198197326" id="P0014" name="Hoya/Jona/Hoia" type="None">
|
||||
<ptitle>Hoya/Jona/Hoia, Sweden</ptitle>
|
||||
<placeobj handle="_DYLT6DF4DX2MNZICJ8" change="1422126222" id="P0014" name="Hoya" type="City">
|
||||
<ptitle>Hoya, Sweden</ptitle>
|
||||
<alt_name>Jona</alt_name>
|
||||
<alt_name>Hoia</alt_name>
|
||||
<placeref hlink="_A9MT6DHVWGWRP59DEV"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_ELNT6DS8GN8WI7Z4SO" change="1198197326" id="P0008" name="Hayward" type="None">
|
||||
<ptitle>Hayward, Alameda Co., CA</ptitle>
|
||||
<placeobj handle="_ELNT6DS8GN8WI7Z4SO" change="1422125073" id="P0008" name="Hayward" type="City">
|
||||
<ptitle>Hayward, Alameda Co., CA, USA</ptitle>
|
||||
<placeref hlink="_cef245b044820b7405a1180f298"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_FBNT6DL92NDY0Z5SGP" change="1198197326" id="P0021" name="Santa Rosa" type="None">
|
||||
<ptitle>Santa Rosa, Sonoma Co., CA</ptitle>
|
||||
<placeobj handle="_FBNT6DL92NDY0Z5SGP" change="1422125294" id="P0021" name="Santa Rosa" type="City">
|
||||
<ptitle>Santa Rosa, Sonoma Co., CA, USA</ptitle>
|
||||
<placeref hlink="_cef24b7a76efa8b9d98d67ea5a"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_GWNT6D12ZV06PK969X" change="1198197326" id="P0020" name="Sacramento" type="None">
|
||||
<ptitle>Sacramento, Sacramento Co., CA</ptitle>
|
||||
<placeobj handle="_GWNT6D12ZV06PK969X" change="1422125101" id="P0020" name="Sacramento" type="City">
|
||||
<ptitle>Sacramento, Sacramento Co., CA, USA</ptitle>
|
||||
<placeref hlink="_cef246117947f75e54c09680419"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_HFNT6D12ZC0KOWY69T" change="1198197326" id="P0016" name="Fremont" type="None">
|
||||
<ptitle>Fremont, Alameda Co., CA</ptitle>
|
||||
<placeobj handle="_HFNT6D12ZC0KOWY69T" change="1422125018" id="P0016" name="Fremont" type="City">
|
||||
<ptitle>Fremont, Alameda Co., CA, USA</ptitle>
|
||||
<placeref hlink="_cef245b044820b7405a1180f298"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_HINT6DP8JGGL0KKB8J" change="1198197326" id="P0000" name="Loderup" type="None">
|
||||
<placeobj handle="_HINT6DP8JGGL0KKB8J" change="1422123879" id="P0000" name="Loderup" type="Municipality">
|
||||
<ptitle>Loderup, Malmous Lan, Sweden</ptitle>
|
||||
<placeref hlink="_cef23c1ee8b7da58c764e88c637"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_IEOT6DOW3RE8AQ94HH" change="1198197326" id="P0025" name="Bí" type="None">
|
||||
<placeobj handle="_IEOT6DOW3RE8AQ94HH" change="1422126043" id="P0025" name="Bí" type="Unknown">
|
||||
<ptitle>Bí</ptitle>
|
||||
</placeobj>
|
||||
<placeobj handle="_LTNT6DKZ5CR8PZSVUS" change="1198197326" id="P0022" name="San Jose" type="None">
|
||||
<ptitle>San Jose, Santa Clara Co., CA</ptitle>
|
||||
<placeobj handle="_LTNT6DKZ5CR8PZSVUS" change="1422125169" id="P0022" name="San Jose" type="City">
|
||||
<ptitle>San Jose, Santa Clara Co., CA, USA</ptitle>
|
||||
<placeref hlink="_cef246c95c132bcf6a0255d4d17"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_PUNT6D1XHS0DJW9QP6" change="1198197326" id="P0024" name="UC Berkeley" type="None">
|
||||
<ptitle>UC Berkeley</ptitle>
|
||||
<placeobj handle="_PUNT6D1XHS0DJW9QP6" change="1422125605" id="P0024" name="UC Berkeley" type="University">
|
||||
<ptitle>UC Berkeley, CA, USA</ptitle>
|
||||
<placeref hlink="_cef243fb5634559442323368f63"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_PXMT6DBL0WSBL76WD7" change="1198197326" id="P0026" name="Smestorp" type="None">
|
||||
<placeobj handle="_PXMT6DBL0WSBL76WD7" change="1422123936" id="P0026" name="Smestorp" type="Municipality">
|
||||
<ptitle>Smestorp, Kristianstad Lan, Sweden</ptitle>
|
||||
<placeref hlink="_cef23a81ba8c837cc364895d88"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_QBOT6DN7UCCTZQ055" change="1198197326" id="P0029" name="Woodland" type="None">
|
||||
<ptitle>Woodland, Yolo Co., CA</ptitle>
|
||||
<placeobj handle="_QBOT6DN7UCCTZQ055" change="1422125399" id="P0029" name="Woodland" type="City">
|
||||
<ptitle>Woodland, Yolo Co., CA, USA</ptitle>
|
||||
<placeref hlink="_cef24c2e3592e759b7797f95465"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_QJMT6DGII29FWCPX2E" change="1198197326" id="P0028" name="Ronne Bornholm" type="None">
|
||||
<placeobj handle="_QJMT6DGII29FWCPX2E" change="1422124361" id="P0028" name="Ronne Bornholm" type="City">
|
||||
<ptitle>Ronne Bornholm, Denmark</ptitle>
|
||||
<placeref hlink="_cef2418f9333e16e00f6ce2eb14"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_R8MT6DRIZVNRYDK0VN" change="1198197326" id="P0027" name="Tommarp" type="None">
|
||||
<placeobj handle="_R8MT6DRIZVNRYDK0VN" change="1422123930" id="P0027" name="Tommarp" type="Municipality">
|
||||
<ptitle>Tommarp, Kristianstad Lan, Sweden</ptitle>
|
||||
<placeref hlink="_cef23a81ba8c837cc364895d88"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_RPMT6DTQR8J7LK98HJ" change="1198197326" id="P0019" name="Denver" type="None">
|
||||
<ptitle>Denver, Denver Co., CO</ptitle>
|
||||
<placeobj handle="_RPMT6DTQR8J7LK98HJ" change="1422125771" id="P0019" name="Denver" type="City">
|
||||
<ptitle>Denver, Denver Co., CO, USA</ptitle>
|
||||
<placeref hlink="_cef24ffc57f28a50ea65f0af645"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_S1NT6DPOBYC1JGMR1P" change="1198197326" id="P0001" name="Sparks" type="None">
|
||||
<ptitle>Sparks, Washoe Co., NV</ptitle>
|
||||
<placeobj handle="_S1NT6DPOBYC1JGMR1P" change="1422125992" id="P0001" name="Sparks" type="City">
|
||||
<ptitle>Sparks, Washoe Co., NV, USA</ptitle>
|
||||
<placeref hlink="_cef2513e057732c3f27780750d"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_XLNT6DUONITFPPEGVH" change="1198197326" id="P0009" name="Community Presbyterian Church" type="None">
|
||||
<ptitle>Community Presbyterian Church, Danville, CA</ptitle>
|
||||
<placeobj handle="_XLNT6DUONITFPPEGVH" change="1422125508" id="P0009" name="Community Presbyterian Church" type="Church">
|
||||
<ptitle>Community Presbyterian Church, Danville, CA, USA</ptitle>
|
||||
<placeref hlink="_cef24d930653dc59ec3a36510e4"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_XSMT6DNISHYRCR1E78" change="1198197326" id="P0004" name="Gladsax" type="None">
|
||||
<placeobj handle="_XSMT6DNISHYRCR1E78" change="1422123836" id="P0004" name="Gladsax" type="Municipality">
|
||||
<ptitle>Gladsax, Kristianstad Lan, Sweden</ptitle>
|
||||
<placeref hlink="_cef23a81ba8c837cc364895d88"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef23a81ba8c837cc364895d88" change="1422123677" id="P0005" name="Kristianstad Lan" type="County">
|
||||
<ptitle>Kristianstad Lan, Sweden</ptitle>
|
||||
<placeref hlink="_A9MT6DHVWGWRP59DEV"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef23c1ee8b7da58c764e88c637" change="1422123662" id="P0006" name="Malmous Lan" type="County">
|
||||
<ptitle>Malmous Lan, Sweden</ptitle>
|
||||
<placeref hlink="_A9MT6DHVWGWRP59DEV"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef2418f9333e16e00f6ce2eb14" change="1422124233" id="P0007" name="Denmark" type="Country">
|
||||
<ptitle>Denmark</ptitle>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef2428d9dd233688ea3ed3cc24" change="1422124337" id="P0017" name="Bornholm" type="Region">
|
||||
<ptitle>Bornholm, Denmark</ptitle>
|
||||
<placeref hlink="_cef2418f9333e16e00f6ce2eb14"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef2438892244290ca7fb5750" change="1422124440" id="P0018" name="USA" type="Country">
|
||||
<ptitle>USA</ptitle>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef243fb5634559442323368f63" change="1422124487" id="P0023" name="CA" type="State">
|
||||
<ptitle>CA, USA</ptitle>
|
||||
<placeref hlink="_cef2438892244290ca7fb5750"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef244224d14af0273799b281e" change="1422124514" id="P0031" name="CO" type="State">
|
||||
<ptitle>CO, USA</ptitle>
|
||||
<placeref hlink="_cef2438892244290ca7fb5750"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef24468f6e3a984bf57967e95d" change="1422124542" id="P0032" name="NV" type="State">
|
||||
<ptitle>NV, USA</ptitle>
|
||||
<placeref hlink="_cef2438892244290ca7fb5750"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef245b044820b7405a1180f298" change="1422124666" id="P0033" name="Alameda Co." type="County">
|
||||
<ptitle>Alameda Co., CA, USA</ptitle>
|
||||
<placeref hlink="_cef243fb5634559442323368f63"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef246117947f75e54c09680419" change="1422124908" id="P0034" name="Sacramento Co." type="County">
|
||||
<ptitle>Sacramento Co., CA, USA</ptitle>
|
||||
<placeref hlink="_cef243fb5634559442323368f63"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef24668db23c27d421f51c667d" change="1422124741" id="P0035" name="San Francisco Co." type="County">
|
||||
<ptitle>San Francisco Co., CA, USA</ptitle>
|
||||
<placeref hlink="_cef243fb5634559442323368f63"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef246c95c132bcf6a0255d4d17" change="1422124781" id="P0036" name="Santa Clara Co." type="County">
|
||||
<ptitle>Santa Clara Co., CA, USA</ptitle>
|
||||
<placeref hlink="_cef243fb5634559442323368f63"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef2478a94b48a58d3be6a10493" change="1422124860" id="P0037" name="Conta Costa Co." type="County">
|
||||
<ptitle>Conta Costa Co., CA, USA</ptitle>
|
||||
<placeref hlink="_cef243fb5634559442323368f63"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef24b7a76efa8b9d98d67ea5a" change="1422125273" id="P0038" name="Sonoma Co." type="County">
|
||||
<ptitle>Sonoma Co., CA, USA</ptitle>
|
||||
<placeref hlink="_cef243fb5634559442323368f63"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef24c2e3592e759b7797f95465" change="1422125420" id="P0039" name="Yolo Co." type="County">
|
||||
<ptitle>Yolo Co., CA, USA</ptitle>
|
||||
<placeref hlink="_cef243fb5634559442323368f63"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef24d930653dc59ec3a36510e4" change="1422125493" id="P0040" name="Danville" type="City">
|
||||
<ptitle>Danville, CA, USA</ptitle>
|
||||
<placeref hlink="_cef243fb5634559442323368f63"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef24ffc57f28a50ea65f0af645" change="1422125745" id="P0041" name="Denver Co." type="County">
|
||||
<ptitle>Denver Co., CO, USA</ptitle>
|
||||
<placeref hlink="_cef244224d14af0273799b281e"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_cef2513e057732c3f27780750d" change="1422125877" id="P0042" name="Washoe Co." type="County">
|
||||
<ptitle>Washoe Co., NV, USA</ptitle>
|
||||
<placeref hlink="_cef24468f6e3a984bf57967e95d"/>
|
||||
</placeobj>
|
||||
</places>
|
||||
<objects>
|
||||
|
@ -3,11 +3,11 @@
|
||||
"http://gramps-project.org/xml/1.6.0/grampsxml.dtd">
|
||||
<database xmlns="http://gramps-project.org/xml/1.6.0/">
|
||||
<header>
|
||||
<created date="2014-05-19" version="4.1.0"/>
|
||||
<created date="2015-05-10" version="4.1.4"/>
|
||||
<researcher>
|
||||
<resname>Alex Roitman,,,</resname>
|
||||
</researcher>
|
||||
<mediapath>/home/cristina/gramps/master/example/gramps</mediapath>
|
||||
<mediapath>/home/pierre/Gramps/master/example/gramps</mediapath>
|
||||
</header>
|
||||
<name-formats>
|
||||
<format number="-1" name="SURNAME, Given (Common)" fmt_str="SURNAME, given (common)" active="1"/>
|
||||
@ -88,9 +88,14 @@
|
||||
</event>
|
||||
<event handle="_a5af0eb6abd74c3d7fb" change="1284030605" id="E0013">
|
||||
<type>Birth</type>
|
||||
<dateval val="1592"/>
|
||||
<dateval val="1592" type="about"/>
|
||||
<description>Birth of Abbott, Frances</description>
|
||||
</event>
|
||||
<event handle="_a5af0eb6abd74c3d7fc" change="1284030605" id="E3415">
|
||||
<type>Death</type>
|
||||
<dateval val="1642-01" type="about"/>
|
||||
<description>Death of Abbott, Frances</description>
|
||||
</event>
|
||||
<event handle="_a5af0eb6add73de72aa" change="1284030598" id="E0014">
|
||||
<type>Birth</type>
|
||||
<dateval val="1520" type="about"/>
|
||||
@ -10024,7 +10029,7 @@
|
||||
</event>
|
||||
<event handle="_a5af0ecd27c36369bba" change="1284030606" id="E1894">
|
||||
<type>Birth</type>
|
||||
<dateval val="1737-10-01"/>
|
||||
<dateval val="1737-10-01" type="after"/>
|
||||
<place hlink="_N04KQC5Z5IGGUBSE9X"/>
|
||||
<description>Birth of Adkins, John</description>
|
||||
</event>
|
||||
@ -10042,6 +10047,7 @@
|
||||
</event>
|
||||
<event handle="_a5af0ecd2e07c2f2bdc" change="1284030618" id="E1897">
|
||||
<type>Death</type>
|
||||
<datespan start="1800" stop="1805" quality="estimated"/>
|
||||
<place hlink="_WIVJQCUZOWUMT7VS2Q"/>
|
||||
<description>Death of Adams, Jane</description>
|
||||
</event>
|
||||
@ -10090,7 +10096,7 @@
|
||||
</event>
|
||||
<event handle="_a5af0ecd429521b5d6b" change="1284030611" id="E1906">
|
||||
<type>Birth</type>
|
||||
<dateval val="1763-06-20"/>
|
||||
<dateval val="1763-06-20" type="before"/>
|
||||
<place hlink="_TGVJQCRFKHZESR6WNB"/>
|
||||
<description>Birth of Adkins, Martha</description>
|
||||
</event>
|
||||
@ -11458,7 +11464,7 @@
|
||||
</event>
|
||||
<event handle="_a5af0ecfc7f527e0191" change="1284030617" id="E2158">
|
||||
<type>Birth</type>
|
||||
<dateval val="1700-10-26"/>
|
||||
<dateval val="1700-10-26" type="about"/>
|
||||
<place hlink="_NR6KQCSNMPJHAJEWNV"/>
|
||||
<description>Birth of Adams, William</description>
|
||||
</event>
|
||||
@ -11476,13 +11482,13 @@
|
||||
</event>
|
||||
<event handle="_a5af0ecfcf201952525" change="1284030604" id="E2161">
|
||||
<type>Birth</type>
|
||||
<dateval val="1717"/>
|
||||
<dateval val="1717" type="after"/>
|
||||
<place hlink="_YS6KQCLHBN4N6TE5JL"/>
|
||||
<description>Birth of Aguilar, Eleanor</description>
|
||||
</event>
|
||||
<event handle="_a5af0ecfd0a47d2ae44" change="1284030604" id="E2162">
|
||||
<type>Death</type>
|
||||
<dateval val="1760"/>
|
||||
<dateval val="1760-02" type="after"/>
|
||||
<place hlink="_HMVJQCAKOUGYE0JNVI"/>
|
||||
<description>Death of Aguilar, Eleanor</description>
|
||||
</event>
|
||||
@ -13943,7 +13949,7 @@
|
||||
<event handle="_a5af0ed3f64432fb742" change="1284030595" id="E2618">
|
||||
<type>Burial</type>
|
||||
<dateval val="1818" type="about"/>
|
||||
<place hlink="_4ECKQCWCLO5YIHXEXC"/>
|
||||
<place hlink="_4ECKQCWCLO5YIHXEXZ"/>
|
||||
<description>Burial of Schultz, Rev.Isaac</description>
|
||||
</event>
|
||||
<event handle="_a5af0ed3f9b07f938fb" change="1284030602" id="E2619">
|
||||
@ -13976,13 +13982,13 @@
|
||||
</event>
|
||||
<event handle="_a5af0ed405d190cc4f9" change="1284030611" id="E2624">
|
||||
<type>Birth</type>
|
||||
<dateval val="1665"/>
|
||||
<dateval val="1665" type="before"/>
|
||||
<place hlink="_LP3KQCM533F3TRBKRT"/>
|
||||
<description>Birth of Aguilar, John</description>
|
||||
</event>
|
||||
<event handle="_a5af0ed4070703f2665" change="1284030611" id="E2625">
|
||||
<type>Death</type>
|
||||
<dateval val="1745"/>
|
||||
<dateval val="1745-02" type="before"/>
|
||||
<place hlink="_W04KQCN0SLXWA1Z46O"/>
|
||||
<description>Death of Aguilar, John</description>
|
||||
</event>
|
||||
@ -17848,6 +17854,54 @@
|
||||
<dateval val="1974-03-30"/>
|
||||
<description>Marriage of Peters, John C. and Cruz, Joyce Marie</description>
|
||||
</event>
|
||||
<event handle="_cc8205d81e2695b08bc" change="1402521343" id="E3403">
|
||||
<type>Birth</type>
|
||||
<dateval val="0570-04-19"/>
|
||||
</event>
|
||||
<event handle="_cc8205d86c903db892d" change="1402521395" id="E3404">
|
||||
<type>Death</type>
|
||||
<dateval val="0632-06-08"/>
|
||||
</event>
|
||||
<event handle="_cc8205d86fc4e9706a5" change="1402522476" id="E3405">
|
||||
<type>Marriage</type>
|
||||
<dateval val="0610"/>
|
||||
</event>
|
||||
<event handle="_cc820604e846de3c210" change="1403157667" id="E3406">
|
||||
<type>Birth</type>
|
||||
<dateval val="0164-03" cformat="Islamic"/>
|
||||
</event>
|
||||
<event handle="_cc820604ebe2877212d" change="1403157610" id="E3407">
|
||||
<type>Death</type>
|
||||
<dateval val="0241-03-12" cformat="Islamic"/>
|
||||
</event>
|
||||
<event handle="_cc820604ef05cb67907" change="1403158792" id="E3408">
|
||||
<type>Marriage</type>
|
||||
<dateval val="0204" cformat="Islamic"/>
|
||||
</event>
|
||||
<event handle="_cc820604f313cc072c6" change="1403157647" id="E3409">
|
||||
<type>Death</type>
|
||||
<dateval val="0241-03-12" cformat="Islamic"/>
|
||||
</event>
|
||||
<event handle="_cc820604f6364f627bf" change="1403159091" id="E3410">
|
||||
<type>Death</type>
|
||||
<dateval val="0234" cformat="Islamic"/>
|
||||
</event>
|
||||
<event handle="_cc820604f967aa1d9a5" change="1403159681" id="E3411">
|
||||
<type>Birth</type>
|
||||
<dateval val="0213" cformat="Islamic"/>
|
||||
</event>
|
||||
<event handle="_cc820604fcf3d08a81a" change="1403159708" id="E3412">
|
||||
<type>Death</type>
|
||||
<dateval val="0290" cformat="Islamic"/>
|
||||
</event>
|
||||
<event handle="_cc82060500222649d98" change="1403159938" id="E3413">
|
||||
<type>Birth</type>
|
||||
<dateval val="0203" cformat="Islamic"/>
|
||||
</event>
|
||||
<event handle="_cccc047c40841a5993c" change="1407353879" id="E3414">
|
||||
<type>Death</type>
|
||||
<dateval val="1850" type="about" quality="estimated"/>
|
||||
</event>
|
||||
</events>
|
||||
<people home="_GNUJQCL9MD64AM56OH">
|
||||
<person handle="_004KQCGYT27EEPQHK" change="1185438865" id="I0552">
|
||||
@ -20206,7 +20260,7 @@
|
||||
<parentin hlink="_HQ8KQCT2UX4S9I0E26"/>
|
||||
<citationref hlink="_c140d24b31f74169170"/>
|
||||
</person>
|
||||
<person handle="_3RFKQCNKMX9HVLNSLW" change="1185438865" id="I1116">
|
||||
<person handle="_3RFKQCNKMX9HVLNSLW" change="1431174900" id="I1116">
|
||||
<gender>F</gender>
|
||||
<name type="Birth Name">
|
||||
<surname>Garner</surname>
|
||||
@ -20450,12 +20504,16 @@
|
||||
<parentin hlink="_HCDKQCO86IZDWE7E7C"/>
|
||||
<citationref hlink="_c140d24bbb52d0cb605"/>
|
||||
</person>
|
||||
<person handle="_46WJQCIOLQ0KOX2XCC" change="1185438865" id="I0107">
|
||||
<person handle="_46WJQCIOLQ0KOX2XCC" change="1407352752" id="I0107">
|
||||
<gender>F</gender>
|
||||
<name type="Birth Name">
|
||||
<first>Phoebe Emily</first>
|
||||
<surname>Zieliński</surname>
|
||||
</name>
|
||||
<name alt="1" type="Married Name">
|
||||
<first>Phoebe Emily</first>
|
||||
<surname>Garner</surname>
|
||||
</name>
|
||||
<eventref hlink="_a5af0eb76bf19f7e28b" role="Primary"/>
|
||||
<eventref hlink="_a5af0eb76ce7f2b0e95" role="Primary"/>
|
||||
<eventref hlink="_a5af0eb76dc65a4d2a8" role="Primary"/>
|
||||
@ -22046,7 +22104,7 @@
|
||||
<parentin hlink="_JT4KQC83ZKPOLC0UEJ"/>
|
||||
<citationref hlink="_c140d24fa2503a14583"/>
|
||||
</person>
|
||||
<person handle="_6TFKQCUTO94WB2NHN" change="1185438865" id="I1119">
|
||||
<person handle="_6TFKQCUTO94WB2NHN" change="1431174900" id="I1119">
|
||||
<gender>F</gender>
|
||||
<name type="Birth Name">
|
||||
<first>Zelpha Josephine</first>
|
||||
@ -22637,6 +22695,7 @@
|
||||
<surname>Abbott</surname>
|
||||
</name>
|
||||
<eventref hlink="_a5af0eb6abd74c3d7fb" role="Primary"/>
|
||||
<eventref hlink="_a5af0eb6abd74c3d7fc" role="Primary"/>
|
||||
<parentin hlink="_CI3KQCZZE11QOAP8G9"/>
|
||||
<citationref hlink="_c140d250e5d1110c14d"/>
|
||||
</person>
|
||||
@ -23854,7 +23913,7 @@
|
||||
<parentin hlink="_1RUJQCCL9MVRYLMTBO"/>
|
||||
<citationref hlink="_c140d254dcc234394a3"/>
|
||||
</person>
|
||||
<person handle="_9QFKQC54ET79K2SD57" change="1185438865" id="I1115">
|
||||
<person handle="_9QFKQC54ET79K2SD57" change="1431174900" id="I1115">
|
||||
<gender>F</gender>
|
||||
<name type="Birth Name">
|
||||
<first>Mary M.</first>
|
||||
@ -24541,7 +24600,7 @@
|
||||
<parentin hlink="_4W1KQCYZD6N5M576RA"/>
|
||||
<citationref hlink="_c140d2566d57b164cf5"/>
|
||||
</person>
|
||||
<person handle="_AWFKQCJELLUWDY2PD3" change="1284030919" id="I1123">
|
||||
<person handle="_AWFKQCJELLUWDY2PD3" change="1431174900" id="I1123">
|
||||
<gender>M</gender>
|
||||
<name type="Birth Name">
|
||||
<first>Robert F.</first>
|
||||
@ -27123,7 +27182,7 @@
|
||||
<parentin hlink="_0Q3KQCBZ4421A3L5B4"/>
|
||||
<citationref hlink="_c140d25c5be3120050a"/>
|
||||
</person>
|
||||
<person handle="_EPFKQCETTDTEL3PYIR" change="1185438865" id="I1114">
|
||||
<person handle="_EPFKQCETTDTEL3PYIR" change="1431174900" id="I1114">
|
||||
<gender>F</gender>
|
||||
<name type="Birth Name">
|
||||
<first>Mary J.</first>
|
||||
@ -28167,7 +28226,7 @@
|
||||
<parentin hlink="_BWAKQCZLIWDX9ZEFED"/>
|
||||
<citationref hlink="_c140d25eec45aabbd80"/>
|
||||
</person>
|
||||
<person handle="_GNUJQCL9MD64AM56OH" change="1328027440" id="I0044">
|
||||
<person handle="_GNUJQCL9MD64AM56OH" change="1431174904" id="I0044">
|
||||
<gender>M</gender>
|
||||
<name type="Birth Name">
|
||||
<first>Lewis Anderson</first>
|
||||
@ -28395,7 +28454,7 @@
|
||||
<childof hlink="_05XJQC935HU62H3KL4"/>
|
||||
<citationref hlink="_c140d25f5c448b251ca"/>
|
||||
</person>
|
||||
<person handle="_GYFKQCPH8Q0JDN94GR" change="1185438865" id="I1126">
|
||||
<person handle="_GYFKQCPH8Q0JDN94GR" change="1431174900" id="I1126">
|
||||
<gender>F</gender>
|
||||
<name type="Birth Name">
|
||||
<first>Anetta</first>
|
||||
@ -32046,7 +32105,7 @@
|
||||
<parentin hlink="_ZA6KQC27P0I8E2JZUC"/>
|
||||
<citationref hlink="_c140d2677c105a1b132"/>
|
||||
</person>
|
||||
<person handle="_MUFKQCMXUJ07MCDUNI" change="1185438865" id="I1121">
|
||||
<person handle="_MUFKQCMXUJ07MCDUNI" change="1431174900" id="I1121">
|
||||
<gender>F</gender>
|
||||
<name type="Birth Name">
|
||||
<first>Iola Elizabeth Betty</first>
|
||||
@ -33220,7 +33279,7 @@
|
||||
<parentin hlink="_9SEKQCAAWRUCIO7A0M"/>
|
||||
<citationref hlink="_c140d269f4c7c13bf87"/>
|
||||
</person>
|
||||
<person handle="_ORFKQC4KLWEGTGR19L" change="1185438865" id="I1117">
|
||||
<person handle="_ORFKQC4KLWEGTGR19L" change="1431174900" id="I1117">
|
||||
<gender>F</gender>
|
||||
<name type="Birth Name">
|
||||
<first>Rebecca Catharine</first>
|
||||
@ -33904,7 +33963,7 @@
|
||||
<parentin hlink="_IXDKQCOYLEMDKWJZPC"/>
|
||||
<citationref hlink="_c140d26b98d33ec7f15"/>
|
||||
</person>
|
||||
<person handle="_PXFKQCXEHJX3W1Q1IV" change="1185438865" id="I1125">
|
||||
<person handle="_PXFKQCXEHJX3W1Q1IV" change="1431174900" id="I1125">
|
||||
<gender>F</gender>
|
||||
<name type="Birth Name">
|
||||
<first>Emma A.</first>
|
||||
@ -35636,7 +35695,7 @@
|
||||
<parentin hlink="_FP4KQCQQX8O84KK3IF"/>
|
||||
<citationref hlink="_c140d27142a05b2d019"/>
|
||||
</person>
|
||||
<person handle="_SOFKQCBYAO18OWC0CS" change="1185438865" id="I1113">
|
||||
<person handle="_SOFKQCBYAO18OWC0CS" change="1431174900" id="I1113">
|
||||
<gender>F</gender>
|
||||
<name type="Birth Name">
|
||||
<first>Phebe</first>
|
||||
@ -37009,7 +37068,7 @@
|
||||
<parentin hlink="_7ZWJQC8ZR4WJZE09RW"/>
|
||||
<citationref hlink="_c140d276c1802ec5ac3"/>
|
||||
</person>
|
||||
<person handle="_UZFKQCIHVT44DC9KGH" change="1185438865" id="I1128">
|
||||
<person handle="_UZFKQCIHVT44DC9KGH" change="1431174900" id="I1128">
|
||||
<gender>F</gender>
|
||||
<name type="Birth Name">
|
||||
<first>Antoinette</first>
|
||||
@ -40063,6 +40122,117 @@
|
||||
<parentin hlink="_F0WKQCXB6Y8RVGHIC7"/>
|
||||
<citationref hlink="_c140d280aa7494978c4"/>
|
||||
</person>
|
||||
<person handle="_cc8205d872f532ab14e" change="1402522742" id="I2110">
|
||||
<gender>M</gender>
|
||||
<name type="Birth Name">
|
||||
<first>محمد</first>
|
||||
<surname></surname>
|
||||
</name>
|
||||
<eventref hlink="_cc8205d81e2695b08bc" role="Primary"/>
|
||||
<eventref hlink="_cc8205d86c903db892d" role="Primary"/>
|
||||
<eventref hlink="_cc8205d86fc4e9706a5" role="Primary"/>
|
||||
<parentin hlink="_cc8205d874433c12fd8"/>
|
||||
<parentin hlink="_cc8205d87492b90b437"/>
|
||||
</person>
|
||||
<person handle="_cc8205d87831c772e87" change="1402522479" id="I2105">
|
||||
<gender>F</gender>
|
||||
<name type="Birth Name">
|
||||
<first>عائشة</first>
|
||||
<surname></surname>
|
||||
</name>
|
||||
<eventref hlink="_cc8205d86fc4e9706a5" role="Primary"/>
|
||||
<parentin hlink="_cc8205d874433c12fd8"/>
|
||||
</person>
|
||||
<person handle="_cc8205d87c20350420b" change="1402522742" id="I2106">
|
||||
<gender>F</gender>
|
||||
<name type="Birth Name">
|
||||
<first>خديجة</first>
|
||||
<surname></surname>
|
||||
</name>
|
||||
<parentin hlink="_cc8205d87492b90b437"/>
|
||||
</person>
|
||||
<person handle="_cc8205d87fd529000ff" change="1402522742" id="I2107">
|
||||
<gender>M</gender>
|
||||
<name type="Birth Name">
|
||||
<first>القاسم</first>
|
||||
<surname></surname>
|
||||
</name>
|
||||
<childof hlink="_cc8205d87492b90b437"/>
|
||||
</person>
|
||||
<person handle="_cc8205d883763f02abd" change="1402522742" id="I2108">
|
||||
<gender>M</gender>
|
||||
<name type="Birth Name">
|
||||
<first>عبد الله</first>
|
||||
<surname></surname>
|
||||
<nick>الطيب</nick>
|
||||
</name>
|
||||
<childof hlink="_cc8205d87492b90b437"/>
|
||||
</person>
|
||||
<person handle="_cc8205d887376aacba2" change="1402522742" id="I2109">
|
||||
<gender>F</gender>
|
||||
<name type="Birth Name">
|
||||
<first>أم كلثوم</first>
|
||||
<surname></surname>
|
||||
</name>
|
||||
<childof hlink="_cc8205d87492b90b437"/>
|
||||
</person>
|
||||
<person handle="_cc82060504445ab6deb" change="1403159391" id="I2111">
|
||||
<gender>M</gender>
|
||||
<name type="Birth Name">
|
||||
<first>أحمد</first>
|
||||
<surname></surname>
|
||||
</name>
|
||||
<eventref hlink="_cc820604e846de3c210" role="Primary"/>
|
||||
<eventref hlink="_cc820604ef05cb67907" role="Primary"/>
|
||||
<eventref hlink="_cc820604f313cc072c6" role="Primary"/>
|
||||
<parentin hlink="_cc82060505948b9e57f"/>
|
||||
<parentin hlink="_cc82060505f631267b1"/>
|
||||
</person>
|
||||
<person handle="_cc8206050980ea622d0" change="1403159106" id="I2112">
|
||||
<gender>F</gender>
|
||||
<name type="Birth Name">
|
||||
<first>العباسة</first>
|
||||
<surname>الفضل</surname>
|
||||
</name>
|
||||
<eventref hlink="_cc820604ef05cb67907" role="Primary"/>
|
||||
<eventref hlink="_cc820604f6364f627bf" role="Primary"/>
|
||||
<parentin hlink="_cc82060505948b9e57f"/>
|
||||
</person>
|
||||
<person handle="_cc8206050e541f79f92" change="1403159124" id="I2113">
|
||||
<gender>F</gender>
|
||||
<name type="Birth Name">
|
||||
<first>ريحانة</first>
|
||||
<surname></surname>
|
||||
</name>
|
||||
<parentin hlink="_cc82060505f631267b1"/>
|
||||
</person>
|
||||
<person handle="_cc82060512042f67e2c" change="1403159743" id="I2114">
|
||||
<gender>M</gender>
|
||||
<name type="Birth Name">
|
||||
<first>عبد الله</first>
|
||||
<surname></surname>
|
||||
</name>
|
||||
<eventref hlink="_cc820604f967aa1d9a5" role="Primary"/>
|
||||
<eventref hlink="_cc820604fcf3d08a81a" role="Primary"/>
|
||||
<childof hlink="_cc82060505f631267b1"/>
|
||||
</person>
|
||||
<person handle="_cc82060516c6c141500" change="1403160273" id="I2115">
|
||||
<gender>M</gender>
|
||||
<name type="Birth Name">
|
||||
<first>صالح</first>
|
||||
<surname></surname>
|
||||
</name>
|
||||
<eventref hlink="_cc82060500222649d98" role="Primary"/>
|
||||
<childof hlink="_cc82060505948b9e57f"/>
|
||||
</person>
|
||||
<person handle="_cccbffffd3e69819cd8" change="1407353883" id="I2116">
|
||||
<gender>M</gender>
|
||||
<name type="Birth Name">
|
||||
<first>Foon</first>
|
||||
<surname>บุญ</surname>
|
||||
</name>
|
||||
<eventref hlink="_cccc047c40841a5993c" role="Primary"/>
|
||||
</person>
|
||||
</people>
|
||||
<families>
|
||||
<family handle="_03GKQCH37C1SL9C5B3" change="1185438865" id="F0372">
|
||||
@ -41890,12 +42060,12 @@
|
||||
<childref hlink="_GH0KQCGPLF5J17PELU"/>
|
||||
<citationref hlink="_c140d286d0e2f46fb29"/>
|
||||
</family>
|
||||
<family handle="_8OUJQCUVZ0XML7BQLF" change="1185438865" id="F0018">
|
||||
<family handle="_8OUJQCUVZ0XML7BQLF" change="1431174900" id="F0018">
|
||||
<rel type="Married"/>
|
||||
<father hlink="_35WJQC1B7T7NPV8OLV"/>
|
||||
<mother hlink="_46WJQCIOLQ0KOX2XCC"/>
|
||||
<eventref hlink="_a5af0ed602318310d6d" role="Family"/>
|
||||
<childref hlink="_GNUJQCL9MD64AM56OH"/>
|
||||
<childref hlink="_GNUJQCL9MD64AM56OH" mrel="Custom relationship to mother" frel="Custom relationship to father"/>
|
||||
<childref hlink="_SOFKQCBYAO18OWC0CS"/>
|
||||
<childref hlink="_EPFKQCETTDTEL3PYIR"/>
|
||||
<childref hlink="_9QFKQC54ET79K2SD57"/>
|
||||
@ -46434,6 +46604,31 @@
|
||||
<childref hlink="_F2TKQCM1TFWSLBO1X4"/>
|
||||
<citationref hlink="_c140d2916aa5054a8af"/>
|
||||
</family>
|
||||
<family handle="_cc8205d874433c12fd8" change="1402522479" id="F0743">
|
||||
<rel type="Married"/>
|
||||
<father hlink="_cc8205d872f532ab14e"/>
|
||||
<mother hlink="_cc8205d87831c772e87"/>
|
||||
</family>
|
||||
<family handle="_cc8205d87492b90b437" change="1402522742" id="F0744">
|
||||
<rel type="Married"/>
|
||||
<father hlink="_cc8205d872f532ab14e"/>
|
||||
<mother hlink="_cc8205d87c20350420b"/>
|
||||
<childref hlink="_cc8205d87fd529000ff"/>
|
||||
<childref hlink="_cc8205d883763f02abd"/>
|
||||
<childref hlink="_cc8205d887376aacba2"/>
|
||||
</family>
|
||||
<family handle="_cc82060505948b9e57f" change="1403158874" id="F0745">
|
||||
<rel type="Married"/>
|
||||
<father hlink="_cc82060504445ab6deb"/>
|
||||
<mother hlink="_cc8206050980ea622d0"/>
|
||||
<childref hlink="_cc82060516c6c141500"/>
|
||||
</family>
|
||||
<family handle="_cc82060505f631267b1" change="1403159161" id="F0746">
|
||||
<rel type="Married"/>
|
||||
<father hlink="_cc82060504445ab6deb"/>
|
||||
<mother hlink="_cc8206050e541f79f92"/>
|
||||
<childref hlink="_cc82060512042f67e2c"/>
|
||||
</family>
|
||||
</families>
|
||||
<citations>
|
||||
<citation handle="_c140d2362f25a92643b" change="1328025930" id="C0000">
|
||||
@ -58386,7 +58581,10 @@
|
||||
<placeref hlink="_c965872634337a6478283d68bc4"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_4ECKQCWCLO5YIHXEXC" change="1234373374" id="P0957" name="USA" type="Country">
|
||||
<ptitle>Puerto Rico,</ptitle>
|
||||
<ptitle>USA</ptitle>
|
||||
</placeobj>
|
||||
<placeobj handle="_4ECKQCWCLO5YIHXEXZ" change="1234373374" id="P1704" name="Puerto Rico" type="Country">
|
||||
<ptitle>Puerto Rico</ptitle>
|
||||
</placeobj>
|
||||
<placeobj handle="_4FUJQCDFTJJJNKKJMH" change="1234390522" id="P0958" name="Boone" type="City">
|
||||
<ptitle>Boone, IA</ptitle>
|
||||
@ -63449,30 +63647,31 @@
|
||||
</places>
|
||||
<objects>
|
||||
<object handle="_238CGQ939HG18SS5MG" change="1328027353" id="O0010">
|
||||
<file src="1897_expeditionsmannschaft_rio_a.jpg" mime="image/jpeg" description="1897_expeditionsmannschaft_rio_a"/>
|
||||
<file src="1897_expeditionsmannschaft_rio_a.jpg" mime="image/jpeg" checksum="352c7ae13b8b642471ecae6fa78ce206" description="1897_expeditionsmannschaft_rio_a"/>
|
||||
<dateval val="1897"/>
|
||||
<tagref hlink="_bb80c2b235b0a1b3f49"/>
|
||||
</object>
|
||||
<object handle="_78V2GQX2FKNSYQ3OHE" change="1185438865" id="O0009">
|
||||
<file src="Gunnlaugur_Larusson_-_Yawn.jpg" mime="image/jpeg" description="Yawn"/>
|
||||
<file src="Gunnlaugur_Larusson_-_Yawn.jpg" mime="image/jpeg" checksum="6bae0888ffdbad79b2735a5ac17450aa" description="Yawn"/>
|
||||
</object>
|
||||
<object handle="_B1AUFQV7H8R9NR4SZM" change="1328027158" id="O0008">
|
||||
<file src="654px-Aksel_Andersson.jpg" mime="image/jpeg" description="654px-Aksel_Andersson"/>
|
||||
<file src="654px-Aksel_Andersson.jpg" mime="image/jpeg" checksum="542c7ed6f97c6af16907339439abffdf" description="654px-Aksel_Andersson"/>
|
||||
<attribute type="Description" value="This seems to be a photo of a relative">
|
||||
<citationref hlink="_c140dde678c5c4f4537"/>
|
||||
</attribute>
|
||||
<citationref hlink="_c140dd5edc11679f39b"/>
|
||||
</object>
|
||||
<object handle="_F0QIGQFT275JFJ75E8" change="1328026759" id="O0006">
|
||||
<file src="Alimehemet.jpg" mime="image/jpeg" description="Alimehemet"/>
|
||||
<file src="Alimehemet.jpg" mime="image/jpeg" checksum="a8df70b9c84208806e8e2cb4fb0fe0dd" description="Alimehemet"/>
|
||||
</object>
|
||||
<object handle="_F8JYGQFL2PKLSYH79X" change="1185438865" id="O0007">
|
||||
<file src="E_W_Dahlgren.jpg" mime="image/jpeg" description="E_W_Dahlgren"/>
|
||||
<file src="E_W_Dahlgren.jpg" mime="image/jpeg" checksum="918fd7fabe4878a687bf25a7c44749c5" description="E_W_Dahlgren"/>
|
||||
</object>
|
||||
<object handle="_Y3ARGQWE088EQRTTDH" change="1185438865" id="O0011">
|
||||
<file src="AntoineClaudet.png" mime="image/png" description="AntoineClaudet"/>
|
||||
<file src="AntoineClaudet.png" mime="image/png" checksum="7a0eced23b6e370c113b3ca628f45388" description="AntoineClaudet"/>
|
||||
</object>
|
||||
<object handle="_b39fe1cfc1305ac4a21" change="1328027069" id="O0000">
|
||||
<file src="scanned_microfilm.png" mime="image/png" description="1855-06-25 scanned birth record"/>
|
||||
<file src="scanned_microfilm.png" mime="image/png" checksum="812d016b1404073af69d11891ec2f8a1" description="1855-06-25 scanned birth record"/>
|
||||
</object>
|
||||
</objects>
|
||||
<repositories>
|
||||
@ -63729,6 +63928,94 @@ page 26 Repository:Address</text>
|
||||
<range start="0" end="705"/>
|
||||
</style>
|
||||
</note>
|
||||
<note handle="_d0436bba4ec328d3b631259a4ee" change="1431184305" id="_header1" type="General">
|
||||
<text>Title for the example pages</text>
|
||||
<style name="fontcolor" value="#ef2929">
|
||||
<range start="0" end="27"/>
|
||||
</style>
|
||||
<style name="underline">
|
||||
<range start="0" end="27"/>
|
||||
</style>
|
||||
<style name="fontface" value="Serif">
|
||||
<range start="0" end="27"/>
|
||||
</style>
|
||||
<style name="bold">
|
||||
<range start="0" end="27"/>
|
||||
</style>
|
||||
<style name="fontsize" value="8">
|
||||
<range start="0" end="27"/>
|
||||
</style>
|
||||
</note>
|
||||
<note handle="_d0436bcc69d6bba278bff5bc7db" change="1431184300" id="_footer1" type="General">
|
||||
<text>Footer: exported by __GRAMPS_HOMEPAGE__ on __EXPORT_DATE__</text>
|
||||
</note>
|
||||
<note handle="_d0436be64ac277b615b79b34e72" change="1431211661" id="_custom1" type="General">
|
||||
<text>Export date: __EXPORT_DATE__
|
||||
GRAMPS homepage: __GRAMPS_HOMEPAGE__
|
||||
GRAMPS version: __GRAMPS_VERSION__
|
||||
|
||||
Number of families: __NB_FAMILIES__
|
||||
Number of persons: __NB_INDIVIDUALS__
|
||||
Number of media objects: __NB_MEDIA__
|
||||
Number of sources: __NB_SOURCES__
|
||||
Number of repositories: __NB_REPOSITORIES__
|
||||
Number of places: __NB_PLACES__
|
||||
|
||||
Search form:
|
||||
__SEARCH_FORM__
|
||||
|
||||
Test link person: Garner von Zieliński, Lewis Anderson Sr
|
||||
Test link family: Family of Warner, Allen Carl and Garner, Rita Marie
|
||||
Test link source: World of the Wierd
|
||||
Test link media: 1897_expeditionsmannschaft_rio_a
|
||||
Test link place: Warren-Farmington Hills-Troy, MI
|
||||
|
||||
Test internet link: blog.codinghorror.com
|
||||
Test relative path link: relative file path to "archive.zip"
|
||||
Test relative path link: relative file path to "archive.tgz"
|
||||
|
||||
Thumbnail for "1897_expeditionsmannschaft_rio_a":
|
||||
__THUMB_O0010__
|
||||
Image "AntoineClaudet":
|
||||
__MEDIA_O0011__
|
||||
Thumbnail for "1897_expeditionsmannschaft_rio_a" with link:
|
||||
__THUMB_O0010__
|
||||
Image "AntoineClaudet" with link:
|
||||
__MEDIA_O0011__
|
||||
|
||||
Wrong media ID:
|
||||
__MEDIA_wrong id__</text>
|
||||
<style name="link" value="relative://relative.archive.zip">
|
||||
<range start="663" end="686"/>
|
||||
</style>
|
||||
<style name="link" value="gramps://Media/handle/238CGQ939HG18SS5MG">
|
||||
<range start="952" end="967"/>
|
||||
</style>
|
||||
<style name="link" value="gramps://Media/handle/238CGQ939HG18SS5MG">
|
||||
<range start="520" end="535"/>
|
||||
</style>
|
||||
<style name="link" value="gramps://Family/handle/48TJQCGNNIR5SJRCAK">
|
||||
<range start="413" end="429"/>
|
||||
</style>
|
||||
<style name="link" value="gramps://Person/handle/GNUJQCL9MD64AM56OH">
|
||||
<range start="355" end="371"/>
|
||||
</style>
|
||||
<style name="link" value="http://blog.codinghorror.com/">
|
||||
<range start="621" end="639"/>
|
||||
</style>
|
||||
<style name="link" value="gramps://Source/handle/VUBKMQTA2XZG1V6QP8">
|
||||
<range start="483" end="499"/>
|
||||
</style>
|
||||
<style name="link" value="gramps://Place/handle/3WTJQCB9F2MX9W98VP">
|
||||
<range start="570" end="585"/>
|
||||
</style>
|
||||
<style name="link" value="gramps://Media/handle/Y3ARGQWE088EQRTTDH">
|
||||
<range start="1002" end="1017"/>
|
||||
</style>
|
||||
<style name="link" value="relative://relative.archive.tgz">
|
||||
<range start="724" end="747"/>
|
||||
</style>
|
||||
</note>
|
||||
</notes>
|
||||
<bookmarks>
|
||||
<bookmark target="person" hlink="_AWFKQCJELLUWDY2PD3"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# gen/__init__.py
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -22,7 +22,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
@ -395,7 +395,7 @@ class ArgHandler(object):
|
||||
:param: climan: the manager of a CLI session
|
||||
:type: :class:`.CLIManager` object
|
||||
"""
|
||||
|
||||
# Handle the "-l" List Family Trees option.
|
||||
if self.list:
|
||||
print(_('List of known Family Trees in your database path\n'))
|
||||
|
||||
@ -406,6 +406,7 @@ class ArgHandler(object):
|
||||
% {'full_DB_path' : dirname, 'f_t_name' : name})
|
||||
sys.exit(0)
|
||||
|
||||
# Handle the "-L" List Family Trees in detail option.
|
||||
if self.list_more:
|
||||
print(_('Gramps Family Trees:'))
|
||||
summary_list = self.dbman.family_tree_summary()
|
||||
@ -414,26 +415,30 @@ class ArgHandler(object):
|
||||
print(_("Family Tree \"%s\":") % summary[_("Family Tree")])
|
||||
for item in sorted(summary):
|
||||
if item != "Family Tree":
|
||||
print(" %s: %s" % (item, summary[item]))
|
||||
# translators: needed for French, ignore otherwise
|
||||
print(_(" %s: %s") % (item, summary[item]))
|
||||
sys.exit(0)
|
||||
|
||||
# Handle the "-t" List Family Trees, tab delimited option.
|
||||
if self.list_table:
|
||||
print(_('Gramps Family Trees:'))
|
||||
summary_list = self.dbman.family_tree_summary()
|
||||
print(_("Family Tree"), end="")
|
||||
if not summary_list:
|
||||
sys.exit(0)
|
||||
# We have to construct the line elements together, to avoid
|
||||
# insertion of blank spaces when print on the same line is used
|
||||
line_list = [_("Family Tree")]
|
||||
for key in sorted(summary_list[0]):
|
||||
if key != "Family Tree":
|
||||
print("\t ", end="")
|
||||
print(key, end="")
|
||||
print()
|
||||
if key != _("Family Tree"):
|
||||
line_list += [key]
|
||||
print("\t".join(line_list))
|
||||
for summary in sorted(summary_list,
|
||||
key=lambda sum: sum[_("Family Tree")].lower()):
|
||||
print('"%s"' % summary[_("Family Tree")], end="")
|
||||
line_list = [('"%s"' % summary[_("Family Tree")])]
|
||||
for item in sorted(summary):
|
||||
if item != _("Family Tree"):
|
||||
print("\t ", end="")
|
||||
print('"%s"' % summary[item], end="")
|
||||
print()
|
||||
line_list += [('"%s"' % summary[item])]
|
||||
print("\t".join(line_list))
|
||||
sys.exit(0)
|
||||
|
||||
self.__open_action()
|
||||
|
@ -22,7 +22,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -17,7 +17,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
@ -497,6 +497,8 @@ def time_val(dirpath):
|
||||
if tval_mod > tval:
|
||||
tval = tval_mod
|
||||
last = time.strftime('%x %X', time.localtime(tval))
|
||||
if sys.version_info[0] < 3:
|
||||
last = last.decode(glocale.encoding)
|
||||
else:
|
||||
tval = 0
|
||||
last = _("Never")
|
||||
@ -517,6 +519,6 @@ def find_locker_name(dirpath):
|
||||
# feature request 2356: avoid genitive form
|
||||
last = _("Locked by %s") % username
|
||||
ifile.close()
|
||||
except (OSError, IOError):
|
||||
except (OSError, IOError, UnicodeDecodeError):
|
||||
last = _("Unknown")
|
||||
return last
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
@ -249,6 +249,13 @@ class CLIManager(object):
|
||||
_("Family Tree does not exist, as it has been deleted."))
|
||||
return
|
||||
|
||||
if os.path.isfile(os.path.join(filename, "lock")):
|
||||
self._errordialog(
|
||||
_("The database is locked."),
|
||||
_("Use the --force-unlock option if you are sure "
|
||||
"that the database is not in use."))
|
||||
return
|
||||
|
||||
if self.db_loader.read_file(filename):
|
||||
# Attempt to figure out the database title
|
||||
path = os.path.join(filename, "name.txt")
|
||||
@ -290,7 +297,10 @@ class CLIManager(object):
|
||||
# apply preferred researcher if loaded file has none
|
||||
res = self.dbstate.db.get_researcher()
|
||||
owner = get_researcher()
|
||||
if res.get_name() == "" and owner.get_name() != "":
|
||||
# If the DB Owner Info is empty and
|
||||
# [default] Researcher is not empty and
|
||||
# database is empty, then copy default researcher to DB owner
|
||||
if res.is_empty() and not owner.is_empty() and self.dbstate.db.is_empty():
|
||||
self.dbstate.db.set_researcher(owner)
|
||||
|
||||
name_displayer.set_name_format(self.dbstate.db.name_formats)
|
||||
|
@ -20,7 +20,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
#
|
||||
# cli.plug.__init__
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
""" Unittest for argparser.py """
|
||||
|
@ -15,7 +15,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
""" CLI tests for gramps """
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
""" Unittest for user.py """
|
||||
|
@ -15,7 +15,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
@ -117,7 +117,7 @@ class User(user.User):
|
||||
"""
|
||||
self._fileout.write("\r100%\n")
|
||||
|
||||
def prompt(self, title, message, accept_label, reject_label):
|
||||
def prompt(self, title, message, accept_label, reject_label, parent=None):
|
||||
"""
|
||||
Prompt the user with a message to select an alternative.
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# gen/__init__.py
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
@ -150,7 +150,7 @@ register('behavior.surname-guessing', 0)
|
||||
register('behavior.use-tips', False)
|
||||
register('behavior.welcome', 100)
|
||||
register('behavior.web-search-url', 'http://google.com/#&q=%(text)s')
|
||||
register('behavior.addons-url', "http://svn.code.sf.net/p/gramps-addons/code/trunk/")
|
||||
register('behavior.addons-url', "http://svn.code.sf.net/p/gramps-addons/code/branches/gramps41/")
|
||||
|
||||
register('export.proxy-order', [
|
||||
["privacy", 0],
|
||||
@ -169,6 +169,7 @@ register('geography.zoom', 0)
|
||||
register('geography.zoom_when_center', 12)
|
||||
register('geography.show_cross', False)
|
||||
register('geography.path', "")
|
||||
register('geography.use-keypad', True)
|
||||
|
||||
register('htmlview.start-url', "http://gramps-project.org")
|
||||
register('htmlview.url-handler', False)
|
||||
@ -295,6 +296,7 @@ register('preferences.hide-ep-msg', False)
|
||||
register('preferences.invalid-date-format', "<b>%s</b>")
|
||||
register('preferences.iprefix', 'I%04d')
|
||||
register('preferences.name-format', 1)
|
||||
register('preferences.place-format', 0)
|
||||
register('preferences.patronimic-surname', False)
|
||||
register('preferences.no-given-text', "[%s]" % _("Missing Given Name"))
|
||||
register('preferences.no-record-text', "[%s]" % _("Missing Record"))
|
||||
|
@ -18,7 +18,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
@ -49,7 +49,7 @@ from .constfunc import get_env_var, conv_to_unicode
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
PROGRAM_NAME = "Gramps"
|
||||
from ..version import VERSION, VERSION_TUPLE, major_version
|
||||
from gramps.version import VERSION, VERSION_TUPLE, major_version
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Standard GRAMPS Websites
|
||||
@ -135,6 +135,7 @@ git_revision = get_git_revision(ROOT_DIR)
|
||||
if sys.platform == 'win32' and git_revision == "":
|
||||
git_revision = get_git_revision(os.path.split(ROOT_DIR)[1])
|
||||
VERSION += git_revision
|
||||
#VERSION += "-1"
|
||||
|
||||
#
|
||||
# Glade files
|
||||
@ -191,7 +192,7 @@ GTK_GETTEXT_DOMAIN = 'gtk30'
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
COPYRIGHT_MSG = "© 2001-2006 Donald N. Allingham\n" \
|
||||
"© 2007-2014 The Gramps Developers"
|
||||
"© 2007-2015 The Gramps Developers"
|
||||
COMMENTS = _("Gramps\n (Genealogical Research and Analysis "
|
||||
"Management Programming System)\n"
|
||||
"is a personal genealogy program.")
|
||||
@ -214,9 +215,6 @@ DOCUMENTERS = [
|
||||
'Alexander Roitman',
|
||||
]
|
||||
|
||||
TRANSLATORS = _('TRANSLATORS: Translate this to your '
|
||||
'name in your native language')
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Constants
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -15,7 +15,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
# Catalan Version, 2008
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
@ -163,8 +163,10 @@ class DateParserCZ(DateParser):
|
||||
}
|
||||
|
||||
quality_to_int = {
|
||||
'přibližně' : Date.QUAL_ESTIMATED,
|
||||
'odhadované' : Date.QUAL_ESTIMATED,
|
||||
'odh.' : Date.QUAL_ESTIMATED,
|
||||
'vypočteno' : Date.QUAL_CALCULATED,
|
||||
'vypočtené' : Date.QUAL_CALCULATED,
|
||||
'vyp.' : Date.QUAL_CALCULATED,
|
||||
}
|
||||
@ -219,7 +221,9 @@ class DateDisplayCZ(DateDisplay):
|
||||
# this must agree with DateDisplayEn's "formats" definition
|
||||
# (since no locale-specific _display_gregorian exists, here)
|
||||
|
||||
def display(self, date):
|
||||
display = DateDisplay.display_formatted
|
||||
|
||||
def orig_display(self, date):
|
||||
"""
|
||||
Return a text string representing the date.
|
||||
"""
|
||||
@ -235,14 +239,14 @@ class DateDisplayCZ(DateDisplay):
|
||||
return date.get_text()
|
||||
elif start == Date.EMPTY:
|
||||
return ""
|
||||
elif mod == Date.MOD_NONE:
|
||||
date_decl_string = self.display_cal[cal](start)
|
||||
date_decl_string = date_decl_string.replace("den ", "dna ")
|
||||
date_decl_string = date_decl_string.replace("or ", "ora ")
|
||||
date_decl_string = date_decl_string.replace("en ", "na ")
|
||||
date_decl_string = date_decl_string.replace("ad ", "adu ")
|
||||
date_decl_string = date_decl_string.replace("ec ", "ce ")
|
||||
return date_decl_string
|
||||
# elif mod == Date.MOD_NONE:
|
||||
# date_decl_string = self.display_cal[cal](start)
|
||||
# date_decl_string = date_decl_string.replace("den ", "dna ")
|
||||
# date_decl_string = date_decl_string.replace("or ", "ora ")
|
||||
# date_decl_string = date_decl_string.replace("en ", "na ")
|
||||
# date_decl_string = date_decl_string.replace("ad ", "adu ")
|
||||
# date_decl_string = date_decl_string.replace("ec ", "ce ")
|
||||
# return date_decl_string
|
||||
elif mod == Date.MOD_SPAN:
|
||||
dat1 = self.display_cal[cal](start)
|
||||
dat2 = self.display_cal[cal](date.get_stop_date())
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -17,7 +17,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -18,7 +18,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@ -77,7 +77,7 @@ class DateParserFR(DateParser):
|
||||
'vers' : Date.MOD_ABOUT,
|
||||
'~' : Date.MOD_ABOUT,
|
||||
}
|
||||
|
||||
|
||||
quality_to_int = {
|
||||
'estimée': Date.QUAL_ESTIMATED,
|
||||
'est.' : Date.QUAL_ESTIMATED,
|
||||
@ -96,7 +96,7 @@ class DateParserFR(DateParser):
|
||||
def init_strings(self):
|
||||
"""
|
||||
This method compiles regular expression strings for matching dates.
|
||||
|
||||
|
||||
Most of the re's in most languages can stay as is. span and range
|
||||
most likely will need to change. Whatever change is done, this method
|
||||
may be called first as DateParser.init_strings(self) so that the
|
||||
@ -105,13 +105,13 @@ class DateParserFR(DateParser):
|
||||
override stuff from this method. See DateParserRU() as an example.
|
||||
"""
|
||||
DateParser.init_strings(self)
|
||||
|
||||
|
||||
DateParser.calendar_to_int.update({
|
||||
'révolutionnaire' : Date.CAL_FRENCH,
|
||||
'r' : Date.CAL_FRENCH,
|
||||
'perse' : Date.CAL_PERSIAN,
|
||||
})
|
||||
|
||||
|
||||
DateParser.month_to_int.update({
|
||||
"januaris" : 1,
|
||||
"januarii" : 1,
|
||||
@ -155,7 +155,7 @@ class DateParserFR(DateParser):
|
||||
"ernting" : 8,
|
||||
"septembris" : 9,
|
||||
"7bre" : 9,
|
||||
"7bris" : 9,
|
||||
"7bris" : 9,
|
||||
"september" : 9,
|
||||
"scheidling" : 9,
|
||||
"october" : 10,
|
||||
@ -163,7 +163,7 @@ class DateParserFR(DateParser):
|
||||
"8bre" : 10,
|
||||
"8bris" : 10,
|
||||
"gilbhard" : 10,
|
||||
"november" : 11,
|
||||
"november" : 11,
|
||||
"novembris" : 11,
|
||||
"9bre" : 11,
|
||||
"9bris" : 11,
|
||||
@ -177,15 +177,15 @@ class DateParserFR(DateParser):
|
||||
"xbris" : 12,
|
||||
"julmond" : 12,
|
||||
"christmond" : 12,
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
# This self._numeric is different from the base
|
||||
# avoid bug gregorian / french calendar conversion (+/-10 days)
|
||||
|
||||
self._numeric = re.compile("((\d+)[/\. ])?\s*((\d+)[/\.])?\s*(\d+)\s*$")
|
||||
self._span = re.compile("(de)\s+(?P<start>.+)\s+(à)\s+(?P<stop>.+)",
|
||||
self._numeric = re.compile(r"((\d+)[/\. ])?\s*((\d+)[/\.])?\s*(\d+)\s*$")
|
||||
self._span = re.compile(r"(de)\s+(?P<start>.+)\s+(à)\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(entre|ent\.|ent)\s+(?P<start>.+)\s+(et)\s+(?P<stop>.+)",
|
||||
self._range = re.compile(r"(entre|ent\.|ent)\s+(?P<start>.+)\s+(et)\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
|
||||
# This self._text are different from the base
|
||||
@ -193,32 +193,32 @@ class DateParserFR(DateParser):
|
||||
|
||||
#gregorian and julian
|
||||
|
||||
self._text2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
|
||||
self._text2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
|
||||
self._mon_str, re.IGNORECASE)
|
||||
|
||||
#hebrew
|
||||
|
||||
self._jtext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
|
||||
self._jtext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
|
||||
self._jmon_str, re.IGNORECASE)
|
||||
|
||||
#french
|
||||
|
||||
self._ftext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
|
||||
self._ftext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
|
||||
self._fmon_str, re.IGNORECASE)
|
||||
|
||||
#persian
|
||||
|
||||
self._ptext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
|
||||
self._ptext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
|
||||
self._pmon_str, re.IGNORECASE)
|
||||
|
||||
#islamic
|
||||
|
||||
self._itext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
|
||||
self._itext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
|
||||
self._imon_str, re.IGNORECASE)
|
||||
|
||||
#swedish
|
||||
|
||||
self._stext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
|
||||
self._stext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
|
||||
self._smon_str, re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@ -228,7 +228,7 @@ class DateParserFR(DateParser):
|
||||
#-------------------------------------------------------------------------
|
||||
class DateDisplayFR(DateDisplay):
|
||||
"""
|
||||
French language date display class.
|
||||
French language date display class.
|
||||
"""
|
||||
|
||||
_bce_str = "%s avant le calendrier"
|
||||
@ -239,7 +239,7 @@ class DateDisplayFR(DateDisplay):
|
||||
_locale_tformat = _locale_tformat.replace('%d', "J")
|
||||
_locale_tformat = _locale_tformat.replace('%m', "M")
|
||||
_locale_tformat = _locale_tformat.replace('%Y', "A")
|
||||
|
||||
|
||||
formats = ("AAAA-MM-JJ (ISO)", # 0
|
||||
"Défaut système (" + _locale_tformat + ")", # 1
|
||||
"Jour Mois Année", # 2
|
||||
@ -247,8 +247,8 @@ class DateDisplayFR(DateDisplay):
|
||||
"Jour. Mois Année", # 4
|
||||
"Jour. MOI Année", # 5
|
||||
"Mois Jour, Année", # 6
|
||||
"MOI Jour, Année", # 7
|
||||
)
|
||||
"MOI Jour, Année",) # 7
|
||||
|
||||
# this definition must agree with its "_display_gregorian" method
|
||||
|
||||
def _display_gregorian(self, date_val, **kwargs):
|
||||
@ -291,7 +291,7 @@ class DateDisplayFR(DateDisplay):
|
||||
value = "%s %s" % (self.long_months[date_val[1]], year)
|
||||
else:
|
||||
|
||||
value = "%d %s %s" % (date_val[0],
|
||||
value = "%d %s %s" % (date_val[0],
|
||||
self.long_months[date_val[1]], year)
|
||||
elif self.format == 3:
|
||||
|
||||
@ -304,7 +304,7 @@ class DateDisplayFR(DateDisplay):
|
||||
value = "%s %s" % (self.short_months[date_val[1]], year)
|
||||
else:
|
||||
|
||||
value = "%d %s %s" % (date_val[0],
|
||||
value = "%d %s %s" % (date_val[0],
|
||||
self.short_months[date_val[1]], year)
|
||||
elif self.format == 4:
|
||||
|
||||
@ -318,10 +318,10 @@ class DateDisplayFR(DateDisplay):
|
||||
else:
|
||||
|
||||
# base_display :
|
||||
# value = "%d %s %s" % (date_val[0],
|
||||
# value = "%d %s %s" % (date_val[0],
|
||||
# self.long_months[date_val[1]], year)
|
||||
|
||||
value = "%d. %s %s" % (date_val[0],
|
||||
value = "%d. %s %s" % (date_val[0],
|
||||
self.long_months[date_val[1]],
|
||||
year)
|
||||
elif self.format == 5:
|
||||
@ -336,11 +336,11 @@ class DateDisplayFR(DateDisplay):
|
||||
else:
|
||||
|
||||
# base_display :
|
||||
# value = "%d %s %s" % (date_val[0],
|
||||
# value = "%d %s %s" % (date_val[0],
|
||||
# self.short_months[date_val[1]], year)
|
||||
|
||||
value = "%d. %s %s" % (date_val[0],
|
||||
self.short_months[date_val[1]], year)
|
||||
value = "%d. %s %s" % (date_val[0],
|
||||
self.short_months[date_val[1]], year)
|
||||
elif self.format == 6:
|
||||
|
||||
# month_name day, year
|
||||
@ -367,12 +367,12 @@ class DateDisplayFR(DateDisplay):
|
||||
date_val[0], year)
|
||||
else:
|
||||
return self.display_iso(date_val)
|
||||
|
||||
|
||||
if date_val[2] < 0:
|
||||
return self._bce_str % value
|
||||
else:
|
||||
return value
|
||||
|
||||
|
||||
display = DateDisplay.display_formatted
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@ -382,4 +382,4 @@ class DateDisplayFR(DateDisplay):
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
register_datehandler(('fr_FR', 'fr', 'french', 'French', 'fr_CA',
|
||||
'fr_BE', 'fr_CH'), DateParserFR, DateDisplayFR)
|
||||
'fr_BE', 'fr_CH'), DateParserFR, DateDisplayFR)
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# $Id: _date_hr.py 22672 2013-07-13 18:01:08Z paul-franklin $
|
||||
#
|
||||
@ -75,20 +75,18 @@ class DateParserHR(DateParser):
|
||||
compiles regular expression strings for matching dates
|
||||
"""
|
||||
DateParser.init_strings(self)
|
||||
#~ DateParser.calendar_to_int.update({
|
||||
#~ 'персидский' : Date.CAL_PERSIAN,
|
||||
#~ 'п' : Date.CAL_PERSIAN,
|
||||
#~ })
|
||||
_span_1 = ['od']
|
||||
_span_2 = ['do']
|
||||
_range_1 = ['između']
|
||||
_range_2 = ['i']
|
||||
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)),
|
||||
re.IGNORECASE)
|
||||
# match 'Day. MONTH year.' format with or without dots
|
||||
self._text2 = re.compile('(\d+)?\.?\s*?%s\.?\s*((\d+)(/\d+)?)?\s*\.?$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
# match Day.Month.Year.
|
||||
self._numeric = re.compile(
|
||||
"((\d+)[/\. ])?\s*((\d+)[/\.])?\s*(\d+)\.?$")
|
||||
self._span = re.compile(
|
||||
"(od)\s+(?P<start>.+)\s+(do)\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._jtext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'\
|
||||
% self._jmon_str, re.IGNORECASE)
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -104,6 +102,39 @@ class DateDisplayHR(DateDisplay):
|
||||
_bce_str = "%s p.n.e."
|
||||
|
||||
display = DateDisplay.display_formatted
|
||||
|
||||
def dd_dformat01(self, date_val):
|
||||
"""
|
||||
numerical
|
||||
"""
|
||||
if date_val[3]:
|
||||
return self.display_iso(date_val)
|
||||
else:
|
||||
if date_val[0] == date_val[1] == 0:
|
||||
return str(date_val[2]) + '.'
|
||||
else:
|
||||
value = self._tformat.replace('%m', str(date_val[1]))
|
||||
value = value.replace('%d', str(date_val[0]))
|
||||
value = value.replace('%Y', str(abs(date_val[2])))
|
||||
return value
|
||||
|
||||
def dd_dformat04(self, date_val, inflect, long_months):
|
||||
"""
|
||||
day month_name year
|
||||
"""
|
||||
year = self._slash_year(date_val[2], date_val[3])
|
||||
if date_val[0] == 0:
|
||||
if date_val[1] == 0:
|
||||
return year + '.'
|
||||
else:
|
||||
return self.format_long_month_year(date_val[1], year,
|
||||
inflect, long_months)
|
||||
else:
|
||||
return "{day:d}. {long_month.f[G]} {year}.".format(
|
||||
day = date_val[0],
|
||||
long_month = long_months[date_val[1]],
|
||||
year = year)
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
# Italian version, 2009 (derived from the catalan version)
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
# Written by Benny Malengier
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
# Polish version 2007 by Piotr Czubaszek
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Portuguese version translated by Duarte Loreto <happyguy_pt@hotmail.com>, 2007.
|
||||
# Based on the Spanish file.
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
@ -119,6 +119,23 @@ class DateDisplayRU(DateDisplay):
|
||||
|
||||
display = DateDisplay.display_formatted
|
||||
|
||||
def dd_dformat04(self, date_val, inflect, long_months):
|
||||
"""
|
||||
day month_name year -- for Russian locale
|
||||
"""
|
||||
year = self._slash_year(date_val[2], date_val[3])
|
||||
if date_val[0] == 0:
|
||||
if date_val[1] == 0:
|
||||
return year
|
||||
else:
|
||||
return self.format_long_month_year(date_val[1], year,
|
||||
inflect, long_months)
|
||||
else:
|
||||
return "{day:d} {long_month.f[Р]} {year}".format(
|
||||
day = date_val[0],
|
||||
long_month = long_months[date_val[1]],
|
||||
year = year)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Register classes
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
@ -59,7 +59,7 @@ class DateParserSK(DateParser):
|
||||
calendar_to_int = {
|
||||
'gregoriánsky' : Date.CAL_GREGORIAN,
|
||||
'g' : Date.CAL_GREGORIAN,
|
||||
'juliánský' : Date.CAL_JULIAN,
|
||||
'juliánsky' : Date.CAL_JULIAN,
|
||||
'j' : Date.CAL_JULIAN,
|
||||
'hebrejský' : Date.CAL_HEBREW,
|
||||
'h' : Date.CAL_HEBREW,
|
||||
@ -69,7 +69,7 @@ class DateParserSK(DateParser):
|
||||
'r' : Date.CAL_FRENCH,
|
||||
'perzský' : Date.CAL_PERSIAN,
|
||||
'p' : Date.CAL_PERSIAN,
|
||||
'swedish' : Date.CAL_SWEDISH,
|
||||
'švédsky' : Date.CAL_SWEDISH,
|
||||
's' : Date.CAL_SWEDISH,
|
||||
}
|
||||
|
||||
@ -110,9 +110,9 @@ class DateDisplaySK(DateDisplay):
|
||||
"júl", "aug", "sep", "okt", "nov", "dec" )
|
||||
|
||||
calendar = (
|
||||
"", "juliánský", "hebrejský",
|
||||
"", "juliánsky", "hebrejský",
|
||||
"republikánsky", "perzský", "islamský",
|
||||
"swedish"
|
||||
"švédsky"
|
||||
)
|
||||
|
||||
_mod_str = ("", "pred ", "po ", "okolo ", "", "", "")
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
# Slovenian version 2010 by Bernard Banko, based on croatian one by Josip
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
# Serbian version by Vlada Perić <vlada.peric@gmail.com>, 2009.
|
||||
@ -230,46 +230,15 @@ class DateParserSR(DateParser):
|
||||
# Serbian display
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class DateDisplaySR_latin(DateDisplay):
|
||||
class DateDisplaySR_Base(DateDisplay):
|
||||
"""
|
||||
Serbian (latin) date display class
|
||||
Serbian (base) date display class
|
||||
"""
|
||||
long_months = ("",
|
||||
"januara", "februara", "marta", "aprila",
|
||||
"maja", "juna", "jula", "avgusta",
|
||||
"septembra", "oktobra", "novembra", "decembra"
|
||||
)
|
||||
|
||||
short_months = ("",
|
||||
"jan", "feb", "mar", "apr", "maj", "jun",
|
||||
"jul", "avg", "sep", "okt", "nov", "dec"
|
||||
)
|
||||
|
||||
roman_months = (
|
||||
"", "I", "II", "III", "IV", "V", "VI",
|
||||
"VII", "VIII", "IX", "X", "XI", "XII"
|
||||
)
|
||||
|
||||
calendar = (
|
||||
"", "julijanski", "hebrejski",
|
||||
"francuski republikanski", "persijski", "islamski",
|
||||
"švedski"
|
||||
)
|
||||
|
||||
_mod_str = ("", "pre ", "posle ", "oko ", "", "", "")
|
||||
|
||||
_qual_str = ("", "procenjeno ", "izračunato ")
|
||||
|
||||
_bce_str = "%s p.n.e."
|
||||
|
||||
formats = (
|
||||
"GGGG-MM-DD (ISO-8601)",
|
||||
"Numerički (DD.MM.GGGG.)",
|
||||
"D. MMM GGGG.",
|
||||
"D. Mesec GGGG.",
|
||||
"D. Rb GGGG."
|
||||
)
|
||||
# this definition must agree with its "_display_gregorian" method
|
||||
|
||||
def _display_gregorian(self, date_val):
|
||||
"""
|
||||
@ -338,6 +307,10 @@ class DateDisplaySR_latin(DateDisplay):
|
||||
newyear = date.get_new_year()
|
||||
|
||||
qual_str = self._qual_str[qual]
|
||||
span1 = self._span1
|
||||
span2 = self._span2
|
||||
range1 = self._range1
|
||||
range2 = self._range2
|
||||
|
||||
if mod == Date.MOD_TEXTONLY:
|
||||
return date.get_text()
|
||||
@ -347,13 +320,13 @@ class DateDisplaySR_latin(DateDisplay):
|
||||
d_1 = self.display_cal[cal](start)
|
||||
d_2 = self.display_cal[cal](date.get_stop_date())
|
||||
scal = self.format_extras(cal, newyear)
|
||||
return "%s%s %s %s %s%s" % (qual_str, 'od', d_1, 'do', d_2,
|
||||
return "%s%s %s %s %s%s" % (qual_str, span1, d_1, span2, d_2,
|
||||
scal)
|
||||
elif mod == Date.MOD_RANGE:
|
||||
d_1 = self.display_cal[cal](start)
|
||||
d_2 = self.display_cal[cal](date.get_stop_date())
|
||||
scal = self.format_extras(cal, newyear)
|
||||
return "%s%s %s %s %s%s" % (qual_str, 'između', d_1, 'i', d_2,
|
||||
return "%s%s %s %s %s%s" % (qual_str, range1, d_1, range2, d_2,
|
||||
scal)
|
||||
else:
|
||||
text = self.display_cal[date.get_calendar()](start)
|
||||
@ -361,11 +334,98 @@ class DateDisplaySR_latin(DateDisplay):
|
||||
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text,
|
||||
scal)
|
||||
|
||||
class DateDisplaySR_Latin(DateDisplaySR_Base):
|
||||
"""
|
||||
Serbian (Latin) date display class
|
||||
"""
|
||||
|
||||
long_months = ("",
|
||||
"januara", "februara", "marta", "aprila",
|
||||
"maja", "juna", "jula", "avgusta",
|
||||
"septembra", "oktobra", "novembra", "decembra"
|
||||
)
|
||||
|
||||
short_months = ("",
|
||||
"jan", "feb", "mar", "apr", "maj", "jun",
|
||||
"jul", "avg", "sep", "okt", "nov", "dec"
|
||||
)
|
||||
|
||||
calendar = (
|
||||
"", "julijanski", "hebrejski",
|
||||
"francuski republikanski", "persijski", "islamski",
|
||||
"švedski"
|
||||
)
|
||||
|
||||
_mod_str = ("", "pre ", "posle ", "oko ", "", "", "")
|
||||
|
||||
_qual_str = ("", "procenjeno ", "izračunato ")
|
||||
|
||||
_bce_str = "%s p.n.e."
|
||||
|
||||
formats = (
|
||||
"GGGG-MM-DD (ISO-8601)",
|
||||
"Numerički (DD.MM.GGGG.)",
|
||||
"D. MMM GGGG.",
|
||||
"D. Mesec GGGG.",
|
||||
"D. Rb GGGG."
|
||||
)
|
||||
# this definition must agree with its "_display_gregorian" method
|
||||
|
||||
_span1 = 'od'
|
||||
_span2 = 'do'
|
||||
_range1 = 'između'
|
||||
_range2 = 'i'
|
||||
|
||||
class DateDisplaySR_Cyrillic(DateDisplaySR_Base):
|
||||
"""
|
||||
Serbian (Cyrillic) date display class
|
||||
"""
|
||||
|
||||
long_months = ("",
|
||||
"Јануар", "Фебруар", "Март", "Април",
|
||||
"Мај", "Јуне", "Јули", "Аугуст",
|
||||
"Септембар", "Оцтобер", "Новембер", "Децембар"
|
||||
)
|
||||
|
||||
short_months = ("",
|
||||
"Јан", "Феб", "Мар", "Апр", "Мај", "Јун",
|
||||
"Јул", "Авг", "Сеп", "Окт", "Нов", "Дец"
|
||||
)
|
||||
|
||||
calendar = (
|
||||
"", "Јулиан", "хебрејски",
|
||||
"француски републиканац", "Персиан", "исламски",
|
||||
"шведски"
|
||||
)
|
||||
|
||||
_mod_str = ("", "пре ", "после ", "око ", "", "", "")
|
||||
|
||||
_qual_str = ("", "процењено ", "израчунато ")
|
||||
|
||||
_bce_str = "%s п.н.е."
|
||||
|
||||
formats = (
|
||||
"ГГГГ-ММ-ДД (ISO-8601)",
|
||||
"Нумеричка (ДД.ММ.ГГГГ.)",
|
||||
"Д. МММ ГГГГ.",
|
||||
"Д. Месец ГГГГ.",
|
||||
"Д. Rb ГГГГ."
|
||||
)
|
||||
# this definition must agree with its "_display_gregorian" method
|
||||
|
||||
_span1 = 'из'
|
||||
_span2 = 'до'
|
||||
_range1 = 'између'
|
||||
_range2 = 'и'
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Register classes
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
register_datehandler(('sr', 'serbian', 'srpski', 'sr_RS'),
|
||||
DateParserSR, DateDisplaySR_latin)
|
||||
register_datehandler(('srpski', 'Srpski',
|
||||
'sr_Latn', 'sr_Latn_RS', 'sr_RS@latin'),
|
||||
DateParserSR, DateDisplaySR_Latin)
|
||||
register_datehandler(('sr', 'српски', 'Српски', 'serbian',
|
||||
'sr_RS', 'sr_Cyrl', 'sr_Cyrl_RS'),
|
||||
DateParserSR, DateDisplaySR_Cyrillic)
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -3,7 +3,7 @@
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2004-2006 Donald N. Allingham
|
||||
# Copyright (C) 2013 Fedir Zinchuk <fedikw[at]gmail.com>
|
||||
# Copyright (C) 2013-2014 Fedir Zinchuk <fedikw[at]gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@ -17,7 +17,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
@ -42,7 +42,6 @@ from ..lib.date import Date
|
||||
from ._dateparser import DateParser
|
||||
from ._datedisplay import DateDisplay
|
||||
from ._datehandler import register_datehandler
|
||||
from . import _grampslocale
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -51,53 +50,10 @@ from . import _grampslocale
|
||||
#-------------------------------------------------------------------------
|
||||
class DateParserUK(DateParser):
|
||||
"""
|
||||
Convert a text string into a Date object. If the date cannot be
|
||||
Convert a text string into a :class:`.Date` object. If the date cannot be
|
||||
converted, the text string is assigned.
|
||||
"""
|
||||
|
||||
month_to_int = DateParser.month_to_int
|
||||
|
||||
# the genitive
|
||||
month_to_int["січня"] = 1
|
||||
month_to_int["лютого"] = 2
|
||||
month_to_int["березня"] = 3
|
||||
month_to_int["квітня"] = 4
|
||||
month_to_int["травня"] = 5
|
||||
month_to_int["червня"] = 6
|
||||
month_to_int["липня"] = 7
|
||||
month_to_int["серпня"] = 8
|
||||
month_to_int["вересня"] = 9
|
||||
month_to_int["жовтня"] = 10
|
||||
month_to_int["листопада"] = 11
|
||||
month_to_int["грудня"] = 12
|
||||
|
||||
# some short variants of the months
|
||||
month_to_int["січ."] = 1
|
||||
month_to_int["січ"] = 1
|
||||
month_to_int["лют."] = 2
|
||||
month_to_int["лют"] = 2
|
||||
month_to_int["бер."] = 3
|
||||
month_to_int["бер"] = 3
|
||||
month_to_int["квіт."] = 4
|
||||
month_to_int["квіт"] = 4
|
||||
month_to_int["трав."] = 5
|
||||
month_to_int["трав"] = 5
|
||||
month_to_int["черв."] = 6
|
||||
month_to_int["черв"] = 6
|
||||
month_to_int["лип."] = 7
|
||||
month_to_int["лип"] = 7
|
||||
month_to_int["серп."] = 8
|
||||
month_to_int["серп"] = 8
|
||||
month_to_int["вер."] = 9
|
||||
month_to_int["вер"] = 9
|
||||
month_to_int["жовт."] = 10
|
||||
month_to_int["жовт"] = 10
|
||||
month_to_int["лист."] = 11
|
||||
month_to_int["лист"] = 11
|
||||
month_to_int["груд."] = 12
|
||||
month_to_int["груд"] = 12
|
||||
|
||||
|
||||
# modifiers before the date
|
||||
modifier_to_int = {
|
||||
'перед' : Date.MOD_BEFORE,
|
||||
@ -116,89 +72,6 @@ class DateParserUK(DateParser):
|
||||
'біля' : Date.MOD_ABOUT,
|
||||
}
|
||||
|
||||
hebrew_to_int = {
|
||||
"тішрі" : 1, "хешвен" : 2, "кіслев" : 3,
|
||||
"тевет" : 4, "шват" : 5, "адар" : 6,
|
||||
"адара" : 7, "нісан" : 8, "іяр" : 9,
|
||||
"сиван" : 10, "таммуз" : 11, "ав" : 12,
|
||||
"елул" : 13,
|
||||
#alternative spelling
|
||||
"мархешван": 2, "ве адар" : 7,
|
||||
#GEDCOM months
|
||||
"tsh" : 1, "csh": 5, "ksl": 3, "tvt": 4, "shv": 5, "adr": 6,
|
||||
"ads" : 7, "nsn": 8, "iyr": 9, "svn":10, "tmz":11, "aav":12,
|
||||
"ell":13,
|
||||
}
|
||||
|
||||
french_to_int = {
|
||||
'вандем’єр' : 1, 'брюмер' : 2,
|
||||
'фрімер' : 3, 'нівоз' : 4,
|
||||
'плювіоз' : 5, 'вентоз' : 6,
|
||||
'жерміналь' : 7, 'флореаль' : 8,
|
||||
'преріаль' : 9, 'мессідор' : 10,
|
||||
'термідор' : 11, 'фрюктідор': 12,
|
||||
'додатковий' : 13,
|
||||
#short
|
||||
'ванд' : 1, 'брюм' : 2,
|
||||
'фрім' : 3, 'нів' : 4,
|
||||
'плюв' : 5, 'вент' : 6,
|
||||
'жерм' : 7, 'флор' : 8,
|
||||
'прер' : 9, 'месс' : 10,
|
||||
'терм' : 11, 'фрюкт': 12,
|
||||
'дод' : 13,
|
||||
#GEDCOM months
|
||||
'vend' : 1, 'brum' : 2,
|
||||
'frim' : 3, 'nivo' : 4,
|
||||
'pluv' : 5, 'vent' : 6,
|
||||
'germ' : 7, 'flor' : 8,
|
||||
'prai' : 9, 'mess' : 10,
|
||||
'ther' : 11, 'fruc' : 12,
|
||||
'comp' : 13,
|
||||
}
|
||||
|
||||
islamic_to_int = {
|
||||
"мухаррам" : 1, "мухаррем" : 1,
|
||||
"сафар" : 2, "рабі-аль-авваль" : 3,
|
||||
"рабі-ассані" : 4,
|
||||
"джумада-аль-уля" : 5, "джумада-аль-авваль" : 5,
|
||||
"джумада-аль-ахіра" : 6, "джумада-ас-сані" : 6,
|
||||
"раджаб" : 7, "шаабан" : 8,
|
||||
"рамадан" : 9, "рамазан" : 9,
|
||||
"шавваль" : 10, "зуль-каада" : 11,
|
||||
"зуль-хіджжа" : 12,
|
||||
}
|
||||
|
||||
persian_to_int = {
|
||||
"фарвардін" : 1, "ордібехешт" : 2,
|
||||
"хордад" : 3, "тир" : 4,
|
||||
"мордад" : 5, "шахрівар" : 6,
|
||||
"мехр" : 7, "абан" : 8,
|
||||
"азар" : 9, "дей" : 10,
|
||||
"бахман" : 11, "есфанд" : 12,
|
||||
}
|
||||
|
||||
bce = ['до нашої ери', 'до н. е.', 'до н.е.']
|
||||
|
||||
calendar_to_int = {
|
||||
'григоріанський' : Date.CAL_GREGORIAN,
|
||||
'г' : Date.CAL_GREGORIAN,
|
||||
'юліанський' : Date.CAL_JULIAN,
|
||||
'ю' : Date.CAL_JULIAN,
|
||||
'єврейський' : Date.CAL_HEBREW,
|
||||
'є' : Date.CAL_HEBREW,
|
||||
'ісламський' : Date.CAL_ISLAMIC,
|
||||
'і' : Date.CAL_ISLAMIC,
|
||||
'французький' : Date.CAL_FRENCH,
|
||||
'французький республіканський': Date.CAL_FRENCH,
|
||||
'французький революційний' : Date.CAL_FRENCH,
|
||||
'ф' : Date.CAL_FRENCH,
|
||||
'іранський' : Date.CAL_PERSIAN,
|
||||
'перський' : Date.CAL_PERSIAN,
|
||||
'п' : Date.CAL_PERSIAN,
|
||||
'шведський' : Date.CAL_SWEDISH,
|
||||
'ш' : Date.CAL_SWEDISH,
|
||||
}
|
||||
|
||||
quality_to_int = {
|
||||
'за оцінкою' : Date.QUAL_ESTIMATED,
|
||||
'за оц.' : Date.QUAL_ESTIMATED,
|
||||
@ -206,6 +79,7 @@ class DateParserUK(DateParser):
|
||||
'орієнтовно' : Date.QUAL_ESTIMATED,
|
||||
'приблизно' : Date.QUAL_ESTIMATED,
|
||||
'прибл.' : Date.QUAL_ESTIMATED,
|
||||
|
||||
'підраховано' : Date.QUAL_CALCULATED,
|
||||
'підрах.' : Date.QUAL_CALCULATED,
|
||||
'розраховано' : Date.QUAL_CALCULATED,
|
||||
@ -213,6 +87,11 @@ class DateParserUK(DateParser):
|
||||
'розрах.' : Date.QUAL_CALCULATED,
|
||||
}
|
||||
|
||||
bce = [
|
||||
'до нашої ери', 'до н. е.', 'до н.е.',
|
||||
'до народження Христа'
|
||||
] + DateParser.bce
|
||||
|
||||
def init_strings(self):
|
||||
"""
|
||||
This method compiles regular expression strings for matching dates.
|
||||
@ -221,12 +100,19 @@ class DateParserUK(DateParser):
|
||||
"""
|
||||
DateParser.init_strings(self)
|
||||
|
||||
DateParser.hebrew_to_int.update({
|
||||
'мархешван': 2,
|
||||
'ве адар' : 7,
|
||||
'адар бет' : 7,
|
||||
'авів' : 8,
|
||||
})
|
||||
|
||||
_span_1 = ['з', 'від']
|
||||
# b.c.e. pattern also have "до" so skip "до н."
|
||||
_span_2 = ['по', 'до?!\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 +129,10 @@ class DateDisplayUK(DateDisplay):
|
||||
Ukrainian language date display class.
|
||||
"""
|
||||
|
||||
# the months as the noun or as the genitive???
|
||||
|
||||
# as the genitive:
|
||||
long_months = (
|
||||
"", "січня", "лютого", "березня", "квітня",
|
||||
"травня", "червня", "липня", "серпня",
|
||||
"вересня", "жовтня", "листопада", "грудня"
|
||||
)
|
||||
|
||||
# as the noun:
|
||||
# long_months = (
|
||||
# "", "січень", "лютий", "березень", "квітень",
|
||||
# "травень", "червень", "липень", "серпень",
|
||||
# "вересень", "жовтень", "листопад", "грудень"
|
||||
# )
|
||||
|
||||
short_months = (
|
||||
"", "січ.", "лют.", "бер.", "квіт.", "трав.", "черв.",
|
||||
"лип.", "серп.", "вер.", "жовт.", "лист.", "груд."
|
||||
)
|
||||
|
||||
hebrew = (
|
||||
"", "тішрі", "хешвен", "кіслев", "тевет", "шват",
|
||||
"адар", "адара", "нісан", "іяр", "сиван", "таммуз",
|
||||
"ав", "елул"
|
||||
)
|
||||
|
||||
french = (
|
||||
'', 'вандем’єр', 'брюмер', 'фрімер', 'нівоз',
|
||||
'плювіоз', 'вентоз', 'жерміналь', 'флореаль',
|
||||
'преріаль', 'мессідор', 'термідор', 'фрюктідор',
|
||||
'додатковий'
|
||||
)
|
||||
|
||||
persian = (
|
||||
"", "фарвардін", "ордібехешт", "хордад", "тир",
|
||||
"мордад", "шахрівар", "мехр", "абан",
|
||||
"азар", "дей", "бахман", "есфанд"
|
||||
)
|
||||
|
||||
islamic = (
|
||||
"", "мухаррам", "сафар", "рабі-аль-авваль",
|
||||
"рабі-ассані", "джумада-аль-уля", "джумада-аль-ахіра",
|
||||
"раджаб", "шаабан", "рамадан", "шавваль", "зуль-каада",
|
||||
"зуль-хіджжа",
|
||||
)
|
||||
|
||||
# Replace the previous "Numerical" by a string which
|
||||
# do have an explicit meaning: "System default (format)"
|
||||
_locale_tformat = _grampslocale.tformat
|
||||
_locale_tformat = _locale_tformat.replace('%d', "д")
|
||||
_locale_tformat = _locale_tformat.replace('%m', "м")
|
||||
_locale_tformat = _locale_tformat.replace('%Y', "р")
|
||||
|
||||
formats = (
|
||||
"рррр-мм-дд (ISO)", #0
|
||||
"стандартний для системи (" + _locale_tformat + ")", #1
|
||||
"місяць день, рік", #2
|
||||
"міс. дд, рррр", #3
|
||||
"день місяць рік", #4
|
||||
"дд міс. рррр" #5
|
||||
)
|
||||
# this must agree with DateDisplayEn's "formats" definition
|
||||
# (since no locale-specific _display_gregorian exists, here)
|
||||
|
||||
calendar = (
|
||||
"", "юліанський", "єврейський", "французький республіканський",
|
||||
"іранський", "ісламський", "шведський"
|
||||
)
|
||||
|
||||
_mod_str = ("", "до ", "після ", "близько ", "", "", "")
|
||||
|
||||
_qual_str = ("", "орієнтовно ", "розрахунково ")
|
||||
|
||||
_bce_str = "%s до н.е."
|
||||
|
||||
def display(self, date):
|
||||
"""
|
||||
Return a text string representing the date.
|
||||
"""
|
||||
mod = date.get_modifier()
|
||||
cal = date.get_calendar()
|
||||
qual = date.get_quality()
|
||||
start = date.get_start_date()
|
||||
newyear = date.get_new_year()
|
||||
display = DateDisplay.display_formatted
|
||||
|
||||
qual_str = self._qual_str[qual]
|
||||
|
||||
if mod == Date.MOD_TEXTONLY:
|
||||
return date.get_text()
|
||||
elif start == Date.EMPTY:
|
||||
return ""
|
||||
elif mod == Date.MOD_SPAN:
|
||||
d1 = self.display_cal[cal](start)
|
||||
d2 = self.display_cal[cal](date.get_stop_date())
|
||||
scal = self.format_extras(cal, newyear)
|
||||
return "%sз %s %s %s%s" % (qual_str, d1, 'по', d2,
|
||||
scal)
|
||||
elif mod == Date.MOD_RANGE:
|
||||
d1 = self.display_cal[cal](start)
|
||||
d2 = self.display_cal[cal](date.get_stop_date())
|
||||
scal = self.format_extras(cal, newyear)
|
||||
return "%s%s %s %s %s%s" % (qual_str, 'між', d1, 'та',
|
||||
d2, scal)
|
||||
else:
|
||||
text = self.display_cal[date.get_calendar()](start)
|
||||
scal = self.format_extras(cal, newyear)
|
||||
return "%s%s%s%s" % (qual_str, self._mod_str[mod],
|
||||
text, scal)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
|
@ -3,6 +3,8 @@
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2004-2006 Donald N. Allingham
|
||||
# Copyright (C) 2013 Vassilii Khachaturov
|
||||
# Copyright (C) 2014 Paul Franklin
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@ -16,7 +18,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
@ -65,7 +67,7 @@ class DateDisplay(object):
|
||||
# such as YY.MM.DD, MM-DD-YY, or whatever your locale prefers.
|
||||
# This should be the format that is used under the locale by
|
||||
# strftime() for '%x'.
|
||||
# You may translate this string as "Numerical", "System preferred", or similar.
|
||||
# You may translate this as "Numerical", "System preferred", or similar.
|
||||
_("date format|Numerical"),
|
||||
|
||||
# Full month name, day, year
|
||||
@ -83,10 +85,11 @@ class DateDisplay(object):
|
||||
"""
|
||||
.. note:: Will be overridden if a locale-specific date displayer exists.
|
||||
|
||||
If your localized :meth:`~_display_calendar`/:meth:`~_display_gregorian` are
|
||||
overridden,you should override the whole formats list according to your own
|
||||
formats, and you need not localize the format names here. This ``formats``
|
||||
must agree with :meth:`~_display_calendar`/:meth:`~_display_gregorian`.
|
||||
If your localized :meth:`~_display_calendar`/:meth:`~_display_gregorian`
|
||||
are overridden, you should override the whole formats list according
|
||||
to your own formats, and you need not localize the format names here.
|
||||
This ``formats`` must agree with
|
||||
:meth:`~_display_calendar`/:meth:`~_display_gregorian`.
|
||||
"""
|
||||
del _
|
||||
|
||||
@ -182,18 +185,21 @@ class DateDisplay(object):
|
||||
: _("and|{long_month} {year}"),
|
||||
|
||||
"before"
|
||||
# You only need to translate this string if you translate one of the
|
||||
# inflect=_("...") with "before"
|
||||
# If "before <Month>" needs a special inflection in your
|
||||
# language, translate this to "{long_month.f[X]} {year}"
|
||||
# (where X is one of the month-name inflections you defined)
|
||||
: _("before|{long_month} {year}"),
|
||||
|
||||
"after"
|
||||
# You only need to translate this string if you translate one of the
|
||||
# inflect=_("...") with "after"
|
||||
# If "after <Month>" needs a special inflection in your
|
||||
# language, translate this to "{long_month.f[X]} {year}"
|
||||
# (where X is one of the month-name inflections you defined)
|
||||
: _("after|{long_month} {year}"),
|
||||
|
||||
"about"
|
||||
# You only need to translate this string if you translate one of the
|
||||
# inflect=_("...") with "about"
|
||||
# If "about <Month>" needs a special inflection in your
|
||||
# language, translate this to "{long_month.f[X]} {year}"
|
||||
# (where X is one of the month-name inflections you defined)
|
||||
: _("about|{long_month} {year}"),
|
||||
|
||||
# TODO if no modifier, but with qual, might need to inflect in some lang.
|
||||
@ -220,12 +226,21 @@ class DateDisplay(object):
|
||||
: _("and|{short_month} {year}"),
|
||||
|
||||
"before"
|
||||
# If "before <Month>" needs a special inflection in your
|
||||
# language, translate this to "{short_month.f[X]} {year}"
|
||||
# (where X is one of the month-name inflections you defined)
|
||||
: _("before|{short_month} {year}"),
|
||||
|
||||
"after"
|
||||
# If "after <Month>" needs a special inflection in your
|
||||
# language, translate this to "{short_month.f[X]} {year}"
|
||||
# (where X is one of the month-name inflections you defined)
|
||||
: _("after|{short_month} {year}"),
|
||||
|
||||
"about"
|
||||
# If "about <Month>" needs a special inflection in your
|
||||
# language, translate this to "{short_month.f[X]} {year}"
|
||||
# (where X is one of the month-name inflections you defined)
|
||||
: _("about|{short_month} {year}"),
|
||||
}
|
||||
|
||||
@ -257,8 +272,9 @@ class DateDisplay(object):
|
||||
"""
|
||||
Return a text string representing the date.
|
||||
|
||||
(Will be overridden if a locale-specific date displayer exists.)
|
||||
Disregard any format settings and use display_iso for each date.
|
||||
|
||||
(Will be overridden if a locale-specific date displayer exists.)
|
||||
"""
|
||||
mod = date.get_modifier()
|
||||
cal = date.get_calendar()
|
||||
@ -374,15 +390,24 @@ class DateDisplay(object):
|
||||
date_stop=d2,
|
||||
nonstd_calendar_and_ny=scal)
|
||||
else:
|
||||
text = self.display_cal[date.get_calendar()](start,
|
||||
# If there is no special inflection for "before/after/around <Month>" in your
|
||||
# language, don't translate this string.
|
||||
# Otherwise, translate it to the ENGLISH!!! ENGLISH!!!
|
||||
# key appearing above in the FORMATS_... dict
|
||||
# that maps to the special inflected format string that you need to localize.
|
||||
# TODO are there languages for which the inflections for the different
|
||||
# modifiers are different?!
|
||||
inflect=_("before-date|") if mod != Date.MOD_NONE else "")
|
||||
if mod == Date.MOD_BEFORE:
|
||||
# If there is no special inflection for "before <Month>"
|
||||
# in your language, DON'T translate this string. Otherwise,
|
||||
# "translate" this to "before" in ENGLISH!!! ENGLISH!!!
|
||||
date_type = _("before-date|")
|
||||
elif mod == Date.MOD_AFTER:
|
||||
# If there is no special inflection for "after <Month>"
|
||||
# in your language, DON'T translate this string. Otherwise,
|
||||
# "translate" this to "after" in ENGLISH!!! ENGLISH!!!
|
||||
date_type = _("after-date|")
|
||||
elif mod == Date.MOD_ABOUT:
|
||||
# If there is no special inflection for "about <Month>"
|
||||
# in your language, DON'T translate this string. Otherwise,
|
||||
# "translate" this to "about" in ENGLISH!!! ENGLISH!!!
|
||||
date_type = _("about-date|")
|
||||
else:
|
||||
date_type = ""
|
||||
text = self.display_cal[cal](start, inflect=date_type)
|
||||
scal = self.format_extras(cal, newyear)
|
||||
return _("{date_quality}{noncompound_modifier}{date}"
|
||||
"{nonstd_calendar_and_ny}").format(
|
||||
@ -398,104 +423,178 @@ class DateDisplay(object):
|
||||
# Julian and Swedish date display is the same as Gregorian
|
||||
_display_julian = _display_swedish = _display_gregorian
|
||||
|
||||
def format_long_month_year(self, month, year, inflect, long_months):
|
||||
if not hasattr(long_months[1], 'f'): # not a Lexeme: no inflection
|
||||
return "{long_month} {year}".format(
|
||||
long_month = long_months[month], year = year)
|
||||
return self.FORMATS_long_month_year[inflect].format(
|
||||
long_month = long_months[month], year = year)
|
||||
|
||||
def format_short_month_year(self, month, year, inflect, short_months):
|
||||
if not hasattr(short_months[1], 'f'): # not a Lexeme: no inflection
|
||||
return "{short_month} {year}".format(
|
||||
short_month = short_months[month], year = year)
|
||||
return self.FORMATS_short_month_year[inflect].format(
|
||||
short_month = short_months[month], year = year)
|
||||
|
||||
def format_long_month(self, month, inflect, long_months):
|
||||
if not hasattr(long_months[1], 'f'): # not a Lexeme: no inflection
|
||||
return "{long_month}".format(long_month = long_months[month])
|
||||
return self.FORMATS_long_month_year[inflect].format(
|
||||
long_month = long_months[month], year = '').rstrip()
|
||||
|
||||
def format_short_month(self, month, inflect, short_months):
|
||||
if not hasattr(short_months[1], 'f'): # not a Lexeme: no inflection
|
||||
return "{short_month}".format(short_month = short_months[month])
|
||||
return self.FORMATS_short_month_year[inflect].format(
|
||||
short_month = short_months[month], year = '').rstrip()
|
||||
|
||||
def dd_dformat01(self, date_val):
|
||||
"""
|
||||
numerical
|
||||
|
||||
this must agree with DateDisplayEn's "formats" definition
|
||||
(it may be overridden if a locale-specific date displayer exists)
|
||||
"""
|
||||
if date_val[3]:
|
||||
return self.display_iso(date_val)
|
||||
else:
|
||||
if date_val[0] == date_val[1] == 0:
|
||||
return str(date_val[2])
|
||||
else:
|
||||
value = self._tformat.replace('%m', str(date_val[1]))
|
||||
if date_val[0] == 0: # ignore the zero day and its delimiter
|
||||
i_day = value.find('%d')
|
||||
value = value.replace(value[i_day:i_day+3], '')
|
||||
value = value.replace('%d', str(date_val[0]))
|
||||
value = value.replace('%Y', str(abs(date_val[2])))
|
||||
return value.replace('-', '/')
|
||||
|
||||
def dd_dformat02(self, date_val, inflect, long_months):
|
||||
"""
|
||||
month_name day, year
|
||||
|
||||
this must agree with DateDisplayEn's "formats" definition
|
||||
(it may be overridden if a locale-specific date displayer exists)
|
||||
"""
|
||||
_ = self._locale.translation.sgettext
|
||||
year = self._slash_year(date_val[2], date_val[3])
|
||||
if date_val[0] == 0:
|
||||
if date_val[1] == 0:
|
||||
return year
|
||||
else:
|
||||
return self.format_long_month_year(date_val[1], year,
|
||||
inflect, long_months)
|
||||
else:
|
||||
# TRANSLATORS: this month is ALREADY inflected: ignore it
|
||||
return _("{long_month} {day:d}, {year}").format(
|
||||
long_month = self.format_long_month(date_val[1],
|
||||
inflect,
|
||||
long_months),
|
||||
day = date_val[0],
|
||||
year = year)
|
||||
|
||||
def dd_dformat03(self, date_val, inflect, short_months):
|
||||
"""
|
||||
month_abbreviation day, year
|
||||
|
||||
this must agree with DateDisplayEn's "formats" definition
|
||||
(it may be overridden if a locale-specific date displayer exists)
|
||||
"""
|
||||
_ = self._locale.translation.sgettext
|
||||
year = self._slash_year(date_val[2], date_val[3])
|
||||
if date_val[0] == 0:
|
||||
if date_val[1] == 0:
|
||||
return year
|
||||
else:
|
||||
return self.format_short_month_year(date_val[1], year,
|
||||
inflect, short_months)
|
||||
else:
|
||||
# TRANSLATORS: this month is ALREADY inflected: ignore it
|
||||
return _("{short_month} {day:d}, {year}").format(
|
||||
short_month = self.format_short_month(date_val[1],
|
||||
inflect,
|
||||
short_months),
|
||||
day = date_val[0],
|
||||
year = year)
|
||||
|
||||
def dd_dformat04(self, date_val, inflect, long_months):
|
||||
"""
|
||||
day month_name year
|
||||
|
||||
this must agree with DateDisplayEn's "formats" definition
|
||||
(it may be overridden if a locale-specific date displayer exists)
|
||||
"""
|
||||
_ = self._locale.translation.sgettext
|
||||
year = self._slash_year(date_val[2], date_val[3])
|
||||
if date_val[0] == 0:
|
||||
if date_val[1] == 0:
|
||||
return year
|
||||
else:
|
||||
return self.format_long_month_year(date_val[1], year,
|
||||
inflect, long_months)
|
||||
else:
|
||||
# TRANSLATORS: this month is ALREADY inflected: ignore it
|
||||
return _("{day:d} {long_month} {year}").format(
|
||||
day = date_val[0],
|
||||
long_month = self.format_long_month(date_val[1],
|
||||
inflect,
|
||||
long_months),
|
||||
year = year)
|
||||
|
||||
def dd_dformat05(self, date_val, inflect, short_months):
|
||||
"""
|
||||
day month_abbreviation year
|
||||
|
||||
this must agree with DateDisplayEn's "formats" definition
|
||||
(it may be overridden if a locale-specific date displayer exists)
|
||||
"""
|
||||
_ = self._locale.translation.sgettext
|
||||
year = self._slash_year(date_val[2], date_val[3])
|
||||
if date_val[0] == 0:
|
||||
if date_val[1] == 0:
|
||||
return year
|
||||
else:
|
||||
return self.format_short_month_year(date_val[1], year,
|
||||
inflect, short_months)
|
||||
else:
|
||||
# TRANSLATORS: this month is ALREADY inflected: ignore it
|
||||
return _("{day:d} {short_month} {year}").format(
|
||||
day = date_val[0],
|
||||
short_month = self.format_short_month(date_val[1],
|
||||
inflect,
|
||||
short_months),
|
||||
year = year)
|
||||
|
||||
def _display_calendar(self, date_val, long_months, short_months = None,
|
||||
inflect=""):
|
||||
inflect=""):
|
||||
"""
|
||||
this must agree with DateDisplayEn's "formats" definition
|
||||
(it may be overridden if a locale-specific date displayer exists)
|
||||
"""
|
||||
|
||||
if short_months is None:
|
||||
# Let the short formats work the same as long formats
|
||||
short_months = long_months
|
||||
|
||||
_ = self._locale.translation.sgettext
|
||||
# this one must agree with DateDisplayEn's "formats" definition
|
||||
# (it may be overridden if a locale-specific date displayer exists)
|
||||
year = self._slash_year(date_val[2], date_val[3])
|
||||
|
||||
# For partial dates, several formats reduce to just month + year.
|
||||
def format_long_month_year():
|
||||
return self.FORMATS_long_month_year[inflect].format(
|
||||
long_month = long_months[date_val[1]],
|
||||
year = year)
|
||||
|
||||
def format_short_month_year():
|
||||
return self.FORMATS_short_month_year[inflect].format(
|
||||
short_month = short_months[date_val[1]],
|
||||
year = year)
|
||||
|
||||
if self.format == 0:
|
||||
return self.display_iso(date_val)
|
||||
elif self.format == 1:
|
||||
# numerical
|
||||
if date_val[3]:
|
||||
return self.display_iso(date_val)
|
||||
else:
|
||||
if date_val[0] == date_val[1] == 0:
|
||||
value = str(date_val[2])
|
||||
else:
|
||||
value = self._tformat.replace('%m', str(date_val[1]))
|
||||
value = value.replace('%d', str(date_val[0]))
|
||||
value = value.replace('%Y', str(abs(date_val[2])))
|
||||
value = value.replace('-', '/')
|
||||
value = self.dd_dformat01(date_val)
|
||||
elif self.format == 2:
|
||||
# month_name day, year
|
||||
if date_val[0] == 0:
|
||||
if date_val[1] == 0:
|
||||
value = year
|
||||
else:
|
||||
value = format_long_month_year()
|
||||
else:
|
||||
# TRANSLATORS: see
|
||||
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
|
||||
# to learn how to select proper inflection for your language.
|
||||
value = _("{long_month} {day:d}, {year}").format(
|
||||
long_month = long_months[date_val[1]],
|
||||
day = date_val[0],
|
||||
year = year)
|
||||
value = self.dd_dformat02(date_val, inflect, long_months)
|
||||
elif self.format == 3:
|
||||
# month_abbreviation day, year
|
||||
if date_val[0] == 0:
|
||||
if date_val[1] == 0:
|
||||
value = year
|
||||
else:
|
||||
value = format_short_month_year()
|
||||
else:
|
||||
# TRANSLATORS: see
|
||||
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
|
||||
# to learn how to select proper inflection for your language.
|
||||
value = _("{short_month} {day:d}, {year}").format(
|
||||
short_month = short_months[date_val[1]],
|
||||
day = date_val[0],
|
||||
year = year)
|
||||
value = self.dd_dformat03(date_val, inflect, short_months)
|
||||
elif self.format == 4:
|
||||
# day month_name year
|
||||
if date_val[0] == 0:
|
||||
if date_val[1] == 0:
|
||||
value = year
|
||||
else:
|
||||
value = format_long_month_year()
|
||||
else:
|
||||
# TRANSLATORS: see
|
||||
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
|
||||
# to learn how to select proper inflection for your language.
|
||||
value = _("{day:d} {long_month} {year}").format(
|
||||
day = date_val[0],
|
||||
long_month = long_months[date_val[1]],
|
||||
year = year)
|
||||
value = self.dd_dformat04(date_val, inflect, long_months)
|
||||
# elif self.format == 5:
|
||||
else:
|
||||
# day month_abbreviation year
|
||||
if date_val[0] == 0:
|
||||
if date_val[1] == 0:
|
||||
value = year
|
||||
else:
|
||||
value = format_short_month_year()
|
||||
else:
|
||||
# TRANSLATORS: see
|
||||
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
|
||||
# to learn how to select proper inflection for your language.
|
||||
value = _("{day:d} {short_month} {year}").format(
|
||||
short_month = short_months[date_val[1]],
|
||||
day = date_val[0],
|
||||
year = year)
|
||||
value = self.dd_dformat05(date_val, inflect, short_months)
|
||||
if date_val[2] < 0:
|
||||
# TODO fix BUG 7064: non-Gregorian calendars wrongly use BCE notation for negative dates
|
||||
return self._bce_str % value
|
||||
@ -532,3 +631,4 @@ class DateDisplayEn(DateDisplay):
|
||||
|
||||
display = DateDisplay.display_formatted
|
||||
|
||||
_locale = DateDisplay._locale # normally set in register_datehandler
|
||||
|
@ -15,7 +15,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
@ -629,8 +629,12 @@ class DateParser(object):
|
||||
else:
|
||||
y = self._get_int(groups[4])
|
||||
if self.dmy:
|
||||
m = self._get_int(groups[3])
|
||||
d = self._get_int(groups[1])
|
||||
if groups[3] is None:
|
||||
m = self._get_int(groups[1])
|
||||
d = 0
|
||||
else:
|
||||
m = self._get_int(groups[3])
|
||||
d = self._get_int(groups[1])
|
||||
else:
|
||||
m = self._get_int(groups[1])
|
||||
d = self._get_int(groups[3])
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -15,7 +15,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
@ -27,6 +27,7 @@ Class handling language-specific selection for date parser and displayer.
|
||||
# Python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import sys
|
||||
import time
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@ -35,6 +36,7 @@ import time
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from ..lib.date import Date
|
||||
from ..const import GRAMPS_LOCALE as glocale
|
||||
from . import LANG_TO_DISPLAY, LANG, parser, displayer
|
||||
|
||||
#--------------------------------------------------------------
|
||||
@ -94,4 +96,7 @@ def format_time(secs):
|
||||
"""
|
||||
t = time.localtime(secs)
|
||||
d = Date(t.tm_year, t.tm_mon, t.tm_mday)
|
||||
return displayer.display(d) + time.strftime(' %X', t)
|
||||
if sys.version_info[0] < 3:
|
||||
return displayer.display(d) + time.strftime(' %X', t).decode(glocale.encoding)
|
||||
else:
|
||||
return displayer.display(d) + time.strftime(' %X', t)
|
||||
|
@ -17,7 +17,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
import locale
|
||||
@ -194,6 +194,7 @@ except:
|
||||
'10/25/2005' : '%m/%d/%Y',
|
||||
'2005/10/25' : '%Y/%m/%d',
|
||||
'25.10.2005' : '%d.%m.%Y',
|
||||
'25.10.2005.' : '%d.%m.%Y.',
|
||||
'10.25.2005' : '%m.%d.%Y',
|
||||
'2005.10.25' : '%Y.%m.%d',
|
||||
}
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -18,7 +18,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
@ -15,7 +15,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# gen/db/backup.py
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
@ -864,6 +864,13 @@ class DbReadBase(object):
|
||||
"""
|
||||
raise NotImplementedError
|
||||
|
||||
def get_place_types(self):
|
||||
"""
|
||||
Return a list of all custom place types assocated with Place instances
|
||||
in the database.
|
||||
"""
|
||||
raise NotImplementedError
|
||||
|
||||
def gramps_upgrade(self):
|
||||
"""
|
||||
Return True if database is upgraded
|
||||
|
@ -15,7 +15,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -15,7 +15,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# gen/db/cursor.py
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
@ -39,7 +39,7 @@ __all__ = (
|
||||
('DBPAGE', 'DBMODE', 'DBCACHE', 'DBLOCKS', 'DBOBJECTS', 'DBUNDO',
|
||||
'DBEXT', 'DBMODE_R', 'DBMODE_W', 'DBUNDOFN', 'DBLOCKFN',
|
||||
'DBRECOVFN','BDBVERSFN', 'DBLOGNAME', 'DBFLAGS_O', 'DBFLAGS_R',
|
||||
'DBFLAGS_D',
|
||||
'DBFLAGS_D', 'SCHVERSFN', 'PCKVERSFN'
|
||||
) +
|
||||
|
||||
('PERSON_KEY', 'FAMILY_KEY', 'SOURCE_KEY', 'CITATION_KEY',
|
||||
@ -55,6 +55,8 @@ DBUNDOFN = "undo.db" # File name of 'undo' database
|
||||
DBLOCKFN = "lock" # File name of lock file
|
||||
DBRECOVFN = "need_recover" # File name of recovery file
|
||||
BDBVERSFN = "bdbversion.txt"# File name of Berkeley DB version file
|
||||
SCHVERSFN = "schemaversion.txt"# File name of schema version file
|
||||
PCKVERSFN = "pickleupgrade.txt" # Indicator that pickle has been upgrade t Python3
|
||||
DBLOGNAME = ".Db" # Name of logger
|
||||
DBMODE_R = "r" # Read-only access
|
||||
DBMODE_W = "w" # Full Read/Write access
|
||||
|
@ -14,7 +14,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
""" Implements a Db interface as a Dictionary """
|
||||
@ -119,7 +119,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
|
||||
"handles_func": self.get_person_handles,
|
||||
"add_func": self.add_person,
|
||||
"commit_func": self.commit_person,
|
||||
"remove_func": self.remove_person,
|
||||
})
|
||||
self._tables['Family'].update(
|
||||
{
|
||||
@ -130,7 +129,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
|
||||
"handles_func": self.get_family_handles,
|
||||
"add_func": self.add_family,
|
||||
"commit_func": self.commit_family,
|
||||
"remove_func": self.remove_family,
|
||||
})
|
||||
self._tables['Source'].update(
|
||||
{
|
||||
@ -141,7 +139,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
|
||||
"handles_func": self.get_source_handles,
|
||||
"add_func": self.add_source,
|
||||
"commit_func": self.commit_source,
|
||||
"remove_func": self.remove_source,
|
||||
})
|
||||
self._tables['Citation'].update(
|
||||
{
|
||||
@ -152,7 +149,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
|
||||
"handles_func": self.get_citation_handles,
|
||||
"add_func": self.add_citation,
|
||||
"commit_func": self.commit_citation,
|
||||
"remove_func": self.remove_citation,
|
||||
})
|
||||
self._tables['Event'].update(
|
||||
{
|
||||
@ -163,7 +159,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
|
||||
"handles_func": self.get_event_handles,
|
||||
"add_func": self.add_event,
|
||||
"commit_func": self.commit_event,
|
||||
"remove_func": self.remove_event,
|
||||
})
|
||||
self._tables['Media'].update(
|
||||
{
|
||||
@ -174,7 +169,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
|
||||
"handles_func": self.get_media_object_handles,
|
||||
"add_func": self.add_object,
|
||||
"commit_func": self.commit_media_object,
|
||||
"remove_func": self.remove_object,
|
||||
})
|
||||
self._tables['Place'].update(
|
||||
{
|
||||
@ -185,7 +179,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
|
||||
"handles_func": self.get_place_handles,
|
||||
"add_func": self.add_place,
|
||||
"commit_func": self.commit_place,
|
||||
"remove_func": self.remove_place,
|
||||
})
|
||||
self._tables['Repository'].update(
|
||||
{
|
||||
@ -196,7 +189,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
|
||||
"handles_func": self.get_repository_handles,
|
||||
"add_func": self.add_repository,
|
||||
"commit_func": self.commit_repository,
|
||||
"remove_func": self.remove_repository,
|
||||
})
|
||||
self._tables['Note'].update(
|
||||
{
|
||||
@ -207,7 +199,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
|
||||
"handles_func": self.get_note_handles,
|
||||
"add_func": self.add_note,
|
||||
"commit_func": self.commit_note,
|
||||
"remove_func": self.remove_note,
|
||||
})
|
||||
self._tables['Tag'].update(
|
||||
{
|
||||
@ -218,7 +209,6 @@ class DictionaryDb(DbWriteBase, DbReadBase):
|
||||
"handles_func": self.get_tag_handles,
|
||||
"add_func": self.add_tag,
|
||||
"commit_func": self.commit_tag,
|
||||
"remove_func": self.remove_tag,
|
||||
})
|
||||
# skip GEDCOM cross-ref check for now:
|
||||
self.set_feature("skip-check-xref", True)
|
||||
|
@ -15,7 +15,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""Exceptions generated by the Db package."""
|
||||
|
@ -17,7 +17,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
@ -202,10 +202,12 @@ class DbReadCursor(BsddbBaseCursor):
|
||||
#-------------------------------------------------------------------------
|
||||
class DbBsddbTreeCursor(BsddbBaseCursor):
|
||||
|
||||
def __init__(self, source, txn=None, **kwargs):
|
||||
def __init__(self, source, primary, readonly, txn=None, **kwargs):
|
||||
BsddbBaseCursor.__init__(self, txn=txn, **kwargs)
|
||||
self.cursor = source.cursor(txn)
|
||||
self.source = source
|
||||
self.primary = primary
|
||||
self.readonly = readonly
|
||||
|
||||
def __iter__(self):
|
||||
"""
|
||||
@ -218,7 +220,14 @@ class DbBsddbTreeCursor(BsddbBaseCursor):
|
||||
key = key.encode('utf-8') if not isinstance(key, bytes) else key
|
||||
data = self.set(key)
|
||||
while data:
|
||||
payload = pickle.loads(data[1])
|
||||
### FIXME: this is a dirty hack that works without no
|
||||
### sensible explanation. For some reason, for a readonly
|
||||
### database, secondary index returns a primary table key
|
||||
### corresponding to the data, not the data.
|
||||
if self.readonly:
|
||||
payload = self.primary.get(data[1], txn=self.txn)
|
||||
else:
|
||||
payload = pickle.loads(data[1])
|
||||
yield (payload[0], payload)
|
||||
to_do.append(payload[0])
|
||||
data = _n()
|
||||
@ -411,6 +420,7 @@ class DbBsddbRead(DbReadBase, Callback):
|
||||
self.source_media_types = set()
|
||||
self.url_types = set()
|
||||
self.media_attributes = set()
|
||||
self.place_types = set()
|
||||
|
||||
self.open = 0
|
||||
self.genderStats = GenderStats()
|
||||
@ -434,6 +444,7 @@ class DbBsddbRead(DbReadBase, Callback):
|
||||
self.citation_map = {}
|
||||
self.repository_map = {}
|
||||
self.note_map = {}
|
||||
self.tag_map = {}
|
||||
self.media_map = {}
|
||||
self.event_map = {}
|
||||
self.metadata = {}
|
||||
@ -512,7 +523,8 @@ class DbBsddbRead(DbReadBase, Callback):
|
||||
return self.get_cursor(self.place_map, *args, **kwargs)
|
||||
|
||||
def get_place_tree_cursor(self, *args, **kwargs):
|
||||
return DbBsddbTreeCursor(self.parents, self.txn)
|
||||
return DbBsddbTreeCursor(self.parents, self.place_map, self.readonly,
|
||||
self.txn)
|
||||
|
||||
def get_source_cursor(self, *args, **kwargs):
|
||||
return self.get_cursor(self.source_map, *args, **kwargs)
|
||||
@ -1003,6 +1015,18 @@ class DbBsddbRead(DbReadBase, Callback):
|
||||
"""
|
||||
return self.get_number_of_records(self.tag_map)
|
||||
|
||||
def is_empty(self):
|
||||
"""
|
||||
Return true if there are no [primary] records in the database
|
||||
"""
|
||||
for obj_map in [self.person_map, self.family_map, self.event_map,
|
||||
self.place_map, self.source_map, self.citation_map,
|
||||
self.media_map, self.repository_map, self.note_map,
|
||||
self.tag_map]:
|
||||
if self.get_number_of_records(obj_map) > 0:
|
||||
return False
|
||||
return True
|
||||
|
||||
def all_handles(self, table):
|
||||
""" return all the keys of a database table
|
||||
|
||||
@ -1623,6 +1647,13 @@ class DbBsddbRead(DbReadBase, Callback):
|
||||
"""
|
||||
return list(self.url_types)
|
||||
|
||||
def get_place_types(self):
|
||||
"""
|
||||
Return a list of all custom place types assocated with Place instances
|
||||
in the database.
|
||||
"""
|
||||
return list(self.place_types)
|
||||
|
||||
def __log_error(self):
|
||||
pass
|
||||
|
||||
@ -1636,10 +1667,6 @@ class DbBsddbRead(DbReadBase, Callback):
|
||||
handle = handle.encode('utf-8')
|
||||
try:
|
||||
return table.get(handle, txn=self.txn)
|
||||
except UnicodeDecodeError:
|
||||
#we need to assume we opened data in python3 saved in python2
|
||||
raw = table.db.get(handle, txn=self.txn)
|
||||
return pickle.loads(raw, encoding='utf-8')
|
||||
except DBERRS as msg:
|
||||
self.__log_error()
|
||||
raise DbError(msg)
|
||||
|
@ -15,7 +15,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
import unittest
|
||||
@ -31,6 +31,8 @@ if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3:
|
||||
else:
|
||||
from bsddb import dbshelve, db
|
||||
|
||||
from ..read import DbBsddbTreeCursor
|
||||
|
||||
class Data(object):
|
||||
|
||||
def __init__(self, handle,surname, name):
|
||||
@ -76,6 +78,7 @@ class CursorTest(unittest.TestCase):
|
||||
os.mkdir(env_name)
|
||||
self.env.open(env_name,env_flags)
|
||||
(self.person_map,self.surnames) = self._open_tables()
|
||||
(self.place_map, self.placerefs) = self._open_treetables()
|
||||
|
||||
def _open_tables(self):
|
||||
dbmap = dbshelve.DBShelf(self.env)
|
||||
@ -100,10 +103,36 @@ class CursorTest(unittest.TestCase):
|
||||
person_map.associate(surnames, find_surname, table_flags)
|
||||
|
||||
return (person_map,surnames)
|
||||
|
||||
|
||||
def _open_treetables(self):
|
||||
dbmap = dbshelve.DBShelf(self.env)
|
||||
dbmap.db.set_pagesize(16384)
|
||||
dbmap.open(self.full_name, 'places', db.DB_HASH,
|
||||
db.DB_CREATE|db.DB_AUTO_COMMIT, 0o666)
|
||||
place_map = dbmap
|
||||
|
||||
table_flags = db.DB_CREATE|db.DB_AUTO_COMMIT
|
||||
|
||||
placerefs = db.DB(self.env)
|
||||
placerefs.set_flags(db.DB_DUP|db.DB_DUPSORT)
|
||||
placerefs.open(self.full_name, "placerefs", db.DB_BTREE,
|
||||
flags=table_flags)
|
||||
|
||||
def find_placeref(key,data):
|
||||
val = data[2]
|
||||
if isinstance(val, UNITYPE):
|
||||
val = val.encode('utf-8')
|
||||
return val
|
||||
|
||||
place_map.associate(placerefs, find_placeref, table_flags)
|
||||
|
||||
return (place_map, placerefs)
|
||||
|
||||
def tearDown(self):
|
||||
self.person_map.close()
|
||||
self.surnames.close()
|
||||
self.place_map.close()
|
||||
self.placerefs.close()
|
||||
self.env.close()
|
||||
shutil.rmtree(self._tmpdir)
|
||||
|
||||
@ -183,7 +212,29 @@ class CursorTest(unittest.TestCase):
|
||||
|
||||
self.assertEqual(v.handle, data.handle)
|
||||
|
||||
def test_treecursor(self):
|
||||
#fill with data
|
||||
the_txn = self.env.txn_begin()
|
||||
data = [(b'1', 'countryA', '' ),
|
||||
(b'2', 'localityA', '1' ),
|
||||
(b'3', 'localityB', '1' ),
|
||||
(b'4', 'countryB', '' ),
|
||||
(b'5', 'streetA', '2' ),
|
||||
(b'6', 'countryB', '' )]
|
||||
for d in data:
|
||||
self.place_map.put(d[0], d, txn=the_txn)
|
||||
the_txn.commit()
|
||||
|
||||
cursor_txn = self.env.txn_begin()
|
||||
cursor = DbBsddbTreeCursor(self.placerefs, self.place_map, False,
|
||||
cursor_txn)
|
||||
placenames = set([d[1] for handle, d in cursor])
|
||||
|
||||
cursor.close()
|
||||
cursor_txn.commit()
|
||||
pldata = set([d[1] for d in data])
|
||||
self.assertEqual(placenames, pldata)
|
||||
|
||||
def testSuite():
|
||||
suite = unittest.makeSuite(CursorTest, 'test')
|
||||
return suite
|
||||
|
@ -15,7 +15,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
import unittest
|
||||
|
@ -15,7 +15,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
from __future__ import print_function
|
||||
|
@ -15,7 +15,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
import unittest
|
||||
|
@ -15,7 +15,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
@ -66,6 +66,27 @@ from gramps.gui.dialog import (InfoDialog)
|
||||
|
||||
LOG = logging.getLogger(".upgrade")
|
||||
|
||||
def gramps_upgrade_pickle(self):
|
||||
"""
|
||||
Upgrade to python3 pickle protocol.
|
||||
"""
|
||||
import pickle
|
||||
tables = (self.person_map, self.event_map, self.family_map, self.place_map,
|
||||
self.repository_map, self.source_map, self.citation_map,
|
||||
self.media_map, self.note_map, self.tag_map, self.metadata,
|
||||
self.reference_map)
|
||||
self.set_total(sum(map(len, tables)))
|
||||
for data_map in tables:
|
||||
for handle in data_map.keys():
|
||||
raw = data_map.db.get(handle)
|
||||
data = pickle.loads(raw, encoding='utf-8')
|
||||
with BSDDBTxn(self.env, data_map) as txn:
|
||||
txn.put(handle, data)
|
||||
self.update()
|
||||
|
||||
with BSDDBTxn(self.env, self.metadata) as txn:
|
||||
txn.put(b'upgraded', 'Yes')
|
||||
|
||||
def gramps_upgrade_17(self):
|
||||
"""
|
||||
Upgrade database from version 16 to 17.
|
||||
@ -161,7 +182,7 @@ def gramps_upgrade_17(self):
|
||||
else:
|
||||
placeref_list = []
|
||||
|
||||
type_num = 7 - level if name else 8
|
||||
type_num = 7 - level if name else PlaceType.UNKNOWN
|
||||
new_place = new_place[:5] + [placeref_list, name, [],
|
||||
PlaceType(type_num).serialize(), zip_code] + \
|
||||
new_place[6:12] + [[]] + new_place[12:]
|
||||
@ -252,7 +273,10 @@ def gramps_upgrade_17(self):
|
||||
# Modify Media
|
||||
# ---------------------------------
|
||||
# Add new checksum field.
|
||||
base_path = self.metadata.get(b'mediapath', '')
|
||||
base_path = self.metadata.get(b'mediapath')
|
||||
if base_path is None:
|
||||
# Check that the mediapath is not set to None (bug #7844).
|
||||
base_path = ''
|
||||
for handle in self.media_map.keys():
|
||||
media = self.media_map[handle]
|
||||
new_media = list(media)
|
||||
@ -656,7 +680,9 @@ def gramps_upgrade_16(self):
|
||||
private)
|
||||
LOG.debug(" upgrade new_source %s" % [new_source])
|
||||
with BSDDBTxn(self.env, self.source_map) as txn:
|
||||
txn.put(str(handle), new_source)
|
||||
if isinstance(handle, UNITYPE):
|
||||
handle = handle.encode('utf-8')
|
||||
txn.put(handle, new_source)
|
||||
self.update()
|
||||
|
||||
LOG.debug("%d sources upgraded with %d citations in %d seconds" %
|
||||
@ -859,12 +885,12 @@ def convert_source_list_to_citation_list_16(self, source_list):
|
||||
new_citation = (new_handle, new_gramps_id,
|
||||
date, page, confidence, ref, note_list, new_media_list,
|
||||
new_data_map, new_change, private)
|
||||
citation_list.append((new_handle))
|
||||
with BSDDBTxn(self.env, self.citation_map) as txn:
|
||||
if isinstance(new_handle, UNITYPE):
|
||||
new_handle = new_handle.encode('utf-8')
|
||||
txn.put(new_handle, new_citation)
|
||||
self.cmap_index += 1
|
||||
citation_list.append((new_handle))
|
||||
return citation_list
|
||||
|
||||
def gramps_upgrade_15(self):
|
||||
|
@ -17,7 +17,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
@ -299,7 +299,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
"handles_func": self.get_person_handles,
|
||||
"add_func": self.add_person,
|
||||
"commit_func": self.commit_person,
|
||||
"remove_func": self.remove_person,
|
||||
})
|
||||
self._tables['Family'].update(
|
||||
{
|
||||
@ -310,7 +309,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
"handles_func": self.get_family_handles,
|
||||
"add_func": self.add_family,
|
||||
"commit_func": self.commit_family,
|
||||
"remove_func": self.remove_family,
|
||||
})
|
||||
self._tables['Source'].update(
|
||||
{
|
||||
@ -321,7 +319,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
"handles_func": self.get_source_handles,
|
||||
"add_func": self.add_source,
|
||||
"commit_func": self.commit_source,
|
||||
"remove_func": self.remove_source,
|
||||
})
|
||||
self._tables['Citation'].update(
|
||||
{
|
||||
@ -332,7 +329,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
"handles_func": self.get_citation_handles,
|
||||
"add_func": self.add_citation,
|
||||
"commit_func": self.commit_citation,
|
||||
"remove_func": self.remove_citation,
|
||||
})
|
||||
self._tables['Event'].update(
|
||||
{
|
||||
@ -343,7 +339,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
"handles_func": self.get_event_handles,
|
||||
"add_func": self.add_event,
|
||||
"commit_func": self.commit_event,
|
||||
"remove_func": self.remove_event,
|
||||
})
|
||||
self._tables['Media'].update(
|
||||
{
|
||||
@ -354,7 +349,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
"handles_func": self.get_media_object_handles,
|
||||
"add_func": self.add_object,
|
||||
"commit_func": self.commit_media_object,
|
||||
"remove_func": self.remove_object,
|
||||
})
|
||||
self._tables['Place'].update(
|
||||
{
|
||||
@ -365,7 +359,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
"handles_func": self.get_place_handles,
|
||||
"add_func": self.add_place,
|
||||
"commit_func": self.commit_place,
|
||||
"remove_func": self.remove_place,
|
||||
})
|
||||
self._tables['Repository'].update(
|
||||
{
|
||||
@ -376,7 +369,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
"handles_func": self.get_repository_handles,
|
||||
"add_func": self.add_repository,
|
||||
"commit_func": self.commit_repository,
|
||||
"remove_func": self.remove_repository,
|
||||
})
|
||||
self._tables['Note'].update(
|
||||
{
|
||||
@ -387,7 +379,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
"handles_func": self.get_note_handles,
|
||||
"add_func": self.add_note,
|
||||
"commit_func": self.commit_note,
|
||||
"remove_func": self.remove_note,
|
||||
})
|
||||
self._tables['Tag'].update(
|
||||
{
|
||||
@ -398,7 +389,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
"handles_func": self.get_tag_handles,
|
||||
"add_func": self.add_tag,
|
||||
"commit_func": self.commit_tag,
|
||||
"remove_func": self.remove_tag,
|
||||
})
|
||||
|
||||
self.secondary_connected = False
|
||||
@ -406,6 +396,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
self.brief_name = None
|
||||
self.update_env_version = False
|
||||
self.update_python_version = False
|
||||
self.update_pickle_version = False
|
||||
|
||||
def catch_db_error(func):
|
||||
"""
|
||||
@ -744,6 +735,26 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
|
||||
self.__check_python_version(name, force_python_upgrade)
|
||||
|
||||
# Check for pickle upgrade
|
||||
versionpath = os.path.join(self.path, cuni(PCKVERSFN))
|
||||
if sys.version_info[0] >= 3 and not os.path.isfile(versionpath) and \
|
||||
not self.readonly and not self.update_pickle_version:
|
||||
_LOG.debug("Make backup in case there is a pickle upgrade")
|
||||
self.__make_zip_backup(name)
|
||||
self.update_pickle_version = True
|
||||
|
||||
# Check for schema upgrade
|
||||
versionpath = os.path.join(self.path, cuni(SCHVERSFN))
|
||||
if os.path.isfile(versionpath):
|
||||
with open(versionpath, "r") as version_file:
|
||||
schema_version = int(version_file.read().strip())
|
||||
else:
|
||||
schema_version = 0
|
||||
if not self.readonly and schema_version < _DBVERSION and \
|
||||
force_schema_upgrade:
|
||||
_LOG.debug("Make backup in case there is a schema upgrade")
|
||||
self.__make_zip_backup(name)
|
||||
|
||||
# Set up database environment
|
||||
self.env = db.DBEnv()
|
||||
self.env.set_cachesize(0, DBCACHE)
|
||||
@ -798,7 +809,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
self.__close_early()
|
||||
raise DbVersionError(tree_vers, _MINVERSION, _DBVERSION)
|
||||
|
||||
self.__load_metadata()
|
||||
gstats = self.metadata.get(b'gender_stats', default=None)
|
||||
|
||||
# Ensure version info in metadata
|
||||
@ -809,6 +819,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
# New database. Set up the current version.
|
||||
#self.metadata.put(b'version', _DBVERSION, txn=the_txn)
|
||||
txn.put(b'version', _DBVERSION)
|
||||
txn.put(b'upgraded', 'Yes')
|
||||
elif b'version' not in self.metadata:
|
||||
# Not new database, but the version is missing.
|
||||
# Use 0, but it is likely to fail anyway.
|
||||
@ -854,7 +865,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
if isinstance(version, UNITYPE):
|
||||
version = version.encode('utf-8')
|
||||
version_file.write(version)
|
||||
_LOG.debug("Updated BDBVERSFN file to %s" % str(db.version()))
|
||||
_LOG.debug("Updated bsddb version file to %s" % str(db.version()))
|
||||
|
||||
if self.update_python_version:
|
||||
versionpath = os.path.join(name, "pythonversion.txt")
|
||||
@ -870,6 +881,21 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
# If secondary indices change, then they should removed
|
||||
# or rebuilt by upgrade as well. In any case, the
|
||||
# self.secondary_connected flag should be set accordingly.
|
||||
if self.update_pickle_version:
|
||||
from . import upgrade
|
||||
UpdateCallback.__init__(self, callback)
|
||||
upgrade.gramps_upgrade_pickle(self)
|
||||
versionpath = os.path.join(name, cuni(PCKVERSFN))
|
||||
with open(versionpath, "w") as version_file:
|
||||
version = "Yes"
|
||||
if sys.version_info[0] <3:
|
||||
if isinstance(version, UNITYPE):
|
||||
version = version.encode('utf-8')
|
||||
version_file.write(version)
|
||||
_LOG.debug("Updated pickle version file to %s" % str(version))
|
||||
|
||||
self.__load_metadata()
|
||||
|
||||
if self.need_schema_upgrade():
|
||||
oldschema = self.metadata.get(b'version', default=0)
|
||||
newschema = _DBVERSION
|
||||
@ -877,6 +903,14 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
(oldschema, newschema))
|
||||
if force_schema_upgrade == True:
|
||||
self.gramps_upgrade(callback)
|
||||
versionpath = os.path.join(name, cuni(SCHVERSFN))
|
||||
with open(versionpath, "w") as version_file:
|
||||
version = str(_DBVERSION)
|
||||
if sys.version_info[0] <3:
|
||||
if isinstance(version, UNITYPE):
|
||||
version = version.encode('utf-8')
|
||||
version_file.write(version)
|
||||
_LOG.debug("Updated schema version file to %s" % str(version))
|
||||
else:
|
||||
self.__close_early()
|
||||
clear_lock_file(name)
|
||||
@ -946,12 +980,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
|
||||
# bookmarks
|
||||
def meta(key):
|
||||
try:
|
||||
return self.metadata.get(key, default=[])
|
||||
except UnicodeDecodeError:
|
||||
#we need to assume we opened data in python3 saved in python2
|
||||
raw = self.metadata.db.get(key, default=[])
|
||||
return pickle.loads(raw, encoding='utf-8') if raw else raw
|
||||
return self.metadata.get(key, default=[])
|
||||
|
||||
self.bookmarks.set(meta(b'bookmarks'))
|
||||
self.family_bookmarks.set(meta(b'family_bookmarks'))
|
||||
@ -980,6 +1009,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
self.url_types = set(meta(b'url_types'))
|
||||
self.media_attributes = set(meta(b'mattr_names'))
|
||||
self.event_attributes = set(meta(b'eattr_names'))
|
||||
self.place_types = set(meta(b'place_types'))
|
||||
|
||||
# surname list
|
||||
self.surname_list = meta(b'surname_list')
|
||||
@ -1244,7 +1274,11 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
existing_references = set()
|
||||
primary_cur = self.get_reference_map_primary_cursor()
|
||||
try:
|
||||
ret = primary_cur.set(handle)
|
||||
if isinstance(handle, UNITYPE):
|
||||
key = handle.encode('utf-8')
|
||||
else:
|
||||
key = handle
|
||||
ret = primary_cur.set(key)
|
||||
except:
|
||||
ret = None
|
||||
|
||||
@ -1320,7 +1354,10 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
"""
|
||||
if isinstance(key, tuple):
|
||||
#create a string key
|
||||
key = str(key)
|
||||
if sys.version_info[0] >= 3:
|
||||
key= str(key)
|
||||
else:
|
||||
key = str(tuple(k.encode('utf-8') for k in key))
|
||||
if isinstance(key, UNITYPE):
|
||||
key = key.encode('utf-8')
|
||||
if self.readonly or not key:
|
||||
@ -1452,6 +1489,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
txn.put(b'url_types', list(self.url_types))
|
||||
txn.put(b'mattr_names', list(self.media_attributes))
|
||||
txn.put(b'eattr_names', list(self.event_attributes))
|
||||
txn.put(b'place_types', list(self.place_types))
|
||||
|
||||
# name display formats
|
||||
txn.put(b'surname_list', self.surname_list)
|
||||
@ -2027,6 +2065,9 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
self.commit_base(place, self.place_map, PLACE_KEY,
|
||||
transaction, change_time)
|
||||
|
||||
if place.get_type().is_custom():
|
||||
self.place_types.add(str(place.get_type()))
|
||||
|
||||
self.url_types.update([str(url.type) for url in place.urls
|
||||
if url.type.is_custom()])
|
||||
|
||||
@ -2140,10 +2181,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
handle = handle.encode('utf-8')
|
||||
try:
|
||||
data = data_map.get(handle, txn=self.txn)
|
||||
except UnicodeDecodeError:
|
||||
#we need to assume we opened data in python3 saved in python2
|
||||
raw = data_map.db.get(handle, txn=self.txn)
|
||||
data = pickle.loads(raw, encoding='utf-8')
|
||||
except:
|
||||
data = None
|
||||
# under certain circumstances during a database reload,
|
||||
@ -2335,8 +2372,9 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
version = self.metadata.get(b'version', default=_MINVERSION)
|
||||
|
||||
t = time.time()
|
||||
|
||||
|
||||
from . import upgrade
|
||||
|
||||
if version < 14:
|
||||
upgrade.gramps_upgrade_14(self)
|
||||
if version < 15:
|
||||
@ -2349,6 +2387,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
self.reset()
|
||||
self.set_total(6)
|
||||
self.__connect_secondary()
|
||||
self.rebuild_secondary()
|
||||
# Open undo database
|
||||
self.__open_undodb()
|
||||
self.db_is_open = True
|
||||
@ -2432,6 +2471,24 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
with open(versionpath, "w") as version_file:
|
||||
version_file.write(version)
|
||||
|
||||
# The pickle upgrade file is not written for Python2; its contents is
|
||||
# never actually examined, all that matters is whether it is present
|
||||
if sys.version_info[0] >= 3:
|
||||
versionpath = os.path.join(name, cuni(PCKVERSFN))
|
||||
_LOG.debug("Write pickle version file to %s" % "Yes")
|
||||
with open(versionpath, "w") as version_file:
|
||||
version = "Yes"
|
||||
version_file.write(version)
|
||||
|
||||
versionpath = os.path.join(name, cuni(SCHVERSFN))
|
||||
_LOG.debug("Write schema version file to %s" % str(_DBVERSION))
|
||||
with open(versionpath, "w") as version_file:
|
||||
version = str(_DBVERSION)
|
||||
if sys.version_info[0] <3:
|
||||
if isinstance(version, UNITYPE):
|
||||
version = version.encode('utf-8')
|
||||
version_file.write(version)
|
||||
|
||||
self.metadata.close()
|
||||
self.env.close()
|
||||
|
||||
@ -2448,12 +2505,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
"""
|
||||
return DbTxn
|
||||
|
||||
def remove_from_database(self, item, transaction):
|
||||
"""
|
||||
Remove the item from the database.
|
||||
"""
|
||||
self._tables[item.__class__.__name__]["remove_func"](item.handle, transaction)
|
||||
|
||||
def _mkname(path, name):
|
||||
return os.path.join(path, name + DBEXT)
|
||||
|
||||
@ -2478,7 +2529,9 @@ def write_lock_file(name):
|
||||
try:
|
||||
user = os.getlogin()
|
||||
except:
|
||||
user = os.environ['USER'] #not win, don't need get_env_var
|
||||
# not win, so don't need get_env_var.
|
||||
# under cron getlogin() throws and there is no USER.
|
||||
user = os.environ.get('USER', 'noUSER')
|
||||
if host:
|
||||
text = "%s@%s" % (user, host)
|
||||
else:
|
||||
|
@ -16,7 +16,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
@ -16,6 +16,6 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
"""
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user