Compare commits

...

363 Commits

Author SHA1 Message Date
80db60b332 check gettext syntax complains about missing '\n'
svn: r21566
2013-03-06 08:28:01 +00:00
c06e8d3b64 update on translations
svn: r21565
2013-03-06 08:18:51 +00:00
c19c5e2569 Bump alpha-version to 5
svn: r21564
2013-03-06 08:05:12 +00:00
992b161798 [r21561]get_unicode_path_from_env_var(): make no-op if it's already unicode
svn: r21563
2013-03-06 01:12:07 +00:00
2dee2c4d77 [r21560]Adapt HTMLRenderer NavigationView init args to new signature
svn: r21562
2013-03-06 01:11:59 +00:00
96440156bd GEexiv2 vor Python 2.7.3 and Win (see 6464)
svn: r21558
2013-03-05 21:55:49 +00:00
588089954a Some small revision of Norwegian bokmål language file for gramps40
svn: r21556
2013-03-05 19:37:45 +00:00
7e749a9e25 [r21554]GrampsLocale:Move setlocale from _set_from_environment to
__init_first_instance

So that encoding is set for Mac as well.

svn: r21555
2013-03-05 17:26:00 +00:00
3e0fd433b5 shorten the report name for easier CLI use
svn: r21553
2013-03-05 04:46:22 +00:00
8a4732a5d2 tweak the default format for the report
svn: r21550
2013-03-05 01:02:54 +00:00
8371684a98 updated german translation
svn: r21549
2013-03-04 18:36:58 +00:00
2828211c6a 6494: svn_revision module ignores translated SVN stdout value for "exported"
svn: r21547
2013-03-04 05:12:53 +00:00
bf67b3e114 skip error msg if no file exists
svn: r21545
2013-03-04 00:42:39 +00:00
d01f7bf7df [r21540]GrampsLocale: Add _win_bindtextdomain
Adapted from init_windows_gettext in Gramps3.
Libintl-8.dll must be on the path, just like all of the other C-library
dependencies.

svn: r21543
2013-03-03 23:59:44 +00:00
1d2b143be9 [r21539]GrampsLocale: Restore setlocale, add GrampsLocale.encoding
encoding to replace translation().info()['encoding'] which isn't
the encoding we're looking for.

svn: r21542
2013-03-03 23:59:39 +00:00
debf8b601a [r21538]Win32:Apply \\ escape to all const paths
svn: r21541
2013-03-03 23:59:32 +00:00
bcef9fc868 updated german translation
svn: r21537
2013-03-03 12:12:37 +00:00
fae194d1a0 Geography : #05742 note 27613 : cairo arguments differ from gtk2 draw arc.
svn: r21535
2013-03-03 10:58:30 +00:00
7aa1c2bbde update Portuguese (Europe) translation by Frederico Muñoz
svn: r21532
2013-03-03 09:05:26 +00:00
2528da2f2d add ICU/PyICU to "gramps -v"
svn: r21530
2013-03-03 03:19:37 +00:00
8ea29ede81 win32 fix
svn: r21529
2013-03-03 00:08:15 +00:00
4ca0c9f8c9 [r21526]GrampsLocale: Create GrampsTranslation attribute for language
Rather than relying on translators to correctly fill out po files

svn: r21528
2013-03-02 20:28:57 +00:00
5a8a7479dd [r21525]GrampsLocale: Fix glocale without import
svn: r21527
2013-03-02 20:28:49 +00:00
c3f39e7d40 0005058: Note reference on Attribute for individual is not filtered on Export. Fixed many other note references that are not filtered out.
svn: r21523
2013-03-02 19:30:02 +00:00
5235a6a6ac add "Id" property
svn: r21521
2013-03-02 15:52:57 +00:00
62475bbc87 6500: relative import
svn: r21520
2013-03-02 14:56:13 +00:00
a33eb1d799 6500: missing glocale
svn: r21519
2013-03-02 14:54:29 +00:00
6e73fc8924 Better translation for compare events.
svn: r21517
2013-03-02 13:45:02 +00:00
06b8b291f8 adaption for python version less 3.x (see issue 6465) for details
svn: r21515
2013-03-02 13:42:17 +00:00
98fa69b717 0003428: When running with pythonw.exe, Windows may crash if you write to stdout. Some more print statements changed to log.warning.
svn: r21511
2013-03-01 13:12:29 +00:00
7c9ec32d22 Narrative Web: Fix alphabetic navigation bar and sorting in index pages using PyICU where available. Implements most collate contractions for western languages Gramps has been translated into. This fixes the following bugs:
0002933: Problems in Narrative Web Report with surnames beginning with V or W. Use collation primary difference to define index groupings. Special case for 'V' and 'W' in Swedish removed because the default CLDR has a primary difference between them.

0003434: NarrativeWeb new alphabet index sorted incorrectly. Fix Cyrillic sort order, and contractions for Slovak and Czech (among other languages).

0003933: References inside pages in NarWeb report and non-ascii characters. Sorting issues for Polish characters.

0004423: Web report does not handle Czech "CH" character properly. Dz contraction is not present in the CLDR. Slovak is similar.

0005088: Narrated Web Site Report sort order different Windows vs Linux. Resolved by using PyICU (if available).

0005645: can't sort greek names

0005767: Sorting in Narrative Webb does not work correctly. Fix sorting in Individuals, Surnames, Families, Events and Places to use PyICU (if available). This bug covers sorting in the index header (as well as in the body of the index pages).

svn: r21508
2013-03-01 12:41:19 +00:00
e1fb1c5b14 [r21501]RelationshipCalculator: Promote no translation message to warning
And make it more specific.
Thanks to Tim Lyons.

svn: r21505
2013-02-28 20:09:18 +00:00
7541dd5b2e Bug #06459 : change the lock strategy and split transactions in Merge citation.
svn: r21504
2013-02-28 19:57:35 +00:00
e8bad4d4c8 [r21492]grampletpane: Fix typo, naked except.
Warn with the reason when Dashboard file can't be opened or parsed.

svn: r21500
2013-02-28 19:23:15 +00:00
d704d9ac4b [r21491]MacLocale: Handle AppleCollationOrder returning "root"
svn: r21499
2013-02-28 19:23:04 +00:00
d334e0043f [r21490]MacLocale: Allow $LANG to override defaults settings
For currency, calendar, and collation

svn: r21498
2013-02-28 19:22:55 +00:00
dede164e69 [r21489]GrampsLocale: Handle errors in getting collation key from locale module
svn: r21497
2013-02-28 19:22:43 +00:00
f309f210d1 [r21488]GrampsLocale: Restore call to locale.bindtextdomain() for GtkBuilder
Apparently some Linuxes require it for GtkBuilder to find the localization files. It's not supported on Win32, though, so don't try in that case.

svn: r21496
2013-02-28 19:22:35 +00:00
ebe1d0139c [r21487]GrampsLocale: Set collation, currency, and calendar to lang
only on secondary locale objects.

svn: r21495
2013-02-28 19:22:27 +00:00
ebcd0bb119 [r21486]GrampsLocale: Use absolute address for importing grampslocale
so that it works from outside of Gramps itself, in particular gramps-addons/contrib/make.py

svn: r21494
2013-02-28 19:22:21 +00:00
fc8eb4f445 [r21485]GrampsLocale: Fix get_addon_translator path
Add the locale subdirectory.
Also clean out some cruft left over from the old implementation.

svn: r21493
2013-02-28 19:22:14 +00:00
3ae8e5cc1e 6408: Restore warning message for missing GExiv2 module
svn: r21484
2013-02-28 15:05:03 +00:00
a03877e8c9 update Portuguese (Europe) translation by Frederico Muñoz
svn: r21481
2013-02-28 10:20:48 +00:00
357eb8af19 Python less 3.x uses GdkPixbuf.new_subpixbuf instead dkPixbuf.subpixbuf issue 6487
svn: r21476
2013-02-27 22:21:10 +00:00
c91eec3d5f rename .__next__ (formerly .next) as it is "NOT an iterator"
svn: r21475
2013-02-27 18:50:47 +00:00
870f80fc83 6385: Three minor grammar issues
svn: r21473
2013-02-27 14:35:10 +00:00
3ee5b1dec4 "Delete" label instead of "Remove" on Gtk button
svn: r21472
2013-02-27 14:29:32 +00:00
c37bfc9dbe 6385: Three minor grammar issues
svn: r21471
2013-02-27 14:19:30 +00:00
bb494a56ca update template and french translation
svn: r21470
2013-02-27 13:39:46 +00:00
4a512c7347 updated nl translation
svn: r21469
2013-02-27 10:48:15 +00:00
e6034cde4b behave gracefully if no GExiv2 under Python3
svn: r21467
2013-02-26 20:36:18 +00:00
5e9837d484 updated german translation
svn: r21466
2013-02-26 19:05:14 +00:00
57fcc67498 Fix retrieval of version metadata for python3 Gramps.py -L, reverting inadvertent changes in revision 21463
svn: r21465
2013-02-26 18:44:07 +00:00
3872899ebc Fix retrieval of version metadata for python3 Gramps.py -L
svn: r21463
2013-02-26 17:34:37 +00:00
ad20c91b4f Fix type error in "python3 Gramps.py -L"
svn: r21462
2013-02-26 17:28:41 +00:00
5df0c7d3ee 6409 and 6447 Python3 changes (possibly not done yet)
svn: r21460
2013-02-26 17:18:23 +00:00
daae9242bf 0006410: Webcal report crashes and freezes alpha4. For python3 simply opening the file works.
svn: r21457
2013-02-26 17:14:28 +00:00
114a71c13c [r21451]GrampsLocale: Remove all calls to locale.setlocale and locale.bindtextdomain
svn: r21456
2013-02-26 00:24:13 +00:00
7d7cc6f789 [r21450]Addons: Check for two-letter lang as well as 5-char locale
E.g, check fr as well as fr_FR

svn: r21455
2013-02-26 00:23:44 +00:00
b99e2e29df [r21449]grampletpane: Replace diagnostic prints with log warnings.
And improve warning when unable to save the Dashboard layout.

svn: r21454
2013-02-26 00:23:31 +00:00
44f065eabf [r21448]grampletpane: Use __future__.unicode_literals instead of cuni()
And get rid of the silly NL = "\n"

svn: r21453
2013-02-26 00:23:21 +00:00
b126aa1fc3 [r21447]ConfigManager: Ensure key files are loaded and saved as utf-8
svn: r21452
2013-02-26 00:23:10 +00:00
e2860c99f6 Python3 changes: __next__ and future division (which is not done yet)
svn: r21445
2013-02-25 18:52:10 +00:00
6cd609941f slightly reformat error message
svn: r21444
2013-02-25 16:13:03 +00:00
4a23da9500 quick test and update on the french translation
svn: r21442
2013-02-25 14:02:33 +00:00
73cdf3d86f update template
svn: r21441
2013-02-25 13:45:25 +00:00
d24586eb34 update translation strings index
svn: r21440
2013-02-25 13:39:56 +00:00
158a5f93fb 6283: Re-enable optimization flag (-O) for python
svn: r21439
2013-02-25 07:26:36 +00:00
7ff24aa9d1 [r21436]Work around lack of locale.LC_MESSAGES on some Windows pythons
svn: r21437
2013-02-24 17:41:31 +00:00
bb2bcc4185 Fix missed cuni() in save.
svn: r21434
2013-02-24 16:42:58 +00:00
c8254b1c68 Fixed a typo, two " was missing.
svn: r21432
2013-02-24 15:27:54 +00:00
8d06298921 6408: python3 fix
svn: r21431
2013-02-24 13:53:15 +00:00
4621970783 revert to the old report name
svn: r21428
2013-02-24 08:39:51 +00:00
123a6e0ecf sync gramps40 to trunk (two places)
svn: r21426
2013-02-24 06:06:42 +00:00
3d0fa7a00a Fix Py2 file encoding errors
svn: r21424
2013-02-24 01:49:24 +00:00
400523c7f3 [r21326] GrampsLocale: Correct setting GrampsLocale.languages
Test only first 5 or first 2 characters of the language id against the
list of available translations.

Thanks to Tim Lyons for exposing the error.

svn: r21423
2013-02-24 01:49:15 +00:00
0bbbc76852 [r21287] GrampsLocale: Allow for importing older PyICU packages
svn: r21422
2013-02-24 01:49:07 +00:00
252d2932df [r21282]GrampsLocale: Fix creation of second GrampsLocale
svn: r21421
2013-02-24 01:49:01 +00:00
bffb6767aa [r21281] grampslocale: Pretty up the log messages.
svn: r21420
2013-02-24 01:48:42 +00:00
0c07855f37 [r21280]grampslocale.py: Protect against C.UTF-8 not being installed
svn: r21419
2013-02-24 01:48:29 +00:00
088c97106f [r21279]relationship.py: Fix not registering "en_GB" as english.
Also replace diagnostic print with proper logging.

svn: r21418
2013-02-24 01:48:24 +00:00
bfa28faf55 [r21276]Handle junk at the end of revision strings
svn: r21417
2013-02-24 01:48:16 +00:00
8222d4c04c [r21275]GrampsLocale: Replace locale functions
locale.strcoll, locale.strxfrm, and conv*_tosrtkey

With GrampsLocale.sort_key (for strxfrm and conv*_tosrtkey) and
GrampsLocale.strcoll.

If ICU is available will use the correct ICU::Collator for the locale,
otherwise falls back to locale.strxfrm -- for which it temporarily
changes the LC_COLLATE locale.

svn: r21416
2013-02-24 00:55:46 +00:00
879c48f57d [r21274]GrampsLocale: Introduce new GrampsLocale attributes
currency, calendar, and collate

svn: r21415
2013-02-24 00:55:32 +00:00
7127f8f2da [r21273] GrampsLocale: Directly set glocale attributes
... in maclocale.mac_setup_localization()

svn: r21414
2013-02-24 00:55:23 +00:00
db9daced3c [r21272]GrampsLocale: Extract function __init_from_environment
svn: r21413
2013-02-24 00:55:13 +00:00
c42cb6beee [r21271] Add modules for ICU
svn: r21412
2013-02-24 00:55:06 +00:00
efa53a0537 [r21236]GrampsLocale: Replace use of get_language_string
... with GrampsLocale.get_language_dict

Permits sorting by localized language name.
Also hides the language code, which the user doesn't really care about.
Removes get_language_string from libtranslate.py, no longer needed.

svn: r21411
2013-02-24 00:54:56 +00:00
bbf16cb40c [r21235]GrampsLocale: Use module-specific logger for grampslocale.py
Fixes double-logging problem reported by Tim Lyons.

svn: r21410
2013-02-24 00:54:40 +00:00
d62ff6059e [r21182]GrampsLocale: Restructure so for multiple GrampsLocale objects
Only the first dependent upon the environment. All may be created with
parameters which override environment variables or OS settings. See the
GrampsLocale docstring for details.

svn: r21409
2013-02-24 00:54:35 +00:00
f3361500c0 [r21181]relationship.py: Remove unused import
svn: r21408
2013-02-24 00:54:26 +00:00
df1157e9d4 [r21180]Fix platform detection on OSX
'darwin' is returned by sys.platform, not os.name.

svn: r21407
2013-02-24 00:54:18 +00:00
11ad512f2d [r21179]Fix undefined variable reference, make separate not-loaded
warning

Thanks to Pat Lefebre for reporting the error.

svn: r21406
2013-02-24 00:54:04 +00:00
fd559d0d80 [r21170]GrampsLocale: Convert some late-added translations to
GRAMPS_LOCALE

svn: r21405
2013-02-24 00:53:58 +00:00
7a894d9a41 [r21168]GrampsLocale: get_relationship_calculator: Fix missed variable
name change.

svn: r21404
2013-02-24 00:53:47 +00:00
b6b3fb8680 [r21156]Descendant Report: Fix changed Sort function name
svn: r21403
2013-02-24 00:53:37 +00:00
755b653925 [r21154]Import get_svn_revision into const.py
via const.py.in, of course

svn: r21402
2013-02-24 00:53:29 +00:00
592f68ab6e [r21153]PdfDocGen: Report cause of failure on all exceptions
not just file open ones. Expat can raise exceptions too!

svn: r21401
2013-02-24 00:53:20 +00:00
0986d69429 [r21152]GrampsLocale: Fix file encoding error in recentfiles
Expat wants a binary file, not a string file.

svn: r21400
2013-02-24 00:53:11 +00:00
98898ddb71 [r21151]GrampsLocale: Get the language code from the global translation
Instead of probing locale.getlocale() and environment variables

svn: r21399
2013-02-24 00:52:59 +00:00
8cbba85cf1 [r21150]GrampsLocale: Use the codeset from the singleton translation
Instead of locale.getlocale() or locale.nl_langinfo

svn: r21398
2013-02-24 00:52:48 +00:00
c01846fb84 [r21149]Fix some file resource leaks
I.e., files left open when the opening function exits. This is
a PyDebug warning.

svn: r21397
2013-02-24 00:52:35 +00:00
fccfdecd03 [r21148]GrampsLocale: Simplify the file-finding functions
Making use of the fact that GrampsLocale now knows what
encoding to use, and noting that filesystems don't use
more than one encoding to write filenames in directories.

Also specify the encoding on some more files

svn: r21396
2013-02-24 00:52:26 +00:00
3f408af0fa [r21147][Bug 6364] Fix file-opening failures due to unicode content.
svn: r21395
2013-02-24 00:52:07 +00:00
8cea2e239a [r21146]GrampsLocale: Replace calls to sys.getfilesystemencoding
On MSWin and OSX, this call always returns the correct
value (utf-8 on OSX, 'mbcs' on MSWin), but on Linux the
return value is bizarrely dependent upon the environment.

Replace it with a GrampsLocale function which returns 'utf-8'
(the correct value for most Linux file systems) regardless of
the environment.

Also replace its use in print and write functions: It's the
encoding of paths in the filesystem, not of the files's content,
nor of the terminal's capabilities. The former is almost
always utf-8 as long as we write the file, the latter is
given by sys.stdout.encoding. Use the 'backslashreplace' error
handler to avoid exceptions when we need to output unicode
text to an ASCII terminal.

svn: r21394
2013-02-24 00:51:57 +00:00
221c30976f [r21145][Bug 6222]: Get the addons language list from the primary
GrampsLocale instance.

svn: r21393
2013-02-24 00:51:38 +00:00
e28e114c95 [r21144]GrampsLocale: Remove ggettext
svn: r21392
2013-02-24 00:51:17 +00:00
3788d52107 [r21143]Localization: Re-implement localization as a class, GrampsLocale
GrampsLocale is effectively a singleton: An instance is created in
const.py and retrieved everywhere.

Translations are provided via Translations classes, which are derived
from GNUTranslations and NullTranslations to provide extra functions
like sgettext.

svn: r21391
2013-02-24 00:46:03 +00:00
740c7036d7 [r21142]Rename trans.py and mactrans.py to grampslocale.py and
maclocale.py

