Compare commits

..

363 Commits

Author SHA1 Message Date
Vassilii Khachaturov 562fdbb06a 5554: back-port to gramps32 to debug 6757
Back-port the following commit:
	commit d43545a98a00b01228786776f74121d58bb73966
	Author: Josip Pisoj <josip@pisoj.com>
	Date:   Fri Feb 10 20:25:15 2012 +0000

		bug #5554: Automake problem

		git-svn-id: svn+ssh://svn.code.sf.net/p/gramps/code/trunk@18851 4ae1f11a-8b86-4847-b8af-ab372f36d1fd

svn: r23210
2013-09-27 21:40:49 +00:00
Zdeněk Hataš f83f4c8451 czech translation update
svn: r18424
2011-11-09 13:05:44 +00:00
Doug Blank 838f3adba7 5266: Christening dates displayed as Birth dates in Family editor
svn: r18350
2011-10-18 21:16:25 +00:00
Kees Bakker 7d15137109 Bugfix for 5146 and 5106 - ImportProGen fails on Windows because some files
must be read as "binary".


svn: r18059
2011-08-23 20:01:50 +00:00
Peter Landgren c210a14acc Swedish update.
svn: r17880
2011-07-01 08:16:08 +00:00
Nick Hall 92c5cceea3 5055: Issue warning when attempting to edit media reference when media object is already being edited
svn: r17874
2011-06-30 20:42:05 +00:00
Michiel Nauta 5eea9ca023 4856: Gedcom import of empty note leads to invalid database
svn: r17768
2011-06-13 08:27:50 +00:00
Michiel Nauta 19bfd81a9b 4316: [NarWeb] Missing document.png
svn: r17744
2011-06-10 17:07:10 +00:00
Peter Landgren 296d7557b7 Fix so that date, if any, in source reference is printed.
svn: r17732
2011-06-09 14:11:03 +00:00
Peter Landgren 3eea6dc8dc Fix so that date, if any, in source reference is printed.
svn: r17731
2011-06-09 14:10:20 +00:00
Michiel Nauta d7200b028a 4906: Infinitive loop when trying to remove matched person/event filter rules
svn: r17627
2011-05-30 20:23:41 +00:00
Erik De Richter a79e8f8860 updated nl translation
svn: r17554
2011-05-24 19:22:21 +00:00
Jérôme Rapinat fa60e78ee2 2521, 4923 'after' and validation (partial fix); typo on NextYear()
svn: r17546
2011-05-21 12:14:14 +00:00
Jérôme Rapinat 46979f512d 4899: according to specification, increase limite from '72' (default) to '120'
svn: r17479
2011-05-12 12:41:51 +00:00
Vassilii Khachaturov 1231c01b05 RU: annoying typo
svn: r17445
2011-05-07 18:37:43 +00:00
Michiel Nauta bdf97fabd0 4322: Upgrading a large database to new version runs out of memory; increase locktable size
svn: r17385
2011-05-02 20:10:37 +00:00
Doug Blank a8a8b41210 4875: 3.2.6-1 - Narweb - pedigree section
svn: r17370
2011-05-01 16:14:04 +00:00
Stéphane Charette 1091c221ba bump version number after the 3.2.6 release
svn: r17369
2011-05-01 07:11:19 +00:00
Stéphane Charette ccfe2230ef update for 3.2.6 release
svn: r17363
2011-05-01 06:52:33 +00:00
Kees Bakker e3bfa40a70 Bugfix for ImportProGen, bug #4869
svn: r17362
2011-04-30 20:33:16 +00:00
Stéphane Charette 1bb2a2fec0 updated gramps.pot prior to the 3.2.6 release
svn: r17356
2011-04-30 15:43:59 +00:00
Michiel Nauta 77cf544636 Add some debug statements to find cause of bug 4481/4834
svn: r17295
2011-04-27 17:45:37 +00:00
Michiel Nauta 33daf99b33 3614: Undo gives wrong text in menu of what it will do; uncontroversial patch part
svn: r17227
2011-04-23 14:19:04 +00:00
Peter Landgren 20b3131237 Issue 4000 also fixed for Gramps 3.2.6 now.
svn: r17224
2011-04-23 11:03:54 +00:00
Michiel Nauta 1a11e6ba36 4047: Cannot modify a mother on a family editor without father
svn: r17221
2011-04-23 08:54:46 +00:00
Vassilii Khachaturov 2dd4eb7526 Home person - translate consistently
svn: r17203
2011-04-22 09:24:27 +00:00
Jérôme Rapinat be37e4cc45 4848: Lithuanian date handler (display gregorian) and libtranslate
svn: r17200
2011-04-22 08:38:26 +00:00
Michiel Nauta f668c23cf2 4284: again, fix for parentless family
svn: r17174
2011-04-21 04:56:02 +00:00
Michiel Nauta 90c0f43c9d 4284: Common ancestor filter ignores persons without ancestors
svn: r17168
2011-04-20 13:33:47 +00:00
Benny Malengier 5819fa672e 4455: Gramps crashes when selecting Events due to PHON in GEDCOM
svn: r17161
2011-04-20 10:25:20 +00:00
Michiel Nauta 40f7314699 4426: Names under thumbnails in Gallery view in Narweb reports mis show characters & and '
svn: r17098
2011-04-11 17:01:23 +00:00
Jérôme Rapinat e942c940fa minor improvement (call name)
svn: r17042
2011-04-05 08:18:00 +00:00
Zdeněk Hataš 9c0f5a96ef Czech translation is now complete.
svn: r17028
2011-04-02 19:41:52 +00:00
Michiel Nauta e01b04e117 4794: Error adding new repository via source dialog
svn: r16975
2011-03-29 17:43:28 +00:00
Mirko Leonhäuser e3e6a36f3b Bugfix in German translation
svn: r16967
2011-03-28 18:31:57 +00:00
Michiel Nauta 74968f9b5a 4763: Crash because error passes instead of string
svn: r16912
2011-03-24 21:20:50 +00:00
Michiel Nauta 200b4f3015 4770: Unexpected error exporting a database to Gramps Xml format
svn: r16899
2011-03-23 20:29:47 +00:00
Luigi Toscano 35763a3c29 Italian translation updates.
svn: r16895
2011-03-23 00:14:53 +00:00
Jérôme Rapinat 8996d04cb9 4423: Web report does not handle Czech 'CH' character properly (contribution by phejl)
svn: r16843
2011-03-17 16:29:59 +00:00
Michiel Nauta 36b418ec65 4109: Command line arguments for tools ignored
svn: r16836
2011-03-16 21:55:13 +00:00
Peter Landgren 62d1419a83 Fixed typo in Swedish translation.
svn: r16830
2011-03-16 15:16:25 +00:00
Zdeněk Hataš 89cf7676e1 translation update. abbreviations left untranslated. I don't have an idea, how to convert it to my native language now.
svn: r16828
2011-03-16 14:20:15 +00:00
Michiel Nauta 22b13fc772 4758: Copy constructor of gen.lib objects uses shallow copy instead of deep copy
svn: r16826
2011-03-15 21:54:37 +00:00
Serge Noiraud 7150429195 GeoView : issue 4743 : self.title already used in pageview.py. rename it with self.title_name
svn: r16824
2011-03-14 09:50:39 +00:00
Vassilii Khachaturov 741eedcbe1 tiny cleanup
svn: r16799
2011-03-10 13:48:51 +00:00
Vassilii Khachaturov a1ae8852cf POT merge up to POT-Creation-Date: 2011-02-05 10:35+0100.
Verified today's POT only generates differences in 
the source referencing comments.



svn: r16782
2011-03-08 11:13:02 +00:00
Michiel Nauta 9bc4a82007 4041: Filter rule people with records containing <substring> fails on street name
svn: r16761
2011-03-05 10:49:01 +00:00
Boril Gourinov a414670cec Updating Bulgarian translation
svn: r16755
2011-03-04 21:20:08 +00:00
Jérôme Rapinat c1487b1e59 4692, 4519, 4390: try to avoid empty event types with a better support for web addresses on individual
svn: r16749
2011-03-03 09:27:43 +00:00
Michiel Nauta 5af7f07875 Undo revision 16674
svn: r16743
2011-03-02 11:33:36 +00:00
Jérôme Rapinat 8708c60f33 'Selected' action/string was missing
svn: r16729
2011-02-28 15:20:53 +00:00
Doug Blank a87b267515 4694: Tools->Utilities->Verify the Data->crash
svn: r16727
2011-02-28 13:47:53 +00:00
Vassilii Khachaturov 0884741057 4687: session log gramplet - overzealous l10n of signal names breaks clickable link handlers
backport my trunk fix (cleanly applies)



svn: r16725
2011-02-27 13:40:54 +00:00
Jérôme Rapinat f2f4d5974c 4689: More space for localized sentences on ProgressMeter
svn: r16711
2011-02-25 14:41:10 +00:00
Michiel Nauta b72ae432e7 correct revision 16674, readd sort_string method in case external plugins use it
svn: r16677
2011-02-19 15:08:30 +00:00
Peter Landgren 13e1d5420e Further improvment for Swedish Calendar.
svn: r16676
2011-02-19 14:14:14 +00:00
Michiel Nauta f5a8db75c2 4657: The "sort as" name is ignored
svn: r16674
2011-02-19 14:08:06 +00:00
Vassilii Khachaturov bdd110de18 Committing my fix to bug #4550 - PATCH OK'ed by dsblank
svn: r16658
2011-02-17 22:52:41 +00:00
Jérôme Rapinat 8b198624ef 4653: typo, capital letter (contribution by cderory)
svn: r16656
2011-02-17 22:11:31 +00:00
Peter Landgren 8f0bcd136b Update of Swedish translation.
svn: r16644
2011-02-17 09:19:36 +00:00
Peter Landgren 5e275bedfd Improved Swedish Calendar.
svn: r16641
2011-02-17 08:29:30 +00:00
Peter Landgren 5791d2d0d3 Fixed a typo and improved Swedish Calendar.
svn: r16640
2011-02-17 08:28:35 +00:00
Michiel Nauta 01aa78127e 4651: XML import of name with only display or sort format set fails
svn: r16633
2011-02-16 18:57:13 +00:00
Jérôme Rapinat 10342a03cc dupplicated */12/26 (France)
svn: r16629
2011-02-16 14:16:35 +00:00
Jérôme Rapinat 1fd757e6fa cleanup France; http://fr.wikipedia.org/wiki/Jour_f%C3%A9ri%C3%A9#.C2.A0France
svn: r16628
2011-02-16 14:14:58 +00:00
Michiel Nauta 8af1f7e6f5 4430: fail to repair database
svn: r16605
2011-02-11 16:10:58 +00:00
Michiel Nauta 41d752a75b 4613: Gramps dies many times (on entering person that satisfies filter with ID parameter)
svn: r16594
2011-02-09 21:27:12 +00:00
Rob G. Healey 783619455f Bug#4287: Beg#4601: Fixed
and cleanup for NarrativeWeb for W3C compliance; IndividualPages
          still have errors in the Pedigree section -- this will require
          more than a simple tweak of code or style sheet elements.

svn: r16591
2011-02-09 06:26:01 +00:00
Erik De Richter 6e50919487 updated nl translation
svn: r16589
2011-02-08 19:24:44 +00:00
Rob G. Healey 7a9fe58b48 Bug#4287; Html.attr was not closing such elements as: <img ... /> . Thanks Gerald Britton for the patch.
svn: r16587
2011-02-07 07:13:22 +00:00
Jérôme Rapinat 69f1ec0508 4612: 'elf' instead of 'self' (fixed by Harald Rosemann)
svn: r16584
2011-02-06 13:07:15 +00:00
Mirko Leonhäuser a8aea11b07 updated german translation
svn: r16583
2011-02-06 09:02:25 +00:00
Gary Burton 09f20eaf9f Redraw selectors on toggling sort order. Bug #4518
svn: r16580
2011-02-05 16:56:39 +00:00
Mirko Leonhäuser a4ca60e98f updated german translation
svn: r16577
2011-02-05 15:29:59 +00:00
Jérôme Rapinat 12e19ef445 update template
svn: r16576
2011-02-05 09:41:33 +00:00
Jérôme Rapinat a12f166b09 4326: typos (by PaulFranklin); backport
svn: r16575
2011-02-05 09:00:43 +00:00
Jérôme Rapinat 170d7e4cdb 4089: Month names for Lithuanian (contribution by embar)
svn: r16573
2011-02-05 08:26:22 +00:00
Peter Landgren 328a9d329d Better abbreviations, thanks to Paul Franklin.
svn: r16567
2011-02-04 15:41:34 +00:00
Benny Malengier 277e91a1ca 3975: Accessing an incompatible database corrupts the database
Undoing unset of DB_RECOVERY flag, we need it to have ACI(D) database


svn: r16561
2011-02-03 22:23:05 +00:00
Rob G. Healey 6ca6765458 Fixed navigation menus in Nebraska style sheet.
svn: r16557
2011-02-03 18:42:13 +00:00
Nick Hall bced98bd71 4591: Do not allow less than a single column in the Gramplet view
svn: r16546
2011-02-02 22:09:14 +00:00
Jérôme Rapinat b5cd86498b 4587: cleanup Russian translation (by vassilii); merge with new template
svn: r16541
2011-02-02 13:31:45 +00:00
Jérôme Rapinat 7045418dec wording, spacing, separator
svn: r16539
2011-02-02 10:57:41 +00:00
Mirko Leonhäuser a5b5842ec3 updated german translation
svn: r16536
2011-02-01 22:04:34 +00:00
Jérôme Rapinat 20b39325b6 typos
svn: r16533
2011-02-01 16:27:54 +00:00
Erik De Richter cbade510a9 updated nl translation
svn: r16532
2011-02-01 15:30:42 +00:00
Jérôme Rapinat 82d7d7db9a 3782: Cannot set max generation > 15; use the same value as DAR and pedigree gramplet
svn: r16530
2011-02-01 14:58:54 +00:00
Peter Landgren f3d110f7ec Update with abbreviations.
svn: r16526
2011-02-01 12:10:27 +00:00
Jérôme Rapinat 6968dcdf97 4425: event type abbreviations; new template; update french translation
svn: r16524
2011-02-01 11:08:20 +00:00
Peter Landgren 243d02a6f5 Issue 4425: Abbreviation algorithm does not work for all languages.
svn: r16520
2011-01-31 20:08:09 +00:00
Jérôme Rapinat 1aa71cceaa 4582: cleanup by vassilii; merge with last template
svn: r16510
2011-01-31 08:04:42 +00:00
Zdeněk Hataš d8b100757f czech translation completed.
svn: r16509
2011-01-30 20:58:33 +00:00
Jérôme Rapinat 80a6b71e13 4578: cleanup by vassilii
svn: r16494
2011-01-28 12:38:03 +00:00
Jérôme Rapinat dfa36127f8 4089: Month names (by embar)
svn: r16492
2011-01-28 09:51:37 +00:00
Mirko Leonhäuser f17a5125f3 updated german translation
svn: r16474
2011-01-25 22:00:35 +00:00
Benny Malengier c58ca7575b 4473: Prefix lost when using Add new child to family
svn: r16473
2011-01-25 20:02:28 +00:00
Peter Landgren 4f1943b180 Swedish translation update.
svn: r16469
2011-01-25 14:00:13 +00:00
Benny Malengier b147cb2ca3 4383: Error while attempt to edit family
2521: Problem with erroneous birth date in using the family editor.
We show validation error on date > next year, and don't crash on large year anymore