Reflecting discussion on gramps-devel about their affecting more than
just translations.

Provide for a master GrampsLocale instance to be retrieved from
const.py, set by grampsapp.

svn: r21390
2013-02-24 00:45:50 +00:00
eeaf8697f0 6408: Display GExiv2 version rather than pyexiv2 version
svn: r21389
2013-02-23 23:36:23 +00:00
3fabbe1ecb 6408: Convert Metadata Viewer from pyexiv2 to GExiv2. Move Edit Exif Metadata gramplet into gramps-addons.
svn: r21387
2013-02-23 21:11:29 +00:00
d10d572002 see issue 0006464
svn: r21384
2013-02-23 12:42:24 +00:00
3d0fa69bd0 ImportGedcom: Fix Python3 "dictionary changed size during iteration" errors
svn: r21380
2013-02-19 22:11:35 +00:00
a84d51d6b7 Import ProGen: Use python3 print syntax
svn: r21379
2013-02-19 22:11:29 +00:00
88831f8398 Fix Py2 TypeError in GEDCOM export
Due to writing regular strings instead of unicode strings.

svn: r21378
2013-02-19 22:11:21 +00:00
945bec0d6c basedocclass==>docclass to match the 20695 changes
svn: r21373
2013-02-19 19:18:59 +00:00
dfb6be488d Geography : print suppression
svn: r21371
2013-02-18 19:57:11 +00:00
22bcc94ec0 Geography : bug #06451 note 27413 : the ellipse become a line when it is too small
svn: r21369
2013-02-18 19:40:16 +00:00
d02f6a3fb1 Geography : bug #06466 : History change when clicking on one marker
bug #06451 : incomplete precedent patch


svn: r21367
2013-02-17 12:46:13 +00:00
76eae75da2 Make availability of GraphViz settings depend on output format
svn: r21366
2013-02-16 21:37:07 +00:00
657d8e233f Geography : bug #06451 : Don't see chinese characters in the geography view.
svn: r21363
2013-02-16 13:33:10 +00:00
5bb9581b15 Improve the descriptions and tooltip for GraphViz aspect ratio option
svn: r21361
2013-02-15 19:44:00 +00:00
d6c4298ff4 Fixed a typo.
svn: r21360
2013-02-15 08:46:02 +00:00
260170ce36 6448: Text Reports>Descendant Report gives an AttributeError: 'Sort' object has no attribute by_birthdate
svn: r21358
2013-02-14 23:42:02 +00:00
801f1b77aa [Bug 6413] Fix importing ProGen files
This isn't a perfect fix because it requires that the ProGen file is
encoded with CP437, which is guaranteed only in Version 3.21 and later.

svn: r21354
2013-02-14 18:36:07 +00:00
d5dfa05ff9 updated german translation
svn: r21353
2013-02-13 22:35:21 +00:00
808002d419 6247: Crash when attempting to use Book Report
svn: r21352
2013-02-13 18:47:44 +00:00
4dc0f01137 Geography : bug #6442 use the good glib with introspection.
svn: r21348
2013-02-13 13:39:58 +00:00
aa7e0b49e4 Reinstate inadvertent removal of rev 19988 change for bug 5900
svn: r21347
2013-02-13 11:08:52 +00:00
3c103143a6 Fixed a typo.
svn: r21345
2013-02-12 15:44:05 +00:00
ef65c893ea Geography : replace GObject.timeout_add by glib.timeout_add as it is deprecated
svn: r21342
2013-02-12 08:38:19 +00:00
566c3fb32b updated nl translation
svn: r21339
2013-02-11 20:01:57 +00:00
db1bd1e114 win32_py3: open use system encoding
svn: r21338
2013-02-10 22:52:19 +00:00
866796f5dc 6379: Can not get ancestry or relationship tabs to work
svn: r21336
2013-02-10 21:11:37 +00:00
fdf740b35c updated nl translation
svn: r21334
2013-02-10 19:29:32 +00:00
1500556d99 win32 changes
svn: r21330
2013-02-10 17:37:56 +00:00
5e4b2d3bdc Revert svn21254 as discussed in issue 6424
svn: r21328
2013-02-10 14:32:43 +00:00
880e6c44e7 Revert change 21304 for moving report_options file
svn: r21323
2013-02-08 17:09:50 +00:00
4068bebb3e Geography : synchronize gramps and osm-gps-map for the free maps.
svn: r21319
2013-02-08 07:39:59 +00:00
0465b9cf37 Geography : sometimes crash with unknown people or family.
svn: r21318
2013-02-07 23:25:46 +00:00
fed5cc6a71 win32-py3 fix:ValueError: strftime() requires year in [1; 9999]
svn: r21317
2013-02-07 21:43:19 +00:00
69800680a3 adapt setup script for win32
svn: r21316
2013-02-07 21:41:02 +00:00
a3a758fd13 0006411: Navweb crashes alpha4 when creating Media pages
svn: r21314
2013-02-07 16:42:16 +00:00
eadae6dbc9 use latest gtkspell if available
svn: r21308
2013-02-06 09:24:12 +00:00
3ee843917e 0003968: [NarWeb] Save/Restore settings for Narrated Website Generation. Change report_options file to be in the database directory, and implement different default report file and directory names based on the Family Tree Name. N.B. On upgrading, if you want to preserve your report_options, copy the report_option.xml file from the .gramps directory to the applicable .gramps.grampsdb.<number> directory. Also don't forget that the default options are to EXCLUDE private and living data.
svn: r21305
2013-02-05 18:07:03 +00:00
43c49238f5 Fix processing of contractions, and changes to ensure code (after initial lines) for narrativeweb is the same for trunk and gramps34 and gramps40. Also change default name of output directory (see bug 3968) and use website-directory configuration item.
svn: r21303
2013-02-05 18:00:09 +00:00
641155478f Fix of gramps -v for Graphviz and ghostscript.
svn: r21302
2013-02-05 15:18:59 +00:00
6ca692e33a 0006397: Navweb crashes alpha4. date.get_start_date has no attribute 'is_valid'
svn: r21300
2013-02-05 12:17:59 +00:00
41fdca39dd Bug #6358. gc.DEBUG_OBJECTS removed from python3. Also handle exceptions due to collected weak references.
svn: r21299
2013-02-04 22:01:19 +00:00
bb3ac61359 Change format of console logging messages to have a meaningful timestamp
svn: r21297
2013-02-04 19:15:45 +00:00
a00a5ba32d [r21155]Use IMAGE_DIR in geography.py so that map images can be found
when running from source directory.

svn: r21288
2013-02-04 02:15:55 +00:00
efdb6e9fd5 Fix memory leaks.
svn: r21284
2013-02-03 16:25:03 +00:00
ff12fdc4a3 updated nl translation
svn: r21277
2013-02-02 07:57:33 +00:00
3ef8a88a11 export file select dialogue does not correctly reject empty filenames - two (probably long standing) coding errors: use of method name 'strip' instead of calling it, and does not isolate the filename from the full pathname
svn: r21269
2013-02-01 17:40:47 +00:00
117b5b6594 Updated translation.
svn: r21266
2013-02-01 09:24:29 +00:00
6a5a78eee0 Fix for --install-scripts option and new --server option
svn: r21264
2013-01-31 22:41:10 +00:00
ba28adea94 6367: Update the Side/Bottombar text (patch by Patsyblefebre)
svn: r21259
2013-01-31 08:28:03 +00:00
17f938c978 Revert "[r21246]Allow hard-coded paths to be overridden with $XDG_DATA_DIRS"
This reverts r21247

svn: r21256
2013-01-30 14:51:52 +00:00
54034d4811 gdkpixbuf support on windows
svn: r21254
2013-01-30 10:05:06 +00:00
45fc795964 updated dutch translation
svn: r21252
2013-01-30 09:36:27 +00:00
0d9884186a 6384: Update Danish translation by Lars Kristian Lundin
svn: r21250
2013-01-30 09:31:14 +00:00
e593d753ee updated nl translation
svn: r21248
2013-01-30 08:57:31 +00:00
2cd6aa43e4 [r21246]Allow hard-coded paths to be overridden with $XDG_DATA_DIRS
Necessary for post-installation relocatability.
Also ensure that data installed to share/gramps is in mac bundle.