svn: r16467
2011-01-25 12:43:09 +00:00
Benny Malengier 3a4a01ba9e set async write to disk to improve speed, eg import * 40
svn: r16461
2011-01-24 20:08:21 +00:00
Jérôme Rapinat f84de89864 #4569 #4560 patches for Russian translation on Records.py and Name formats (by vassilii)
svn: r16452
2011-01-24 13:43:43 +00:00
Jérôme Rapinat adc4608ba5 typo
svn: r16431
2011-01-22 10:12:55 +00:00
Zdeněk Hataš fd363c528b bug #3482 fix backported from trunk
svn: r16408
2011-01-18 10:35:08 +00:00
Jérôme Rapinat e60da9001a 4537: spelling mistake (contribution by vassilii)
svn: r16399
2011-01-17 18:26:35 +00:00
Rob G. Healey b2ea7dea08 Bug#3795; fixed DownloadPage alignment.
svn: r16383
2011-01-15 07:17:38 +00:00
Zdeněk Hataš eea46c8875 czech translation update
svn: r16382
2011-01-14 20:55:28 +00:00
Jérôme Rapinat 4f44f6f98f 4530: Gedcom import looses custom family event description
svn: r16373
2011-01-13 10:45:37 +00:00
Jérôme Rapinat 62358e931b update french translation
svn: r16372
2011-01-13 10:41:02 +00:00
Mirko Leonhäuser a7319dac47 updated german translation
svn: r16346
2011-01-07 11:15:32 +00:00
Peter Landgren dc0cd05ef8 Issue 4515, Check and Repair replaces illegal cntrl char with space.
svn: r16343
2011-01-06 12:12:53 +00:00
Peter Landgren 76e66f6104 Issue 4515, allow only 09, 0A, 0D in GEDCOM input.
svn: r16341
2011-01-05 18:12:15 +00:00
Joan Creus b94008e412 A few corrections to translation
svn: r16338
2011-01-05 17:49:35 +00:00
Peter Landgren 2acc96fa62 Issue 4515, skip all control char in XML output except 09, 0A, 0D.
svn: r16337
2011-01-05 10:46:27 +00:00
Joan Creus dcca22245c Translation update
svn: r16335
2011-01-04 10:32:17 +00:00
Rob G. Healey 27ff0c989e Worked on bugs #4305 and #4486. Not all problems are complete yet, but see #4305 for explaination.
svn: r16331
2011-01-03 02:39:27 +00:00
Jérôme Rapinat 0df382465c 4502: typo (contribution verthezp)
svn: r16328
2011-01-01 15:13:59 +00:00
Zdeněk Hataš 28f2bc8bac Backported Czech translations from trunk.
svn: r16302
2010-12-19 17:08:20 +00:00
Peter Landgren 58e7af6ddf Issue 4460. Fixed by changing =+ to +=.
svn: r16299
2010-12-19 12:03:51 +00:00
Jérôme Rapinat e0adfcbb7b update Chinese translation (by honeyword)
svn: r16297
2010-12-18 09:06:44 +00:00
Mirko Leonhäuser bc0ce2aada updated german translation
svn: r16294
2010-12-17 00:06:18 +00:00
Jérôme Rapinat 9e7e513b13 3930: Verify data tool ignores role on burial event (see previous rev)
svn: r16290
2010-12-16 09:29:32 +00:00
Jérôme Rapinat e43da1a226 3930: Verify data tool ignores role on burial event
svn: r16289
2010-12-16 09:27:17 +00:00
Jérôme Rapinat cd036d3ec7 update Chinese translation (by honeyword)
svn: r16285
2010-12-15 16:20:20 +00:00
Doug Blank a162c6796e Changed CREATE_FOLDER to SELECT_FOLDER to prevent infinite loop; still allows one to create folder, with no lack of functionality
svn: r16284
2010-12-15 15:46:50 +00:00
Peter Landgren 2e8b234b94 Fix of preposition, thanks to user report.
svn: r16282
2010-12-14 19:51:10 +00:00
Doug Blank 5f51aeeb63 4429: gramps can't export my database
svn: r16280
2010-12-13 22:39:34 +00:00
Doug Blank 4742d33e26 4457: Setup addons
svn: r16278
2010-12-13 21:09:34 +00:00
Zdeněk Hataš f0ece22743 Backported Czech translations from trunk.
svn: r16276
2010-12-12 22:40:47 +00:00
Zdeněk Hataš 62b29c6e61 Backported translation from trunk
svn: r16262
2010-12-11 19:42:12 +00:00
Jérôme Rapinat c6688c8927 update Brazilian-Portuguese translation (by Robert Jerome)
svn: r16256
2010-12-07 13:26:01 +00:00
Doug Blank 38a6412aa5 4427: GEDCOM export: non-standard end of line characters not output properly
svn: r16240
2010-11-30 14:31:16 +00:00
Doug Blank 7244448c51 3975: Accessing an incompatible database corrupts the database
svn: r16234
2010-11-24 03:27:37 +00:00
Doug Blank 5705dfe107 4415: Editing ID format in preferences can throw exception
svn: r16228
2010-11-23 04:06:56 +00:00
Erik De Richter cd53f3a842 updated nl translation
svn: r16220
2010-11-20 10:20:50 +00:00
Peter Landgren d5ccbb092d Issue 4393, str/unicode problem. Now same code as in trunk.
svn: r16218
2010-11-19 18:37:12 +00:00
Doug Blank 3affb0a3fd 4395: Crash on selecting Gramplets
svn: r16217
2010-11-19 14:37:10 +00:00
Benny Malengier 028e5caf03 4370: Reports in ODT format are corrupted
svn: r16209
2010-11-18 20:18:06 +00:00
Benny Malengier 8dd881dc2f 4352: more memory leak problems
svn: r16207
2010-11-18 19:16:55 +00:00
Stéphane Charette c0bf571c62 bump version number after the 3.2.5 release
svn: r16204
2010-11-18 07:42:26 +00:00
Stéphane Charette 3b5508d997 update for 3.2.5 release
svn: r16200
2010-11-18 06:54:44 +00:00
Jérôme Rapinat 77455f2776 4185: update strings for kinship report (contribution by Robert Jerome)
svn: r16194
2010-11-15 10:33:04 +00:00
Jérôme Rapinat 5ca248aa14 update slovak translation (by Lubo Vasko)
svn: r16190
2010-11-14 10:47:24 +00:00
Jérôme Rapinat d1b9344373 4089: Month names for Russian (contribution)
svn: r16188
2010-11-13 21:27:48 +00:00
Jérôme Rapinat 081c300b75 update polish translation (by Łukasz Rymarczyk)
svn: r16184
2010-11-12 10:45:03 +00:00
Peter Landgren 35d494f49e Fix of issue 4369, parameter msg not always a string object.
svn: r16181
2010-11-11 16:56:56 +00:00
Jérôme Rapinat 658284d692 typo
svn: r16175
2010-11-11 11:58:07 +00:00
Erik De Richter 900edf379c updated nl translation
svn: r16173
2010-11-10 22:28:56 +00:00
Nick Hall 4ceee5b350 4366: Fix bug with event type of Unknown
svn: r16171
2010-11-10 17:02:21 +00:00
Mirko Leonhäuser 3154bbaa50 updated german translation
svn: r16168
2010-11-09 20:18:28 +00:00
Jérôme Rapinat e3147bc8a5 syntax error '''\n' breaks compilation
svn: r16159
2010-11-08 13:44:41 +00:00
Jérôme Rapinat 9fcf2bf560 typo on Norwegian Nynorsk; update french translation
svn: r16158
2010-11-08 10:51:12 +00:00
Peter Landgren 626e1ec24d swedish translation update.
svn: r16157
2010-11-07 21:24:35 +00:00
Espen Berg 9bc9cf6a47 Sigmund Lorentsen revised Norwegian Nynorsk to 100%
svn: r16156
2010-11-07 18:44:06 +00:00
Mirko Leonhäuser 94efebf36c translation of proceed i have taken a backup was to long
svn: r16153
2010-11-07 01:54:38 +00:00
Mirko Leonhäuser f91eb31d88 updated german translation
svn: r16152
2010-11-07 01:41:24 +00:00
Nick Hall 03d5e3f4bc 4354: Bug fix in unused methods
svn: r16151
2010-11-06 16:03:09 +00:00
Jérôme Rapinat 5bc355ad0c update template
svn: r16150
2010-11-06 10:15:58 +00:00
Espen Berg 47ff14af65 Revised Norwegian bokmål to 100% due to the last few new strings
svn: r16149
2010-11-06 09:39:39 +00:00
Benny Malengier 60a4ce9f4a 4301: Got a database error
svn: r16148
2010-11-06 08:32:30 +00:00
Erik De Richter 959693bc84 updated nl translation
svn: r16144
2010-11-05 19:53:23 +00:00
Jérôme Rapinat 395e46aaab 4301: extra questiondialog on db manager
svn: r16142
2010-11-05 09:30:49 +00:00
Benny Malengier c0b534fe1d 4301: Got a database error
svn: r16134
2010-11-04 19:43:07 +00:00
Erik De Richter bdd3a553c0 updated nl translation
svn: r16133
2010-11-04 19:17:36 +00:00
Espen Berg 3418ac3bd2 Revised Norwegian bokmål translation
svn: r16123
2010-11-03 13:15:18 +00:00
Benny Malengier aff06c9b49 4343: Error message at close of address entry
svn: r16120
2010-11-02 20:04:40 +00:00
Benny Malengier bf7182ed8f 4341: Error when adding a new place
svn: r16118
2010-11-02 18:57:06 +00:00
Jérôme Rapinat dc5cfb7f91 2 errors on plural forms, clean-up
svn: r16115
2010-11-02 18:40:46 +00:00
Benny Malengier ea9df739a4 4340: Error when adding source reference
svn: r16110
2010-11-02 13:19:13 +00:00
Benny Malengier e6f6d5d00c 4340: Error when adding source reference
svn: r16109
2010-11-02 13:12:27 +00:00
Benny Malengier 77d3cf1967 4333: memory leak in 3.2
svn: r16104
2010-11-01 20:48:23 +00:00
Benny Malengier e80a74d72a 4333: memory leak in 3.2
svn: r16093
2010-10-31 08:55:42 +00:00
Benny Malengier 1baf7070a3 4333: memory leak in 3.2
svn: r16092
2010-10-31 08:38:05 +00:00
Benny Malengier f1e2d15ebb 4325: Error with 'More Name Details' if window is already opened
svn: r16072
2010-10-28 17:58:47 +00:00
Jérôme Rapinat a8ab3b5f4e #2644: Do not export individual events without primary role
svn: r16031
2010-10-24 07:20:15 +00:00
Peter Landgren 403bea5f2c Issue 4308, missed one parameter when calling Narrator.
svn: r16024
2010-10-22 17:27:41 +00:00
Benny Malengier ca3dba5dd9 4288: Preformatted blocks broken in web report
svn: r16015
2010-10-19 18:30:28 +00:00
Benny Malengier 3f87bdec6e 4292: Error in RTF output
svn: r16012
2010-10-19 15:37:28 +00:00
Jérôme Rapinat 848114ea4e #4264 properly import role and type on family (.gw file)
svn: r16005
2010-10-16 09:12:47 +00:00
Jérôme Rapinat ef37b3c6a6 typo
svn: r16004
2010-10-16 08:50:14 +00:00
Rob G. Healey 0fe26ef415 NarrativeWeb: Part of Bug#4287: Source References's hyperlink in now fixed.
svn: r16003
2010-10-16 08:35:26 +00:00
Rob G. Healey 2f9341dcb8 NarrativeWeb: Part of bug#4287: Description for the individual gallery is now escape so that for one the ampersand is taken care of.
svn: r16001
2010-10-16 08:03:13 +00:00
Rob G. Healey 77f96037fa libhtml: Part of Bug#4287 Adds PUBLIC to all of the DOCTYPE header of the first line in all web documents. Thanks Gerald Britton for the patch file.
svn: r16000
2010-10-16 07:47:05 +00:00
Peter Landgren 1cb6f2f3c8 Issue 4293, problems with LagecyGedcom and empty events.
svn: r15996
2010-10-15 17:55:14 +00:00
Jérôme Rapinat 43fa619ebc #4264: import ignores marriage and divorce dates (.gw file)
svn: r15994
2010-10-15 17:43:43 +00:00
Jérôme Rapinat db4e0aafb8 Update french translation, new template for matching usage argument (cli)
svn: r15989
2010-10-15 16:48:30 +00:00
Peter Landgren 09e9872206 Update #2 (took wrong version) with translation of the cli command --usage.
svn: r15986
2010-10-14 12:25:26 +00:00
Peter Landgren 796b778bf0 Update with translation of the cli command --usage.
svn: r15985
2010-10-14 12:16:42 +00:00
Peter Landgren 174886e40a Issue 4274, Gramps cli commands for user with non latin characters in names. Mostly Windows.
svn: r15983
2010-10-14 11:31:15 +00:00
Rob G. Healey dd1f244d24 Style Sheets: Added comment line to remove the description under the thumbnails in Individual Gallery. Search for line that is: #indivgallery div.thumbnail p, and follow the directions there.
svn: r15982
2010-10-14 00:45:20 +00:00
Doug Blank 0f7623be22 4236: All notes and sources ALWAYS written to GEDCOM file even when no notes are suppose to be written
svn: r15979
2010-10-13 10:56:58 +00:00
Doug Blank 1a27f856c5 typo in comment
svn: r15977
2010-10-13 10:49:07 +00:00
Peter Landgren d3993f57ff Issue 4291, wrong path when cancel.
svn: r15975
2010-10-13 08:45:23 +00:00
Mirko Leonhäuser af788956aa updated german translation
svn: r15974
2010-10-12 18:42:29 +00:00
Jérôme Rapinat 96efc4ee45 Add Relationships handler for Slovenian (by Bernard Banko)
svn: r15973
2010-10-12 06:49:30 +00:00
Jérôme Rapinat 359192efb0 Add Date handler for Slovenian (by Bernard Banko)
svn: r15972
2010-10-12 06:44:58 +00:00
Peter Landgren 8e841be786 Revert so that it will work with python 2.5 for branch32.
svn: r15971
2010-10-12 06:09:35 +00:00
Benny Malengier 9d207fd48f add missing css file to distribution
svn: r15969
2010-10-11 11:49:04 +00:00
Stéphane Charette 924acb11ff bump version strings to 3.2.5
svn: r15966
2010-10-10 23:34:07 +00:00
Stéphane Charette e035fe57e6 update for 3.2.4 release
svn: r15963
2010-10-10 22:55:05 +00:00
Stéphane Charette 985e42abe2 updated gramps.pot
svn: r15960
2010-10-10 14:05:43 +00:00
Peter Landgren 8bd6a16cf0 Some conversions are not needed for gramps on win with non latin username.
svn: r15958
2010-10-08 13:53:49 +00:00
Peter Landgren 16f468654a Minor update of Swedish translation, took trunk, should be bransch.
svn: r15956
2010-10-06 14:16:54 +00:00
Peter Landgren 6aef60a421 Updates to allow for Family Tree names, with non latin characters in Windows, in -l/-L commands.
svn: r15942
2010-09-30 14:25:25 +00:00
Peter Landgren ec50af2785 Final fix of 4164, problems with cairo: out of memory for mult pages in Grapviz output.
svn: r15940
2010-09-30 13:04:32 +00:00
Peter Landgren c0f2ed96b2 Updates to allow for user names with non latin characters in Windows.
svn: r15939
2010-09-30 10:02:41 +00:00
Jérôme Rapinat 8b7e7aed4e minor clean-up
svn: r15936
2010-09-29 14:43:51 +00:00
Jérôme Rapinat c5e1ee690d bugs 2488 and 4251: spacing on families
svn: r15935
2010-09-28 16:54:07 +00:00
Peter Landgren f08d4825e7 Minor update of Swedish translation.
svn: r15933
2010-09-27 18:03:56 +00:00
Peter Landgren c414e34ceb Consistent use of OS detection and host added to Win users.
svn: r15931
2010-09-27 17:53:57 +00:00
Doug Blank 3fb1e0fd4a Two more fixes for protecting None.property when using Do Not Include Unlinked records
svn: r15929
2010-09-25 11:00:25 +00:00
Jérôme Rapinat ae8ba555eb 4241: ignore Residence events on Addresse page for non-english locales
svn: r15925
2010-09-24 14:37:07 +00:00
Benny Malengier 479e70f835 3969: [NarWeb] Narrated Web Site: Newlines and white space are not preserved in note text
Patch of Tim Lyons and  Benny Malengier


svn: r15922
2010-09-23 21:03:02 +00:00
Jérôme Rapinat c796db53c5 #4242: NarWeb ignores Calendar for sorting Dates on Event groups
svn: r15919
2010-09-21 14:32:10 +00:00
Nick Hall 84898abaaf 4250: Bookmark menu does not redraw when bookmarks are re-ordered
svn: r15916
2010-09-20 23:47:06 +00:00
Espen Berg 2f983fade2 Revised Norwegian bokmål and nynorsk (Sigmund Lorentzen) translations
svn: r15915
2010-09-19 17:59:36 +00:00
Jérôme Rapinat f6a8fd888a typo
svn: r15908
2010-09-16 18:06:42 +00:00
Peter Landgren 1c1da5a8ea Issue 4235.
svn: r15906
2010-09-16 12:36:59 +00:00
Peter Landgren 4679718cc2 Fixed indent errors.
svn: r15904
2010-09-16 12:30:14 +00:00
Peter Landgren a52072d79e Issue 4212, Win problems with media path/file name with non latin.
svn: r15903
2010-09-16 12:23:16 +00:00
Doug Blank c8a48b4b0e 4203: [NarWeb] 'Exclude living' option can lead to error
svn: r15898
2010-09-13 23:57:05 +00:00
Rob G. Healey f479381bfd NarrativeWeb: bug#4079 -- siblings, pedigree, and children are all sorted if birthorder option is chosen.
svn: r15897
2010-09-13 22:14:02 +00:00
Benny Malengier 33de80e6fd 3519: Wrong 'Group as' value (Given instead of Surname) is used for custom display name
svn: r15895
2010-09-13 19:55:13 +00:00
Benny Malengier 46c9eb079c 4192: [NarWeb] media is out of order in Places
svn: r15894
2010-09-13 19:22:54 +00:00
Benny Malengier 1df64c2609 4192: [NarWeb] media is out of order in Places
svn: r15892
2010-09-13 18:55:20 +00:00
Benny Malengier 9aa00be403 3875: [NarWeb] no more caption text for images in Source gallery
svn: r15891
2010-09-13 18:11:21 +00:00
Julio Sánchez 3096db842c Minor translation update
svn: r15889
2010-09-13 11:15:06 +00:00
Benny Malengier 86474a1cf6 3870: [NarWeb] Reference name to Source incorrectly displayed as "unknown"
svn: r15887
2010-09-13 09:34:49 +00:00
Julio Sánchez fa246bc681 Minor translation update
svn: r15886
2010-09-13 06:03:19 +00:00
Erik De Richter 546e39d530 updated nl translation
svn: r15880
2010-09-12 09:31:29 +00:00
Jérôme Rapinat 3b24bfc971 update Slovak translation (by Lubo Vasko)
svn: r15879
2010-09-12 08:48:36 +00:00
Benny Malengier 3e6fa30d60 3944: [NarWeb] Alternate Locations on places site in web report vers. 3.2.2
svn: r15875
2010-09-11 15:17:04 +00:00
Benny Malengier c1137c79e5 3894: [NarWeb] Narrated Website does not show Gramps-ID for sources and events
svn: r15874
2010-09-11 11:35:38 +00:00
Doug Blank e7749890f7 Typo, but only when self._LOG_ALL flag is set, which I don't know how to set
svn: r15873
2010-09-11 06:53:57 +00:00
Rob G. Healey 8a03b75b27 Stylesheet: Fixed text color on WebCal. Could not see non hyperlinked text.
svn: r15872
2010-09-11 03:12:42 +00:00
Arturas Sleinius bf9a7efe37 Updated Lithuanian translation
svn: r15871
2010-09-10 09:00:23 +00:00
Boril Gourinov 4e4a95926a Update of Bulgarian translation
svn: r15870
2010-09-09 20:08:45 +00:00
Mirko Leonhäuser 09069234d4 updated german translation
svn: r15869
2010-09-09 19:12:17 +00:00
Jérôme Rapinat 2cba6ed51c update french translation
svn: r15867
2010-09-09 17:26:29 +00:00
Peter Landgren ab0ed284f1 Swedish translation update.
svn: r15863
2010-09-09 14:17:56 +00:00
Peter Landgren 8b24f681cb Two strings made translatable.
svn: r15862
2010-09-09 14:16:42 +00:00
Benny Malengier 1ac68fb63d 0004131: [NarWeb] No clickable link in referenced region in the photo, if person has no name
svn: r15861
2010-09-09 11:15:33 +00:00
Peter Landgren 531f089f10 Issue 3960, warn button disappears too soon on long GEDCOM import with errors.
svn: r15858
2010-09-06 15:18:28 +00:00
Benny Malengier aff081d139 4196: Error by using special filter in person view
svn: r15856
2010-09-03 22:56:33 +00:00
Rob G. Healey 4f821bc75c Style Sheets: There has been so many problems with the Ancestors Tree, I have removed the elements from the individual sheets, and create one sheet instead.
svn: r15854
2010-09-03 00:44:18 +00:00
Rob G. Healey 6eb47e400c Nebraska: fixed a footer background color issue.
svn: r15853
2010-09-03 00:05:45 +00:00
Rob G. Healey 80a748109a Stylesheets: I hope that these style sheet corrections will correct the layout and style problems that have been plaquing NarrativeWeb. If you have any problems, please let me know.
svn: r15852
2010-09-02 23:55:27 +00:00
Benny Malengier 140ce8077d 2953: wrong handling of gramps id's on individual report. I44 and I440 I441 etc are all included when only I44 should be
svn: r15850
2010-09-02 21:03:53 +00:00
Rob G. Healey 81aaf690f3 NarWeb: Fixed siblings not displaying in birth year order; Bug#4079. Thanks kulath for the patch file.
svn: r15847
2010-09-01 21:12:23 +00:00
Peter Landgren 65ac980dae Date part of issue 4160. Use of option Use full dates instead of full year works again.
svn: r15846
2010-09-01 16:18:06 +00:00
Peter Landgren 6bb686ec2d Date part of issue 4160. Use of option Use full dates instead of full year works again.
svn: r15845
2010-09-01 16:17:36 +00:00
Rob G. Healey 0894288476 Stylesheet: Fixed the overrun of colors.
svn: r15842
2010-08-31 16:50:09 +00:00
Benny Malengier 8cf2831c51 bug #2402 : Line spacing for text not correct in CairoDoc
svn: r15838
2010-08-31 07:45:44 +00:00
Gerald Britton e52db3c15d Bug 0003785: Unhandled exception - Undo History - ValueError: invalid tree path
svn: r15833
2010-08-30 16:37:20 +00:00
Rob G. Healey 8edf5690a4 NarrativeWeb: Bug fix for #4203.
svn: r15827
2010-08-29 03:39:43 +00:00
Luigi Toscano 37697f48a0 Translation updates.
svn: r15826
2010-08-28 18:42:09 +00:00
Erik De Richter 9c15d167b4 updated nl translation
svn: r15823
2010-08-27 07:00:23 +00:00
Rob G. Healey bf4295b5b3 Web_Mainz.css: Fixed problem with the backgrounds not showing as they were intended. Thanks Jason Simanek.
svn: r15822
2010-08-26 23:08:26 +00:00
Doug Blank 1eb50ff295 Removed yields while cursor is open
svn: r15814
2010-08-25 04:25:08 +00:00
Jérôme Rapinat 0698a42f8e Update french translation
svn: r15809
2010-08-23 16:09:17 +00:00
Doug Blank b3929af419 Fixes to allow log cleanup
svn: r15803
2010-08-22 16:12:05 +00:00
Doug Blank 32f9ff1863 4190: Gedcom import: All my internet addresses are missing...
svn: r15797
2010-08-22 13:38:31 +00:00
Doug Blank 777c929f88 4180: Error occurred while attempting to EXPORT a GEDCOM file
svn: r15792
2010-08-22 02:08:29 +00:00
Doug Blank e39dedb453 4187: Error on GEDCOM file import
svn: r15791
2010-08-22 01:50:58 +00:00
Benny Malengier fc3ed649f1 better fix for #4166, #3955
svn: r15770
2010-08-18 21:15:49 +00:00
Jérôme Rapinat dce76ae6fe update Slovenian translation (by Bernard Banko) - What about date and rel handlers (rev15752)?
svn: r15753
2010-08-16 12:27:54 +00:00
Benny Malengier 285c5e429c 4166: Export Assistant crashes when closing or cancelling using the mouse
svn: r15739
2010-08-15 12:00:46 +00:00
Peter Landgren 724e09dfc9 Issue 4164, correction.
svn: r15722
2010-08-13 11:21:10 +00:00
Peter Landgren c09f8e4950 Issue 4164, Graphviz version=2.26.3
svn: r15716
2010-08-12 18:03:21 +00:00
Peter Landgren 4bbc5c08f3 Issue 4162, correction of box width.
svn: r15703
2010-08-11 07:02:14 +00:00
Peter Landgren a31d95bd28 Found some untranlated strings.
svn: r15695
2010-08-09 18:01:11 +00:00
Doug Blank 02dc2ce868 Name Format strings can have XML in them; now escaped- prevented valid XML from being written
svn: r15692
2010-08-09 13:17:38 +00:00
Nick Hall 3d19491f40 Sort by "surname" instead of "group as" in flat person view
svn: r15686
2010-08-08 18:33:21 +00:00
Espen Berg c7d490f469 Revised Norwegian bokmål
svn: r15676
2010-08-01 18:38:55 +00:00
Jérôme Rapinat 4690a03256 4089: 5 caracters for short months
svn: r15661
2010-07-29 08:50:10 +00:00
Jérôme Rapinat a35db4f70a 3526:Documentation for relationship module
svn: r15660
2010-07-29 08:24:05 +00:00
Jérôme Rapinat 42f5c62154 4089: Month names for Finnish (validated by Peter)
svn: r15640
2010-07-20 12:40:38 +00:00
Rob G. Healey 7e456e996c NarrativeWeb: Fix for bug #4098. Place name not retrurning proper answer.
svn: r15628
2010-07-08 22:56:11 +00:00
Nick Hall e0b02e80af Fix marker colours in Family and Note views
svn: r15614
2010-07-03 18:20:38 +00:00
Peter Landgren 51a9075613 Some unnecessary unicode conversion cleanup after fix of issue 4078.
svn: r15609
2010-06-30 07:37:55 +00:00
Peter Landgren 51abf16ddb Some unnecessary unicode conversion cleanup after fix of issue 4078.
svn: r15608
2010-06-30 07:37:09 +00:00
Peter Landgren 945f6e5b9f Some unnecessary unicode conversion cleanup after fix of issue 4078.
svn: r15607
2010-06-30 07:36:11 +00:00
Peter Landgren e7edfbdc0a Fix of issue 4078, note.get() unicode now.
svn: r15596
2010-06-28 07:28:16 +00:00
Peter Landgren 3e81d9dd88 Fix of issue 4078, note.get() unicode now.
svn: r15595
2010-06-28 07:27:24 +00:00
Peter Landgren cfbb494612 Issue 4078, notes not in utf-8.
svn: r15592
2010-06-24 07:49:14 +00:00
Nick Hall 52d5fbd042 Change sort order from D.D8 to ISO-DMS
svn: r15582
2010-06-19 23:43:59 +00:00
Nick Hall f0e156a112 4076: Fix sort order when different latitude/longitude formats are used
svn: r15580
2010-06-19 17:39:56 +00:00
Espen Berg 839b2ee4de Revised Norwegian bokmål translation
svn: r15573
2010-06-15 21:02:02 +00:00
Espen Berg 4beb29464a Revised Norwegian Nynorsk translation, by Sigmund Lorentsen
svn: r15572
2010-06-15 21:00:16 +00:00
Espen Berg c3ffffd943 Revised Norwegian bokmål translation
svn: r15571
2010-06-15 20:59:25 +00:00
Peter Landgren 15fc4fdf0f Fix of 4071 so that substitutioins variables /%N, /%s, /%S follow the spec in the manual.
svn: r15568
2010-06-15 06:32:41 +00:00
Mirko Leonhäuser 90c1f95ac5 Updated German translation
svn: r15564
2010-06-13 13:16:31 +00:00
Doug Blank 713344f2f8 Use Today for living filter date, and use basedb for determining living status
svn: r15556
2010-06-11 00:39:15 +00:00
Doug Blank 1f17db49c2 Removed some subtle checks in probably_alive to make more protective when restricting on alive status
svn: r15555
2010-06-11 00:36:49 +00:00
Peter Landgren 9e40603988 Fix of issue 4059, event type begins with non latin char.
svn: r15549
2010-06-09 20:59:16 +00:00
Peter Landgren 44f970baa8 Fix of issue 4058, list index out of range.
svn: r15548
2010-06-09 20:30:20 +00:00
Serge Noiraud dceb900362 Open Document : Issue 4018 and 4017 : random page break + top and bottom margin for paragraphs.
svn: r15543
2010-06-08 18:39:45 +00:00
Mirko Leonhäuser 1110c18ae1 Updated German translation
svn: r15537
2010-06-07 00:03:58 +00:00
Peter Landgren e3f9f97864 Fixed coding error when looking at issue 4034.
svn: r15534
2010-06-06 17:15:53 +00:00
Igal Shapira 10bd447ed5 Add 200 more hebrew translations.
svn: r15531
2010-06-05 09:28:40 +00:00
Jérôme Rapinat bc9cdd3896 #4044 #2855 #2762 fix on half relations (contribution by reinhard)
svn: r15529
2010-06-05 06:25:46 +00:00
Doug Blank a36690aa26 4036: svn15488 de.po from Branch crashes
svn: r15515
2010-05-30 14:43:08 +00:00
Peter Landgren 1db7cd2051 Final fix of issue 3935, coding problem in Windows.
svn: r15492
2010-05-28 13:18:48 +00:00
Mirko Leonhäuser 2ff12bdbcf Updated German translation
svn: r15488
2010-05-27 17:29:32 +00:00
Peter Landgren 904cb8cf16 Added info about DB version.
svn: r15486
2010-05-27 11:01:20 +00:00
Doug Blank d0d8fd4af1 4015: Addition of option of 'Page Break before Endnotes' on DDR and DAR reports
svn: r15483
2010-05-25 21:23:33 +00:00
Doug Blank 102189d77a 4012: Improvement for "What's next" report
svn: r15478
2010-05-25 13:20:33 +00:00
Doug Blank bbaec4b5ed 4012: Improvement for "What's next" report
svn: r15476
2010-05-25 10:08:51 +00:00
Rob G. Healey 2cfa9299d4 Adjusted the menus to have a little bigger font.
svn: r15474
2010-05-25 05:59:18 +00:00
Rob G. Healey 515b9525dd Bug#3932: Fixed events doubling up in class EventListPage.
svn: r15473
2010-05-25 05:57:18 +00:00
Doug Blank a393d793fc 4004, 3983, 3861, 3758: initialize_options missing argument
svn: r15468
2010-05-24 01:41:21 +00:00
Rob G. Healey aa8e6754c5 Bug#4005: Fixes the marriage/ divorce issue in anniversaries.
svn: r15450
2010-05-23 04:24:49 +00:00
Rob G. Healey bd937a1842 Bug#4001; Text in WebCal of birthday and anniversaries were being doubled up. Thanks Doug S. Blank for the patch.
svn: r15449
2010-05-23 04:06:16 +00:00
Serge Noiraud a40d4c4482 GeoView : bug #4002 console message: undefined @1: ReferenceError: Can't find variable: addcrosshair
svn: r15447
2010-05-22 07:39:22 +00:00
Rob G. Healey 7376843595 #3992: Fixed missing menus elements in stylesheet if using Web_Basic-Blue.css or Web_Visually.css. Menu elements were removed so that the user could choose between horizontal or Vertical menus.
svn: r15445
2010-05-21 23:51:51 +00:00
Rob G. Healey 8a40eeafe6 #3989: Fixed the problem of showing primary person twice in family events.
svn: r15444
2010-05-21 22:56:27 +00:00
Peter Landgren 42138f0c2e Added version info about the database.
svn: r15440
2010-05-21 14:16:13 +00:00
Igal Shapira bdfce6bf1b Updated he.po with 5 more percents - total 62.78% PO covarge
svn: r15437
2010-05-21 11:48:20 +00:00
Peter Landgren 8b463b8aae Fixed problem with non unicode path name.
svn: r15435
2010-05-21 06:23:53 +00:00
Serge Noiraud 2d8dab099b GeoView : bug #3973 ignore buttons_have_icons which avoid set_image() to change the image of a button.
gnome => 2.26 now set this to false


svn: r15432
2010-05-20 20:58:44 +00:00
Rob G. Healey 5cba134809 Fixed bug #3988; ColumnPerson on EventPages is blackened out.
svn: r15431
2010-05-20 20:56:44 +00:00
Stéphane Charette 1f41eddfea bump version number to 3.2.4
svn: r15423
2010-05-17 05:51:39 +00:00
Stéphane Charette 38c9e2800c update for 3.2.3 release
svn: r15419
2010-05-17 05:29:02 +00:00
Jérôme Rapinat eea4d3e0c9 update month names (by Łukasz Rymarczyk)
svn: r15417
2010-05-16 15:48:00 +00:00
Mirko Leonhäuser 4442a74690 Updated german translation
svn: r15415
2010-05-16 12:16:51 +00:00
Julio Sánchez 5688c351f1 Update
svn: r15414
2010-05-16 07:02:12 +00:00
Jérôme Rapinat cbc5b831b7 improvement on short sentences (narrative)
svn: r15413
2010-05-15 07:49:18 +00:00
Jérôme Rapinat c69eba2e4e typo (thanks to Bruno Coudoin)
svn: r15412
2010-05-15 07:36:16 +00:00
Nick Hall 9c6d5ea86b 3970: Append space to paragraph leader in ascii docgen
svn: r15408
2010-05-13 18:45:46 +00:00
Igal Shapira d323b5013f Adding he translations and also some previous typos fixes
svn: r15407
2010-05-13 18:17:04 +00:00
Jérôme Rapinat 953a0ac8b5 update Slovak translation (by Lubo Vasko)
svn: r15405
2010-05-13 17:46:37 +00:00
Doug Blank 1019617d0f 3958: Extremely slow gedcom import
svn: r15399
2010-05-13 11:07:38 +00:00
Jérôme Rapinat 6c1b155953 Removed some commented lines
svn: r15395
2010-05-12 17:16:32 +00:00
Erik De Richter 6a1d059e53 update nl translation
svn: r15394
2010-05-12 16:05:26 +00:00
Espen Berg 5f318a93b3 Removed some commented lines in Norwegian translation
svn: r15393
2010-05-12 08:22:58 +00:00
Stéphane Charette 03e1ef85fc update pot to get ready for 3.2.3
svn: r15387
2010-05-11 20:44:44 +00:00
Jérôme Rapinat b931b9aa9b update Polish translation (by Łukasz Rymarczyk)
svn: r15385
2010-05-11 17:33:41 +00:00
Doug Blank ff0cf470c5 svn ignore some gramps-connect files
svn: r15384
2010-05-10 00:22:25 +00:00
Doug Blank 18cebd92dd 3878: Private option and filter on Exporter
svn: r15382
2010-05-09 23:59:22 +00:00
Doug Blank 3430c34988 Protection from crashing on unknown (new) markup
svn: r15381
2010-05-09 23:51:29 +00:00
Espen Berg 380490c6a2 merged 15378 from trunk. issues 3915, 3950 and 3951 (and perhaps some more?) due to a change in pygtk appears to be fixed with this patch.
svn: r15379
2010-05-09 18:49:15 +00:00
Jérôme Rapinat 4a25ab7a25 minor improvement on unit test
svn: r15376
2010-05-09 16:44:13 +00:00
Doug Blank 8812e82f49 3943: Crashed whilst exporting to data.gramps using a person filter 'Public'; fixed many filter rules for people
svn: r15375
2010-05-09 15:19:07 +00:00
Doug Blank 96471a964b 3943: Crashed whilst exporting to data.gramps using a person filter 'Public'; fixed many filter rules for people
svn: r15373
2010-05-09 15:09:05 +00:00
Doug Blank 29ff7a386b 3640: Truncated FILE media path on Gedcom export; extended line for file to 255 characters
svn: r15371
2010-05-09 13:55:15 +00:00
Doug Blank 2c7e58e187 3943: Crashed whilst exporting to data.gramps using a person filter 'Public'; fixed many filter rules for people
svn: r15368
2010-05-09 13:42:33 +00:00
Doug Blank 1ff33d6377 3640: Truncated FILE media path on Gedcom export; extended line for file to 255 characters
svn: r15367
2010-05-09 12:57:33 +00:00
Peter Landgren 5ff5769845 Fix of issue 3935. Wrong encoding in Windows.
svn: r15359
2010-05-08 14:29:16 +00:00
Doug Blank 997cd04fe2 Fixing issues with get_privacy on non-existent objects which were probably filted out by a living proxy
svn: r15353
2010-05-07 23:45:28 +00:00
Jérôme Rapinat 45be6866ad #3936: months not localized (by maple)
svn: r15341
2010-05-06 18:39:01 +00:00
Boril Gourinov a5ac1da9fd Update of Bulgarian translation
svn: r15339
2010-05-06 15:38:27 +00:00
Peter Landgren d67271a2cf Fixed two minor spelling issues.
svn: r15335
2010-05-06 06:45:19 +00:00
Doug Blank 2fb7a5e048 3896: Narrated web fail: display_additional_images_as_gallery, not in list
svn: r15334
2010-05-06 04:46:28 +00:00
Doug Blank 5f69c64971 Ignore (and remove) style tags this version of gramps doesn't know about, rather than crash
svn: r15331
2010-05-05 23:15:22 +00:00
Jérôme Rapinat 602aa8c1bd #3918: months not localized (by jcreus)
svn: r15329
2010-05-05 16:51:29 +00:00
Doug Blank 0c270f4862 3911: Crash because of syntax error in name format; fixed having to escape double-quotes, and removed them if empty
svn: r15324
2010-05-05 03:56:18 +00:00
Peter Landgren 053efc5f75 Deleted test string.
svn: r15318
2010-05-04 11:57:12 +00:00
Peter Landgren ff705565a4 Issue 3915, error in error message.
svn: r15316
2010-05-04 11:53:48 +00:00
Peter Landgren b41598c645 Issue 3904, dirname and filename swapped.
svn: r15315
2010-05-04 11:51:59 +00:00
Jason Simanek b1d2ca5dc4 bug #0003908: fixed NarWeb footer height problem
svn: r15304
2010-05-03 12:17:47 +00:00
Doug Blank 4a8414e5c8 Protect views with no histories
svn: r15301
2010-05-02 13:48:49 +00:00
Doug Blank 6bfe45f079 3900: Export to Gedcom
svn: r15296
2010-05-01 18:38:13 +00:00
Doug Blank 38d8332970 Two fixes to address issues with living proxy and GEDCOM export
svn: r15295
2010-05-01 14:29:52 +00:00
Joan Creus 97eff89616 Updating Catalan translation
svn: r15291
2010-04-25 14:38:33 +00:00
Stéphane Charette 2ae3583c3a bump version to 3.2.3; remove libgconf as a build dependency
svn: r15288
2010-04-25 07:57:05 +00:00
288 changed files with 76766 additions and 68018 deletions
+42
View File
@@ -1,3 +1,45 @@
Version 3.2.6 -- the "So far, so good." bug fix release.
* fix memory leaks
* fix corrupted reports
* fix crash in cramplets
* fix gedcom import and export
* import speed improvements
* NarrativeWeb fixes
* prevent corrupting databases
* many translation updates
* other changes; see the changelog and the 3.2.6 roadmap: http://www.gramps-project.org/bugs/roadmap_page.php?version_id=23
Version 3.2.5 -- the "I intend to live forever" bug fix release.
* fix Gramps so it again runs with Python 2.5
* write all notes and sources to gedcom files
* cli fixes
* GeneWeb and LegacyGedcom fixes
* NarrativeWeb fixes
* memory leak fixes
* various other small fixes
* many translation updates
Version 3.2.4 -- the "Tententen" bug fix release.
* fix a crash on newer distro's after an export is finished
* styled notes cleanup and consistency improvement (nar web behaves like the pdf/html output of reports)
* newlines in styled notes are written as newlines so users can make simple lists
* many NarrativeWeb fixes
* gedcom output fixes
* non latin character fixes (mainly for windows)
* recursive filter fixes
* undo fixes
* many translation updates
Version 3.2.3 -- the "I used to eat there. Really good noodles." release.
* Bug fixes:
-> several GLADE fixes
-> several GEDCOM fixes (both export and import)
-> several crash fixes
-> encoding fix (Windows only)
-> privacy/living fixes
-> updates to NarrativeWeb and the css stylsheets
* Translation updates: bg, ca, de, es, fr, he, nb, nl, pl, sk, sv
Version 3.2.2 -- the "Mea navis aëricumbens anguillis abundat" release.
* This release is a quick fix to a problem introduced by NarrativeWeb in the previous release.
* Also includes a few small fixes and translation updates to hr and it.
+1 -1
View File
@@ -5,7 +5,7 @@ dnl May need to run automake && aclocal first
AC_PREREQ(2.57)
dnl NOTE: arg to macro below becomes the "VERSION"
AC_INIT(gramps, 3.2.2, [gramps-bugs@lists.sourceforge.net])
AC_INIT(gramps, 3.2.7, [gramps-bugs@lists.sourceforge.net])
AC_CONFIG_SRCDIR(configure.in)
AM_INIT_AUTOMAKE([1.6.3 foreign])
+1 -1
View File
@@ -2,7 +2,7 @@ Source: gramps
Section: gnome
Priority: optional
Maintainer: Stéphane Charette <stephanecharette@gmail.com>
Build-Depends-Indep: libxml-parser-perl, python-gtk2, gettext, libgconf2-dev, python-central (>= 0.5.6), python, intltool
Build-Depends-Indep: libxml-parser-perl, python-gtk2, gettext, python-central (>= 0.5.6), python, intltool
Build-Depends: debhelper (>= 7)
Standards-Version: 3.8.3
Homepage: http://www.gramps-project.org/
+11
View File
@@ -0,0 +1,11 @@
#########################################
The :class:`RelationshipCalculator` Class
#########################################
Contents:
.. automodule:: Relationship
.. autoclass:: RelationshipCalculator
:members:
:undoc-members:
:show-inheritance:
+2432 -1959
View File
File diff suppressed because it is too large Load Diff
+2791 -4865
View File
File diff suppressed because it is too large Load Diff
+4620 -6042
View File
File diff suppressed because it is too large Load Diff
+2505 -2075
View File
File diff suppressed because it is too large Load Diff
+5283 -2627
View File
File diff suppressed because it is too large Load Diff
+1876 -1520
View File
File diff suppressed because it is too large Load Diff
+1817 -1499
View File
File diff suppressed because it is too large Load Diff
+959 -882
View File
File diff suppressed because it is too large Load Diff
+2284 -1936
View File
File diff suppressed because it is too large Load Diff
+2118 -2143
View File
File diff suppressed because it is too large Load Diff
+4827 -2343
View File
File diff suppressed because it is too large Load Diff
+6225 -3726
View File
File diff suppressed because it is too large Load Diff
+3311 -3671
View File
File diff suppressed because it is too large Load Diff
+5034 -2065
View File
File diff suppressed because it is too large Load Diff
+3320 -3598
View File
File diff suppressed because it is too large Load Diff
+3456 -3153
View File
File diff suppressed because it is too large Load Diff
+1685 -1554
View File
File diff suppressed because it is too large Load Diff
+8538 -10513
View File
File diff suppressed because it is too large Load Diff
+1940 -1497
View File
File diff suppressed because it is too large Load Diff
+6 -16
View File
@@ -22,28 +22,14 @@
""" Unittest for testing POTFILES.in and Makefile contents """
# PYTHONPATH=/../src python po_test.py
import unittest
import os
import glob
from test import test_util
test_util.path_append_parent()
excluded_files = ["src/DataViews/_MapView.py",
"src/plugins/PHPGedViewConnector.py",
"src/plugins/phpgedview.glade",
"src/plugins/Ancestors.py",
"src/plugins/DesGraph.py",
"src/plugins/FtmStyleAncestors.py",
"src/plugins/FtmStyleDescendants.py",
"src/plugins/IndivSummary.py",
"src/date_test.py",
"src/plugins/CmdRef.py",
"src/plugins/DumpGenderStats.py",
"src/plugins/Eval.py",
"src/plugins/Leak.py",
"src/plugins/TestcaseGenerator.py"
]
def get_potfile(filename):
fp = open(filename, "r")
retvals = []
@@ -53,6 +39,10 @@ def get_potfile(filename):
fp.close()
return retvals
# POTFILES.skip
excluded_files = get_potfile("../POTFILES.skip")
class TestPOT(unittest.TestCase):
potfiles = get_potfile("../POTFILES.in")
count = 1
+5555 -3162
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -126,6 +126,7 @@ class Bookmarks :
self.uistate.uimanager.remove_ui(self.active)
self.uistate.uimanager.remove_action_group(self.action_group)
self.action_group = gtk.ActionGroup('Bookmarks')
self.uistate.uimanager.ensure_update()
self.active = DISABLED
def redraw_and_report_change(self):
+4 -1
View File
@@ -62,7 +62,7 @@ import gtk
#
#-------------------------------------------------------------------------
from gen.ggettext import sgettext as _
from gen.lib import Date
from gen.lib.date import Date, NextYear
import DateHandler
import const
import GrampsDisplay
@@ -150,6 +150,9 @@ class DateEdit(object):
# if text could not be parsed it is assumed invalid
if self.date_obj.get_modifier() == Date.MOD_TEXTONLY:
return ValidationError(_('Bad Date'))
elif (self.date_obj.to_calendar(calendar_name=Date.CAL_GREGORIAN) >>
NextYear()):
return ValidationError(_('Date more than one year in the future'))
def invoke_date_editor(self, obj):
"""
+4 -5
View File
@@ -3,9 +3,7 @@
# but that is not necessarily portable.
# If not using GNU make, then list all .py files individually
pkgdatadir = $(datadir)/@PACKAGE@/DateHandler
pkgdata_PYTHON = \
pkgpython_PYTHON = \
_Date_bg.py\
_Date_ca.py\
_Date_cs.py\
@@ -22,6 +20,7 @@ pkgdata_PYTHON = \
_Date_pt.py\
_Date_ru.py\
_Date_sk.py\
_Date_sl.py\
_Date_sr.py\
_Date_sv.py\
_DateDisplay.py\
@@ -31,7 +30,7 @@ pkgdata_PYTHON = \
__init__.py
pkgpyexecdir = @pkgpyexecdir@/DateHandler
pkgpythondir = @pkgpythondir@/DateHandler
pkgpythondir = $(datadir)/@PACKAGE@/DateHandler
# Clean up all the byte-compiled files
MOSTLYCLEANFILES = *pyc *pyo
@@ -49,4 +48,4 @@ docs:
pycheck:
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
pychecker $(pkgdata_PYTHON));
pychecker $(pkgpython_PYTHON));
+14 -12
View File
@@ -96,18 +96,20 @@ def julian_valid(date_tuple):
def swedish_valid(date_tuple):
""" Checks if date_tuple is a valid date in Swedish Calendar """
valid = gregorian_valid(date_tuple)
# not sure how <= and >= works with tuples???
valid_J = julian_valid(date_tuple)
date_tuple = (date_tuple[2], date_tuple[1], date_tuple[0])
if date_tuple <= (1700, 2, 28):
valid = False
if date_tuple == (1700, 2, 29): # leapday 1700 was skipped
valid = False
if date_tuple == (1712, 2, 30): # extra day was inserted 1712
valid = True
if date_tuple >= (1712, 3, 1): # back to julian
valid = False
return valid
# Swedish calendar starts as Julian 1700-03-01 and ends 1712-03-01 as Julian
if date_tuple >= (1700, 2, 29) and date_tuple < (1712, 3, 1):
if date_tuple == (1712, 2, 30): # extra day was inserted 1712, not valid Julian
return True
if valid_J:
if date_tuple == (1700, 2, 29): # leapday 1700 was skipped
return False
return True
else:
return False
else:
return False
def french_valid(date_tuple):
""" Checks if date_tuple is a valid date in French Calendar """
@@ -216,7 +218,7 @@ class DateParser(object):
"januari" : 1, "februari" : 2,
"mars" : 3, "april" : 4,
"maj" : 5, "juni" : 6,
"juli" : 7, "augisti" : 8,
"juli" : 7, "augusti" : 8,
"september" : 9, "oktober" : 10,
"november" : 11, "december" : 12,
}
+6 -7
View File
@@ -116,18 +116,17 @@ class DateDisplayCA(DateDisplay):
"""
Catalan language date display class.
"""
# TODO: Translate these month strings:
long_months = ( u"", u"January", u"February", u"March", u"April", u"May",
u"June", u"July", u"August", u"September", u"October",
u"November", u"December" )
long_months = ( u"", u"Gener", u"Febrer", u"Març", u"Abril", u"Maig",
u"Juny", u"Juliol", u"Agost", u"Setembre", u"Octubre",
u"Novembre", u"Desembre" )
short_months = ( u"", u"Jan", u"Feb", u"Mar", u"Apr", u"May", u"Jun",
u"Jul", u"Aug", u"Sep", u"Oct", u"Nov", u"Dec" )
short_months = ( u"", u"Gen", u"Feb", u"Mar", u"Abr", u"Mai", u"Jun",
u"Jul", u"Ago", u"Set", u"Oct", u"Nov", u"Des" )
calendar = (
"", u"Julià", u"Hebreu",
u"Revolucionari", u"Persa", u"Islàmic",
u"Swedish"
u"Suec"
)
_mod_str = ("", u"abans de ", u"després de ", u"cap a ", "", "", "")
+6 -7
View File
@@ -102,18 +102,17 @@ class DateDisplayCZ(DateDisplay):
"""
Czech language date display class.
"""
# TODO: Translate these month strings:
long_months = ( u"", u"January", u"February", u"March", u"April", u"May",
u"June", u"July", u"August", u"September", u"October",
u"November", u"December" )
long_months = ( u"", u"Leden", u"Únor", u"Březen", u"Duben", u"Květen",
u"Červen", u"červenec", u"Srpen", u"Září", u"Říjen",
u"Listopad", u"Prosinec" )
short_months = ( u"", u"Jan", u"Feb", u"Mar", u"Apr", u"May", u"Jun",
u"Jul", u"Aug", u"Sep", u"Oct", u"Nov", u"Dec" )
short_months = ( u"", u"Led", u"Úno", u"Bře", u"Dub", u"Kvě", u"čer",
u"Čvc", u"Srp", u"Zář", u"Říj", u"Lis", u"Pro" )
calendar = (
"", u"juliánský", u"hebrejský",
u"republikánský", u"perský", u"islámský",
u"swedish"
u"švédský"
)
_mod_str = ("", u"před ", u"po ", u"kolem ", "", "", "")
+6 -6
View File
@@ -116,13 +116,13 @@ class DateDisplayFI(DateDisplay):
"""
Finnish language date display class.
"""
# TODO: Translate these month strings:
long_months = ( u"", u"January", u"February", u"March", u"April", u"May",
u"June", u"July", u"August", u"September", u"October",
u"November", u"December" )
long_months = (u"", u"Tammikuu", u"Helmikuu", u"Maaliskuu", u"Huhtikuu",
u"Toukokuu", u"Kesäkuu", u"Heinäkuu", u"Elokuu",
u"Syyskuu", u"Lokakuu", u"Marraskuu", u"Joulukuu")
short_months = ( u"", u"Jan", u"Feb", u"Mar", u"Apr", u"May", u"Jun",
u"Jul", u"Aug", u"Sep", u"Oct", u"Nov", u"Dec" )
short_months = (u"", u"Tammi", u"Helmi", u"Maali", u"Huhti", u"Touko",
u"Kesäk", u"Heinä", u"Eloku", u"Syysk", u"Lokak", u"Marra",
u"Joulu")
calendar = ("",
u"juliaaninen",
+129 -13
View File
@@ -48,6 +48,59 @@ from _DateHandler import register_datehandler
#
#-------------------------------------------------------------------------
class DateParserLT(DateParser):
"""
Convert a text string into a Date object. If the date cannot be
converted, the text string is assigned.
"""
month_to_int = DateParser.month_to_int
# Custom months not the same as long months
month_to_int[u"sausis"] = 1
month_to_int[u"vasaris"] = 2
month_to_int[u"kovas"] = 3
month_to_int[u"balandis"] = 4
month_to_int[u"gegužė"] = 5
month_to_int[u"gegužis"] = 5
month_to_int[u"birželis"] = 6
month_to_int[u"liepa"] = 7
month_to_int[u"rugpjūtis"] = 8
month_to_int[u"rugsėjis"] = 9
month_to_int[u"spalis"] = 10
month_to_int[u"lapkritis"] = 11
month_to_int[u"gruodis"] = 12
# For not full months
month_to_int[u"saus"] = 1
month_to_int[u"vasa"] = 2
month_to_int[u"vasar"] = 2
month_to_int[u"bala"] = 4
month_to_int[u"balan"] = 4
month_to_int[u"baland"] = 4
month_to_int[u"gegu"] = 5
month_to_int[u"geguž"] = 5
month_to_int[u"birž"] = 6
month_to_int[u"birže"] = 6
month_to_int[u"biržel"] = 6
month_to_int[u"liep"] = 7
month_to_int[u"rugp"] = 8
month_to_int[u"rugpj"] = 8
month_to_int[u"rugpjū"] = 8
month_to_int[u"rugpjūt"] = 8
month_to_int[u"rugs"] = 9
month_to_int[u"rugsė"] = 9
month_to_int[u"rugsėj"] = 9
month_to_int[u"rugsėjis"] = 9
month_to_int[u"spal"] = 10
month_to_int[u"lapk"] = 11
month_to_int[u"lapkr"] = 11
month_to_int[u"lapkri"] = 11
month_to_int[u"lapkrit"] = 11
month_to_int[u"gru"] = 12
month_to_int[u"gruo"] = 12
month_to_int[u"gruod"] = 12
modifier_to_int = {
u'prieš' : Date.MOD_BEFORE,
@@ -64,11 +117,11 @@ class DateParserLT(DateParser):
u'h' : Date.CAL_HEBREW,
u'islamo' : Date.CAL_ISLAMIC,
u'i' : Date.CAL_ISLAMIC,
u'prancuzų respublikos': Date.CAL_FRENCH,
u'prancūzų respublikos': Date.CAL_FRENCH,
u'r' : Date.CAL_FRENCH,
u'persų' : Date.CAL_PERSIAN,
u'p' : Date.CAL_PERSIAN,
u'swedish' : Date.CAL_SWEDISH,
u'švedų' : Date.CAL_SWEDISH,
u's' : Date.CAL_SWEDISH,
}
@@ -92,6 +145,27 @@ class DateParserLT(DateParser):
('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
#------------------------------------------------------------------------
#
# FIXME: oficial long date format (ex, 2011 m. vasario 4 d.)
# is not recognized correctly:
# with self._text2 - day is recognized as year, year - as day
# with self._iso - month not recognized, day recognized,
# year increased by 1, date treated as double
# TODO: in _DateParser.py in _parse_calendar modify groups
#
#------------------------------------------------------------------------
#
# # gregorian and julian
#
# self._text2 = re.compile('(\d+)?\s*?m\.?\s*?%s\.?\s*((\d+)(/\d+)?)?\s*?d?\.?' %
# self._mon_str, re.IGNORECASE)
#
# self._iso = re.compile('(\d+)(/\d+)?\s*?m?\.?\s+?%s\.?\s*((\d+))?\s*?d?\.?' %
# self._mon_str, re.IGNORECASE)
#
#-------------------------------------------------------------------------
#-------------------------------------------------------------------------
#
# Lithuanian displayer
@@ -101,21 +175,25 @@ class DateDisplayLT(DateDisplay):
"""
Lithuanian language date display class.
"""
# TODO: Translate these month strings:
long_months = ( u"", u"January", u"February", u"March", u"April", u"May",
u"June", u"July", u"August", u"September", u"October",
u"November", u"December" )
long_months = ( u"", u"sausio", u"vasario", u"kovo", u"balandžio", u"gegužės",
u"birželio", u"liepos", u"rugpjūčio", u"rugsėjo", u"spalio",
u"lapkričio", u"gruodžio" )
short_months = ( u"", u"Jan", u"Feb", u"Mar", u"Apr", u"May", u"Jun",
u"Jul", u"Aug", u"Sep", u"Oct", u"Nov", u"Dec" )
long_months_vardininkas = ( u"", u"sausis", u"vasaris", u"kovas", u"balandis", u"gegužė",
u"birželis", u"liepa", u"rugpjūtis", u"rugsėjis", u"spalis",
u"lapkritis", u"gruodis" )
short_months = ( u"", u"Sau", u"Vas", u"Kov", u"Bal", u"Geg", u"Bir",
u"Lie", u"Rgp", u"Rgs", u"Spa", u"Lap", u"Grd" )
calendar = (
u"", u"julijaus",
u"hebrajų",
u"prancuzų respublikos",
u"prancūzų respublikos",
u"persų",
u"islamo",
u"swedish"
u"švedų"
)
_mod_str = (u"",
@@ -127,9 +205,47 @@ class DateDisplayLT(DateDisplay):
_qual_str = (u"", u"apytikriai ", u"apskaičiuota ")
formats = (
"YYYY-MM-DD (ISO)", "Skaitmeninis", "Mėnuo Diena, Metai",
"Mėn DD, YYYY", "Diena Mėnuo Metai", "DD Mėn YYYY"
)
"mmmm-MM-DD (ISO)", "mmmm m. mėnesio diena d.", "Mėn diena, metai")
def _display_gregorian(self, date_val):
"""
display gregorian calendar date in different format
"""
year = self._slash_year(date_val[2], date_val[3])
value = self.display_iso(date_val)
if self.format == 0:
return self.display_iso(date_val)
elif self.format == 1:
# mmmm m. mėnesio diena d. (YYYY m. month DD d.)
if date_val[0] == 0:
if date_val[1] == 0:
value = year
else:
value = "%s m. %s" % (year, self.long_months_vardininkas[date_val[1]])
else:
value = "%s m. %s %d d." % (year, self.long_months[date_val[1]],
date_val[0])
elif self.format == 2:
# MON Day, Year
if date_val[0] == 0:
if date_val[1] == 0:
value = year
else:
value = "%s %s" % (self.short_months[date_val[1]], year)
else:
value = "%s %d, %s" % (self.short_months[date_val[1]],
date_val[0], year)
if date_val[2] < 0:
return self._bce_str % value
else:
return value
def display(self, date):
"""
+51 -17
View File
@@ -20,6 +20,7 @@
#
# Polish version 2007 by Piotr Czubaszek
# Updated in 2010 by Łukasz Rymarczyk
"""
Polish-specific classes for parsing and displaying dates.
@@ -85,7 +86,31 @@ class DateParserPL(DateParser):
month_to_int[u"grudzień"] = 12
month_to_int[u"gru"] = 12
month_to_int[u"XII"] = 12
# Alternative forms: declined nouns
month_to_int[u"stycznia"] = 1
month_to_int[u"lutego"] = 2
month_to_int[u"marca"] = 3
month_to_int[u"kwietnia"] = 4
month_to_int[u"maja"] = 5
month_to_int[u"czerwca"] = 6
month_to_int[u"lipca"] = 7
month_to_int[u"sierpnia"] = 8
month_to_int[u"września"] = 9
month_to_int[u"października"] = 10
month_to_int[u"listopada"] = 11
month_to_int[u"grudnia"] = 12
# Alternative forms: nouns without polish accent letters
# (misspellings sometimes used in emails)
month_to_int[u"styczen"] = 1
month_to_int[u"kwiecien"] = 4
month_to_int[u"sierpien"] = 8
month_to_int[u"wrzesien"] = 9
month_to_int[u"pazdziernik"] = 10
month_to_int[u"grudzien"] = 12
month_to_int[u"wrzesnia"] = 9
month_to_int[u"pazdziernika"] = 10
month_to_int[u"paz"] = 10
modifier_to_int = {
u'przed' : Date.MOD_BEFORE,
u'po' : Date.MOD_AFTER,
@@ -93,26 +118,34 @@ class DateParserPL(DateParser):
u'ok.' : Date.MOD_ABOUT,
u'circa' : Date.MOD_ABOUT,
u'ca.' : Date.MOD_ABOUT,
# Alternative forms: misspellings sometimes used in emails
u'okolo' : Date.MOD_ABOUT,
u'ok' : Date.MOD_ABOUT,
}
calendar_to_int = {
u'gregoriański' : Date.CAL_GREGORIAN,
u'gregoriański' : Date.CAL_GREGORIAN,
u'greg.' : Date.CAL_GREGORIAN,
u'juliański' : Date.CAL_JULIAN,
u'juliański' : Date.CAL_JULIAN,
u'jul.' : Date.CAL_JULIAN,
u'hebrajski' : Date.CAL_HEBREW,
u'hebr.' : Date.CAL_HEBREW,
u'islamski' : Date.CAL_ISLAMIC,
u'islamski' : Date.CAL_ISLAMIC,
u'isl.' : Date.CAL_ISLAMIC,
u'francuski republikański': Date.CAL_FRENCH,
u'franc.' : Date.CAL_FRENCH,
u'perski' : Date.CAL_PERSIAN,
u'swedish' : Date.CAL_SWEDISH,
u's' : Date.CAL_SWEDISH,
u'perski' : Date.CAL_PERSIAN,
u'szwedzki' : Date.CAL_SWEDISH,
u's' : Date.CAL_SWEDISH,
# Alternative forms: nouns without polish accent letters
# (misspellings sometimes used in emails)
u'gregorianski' : Date.CAL_GREGORIAN,
u'julianski' : Date.CAL_JULIAN,
u'francuski republikanski': Date.CAL_FRENCH,
}
quality_to_int = {
u'szacowany' : Date.QUAL_ESTIMATED,
u'szacowany' : Date.QUAL_ESTIMATED,
u'szac.' : Date.QUAL_ESTIMATED,
u'obliczony' : Date.QUAL_CALCULATED,
u'obl.' : Date.QUAL_CALCULATED,
@@ -123,11 +156,12 @@ class DateParserPL(DateParser):
def init_strings(self):
DateParser.init_strings(self)
self._span = re.compile("(od)\s+(?P<start>.+)\s+(do)\s+(?P<stop>.+)",re.IGNORECASE)
self._range = re.compile(u"(między)\s+(?P<start>.+)\s+(a)\s+(?P<stop>.+)", re.IGNORECASE)
self._span = re.compile("(od)\s+(?P<start>.+)\s+(do)\s+(?P<stop>.+)", re.IGNORECASE)
# Also handle a common mistakes
self._range = re.compile(u"((?:po)?mi(?:ę|e)dzy)\s+(?P<start>.+)\s+(a)\s+(?P<stop>.+)", re.IGNORECASE)
self._text2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._mon_str,
re.IGNORECASE)
self._jtext2= re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._jmon_str,
self._jtext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._jmon_str,
re.IGNORECASE)
#-------------------------------------------------------------------------
@@ -139,13 +173,13 @@ class DateDisplayPL(DateDisplay):
"""
Polish language date display class.
"""
# TODO: Translate these month strings:
long_months = ( u"", u"January", u"February", u"March", u"April", u"May",
u"June", u"July", u"August", u"September", u"October",
u"November", u"December" )
long_months = ( u"", u"Styczeń", u"Luty", u"Marzec", u"Kwiecień", u"Maj",
u"Czerwiec", u"Lipiec", u"Sierpień", u"Wrzesień", u"Październik",
u"Listopad", u"Grudzień" )
short_months = ( u"", u"Jan", u"Feb", u"Mar", u"Apr", u"May", u"Jun",
u"Jul", u"Aug", u"Sep", u"Oct", u"Nov", u"Dec" )
short_months = ( u"", u"Sty", u"Lut", u"Mar", u"Kwi", u"Maj", u"Cze",
u"Lip", u"Sie", u"Wrz", u"Paź", u"Lis", u"Gru" )
calendar = (
"", u"juliański", u"hebrajski",
+56 -57
View File
@@ -187,13 +187,12 @@ class DateDisplayRU(DateDisplay):
"""
Russian language date display class.
"""
# TODO: Translate these month strings:
long_months = ( u"", u"January", u"February", u"March", u"April", u"May",
u"June", u"July", u"August", u"September", u"October",
u"November", u"December" )
long_months = ( u"", u"января", u"февраля", u"марта", u"апреля", u"мая",
u"июня", u"июля", u"августа", u"сентября", u"октября",
u"ноября", u"декабря" )
short_months = ( u"", u"Jan", u"Feb", u"Mar", u"Apr", u"May", u"Jun",
u"Jul", u"Aug", u"Sep", u"Oct", u"Nov", u"Dec" )
short_months = ( u"", u"янв", u"фев", u"мар", u"апр", u"мая", u"июн",
u"июл", u"авг", u"сен", u"окт", u"ноя", u"дек" )
calendar = (
u"",
@@ -202,7 +201,7 @@ class DateDisplayRU(DateDisplay):
u"республиканский",
u"персидский",
u"исламский",
u"Swedish"
u"шведский"
)
_mod_str = (
@@ -222,65 +221,65 @@ class DateDisplayRU(DateDisplay):
)
hebrew = ( u"",
u"Тишрей",
u"Хешван",
u"Кислев",
u"Тевет",
u"Шеват",
u"Адар",
u"Адар бет",
u"Нисан",
u"Ияр",
u"Сиван",
u"Таммуз",
u"Ав",
u"Элул",
u"тишрея",
u"хешвана",
u"кислева",
u"тевета",
u"шевата",
u"адара",
u"адар бета",
u"нисана",
u"ияра",
u"сивана",
u"таммуза",
u"ава",
u"элула",
)
islamic = ( u"",
u"Мухаррам",
u"Сафар",
u"Раби-аль-авваль",
u"Раби-ассани",
u"Джумада-аль-уля",
u"Джумада-аль-ахира",
u"Раджаб",
u"Шаабан",
u"Рамадан",
u"Шавваль",
u"Зуль-каада",
u"Зуль-хиджжа",
u"мухаррама",
u"сафара",
u"раби-аль-авваля",
u"раби-ассани",
u"джумада-аль-уля",
u"джумада-аль-ахира",
u"раджаба",
u"шаабана",
u"рамадана",
u"шаввальа",
u"зуль-каада",
u"зуль-хиджжа",
)
persian = ( u"",
u"Фарвардин",
u"Урдбихишт",
u"Хурдад",
u"Тир",
u"Мурдад",
u"Шахривар",
u"Михр",
u"Абан",
u"Азар",
u"Дай",
u"Бахман",
u"Исфаидармуз",
u"фарвардина",
u"урдбихишта",
u"хурдада",
u"тира",
u"мурдада",
u"шахривара",
u"михра",
u"абана",
u"азара",
u"дайа",
u"бахмана",
u"исфаидармуза",
)
french = ( u"",
u"Вандемьер",
u"Брюмер",
u"Фример",
u"Нивоз",
u"Плювиоз",
u"Вантоз",
u"Жерминаль",
u"Флореаль",
u"Прериаль",
u"Мессидор",
u"Термидор",
u"Фрюктидор",
u"Дополнит."
u"вандемьера",
u"брюмера",
u"фримера",
u"нивоза",
u"плювиоза",
u"вантоза",
u"жерминаля",
u"флореаля",
u"прериаля",
u"мессидора",
u"термидора",
u"фрюктидора",
u"дополнит."
)
def display(self, date):
+313
View File
@@ -0,0 +1,313 @@
# -*- coding: utf-8 -*-
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2004-2007 Donald N. Allingham
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Slovenian version 2010 by Bernard Banko, based on croatian one by Josip
"""
Slovenian-specific classes for parsing and displaying dates.
"""
#-------------------------------------------------------------------------
#
# Python modules
#
#-------------------------------------------------------------------------
import re
#-------------------------------------------------------------------------
#
# GRAMPS modules
#
#-------------------------------------------------------------------------
from gen.lib import Date
from _DateParser import DateParser
from _DateDisplay import DateDisplay
from _DateHandler import register_datehandler
#-------------------------------------------------------------------------
#
# Slovenian parser
#
#-------------------------------------------------------------------------
class DateParserSL(DateParser):
"""
Converts a text string into a Date object
"""
month_to_int = DateParser.month_to_int
month_to_int[u"januar"] = 1
month_to_int[u"januarja"] = 1
month_to_int[u"januarjem"] = 1
month_to_int[u"jan"] = 1
month_to_int[u"i"] = 1
month_to_int[u"februar"] = 2
month_to_int[u"februarjem"] = 2
month_to_int[u"februarja"] = 2
month_to_int[u"feb"] = 2
month_to_int[u"ii"] = 2
month_to_int[u"mar"] = 3
month_to_int[u"marcem"] = 3
month_to_int[u"marec"] = 3
month_to_int[u"marca"] = 3
month_to_int[u"iii"] = 3
month_to_int[u"apr"] = 4
month_to_int[u"april"] = 4
month_to_int[u"aprilom"] = 4
month_to_int[u"aprila"] = 4
month_to_int[u"iv"] = 4
month_to_int[u"maj"] = 5
month_to_int[u"maja"] = 5
month_to_int[u"majem"] = 5
month_to_int[u"v"] = 5
month_to_int[u"jun"] = 6
month_to_int[u"junij"] = 6
month_to_int[u"junijem"] = 6
month_to_int[u"junija"] = 6
month_to_int[u"vi"] = 6
month_to_int[u"jul"] = 7
month_to_int[u"julij"] = 7
month_to_int[u"julijem"] = 7
month_to_int[u"julija"] = 7
month_to_int[u"vii"] = 7
month_to_int[u"avg"] = 8
month_to_int[u"avgust"] = 8
month_to_int[u"avgustom"] = 8
month_to_int[u"avgusta"] = 8
month_to_int[u"viii"] = 8
month_to_int[u"sep"] = 9
month_to_int[u"sept"] = 9
month_to_int[u"september"] = 9
month_to_int[u"septembrom"] = 9
month_to_int[u"septembra"] = 9
month_to_int[u"ix"] = 9
month_to_int[u"okt"] = 10
month_to_int[u"oktober"] = 10
month_to_int[u"oktobrom"] = 10
month_to_int[u"oktobra"] = 10
month_to_int[u"x"] = 10
month_to_int[u"nov"] = 11
month_to_int[u"november"] = 11
month_to_int[u"novembrom"] = 11
month_to_int[u"novembra"] = 11
month_to_int[u"xi"] = 11
month_to_int[u"dec"] = 12
month_to_int[u"december"] = 12
month_to_int[u"decembrom"] = 12
month_to_int[u"decembra"] = 12
month_to_int[u"xii"] = 12
modifier_to_int = {
u'pred' : Date.MOD_BEFORE,
u'pr.' : Date.MOD_BEFORE,
u'po' : Date.MOD_AFTER,
u'okoli' : Date.MOD_ABOUT,
u'okrog' : Date.MOD_ABOUT,
u'okr.' : Date.MOD_ABOUT,
u'ok.' : Date.MOD_ABOUT,
u'cca.' : Date.MOD_ABOUT,
u'cca' : Date.MOD_ABOUT,
u'circa' : Date.MOD_ABOUT,
u'ca.' : Date.MOD_ABOUT,
}
calendar_to_int = {
u'gregorijanski' : Date.CAL_GREGORIAN,
u'greg.' : Date.CAL_GREGORIAN,
u'julijanski' : Date.CAL_JULIAN,
u'jul.' : Date.CAL_JULIAN,
u'hebrejski' : Date.CAL_HEBREW,
u'hebr.' : Date.CAL_HEBREW,
u'islamski' : Date.CAL_ISLAMIC,
u'isl.' : Date.CAL_ISLAMIC,
u'francoski republikanski': Date.CAL_FRENCH,
u'franc.' : Date.CAL_FRENCH,
u'perzijski' : Date.CAL_PERSIAN,
u'perz. ' : Date.CAL_PERSIAN,
u'švedski' : Date.CAL_SWEDISH,
u'šved.' : Date.CAL_SWEDISH,
}
quality_to_int = {
u'približno' : Date.QUAL_ESTIMATED,
u'pribl.' : Date.QUAL_ESTIMATED,
u'izračunano' : Date.QUAL_CALCULATED,
u'izrač.' : Date.QUAL_CALCULATED,
}
bce = ["pred našim štetjem", "pred Kristusom",
"p.n.š.", "p. n. š.", "pr.Kr.", "pr. Kr."] + DateParser.bce
def init_strings(self):
"""
compiles regular expression strings for matching dates
"""
DateParser.init_strings(self)
# match 'Day. MONTH year.' format with or without dots
self._text2 = re.compile('(\d+)?\.?\s*?%s\.?\s*((\d+)(/\d+)?)?\s*\.?$'
% self._mon_str, re.IGNORECASE)
# match Day.Month.Year.
self._numeric = re.compile("((\d+)[/\.-])?\s*((\d+)[/\.-])?\s*(\d+)\.?$")
self._span = re.compile("od\s+(?P<start>.+)\s+do\s+(?P<stop>.+)",
re.IGNORECASE)
self._range = re.compile(
u"med\s+(?P<start>.+)\s+in\s+(?P<stop>.+)",
re.IGNORECASE)
self._jtext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'\
% self._jmon_str, re.IGNORECASE)
#-------------------------------------------------------------------------
#
# Slovenian display
#
#-------------------------------------------------------------------------
class DateDisplaySL(DateDisplay):
"""
Slovenian language date display class.
"""
long_months = ( u"", u"januarja", u"februarja", u"marca",u"aprila",
u"maja", u"junija", u"julija", u"avgusta", u"septembra",
u"oktobra", u"novembra", u"decembra"
)
short_months = ( u"", u"jan", u"feb", u"mar", u"apr", u"maj", u"jun",
u"jul", u"avg", u"sep", u"okt", u"nov", u"dec"
)
calendar = (
"", u"julijanski", u"hebrejski",
u"francoski republikanski", u"perzijski", u"islamski",
u"švedski"
)
_mod_str = ("", "pred ", "po ", "okrog ", "", "", "")
_qual_str = ("", "približno ", "izračunano ")
_bce_str = "%s p.n.š."
formats = (
"ISO (leto-mm-dd)",
"številčno",
"dan. mes. leto",
"dan. mesec leto"
)
def _display_gregorian(self, date_val):
"""
display gregorian calendar date in different format
"""
year = self._slash_year(date_val[2], date_val[3])
if self.format == 0:
return self.display_iso(date_val)
elif self.format == 1:
# D. M. YYYY
if date_val[3]:
return self.display_iso(date_val)
else:
if date_val[0] == 0 and date_val[1] == 0:
value = str(date_val[2])
else:
value = self._tformat.replace('%m', str(date_val[1]))
value = value.replace('%d', str(date_val[0]))
value = value.replace('%Y', str(date_val[2]))
value = value.replace('-', '. ')
elif self.format == 2:
# D. mon. YYYY
if date_val[0] == 0:
if date_val[1] == 0:
value = year
else:
value = "%s. %s" % (self.short_months[date_val[1]], year)
else:
value = "%d. %s. %s" % (date_val[0],
self.short_months[date_val[1]], year)
else:
# D. month YYYY
if date_val[0] == 0:
if date_val[1] == 0:
value = "%s." % year
else:
value = "%s %s" % (self.long_months[date_val[1]], year)
else:
value = "%d. %s %s" % (
date_val[0],self.long_months[date_val[1]], year)
if date_val[2] < 0:
return self._bce_str % value
else:
return value
def display(self, date):
"""
Return a text string representing the date.
"""
mod = date.get_modifier()
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
qual_str = self._qual_str[qual]
if mod == Date.MOD_TEXTONLY:
return date.get_text()
elif start == Date.EMPTY:
return u""
elif mod == Date.MOD_SPAN:
d_1 = self.display_cal[cal](start)
d_2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return u"%sod %s do %s%s" % (qual_str, d_1, d_2, scal)
elif mod == Date.MOD_RANGE:
d_1 = self.display_cal[cal](start)
d_2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
date_string = u"%smed %s in %s%s" % (qual_str, d_1, d_2, scal)
date_string = date_string.replace(u"a ",u"em ") #to correct declination
date_string = date_string.replace(u"lem ",u"lom ")
date_string = date_string.replace(u"rem ",u"rom ")
date_string = date_string.replace(u"tem ",u"tom ")
return date_string
else:
text = self.display_cal[date.get_calendar()](start)
scal = self.format_extras(cal, newyear)
date_string = "%s%s%s%s" % (qual_str, self._mod_str[mod], text, scal)
return date_string
#-------------------------------------------------------------------------
#
# Register classes
#
#-------------------------------------------------------------------------
register_datehandler(("sl", "SL", "sl_SI", "slovenščina", "slovenian", "Slovenian",
"sl_SI.UTF8", "sl_SI.UTF-8", "sl_SI.utf-8", "sl_SI.utf8"),
DateParserSL, DateDisplaySL)
+1
View File
@@ -45,6 +45,7 @@ import _Date_pl
import _Date_pt
import _Date_ru
import _Date_sk
import _Date_sl
import _Date_sr
import _Date_sv
+18 -7
View File
@@ -307,19 +307,30 @@ class WarnHandler(RotateHandler):
self.button = button
button.on_clicked(self.display)
self.timer = None
self.last_line = '-1'
def emit(self, record):
if self.timer:
gobject.source_remove(self.timer)
gobject.timeout_add(180*1000, self._clear)
if self.timer is None:
#check every 3 minutes if warn button can disappear
self.timer = gobject.timeout_add(3*60*1000, self._check_clear)
RotateHandler.emit(self, record)
self.button.show()
def _check_clear(self):
new_last_line = self.get_buffer()[-1]
if self.last_line == new_last_line:
#buffer has not changed for 3 minutes, let's clear it:
self._clear()
return False
else:
self.last_line = new_last_line
return True
def _clear(self):
self.button.hide()
self.set_capacity(self._capacity)
self.last_line = '-1'
self.timer = None
return False
def display(self, obj):
obj.hide()
@@ -329,7 +340,6 @@ class WarnHandler(RotateHandler):
buf = msg.get_buffer()
for i in self.get_formatted_log():
buf.insert_at_cursor(i + '\n')
self.set_capacity(self._capacity)
top.run()
top.destroy()
@@ -413,7 +423,7 @@ class DisplayState(gen.utils.Callback):
navigation type and group.
"""
history = self.get_history(nav_type, nav_group)
return history.present()
return history.present() if history else None
def set_active(self, handle, nav_type, nav_group=0):
"""
@@ -421,7 +431,8 @@ class DisplayState(gen.utils.Callback):
the given handle.
"""
history = self.get_history(nav_type, nav_group)
history.push(handle)
if history:
history.push(handle)
def set_sensitive(self, state):
self.window.set_sensitive(state)
+26 -12
View File
@@ -3,6 +3,7 @@
#
# Copyright (C) 2004-2007 Donald N. Allingham
# Copyright (C) 2008 Brian G. Matherly
# Copyright (C) 2008 Benny Malengier
# Contribution 2009 by Brad Crittenden <brad [AT] bradcrittenden.net>
#
# This program is free software; you can redistribute it and/or modify
@@ -92,6 +93,7 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
"""
#override predefined do_xxx signal handlers
__gsignals__ = {"apply": "override", "cancel": "override",
"close": "override", "prepare": "override"}
@@ -164,6 +166,22 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
if isinstance(arg, gtk.Button) and arg.get_label() == 'gtk-go-forward':
self.forward_button = arg
def get_cancel_button(self, arg):
if isinstance(arg, gtk.HBox):
arg.forall(self._cancel_btn)
def _cancel_btn(self, arg):
if isinstance(arg, gtk.Button) and arg.get_label() == 'gtk-cancel':
self.cancel_button = arg
def get_close_button(self, arg):
if isinstance(arg, gtk.HBox):
arg.forall(self._close_btn)
def _close_btn(self, arg):
if isinstance(arg, gtk.Button) and arg.get_label() == 'gtk-close':
self.close_button = arg
def build_menu_names(self, obj):
"""Override ManagedWindow method."""
return (self.top_title, None)
@@ -382,22 +400,18 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
self.set_page_complete(page, False)
self.set_page_type(page, gtk.ASSISTANT_PAGE_SUMMARY)
def do_apply(self):
pass
def do_cancel(self):
if self.writestarted :
return True
else :
self.close()
def do_close(self):
if self.writestarted :
return True
else :
pass
else :
self.close()
def do_cancel(self):
self.do_close()
def do_prepare(self, page):
"""
The "prepare" signal is emitted when a new page is set as the
@@ -462,7 +476,7 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
#Allow for exotic error: file is still not correct
self.check_fileselect(self.chooser, show=False)
if self.get_page_complete(self.chooser) :
filename = Utils.get_unicode_path(self.chooser.get_filename())
filename = Utils.get_unicode_path_from_file_chooser(self.chooser.get_filename())
name = os.path.split(filename)[1]
folder = os.path.split(filename)[0]
confirm_text = _(
@@ -536,7 +550,7 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
def close(self, *obj) :
#clean up ManagedWindow menu, then destroy window, bring forward parent
gtk.Assistant.destroy(self)
ManagedWindow.ManagedWindow.close(self,*obj)
def get_intro_text(self):
@@ -596,7 +610,7 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
hasattr(self.option_box_instance, "no_fileselect")):
filename = ""
else:
filename = Utils.get_unicode_path(self.chooser.get_filename())
filename = Utils.get_unicode_path_from_file_chooser(self.chooser.get_filename())
config.set('paths.recent-export-dir', os.path.split(filename)[0])
ix = self.get_selected_format_index()
config.set('behavior.recent-export-type', ix)
+3 -4
View File
@@ -2,9 +2,9 @@
SUBDIRS = Rules SideBar
pkgdatadir = $(datadir)/@PACKAGE@/Filters
pkgpythondir = $(datadir)/@PACKAGE@/Filters
pkgdata_PYTHON = \
pkgpython_PYTHON = \
_FilterComboBox.py \
_FilterList.py \
_FilterMenu.py \
@@ -17,7 +17,6 @@ pkgdata_PYTHON = \
_SearchFilter.py
pkgpyexecdir = @pkgpyexecdir@/Filters
pkgpythondir = @pkgpythondir@/Filters
# Clean up all the byte-compiled files
MOSTLYCLEANFILES = *pyc *pyo
@@ -26,4 +25,4 @@ GRAMPS_PY_MODPATH = "../"
pycheck:
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
pychecker $(pkgdata_PYTHON));
pychecker $(pkgpython_PYTHON));
+4 -4
View File
@@ -1,8 +1,8 @@
# This is the src/Filters/Rules/Event level Makefile for Gramps
pkgdatadir = $(datadir)/@PACKAGE@/Filters/Rules/Event
pkgpythondir = $(datadir)/@PACKAGE@/Filters/Rules/Event
pkgdata_PYTHON = \
pkgpython_PYTHON = \
_ChangedSince.py\
_MatchesFilter.py\
_EventPrivate.py\
@@ -24,7 +24,7 @@ pkgdata_PYTHON = \
__init__.py
pkgpyexecdir = @pkgpyexecdir@/Filters/Rules/Event
pkgpythondir = @pkgpythondir@/Filters/Rules/Event
# Clean up all the byte-compiled files
MOSTLYCLEANFILES = *pyc *pyo
@@ -33,4 +33,4 @@ GRAMPS_PY_MODPATH = "../../../"
pycheck:
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
pychecker $(pkgdata_PYTHON));
pychecker $(pkgpython_PYTHON));
+3 -4
View File
@@ -1,8 +1,8 @@
# This is the src/Filters/Rules/Family level Makefile for Gramps
pkgdatadir = $(datadir)/@PACKAGE@/Filters/Rules/Family
pkgpythondir = $(datadir)/@PACKAGE@/Filters/Rules/Family
pkgdata_PYTHON = \
pkgpython_PYTHON = \
_AllFamilies.py\
_ChangedSince.py\
_FamilyPrivate.py\
@@ -38,7 +38,6 @@ pkgdata_PYTHON = \
pkgpyexecdir = @pkgpyexecdir@/Filters/Rules/Family
pkgpythondir = @pkgpythondir@/Filters/Rules/Family
# Clean up all the byte-compiled files
MOSTLYCLEANFILES = *pyc *pyo
@@ -47,4 +46,4 @@ GRAMPS_PY_MODPATH = "../../../"
pycheck:
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
pychecker $(pkgdata_PYTHON));
pychecker $(pkgpython_PYTHON));
+3 -4
View File
@@ -2,9 +2,9 @@
SUBDIRS = Person Family Event Place Source MediaObject Repository Note
pkgdatadir = $(datadir)/@PACKAGE@/Filters/Rules
pkgpythondir = $(datadir)/@PACKAGE@/Filters/Rules
pkgdata_PYTHON = \
pkgpython_PYTHON = \
_ChangedSinceBase.py\
_Everything.py\
_HasEventBase.py\
@@ -29,7 +29,6 @@ pkgdata_PYTHON = \
_HasMarkerBase.py
pkgpyexecdir = @pkgpyexecdir@/Filters/Rules
pkgpythondir = @pkgpythondir@/Filters/Rules
# Clean up all the byte-compiled files
MOSTLYCLEANFILES = *pyc *pyo
@@ -38,4 +37,4 @@ GRAMPS_PY_MODPATH = "../../"
pycheck:
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
pychecker $(pkgdata_PYTHON));
pychecker $(pkgpython_PYTHON));
+4 -4
View File
@@ -1,8 +1,8 @@
# This is the src/Filters/Rules/MediaObject level Makefile for Gramps
pkgdatadir = $(datadir)/@PACKAGE@/Filters/Rules/MediaObject
pkgpythondir = $(datadir)/@PACKAGE@/Filters/Rules/MediaObject
pkgdata_PYTHON = \
pkgpython_PYTHON = \
_AllMedia.py\
_ChangedSince.py\
_HasIdOf.py\
@@ -17,7 +17,7 @@ pkgdata_PYTHON = \
__init__.py
pkgpyexecdir = @pkgpyexecdir@/Filters/Rules/MediaObject
pkgpythondir = @pkgpythondir@/Filters/Rules/MediaObject
# Clean up all the byte-compiled files
MOSTLYCLEANFILES = *pyc *pyo
@@ -26,4 +26,4 @@ GRAMPS_PY_MODPATH = "../../../"
pycheck:
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
pychecker $(pkgdata_PYTHON));
pychecker $(pkgpython_PYTHON));
+3 -4
View File
@@ -1,8 +1,8 @@
# This is the src/Filters/Rules/Note level Makefile for Gramps
pkgdatadir = $(datadir)/@PACKAGE@/Filters/Rules/Note
pkgpythondir = $(datadir)/@PACKAGE@/Filters/Rules/Note
pkgdata_PYTHON = \
pkgpython_PYTHON = \
_AllNotes.py\
_ChangedSince.py\
_HasIdOf.py\
@@ -17,7 +17,6 @@ pkgdata_PYTHON = \
__init__.py
pkgpyexecdir = @pkgpyexecdir@/Filters/Rules/Note
pkgpythondir = @pkgpythondir@/Filters/Rules/Note
# Clean up all the byte-compiled files
MOSTLYCLEANFILES = *pyc *pyo
@@ -26,4 +25,4 @@ GRAMPS_PY_MODPATH = "../../../"
pycheck:
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
pychecker $(pkgdata_PYTHON));
pychecker $(pkgpython_PYTHON));
+1 -1
View File
@@ -57,7 +57,7 @@ class MatchesRegexpOf(Rule):
def apply(self, db, note):
""" Apply the filter """
text = unicode(note.get())
text = note.get()
if self.match.match(text) is not None:
return True
return False
@@ -49,7 +49,7 @@ class MatchesSubstringOf(Rule):
def apply(self, db, note):
""" Apply the filter """
text = unicode(note.get())
text = note.get()
if text.upper().find(self.list[0].upper()) != -1:
return True
return False
+3 -4
View File
@@ -1,8 +1,8 @@
# This is the src/Filters/Rules/Person level Makefile for Gramps
pkgdatadir = $(datadir)/@PACKAGE@/Filters/Rules/Person
pkgpythondir = $(datadir)/@PACKAGE@/Filters/Rules/Person
pkgdata_PYTHON = \
pkgpython_PYTHON = \
_ChangedSince.py\
_Disconnected.py \
_DeepRelationshipPathBetween.py \
@@ -74,7 +74,6 @@ pkgdata_PYTHON = \
__init__.py
pkgpyexecdir = @pkgpyexecdir@/Filters/Rules/Person
pkgpythondir = @pkgpythondir@/Filters/Rules/Person
# Clean up all the byte-compiled files
MOSTLYCLEANFILES = *pyc *pyo
@@ -83,4 +82,4 @@ GRAMPS_PY_MODPATH = "../../../"
pycheck:
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
pychecker $(pkgdata_PYTHON));
pychecker $(pkgpython_PYTHON));
@@ -46,10 +46,10 @@ def filter_database(db, progress, filter_name):
"""Returns a list of person handles"""
filt = MatchesFilter([filter_name])
progress.set_header('Preparing sub-filter')
filt.prepare(db)
progress.set_header(_('Preparing sub-filter'))
filt.requestprepare(db)
progress.set_header('Retrieving all sub-filter matches')
progress.set_header(_('Retrieving all sub-filter matches'))
matches = []
for handle in db.iter_person_handles():
person = db.get_person_from_handle(handle)
@@ -57,7 +57,7 @@ def filter_database(db, progress, filter_name):
matches.append(handle)
progress.step()
filt.reset()
filt.requestreset()
return matches
@@ -75,7 +75,8 @@ def get_family_handle_people(db, exclude_handle, family_handle):
possibly_add_handle(family.get_mother_handle())
for child_ref in family.get_child_ref_list():
possibly_add_handle(child_ref.get_reference_handle())
if child_ref:
possibly_add_handle(child_ref.get_reference_handle())
return people
@@ -132,7 +133,7 @@ class DeepRelationshipPathBetween(Rule):
root_person = db.get_person_from_gramps_id(root_person_id)
progress = ProgressMeter(_('Finding relationship paths'))
progress.set_pass(header=_('Evaluating people'), mode=ProgressMeter.MODE_ACTIVITY)
progress.set_pass(header=_('Evaluating people'), mode=ProgressMeter.MODE_ACTIVITY)
filter_name = self.list[1]
target_people = filter_database(db, progress, filter_name)
@@ -48,11 +48,12 @@ class FamilyWithIncompleteEvent(Rule):
def apply(self,db,person):
for family_handle in person.get_family_handle_list():
family = db.get_family_from_handle(family_handle)
for event_ref in family.get_event_ref_list():
if event_ref:
event = db.get_event_from_handle(event_ref.ref)
if not event.get_place_handle():
return True
if not event.get_date_object():
return True
if family:
for event_ref in family.get_event_ref_list():
if event_ref:
event = db.get_event_from_handle(event_ref.ref)
if not event.get_place_handle():
return True
if not event.get_date_object():
return True
return False
+3 -1
View File
@@ -58,7 +58,9 @@ class HasBirth(Rule):
def apply(self,db,person):
for event_ref in person.get_event_ref_list():
if event_ref.role != EventRoleType.PRIMARY:
if not event_ref:
continue
elif event_ref.role != EventRoleType.PRIMARY:
# Only match primaries, no witnesses
continue
event = db.get_event_from_handle(event_ref.ref)
@@ -63,19 +63,28 @@ class HasCommonAncestorWith(Rule):
def add_ancs(self, db, person):
if person.handle not in self.ancestor_cache:
self.ancestor_cache[person.handle] = set()
# We are going to compare ancestors of one person with that of
# another person; if that other person is an ancestor and itself
# has no ancestors is must be included, this is achieved by the
# little trick of making a person his own ancestor.
self.ancestor_cache[person.handle].add(person.handle)
else:
return
for fam_handle in person.get_parent_family_handle_list():
parentless_fam = True
fam = db.get_family_from_handle(fam_handle)
for par_handle in (fam.get_father_handle(), fam.get_mother_handle()):
if par_handle:
par = db.get_person_from_handle(par_handle)
if par and par.handle not in self.ancestor_cache:
self.add_ancs(db, par)
if par:
self.ancestor_cache[person.handle].add(par)
self.ancestor_cache[person.handle] |= self.ancestor_cache[par.handle]
if fam:
for par_handle in (fam.get_father_handle(), fam.get_mother_handle()):
if par_handle:
parentless_fam = False
par = db.get_person_from_handle(par_handle)
if par and par.handle not in self.ancestor_cache:
self.add_ancs(db, par)
if par:
self.ancestor_cache[person.handle] |= self.ancestor_cache[par.handle]
if parentless_fam:
self.ancestor_cache[person.handle].add(fam_handle)
def reset(self):
self.ancestor_cache = {}
@@ -41,7 +41,7 @@ from _MatchesFilter import MatchesFilter
# HasCommonAncestorWithFilterMatch
#
#-------------------------------------------------------------------------
class HasCommonAncestorWithFilterMatch(HasCommonAncestorWith,MatchesFilter):
class HasCommonAncestorWithFilterMatch(HasCommonAncestorWith):
"""Rule that checks for a person that has a common ancestor with
someone matching a filter"""
@@ -64,7 +64,7 @@ class HasCommonAncestorWithFilterMatch(HasCommonAncestorWith,MatchesFilter):
self.ancestor_cache = {}
self.with_people = []
filt = MatchesFilter(self.list)
filt.prepare(db)
filt.requestprepare(db)
for handle in db.iter_person_handles():
person = db.get_person_from_handle(handle)
if filt.apply (db, person):
@@ -73,4 +73,4 @@ class HasCommonAncestorWithFilterMatch(HasCommonAncestorWith,MatchesFilter):
#fill list of ancestor of person if not present yet
if handle not in self.ancestor_cache:
self.add_ancs(db, person)
filt.reset()
filt.requestreset()
+3 -1
View File
@@ -58,7 +58,9 @@ class HasDeath(Rule):
def apply(self,db,person):
for event_ref in person.get_event_ref_list():
if event_ref.role != EventRoleType.PRIMARY:
if not event_ref:
continue
elif event_ref.role != EventRoleType.PRIMARY:
# Only match primaries, no witnesses
continue
event = db.get_event_from_handle(event_ref.ref)
@@ -53,10 +53,13 @@ class HasFamilyAttribute(Rule):
return False
for f_id in person.get_family_handle_list():
f = db.get_family_from_handle(f_id)
if not f:
continue
for attr in f.get_attribute_list():
name_match = self.list[0] == attr.get_type()
value_match = \
attr.get_value().upper().find(self.list[1].upper()) != -1
if name_match and value_match:
return True
if attr:
name_match = self.list[0] == attr.get_type()
value_match = \
attr.get_value().upper().find(self.list[1].upper()) != -1
if name_match and value_match:
return True
return False
@@ -64,6 +64,8 @@ class HasFamilyEvent(Rule):
def apply(self,db,person):
for f_id in person.get_family_handle_list():
f = db.get_family_from_handle(f_id)
if not f:
continue
for event_ref in f.get_event_ref_list():
if not event_ref:
continue
+4 -3
View File
@@ -61,9 +61,10 @@ class HasRelationship(Rule):
# count children and look for a relationship type match
for f_id in person.get_family_handle_list():
f = db.get_family_from_handle(f_id)
cnt = cnt + len(f.get_child_ref_list())
if self.list[1] and specified_type == f.get_relationship():
rel_type = 1
if f:
cnt = cnt + len(f.get_child_ref_list())
if self.list[1] and specified_type == f.get_relationship():
rel_type = 1
# if number of relations specified
if self.list[0]:
@@ -171,7 +171,7 @@ class HasTextMatchingSubstringOf(Rule):
self.repo_map.update(
repo.handle for repo in self.db.iter_repositories()
if self.match_object(repo)
if repo and self.match_object(repo)
)
+6 -5
View File
@@ -48,9 +48,10 @@ class HaveAltFamilies(Rule):
def apply(self,db,person):
for fhandle in person.get_parent_family_handle_list():
family = db.get_family_from_handle(fhandle)
ref = [ ref for ref in family.get_child_ref_list() \
if ref.ref == person.handle]
if ref[0].get_father_relation() == ChildRefType.ADOPTED \
or ref[0].get_mother_relation() == ChildRefType.ADOPTED:
return True
if family:
ref = [ ref for ref in family.get_child_ref_list() \
if ref.ref == person.handle]
if ref[0].get_father_relation() == ChildRefType.ADOPTED \
or ref[0].get_mother_relation() == ChildRefType.ADOPTED:
return True
return False
+1 -1
View File
@@ -47,4 +47,4 @@ class HaveChildren(Rule):
def apply(self,db,person):
for family_handle in person.get_family_handle_list():
family = db.get_family_from_handle(family_handle)
return len(family.get_child_ref_list()) > 0
return (family is not None) and len(family.get_child_ref_list()) > 0
@@ -40,7 +40,7 @@ from _MatchesFilter import MatchesFilter
# IsAncestorOfFilterMatch
#
#-------------------------------------------------------------------------
class IsAncestorOfFilterMatch(IsAncestorOf,MatchesFilter):
class IsAncestorOfFilterMatch(IsAncestorOf):
"""Rule that checks for a person that is an ancestor of
someone matched by a filter"""
@@ -66,11 +66,11 @@ class IsAncestorOfFilterMatch(IsAncestorOf,MatchesFilter):
first = 1
filt = MatchesFilter(self.list[0:1])
filt.prepare(db)
filt.requestprepare(db)
for person in db.iter_people():
if filt.apply(db, person):
self.init_ancestor_list(db, person, first)
filt.reset()
filt.requestreset()
def reset(self):
self.map.clear()
@@ -32,6 +32,7 @@ from gen.ggettext import gettext as _
# GRAMPS modules
#
#-------------------------------------------------------------------------
from Filters.Rules import Rule
from _MatchesFilter import MatchesFilter
#-------------------------------------------------------------------------
@@ -39,7 +40,7 @@ from _MatchesFilter import MatchesFilter
# IsChildOfFilterMatch
#
#-------------------------------------------------------------------------
class IsChildOfFilterMatch(MatchesFilter):
class IsChildOfFilterMatch(Rule):
"""Rule that checks for a person that is a child
of someone matched by a filter"""
@@ -52,11 +53,11 @@ class IsChildOfFilterMatch(MatchesFilter):
self.db = db
self.map = set()
filt = MatchesFilter(self.list)
filt.prepare(db)
filt.requestprepare(db)
for person in db.iter_people():
if filt.apply(db, person):
self.init_list(person)
filt.reset()
filt.requestreset()
def reset(self):
self.map.clear()
@@ -69,5 +70,6 @@ class IsChildOfFilterMatch(MatchesFilter):
return
for fam_id in person.get_family_handle_list():
fam = self.db.get_family_from_handle(fam_id)
self.map.update(child_ref.ref
for child_ref in fam.get_child_ref_list())
if fam:
self.map.update(child_ref.ref
for child_ref in fam.get_child_ref_list())
@@ -83,17 +83,18 @@ class IsDescendantFamilyOf(Rule):
for family_handle in person.get_family_handle_list():
family = self.db.get_family_from_handle(family_handle)
if family:
# Add every child recursively
for child_ref in family.get_child_ref_list():
if child_ref:
self.add_matches(self.db.get_person_from_handle(child_ref.ref))
# Add every child recursively
for child_ref in family.get_child_ref_list():
self.add_matches(self.db.get_person_from_handle(child_ref.ref))
# Add spouse
if person.handle == family.get_father_handle():
spouse_handle = family.get_mother_handle()
else:
spouse_handle = family.get_father_handle()
self.matches.add(spouse_handle)
# Add spouse
if person.handle == family.get_father_handle():
spouse_handle = family.get_mother_handle()
else:
spouse_handle = family.get_father_handle()
self.matches.add(spouse_handle)
def exclude(self):
# This removes root person and his/her spouses from the matches set
@@ -101,8 +102,9 @@ class IsDescendantFamilyOf(Rule):
self.matches.remove(self.root_person.handle)
for family_handle in self.root_person.get_family_handle_list():
family = self.db.get_family_from_handle(family_handle)
if self.root_person.handle == family.get_father_handle():
spouse_handle = family.get_mother_handle()
else:
spouse_handle = family.get_father_handle()
self.matches.remove(spouse_handle)
if family:
if self.root_person.handle == family.get_father_handle():
spouse_handle = family.get_mother_handle()
else:
spouse_handle = family.get_father_handle()
self.matches.remove(spouse_handle)
@@ -40,7 +40,7 @@ from _MatchesFilter import MatchesFilter
# IsDescendantOfFilterMatch
#
#-------------------------------------------------------------------------
class IsDescendantOfFilterMatch(IsDescendantOf,MatchesFilter):
class IsDescendantOfFilterMatch(IsDescendantOf):
"""Rule that checks for a person that is a descendant
of someone matched by a filter"""
@@ -66,11 +66,11 @@ class IsDescendantOfFilterMatch(IsDescendantOf,MatchesFilter):
first = 1
filt = MatchesFilter(self.list[0:1])
filt.prepare(db)
filt.requestprepare(db)
for person in db.iter_people():
if filt.apply(db, person):
self.init_list(person, first)
filt.reset()
filt.requestreset()
def reset(self):
self.map.clear()
@@ -75,6 +75,7 @@ class IsLessThanNthGenerationDescendantOf(Rule):
for fam_id in person.get_family_handle_list():
fam = self.db.get_family_from_handle(fam_id)
for child_ref in fam.get_child_ref_list():
self.init_list(
self.db.get_person_from_handle(child_ref.ref), gen+1)
if fam:
for child_ref in fam.get_child_ref_list():
self.init_list(
self.db.get_person_from_handle(child_ref.ref), gen+1)
@@ -73,6 +73,7 @@ class IsMoreThanNthGenerationDescendantOf(Rule):
for fam_id in person.get_family_handle_list():
fam = self.db.get_family_from_handle(fam_id)
for child_ref in fam.get_child_ref_list():
self.init_list(
self.db.get_person_from_handle(child_ref.ref), gen+1)
if fam:
for child_ref in fam.get_child_ref_list():
self.init_list(
self.db.get_person_from_handle(child_ref.ref), gen+1)
@@ -32,6 +32,7 @@ from gen.ggettext import gettext as _
# GRAMPS modules
#
#-------------------------------------------------------------------------
from Filters.Rules import Rule
from _MatchesFilter import MatchesFilter
#-------------------------------------------------------------------------
@@ -39,7 +40,7 @@ from _MatchesFilter import MatchesFilter
# IsParentOfFilterMatch
#
#-------------------------------------------------------------------------
class IsParentOfFilterMatch(MatchesFilter):
class IsParentOfFilterMatch(Rule):
"""Rule that checks for a person that is a parent
of someone matched by a filter"""
@@ -52,11 +53,11 @@ class IsParentOfFilterMatch(MatchesFilter):
self.db = db
self.map = set()
filt = MatchesFilter(self.list)
filt.prepare(db)
filt.requestprepare(db)
for person in db.iter_people():
if filt.apply(db, person):
self.init_list(person)
filt.reset()
filt.requestreset()
def reset(self):
self.map.clear()
@@ -67,6 +68,9 @@ class IsParentOfFilterMatch(MatchesFilter):
def init_list(self,person):
for fam_id in person.get_parent_family_handle_list():
fam = self.db.get_family_from_handle(fam_id)
self.map.update(parent_id
for parent_id in [fam.get_father_handle(), fam.get_mother_handle()]
if parent_id)
if fam:
self.map.update(parent_id
for parent_id in [fam.get_father_handle(),
fam.get_mother_handle()]
if parent_id)
@@ -32,6 +32,7 @@ from gen.ggettext import gettext as _
# GRAMPS modules
#
#-------------------------------------------------------------------------
from Filters.Rules import Rule
from _MatchesFilter import MatchesFilter
#-------------------------------------------------------------------------
@@ -39,7 +40,7 @@ from _MatchesFilter import MatchesFilter
# IsSiblingOfFilterMatch
#
#-------------------------------------------------------------------------
class IsSiblingOfFilterMatch(MatchesFilter):
class IsSiblingOfFilterMatch(Rule):
"""Rule that checks for siblings of someone matched by a filter"""
labels = [ _('Filter name:') ]
@@ -51,11 +52,11 @@ class IsSiblingOfFilterMatch(MatchesFilter):
self.db = db
self.map = set()
filt = MatchesFilter(self.list)
filt.prepare(db)
filt.requestprepare(db)
for person in db.iter_people():
if filt.apply (db, person):
self.init_list (person)
filt.reset()
filt.requestreset()
def reset(self):
self.map.clear()
@@ -71,4 +72,4 @@ class IsSiblingOfFilterMatch(MatchesFilter):
if fam:
self.map.update(child_ref.ref
for child_ref in fam.get_child_ref_list()
if child_ref.ref != person.handle)
if child_ref and child_ref.ref != person.handle)
@@ -32,6 +32,7 @@ from gen.ggettext import gettext as _
# GRAMPS modules
#
#-------------------------------------------------------------------------
from Filters.Rules import Rule
from _MatchesFilter import MatchesFilter
#-------------------------------------------------------------------------
@@ -39,7 +40,7 @@ from _MatchesFilter import MatchesFilter
# IsSpouseOfFilterMatch
#
#-------------------------------------------------------------------------
class IsSpouseOfFilterMatch(MatchesFilter):
class IsSpouseOfFilterMatch(Rule):
"""Rule that checks for a person married to someone matching
a filter"""
@@ -50,16 +51,21 @@ class IsSpouseOfFilterMatch(MatchesFilter):
def prepare(self,db):
self.filt = MatchesFilter (self.list)
self.filt.prepare(db)
self.filt.requestprepare(db)
def apply(self,db,person):
for family_handle in person.get_family_handle_list ():
family = db.get_family_from_handle(family_handle)
for spouse_id in [family.get_father_handle (), family.get_mother_handle ()]:
if not spouse_id:
continue
if spouse_id == person.handle:
continue
if self.filt.apply (db, db.get_person_from_handle( spouse_id)):
return True
if family:
for spouse_id in [family.get_father_handle(),
family.get_mother_handle()]:
if not spouse_id:
continue
if spouse_id == person.handle:
continue
if self.filt.apply (db, db.get_person_from_handle( spouse_id)):
return True
return False
def reset(self):
self.filt.requestreset()
+1 -1
View File
@@ -48,7 +48,7 @@ class IsWitness(Rule):
def apply(self,db,person):
for event_ref in person.event_ref_list:
if event_ref.role == EventRoleType.WITNESS:
if event_ref and event_ref.role == EventRoleType.WITNESS:
# This is the witness.
# If event type was given, then check it.
if self.list[0]:
+7 -6
View File
@@ -53,10 +53,11 @@ class MissingParent(Rule):
return True
for family_handle in person.get_parent_family_handle_list():
family = db.get_family_from_handle(family_handle)
father_handle = family.get_father_handle()
mother_handle = family.get_mother_handle()
if not father_handle:
return True
if not mother_handle:
return True
if family:
father_handle = family.get_father_handle()
mother_handle = family.get_mother_handle()
if not father_handle:
return True
if not mother_handle:
return True
return False
+3 -4
View File
@@ -1,8 +1,8 @@
# This is the src/Filters/Rules/Place level Makefile for Gramps
pkgdatadir = $(datadir)/@PACKAGE@/Filters/Rules/Place
pkgpythondir = $(datadir)/@PACKAGE@/Filters/Rules/Place
pkgdata_PYTHON = \
pkgpython_PYTHON = \
_AllPlaces.py\
_ChangedSince.py\
_HasIdOf.py\
@@ -21,7 +21,6 @@ pkgdata_PYTHON = \
__init__.py
pkgpyexecdir = @pkgpyexecdir@/Filters/Rules/Place
pkgpythondir = @pkgpythondir@/Filters/Rules/Place
# Clean up all the byte-compiled files
MOSTLYCLEANFILES = *pyc *pyo
@@ -30,4 +29,4 @@ GRAMPS_PY_MODPATH = "../../../"
pycheck:
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
pychecker $(pkgdata_PYTHON));
pychecker $(pkgpython_PYTHON));
+3 -4
View File
@@ -1,8 +1,8 @@
# This is the src/Filters/Rules/Media level Makefile for Gramps
pkgdatadir = $(datadir)/@PACKAGE@/Filters/Rules/Repository
pkgpythondir = $(datadir)/@PACKAGE@/Filters/Rules/Repository
pkgdata_PYTHON = \
pkgpython_PYTHON = \
_AllRepos.py\
_ChangedSince.py\
_HasIdOf.py\
@@ -16,7 +16,6 @@ pkgdata_PYTHON = \
__init__.py
pkgpyexecdir = @pkgpyexecdir@/Filters/Rules/Repository
pkgpythondir = @pkgpythondir@/Filters/Rules/Repository
# Clean up all the byte-compiled files
MOSTLYCLEANFILES = *pyc *pyo
@@ -25,4 +24,4 @@ GRAMPS_PY_MODPATH = "../../../"
pycheck:
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
pychecker $(pkgdata_PYTHON));
pychecker $(pkgpython_PYTHON));
+3 -4
View File
@@ -1,8 +1,8 @@
# This is the src/Filters/Rules/Source level Makefile for Gramps
pkgdatadir = $(datadir)/@PACKAGE@/Filters/Rules/Source
pkgpythondir = $(datadir)/@PACKAGE@/Filters/Rules/Source
pkgdata_PYTHON = \
pkgpython_PYTHON = \
_ChangedSince.py\
_MatchesFilter.py\
_SourcePrivate.py\
@@ -19,7 +19,6 @@ pkgdata_PYTHON = \
__init__.py
pkgpyexecdir = @pkgpyexecdir@/Filters/Rules/Source
pkgpythondir = @pkgpythondir@/Filters/Rules/Source
# Clean up all the byte-compiled files
MOSTLYCLEANFILES = *pyc *pyo
@@ -28,4 +27,4 @@ GRAMPS_PY_MODPATH = "../../../"
pycheck:
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
pychecker $(pkgdata_PYTHON));
pychecker $(pkgpython_PYTHON));
+7 -2
View File
@@ -2,6 +2,7 @@
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2002-2006 Donald N. Allingham
# Copyright (C) 2010 Raphael Ackermann
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -40,7 +41,7 @@ from Filters.Rules import Rule
#
#-------------------------------------------------------------------------
class HasGrampsId(Rule):
"""Rule that checks for a person with a specific GRAMPS ID."""
"""Rule that checks for an object with a specific GRAMPS ID."""
labels = [ _('ID:') ]
name = _('Object with <Id>')
@@ -48,4 +49,8 @@ class HasGrampsId(Rule):
category = _('General filters')
def apply(self, db, obj):
return obj.gramps_id.find(self.list[0]) !=-1
"""
apply the rule on the obj.
return true if the rule passes, false otherwise.
"""
return obj.gramps_id == self.list[0]
+1 -1
View File
@@ -59,7 +59,7 @@ class HasNoteRegexBase(Rule):
notelist = person.get_note_list()
for notehandle in notelist:
note = db.get_note_from_handle(notehandle)
n = unicode(note.get())
n = note.get()
if self.match.match(n) is not None:
return True
return False
+1 -1
View File
@@ -50,7 +50,7 @@ class HasNoteSubstrBase(Rule):
notelist = person.get_note_list()
for notehandle in notelist:
note = db.get_note_from_handle(notehandle)
n = unicode(note.get())
n = note.get()
if n.upper().find(self.list[0].upper()) != -1:
return True
return False
+4 -20
View File
@@ -55,34 +55,22 @@ class MatchesFilterBase(Rule):
category = _('General filters')
def prepare(self, db):
#if Filters.SystemFilters:
#for filt in Filters.SystemFilters.get_filters(self.namespace):
#if filt.get_name() == self.list[0]:
#for rule in filt.flist:
#rule.prepare(db)
if Filters.CustomFilters:
for filt in Filters.CustomFilters.get_filters(self.namespace):
if filt.get_name() == self.list[0]:
for rule in filt.flist:
rule.prepare(db)
rule.requestprepare(db)
break
def reset(self):
#if Filters.SystemFilters:
#for filt in Filters.SystemFilters.get_filters(self.namespace):
#if filt.get_name() == self.list[0]:
#for rule in filt.flist:
#rule.reset()
if Filters.CustomFilters:
for filt in Filters.CustomFilters.get_filters(self.namespace):
if filt.get_name() == self.list[0]:
for rule in filt.flist:
rule.reset()
rule.requestreset()
break
def apply(self, db, obj):
#if Filters.SystemFilters:
#for filt in Filters.SystemFilters.get_filters(self.namespace):
#if filt.get_name() == self.list[0]:
#return filt.check(db, obj.handle)
if Filters.CustomFilters:
for filt in Filters.CustomFilters.get_filters(self.namespace):
if filt.get_name() == self.list[0]:
@@ -93,10 +81,6 @@ class MatchesFilterBase(Rule):
"""
Return the selected filter or None.
"""
#if Filters.SystemFilters:
#for filt in Filters.SystemFilters.get_filters(self.namespace):
#if filt.get_name() == self.list[0]:
#return filt
if Filters.CustomFilters:
for filt in Filters.CustomFilters.get_filters(self.namespace):
if filt.get_name() == self.list[0]:
+33
View File
@@ -43,14 +43,47 @@ class Rule(object):
def __init__(self, arg):
self.set_list(arg)
self.nrprepare = 0
def is_empty(self):
return False
def requestprepare(self, db):
"""
Request that the prepare method of the rule is executed if needed
Special: Custom Filters have fixed values, so only one instance needs to
exists during a search. It is stored in a FilterStore, and initialized
once.
As filters are can be grouped in a group
filter, we request a prepare. Only the first time prepare will be
called
"""
if self.nrprepare == 0:
self.prepare(db)
self.nrprepare += 1
def prepare(self, db):
"""prepare so the rule can be executed efficiently"""
pass
def requestreset(self):
"""
Request that the reset method of the rule is executed if possible
Special: Custom Filters have fixed values, so only one instance needs to
exists during a search. It is stored in a FilterStore, and initialized
once.
As filters are can be grouped in a group
filter, we request a reset. Only the last time reset will be
called
"""
self.nrprepare -= 1
if self.nrprepare == 0:
self.reset()
def reset(self):
"""remove no longer needed memory"""
pass
def set_list(self, arg):
+3 -4
View File
@@ -1,8 +1,8 @@
# This is the src/Filters/SideBar level Makefile for Gramps
pkgdatadir = $(datadir)/@PACKAGE@/Filters/SideBar
pkgpythondir = $(datadir)/@PACKAGE@/Filters/SideBar
pkgdata_PYTHON = \
pkgpython_PYTHON = \
_EventSidebarFilter.py \
_FamilySidebarFilter.py \
__init__.py \
@@ -15,7 +15,6 @@ pkgdata_PYTHON = \
_NoteSidebarFilter.py
pkgpyexecdir = @pkgpyexecdir@/Filters/SideBar
pkgpythondir = @pkgpythondir@/Filters/SideBar
# Clean up all the byte-compiled files
MOSTLYCLEANFILES = *pyc *pyo
@@ -24,4 +23,4 @@ GRAMPS_PY_MODPATH = "../"
pycheck:
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
pychecker $(pkgdata_PYTHON));
pychecker $(pkgpython_PYTHON));
+2 -2
View File
@@ -27,6 +27,7 @@
#-------------------------------------------------------------------------
from xml.sax import make_parser, SAXParseException
import os
import sys
#-------------------------------------------------------------------------
#
@@ -84,8 +85,7 @@ class FilterList(object):
return l.replace('"', '&quot;')
def save(self):
f = open(self.file.encode('utf-8'), 'w')
f = open(self.file.encode(sys.getfilesystemencoding()), 'w')
f.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
f.write('<filters>\n')
for namespace in self.filter_namespaces:
+6 -4
View File
@@ -61,8 +61,10 @@ class GenericFilter(object):
return False
def is_empty(self):
return len(self.flist) == 0 or \
(len(self.flist) == 1 and self.flist[0].is_empty())
return (len(self.flist) == 0 or
(len(self.flist) == 1 and
((self.flist[0].is_empty() and not self.invert) or
(not self.flist[0].is_empty() and self.invert))))
def set_logical_op(self, val):
if val in GenericFilter.logical_functions:
@@ -227,10 +229,10 @@ class GenericFilter(object):
"""
m = self.get_check_func()
for rule in self.flist:
rule.prepare(db)
rule.requestprepare(db)
res = m(db, id_list, progress, tupleind)
for rule in self.flist:
rule.reset()
rule.requestreset()
return res
class GenericFamilyFilter(GenericFilter):
+6 -2
View File
@@ -30,6 +30,7 @@ Package providing filtering framework for GRAMPS.
#
#-------------------------------------------------------------------------
from Filters._GenericFilter import GenericFilter
from Errors import FilterError
#-------------------------------------------------------------------------
#
@@ -58,8 +59,11 @@ class ParamFilter(GenericFilter):
new_list[ix] = self.param_list[ix]
rule.set_list(new_list)
for rule in self.flist:
rule.prepare(db)
if rule.nrprepare > 0:
raise FilterError, 'Custom filters can not twice be used' \
' in a parameter filter'
rule.requestprepare(db)
result = GenericFilter.apply(self, db, id_list)
for rule in self.flist:
rule.reset()
rule.requestreset()
return result
+9 -1
View File
@@ -57,7 +57,15 @@ class SearchBar(object):
self.filter_model = gtk.ListStore(gobject.TYPE_STRING,
gobject.TYPE_INT,
gobject.TYPE_BOOLEAN)
def destroy(self):
"""Unset all things that can block garbage collection.
"""
self.on_apply_callback = None
self.apply_done_callback = None
self.dbstate = None
self.uistate = None
def build( self):
self.filterbar.set_spacing(4)
self.filter_list.connect('changed', self.filter_changed)
+1 -1
View File
@@ -124,7 +124,7 @@ class GrampsAboutDialog(gtk.AboutDialog):
"Distribution: %s")
% (elipses(str(const.VERSION)),
elipses(str(sys.version).replace('\n','')),
elipses(str(bsddb.__version__)),
elipses(str(bsddb.__version__) + " " + str(bsddb.db.version())),
elipses(os.environ.get('LANG','')),
elipses(operatingsystem),
elipses(distribution)))
+3 -5
View File
@@ -3,16 +3,14 @@
# but that is not necessarily portable.
# If not using GNU make, then list all .py files individually
pkgdatadir = $(datadir)/@PACKAGE@/GrampsLocale
pkgpythondir = $(datadir)/@PACKAGE@/GrampsLocale
pkgdata_PYTHON = \
pkgpython_PYTHON = \
_GrampsLocale.py\
__init__.py
pkgpyexecdir = @pkgpyexecdir@/GrampsLocale
pkgpythondir = @pkgpythondir@/GrampsLocale
dist_pkgdata_DATA =
@@ -23,4 +21,4 @@ GRAMPS_PY_MODPATH = "../"
pycheck:
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
pychecker $(pkgdata_PYTHON));
pychecker $(pkgpython_PYTHON));
+3 -5
View File
@@ -3,9 +3,7 @@
# but that is not necessarily portable.
# If not using GNU make, then list all .py files individually
pkgdatadir = $(datadir)/@PACKAGE@/GrampsLogger
pkgdata_PYTHON = \
pkgpython_PYTHON = \
_ErrorReportAssistant.py\
_ErrorView.py\
_GtkHandler.py\
@@ -13,7 +11,7 @@ pkgdata_PYTHON = \
_RotateHandler.py
pkgpyexecdir = @pkgpyexecdir@/GrampsLogger
pkgpythondir = @pkgpythondir@/GrampsLogger
pkgpythondir = $(datadir)/@PACKAGE@/GrampsLogger
# Clean up all the byte-compiled files
MOSTLYCLEANFILES = *pyc *pyo
@@ -22,4 +20,4 @@ GRAMPS_PY_MODPATH = "../"
pycheck:
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
pychecker $(pkgdata_PYTHON));
pychecker $(pkgpython_PYTHON));
+1 -1
View File
@@ -119,7 +119,7 @@ class ErrorReportAssistant(object):
"gobject version: %s\n"\
"cairo version : %s"\
% (str(sys.version).replace('\n',''),
str(bsddb.__version__),
str(bsddb.__version__) + " " + str(bsddb.db.version()),
str(const.VERSION),
os.environ.get('LANG',''),
operatingsystem,
+8
View File
@@ -38,6 +38,13 @@ import tempfile
#
#-------------------------------------------------------------------------
#-------------------------------------------------------------------------
#
# Gramps modules
#
#-------------------------------------------------------------------------
import Utils
#-------------------------------------------------------------------------
#
# resize_to_jpeg
@@ -111,6 +118,7 @@ def resize_to_jpeg_buffer(source, width, height):
img = gtk.gdk.pixbuf_new_from_file(source)
scaled = img.scale_simple(int(width), int(height), gtk.gdk.INTERP_BILINEAR)
os.close(filed)
dest = Utils.get_unicode_path_from_env_var(dest)
scaled.save(dest, 'jpeg')
ofile = open(dest, mode='rb')
data = ofile.read()
+3
View File
@@ -151,4 +151,7 @@ class LRU(object):
"""
Empties LRU
"""
for obj, node in self.data.iteritems():
node.prev = None
node.next = None
self.data.clear()
+2 -2
View File
@@ -437,8 +437,8 @@ class ManagedWindow(object):
if object is not None:
return object
raise ValueError, (
'ManagedWindow.get_widget: "%s" widget not found in "%s"' %
(name, self._gladeobj.get_name())
'ManagedWindow.get_widget: "%s" widget not found in "%s/%s"' %
(name, self._gladeobj.dirname, self._gladeobj.filename)
)
return object
+3 -4
View File
@@ -3,16 +3,15 @@
# but that is not necessarily portable.
# If not using GNU make, then list all .py files individually
pkgdatadir = $(datadir)/@PACKAGE@/Merge
pkgpythondir = $(datadir)/@PACKAGE@/Merge
pkgdata_PYTHON = \
pkgpython_PYTHON = \
__init__.py \
_MergePerson.py \
_MergePlace.py \
_MergeSource.py
pkgpyexecdir = @pkgpyexecdir@/Merge
pkgpythondir = @pkgpythondir@/Merge
# Clean up all the byte-compiled files
MOSTLYCLEANFILES = *pyc *pyo
@@ -21,4 +20,4 @@ GRAMPS_PY_MODPATH = "../"
pycheck:
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
pychecker $(pkgdata_PYTHON));
pychecker $(pkgpython_PYTHON));
+3 -3
View File
@@ -3,9 +3,9 @@
# but that is not necessarily portable.
# If not using GNU make, then list all .py files individually
pkgdatadir = $(datadir)/@PACKAGE@/PluginUtils
pkgpythondir = $(datadir)/@PACKAGE@/PluginUtils
pkgdata_PYTHON = \
pkgpython_PYTHON = \
__init__.py\
_GuiOptions.py\
_Options.py\
@@ -23,4 +23,4 @@ GRAMPS_PY_MODPATH = "../"
pycheck:
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
pychecker $(pkgdata_PYTHON));
pychecker $(pkgpython_PYTHON));
+2 -4
View File
@@ -700,9 +700,7 @@ class GuiNoteOption(gtk.HBox):
"""
if note:
note_id = note.get_gramps_id()
txt = " ".join(note.get().split())
#String must be unicode for truncation to work for non ascii characters
txt = unicode(txt)
txt = u" ".join(note.get().split())
if len(txt) > 35:
txt = txt[:35] + "..."
txt = "%s [%s]" % (txt, note_id)
@@ -1277,7 +1275,7 @@ class GuiDestinationOption(gtk.HBox):
status = fcd.run()
if status == gtk.RESPONSE_OK:
path = Utils.get_unicode_path(fcd.get_filename())
path = Utils.get_unicode_path_from_file_chooser(fcd.get_filename())
if path:
if not self.__option.get_directory_entry() and \
not path.endswith(self.__option.get_extension()):
+7 -3
View File
@@ -537,7 +537,11 @@ class PluginStatus(ManagedWindow.ManagedWindow):
except:
callback(_("Unable to open '%s'") % path)
return
buffer = cStringIO.StringIO(fp.read())
try:
buffer = cStringIO.StringIO(fp.read())
except:
callback(_("Error in reading '%s'") % path)
return
fp.close()
# file_obj is either Zipfile or TarFile
if path.endswith(".zip") or path.endswith(".ZIP"):
@@ -601,7 +605,7 @@ class PluginStatus(ManagedWindow.ManagedWindow):
# But don't use converted filenames
# in the call to self.__pmgr.reg_plugins
# as that will break in reg_plugins.
u_gpr_file = unicode(gpr_file, sys.getfilesystemencoding())
u_gpr_file = Utils.get_unicode_path_from_file_chooser(gpr_file)
callback(" " + (_("Registered '%s'") % u_gpr_file) + "\n")
self.__pmgr.reg_plugins(gpr_file)
@@ -629,7 +633,7 @@ class PluginStatus(ManagedWindow.ManagedWindow):
status = fcd.run()
if status == gtk.RESPONSE_OK:
path = Utils.get_unicode_path(fcd.get_filename())
path = Utils.get_unicode_path_from_file_chooser(fcd.get_filename())
if path:
self.install_addon_path.set_text(path)
fcd.destroy()
+1 -1
View File
@@ -259,7 +259,7 @@ def cli_tool(dbstate, name,category,tool_class, options_class, options_str_dict)
# run tool
try:
tool_class(dbstate,None, options_class, name,None)
tool_class(dbstate, None, clt.option_class, name, None)
except:
log.error("Failed to start tool.", exc_info=True)
+2 -2
View File
@@ -187,7 +187,7 @@ class ErrorDialog(gtk.MessageDialog):
class RunDatabaseRepair(ErrorDialog):
def __init__(self, msg, parent=None):
msg = unicode(msg.decode(sys.getfilesystemencoding()))
msg = unicode(str(msg).decode(sys.getfilesystemencoding()))
ErrorDialog.__init__(
self,
_('Error detected in database'),
@@ -199,7 +199,7 @@ class RunDatabaseRepair(ErrorDialog):
class DBErrorDialog(ErrorDialog):
def __init__(self, msg, parent=None):
msg = unicode(msg.decode(sys.getfilesystemencoding()))
msg = unicode(str(msg).decode(sys.getfilesystemencoding()))
ErrorDialog.__init__(
self,
_("Low level database corruption detected"),
+3 -2
View File
@@ -1330,6 +1330,7 @@ class RelationshipCalculator(object):
all_dist=True,
all_families=True, only_birth=False)
if not data[0][0] == -1:
data = self.collapse_relations(data)
for rel in data :
rel2 = rel[2]
rel4 = rel[4]
@@ -1360,13 +1361,13 @@ class RelationshipCalculator(object):
if not rel_str in relstrings:
relstrings.append(rel_str)
if rel1:
commons[rel_str] = [rel1]
commons[rel_str] = rel1
else:
#unknown parent eg
commons[rel_str] = []
else:
if rel1:
commons[rel_str].append(rel1)
commons[rel_str].extend(rel1)
#construct the return tupply, relstrings is ordered on rank automatic
common_list = []
for rel_str in relstrings:
+3 -3
View File
@@ -1,8 +1,8 @@
# This is the src/Report level Makefile for Gramps
pkgdatadir = $(datadir)/@PACKAGE@/ReportBase
pkgpythondir = $(datadir)/@PACKAGE@/ReportBase
pkgdata_PYTHON = \
pkgpython_PYTHON = \
__init__.py\
_Bibliography.py\
_CommandLineReport.py\
@@ -32,4 +32,4 @@ GRAMPS_PY_MODPATH = "../"
pycheck:
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
pychecker $(pkgdata_PYTHON));
pychecker $(pkgpython_PYTHON));
+1 -1
View File
@@ -223,7 +223,7 @@ class Bibliography(object):
if ( self.mode & self.MODE_DATE ) == self.MODE_DATE:
date1 = source_ref1.get_date_object()
date2 = source_ref2.get_date_object()
if date1.is_equal(date2):
if not date1.is_equal(date2):
return False
if ( self.mode & self.MODE_CONF ) == self.MODE_CONF:
conf1 = source_ref1.get_confidence_level()

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