svn: r21247
2013-01-29 21:14:15 +00:00
7c82a5df48 typo
svn: r21244
2013-01-29 15:08:54 +00:00
23baca2f09 6377: Danish translation is incomplete (patch by Lars Kristian Lundin)
svn: r21241
2013-01-29 08:47:52 +00:00
02fd2409c5 6377: Danish translation is incomplete
svn: r21238
2013-01-28 16:10:30 +00:00
3b4496a808 [r21157]Fix GeoGraphyView.__init__ arg list for simplified bookmarks
svn: r21234
2013-01-27 20:00:42 +00:00
235a1e72fd Mac: Update (and correct) Info.plist for alpha4
svn: r21233
2013-01-27 19:33:13 +00:00
1af985dbc7 Mac: Bump alpha-version to 4
svn: r21232
2013-01-27 17:48:19 +00:00
378f24272c behavior has changed on gramplet bars, message needs an update too
svn: r21230
2013-01-27 16:50:13 +00:00
6bc5bcf644 re-enable svn revision, alpha4 release has last bug fix for 6371 and fixed translations
svn: r21228
2013-01-26 09:47:46 +00:00
efbd0e95dd mismatching
svn: r21227
2013-01-26 09:36:37 +00:00
45a6524247 Bug #6371. Fix memory leak caused by hanging reference to progress meter callback method.
svn: r21224
2013-01-26 09:28:28 +00:00
13c58292e3 ready for alpha4
svn: r21222
2013-01-26 08:54:27 +00:00
5d8e37807c 0005088: Narrated Web Site Report sort order different Windows vs Linux. Initial commit to resolve the issues on Linux and Mac (provided in both cases PyICU is installed). Windows still needs to be tested, and there may still be some other uses of strxfrm (or strcoll) that need to be fixed; by kulath, see rev21175
svn: r21221
2013-01-26 08:42:40 +00:00
5feda5f56c do not need to translate webapp yet
svn: r21220
2013-01-25 15:27:29 +00:00
5d46ae352d 6364: dead people are shown as alive in narrated web page export
svn: r21218
2013-01-25 12:51:05 +00:00
4c622a7b0f updated german translation
svn: r21217
2013-01-24 20:38:19 +00:00
7e7ae7c42b update french translation, new template after checking missing references, Note: there is some webapp strings on template.
svn: r21216
2013-01-24 17:38:40 +00:00
0e172acd4c 6307: Use untranslated string in filter
svn: r21215
2013-01-24 16:47:36 +00:00
c221c1076a 6360: Fix to work with new model
svn: r21213
2013-01-24 16:28:58 +00:00
b2ae97c544 typo
svn: r21211
2013-01-24 15:45:34 +00:00
38f29ece86 listing missing references
svn: r21209
2013-01-24 15:34:21 +00:00
383bd9548a updated dutch translation
svn: r21208
2013-01-24 14:01:07 +00:00
97a37439d2 6288: crash: no attribute 'require_version' - better fix
svn: r21206
2013-01-24 08:44:52 +00:00
3ba99eb0b0 update french translation
svn: r21205
2013-01-23 19:05:47 +00:00
1e02a60f14 [Bug #6361] try to run soundex tool
Updated for python3

svn: r21204
2013-01-22 22:22:48 +00:00
a5ffbb5e08 Fixed one small german translation error
svn: r21202
2013-01-22 21:44:08 +00:00
c36181d024 Bug #6255. Do not use TextIOWrapper when running python2.
svn: r21200
2013-01-22 20:54:34 +00:00
d91be2fd0b updated dutch translation
svn: r21193
2013-01-22 09:01:44 +00:00
b23699d9ce updated dutch translation
svn: r21192
2013-01-22 08:19:18 +00:00
313dcb77c2 updated dutch translation
svn: r21191
2013-01-21 22:51:38 +00:00
348fa98341 "grampletview" is now "dashboardview"
svn: r21190
2013-01-21 15:58:18 +00:00
7ac6856b60 Updated translation.
svn: r21185
2013-01-21 14:20:48 +00:00
e60ffbf83b updated dutch translation
svn: r21183
2013-01-21 08:55:39 +00:00
5735799057 Bug #6255. Wrap gzip files with TextIOWrapper to allow them to be read as text.
svn: r21176
2013-01-20 17:15:35 +00:00
0446b7405d Add goocanvas-2.0 to gramps dependencies
svn: r21172
2013-01-19 21:46:15 +00:00
7be387e8fd updated nl translation
svn: r21167
2013-01-18 19:25:21 +00:00
f0cc7f35d6 Use public interface of Gtk.TreeModel in listview code
svn: r21166
2013-01-18 18:53:38 +00:00
b7d5bed60a 6353: Fix error when setting colours
svn: r21164
2013-01-18 18:25:06 +00:00
c56fb05d1c Remove handle and tooltip columns from models
svn: r21162
2013-01-18 00:04:18 +00:00
64a8895df9 Tidy up bookmark code
svn: r21161
2013-01-18 00:03:48 +00:00
afefbeedf8 Allow icons as column headings in listviews
svn: r21160
2013-01-17 23:52:07 +00:00
64ca5d105f 1765: Add private column to views
svn: r21159
2013-01-17 23:51:48 +00:00
1d3a687c0c 6333: Display optional close button in gramplet bar tabs
svn: r21141
2013-01-17 00:02:38 +00:00
fb56547589 6331: Fix spelling mistakes
svn: r21138
2013-01-15 21:07:16 +00:00
e91a06dc1b 6338: NotImplementedError on Export a View to a spreadsheet from the People Category
svn: r21135
2013-01-15 19:48:54 +00:00
096e57e36a Add family filter to match twins
svn: r21133
2013-01-15 18:28:11 +00:00
44ea1b0fa8 6330: Can't download ans install addons
svn: r21130
2013-01-15 10:59:06 +00:00
3c75de2327 Filter was not working, we need to query global variable when we need it, not once at start
svn: r21128
2013-01-15 10:18:28 +00:00
ca287ac12e factor out double handle2internal
svn: r21126
2013-01-15 08:49:08 +00:00
bb392985f0 6329: Crazy citations after XML import of bacuo from Gramps 3.4.3
svn: r21124
2013-01-15 08:43:16 +00:00
0625ed8109 6326: Running Export View crashes with 'tuple' object has no attribute 'get_indices'
svn: r21119
2013-01-14 18:57:33 +00:00
5824a674d6 Changes for 1.6 svn
svn: r21118
2013-01-14 18:40:17 +00:00
ee7ef78f6d more absolute addressing, not relative
svn: r21116
2013-01-14 18:26:19 +00:00
6a287a6018 Rename Gramplet View to Dashboard View
svn: r21113
2013-01-14 11:50:32 +00:00
92ba36c349 Fix typo in GI_TYPELIB_PATH
svn: r21111
2013-01-13 21:07:03 +00:00
54fd78c12a Include gi typelibs in bundle
svn: r21109
2013-01-13 20:38:56 +00:00
adb8a084a4 Build Graphviz with pango and freetype support
Otherwise it can't output PDFs.
Also update Boost to 1.52.0



svn: r21108
2013-01-13 20:38:27 +00:00
c133edec8e updated dutch translation
svn: r21105
2013-01-13 19:57:22 +00:00
d3f8f73180 Updates to navigation sidebar
svn: r21104
2013-01-13 17:28:18 +00:00
c081c5f6f5 6288: crash: no attribute 'require_version'
svn: r21099
2013-01-13 16:50:34 +00:00
41b4634d52 updated german translation
svn: r21095
2013-01-13 02:55:15 +00:00
26ac4a6856 Add lib/girepository folder to bundle
Also Pango environment to find modules


svn: r21094
2013-01-13 02:10:26 +00:00
d4cd826b6f Updating pt_BR translation
svn: r21093
2013-01-13 01:09:01 +00:00
bd65cfcbea 6229: bug when creating a book reports
svn: r21091
2013-01-13 01:07:47 +00:00
8bf43ccabb 6315: Inserting action group 'Bookmarks' into UI manager which already has a group with this name
svn: r21086
2013-01-12 22:20:32 +00:00
faac8fef8a 6318: Mention in the README that RCS is an optional package
svn: r21084
2013-01-12 15:00:36 +00:00
1f825771b5 6321: installed rcs and tried to make an archive
svn: r21082
2013-01-12 14:48:37 +00:00
e677f40cab 6306: Remove focus from the help button in detached gramplet windows
svn: r21081
2013-01-12 00:03:31 +00:00
f9305d9e7f 6310: Warning dialog "No Home Person" should be helpful and more descriptive
svn: r21078
2013-01-11 22:50:42 +00:00
80625063a0 6291: No Text report, with output format ODF, is created
svn: r21076
2013-01-11 22:32:02 +00:00
5923610e80 6312: Fix Dashboard category icon
svn: r21075
2013-01-11 22:11:07 +00:00
904dd024c6 6307: Bug fixes for To Do gramplets
svn: r21072
2013-01-11 19:24:01 +00:00
a4abc9f26a fix error from fix encoding issue for python 3
svn: r21069
2013-01-11 17:20:00 +00:00
f4e6ffb4be 6307: Improved ToDo gramplets
svn: r21068
2013-01-11 16:19:24 +00:00
385641f092 fix home button issue in python3
svn: r21065
2013-01-11 15:18:00 +00:00
e292eb0400 6290: No Text report with output format PDF is created
6292: No Text report, with output format Print... , is created.


svn: r21063
2013-01-11 14:51:26 +00:00
af953dec7c Check for outdated const.py file
svn: r21062
2013-01-11 13:49:54 +00:00
9a6f472ffd Return correct field types for media path, desc, and mime
svn: r21060
2013-01-11 13:22:43 +00:00
c572259d25 Media Description not reported, typo
svn: r21058
2013-01-11 13:19:46 +00:00
e613f02469 fix encoding issue for python 3
svn: r21056
2013-01-11 13:04:50 +00:00
722f0f7589 Need to log in to run reports
svn: r21054
2013-01-10 19:19:33 +00:00
2255acaa62 Updates fro gramps-4.0.0-alpha3
svn: r21052
2013-01-10 18:10:08 +00:00
cac68a4110 Gramps Version number now includes svn
svn: r21051
2013-01-10 17:43:28 +00:00
599fe33470 6312: Rename Gramplets category to Dashboard
svn: r21049
2013-01-10 10:57:57 +00:00
222525e035 6309: Wrap text in empty gramplet bar tab
svn: r21047
2013-01-09 19:55:06 +00:00
94d452d63c 6311: Export assistant to export a GEDCOM fail
svn: r21044
2013-01-09 10:20:19 +00:00
b30220b72b 6311: Export assistant to export a GEDCOM fails
svn: r21043
2013-01-09 10:12:23 +00:00
1604af190d Update .gitignore
svn: r21041
2013-01-08 21:56:44 +00:00
711aba5272 Update MANIFEST.in
svn: r21040
2013-01-08 21:56:34 +00:00
2aa9aa1f48 Fix svn revision import
svn: r21036
2013-01-08 18:33:08 +00:00
d62e751285 Change to absolute paths in const.py
svn: r21034
2013-01-08 17:31:57 +00:00
2553cdc642 6299: Calendar Gramplet does not display anything
6301: ImportError: No module named QuestionDialog


svn: r21031
2013-01-08 09:03:14 +00:00
15e44633cf 6067: Narrative Web reports people as Living even when they have a deceased event (but without a date because it is unknown)
svn: r21030
2013-01-08 03:28:20 +00:00
e5194e1462 4646: reports cannot be run from the command line in a non-GUI environment
svn: r21029
2013-01-08 03:03:09 +00:00
af9f421d3f Removed extra else: typo
svn: r21026
2013-01-08 02:35:20 +00:00
a3a8444fbe Restore Makefiles removed by mistake
svn: r21025
2013-01-07 22:28:34 +00:00
3401e86c60 updated dutch translation
svn: r21023
2013-01-07 14:10:03 +00:00
4b6a95f211 fix error of revision 20699
svn: r21022
2013-01-07 09:17:30 +00:00
d1765efa49 5972: GUI Crash (metaclass conflict) when some package (e.g. python-gnome2) installed
svn: r21020
2013-01-07 08:19:50 +00:00
0bd44eeb84 Bugs 5972 and 6132: needed to remove python-gnome2 to run, GUI Crash (metaclass conflict) when some package (e.g. python-gnome2) installed, 6132: metaclass conflict in flatbasemodel.py
svn: r21018
2013-01-07 04:32:53 +00:00
32b6b27dca typo in args error reporting
svn: r21017
2013-01-06 21:49:47 +00:00
7dd022bddf display error messages correctly
svn: r21014
2013-01-06 21:40:19 +00:00
642f837658 6256: Can't create graph reports
svn: r21011
2013-01-06 21:35:34 +00:00
5f24c8834c Don't show svnversion non-version response
svn: r21006
2013-01-06 00:34:12 +00:00
d60bbe812b new location for tips.xml, typo on path
svn: r21004
2013-01-05 14:36:49 +00:00
eee79d223b new location for tips.xml
svn: r21003
2013-01-05 14:24:51 +00:00
ddd1aae5c3 06256: Can't create graph reports
svn: r21001
2013-01-05 13:33:03 +00:00
17824534cb 6282: Can't create text reports with RTF output format in python 3
svn: r21000
2013-01-05 13:32:12 +00:00
a8c1530436 6276: Fix error installing gramps.png
svn: r20998
2013-01-05 12:09:31 +00:00
47fd0cf00f 6256: Can't create graph reports
svn: r20995
2013-01-05 11:34:36 +00:00
5105b4fd44 6277: Out of index when creating textreort with PDF format
svn: r20993
2013-01-05 11:18:54 +00:00
5b8d5b739a Version back to 4.0.0-alpha3; handle version number in const.py
svn: r20991
2013-01-05 02:49:54 +00:00
bb9601a2a0 Move images and data directories. Also svn version code from r20919.
svn: r20990
2013-01-04 23:46:24 +00:00
81e1237b3c revert accidental 20685 regression (iteritems)
svn: r20988
2013-01-04 22:58:09 +00:00
236da6da81 File missed from last commit
svn: r20986
2013-01-04 22:34:09 +00:00
ca9f5de077 Convert filenames to lower case
svn: r20984
2013-01-04 22:28:57 +00:00
36008d3abe Remove make files from svn:ignore properties
svn: r20983
2013-01-04 21:41:20 +00:00
80d73f058c Remove remaining make files
svn: r20980
2013-01-04 18:08:04 +00:00
8d19b0198f 6281: Rename GrampsBar to GrampletBar and move into widgets directory
svn: r20979
2013-01-04 18:06:15 +00:00
9c69c3523e Fix of divison issue. There might be more of them.
svn: r20976
2013-01-04 15:40:26 +00:00
cae2814c97 6273: Detaching Gramplet in Sidebar/Bottombar views are not using full area
svn: r20973
2013-01-04 14:08:25 +00:00
421882c0e8 6270: Attempting to accidentally open Book Manager raises a Unhandled exception
svn: r20971
2013-01-04 13:28:20 +00:00
49585e1e96 updated dutch translation
svn: r20970
2013-01-03 19:45:50 +00:00
904397ff11 updated dutch translation
svn: r20968
2013-01-03 19:01:08 +00:00
5aa70b08a6 we are in 2013
svn: r20966
2013-01-03 18:42:11 +00:00
d080d15352 ready for alpha3
svn: r20964
2013-01-03 18:20:37 +00:00
f3c4314a89 new strings added for alpha3
svn: r20963
2013-01-03 18:15:08 +00:00
2284694530 typo
svn: r20962
2013-01-03 17:48:03 +00:00
15edee3a26 support for upgrade of database on python3
svn: r20960
2013-01-03 15:33:50 +00:00
d0e698ffac note model with wrong tag handle, gracefully continue
svn: r20958
2013-01-03 15:09:18 +00:00
addfaa933f FIX MAJOR ERROR blocking upgrade of old family trees !
svn: r20956
2013-01-03 11:26:13 +00:00
e2fc32c4c0 Fix exec problem in python 2 after previous change
svn: r20954
2013-01-03 11:19:05 +00:00
46e8d865b1 updated german translation
svn: r20953
2013-01-03 11:18:16 +00:00
c208b91184 Recover gracefully from some errors in python3
svn: r20950
2013-01-03 10:28:51 +00:00
ab6342af70 6258: Error during start of Gramps for certain LANG values
svn: r20948
2013-01-03 09:50:36 +00:00
715ddbbab3 6274: Tried to use Charts View and receive 'NameError: global name 'gen' is not defined'
svn: r20947
2013-01-03 05:41:28 +00:00
cc936c589b updated dutch translation
svn: r20945
2013-01-03 00:04:42 +00:00
f554ffd57d URL for Welcome Gramplet was still pointing to 3.3 manual
svn: r20942
2013-01-02 20:26:23 +00:00
46e9edaf59 [r20933]Bug 6268: Fix check_po for python3
svn: r20940
2013-01-02 17:27:39 +00:00
29620a31ef 6249: Please, add a tag when importing. Adds preference, and tag on import for CSV, XML, and GEDCOM. Cleaned up preferences, and added 'GEDCOM' to add source on import text.
svn: r20939
2013-01-02 07:12:22 +00:00
ca2fd738d0 Wait for report to exist before trying to download
svn: r20937
2013-01-02 03:20:16 +00:00
821caa8a5f 4719: Narweb Privacy issue, probably_alive uses spouse birth/death directly
svn: r20936
2013-01-02 03:02:25 +00:00
3a45e70f54 New URL for gramps-addons
svn: r20931
2013-01-01 20:08:45 +00:00
89f6c7d83e updated dutch translation
svn: r20928
2013-01-01 16:45:31 +00:00
ca73e01512 6266: loading plugin manager gives error
svn: r20926
2013-01-01 16:28:47 +00:00
bfcecc646d 6265: can not make back up
svn: r20923
2013-01-01 11:15:45 +00:00
77f9760504 6203: typo when interrupting a gramplet
svn: r20920
2013-01-01 07:15:23 +00:00
3a93d03a4a Two different types of selection data
svn: r20918
2012-12-31 20:55:52 +00:00
03851db458 Changes for gtk3 clipboard to work
svn: r20913
2012-12-31 18:57:02 +00:00
9f87dfd54b Improve check to prevent overwriting const.py
svn: r20911
2012-12-31 18:18:20 +00:00
711e25e5bb 6258: Error during start of Gramps for certain LANG values
svn: r20908
2012-12-31 15:00:35 +00:00
f1eecb349d Add timestamp to downloads
svn: r20907
2012-12-31 14:58:45 +00:00
04baa6b50f 6112: use get_indices method on TreePath for "old" Gtk version (e.g, 3.6.1)
svn: r20903
2012-12-31 13:39:32 +00:00
c18d73ea8f update translation template
svn: r20901
2012-12-31 09:59:59 +00:00
671f64c08c update NEWS and RELEASE_NOTES files, update ChangeLog (no revision)
svn: r20900
2012-12-31 09:48:50 +00:00
b9cd27550f Fix structure of build directory for locale files (merged from trunk; changes by Nick.H), road to alpha2
svn: r20899
2012-12-31 09:44:49 +00:00
8b26f688cb 6205: Gtk.CALENDAR needs a migration to new GI/GTK3 API
svn: r20896
2012-12-30 23:20:31 +00:00
e41c6db70d Added addons-url to config and Preferences; currently set to invalid URL, but will update in a couple of days when new addons URL comes on-line
svn: r20895
2012-12-30 22:00:58 +00:00
fdcc02d1bd Fix divisionbyzero in python3
svn: r20888
2012-12-30 17:32:22 +00:00
f4f5104b72 6205: Gtk.CALENDAR needs a migration to new GI/GTK3 API
Also: don't expand the calendar more than needed to show it.


svn: r20884
2012-12-30 15:41:54 +00:00
0caf61b805 avoid specific case with decimal comparison
svn: r20882
2012-12-30 15:28:48 +00:00
c46a66ecd1 More version strings
svn: r20880
2012-12-30 15:14:40 +00:00
35d553b4eb typo
svn: r20879
2012-12-30 10:05:42 +00:00
8bc6d475d9 updated dutch translation
svn: r20877
2012-12-29 22:11:31 +00:00
b5fec9d1a3 Set the correct number of update callbacks. Bug #6219.
svn: r20875
2012-12-29 17:20:47 +00:00
1a5c516179 6112: Cannot install addons via dialog
svn: r20869
2012-12-28 20:33:01 +00:00
054d29612c 6208: Cannot iterate on attributes when trying to paginate via cairodoc
At same time, fix deprecated cairocontext


svn: r20863
2012-12-28 17:21:28 +00:00
ad066ba200 updated dutch translation
svn: r20862
2012-12-28 16:51:41 +00:00
ffb3b1e232 6123: Index into undohistory, correct fail on older gobject
svn: r20859
2012-12-28 13:01:28 +00:00
76c896f977 Improve hover handling on displaytabs
svn: r20858
2012-12-28 10:27:38 +00:00
5e00312139 spacing, tab (fr) and paths for files (en, fr)
svn: r20855
2012-12-28 09:41:22 +00:00
c7ad3f3295 correct wrong function call
svn: r20851
2012-12-27 17:50:58 +00:00
11723ffd8c updated german translation
svn: r20850
2012-12-27 12:13:26 +00:00
cb9bebee1e Fix crash on callback after clean_up in gallerytab
svn: r20848
2012-12-26 23:18:50 +00:00
a9ac56b33c bug 1772: follow cursor to completely resolve bug
svn: r20846
2012-12-26 22:39:40 +00:00
19038fab93 bug 1772, correct event handling
svn: r20844
2012-12-26 22:22:07 +00:00
fd13311aa0 1. context menu on displaytabs showing
2. partially do bug 1772


svn: r20842
2012-12-26 22:15:03 +00:00
ec0b9fb54b 1567: beautify Relation Ship Graph, remove - if no date of birth or death
svn: r20840
2012-12-26 18:19:17 +00:00
8b94955772 GTK3 conversion in tools
svn: r20838
2012-12-24 12:35:40 +00:00
9a229466fd updated dutch translation
svn: r20837
2012-12-24 08:16:52 +00:00
647c9cfef5 rows_reoredered patch not yet in GTK
svn: r20833
2012-12-23 14:07:16 +00:00
29443339cb small translation and uptades
svn: r20832
2012-12-23 14:05:35 +00:00
f4f2747c65 updated dutch translation
svn: r20830
2012-12-23 08:11:31 +00:00
ba7913fe3c Restore include to git.gnome.org
svn: r20828
2012-12-23 02:20:13 +00:00
5526f64e1f Mods for Gtk3, Gramps 4.0.0
svn: r20827
2012-12-23 02:17:31 +00:00
0a17eab461 spacing, tab (fr) and VERSION (en, fr)
svn: r20825
2012-12-22 19:48:21 +00:00
fcce312e0a update used paths and gramps versions
svn: r20823
2012-12-22 17:51:22 +00:00
4ed2b0bace Convert validated masked entry to normal gtk.entry with icon
Working background color change on error


svn: r20821
2012-12-22 13:24:21 +00:00
759075b3e4 rows_reordered is present again in GTK 3.8
svn: r20820
2012-12-22 09:24:00 +00:00
7f4956dd00 updated dutch translation
svn: r20818
2012-12-21 19:59:12 +00:00
e1ab03348e Someone optimized some code incorrectly; lines at bottom of calendar where placed off the page
svn: r20816
2012-12-21 18:57:32 +00:00
2033fd6567 If you try to lookup an object too early, you might find that the tbl is still a dict; this protects such early lookups from crashing
svn: r20814
2012-12-21 18:34:44 +00:00
7c6872c11a alpha1 environment, what should be the VERSION into gen/const.py.in ?
svn: r20810
2012-12-21 14:15:45 +00:00
71f87a31b3 update content for 4.0.0-alpha1
svn: r20809
2012-12-21 14:09:38 +00:00
eb2ca43ff6 avoid fatal errors on norwegian bokmål translation, string status to fuzzy before review
svn: r20808
2012-12-21 13:47:14 +00:00
71b951f31d avoid fatal errors on swedish translation, string status to fuzzy before review
svn: r20807
2012-12-21 13:38:45 +00:00
a542081e25 test update and merge processes with the french translation file
svn: r20806
2012-12-21 13:26:33 +00:00
5b8da49bae do not need to check untranslated and fuzzy strings because they have not been reviewed yet; warning this script uses tab for the bloc indentation...
svn: r20804
2012-12-20 17:41:09 +00:00
4d7e1043ef On translation error, allow build to continue after asking user
svn: r20802
2012-12-20 16:40:23 +00:00
2040716b9c common date handler for Norwegian Bokmål and Norwegian Nynorsk
svn: r20801
2012-12-20 14:16:30 +00:00
8a3a477ea4 Create 4.0 branch
svn: r20798
2012-12-20 13:31:33 +00:00
1048 changed files with 149593 additions and 140147 deletions

5
.gitignore vendored
View File

@ -2,11 +2,12 @@
*.py[cod]
# Distutils
MANIFEST
build/
sdist/
dist/
# Gramps
gramps/data/tips.xml
data/tips.xml
gramps/gen/const.py
gramps/plugins/lib/holidays.xml
po/.intltool-merge-cache

View File

@ -11,34 +11,22 @@ include TestPlan.txt
recursive-include data *
recursive-include debian *
recursive-include docs *
recursive-include gramps *
recursive-include help *
recursive-include images *
recursive-include mac *
recursive-include po *
recursive-include gramps *
recursive-include test *
recursive-include windows *
# Remove files created in the build
exclude data/gramps.desktop
exclude data/gramps.keys
exclude data/gramps.xml
recursive-exclude data/man *.1
recursive-exclude data/man *.1.gz
exclude gramps/const.py
exclude gramps/data/tips.xml
exclude data/tips.xml
exclude gramps/gen/const.py
exclude gramps/plugins/lib/holidays.xml
exclude po/*.gmo
exclude po/.intltool-merge-cache
exclude po/stamp-it
exclude po/POTFILES
global-exclude *.pyc
global-exclude *.py~
global-exclude *.pyo
global-exclude *.bak
# Remove directories which should not be included in the distribution
prune src/guiQML
prune src/webapp
# Remove Makefiles used by autotools
global-exclude Makefile*
prune gramps/guiQML
#prune gramps/webapp

17
NEWS
View File

@ -1,3 +1,20 @@
2012-10-28
Version 3.4.2 -- the "We're all individuals!" bug fix release.
* Some fixes on NarrativeWeb report
* Some fixes on book report
* Improvement on database path interface and user's preferences
* Consistency on Name display and regex support
* Some platform-specific fixes for Windows system environment
* Better support for media links on Gedcom file format
* Fix possible incorrect family relations on Gedcom file format
* Various fixes on citation records
* Fix and improve places handling on Geography views
* Fix on command line arguments
* Consistency on PDF file format
* New language: Greek
* Various updated translations
* Changelog: http://www.gramps-project.org/bugs/changelog_page.php?version_id=32
2012-08-23
Version 3.4.1 -- The "A tiger? In Africa?!" bug fix release.
Mention in the release that upgrading is advised for two critical issues:

14
README
View File

@ -8,6 +8,7 @@ The following packages *MUST* be installed in order for Gramps to work:
Python 2.7 or greater, Python 3.2 or greater (python version cannot be mixed)
GTK 3.0 or greater
pygobject 3.3.2 or greater
cairo, pango, pangocairo with instrospection bindings (the gi packages)
librsvg2 (svg icon view)
xdg-utils
@ -23,7 +24,7 @@ to your language:
The following packages are *STRONGLY RECOMMENDED* to be installed:
osmgpsmap Used to show maps in the geography view.
Without this the GeoView will not be active, see
http://gramps-project.org/wiki/index.php?title=Gramps_3.3_Wiki_Manual_-_Main_Window#Geography_Category
http://gramps-project.org/wiki/index.php?title=Gramps_4.0_Wiki_Manual_-_Main_Window#Geography_Category
The package is named osmgpsmap, osm-gps-map
or python-osmgpsmap. Or obtain it from: http://nzjrs.github.com/osm-gps-map/
GraphViz Enable creation of graphs using GraphViz engine.
@ -38,6 +39,14 @@ The following packages are optional
enchant. A version of gtkspell with gobject introspection
is needed, so minimally version 3.0.0
rcs The GNU Revision Control System (RCS) can be used to manage
multiple revisions of your family trees. See info at
http://www.gramps-project.org/wiki/index.php?title=Gramps_4.0_Wiki_Manual_-_Manage_Family_Trees#Archiving_a_Family_Tree
Only rcs is needed, NO python bindings are required
PIL Python Image Library is needed to convert non jpg images to
jpg so as to include them in LaTeX output
ttf-freefont More font support in the reports
gir-webkit GObject introspection data of WebKit is required for the
@ -62,9 +71,6 @@ No longer needed in 3.2:
No longer needed in 3.1:
yelp Gnome help browser. At the moment no help is shipped
Remark: There is a conflict when using python-gnome2 in Ubuntu. This is evident
with the error: TypeError: Error when calling the metaclass bases
metaclass conflict
Documentation
---------------------------------

View File

@ -1,24 +1,33 @@
Gramps 3.2 Release Notes
"UNSTABLE Gramps 4.0.0 Alpha5 release.
General Improvements
This is a technology preview to allow plugin writers and packagers-installer
writers to update their plugins and scripts. This release is not production
ready, so use for testing!"
* New Plugin System
In the Help Menu -> Menu Status, all available plugins are visible. All plugins can be hidden, saving resources and hiding options you do not need. Eg: You don't use the Pedigree View? Hide it in the Plugin Status, and it will not be present anymore. You don't use vcard export? Hide it in the Plugin Status, and it will not be offered anymore.
It is recommended to use Gramps 4.0.0 with python 3.2 so as to be ready
for the future (python 2.7 works though).
* Faster
Many under the hood improvements have occurred that should improve perfamance enormously. Yes, new features are present to use all your processing power, but they are all implemented as plugins that can be hidden. Eg: Insert of a person in a 30000 people family tree took 4sec on 1.4Ghz PC in 3.1, Now it is done in milliseconds.
The dependencies for Gramps 4.0.0 are _completely_ different than 3.4 due
to the switch to GObject introspection, and the removal of autotools. So
only install 4.0.0 if you are certain you can obtain the dependencies,
see README and INSTALL.
*New Views
There are new views, and some views have been greatly improved
- People view can now be sorted on the columns
- A Place treeview is present, nicely grouping your places under country groups
- GeoView has left it's beta status behind and shows your data on an
online map (Openstreetmap or google maps, fast internet connection required)
- Help Menu -> Extra Reports/Tools open a webpage with downloadable extra views
For linux, in Ubuntu 12.10 you can install 4.0.0, but you will need to
compile and install osmgpsmap manually to have the maps working (see
http://www.gramps-project.org/wiki/index.php?title=GEPS_029:_GTK3-GObject_introspection_Conversion#OsmGpsMap_for_Geography )
Other Improvements
Major enhancements in Gramps 4.0.0:
* Styled Notes now in most output formats that support styles, eg in the web report
* New languages
* Select language in which report should be created (only present now in some reports)
* GEP 8: code reorganization: http://www.gramps-project.org/wiki/index.php?title=GEPS_008:_File_Organization
* GEP 26: Replace make: http://www.gramps-project.org/wiki/index.php?title=GEPS_026:_Replace_%27make%27_for_Gramps_build
* GEP 29: Gtk 3 :http://www.gramps-project.org/wiki/index.php?title=GEPS_029:_GTK3-GObject_introspection_Conversion
* GEP 31: Python 3 support: http://www.gramps-project.org/wiki/index.php?title=GEPS_031:_Python_3_support
More info in the manual
http://www.gramps-project.org/wiki/index.php?title=Gramps_4.0_Wiki_Manual_-_What%27s_new%3F
Everybody is invited to update the manual to make it current!

View File

@ -1,14 +0,0 @@
# This is the data/man level Makefile for Gramps
# $Id$
SUBDIRS = fr sv nl pl cs pt_BR
man_IN_FILES = gramps.1.in
man_MANS = $(man_IN_FILES:.1.in=.1)
EXTRA_DIST = $(man_MANS) $(man_IN_FILES)
gramps.1: $(top_builddir)/config.status gramps.1.in
cd $(top_builddir) && CONFIG_FILES=data/man/$@ $(SHELL) ./config.status
CLEANFILES=$(man_MANS)

View File

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

View File

@ -1,14 +0,0 @@
# This is the data/man/sv level Makefile for Gramps
# $Id: Makefile.am 6189 2006-03-21 19:05:46Z rshura $
man_IN_FILES = gramps.1.in
man_MANS = $(man_IN_FILES:.1.in=.1)
mandir = @mandir@/cs
EXTRA_DIST = $(man_MANS) $(man_IN_FILES)
gramps.1: $(top_builddir)/config.status gramps.1.in
cd $(top_builddir) && CONFIG_FILES=data/man/cs/$@ $(SHELL) ./config.status
CLEANFILES=$(man_MANS)

View File

@ -249,7 +249,9 @@ gramps(1) 3.4.0 gramps(1)
*${PREFIX}/bin/gramps*
*${PREFIX}/share/gramps*
*${PREFIX}/lib/python/dist-packages/gramps/*
*${PREFIX}/share/*
*${HOME}/.gramps*

View File

@ -1,7 +1,7 @@
English
=======
gramps(1) 4.0.0 gramps(1)
gramps(1) @VERSION@ gramps(1)
@ -262,11 +262,14 @@ gramps(1) 4.0.0 gramps(1)
**KNOWN BUGS AND LIMITATIONS**
**FILES**
**FILES**
*${PREFIX}/bin/gramps*
*${PREFIX}/share/gramps*
*${PREFIX}/lib/python/dist-packages/gramps/*
*${PREFIX}/share/*
*${HOME}/.gramps*
@ -293,4 +296,4 @@ gramps(1) 4.0.0 gramps(1)
January 2013 4.0.0 gramps(1)
gramps(1) @VERSION@ gramps(1)

View File

@ -1,14 +0,0 @@
# This is the data/man/fr level Makefile for Gramps
# $Id$
man_IN_FILES = gramps.1.in
man_MANS = $(man_IN_FILES:.1.in=.1)
mandir = @mandir@/fr
EXTRA_DIST = $(man_MANS) $(man_IN_FILES)
gramps.1: $(top_builddir)/config.status gramps.1.in
cd $(top_builddir) && CONFIG_FILES=data/man/fr/$@ $(SHELL) ./config.status
CLEANFILES=$(man_MANS)

View File

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

View File

@ -1,9 +1,7 @@
French
=======
gramps(1) 4.0.0 gramps(1)
gramps(1) @VERSION@ gramps(1)
**NOM**
@ -34,33 +32,33 @@ gramps(1) 4.0.0 gramps(1)
**OPTIONS**
**gramps** *FICHIER*
Si *FICHIER* est désigné (sans autres commandes) comme arbre
familial ou comme répertoire d'arbre familial, alors une session
interactive est ouverte. Si *FICHIER* est un format de fichier
supporté par Gramps, une base vide est créée dont le nom est
celui du *FICHIER* et les données y seront importées. Les autres
options sont ignorées. Ce type de lancement permet d'utiliser
gramps pour manipuler des données comme dans un navigateur web.
Les formats natifs de gramps sont acceptés, voir ci-dessous.
Si *FICHIER* est désigné (sans autres commandes) comme arbre
familial ou comme répertoire d'arbre familial, alors une session
interactive est ouverte. Si *FICHIER* est un format de fichier
supporté par Gramps, une base vide est créée dont le nom est
celui du *FICHIER* et les données y seront importées. Les autres
options sont ignorées. Ce type de lancement permet d'utiliser
gramps pour manipuler des données comme dans un navigateur web.
Les formats natifs de gramps sont acceptés, voir ci-dessous.
**-f** , **--format=** *FORMAT*
Le format spécifique du *FICHIER* est précédé par les arguments
**-i** , ou **-e** . Si l'option **-f** n'est pas donnée pour le *FICHIER* ,
alors le format sera celui de l'extension ou du type-MIME.
Le format spécifique du *FICHIER* est précédé par les arguments
**-i** , ou **-e** . Si l'option **-f** n'est pas donnée pour le *FICHIER* ,
alors le format sera celui de l'extension ou du type-MIME.
Les formats de sortie disponibles sont **gramps-xml** (deviné si
*FICHIER* se termine par **.gramps** ), et **gedcom** (deviné si *FICHIER* se
termine par **.ged** ), ou tout autre fichier d'exportation
disponible dans le système de plugin Gramps.
Les formats de sortie disponibles sont **gramps-xml** (deviné si
*FICHIER* se termine par **.gramps** ), et **gedcom** (deviné si *FICHIER* se
termine par **.ged** ), ou tout autre fichier d'exportation
disponible dans le système de plugin Gramps.
Les formats disponibles pour l'importation sont **grdb** ,
**gramps-xml** , **gedcom** , **gramps-pkg** (deviné si *FICHIER* se termine par
**.gpkg** ), et **geneweb** (deviné si *FICHIER* se termine par **.gw** ).
Les formats disponibles pour l'importation sont **grdb** ,
**gramps-xml** , **gedcom** , **gramps-pkg** (deviné si *FICHIER* se termine par
**.gpkg** ), et **geneweb** (deviné si *FICHIER* se termine par **.gw** ).
Les formats disponibles pour l'exportation sont **gramps-xml** , **ged
com** , **gramps-pkg** , **wft** (deviné si *FICHIER* se termine par **.wft** ),
**geneweb** .
Les formats disponibles pour l'exportation sont **gramps-xml** , **ged
com** , **gramps-pkg** , **wft** (deviné si *FICHIER* se termine par **.wft** ),
**geneweb** .
**-l**
@ -68,29 +66,29 @@ gramps(1) 4.0.0 gramps(1)
**-u** , **--force-unlock**
Débloquer une base de données verrouillée.
Débloquer une base de données verrouillée.
**-O** , **--open=** *BASE_DE_DONNEES*
Ouvrir une *BASE_DE_DONNEES* qui doit être une base présente dans
le répertoire des bases ou le nom d'un arbre familial existant.
Si aucune action n'est définie, les options d'import ou d'export
sont données par la ligne de commande puis une session interac
tive est ouverte, utilisant cette base de données.
Ouvrir une *BASE_DE_DONNEES* qui doit être une base présente dans
le répertoire des bases ou le nom d'un arbre familial existant.
Si aucune action n'est définie, les options d'import ou d'export
sont données par la ligne de commande puis une session interactive
est ouverte, utilisant cette base de données.
Seulement une base peut être ouverte. Si vous utilisez plusieurs
sources, vous devez utiliser l'option d'import.
Seulement une base peut être ouverte. Si vous utilisez plusieurs
sources, vous devez utiliser l'option d'import.
**-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.
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.
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
même ordre, i.e. **-i** *FICHIER1* **-i** *FICHIER2* et **-i** *FICHIER2* **-i**
*FICHIER1* vont tous les deux produire différents IDs gramps.
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
même ordre, **-i** *FICHIER1* **-i** *FICHIER2* et **-i** *FICHIER2* **-i**
*FICHIER1* vont tous les deux produire différents IDs gramps.
**-e** , **--export=** *FICHIER*
@ -104,38 +102,38 @@ gramps(1) 4.0.0 gramps(1)
**-a** , **--action=** *ACTION*
Accomplir une *ACTION* sur les données importées. C'est effectué à
la fin de l'importation. Les actions possibles sont **summary**
(comme le rapport -> Afficher -> Statistiques sur la base),
**check** (comme l'outil -> Réparation de la base -> Vérifier et
réparer), **report** (produit un rapport) et **tool** (utilise un
outil), ces derniers ont besoin de *OPTION* précédé par la commande -p.
Accomplir une *ACTION* sur les données importées. C'est effectué à
la fin de l'importation. Les actions possibles sont **summary**
(comme le rapport -> Afficher -> Statistiques sur la base),
**check** (comme l'outil -> Réparation de la base -> Vérifier et
réparer), **report** (produit un rapport) et **tool** (utilise un
outil), ces derniers ont besoin de *OPTION* précédé par la commande -p.
L' *OPTION* doit satisfaire ces conditions:
Il ne doit pas y avoir d'espace. Si certains arguments doivent
utiliser des espaces, la chaîne doit être encadrée par des
guillemets. Les options vont par paire nom et valeur. Une
paire est séparée par un signe égal. Différentes paires sont
séparées par une virgule.
L' *OPTION* doit satisfaire ces conditions:
Il ne doit pas y avoir d'espace. Si certains arguments doivent
utiliser des espaces, la chaîne doit être encadrée par des
guillemets. Les options vont par paire nom et valeur. Une
paire est séparée par un signe égal. Différentes paires sont
séparées par une virgule.
La plupart des options sont spécifiques à chaque rapport. Même
s'il existe des options communes.
La plupart des options sont spécifiques à chaque rapport. Même
s'il existe des options communes.
**name=name**
Cette option est obligatoire, elle détermine quel rapport ou
outil sera utilisé. Si le name saisi ne correspond à aucun
module disponible, un message d'erreur sera ajouté.
**name=name**
Cette option est obligatoire, elle détermine quel rapport ou
outil sera utilisé. Si le name saisi ne correspond à aucun
module disponible, un message d'erreur sera ajouté.
**show=all**
Cette option produit une liste avec les noms des options
disponibles pour un rapport donné.
**show=all**
Cette option produit une liste avec les noms des options
disponibles pour un rapport donné.
**show=optionname**
Cette option affiche une description de toutes les fonctionnalités
proposées par optionname, aussi bien les types que les valeurs pour une option.
Utiliser les options ci-dessus pour trouver tout sur un rapport
choisi.
choisi.
Quand plus d'une action doit être effectuée, chacune doit être précédée
@ -144,23 +142,23 @@ gramps(1) 4.0.0 gramps(1)
**-d** , **--debug=** *NOM_LOGGER*
Permet les logs de debug pour le développement et les tests.
Regarder le code source pour les détails.
Permet les logs de debug pour le développement et les tests.
Regarder le code source pour les détails.
**--version**
Imprime le numéro de version pour gramps puis quitte.
Imprime le numéro de version pour gramps puis quitte.
**Opération**
Si le premie argument de la ligne de commande ne commence pas par un
tiret (i.e. pas d'instruction), gramps va essayer d'ouvrir la base de
données avec le nom donné par le premier argument et démarrer une ses
Si le premier argument de la ligne de commande ne commence pas par un
tiret (i.e. pas d'instruction), gramps va essayer d'ouvrir la base de
données avec le nom donné par le premier argument et démarrer une ses
sion interactive, en ignorant le reste de la ligne de commande.
Si la commande **-O** est notée, alors gramps va essayer le fichier défini
Si la commande **-O** est notée, alors gramps va essayer le fichier défini
et va travailler avec ses données, comme pour les autres paramètres de
la ligne de commande.
@ -183,7 +181,7 @@ gramps(1) 4.0.0 gramps(1)
Cette base sera **import_db.grdb** dans le répertoire **~/.gramps/import**.
Les erreurs rencontrées lors d'importation, d'exportation, ou d'action, seront
Les erreurs rencontrées lors d'importation, d'exportation, ou d'action, seront
mémorisées en *stdout* (si elles sont le fait de la manipulation par
gramps) ou en *stderr* (si elles ne sont pas le fait d'une manipulation).
Utilisez les shell de redirection de *stdout* et *stderr* pour sauver
@ -191,16 +189,16 @@ gramps(1) 4.0.0 gramps(1)
**EXEMPLES**
Pour ouvrir un arbre familial et y importer un fichier XML, on peut
Pour ouvrir un arbre familial et y importer un fichier XML, on peut
saisir:
**gramps -O** *'Mon Arbre Familial'* **-i** *~/db3.gramps*
**gramps -O** *'Mon Arbre Familial'* **-i** *~/db3.gramps*
Ceci ouvre un arbre familial, pour faire la même chose, mais importer
dans un arbre familial temporaire et démarrer une session interactive,
on peut saisir:
dans un arbre familial temporaire et démarrer une session interactive,
on peut saisir :
**gramps -i** *'Mon Arbre Familial'* **-i** *~/db3.gramps*
**gramps -i** *'Mon Arbre Familial'* **-i** *~/db3.gramps*
Lecture de quatre bases de données dont les formats peuvent être
devinés d'après les noms, puis vérification des données:
@ -225,12 +223,12 @@ gramps(1) 4.0.0 gramps(1)
Pour lire trois ensembles de données puis lancer une session
interactive de gramps sur le tout :
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
Pour lancer l'outil de vérification de la base de données depuis la
ligne de commande et obtenir le résultat :
**gramps -O** *'My Family Tree'* **-a** *tool* **-p name=** *verify*
**gramps -O** *'My Family Tree'* **-a** *tool* **-p name=** *verify*
Enfin, pour lancer une session interactive normale, entrer :
@ -253,21 +251,24 @@ gramps(1) 4.0.0 gramps(1)
**CONCEPTS**
Gramps est un système basé sur le support de plugin-python, permettant
d'importer et d'exporter, la saisie, générer des rapports, des outils,
et afficher des filtres pouvant être ajoutés sans modifier le programme.
d'importer et d'exporter, la saisie, générer des rapports, des outils,
et afficher des filtres pouvant être ajoutés sans modifier le programme.
Par ailleurs, gramps permet la génération directe : impression, rap
ports avec sortie vers d'autres formats, comme *LibreOffice.org* ,
*HTML* , ou *LaTeX* pour permettre à l'utilisateur de choisir selon ses
*HTML* , ou *LaTeX* pour permettre à l'utilisateur de choisir selon ses
besoins
**BUGS CONNUS ET LIMITATIONS**
**FICHIERS**
*${PREFIX}/bin/gramps*
*${PREFIX}/share/gramps*
*${PREFIX}/lib/python/dist-packages/gramps/*
*${PREFIX}/share/*
*${HOME}/.gramps*
@ -296,4 +297,4 @@ gramps(1) 4.0.0 gramps(1)
Janvier 2013 4.0.0 gramps(1)
gramps(1) @VERSION@ gramps(1)

View File

@ -1,4 +1,4 @@
.TH "GRAMPS" "1" "04 December 2012" "4.0" "Gramps"
.TH "GRAMPS" "1" "28 December 2012" "4.0" "Gramps"
.SH NAME
gramps \- Gramps Documentation
.
@ -28,10 +28,10 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.\" Man page generated from reStructeredText.
.\" Man page generated from reStructuredText.
.
.sp
gramps(1) 4.0.0 gramps(1)
gramps(1) @VERSION@ gramps(1)
.INDENT 0.0
.TP
.B \fBNOM\fP
@ -72,7 +72,7 @@ Les formats natifs de gramps sont acceptés, voir ci\-dessous.
.TP
.B \fB\-f\fP , \fB\-\-format=\fP \fIFORMAT\fP
Le format spécifique du \fIFICHIER\fP est précédé par les arguments
\fB\-i\fP , ou \fB\-e\fP . Si l\(aqoption \fB\-f\fP n\(aqest pas donnée pour le \fIFICHIER\fP ,
\fB\-i\fP , ou \fB\-e\fP . Si l\(aqoption \fB\-f\fP n\(aqest pas donnée pour le \fIFICHIER\fP ,
alors le format sera celui de l\(aqextension ou du type\-MIME.
.sp
Les formats de sortie disponibles sont \fBgramps\-xml\fP (deviné si
@ -96,10 +96,10 @@ Débloquer une base de données verrouillée.
.TP
.B \fB\-O\fP , \fB\-\-open=\fP \fIBASE_DE_DONNEES\fP
Ouvrir une \fIBASE_DE_DONNEES\fP qui doit être une base présente dans
le répertoire des bases ou le nom d\(aqun arbre familial existant.
le répertoire des bases ou le nom d\(aqun arbre familial existant.
Si aucune action n\(aqest définie, les options d\(aqimport ou d\(aqexport
sont données par la ligne de commande puis une session interac
tive est ouverte, utilisant cette base de données.
sont données par la ligne de commande puis une session interactive
est ouverte, utilisant cette base de données.
.sp
Seulement une base peut être ouverte. Si vous utilisez plusieurs
sources, vous devez utiliser l\(aqoption d\(aqimport.
@ -109,9 +109,9 @@ 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
Quand plus d\(aqun fichier doit être importé, chacun doit être
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
même ordre, i.e. \fB\-i\fP \fIFICHIER1\fP \fB\-i\fP \fIFICHIER2\fP et \fB\-i\fP \fIFICHIER2\fP \fB\-i\fP
même ordre, \fB\-i\fP \fIFICHIER1\fP \fB\-i\fP \fIFICHIER2\fP et \fB\-i\fP \fIFICHIER2\fP \fB\-i\fP
\fIFICHIER1\fP vont tous les deux produire différents IDs gramps.
.TP
.B \fB\-e\fP , \fB\-\-export=\fP \fIFICHIER\fP
@ -124,17 +124,15 @@ précédé par la commande \fB\-e\fP . Ces fichiers sont importés dans le
même ordre.
.TP
.B \fB\-a\fP , \fB\-\-action=\fP \fIACTION\fP
.INDENT 7.0
.INDENT 3.5
Accomplir une \fIACTION\fP sur les données importées. C\(aqest effectué à
la fin de l\(aqimportation. Les actions possibles sont \fBsummary\fP
(comme le rapport \-> Afficher \-> Statistiques sur la base),
\fBcheck\fP (comme l\(aqoutil \-> Réparation de la base \-> Vérifier et
réparer), \fBreport\fP (produit un rapport) et \fBtool\fP (utilise un
la fin de l\(aqimportation. Les actions possibles sont \fBsummary\fP
(comme le rapport \-> Afficher \-> Statistiques sur la base),
\fBcheck\fP (comme l\(aqoutil \-> Réparation de la base \-> Vérifier et
réparer), \fBreport\fP (produit un rapport) et \fBtool\fP (utilise un
outil), ces derniers ont besoin de \fIOPTION\fP précédé par la commande \-p.
.sp
L\(aq \fIOPTION\fP doit satisfaire ces conditions:
Il ne doit pas y avoir d\(aqespace. Si certains arguments doivent
Il ne doit pas y avoir d\(aqespace. Si certains arguments doivent
utiliser des espaces, la chaîne doit être encadrée par des
guillemets. Les options vont par paire nom et valeur. Une
paire est séparée par un signe égal. Différentes paires sont
@ -144,25 +142,21 @@ La plupart des options sont spécifiques à chaque rapport. Même
s\(aqil existe des options communes.
.sp
\fBname=name\fP
Cette option est obligatoire, elle détermine quel rapport ou
Cette option est obligatoire, elle détermine quel rapport ou
outil sera utilisé. Si le name saisi ne correspond à aucun
module disponible, un message d\(aqerreur sera ajouté.
.sp
\fBshow=all\fP
Cette option produit une liste avec les noms des options
disponibles pour un rapport donné.
.UNINDENT
.UNINDENT
.sp
\fBshow=optionname\fP
Cette option affiche une description de toutes les fonctionnalités
proposées par optionname, aussi bien les types que les valeurs pour une option.
.INDENT 7.0
.TP
.B Utiliser les options ci\-dessus pour trouver tout sur un rapport
.sp
Utiliser les options ci\-dessus pour trouver tout sur un rapport
choisi.
.UNINDENT
.UNINDENT
.sp
Quand plus d\(aqune action doit être effectuée, chacune doit être précédée
par la commande \fB\-a\fP . Les actions seront réalisées une à une, dans
@ -178,12 +172,12 @@ Imprime le numéro de version pour gramps puis quitte.
.UNINDENT
.TP
.B \fBOpération\fP
Si le premie argument de la ligne de commande ne commence pas par un
tiret (i.e. pas d\(aqinstruction), gramps va essayer d\(aqouvrir la base de
données avec le nom donné par le premier argument et démarrer une ses
Si le premier argument de la ligne de commande ne commence pas par un
tiret (i.e. pas d\(aqinstruction), gramps va essayer d\(aqouvrir la base de
données avec le nom donné par le premier argument et démarrer une ses
sion interactive, en ignorant le reste de la ligne de commande.
.sp
Si la commande \fB\-O\fP est notée, alors gramps va essayer le fichier défini
Si la commande \fB\-O\fP est notée, alors gramps va essayer le fichier défini
et va travailler avec ses données, comme pour les autres paramètres de
la ligne de commande.
.sp
@ -208,7 +202,7 @@ Utilisez les shell de redirection de \fIstdout\fP et \fIstderr\fP pour sauver
les messages et les erreurs dans les fichiers.
.TP
.B \fBEXEMPLES\fP
Pour ouvrir un arbre familial et y importer un fichier XML, on peut
Pour ouvrir un arbre familial et y importer un fichier XML, on peut
saisir:
.INDENT 7.0
.INDENT 3.5
@ -217,8 +211,8 @@ saisir:
.UNINDENT
.sp
Ceci ouvre un arbre familial, pour faire la même chose, mais importer
dans un arbre familial temporaire et démarrer une session interactive,
on peut saisir:
dans un arbre familial temporaire et démarrer une session interactive,
on peut saisir :
.INDENT 7.0
.INDENT 3.5
\fBgramps \-i\fP \fI\(aqMon Arbre Familial\(aq\fP \fB\-i\fP \fI~/db3.gramps\fP
@ -292,22 +286,25 @@ PROFILE pour Windows 2000/XP).
.TP
.B \fBCONCEPTS\fP
Gramps est un système basé sur le support de plugin\-python, permettant
d\(aqimporter et d\(aqexporter, la saisie, générer des rapports, des outils,
et afficher des filtres pouvant être ajoutés sans modifier le programme.
d\(aqimporter et d\(aqexporter, la saisie, générer des rapports, des outils,
et afficher des filtres pouvant être ajoutés sans modifier le programme.
.sp
Par ailleurs, gramps permet la génération directe : impression, rap
ports avec sortie vers d\(aqautres formats, comme \fILibreOffice.org\fP ,
\fIHTML\fP , ou \fILaTeX\fP pour permettre à l\(aqutilisateur de choisir selon ses
\fIHTML\fP , ou \fILaTeX\fP pour permettre à l\(aqutilisateur de choisir selon ses
besoins
.UNINDENT
.sp
\fBBUGS CONNUS ET LIMITATIONS\fP
.sp
\fBFICHIERS\fP
.INDENT 0.0
.INDENT 3.5
\fI${PREFIX}/bin/gramps\fP
.sp
\fI${PREFIX}/share/gramps\fP
\fI${PREFIX}/lib/python/dist\-packages/gramps/\fP
.sp
\fI${PREFIX}/share/\fP
.sp
\fI${HOME}/.gramps\fP
.UNINDENT
@ -336,11 +333,10 @@ La documentation pour développeur est disponible sur le site
\fI\%http://www.gramps-project.org/wiki/index.php?title=Portal:Developers\fP .
.UNINDENT
.sp
Janvier 2013 4.0.0 gramps(1)
gramps(1) @VERSION@ gramps(1)
.SH AUTHOR
Jerome Rapinat
.SH COPYRIGHT
2012, Gramps project
.\" Generated by docutils manpage writer.
.\"
.

View File

@ -298,9 +298,11 @@ or LaTeX to allow the users to modify the format to suit their needs.
.SH FILES
.LP
\fI${PREFIX}/bin/gramps\fP
\fI${PREFIX}/bin/gramps\fP
.br
\fI${PREFIX}/share/gramps\fP
\fI${PREFIX}/lib/python/dist\-packages/gramps/\fP
.br
\fI${PREFIX}/share/\fP
.br
\fI${HOME}/.gramps\fP

View File

@ -1,15 +0,0 @@
# This is the data/man/nl level Makefile for Gramps
# $Id: Makefile.am 9819 2008-01-15 15:42:10Z bmcage $
mandir = @mandir@/nl
man_IN_FILES = gramps.1.in
man_MANS = $(man_IN_FILES:.1.in=.1)
EXTRA_DIST = $(man_MANS) $(man_IN_FILES)
gramps.1: $(top_builddir)/config.status gramps.1.in
cd $(top_builddir) && CONFIG_FILES=data/man/nl/$@ $(SHELL) ./config.status
CLEANFILES=$(man_MANS)

View File

@ -227,11 +227,14 @@ gramps(1) 3.4.0 gramps(1)
**GEKENDE BUGS EN BEPERKINGEN**
**BESTANDEN**
*${PREFIX}/bin/gramps*
*${PREFIX}/share/gramps*
*${PREFIX}/lib/python/dist-packages/gramps/*
*${PREFIX}/share/*
*${HOME}/.gramps*

View File

@ -1,14 +0,0 @@
# This is the data/man/sv level Makefile for Gramps
# $Id: Makefile.am 6189 2006-03-21 19:05:46Z rshura $
man_IN_FILES = gramps.1.in
man_MANS = $(man_IN_FILES:.1.in=.1)
mandir = @mandir@/pl
EXTRA_DIST = $(man_MANS) $(man_IN_FILES)
gramps.1: $(top_builddir)/config.status gramps.1.in
cd $(top_builddir) && CONFIG_FILES=data/man/pl/$@ $(SHELL) ./config.status
CLEANFILES=$(man_MANS)

View File

@ -276,7 +276,9 @@ gramps(1) 3.4.0 gramps(1)
*${PREFIX}/bin/gramps*
*${PREFIX}/share/gramps*
*${PREFIX}/lib/python/dist-packages/gramps/*
*${PREFIX}/share/*
*${HOME}/.gramps (jeśli nie użyta została zmienna środowiskowa GRAMP
SHOME)*

View File

@ -1,14 +0,0 @@
# This is the data/pt_BR level Makefile for Gramps
# $Id: Makefile.am 16377 2011-01-13 18:32:42Z matlas $
man_IN_FILES = gramps.1.in
man_MANS = $(man_IN_FILES:.1.in=.1)
mandir = @mandir@/pt_BR
EXTRA_DIST = $(man_MANS) $(man_IN_FILES)
gramps.1: $(top_builddir)/config.status gramps.1.in
cd $(top_builddir) && CONFIG_FILES=data/man/pt_BR/$@ $(SHELL) ./config.status
CLEANFILES=$(man_MANS)

View File

@ -255,9 +255,11 @@ gramps(1) 4.0.0 gramps(1)
*ARQUIVOS**
*${PREFIX}/bin/gramps*
*${PREFIX}/share/gramps*
*${PREFIX}/lib/python/dist-packages/gramps/*
*${PREFIX}/share/*
*${HOME}/.gramps*

View File

@ -1,14 +0,0 @@
# This is the data/man/sv level Makefile for Gramps
# $Id: Makefile.am 6189 2006-03-21 19:05:46Z rshura $
man_IN_FILES = gramps.1.in
man_MANS = $(man_IN_FILES:.1.in=.1)
mandir = @mandir@/sv
EXTRA_DIST = $(man_MANS) $(man_IN_FILES)
gramps.1: $(top_builddir)/config.status gramps.1.in
cd $(top_builddir) && CONFIG_FILES=data/man/sv/$@ $(SHELL) ./config.status
CLEANFILES=$(man_MANS)

View File

@ -246,7 +246,9 @@ Gramps(1) 3.4.0 Gramps(1)
*${PREFIX}/bin/gramps*
*${PREFIX}/share/gramps*
*${PREFIX}/lib/python/dist-packages/gramps/*
*${PREFIX}/share/*
*${HOME}/.gramps*

View File

@ -52,11 +52,11 @@ SPHINXBUILD = 'sphinx-build'
if sys.platform == 'win32':
pythonCmd = os.path.join(sys.prefix, 'bin', 'python.exe')
sphinxCmd = os.path.join(sys.prefix, 'bin', 'sphinx-build.exe')
elif sys.platform == 'linux2' or os.name == 'darwin':
elif sys.platform in ['linux2', 'darwin', 'cygwin']:
pythonCmd = os.path.join(sys.prefix, 'bin', 'python')
sphinxCmd = SPHINXBUILD
else:
print ("ERROR: unknown system, don't know sphinx, ... commands")
print ("Update Man ERROR: unknown system, don't know sphinx, ... commands")
sys.exit(0)
def tests():

View File

@ -42,11 +42,11 @@ SPHINXBUILD = 'sphinx-build'
if sys.platform == 'win32':
pythonCmd = os.path.join(sys.prefix, 'bin', 'python.exe')
sphinxCmd = os.path.join(sys.prefix, 'bin', 'sphinx-build.exe')
elif sys.platform == 'linux2' or os.name == 'darwin':
elif sys.platform in ['linux2', 'darwin', 'cygwin']:
pythonCmd = os.path.join(sys.prefix, 'bin', 'python')
sphinxCmd = SPHINXBUILD
else:
print ("ERROR: unknown system, don't know sphinx, ... commands")
print ("Update Docs ERROR: unknown system, don't know sphinx, ... commands")
sys.exit(0)
def tests():

View File

@ -39,7 +39,8 @@ Module responsible for handling the command line arguments for GRAMPS.
from __future__ import print_function
import os
import sys
from gramps.gen.ggettext import gettext as _
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
#-------------------------------------------------------------------------
#
@ -185,9 +186,9 @@ class ArgHandler(object):
else:
# Need to convert to system file encoding before printing
# For non latin characters in path/file/user names
print(msg1.encode(sys.getfilesystemencoding()), file=sys.stderr)
print(msg1.encode(sys.stdout.encoding, 'backslashreplace'), file=sys.stderr)
if msg2 is not None:
print(msg2.encode(sys.getfilesystemencoding()), file=sys.stderr)
print(msg2.encode(sys.stdout.encoding, 'backslashreplace'), file=sys.stderr)
#-------------------------------------------------------------------------
# Argument parser: sorts out given arguments
@ -294,7 +295,7 @@ class ArgHandler(object):
else:
ask = input
ans = ask(_('OK to overwrite? (yes/no) ') \
.encode(sys.getfilesystemencoding()))
.encode(sys.stdout.encoding, 'backslashreplace'))
except EOFError:
print()
sys.exit(0)
@ -408,26 +409,26 @@ class ArgHandler(object):
if self.list:
print(_('List of known family trees in your database path\n').\
encode(sys.getfilesystemencoding()))
encode(sys.stdout.encoding, 'backslashreplace'))
for name, dirname in sorted(self.dbman.family_tree_list(),
key=lambda pair: pair[0].lower()):
print((_("%(full_DB_path)s with name \"%(f_t_name)s\"") % \
{'full_DB_path' : dirname,
'f_t_name' : name}).encode(sys.getfilesystemencoding()))
'f_t_name' : name}).encode(sys.stdout.encoding, 'backslashreplace'))
sys.exit(0)
if self.list_more:
print(_('Gramps Family Trees:').encode(sys.getfilesystemencoding()))
print(_('Gramps Family Trees:').encode(sys.stdout.encoding, 'backslashreplace'))
summary_list = self.dbman.family_tree_summary()
for summary in sorted(summary_list,
key=lambda sum: sum["Family tree"].lower()):
print(_("Family Tree \"%s\":").\
encode(sys.getfilesystemencoding()) % summary["Family tree"])
print(_("Family Tree \"%s\":") % summary["Family tree"].\
encode(sys.stdout.encoding, 'backslashreplace'))
for item in sorted(summary):
if item != "Family tree":
print((" %s: %s" % (item, summary[item])).\
encode(sys.getfilesystemencoding()))
encode(sys.stdout.encoding, 'backslashreplace'))
sys.exit(0)
self.__open_action()
@ -442,7 +443,7 @@ class ArgHandler(object):
for expt in self.exports:
# Need to convert path/filename to str before printing
# For non latin characters in Windows path/file/user names
fn = expt[0].encode(sys.getfilesystemencoding())
fn = expt[0].encode(sys.stdout.encoding, 'backslashreplace')
fmt = str(expt[1])
print(_("Exporting: file %(filename)s, "
"format %(format)s.") % \
@ -480,7 +481,7 @@ class ArgHandler(object):
self.imp_db_path, title = self.dbman.create_new_db_cli()
else:
self.imp_db_path = get_empty_tempdir("import_dbdir") \
.encode(sys.getfilesystemencoding())
.encode(sys.stdout.encoding, 'backslashreplace')
newdb = DbBsddb()
newdb.write_version(self.imp_db_path)
@ -494,7 +495,7 @@ class ArgHandler(object):
sys.exit(0)
for imp in self.imports:
fn = imp[0].encode(sys.getfilesystemencoding())
fn = imp[0].encode(sys.stdout.encoding, 'backslashreplace')
fmt = str(imp[1])
msg = _("Importing: file %(filename)s, format %(format)s.") % \
{'filename' : fn, 'format' : fmt}
@ -623,10 +624,10 @@ class ArgHandler(object):
# Print cli report name ([item[0]), GUI report name (item[4])
if len(pdata.id) <= 25:
print(" %s%s- %s" % ( pdata.id, " " * (26 - len(pdata.id)),
pdata.name.encode(sys.getfilesystemencoding())), file=sys.stderr)
pdata.name.encode(sys.stdout.encoding, 'backslashreplace')), file=sys.stderr)
else:
print(" %s\t- %s" % (pdata.id,
pdata.name.encode(sys.getfilesystemencoding())), file=sys.stderr)
pdata.name.encode(sys.stdout.encoding, 'backslashreplace')), file=sys.stderr)
elif action == "tool":
from gramps.gui.plug import tool
@ -664,10 +665,10 @@ class ArgHandler(object):
# Print cli report name ([item[0]), GUI report name (item[4])
if len(pdata.id) <= 25:
print(" %s%s- %s" % ( pdata.id, " " * (26 - len(pdata.id)),
pdata.name.encode(sys.getfilesystemencoding())), file=sys.stderr)
pdata.name.encode(sys.stdout.encoding, 'backslashreplace')), file=sys.stderr)
else:
print(" %s\t- %s" % (pdata.id,
pdata.name.encode(sys.getfilesystemencoding())), file=sys.stderr)
pdata.name.encode(sys.stdout.encoding, 'backslashreplace')), file=sys.stderr)
elif action == "book":
try:

View File

@ -39,7 +39,8 @@ Module responsible for handling the command line arguments for GRAMPS.
from __future__ import print_function
import sys
import getopt
from gramps.gen.ggettext import gettext as _
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
import logging
#-------------------------------------------------------------------------
@ -292,7 +293,7 @@ class ArgParser(object):
self.list_more = True
elif option in ('-s','--show'):
print ("Gramps config settings from %s:" % \
config.filename.encode(sys.getfilesystemencoding()))
config.filename.encode(sys.stdout.encoding, 'backslashreplace'))
for section in config.data:
for setting in config.data[section]:
print ("%s.%s=%s" % (
@ -402,7 +403,7 @@ class ArgParser(object):
"""
if self.help:
# Convert Help messages to file system encoding before printing
print (_HELP.encode(sys.getfilesystemencoding()))
print (_HELP.encode(sys.stdout.encoding, 'backslashreplace'))
sys.exit(0)
def print_usage(self):
@ -411,5 +412,5 @@ class ArgParser(object):
"""
if self.usage:
# Convert Help messages to file system encoding before printing
print (_USAGE.encode(sys.getfilesystemencoding()))
print (_USAGE.encode(sys.stdout.encoding, 'backslashreplace'))
sys.exit(0)

View File

@ -44,7 +44,6 @@ else:
from urllib.parse import urlparse
from urllib.request import urlopen, url2pathname
import tempfile
from gramps.gen.ggettext import gettext as _
#-------------------------------------------------------------------------
#
# set up logging
@ -58,6 +57,8 @@ LOG = logging.getLogger(".clidbman")
# gramps modules
#
#-------------------------------------------------------------------------
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
from gramps.gen.db import DbBsddb
from gramps.gen.plug import BasePluginManager
from gramps.gen.config import config
@ -147,8 +148,8 @@ class CLIDbManager(object):
from gramps.gen.db import META, PERSON_TBL
env = db.DBEnv()
flags = db.DB_CREATE | db.DB_PRIVATE |\
db.DB_INIT_MPOOL | db.DB_INIT_LOCK |\
db.DB_INIT_LOG | db.DB_INIT_TXN | db.DB_THREAD
db.DB_INIT_MPOOL |\
db.DB_INIT_LOG | db.DB_INIT_TXN
try:
env.open(file_name, flags)
except:
@ -158,8 +159,9 @@ class CLIDbManager(object):
try:
dbmap1.open(fname, META, db.DB_HASH, db.DB_RDONLY)
except:
env.close()
return "Unknown", "Unknown"
version = dbmap1.get('version', default=None)
version = dbmap1.get(b'version', default=None)
dbmap1.close()
dbmap2 = dbshelve.DBShelf(env)
fname = os.path.join(file_name, PERSON_TBL + ".db")
@ -191,7 +193,7 @@ class CLIDbManager(object):
retval["Locked?"] = "no"
retval["DB version"] = version
if sys.version_info[0] < 3:
retval["Family tree"] = name.encode(sys.getfilesystemencoding())
retval["Family tree"] = name.encode(glocale.getfilesystemencoding())
else:
retval["Family tree"] = name
retval["Path"] = dirpath
@ -206,7 +208,7 @@ class CLIDbManager(object):
# make the default directory if it does not exist
dbdir = os.path.expanduser(config.get('behavior.database-path'))
if sys.version_info[0] < 3:
dbdir = dbdir.encode(sys.getfilesystemencoding())
dbdir = dbdir.encode(glocale.getfilesystemencoding())
db_ok = make_dbdir(dbdir)
self.current_names = []
@ -217,6 +219,7 @@ class CLIDbManager(object):
if os.path.isfile(path_name):
file = open(path_name)
name = file.readline().strip()
file.close()
(tval, last) = time_val(dirpath)
(enable, stock_id) = self.icon_values(dirpath, self.active,
@ -413,7 +416,7 @@ def make_dbdir(dbdir):
if not os.path.isdir(dbdir):
os.makedirs(dbdir)
except (IOError, OSError) as msg:
msg = conv_to_unicode(str(msg), sys.getfilesystemencoding())
msg = conv_to_unicode(str(msg), glocale.getfilesystemencoding())
LOG.error(_("\nERROR: Wrong database path in Edit Menu->Preferences.\n"
"Open preferences and set correct database path.\n\n"
"Details: Could not make database directory:\n %s\n\n") % msg)
@ -442,7 +445,7 @@ def find_next_db_dir():
base = "%x" % int(time.time())
dbdir = os.path.expanduser(config.get('behavior.database-path'))
if sys.version_info[0] < 3:
dbdir = dbdir.encode(sys.getfilesystemencoding())
dbdir = dbdir.encode(glocale.getfilesystemencoding())
new_path = os.path.join(dbdir, base)
if not os.path.isdir(new_path):
break
@ -485,7 +488,7 @@ def find_locker_name(dirpath):
# Convert username to unicode according to system encoding
# Otherwise problems with non ASCII characters in
# username in Windows
username = conv_to_unicode(username, sys.getfilesystemencoding())
username = conv_to_unicode(username, glocale.getfilesystemencoding())
# feature request 2356: avoid genitive form
last = _("Locked by %s") % username
ifile.close()

View File

@ -35,7 +35,8 @@ Provides also two small base classes: CLIDbLoader, CLIManager
#-------------------------------------------------------------------------
from __future__ import print_function
from gramps.gen.ggettext import gettext as _
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
import os
import sys
@ -296,10 +297,10 @@ def startcli(errors, argparser):
#already errors encountered. Show first one on terminal and exit
# Convert error message to file system encoding before print
errmsg = _('Error encountered: %s') % errors[0][0]
errmsg = errmsg.encode(sys.getfilesystemencoding())
errmsg = errmsg.encode(sys.stdout.encoding, 'backslashreplace')
print(errmsg)
errmsg = _(' Details: %s') % errors[0][1]
errmsg = errmsg.encode(sys.getfilesystemencoding())
errmsg = errmsg.encode(sys.stdout.encoding, 'backslashreplace')
print(errmsg)
sys.exit(1)
@ -307,10 +308,10 @@ def startcli(errors, argparser):
# Convert error message to file system encoding before print
errmsg = _('Error encountered in argument parsing: %s') \
% argparser.errors[0][0]
errmsg = errmsg.encode(sys.getfilesystemencoding())
errmsg = errmsg.encode(sys.stdout.encoding, 'backslashreplace')
print(errmsg)
errmsg = _(' Details: %s') % argparser.errors[0][1]
errmsg = errmsg.encode(sys.getfilesystemencoding())
errmsg = errmsg.encode(sys.stdout.encoding, 'backslashreplace')
print(errmsg)
sys.exit(1)

View File

@ -35,7 +35,8 @@
#-------------------------------------------------------------------------
from __future__ import print_function
from gramps.gen.ggettext import gettext as _
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
import traceback
import os
import sys
@ -570,11 +571,11 @@ class CommandLineReport(object):
# Make the output nicer to read, assume a tab has 8 spaces
tabs = '\t\t' if len(key) < 10 else '\t'
optmsg = " %s%s%s (%s)" % (key, tabs, opt[1], opt[0])
print(optmsg.encode(sys.getfilesystemencoding()))
print(optmsg.encode(sys.stdout.encoding, 'backslashreplace'))
else:
optmsg = " %s%s%s" % (key, tabs,
_('(no help available)'))
print(optmsg.encode(sys.getfilesystemencoding()))
print(optmsg.encode(sys.stdout.encoding, 'backslashreplace'))
print((_(" Use '%(donottranslate)s' to see description "
"and acceptable values") %
{'donottranslate' : "show=option"}))
@ -587,10 +588,10 @@ class CommandLineReport(object):
if isinstance(vals, (list, tuple)):
for val in vals:
optmsg = " %s" % val
print(optmsg.encode(sys.getfilesystemencoding()))
print(optmsg.encode(sys.stdout.encoding, 'backslashreplace'))
else:
optmsg = " %s" % opt[2]
print(optmsg.encode(sys.getfilesystemencoding()))
print(optmsg.encode(sys.stdout.encoding, 'backslashreplace'))
else:
#there was a show option given, but the option is invalid
@ -726,6 +727,7 @@ def cl_book(database, name, book, options_str_dict):
clr.marginr, clr.margint, clr.marginb))
user = User()
rptlist = []
global_style = None
for item in book.get_item_list():
# The option values were loaded magically by the book parser.
@ -743,6 +745,12 @@ def cl_book(database, name, book, options_str_dict):
report_class, item.option_class, user)
style_sheet = create_style_sheet(item)
rptlist.append((obj, style_sheet))
if ( item.name == 'table_of_contents' or
item.name == 'alphabetical_index' ): # ugly hack: FIXME
if global_style is None:
global_style = style_sheet
else:
global_style = create_style_sheet(item, global_style)
doc.open(clr.option_class.get_output())
doc.init()
@ -754,6 +762,8 @@ def cl_book(database, name, book, options_str_dict):
newpage = 1
rpt.begin_report()
rpt.write_report()
if global_style:
doc.set_style_sheet(global_style)
doc.close()
#------------------------------------------------------------------------

View File

@ -38,7 +38,8 @@ import sys
# Gramps Modules
#
#------------------------------------------------------------------------
from gramps.gen.ggettext import gettext as _
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
from gramps.gen.user import User
#------------------------------------------------------------------------

View File

@ -1,21 +0,0 @@
# This is the src/data level Makefile for gramps
# $Id$
#
SUBDIRS =
pkgdatadir = $(datadir)/@PACKAGE@/data
dist_pkgdata_DATA = \
authors.xml \
papersize.xml \
tips.xml\
lds.xml
# Rules for files with translatable strings
# These are taken care of by the intltool
xml_in_files = tips.xml.in
xml_files = $(xml_in_files:.xml.in=.xml)
@INTLTOOL_XML_NOMERGE_RULE@
EXTRA_DIST = $(xml_in_files)
CLEANFILES = $(xml_files)

View File

@ -41,7 +41,8 @@ import logging
# Gramps imports
#
#---------------------------------------------------------------
from .ggettext import gettext as _
from .const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
from .const import HOME_DIR, USER_HOME, VERSION_DIR
from .utils.configmanager import ConfigManager
@ -151,6 +152,7 @@ register('behavior.surname-guessing', 0)
register('behavior.use-tips', False)
register('behavior.welcome', 100)
register('behavior.web-search-url', 'http://google.com/#&q=%(text)s')
register('behavior.addons-url', "http://svn.code.sf.net/p/gramps-addons/code/branches/gramps40/")
register('export.proxy-order', [
["privacy", 0],
@ -187,7 +189,7 @@ register('interface.clipboard-height', 300)
register('interface.clipboard-width', 300)
register('interface.dont-ask', False)
register('interface.view-categories',
["Gramplets", "People", "Relationships", "Families",
["Dashboard", "People", "Relationships", "Families",
"Ancestry", "Events", "Places", "Geography", "Sources",
"Citations", "Repositories", "Media", "Notes"])
register('interface.edit-filter-width', 500)
@ -208,6 +210,7 @@ register('interface.filter', False)
register('interface.filter-editor-width', 400)
register('interface.filter-editor-height', 350)
register('interface.fullscreen', False)
register('interface.grampletbar-close', False)
register('interface.height', 500)
register('interface.lds-height', 450)
register('interface.lds-width', 600)
@ -278,6 +281,8 @@ register('preferences.date-format', 0)
register('preferences.calendar-format-report', 0)
register('preferences.cprefix', 'C%04d')
register('preferences.default-source', False)
register('preferences.tag-on-import', False)
register('preferences.tag-on-import-format', _("Imported %Y/%m/%d %H:%M:%S"))
register('preferences.eprefix', 'E%04d')
register('preferences.family-warn', True)
register('preferences.fprefix', 'F%04d')

View File

@ -42,7 +42,7 @@ import uuid
# Gramps modules
#
#-------------------------------------------------------------------------
from .ggettext import sgettext as _
from .svn_revision import get_svn_revision
#-------------------------------------------------------------------------
#
@ -50,11 +50,20 @@ from .ggettext import sgettext as _
#
#-------------------------------------------------------------------------
PROGRAM_NAME = "Gramps"
if "@VERSIONSTRING@" == "@" + "VERSIONSTRING" + "@":
VERSION = "4.0.0"
else:
VERSION = "@VERSIONSTRING@"
VERSION_TUPLE = (4, 0, 0)
VERSION = "@VERSIONSTRING@"
if VERSION == "@" + "VERSIONSTRING" + "@":
raise Exception("Please run 'python setup.py build'")
def get_version_tuple(v):
""" Get the numeric-dotted part of version number"""
retval = ""
for c in v:
if c.isdigit() or (c == "." and retval.count(".") <= 1):
retval += c
else:
break
return tuple(map(int, retval.split(".")))
VERSION_TUPLE = get_version_tuple(VERSION)
major_version = "%s.%s" % (VERSION_TUPLE[0], VERSION_TUPLE[1])
#-------------------------------------------------------------------------
#
@ -65,11 +74,11 @@ URL_HOMEPAGE = "http://gramps-project.org/"
URL_MAILINGLIST = "http://sourceforge.net/mail/?group_id=25770"
URL_BUGTRACKER = "http://bugs.gramps-project.org/bug_report_advanced_page.php"
URL_WIKISTRING = "http://gramps-project.org/wiki/index.php?title="
URL_MANUAL_PAGE = "Gramps_4.0_Wiki_Manual"
URL_MANUAL_PAGE = "Gramps_%s_Wiki_Manual" % major_version
WIKI_FAQ = "FAQ"
WIKI_KEYBINDINGS = "Gramps_4.0_Wiki_Manual_-_Keybindings"
WIKI_EXTRAPLUGINS= "4.0_Addons"
WIKI_EXTRAPLUGINS_RAWDATA = "Plugins4.0&action=raw"
WIKI_KEYBINDINGS = "Gramps_%s_Wiki_Manual_-_Keybindings" % major_version
WIKI_EXTRAPLUGINS= "%s_Addons" % major_version
WIKI_EXTRAPLUGINS_RAWDATA = "Plugins%s&action=raw" % major_version
#-------------------------------------------------------------------------
#
@ -89,20 +98,7 @@ APP_VCARD = ["text/x-vcard", "text/x-vcalendar"]
# system paths
#
#-------------------------------------------------------------------------
if sys.platform == "win32":
if sys.prefix == os.path.dirname(os.getcwd()):
PREFIXDIR = sys.prefix
SYSCONFDIR = os.path.join(sys.prefix, "etc")
else:
PREFIXDIR = os.path.join(os.path.dirname(__file__), os.pardir)
SYSCONFDIR = os.path.join(PREFIXDIR, "etc")
elif sys.platform == "darwin" and sys.prefix != sys.exec_prefix:
PREFIXDIR = sys.prefix
SYSCONFDIR = os.path.join(sys.prefix, "etc")
else:
PREFIXDIR = "@prefix@"
SYSCONFDIR = "@sysconfdir@"
LOCALE_DIR = "@LOCALE_DIR@"
#-------------------------------------------------------------------------
#
# Platforms
@ -145,24 +141,6 @@ if sys.version_info[0] < 3:
else:
pass
#-------------------------------------------------------------------------
#
# Paths to files - assumes that files reside in the same directory as
# this one, and that the plugins directory is in a directory below this.
#
#-------------------------------------------------------------------------
ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(
__file__), os.pardir))
if sys.version_info[0] < 3:
# test for sys.frozen to detect a py2exe executable on Windows
if hasattr(sys, "frozen"):
ROOT_DIR = os.path.abspath(os.path.dirname(
unicode(sys.executable, sys.getfilesystemencoding())))
else:
ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(
unicode(__file__, sys.getfilesystemencoding())), os.pardir))
IMAGE_DIR = os.path.join(ROOT_DIR, "images")
VERSION_DIR = os.path.join(
HOME_DIR, "gramps%s%s" % (VERSION_TUPLE[0], VERSION_TUPLE[1]))
@ -180,15 +158,28 @@ USER_PLUGINS = os.path.join(VERSION_DIR, "plugins")
USER_DIRLIST = (HOME_DIR, VERSION_DIR, ENV_DIR, TEMP_DIR, THUMB_DIR,
THUMB_NORMAL, THUMB_LARGE, USER_PLUGINS)
ICON = os.path.join(ROOT_DIR, "images", "gramps.png")
LOGO = os.path.join(ROOT_DIR, "images", "logo.png")
SPLASH = os.path.join(ROOT_DIR, "images", "splash.jpg")
LICENSE_FILE = os.path.join(ROOT_DIR, "COPYING")
#-------------------------------------------------------------------------
#
# Paths to python modules - assumes that the root directory is one level
# above this one, and that the plugins directory is below the root directory.
#
#-------------------------------------------------------------------------
ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(
__file__), os.pardir))
if sys.version_info[0] < 3:
# test for sys.frozen to detect a py2exe executable on Windows
if hasattr(sys, "frozen"):
ROOT_DIR = os.path.abspath(os.path.dirname(
unicode(sys.executable, sys.getfilesystemencoding())))
else:
ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(
unicode(__file__, sys.getfilesystemencoding())), os.pardir))
VERSION += get_svn_revision(ROOT_DIR)
#
# Glade files
#
GLADE_DIR = os.path.join(ROOT_DIR, "gui", "glade")
GLADE_FILE = os.path.join(GLADE_DIR, "gramps.glade")
PERSON_GLADE = os.path.join(GLADE_DIR, "edit_person.glade")
@ -198,29 +189,51 @@ RULE_GLADE = os.path.join(GLADE_DIR, "rule.glade")
PLUGINS_DIR = os.path.join(ROOT_DIR, "plugins")
DATA_DIR = os.path.join(ROOT_DIR, "data")
WEB_DIR = os.path.join(ROOT_DIR, 'webapp')
#SYSTEM_FILTERS = os.path.join(DATA_DIR, "system_filters.xml")
TIP_DATA = os.path.join(DATA_DIR, "tips.xml")
WEBSTUFF_DIR = os.path.join(PLUGINS_DIR, "webstuff")
WEBSTUFF_IMAGE_DIR = os.path.join(WEBSTUFF_DIR, "images")
PAPERSIZE = os.path.join(DATA_DIR, "papersize.xml")
USE_TIPS = False
USE_TIPS = False
if os.sys.platform in WINDOWS:
USE_THUMBNAILER = False
else:
USE_THUMBNAILER = True
#-------------------------------------------------------------------------
#
# Paths to data files.
#
#-------------------------------------------------------------------------
LOCALE_DIR = "@LOCALE_DIR@"
DATA_DIR = "@DATA_DIR@"
IMAGE_DIR = "@IMAGE_DIR@"
DOC_DIR = "@DOC_DIR@"
TIP_DATA = os.path.join(DATA_DIR, "tips.xml")
PAPERSIZE = os.path.join(DATA_DIR, "papersize.xml")
ICON = os.path.join(IMAGE_DIR, "gramps.png")
LOGO = os.path.join(IMAGE_DIR, "logo.png")
SPLASH = os.path.join(IMAGE_DIR, "splash.jpg")
LICENSE_FILE = os.path.join(DOC_DIR, 'COPYING')
#-------------------------------------------------------------------------
#
# Init Localization
#
#-------------------------------------------------------------------------
from gramps.gen.utils.grampslocale import GrampsLocale
GRAMPS_LOCALE = GrampsLocale()
_ = GRAMPS_LOCALE.get_translation().sgettext
#-------------------------------------------------------------------------
#
# About box information
#
#-------------------------------------------------------------------------
COPYRIGHT_MSG = "© 2001-2006 Donald N. Allingham\n" \
"© 2007-2012 The Gramps Developers"
"© 2007-2013 The Gramps Developers"
COMMENTS = _("Gramps (Genealogical Research and Analysis "
"Management Programming System) is a personal "
"genealogy program.")
@ -325,3 +338,29 @@ LONGOPTS = [
SHORTOPTS = "O:C:i:e:f:a:p:d:c:lLhuv?s"
GRAMPS_UUID = uuid.UUID('516cd010-5a41-470f-99f8-eb22f1098ad6')
def need_to_update_const():
""" Check to see if this file is older than
setup.py or const.py.in """
this_file = os.path.join(ROOT_DIR, "gen", "const.py")
in_file = os.path.join(ROOT_DIR, "gen", "const.py.in")
setup_file = os.path.join(ROOT_DIR, "..", "setup.py")
if (os.path.exists(this_file) and
os.path.exists(in_file) and
os.path.exists(setup_file)):
this_file_time = os.path.getmtime(this_file)
in_file_time = os.path.getmtime(in_file)
setup_file_time = os.path.getmtime(setup_file)
# Is this file older than others? If so,
# need to run setup
return (this_file_time < in_file_time or
this_file_time < setup_file_time)
else:
# Can't tell because can't find the files
return False
if need_to_update_const():
print("Outdated gramps.gen.const; please run 'python setup.py build'")

View File

@ -64,6 +64,13 @@ else:
STRTYPE = str
UNITYPE = str
cuni = conv_to_unicode_direct
# handle in database is bytes, while internally Gramps wants unicode for py3
if sys.version_info[0] < 3:
handle2internal = lambda x: x
else:
handle2internal = lambda x: conv_to_unicode(x, 'utf-8')
#-------------------------------------------------------------------------
#
# Platform determination functions

View File

@ -24,8 +24,15 @@
Class handling language-specific selection for date parser and displayer.
"""
from __future__ import print_function
#-------------------------------------------------------------------------
#
# set up logging
#
#-------------------------------------------------------------------------
import logging
from ..const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().sgettext
# import prerequisites for localized handlers
from ._datehandler import (LANG, LANG_SHORT, LANG_TO_PARSER, LANG_TO_DISPLAY,
register_datehandler)
@ -59,7 +66,7 @@ try:
else:
parser = LANG_TO_PARSER[LANG_SHORT]()
except:
print("Date parser for", LANG, "not available, using default")
logging.warning(_("Date parser for '%s' not available, using default") % LANG)
parser = LANG_TO_PARSER["C"]()
# Initialize global displayer
@ -75,7 +82,7 @@ try:
else:
displayer = LANG_TO_DISPLAY[LANG_SHORT](val)
except:
print("Date displayer for", LANG, "not available, using default")
logging.warning(_("Date displayer for '%s' not available, using default") % LANG)
displayer = LANG_TO_DISPLAY["C"](val)

View File

@ -176,4 +176,4 @@ class DateDisplayNb(DateDisplay):
# Register classes
#
#-------------------------------------------------------------------------
register_datehandler(('nb_NO', 'nb', 'norsk', 'Norwegian'), DateParserNb, DateDisplayNb)
register_datehandler(('nb_NO', 'nb', 'nn_NO', 'nn', 'norsk', 'Norwegian'), DateParserNb, DateDisplayNb)

View File

@ -25,6 +25,8 @@ import locale
import sys
from ..constfunc import mac, win, conv_to_unicode
from gramps.gen.const import GRAMPS_LOCALE as glocale
"""
Some OS environments do not support the locale.nl_langinfo() method
of determing month names and other date related information.
@ -40,8 +42,9 @@ if sys.version_info[0] < 3:
else:
#locale returns unicode in python 3
to_uni = lambda x, y: x
codeset = glocale.encoding
try:
codeset = locale.nl_langinfo(locale.CODESET)
month_to_int = {
to_uni(locale.nl_langinfo(locale.MON_1), codeset).lower() : 1,
@ -137,69 +140,64 @@ try:
except:
import time
codeset = None
if win() or mac():
codeset = locale.getlocale()[1]
if codeset is None:
codeset = locale.getpreferredencoding()
month_to_int = {
to_uni(time.strftime('%B',(0,1,1,1,1,1,1,1,1)), codeset).lower() : 1,
to_uni(time.strftime('%b',(0,1,1,1,1,1,1,1,1)), codeset).lower() : 1,
to_uni(time.strftime('%B',(0,2,1,1,1,1,1,1,1)), codeset).lower() : 2,
to_uni(time.strftime('%b',(0,2,1,1,1,1,1,1,1)), codeset).lower() : 2,
to_uni(time.strftime('%B',(0,3,1,1,1,1,1,1,1)), codeset).lower() : 3,
to_uni(time.strftime('%b',(0,3,1,1,1,1,1,1,1)), codeset).lower() : 3,
to_uni(time.strftime('%B',(0,4,1,1,1,1,1,1,1)), codeset).lower() : 4,
to_uni(time.strftime('%b',(0,4,1,1,1,1,1,1,1)), codeset).lower() : 4,
to_uni(time.strftime('%B',(0,5,1,1,1,1,1,1,1)), codeset).lower() : 5,
to_uni(time.strftime('%b',(0,5,1,1,1,1,1,1,1)), codeset).lower() : 5,
to_uni(time.strftime('%B',(0,6,1,1,1,1,1,1,1)), codeset).lower() : 6,
to_uni(time.strftime('%b',(0,6,1,1,1,1,1,1,1)), codeset).lower() : 6,
to_uni(time.strftime('%B',(0,7,1,1,1,1,1,1,1)), codeset).lower() : 7,
to_uni(time.strftime('%b',(0,7,1,1,1,1,1,1,1)), codeset).lower() : 7,
to_uni(time.strftime('%B',(0,8,1,1,1,1,1,1,1)), codeset).lower() : 8,
to_uni(time.strftime('%b',(0,8,1,1,1,1,1,1,1)), codeset).lower() : 8,
to_uni(time.strftime('%B',(0,9,1,1,1,1,1,1,1)), codeset).lower() : 9,
to_uni(time.strftime('%b',(0,9,1,1,1,1,1,1,1)), codeset).lower() : 9,
to_uni(time.strftime('%B',(0,10,1,1,1,1,1,1,1)), codeset).lower() : 10,
to_uni(time.strftime('%b',(0,10,1,1,1,1,1,1,1)), codeset).lower() : 10,
to_uni(time.strftime('%B',(0,11,1,1,1,1,1,1,1)), codeset).lower() : 11,
to_uni(time.strftime('%b',(0,11,1,1,1,1,1,1,1)), codeset).lower() : 11,
to_uni(time.strftime('%B',(0,12,1,1,1,1,1,1,1)), codeset).lower() : 12,
to_uni(time.strftime('%b',(0,12,1,1,1,1,1,1,1)), codeset).lower() : 12,
to_uni(time.strftime('%B',(1,1,1,1,1,1,1,1,1)), codeset).lower() : 1,
to_uni(time.strftime('%b',(1,1,1,1,1,1,1,1,1)), codeset).lower() : 1,
to_uni(time.strftime('%B',(1,2,1,1,1,1,1,1,1)), codeset).lower() : 2,
to_uni(time.strftime('%b',(1,2,1,1,1,1,1,1,1)), codeset).lower() : 2,
to_uni(time.strftime('%B',(1,3,1,1,1,1,1,1,1)), codeset).lower() : 3,
to_uni(time.strftime('%b',(1,3,1,1,1,1,1,1,1)), codeset).lower() : 3,
to_uni(time.strftime('%B',(1,4,1,1,1,1,1,1,1)), codeset).lower() : 4,
to_uni(time.strftime('%b',(1,4,1,1,1,1,1,1,1)), codeset).lower() : 4,
to_uni(time.strftime('%B',(1,5,1,1,1,1,1,1,1)), codeset).lower() : 5,
to_uni(time.strftime('%b',(1,5,1,1,1,1,1,1,1)), codeset).lower() : 5,
to_uni(time.strftime('%B',(1,6,1,1,1,1,1,1,1)), codeset).lower() : 6,
to_uni(time.strftime('%b',(1,6,1,1,1,1,1,1,1)), codeset).lower() : 6,
to_uni(time.strftime('%B',(1,7,1,1,1,1,1,1,1)), codeset).lower() : 7,
to_uni(time.strftime('%b',(1,7,1,1,1,1,1,1,1)), codeset).lower() : 7,
to_uni(time.strftime('%B',(1,8,1,1,1,1,1,1,1)), codeset).lower() : 8,
to_uni(time.strftime('%b',(1,8,1,1,1,1,1,1,1)), codeset).lower() : 8,
to_uni(time.strftime('%B',(1,9,1,1,1,1,1,1,1)), codeset).lower() : 9,
to_uni(time.strftime('%b',(1,9,1,1,1,1,1,1,1)), codeset).lower() : 9,
to_uni(time.strftime('%B',(1,10,1,1,1,1,1,1,1)), codeset).lower() : 10,
to_uni(time.strftime('%b',(1,10,1,1,1,1,1,1,1)), codeset).lower() : 10,
to_uni(time.strftime('%B',(1,11,1,1,1,1,1,1,1)), codeset).lower() : 11,
to_uni(time.strftime('%b',(1,11,1,1,1,1,1,1,1)), codeset).lower() : 11,
to_uni(time.strftime('%B',(1,12,1,1,1,1,1,1,1)), codeset).lower() : 12,
to_uni(time.strftime('%b',(1,12,1,1,1,1,1,1,1)), codeset).lower() : 12,
}
long_months = (
"",
to_uni(time.strftime('%B',(0,1,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(0,2,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(0,3,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(0,4,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(0,5,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(0,6,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(0,7,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(0,8,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(0,9,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(0,10,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(0,11,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(0,12,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,1,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,2,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,3,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,4,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,5,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,6,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,7,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,8,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,9,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,10,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,11,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%B',(1,12,1,1,1,1,1,1,1)), codeset),
)
short_months = (
"",
to_uni(time.strftime('%b',(0,1,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(0,2,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(0,3,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(0,4,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(0,5,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(0,6,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(0,7,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(0,8,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(0,9,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(0,10,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(0,11,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(0,12,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,1,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,2,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,3,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,4,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,5,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,6,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,7,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,8,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,9,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,10,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,11,1,1,1,1,1,1,1)), codeset),
to_uni(time.strftime('%b',(1,12,1,1,1,1,1,1,1)), codeset),
)
# Gramps day number: Sunday => 1, Monday => 2, etc
@ -213,24 +211,24 @@ except:
# just a dummy.
long_days = (
"",
to_uni(time.strftime('%A',(0,1,1,1,1,1,6,1,1)), codeset), # Sunday
to_uni(time.strftime('%A',(0,1,1,1,1,1,0,1,1)), codeset), # Monday
to_uni(time.strftime('%A',(0,1,1,1,1,1,1,1,1)), codeset), # Tuesday
to_uni(time.strftime('%A',(0,1,1,1,1,1,2,1,1)), codeset), # Wednesday
to_uni(time.strftime('%A',(0,1,1,1,1,1,3,1,1)), codeset), # Thursday
to_uni(time.strftime('%A',(0,1,1,1,1,1,4,1,1)), codeset), # Friday
to_uni(time.strftime('%A',(0,1,1,1,1,1,5,1,1)), codeset), # Saturday
to_uni(time.strftime('%A',(1,1,1,1,1,1,6,1,1)), codeset), # Sunday
to_uni(time.strftime('%A',(1,1,1,1,1,1,0,1,1)), codeset), # Monday
to_uni(time.strftime('%A',(1,1,1,1,1,1,1,1,1)), codeset), # Tuesday
to_uni(time.strftime('%A',(1,1,1,1,1,1,2,1,1)), codeset), # Wednesday
to_uni(time.strftime('%A',(1,1,1,1,1,1,3,1,1)), codeset), # Thursday
to_uni(time.strftime('%A',(1,1,1,1,1,1,4,1,1)), codeset), # Friday
to_uni(time.strftime('%A',(1,1,1,1,1,1,5,1,1)), codeset), # Saturday
)
short_days = (
"",
to_uni(time.strftime('%a',(0,1,1,1,1,1,6,1,1)), codeset), # Sunday
to_uni(time.strftime('%a',(0,1,1,1,1,1,0,1,1)), codeset), # Monday
to_uni(time.strftime('%a',(0,1,1,1,1,1,1,1,1)), codeset), # Tuesday
to_uni(time.strftime('%a',(0,1,1,1,1,1,2,1,1)), codeset), # Wednesday
to_uni(time.strftime('%a',(0,1,1,1,1,1,3,1,1)), codeset), # Thursday
to_uni(time.strftime('%a',(0,1,1,1,1,1,4,1,1)), codeset), # Friday
to_uni(time.strftime('%a',(0,1,1,1,1,1,5,1,1)), codeset), # Saturday
to_uni(time.strftime('%a',(1,1,1,1,1,1,6,1,1)), codeset), # Sunday
to_uni(time.strftime('%a',(1,1,1,1,1,1,0,1,1)), codeset), # Monday
to_uni(time.strftime('%a',(1,1,1,1,1,1,1,1,1)), codeset), # Tuesday
to_uni(time.strftime('%a',(1,1,1,1,1,1,2,1,1)), codeset), # Wednesday
to_uni(time.strftime('%a',(1,1,1,1,1,1,3,1,1)), codeset), # Thursday
to_uni(time.strftime('%a',(1,1,1,1,1,1,4,1,1)), codeset), # Friday
to_uni(time.strftime('%a',(1,1,1,1,1,1,5,1,1)), codeset), # Saturday
)
# depending on the locale, the value returned for 20th Feb 2009 could be

View File

@ -32,7 +32,8 @@ from this class.
# Python libraries
#
#-------------------------------------------------------------------------
from ..ggettext import gettext as _
from ..const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
#-------------------------------------------------------------------------
#

View File

@ -198,8 +198,8 @@ if __name__ == "__main__":
x = db.DBEnv()
print("3")
x.open('/tmp', db.DB_CREATE | db.DB_PRIVATE |\
db.DB_INIT_MPOOL | db.DB_INIT_LOCK |\
db.DB_INIT_LOG | db.DB_INIT_TXN | db.DB_THREAD)
db.DB_INIT_MPOOL |\
db.DB_INIT_LOG | db.DB_INIT_TXN)
print("4")
d = dbshelve.DBShelf(x)
print("5")

View File

@ -27,7 +27,8 @@
# Standard python modules
#
#-------------------------------------------------------------------------
from ..ggettext import gettext as _
from ..const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
class DbException(Exception):

View File

@ -40,7 +40,6 @@ else:
import pickle
import time
import random
import locale
import os
from sys import maxsize
@ -49,7 +48,8 @@ if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3:
from bsddb3 import db
else:
from bsddb import db
from ..ggettext import gettext as _
from ..const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
import re
import logging
@ -80,6 +80,7 @@ from . import (BsddbBaseCursor, DbReadBase)
from ..utils.id import create_id
from ..errors import DbError
from ..constfunc import UNITYPE, STRTYPE, cuni
from ..const import GRAMPS_LOCALE as glocale
LOG = logging.getLogger(DBLOGNAME)
LOG = logging.getLogger(".citation")
@ -102,6 +103,17 @@ DBERRS = (db.DBRunRecoveryError, db.DBAccessError,
# Helper functions
#
#-------------------------------------------------------------------------
def find_byte_surname(key, data):
"""
Creating a surname from raw data of a person, to use for sort and index
returns a byte string
"""
surn = __index_surname(data[3][5])
# in python 3 we work with unicode internally, but need byte function sometimes
if isinstance(surn, UNITYPE):
return surn.encode('utf-8')
return surn
def find_surname(key, data):
"""
Creating a surname from raw data of a person, to use for sort and index
@ -127,7 +139,10 @@ def __index_surname(surn_list):
NameOriginType.PATRONYMIC, NameOriginType.MATRONYMIC]) ])
else:
surn = ""
return surn.encode('utf-8')
if sys.version_info[0] < 3:
return surn.encode('utf-8')
else:
return surn
#-------------------------------------------------------------------------
@ -745,6 +760,7 @@ class DbBsddbRead(DbReadBase, Callback):
return self.get_from_handle(handle, Tag, self.tag_map)
def __get_obj_from_gramps_id(self, val, tbl, class_, prim_tbl):
if isinstance(tbl, dict): return None ## trying to get object too early
if isinstance(val, UNITYPE):
val = val.encode('utf-8')
try:
@ -1626,7 +1642,7 @@ class DbBsddbRead(DbReadBase, Callback):
def __sortbyperson_key(self, handle):
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
return locale.strxfrm(find_surname(handle,
return glocale.sort_key(find_surname(handle,
self.person_map.get(handle)))
def __sortbyplace(self, first, second):
@ -1634,13 +1650,13 @@ class DbBsddbRead(DbReadBase, Callback):
first = first.encode('utf-8')
if isinstance(second, UNITYPE):
second = second.encode('utf-8')
return locale.strcoll(self.place_map.get(first)[2],
return glocale.strcoll(self.place_map.get(first)[2],
self.place_map.get(second)[2])
def __sortbyplace_key(self, place):
if isinstance(place, UNITYPE):
place = place.encode('utf-8')
return locale.strxfrm(self.place_map.get(place)[2])
return glocale.sort_key(self.place_map.get(place)[2])
def __sortbysource(self, first, second):
if isinstance(first, UNITYPE):
@ -1649,13 +1665,13 @@ class DbBsddbRead(DbReadBase, Callback):
second = second.encode('utf-8')
source1 = cuni(self.source_map[first][2])
source2 = cuni(self.source_map[second][2])
return locale.strcoll(source1, source2)
return glocale.strcoll(source1, source2)
def __sortbysource_key(self, key):
if isinstance(key, UNITYPE):
key = key.encode('utf-8')
source = cuni(self.source_map[key][2])
return locale.strxfrm(source)
return glocale.sort_key(source)
def __sortbycitation(self, first, second):
if isinstance(first, UNITYPE):
@ -1664,13 +1680,13 @@ class DbBsddbRead(DbReadBase, Callback):
second = second.encode('utf-8')
citation1 = cuni(self.citation_map[first][3])
citation2 = cuni(self.citation_map[second][3])
return locale.strcoll(citation1, citation2)
return glocale.strcoll(citation1, citation2)
def __sortbycitation_key(self, key):
if isinstance(key, UNITYPE):
key = key.encode('utf-8')
citation = cuni(self.citation_map[key][3])
return locale.strxfrm(citation)
return glocale.sort_key(citation)
def __sortbymedia(self, first, second):
if isinstance(first, UNITYPE):
@ -1679,13 +1695,13 @@ class DbBsddbRead(DbReadBase, Callback):
second = second.encode('utf-8')
media1 = self.media_map[first][4]
media2 = self.media_map[second][4]
return locale.strcoll(media1, media2)
return glocale.strcoll(media1, media2)
def __sortbymedia_key(self, key):
if isinstance(key, UNITYPE):
key = key.encode('utf-8')
media = self.media_map[key][4]
return locale.strxfrm(media)
return glocale.sort_key(media)
def __sortbytag(self, first, second):
if isinstance(first, UNITYPE):
@ -1694,13 +1710,13 @@ class DbBsddbRead(DbReadBase, Callback):
second = second.encode('utf-8')
tag1 = self.tag_map[first][1]
tag2 = self.tag_map[second][1]
return locale.strcoll(tag1, tag2)
return glocale.strcoll(tag1, tag2)
def __sortbytag_key(self, key):
if isinstance(key, UNITYPE):
key = key.encode('utf-8')
tag = self.tag_map[key][1]
return locale.strxfrm(tag)
return glocale.sort_key(tag)
def set_mediapath(self, path):
"""Set the default media path for database, path should be utf-8."""

View File

@ -46,13 +46,15 @@ if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3:
from bsddb3 import db
else:
from bsddb import db
from ..ggettext import gettext as _
from ..const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
#-------------------------------------------------------------------------
#
# Gramps modules
#
#-------------------------------------------------------------------------
from ..constfunc import conv_to_unicode, handle2internal
from .dbconst import *
from . import BSDDBTxn
from ..errors import DbError
@ -67,6 +69,7 @@ DBERRS = (db.DBRunRecoveryError, db.DBAccessError,
_SIGBASE = ('person', 'family', 'source', 'event', 'media',
'place', 'repository', 'reference', 'note', 'tag', 'citation')
#-------------------------------------------------------------------------
#
# DbUndo class
@ -315,7 +318,7 @@ class DbUndo(object):
"""
try:
if data is None:
emit(signal_root + '-delete', ([handle],))
emit(signal_root + '-delete', ([handle2internal(handle)],))
db_map.delete(handle, txn=self.txn)
else:
ex_data = db_map.get(handle, txn=self.txn)
@ -324,7 +327,7 @@ class DbUndo(object):
else:
signal = signal_root + '-add'
db_map.put(handle, data, txn=self.txn)
emit(signal, ([handle],))
emit(signal, ([handle2internal(handle)],))
except DBERRS as msg:
self.db._log_error()

View File

@ -30,7 +30,8 @@ import time
import logging
LOG = logging.getLogger(".citation")
from ..ggettext import gettext as _
from ..const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
from ..constfunc import cuni
"""
@ -144,7 +145,9 @@ def gramps_upgrade_16(self):
new_citation_list, note_list, change, tag_list,
private, person_ref_list)
with BSDDBTxn(self.env, self.person_map) as txn:
txn.put(str(handle), new_person)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_person)
self.update()
LOG.debug("%d persons upgraded with %d citations in %d seconds. " %
@ -176,7 +179,9 @@ def gramps_upgrade_16(self):
change, date, tag_list, private)
LOG.debug(" upgrade new_media %s" % [new_media])
with BSDDBTxn(self.env, self.media_map) as txn:
txn.put(str(handle), new_media)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_media)
LOG.debug(" update ref map media %s" % [handle,
self.get_object_from_handle(handle) ])
self.update()
@ -195,7 +200,7 @@ def gramps_upgrade_16(self):
start_time = time.time()
for place_handle in self.place_map.keys():
place = self.place_map[place_handle]
(handle, gramps_id, title, int, lat,
(handle, gramps_id, title, longi, lat,
main_loc, alt_loc, urls, media_list, source_list, note_list,
change, private) = place
if source_list:
@ -208,11 +213,13 @@ def gramps_upgrade_16(self):
self, media_list)
if source_list or media_list:
new_place = (handle, gramps_id, title,
int, lat, main_loc, alt_loc, urls,
longi, lat, main_loc, alt_loc, urls,
media_list, new_citation_list, note_list,
change, private)
with BSDDBTxn(self.env, self.place_map) as txn:
txn.put(str(handle), new_place)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_place)
self.update()
LOG.debug("%d places upgraded with %d citations in %d seconds. " %
@ -260,7 +267,9 @@ def gramps_upgrade_16(self):
attribute_list, lds_seal_list, new_citation_list,
note_list, change, tag_list, private)
with BSDDBTxn(self.env, self.family_map) as txn:
txn.put(str(handle), new_family)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_family)
self.update()
LOG.debug("%d familys upgraded with %d citations in %d seconds. " %
@ -300,7 +309,9 @@ def gramps_upgrade_16(self):
attribute_list,
change, private)
with BSDDBTxn(self.env, self.event_map) as txn:
txn.put(str(handle), new_event)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_event)
t2 = time.time()
upgrade_time += t2 - t1
t3 = time.time()
@ -332,7 +343,9 @@ def gramps_upgrade_16(self):
new_repository = (handle, gramps_id, the_type, name, note_list,
address_list, urls, change, private)
with BSDDBTxn(self.env, self.repository_map) as txn:
txn.put(str(handle), new_repository)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_repository)
self.update()
LOG.debug("%d repositorys upgraded with %d citations in %d seconds. " %
@ -535,7 +548,9 @@ def convert_source_list_to_citation_list_16(self, source_list):
date, page, confidence, ref, note_list, new_media_list,
new_data_map, new_change, private)
with BSDDBTxn(self.env, self.citation_map) as txn:
txn.put(str(new_handle), new_citation)
if isinstance(new_handle, UNITYPE):
new_handle = new_handle.encode('utf-8')
txn.put(new_handle, new_citation)
self.cmap_index += 1
# # add backlinks for references from Citation to Source
# with BSDDBTxn(self.env) as txn:
@ -621,7 +636,9 @@ def gramps_upgrade_15(self):
)
with BSDDBTxn(self.env, self.person_map) as txn:
txn.put(str(handle), new_person)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_person)
self.update()
#surname is now different, remove secondary index with names
_db = db.DB(self.env)
@ -644,7 +661,9 @@ def gramps_upgrade_15(self):
new_family[13] = []
new_family = tuple(new_family)
with BSDDBTxn(self.env, self.family_map) as txn:
txn.put(str(handle), new_family)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_family)
self.update()
# ---------------------------------
@ -661,7 +680,9 @@ def gramps_upgrade_15(self):
new_note[6] = []
new_note = tuple(new_note)
with BSDDBTxn(self.env, self.note_map) as txn:
txn.put(str(handle), new_note)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_note)
self.update()
# ---------------------------------
@ -674,7 +695,9 @@ def gramps_upgrade_15(self):
new_media[10] = []
new_media = tuple(new_media)
with BSDDBTxn(self.env, self.media_map) as txn:
txn.put(str(handle), new_media)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_media)
self.update()
# ---------------------------------
@ -688,7 +711,9 @@ def gramps_upgrade_15(self):
#new_event[11] = []
new_event = tuple(new_event)
with BSDDBTxn(self.env, self.event_map) as txn:
txn.put(str(handle), new_event)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_event)
self.update()
# ---------------------------------
@ -704,7 +729,9 @@ def gramps_upgrade_15(self):
new_place = new_place[:12] + new_place[13:]
new_place = tuple(new_place)
with BSDDBTxn(self.env, self.place_map) as txn:
txn.put(str(handle), new_place)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_place)
self.update()
# ---------------------------------
@ -717,7 +744,9 @@ def gramps_upgrade_15(self):
new_source = new_source[:11] + new_source[12:]
new_source = tuple(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()
# ---------------------------------
@ -731,7 +760,9 @@ def gramps_upgrade_15(self):
new_repository[5] = list(map(convert_address, new_repository[5]))
new_repository = tuple(new_repository)
with BSDDBTxn(self.env, self.repository_map) as txn:
txn.put(str(handle), new_repository)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_repository)
self.update()
# Bump up database version. Separate transaction to save metadata.
@ -753,6 +784,8 @@ def convert_marker(self, marker_field):
tag.set_name(tag_name)
tag.set_priority(len(self.tags))
with BSDDBTxn(self.env, self.tag_map) as txn:
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, tag.serialize())
self.tags[tag_name] = handle
return self.tags[tag_name]
@ -819,7 +852,9 @@ def gramps_upgrade_14(self):
new_note = (handle, gramps_id, styled_text, format, note_type,
change, marker, private)
with BSDDBTxn(self.env, self.note_map) as txn:
txn.put(str(handle), new_note)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_note)
self.update()
# ---------------------------------
@ -839,7 +874,9 @@ def gramps_upgrade_14(self):
description, place, new_source_list, note_list,
new_media_list, new_attribute_list, change,marker,private)
with BSDDBTxn(self.env, self.event_map) as txn:
txn.put(str(handle), new_event)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_event)
self.update()
# ---------------------------------
@ -921,7 +958,9 @@ def gramps_upgrade_14(self):
)
with BSDDBTxn(self.env, self.person_map) as txn:
txn.put(str(handle), new_person)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_person)
self.update()
# ---------------------------------
@ -953,7 +992,9 @@ def gramps_upgrade_14(self):
change, marker, private)
with BSDDBTxn(self.env, self.family_map) as txn:
txn.put(str(handle), new_family)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_family)
self.update()
# ---------------------------------
@ -978,7 +1019,9 @@ def gramps_upgrade_14(self):
new_address_list, urls, change, marker, private)
with BSDDBTxn(self.env, self.repository_map) as txn:
txn.put(str(handle), new_repository)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_repository)
self.update()
# ---------------------------------
@ -996,7 +1039,9 @@ def gramps_upgrade_14(self):
new_date, marker, private)
with BSDDBTxn(self.env, self.media_map) as txn:
txn.put(str(handle), new_media)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_media)
self.update()
# ---------------------------------
@ -1004,17 +1049,19 @@ def gramps_upgrade_14(self):
# ---------------------------------
for place_handle in self.place_map.keys():
place = self.place_map[place_handle]
(handle, gramps_id, title, int, lat,
(handle, gramps_id, title, longi, lat,
main_loc, alt_loc, urls, media_list, source_list, note_list,
change, marker, private) = place
new_media_list = new_media_list_14(media_list)
new_source_list = new_source_list_14(source_list)
new_place = (handle, gramps_id, title, int, lat,
new_place = (handle, gramps_id, title, longi, lat,
main_loc, alt_loc, urls, new_media_list,
new_source_list, note_list, change, marker, private)
with BSDDBTxn(self.env, self.place_map) as txn:
txn.put(str(handle), new_place)
if isinstance(handle, UNITYPE):
handle = handle.encode('utf-8')
txn.put(handle, new_place)
self.update()
# ---------------------------------
@ -1033,7 +1080,9 @@ def gramps_upgrade_14(self):
marker, private)
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()
# Bump up database version. Separate transaction to save metadata.

View File

@ -40,13 +40,11 @@ else:
import pickle
import os
import time
import locale
import bisect
from functools import wraps
import logging
from sys import maxsize
from ..ggettext import gettext as _
from ..config import config
if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3:
from bsddb3 import dbshelve, db
@ -74,13 +72,15 @@ from ..lib.researcher import Researcher
from . import (DbBsddbRead, DbWriteBase, BSDDBTxn,
DbTxn, BsddbBaseCursor, BsddbDowngradeError, DbVersionError,
DbEnvironmentError, DbUpgradeRequiredError, find_surname,
find_surname_name, DbUndoBSDDB as DbUndo)
find_byte_surname, find_surname_name, DbUndoBSDDB as DbUndo)
from .dbconst import *
from ..utils.callback import Callback
from ..utils.cast import (conv_unicode_tosrtkey, conv_dbstr_to_unicode)
from ..utils.cast import conv_dbstr_to_unicode
from ..updatecallback import UpdateCallback
from ..errors import DbError
from ..constfunc import win, conv_to_unicode, cuni, UNITYPE
from ..constfunc import win, conv_to_unicode, cuni, UNITYPE, handle2internal
from ..const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
_LOG = logging.getLogger(DBLOGNAME)
LOG = logging.getLogger(".citation")
@ -163,7 +163,7 @@ KEY_TO_NAME_MAP = {PERSON_KEY: 'person',
# Helper functions
#
#-------------------------------------------------------------------------
def find_idmap(key, data):
""" return id for association of secondary index.
returns a byte string
@ -495,8 +495,8 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
# The DB_PRIVATE flag must go if we ever move to multi-user setup
env_flags = db.DB_CREATE | db.DB_PRIVATE |\
db.DB_INIT_MPOOL | db.DB_INIT_LOCK |\
db.DB_INIT_LOG | db.DB_INIT_TXN | db.DB_THREAD
db.DB_INIT_MPOOL |\
db.DB_INIT_LOG | db.DB_INIT_TXN
# As opposed to before, we always try recovery on databases
env_flags |= db.DB_RECOVER
@ -718,7 +718,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
if not self.readonly:
assoc = [
(self.person_map, self.surnames, find_surname),
(self.person_map, self.surnames, find_byte_surname),
(self.person_map, self.id_trans, find_idmap),
(self.family_map, self.fid_trans, find_idmap),
(self.event_map, self.eid_trans, find_idmap),
@ -857,6 +857,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
def delete_primary_from_reference_map(self, handle, transaction, txn=None):
"""
Remove all references to the primary object from the reference_map.
handle should be utf-8
"""
primary_cur = self.get_reference_map_primary_cursor()
@ -875,8 +876,12 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
# so we need the second tuple give us a reference that we can
# combine with the primary_handle to get the main key.
main_key = (handle, pickle.loads(data)[1][1])
if sys.version_info[0] < 3:
#handle should be in python 2 str
main_key = (handle, pickle.loads(data)[1][1])
else:
#python 3 work internally with unicode
main_key = (handle.decode('utf-8'), pickle.loads(data)[1][1])
# The trick is not to remove while inside the cursor,
# but collect them all and remove after the cursor is closed
@ -950,7 +955,12 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
the passed transaction.
"""
if isinstance(key, tuple):
#create a string key
#create a byte string key, first validity check in python 3!
for val in key:
if sys.version_info[0] >= 3 and isinstance(val, bytes):
raise DbError(_('An attempt is made to safe a reference key '
'which is partly bytecode, this is not allowed.\n'
'Key is %s') % str(key))
key = str(key)
if isinstance(key, UNITYPE):
key = key.encode('utf-8')
@ -1125,11 +1135,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
self.transaction_abort(self.transaction)
self.env.txn_checkpoint()
lockstats = self.env.lock_stat()
_LOG.debug("lock occupancy: %d%%, locked object occupancy: %d%%" % (
round(lockstats['maxnlocks']*100/lockstats['maxlocks']),
round(lockstats['maxnobjects']*100/lockstats['maxobjects'])))
self.__close_metadata()
self.name_group.close()
self.surnames.close()
@ -1488,7 +1493,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
self.emit('person-groupname-rebuild', (name, grouppar))
def sort_surname_list(self):
self.surname_list.sort(key=conv_unicode_tosrtkey)
self.surname_list.sort(key=glocale.sort_key)
@catch_db_error
def build_surname_list(self):
@ -1500,7 +1505,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
#TODO GTK3: Why double conversion? Convert to a list of str objects!
self.surname_list = sorted(
map(conv_dbstr_to_unicode, set(self.surnames.keys())),
key=conv_unicode_tosrtkey)
key=glocale.sort_key)
def add_to_surname_list(self, person, batch_transaction):
"""
@ -1895,10 +1900,10 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
"""
if (obj_type, trans_type) in transaction:
if trans_type == TXNDEL:
handles = [handle for handle, data in
handles = [handle2internal(handle) for handle, data in
transaction[(obj_type, trans_type)]]
else:
handles = [handle for handle, data in
handles = [handle2internal(handle) for handle, data in
transaction[(obj_type, trans_type)]
if (handle, None) not in transaction[(obj_type,
TXNDEL)]]
@ -2045,8 +2050,8 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
# The DB_PRIVATE flag must go if we ever move to multi-user setup
env_flags = db.DB_CREATE | db.DB_PRIVATE |\
db.DB_INIT_MPOOL | db.DB_INIT_LOCK |\
db.DB_INIT_LOG | db.DB_INIT_TXN | db.DB_THREAD
db.DB_INIT_MPOOL |\
db.DB_INIT_LOG | db.DB_INIT_TXN
# As opposed to before, we always try recovery on databases
env_flags |= db.DB_RECOVER

View File

@ -53,8 +53,11 @@ Specific symbols for parts of a name are defined:
# Python modules
#
#-------------------------------------------------------------------------
from ..ggettext import sgettext as _
from ..const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().sgettext
import re
import logging
LOG = logging.getLogger(".gramps.gen")
#-------------------------------------------------------------------------
#
@ -1047,8 +1050,17 @@ def fn(%s):
else:
return p + str + s
return cleanup_name("%s" %% (%s))""" % (args, new_fmt, ",".join(param))
exec(s)
return locals()['fn']
try:
exec(s) in globals(), locals()
return locals()['fn']
except:
LOG.error("\n" + 'Wrong name format string %s' % new_fmt
+"\n" + ("ERROR, Edit Name format in Preferences->Display to correct")
+"\n" + _('Wrong name format string %s') % new_fmt
+"\n" + ("ERROR, Edit Name format in Preferences->Display to correct")
)
def errfn(*arg):
return _("ERROR, Edit Name format in Preferences")
return errfn
displayer = NameDisplay()

View File

@ -40,6 +40,7 @@ import collections
from ._filterparser import FilterParser
from ..plug import BasePluginManager
from ..constfunc import STRTYPE
from ..const import GRAMPS_LOCALE as glocale
PLUGMAN = BasePluginManager.get_instance()
#-------------------------------------------------------------------------
@ -111,6 +112,7 @@ class FilterList(object):
parser.parse(the_file)
the_file.close()
except (IOError, OSError):
print("IO/OSError in _filterlist.py")
pass
except SAXParseException:
print("Parser error")
@ -123,7 +125,7 @@ class FilterList(object):
return l.replace('"', '&quot;')
def save(self):
f = open(self.file.encode(sys.getfilesystemencoding()), 'w')
f = open(self.file.encode(glocale.getfilesystemencoding()), 'w')
f.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
f.write('<filters>\n')
for namespace in self.filter_namespaces:

View File

@ -28,7 +28,8 @@
from __future__ import print_function, unicode_literals
from xml.sax import handler
from ..ggettext import gettext as _
from ..const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
#-------------------------------------------------------------------------
#

View File

@ -26,7 +26,8 @@
# Standard Python modules
#
#-------------------------------------------------------------------------
from ...ggettext import gettext as _
from ...const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
import re
import time

View File

@ -25,7 +25,8 @@
# Standard Python modules
#
#-------------------------------------------------------------------------
from ...ggettext import gettext as _
from ...const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
#-------------------------------------------------------------------------
#

View File

@ -25,7 +25,8 @@
# Standard Python modules
#
#-------------------------------------------------------------------------
from ...ggettext import gettext as _
from ...const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
#-------------------------------------------------------------------------
#

View File

@ -26,7 +26,8 @@
# Standard Python modules
#
#-------------------------------------------------------------------------
from ...ggettext import gettext as _
from ...const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
#-------------------------------------------------------------------------
#

View File

@ -25,7 +25,8 @@
# Standard Python modules
#
#-------------------------------------------------------------------------
from ...ggettext import gettext as _
from ...const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
#-------------------------------------------------------------------------
#

View File

@ -28,7 +28,8 @@
# Standard Python modules
#
#-------------------------------------------------------------------------
from ...ggettext import gettext as _
from ...const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
#-------------------------------------------------------------------------
#

View File

@ -26,7 +26,8 @@
# Standard Python modules
#
#-------------------------------------------------------------------------
from ...ggettext import gettext as _
from ...const import GRAMPS_LOCALE as glocale
_ = glocale.get_translation().gettext
#-------------------------------------------------------------------------
#

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