Compare commits

...

850 Commits

Author SHA1 Message Date
Paul Franklin 04a0c578db typo 2014-01-24 17:21:50 -08:00
Benny Malengier 405572cbdc add to famtree with name preset
svn: r16034
2010-10-24 13:36:26 +00:00
Benny Malengier cf943afcd5 Finish patchname tool
svn: r16033
2010-10-24 13:06:55 +00:00
Benny Malengier d7178e96d7 new patch names tool version 1
svn: r16028
2010-10-23 14:50:25 +00:00
Benny Malengier ee91b33a43 gedcom import export for new name structure
svn: r16022
2010-10-22 14:20:01 +00:00
Benny Malengier 920535e3f6 fix in name object and quickview for names
svn: r16020
2010-10-20 20:26:23 +00:00
Benny Malengier a3556d839b fix the finddupes tool for surnames
svn: r16019
2010-10-20 20:07:05 +00:00
Benny Malengier 460497f489 fix error in changed filters
svn: r16018
2010-10-20 20:06:36 +00:00
Benny Malengier 4d89c9da3b fix name capitilization tool for surnames
svn: r16017
2010-10-20 19:50:00 +00:00
Benny Malengier 7400976c96 fix filters for name search
svn: r16016
2010-10-20 19:22:40 +00:00
Benny Malengier 7b66d246b8 improvement in GUI on expand of displaytabs
svn: r16011
2010-10-18 18:44:49 +00:00
Benny Malengier ac5693c97f add toggle btn for primary to surname table
svn: r16010
2010-10-18 18:33:18 +00:00
Benny Malengier 3cfbd2482d Add origin type selector with autocompletion to surname table
svn: r16009
2010-10-18 15:49:39 +00:00
Benny Malengier ada8c30955 usibility tweak on surname columns
svn: r16008
2010-10-18 13:32:19 +00:00
Benny Malengier 4e595d0cf3 improve tab movement on surname table
svn: r16002
2010-10-16 08:06:14 +00:00
Benny Malengier 90379b7b42 continue adding to the editname GUI
svn: r15999
2010-10-15 21:42:56 +00:00
Benny Malengier b3d8e3c857 Working Edit Person dialog, no multiple surname yet.
svn: r15952
2010-10-04 16:13:38 +00:00
Benny Malengier 5013162ded A new person editor
svn: r15951
2010-10-03 11:39:47 +00:00
Benny Malengier 371205ec70 Fix surname index for autocompletion
Fix check tool and start with importgrdb upgrade


svn: r15949
2010-10-02 16:01:34 +00:00
Benny Malengier 0ca48dd811 Working xml export
svn: r15948
2010-10-02 13:38:36 +00:00
Benny Malengier 043d35a354 Working XML import with new surnames
svn: r15947
2010-10-02 12:52:14 +00:00
Benny Malengier e9599d762d Working namedisplay
Working display section in preferences


svn: r15946
2010-10-01 21:22:25 +00:00
Benny Malengier f111dcbad9 add nick and famnick
svn: r15930
2010-09-25 15:11:54 +00:00
Benny Malengier bb248fadce Good progress: * name displayer updated to new structure
* person view coded updated
               * small change in dbloader so errors can be seen


svn: r15914
2010-09-17 22:13:31 +00:00
Benny Malengier 84edfee57b updated Name object to new structure
svn: r15913
2010-09-17 13:26:36 +00:00
Benny Malengier 6011cb3ec9 some administrative cleanup
svn: r15912
2010-09-17 12:18:41 +00:00
Benny Malengier fa41e63f5a Surnamebase, surname and nameorigintype finished
svn: r15901
2010-09-14 22:07:51 +00:00
Benny Malengier 86ed7108d2 surnamebase class to inherit surname lists
svn: r15866
2010-09-09 16:54:34 +00:00
Benny Malengier 846e472e09 create a branch for gep 021 work
svn: r15865
2010-09-09 16:52:09 +00:00
Peter Landgren 7956bf8b39 Two strings made translatable.
svn: r15864
2010-09-09 14:18:56 +00:00
Benny Malengier 01afd075a7 4131: [NarWeb] No clickable link in referenced region in the photo, if person has no name
svn: r15860
2010-09-09 11:15:28 +00:00
Peter Landgren 9f9af706a4 Issue 3960, warn button disappears too soon on long GEDCOM import with errors.
svn: r15859
2010-09-06 15:19:44 +00:00
Benny Malengier 4eec493f66 3960: Import information windows disappears before import is done
svn: r15857
2010-09-06 11:29:07 +00:00
Benny Malengier 38e87b074e 4196: Error by using special filter in person view
svn: r15855
2010-09-03 22:54:40 +00:00
Rob G. Healey 3da3a57960 Stylesheets: If you find any regressions in Html style and layout, please let me know.
svn: r15851
2010-09-02 23:43:33 +00:00
Serge Noiraud 91856cfb1f GeoView : new feature #4210: Ability to change the number of places per page in preferences.
svn: r15849
2010-09-02 20:23:21 +00:00
Serge Noiraud 0e928d6b81 GeoView : adapt geoview to the new gui. Resizing problem. It currently works correctly with gecko.
webkit doesn't work in a Hpane widget ( filter, status bar, ... )


svn: r15848
2010-09-02 17:05:00 +00:00
Benny Malengier e9388c3ff7 2786: Add quick undo/redo to all fields
This adds:
  * undoentry instead of entry for all normal entry fields in glade files
  * have maskedentry based on undoentry, so that date changes can be undone :-)
To do: entry fields added in py code is not checked.


svn: r15844
2010-08-31 21:11:59 +00:00
Benny Malengier 19950c616d undo support for words with unicode symbols of length 2 in the buffer
svn: r15843
2010-08-31 19:33:59 +00:00
Nick Hall fa6014f4c0 Connect to tags-changed signal when initialised
svn: r15841
2010-08-31 10:45:57 +00:00
Benny Malengier 5d4246b0a7 comboentry in toolbar determines optimal width automatically
svn: r15840
2010-08-31 10:00:46 +00:00
Benny Malengier e24b184508 bug #2402 : Line spacing for text not correct in CairoDoc
svn: r15839
2010-08-31 07:52:11 +00:00
Benny Malengier c2dc10471c * missing installation stuff for undo/redo
*  create a first undo gtk entry field: family name in person editor


svn: r15837
2010-08-30 23:00:28 +00:00
Benny Malengier fe311affb2 fix inheritance bug in undo/redo code
svn: r15836
2010-08-30 21:49:03 +00:00
Benny Malengier a1ec3e54b8 limit the size of the undo buffer to 700
svn: r15835
2010-08-30 20:01:13 +00:00
Benny Malengier 3fed4b1951 redesign undo/redo for styled notes, much better now
svn: r15834
2010-08-30 19:35:51 +00:00
Nick Hall a151bafaff Fix database upgrade
svn: r15832
2010-08-30 10:36:58 +00:00
Doug Blank 5c30db0739 Will not start gramps if the config option is used to show a value; changed the format of the output to make it easier to read/copy-paste
svn: r15831
2010-08-30 01:14:38 +00:00
Nick Hall bf8146b9d1 GEPS 011: Tagging
svn: r15830
2010-08-29 18:36:42 +00:00
Nick Hall 5d3480997b Set properties for src/plugins/webstuff
svn: r15829
2010-08-29 17:29:23 +00:00
Jérôme Rapinat 35df75718f copy somerights20.gif to webstuff
svn: r15828
2010-08-29 06:36:19 +00:00
Doug Blank 2a114aa6c0 Changes for version and config
svn: r15825
2010-08-28 11:23:27 +00:00
Serge Noiraud b28e9950a0 GeoView : bug 4168 : avoid parenthesis in const.ROOT_DIR
svn: r15824
2010-08-27 10:22:37 +00:00
Rob G. Healey b0b620df9c Web_Mainz.css: Fixed problem with the backgrounds not showing as they were intended. Thanks Jason Simanek.
svn: r15821
2010-08-26 23:07:48 +00:00
Doug Blank 3c151885ee Web search right-click for note editor
svn: r15820
2010-08-26 14:00:27 +00:00
Doug Blank 5b975f93cc Allow config setting value to be DEFAULT which will reset value
svn: r15819
2010-08-26 13:57:00 +00:00
Doug Blank 1d5bcbf423 Do not display missing locale dir if in english
svn: r15818
2010-08-26 13:15:09 +00:00
Doug Blank 5ed53f5e9c Changed --settings to --version to be more compatible with other programs; added --config=[section.setting[:value]] to see/set config value(s)
svn: r15817
2010-08-26 12:17:00 +00:00
Doug Blank 7c110d15b8 Added plugin.depends_on = ['plugin_id', ...] for plugin.load_on_reg plugins
svn: r15816
2010-08-25 13:30:59 +00:00
Doug Blank 69b845c388 Census report made this value too big (it tried to make more than 50 columns) even though the US 1880 census only has about 24.
svn: r15815
2010-08-25 05:07:44 +00:00
Doug Blank 1f9eee3d92 Don't load a GENERAL lib if hidden
svn: r15813
2010-08-25 02:45:23 +00:00
Doug Blank 47e3d110d5 Added a new addon type 'WebConnect' which defines a method to lookup data on websites
svn: r15812
2010-08-25 01:17:22 +00:00
Nick Hall ea90894193 Added documentation to ListModel. Changes to make editable and callback parameters more consistent.
svn: r15811
2010-08-24 23:43:42 +00:00
Doug Blank b11e4558b8 Added log, and db cursor close error handler
svn: r15810
2010-08-24 11:54:43 +00:00
Doug Blank bdd07988c6 Added method for gramps to handle url requests
svn: r15808
2010-08-23 14:06:41 +00:00
Doug Blank ecef5c1d26 Return the actual page object
svn: r15807
2010-08-23 14:04:54 +00:00
Doug Blank b72617c5aa Added external API for category_manager functions: .get_categories(), .get_category(category), and .get_category_page(category)
svn: r15806
2010-08-23 13:20:46 +00:00
Doug Blank 19765f80e7 Added a category_manager for pages to talk to other pages
svn: r15805
2010-08-23 13:18:56 +00:00
Doug Blank ee75d5ca5f Rearranged patterns that are searched for; match longer ones first
svn: r15804
2010-08-22 21:25:53 +00:00
Doug Blank 638ac9c281 FilterList needs to handle all namespaces
svn: r15802
2010-08-22 15:47:36 +00:00
Doug Blank 5646fecffc typo
svn: r15801
2010-08-22 15:39:53 +00:00
Doug Blank 5583ab113e Filter speed ups, and hook for filter plugins
svn: r15800
2010-08-22 15:22:56 +00:00
Doug Blank ac7210d0ba Removed for now; too slow
svn: r15799
2010-08-22 14:28:35 +00:00
Doug Blank acf10439e0 Bring up to date with gramps32 version
svn: r15798
2010-08-22 13:52:56 +00:00
Doug Blank 1a6da114fc 4190: Gedcom import: All my internet addresses are missing...
svn: r15796
2010-08-22 13:35:51 +00:00
Doug Blank 7151e07d3a Rewrote autoremove flag workaround
svn: r15795
2010-08-22 06:33:06 +00:00
Doug Blank c14fbafd25 Doesn't backup with slashes in filename
svn: r15794
2010-08-22 04:53:52 +00:00
Doug Blank c3c1fb6bb6 Filters can now be added through plugins register(GENERAL, category='Filter: Person', etc)
svn: r15793
2010-08-22 02:37:07 +00:00
Doug Blank 00f738f953 Don't evaluate callable data returned from the plugin API
svn: r15790
2010-08-22 01:00:16 +00:00
Doug Blank b62c42d85e Removed unnecessary code
svn: r15789
2010-08-21 23:44:13 +00:00
Doug Blank 8e3aad341b Refactored copy/paste to PageView for general use
svn: r15788
2010-08-21 23:10:49 +00:00
Doug Blank db6f649969 Major refactor; also added valid indicator in list, dbid, and dbname
svn: r15787
2010-08-21 20:22:06 +00:00
Doug Blank fcef732f93 Added dbid and dbname to databases; id is the unique dir name, and name is the assigned name stored in text file
svn: r15786
2010-08-21 20:20:34 +00:00
Doug Blank 1b884b129d Protection from a bad child drop
svn: r15785
2010-08-21 20:18:42 +00:00
Doug Blank 01e354f18d Make sure newvalue is a int(fraction * 100)
svn: r15784
2010-08-21 12:31:31 +00:00
Rob G. Healey bb46e8798b A little bit of formatting and spacing.
svn: r15783
2010-08-21 05:40:21 +00:00
Doug Blank cab9169019 Refactor make_filter to make more reusable
svn: r15782
2010-08-20 10:37:18 +00:00
Doug Blank 1a2c3be090 Added progress bar to quick backup
svn: r15781
2010-08-20 04:40:51 +00:00
Rob G. Healey a3402ab728 Added ancestor tree style sheet.
svn: r15780
2010-08-20 02:34:43 +00:00
Rob G. Healey 9dfba96783 NarrativeWeb: Added ancestortree.css only if there is ancestor tree being built? Style sheets: removed ancestor tree section from the style sheets. Changes to Ancestor tree, thanks Jakim Friant.
svn: r15779
2010-08-20 02:33:26 +00:00
Doug Blank 88667a7c5e Reset buttons when we reset the buffer
svn: r15778
2010-08-19 23:32:36 +00:00
Benny Malengier 63d5ea6cb6 undo and redo with correct style in noteeditor
svn: r15777
2010-08-19 16:10:53 +00:00
Doug Blank 5ad5cb17ae DEBUG = False
svn: r15776
2010-08-19 15:48:09 +00:00
Doug Blank 19e662fd97 Refactor make_filter for use in other parts of gramps
svn: r15775
2010-08-19 14:45:49 +00:00
Doug Blank b253edb7dd Typo medu -> menu
svn: r15774
2010-08-19 12:12:50 +00:00
Doug Blank 7758caa4e3 Fixed one issue with multi-select and drop on self; one issue remains: copies data on a self multi drop
svn: r15773
2010-08-19 04:08:07 +00:00
Doug Blank 88a4bbb926 Do not show previously notified addons
svn: r15772
2010-08-19 01:04:10 +00:00
Doug Blank 0fa7b97cf9 Something is wrong; email sent to Nick
svn: r15771
2010-08-19 00:43:20 +00:00
Benny Malengier 72af4a2483 better fix for #4166, #3955, remove extra line
svn: r15769
2010-08-18 21:14:22 +00:00
Benny Malengier b0bf67f436 better fix for #4166, #3955
svn: r15768
2010-08-18 21:11:09 +00:00
Doug Blank a74d5151f8 Clipboards do not allow duplicates
svn: r15767
2010-08-18 13:28:37 +00:00
Doug Blank e7d365a5d7 Added selected_handles() to navigation views for compatibility with listviews
svn: r15766
2010-08-18 13:20:52 +00:00
Doug Blank c9f82192b1 Added selected_handles() to navigation views for compatibility with listviews
svn: r15765
2010-08-18 12:37:17 +00:00
Doug Blank f3c5254bbe Moving to Django 1.2; changes to work with css plugin
svn: r15764
2010-08-18 02:36:26 +00:00
Nick Hall f6f7e6c870 Add color column type and fix toggle in ListModel
svn: r15763
2010-08-17 17:43:44 +00:00
Doug Blank 726da689c6 Revised undo/redo for different versions of gtk
svn: r15762
2010-08-17 14:18:04 +00:00
Jérôme Rapinat 5ae9f75ded Slovenian Date et Relationships handlers (by Bernard Banko)
svn: r15761
2010-08-17 08:16:24 +00:00
Rob G. Healey 500c0d6bf1 updateaddons: fixed typo to remove the the Gramps website to just the Gramps...
svn: r15760
2010-08-17 07:00:28 +00:00
Doug Blank d86759b5a7 Added UndoableBuffer to text gramplets; fixed an issue in recognizing keypresses accurately; rewrote keypress handler
svn: r15759
2010-08-17 06:39:10 +00:00
Doug Blank 3154f970ac Typos in code
svn: r15758
2010-08-17 05:45:26 +00:00
Doug Blank d441154d3a 4177: Needed usability improvements to addon update window
svn: r15757
2010-08-17 05:09:01 +00:00
Doug Blank fa09584578 4178: undo on note editor goes back to no text; added a reset method to styled text buffer and editor
svn: r15756
2010-08-16 23:25:07 +00:00
Rob G. Healey 21651501ca Final piece of moving Mapstraction stylesheet into src/plugins/webstuff/css .
svn: r15755
2010-08-16 22:18:09 +00:00
Doug Blank 2789f19366 Hook up undoable inserts
svn: r15754
2010-08-16 16:27:42 +00:00
Jérôme Rapinat 94f0d17c8b update Slovenian files
svn: r15752
2010-08-16 12:23:56 +00:00
Doug Blank 6a26f7b873 Added UndoableBuffer for notes that allows undo (control+z) and redo (control+shift+z)
svn: r15751
2010-08-16 11:44:26 +00:00
Doug Blank 14a5f9a1b8 New MultiTreeView to allow left-click to drag a multi-selected group
svn: r15750
2010-08-16 11:20:45 +00:00
Doug Blank 41931ba9c0 Allow lang_SUBTYPE formats; fixed an error when no network
svn: r15749
2010-08-16 04:30:17 +00:00
Doug Blank 918b052ebb Needed a DATABASE_ROUTERS default
svn: r15748
2010-08-16 03:31:40 +00:00
Rob G. Healey ddf488c8b0 Moved src/data/Mapstraction.css over to sex/plugins/webstuff/css with the other ones. Updated src/data/Makefile.am to reflect the move.
svn: r15747
2010-08-16 03:01:36 +00:00
Doug Blank 838ba4cf05 Moved data/*.css to plugins/webstuff/css/
svn: r15746
2010-08-16 01:31:34 +00:00
Doug Blank 280e904d80 Remove duplicate css files
svn: r15745
2010-08-16 01:28:48 +00:00
Doug Blank 6224028253 Select all/none for addon updates
svn: r15744
2010-08-16 01:27:14 +00:00
Doug Blank 04d60b30ff Fixes to work under Django 1.2
svn: r15743
2010-08-16 00:16:16 +00:00
Rob G. Healey 9492b706b6 NarrativeWeb: Fixed problem on DownloadPage. Style sheets: Removed elements from DownloadPage. Download page and files now share the same copyright license as the remaining of the pages.
svn: r15742
2010-08-15 23:43:08 +00:00
Doug Blank 00aaa7197a Fixed bug preventing control+shift+b key presses from working in styled text editor
svn: r15741
2010-08-15 20:20:39 +00:00
Doug Blank 5f7d9daaef Fixed bug preventing control+b etc. key presses from working in styled text editor
svn: r15740
2010-08-15 13:30:14 +00:00
Benny Malengier 02c68684d6 4166: Export Assistant crashes when closing or cancelling using the mouse
svn: r15738
2010-08-15 11:59:23 +00:00
Jérôme Rapinat ee9649f5b3 update french translation
svn: r15737
2010-08-15 08:56:24 +00:00
Doug Blank bc6b0e6fdf Control+c, Control+v are now handled properly by nav views and otherwise
svn: r15736
2010-08-14 19:06:47 +00:00
Doug Blank 4617fa8f50 Defaults to check once a week, everything, enable logging
svn: r15735
2010-08-14 18:16:10 +00:00
Doug Blank 7109925ffb Have update select default to True
svn: r15734
2010-08-14 15:43:50 +00:00
Jérôme Rapinat c4b472b9c5 run intltool-update -m
svn: r15733
2010-08-14 15:32:30 +00:00
Doug Blank 5ea17d75bc Allow multiple objects to be copied
svn: r15732
2010-08-14 09:20:20 +00:00
Doug Blank 64a532d38d minor tweak in position
svn: r15731
2010-08-14 09:18:41 +00:00
Doug Blank be131c368d added updateaddons.glade to system files
svn: r15730
2010-08-14 00:41:13 +00:00
Doug Blank 5ad0aa48dc Now can download selections
svn: r15729
2010-08-14 00:20:12 +00:00
Doug Blank 40820ea6ea Fixed three errors in ListModel
svn: r15728
2010-08-13 23:35:53 +00:00
Doug Blank 3551fe851a Added option of what addons to check (new, updated, or both)
svn: r15727
2010-08-13 21:44:21 +00:00
Serge Noiraud f3c614add6 GeoView : Resizing not done the first time we load a page.
Centering not always correct.


svn: r15726
2010-08-13 17:57:40 +00:00
Doug Blank 6a781138fe Bring dialog box, if updates available (doesn't update them yet)
svn: r15725
2010-08-13 14:32:09 +00:00
Doug Blank f3fb0b9d2e Checks for open network connection; get listing file in proper language
svn: r15724
2010-08-13 13:31:00 +00:00
Peter Landgren e7c741a2a7 Issue 4164, correction.
svn: r15723
2010-08-13 11:23:33 +00:00
Doug Blank 7c6cba4fae New check for updated addons
svn: r15721
2010-08-13 06:42:14 +00:00
Doug Blank f9af188191 Perference for checking (and currently updates) addons
svn: r15720
2010-08-13 06:18:11 +00:00
Doug Blank 506f9dc643 Refactor to move load_addon_file out of gui code
svn: r15719
2010-08-13 04:19:16 +00:00
Doug Blank 99101d2166 Force an addon translation to be in a given language(s)
svn: r15718
2010-08-13 03:55:54 +00:00
Peter Landgren 534fac7b93 Issue 4164, Graphviz version=2.26.3
svn: r15717
2010-08-12 18:27:46 +00:00
Peter Landgren 418d7dd39f Fixed a typo.
svn: r15715
2010-08-12 07:10:42 +00:00
Peter Landgren 6b595c534e Just an update.
svn: r15714
2010-08-12 07:02:07 +00:00
Peter Landgren f378a193e0 Date part of issue 4160. Use of option Use full dates instead of full year works again.
svn: r15713
2010-08-12 06:02:16 +00:00
Peter Landgren b3e313d5ce Date part of issue 4160. Use of option Use full dates instead of full year works again.
svn: r15712
2010-08-12 05:59:17 +00:00
Doug Blank 2fc5096d23 CSS and web resources are now a plugin
svn: r15711
2010-08-12 05:26:45 +00:00
Doug Blank e9ad85a05c Added missing merge files and new webstuff
svn: r15710
2010-08-12 05:21:21 +00:00
Rob G. Healey 113b2a0214 Stylesheet: Removed the light blue background on the tables cells.
svn: r15709
2010-08-12 02:28:15 +00:00
Rob G. Healey 264d6145be NarrativeWeb: changed the name of the navigation menus stylesheet to match other stylesheet naming.
svn: r15708
2010-08-12 02:26:26 +00:00
Doug Blank 961c1e4ca9 Forgot to include navigation web pages
svn: r15707
2010-08-11 21:33:12 +00:00
Serge Noiraud 5870e0a686 GeoView : remove completely mapstraction v1.
svn: r15706
2010-08-11 18:21:26 +00:00
Serge Noiraud b2886e3dad GeoView : Some cleaning. Some corrections with googlev3 crosshair.
Resizing now ok with a new crosshair implementation for googlev3.


svn: r15705
2010-08-11 18:00:18 +00:00
Doug Blank 864c79e446 First step in breaking up NarrativeWeb into plugins; please test
svn: r15704
2010-08-11 14:11:35 +00:00
Peter Landgren 919f632993 Issue 4162, correction of box width.
svn: r15702
2010-08-11 07:00:14 +00:00
Doug Blank 0199cd7da5 Enhanced GENERAL plugins for flexible API: added data and process to GENERAL plugindata, more details at http://www.gramps-project.org/wiki/index.php?title=Addons_development#General_Plugins
svn: r15701
2010-08-11 05:42:46 +00:00
Doug Blank abd7b09450 Added _%s_ for surrounding name parts, such as _Call_
svn: r15700
2010-08-10 15:37:12 +00:00
Doug Blank f55cd42926 Allow GENERAL plugins to have category, and more flexibility
svn: r15699
2010-08-10 13:14:09 +00:00
Doug Blank aca9b9cb5c Moved all behavior from clipboard gramplet to clipboard, which they now share
svn: r15698
2010-08-09 21:36:21 +00:00
Doug Blank e3cd87484c Added copy and paste to all views; gramplet view needs work
svn: r15697
2010-08-09 20:51:54 +00:00
Doug Blank 981cda7c19 Refector: moved some class methods to module functions
svn: r15696
2010-08-09 20:04:48 +00:00
Peter Landgren 634453708f Issue 4124. See also Wiki for substitution keywords.
svn: r15694
2010-08-09 17:44:37 +00:00
Doug Blank 315d7621c1 4159: New Backup option creates invalid file when media is included
svn: r15693
2010-08-09 13:51:32 +00:00
Doug Blank 77fa72cc35 Name Format strings can have XML in them; now escaped- prevented valid XML from being written
svn: r15691
2010-08-09 13:02:06 +00:00
Rob G. Healey b0060b7542 NarrayiveWeb: More tweaking of _create_family_map().
svn: r15690
2010-08-09 06:56:47 +00:00
Doug Blank 791ab064f8 Renamed GrampsCursor to BsddbBaseCursor
svn: r15689
2010-08-08 22:06:54 +00:00
Nick Hall c0944d5df0 Tidy up warnings and change error to warning in flat model
svn: r15688
2010-08-08 18:59:09 +00:00
Nick Hall 0fb8ef6da4 Sort by "surname" instead of "group as" in flat person view
svn: r15687
2010-08-08 18:33:44 +00:00
Doug Blank 8455278a83 Update gramps-connect to use new reg_plugin params
svn: r15685
2010-08-08 13:16:23 +00:00
Doug Blank c15fdb15c4 No need to crash, just warn, on dup nodes
svn: r15684
2010-08-08 13:15:36 +00:00
Doug Blank 691a52295f Fixed issue in showing database repair message
svn: r15683
2010-08-08 13:14:45 +00:00
Rob G. Healey b64439c263 Adjusted PlaceListPage elements to make it fit correctly.
svn: r15682
2010-08-05 18:04:53 +00:00
Doug Blank db09dcc6bf Added a new method to work around gramps' use of show_all: hidden_widgets
svn: r15681
2010-08-03 00:57:50 +00:00
Nick Hall 27ab4c5484 Raise error if duplicate handle added to model
svn: r15680
2010-08-02 14:12:12 +00:00
Doug Blank e0df78182c Solved the gramplet popup menu not working
svn: r15679
2010-08-02 05:23:35 +00:00
Espen Berg d548494f9a Revised Norwegian translation
svn: r15678
2010-08-01 18:52:05 +00:00
Espen Berg 4a2cd6aeac Revised Norwegian translation
svn: r15677
2010-08-01 18:51:37 +00:00
Nick Hall 2bece278c0 Fix error handling when merging people
svn: r15675
2010-08-01 18:18:29 +00:00
Doug Blank 12e174b7f3 3366: Assistant for new users
svn: r15674
2010-07-31 17:19:37 +00:00
Doug Blank dc0d9511a3 Only use iter_items if you are sure it is used just once; fixed issue duplicating places
svn: r15673
2010-07-31 15:55:56 +00:00
Doug Blank 7ea1f71083 Removed debugging trace
svn: r15672
2010-07-31 15:42:42 +00:00
Doug Blank 59dca4e3ea 3502: Extend CSV import to include additional fields; added source title to export
svn: r15671
2010-07-31 15:18:41 +00:00
Doug Blank e4bb905303 Added is_type('Name'), is_burial(), and is_baptism()
svn: r15670
2010-07-31 15:17:23 +00:00
Doug Blank 9ddb7990f5 Added family type drag objects
svn: r15669
2010-07-31 02:11:47 +00:00
Nick Hall e1f34d3ebe Add new merge functionality to tree views (see r15645)
svn: r15668
2010-07-30 18:13:06 +00:00
Rob G. Healey 0c6b7405c2 Complete my issue with the zoom level of the maps.
svn: r15667
2010-07-30 05:35:17 +00:00
Doug Blank 6175654510 Fixed right-click with no selection issue
svn: r15666
2010-07-30 05:13:32 +00:00
Doug Blank 77e5629012 Added ability for multiple selections from Simple Tables of Quick Views to be dropped on Clipboards
svn: r15665
2010-07-30 01:18:49 +00:00
Doug Blank 2cabdbf0a3 Update detached window title when changing the gramplet title
svn: r15664
2010-07-29 18:37:37 +00:00
Doug Blank bedb543d4c Removed TreeTips: didn't work right, and didn't use actual tooltips
svn: r15663
2010-07-29 16:57:25 +00:00
Jérôme Rapinat 548533d472 4089: 5 caracters for short months
svn: r15662
2010-07-29 08:51:24 +00:00
Jérôme Rapinat 3dcc94dcdb 3526:Documentation for relationship module
svn: r15659
2010-07-29 08:22:44 +00:00
Doug Blank ca5c080b03 Added icons for each row; fixed multi object select, drag, and drop; many refinements
svn: r15658
2010-07-29 08:01:24 +00:00
Doug Blank fc4240dcfe Fixed a couple of misspelled methods
svn: r15657
2010-07-29 07:59:54 +00:00
Doug Blank aa5cefd789 Refactored listviews to be able to select multiple items for dnd
svn: r15656
2010-07-29 07:59:07 +00:00
Doug Blank d791f1654b Added a new raw_list dnd type
svn: r15655
2010-07-29 07:57:43 +00:00
Doug Blank 9bc3a5d603 Cleanup and refactor of some of Scratchpad, especially to make easier to use for Clipboard Gramplet
svn: r15654
2010-07-28 15:04:45 +00:00
Doug Blank 0f310e78a4 Show errors on invalid plugin load
svn: r15653
2010-07-28 15:03:37 +00:00
Rob G. Healey 621869d911 Mapstraction.css: Fixed a problem where it was not allowing PlacePage Place Maps to not be shown. NarrativeWeb: More tweaks to FamilyMap and PlacePage Maps.
svn: r15652
2010-07-27 08:33:06 +00:00
Doug Blank a5d38c55d6 Allow Gramplet frame titles to be edited in place
svn: r15651
2010-07-25 17:22:52 +00:00
Rob G. Healey e020d6a443 NarrativeWeb: Continuing work on getting FamilyMap and Place Page Map to look and work as I want it too. StyleSheet: Changing elements to match current modifications.
svn: r15650
2010-07-24 08:43:43 +00:00
Peter Landgren 2cd2b3c84d Changed gramps to Gramps.
svn: r15649
2010-07-23 07:27:32 +00:00
Peter Landgren 52049dd9ca Update of Swedish translation.
svn: r15648
2010-07-23 07:23:36 +00:00
Rob G. Healey 46ee43539f NarrativeWeb: Refinements in creating family maps. Changes in style sheets to match work.
svn: r15647
2010-07-23 06:30:23 +00:00
Rob G. Healey fe1d68c475 Removed gramps-merge.png from these files so that compilation would complete itself.
svn: r15646
2010-07-23 06:26:36 +00:00
Doug Blank 3e28ee67ec 2059: need a way to compare and merge all objects, by MD Nauta
svn: r15645
2010-07-22 02:16:32 +00:00
Doug Blank 59403835fe 3142: To allow backups into GRAMPS XML format without Proxy or Living filters; added two config settings for quick-backup dir and filename pattern; added dbstate.db_name
svn: r15644
2010-07-22 01:50:00 +00:00
Serge Noiraud ed3bd66d0d mapstraction : cannot generate Makefile
svn: r15643
2010-07-21 07:31:09 +00:00
Serge Noiraud 593f7de5e6 GeoView : new mapstraction V2. added crosshair implementation for googlev3 and openlayers.
resize is now fully integrated with crosshair.
          possibility to select the html toolkit when webkit and gecko are available.
          javascript simplification in the html page.
          add LOG functionality for debugging.


svn: r15642
2010-07-20 21:41:13 +00:00
Serge Noiraud 35875a30c6 GeoView : new mapstraction V2. added crosshair implementation for googlev3 and openlayers.
resize is now fully integrated with crosshair even with filters.
          possibility to select the html toolkit when webkit and gecko are available.
          javascript simplification inside the html page.
          add LOG functionality for debugging.


svn: r15641
2010-07-20 21:39:57 +00:00
Rob G. Healey 9e4fda990f Print StyleSheet: Updated to fix some issues.
svn: r15639
2010-07-16 03:17:08 +00:00
Rob G. Healey 0fdd49ad87 NarrativeWeb: Re-verted dump_place() with alternate_locations returned back to original setup.
svn: r15638
2010-07-15 23:25:12 +00:00
Rob G. Healey 3567664f4c NarrativeWeb: Fixed place and dump_ordinance().
svn: r15637
2010-07-15 08:56:01 +00:00
Rob G. Healey d2d5be6919 NarrativeWeb: Fixed crash error introduced in last commit regarding place.get_alternate_locations().
svn: r15636
2010-07-14 22:08:07 +00:00
Rob G. Healey e88ee37158 NarrativeWeb: Changed the way that place.alternate_locations are displayed.
svn: r15635
2010-07-14 21:21:31 +00:00
Rob G. Healey a58d664660 NarrativeWeb: Furthering the use of _individuallist variable. For checking whether a person is in the database or not?
svn: r15634
2010-07-13 18:47:37 +00:00
Rob G. Healey c9f6fbd0eb NarrativeWeb: Changed how center and zoom are set. Changed _place_exists() to _append_to_lat_long(). Using some of the code that Serge Noiraud is using in GeoView.
svn: r15633
2010-07-11 05:55:19 +00:00
Rob G. Healey afe4627783 Added dashed underline to div#SurnameDetail table.surnames .
svn: r15632
2010-07-10 02:56:22 +00:00
Peter Landgren 0ea8c9dfef Fix of typo.
svn: r15631
2010-07-09 16:29:07 +00:00
Peter Landgren 10d188df2f Fix of typo.
svn: r15630
2010-07-09 16:26:42 +00:00
Nick Hall 7a9e22083d Ensure signals are connected when a view is created
svn: r15629
2010-07-09 15:13:06 +00:00
Rob G. Healey 3415a1918e NarrativeWeb: Bug fix for #4095. Thank you Peter for the heads up on this one.
svn: r15627
2010-07-08 22:36:46 +00:00
Rob G. Healey 2638f7641d Fixed a crash issue that I created in the last commit.
svn: r15626
2010-07-08 07:49:24 +00:00
Rob G. Healey 0193bbb459 NarrativeWeb: Re-aligned the javascript code output to match how Google displays theirs.
svn: r15625
2010-07-08 07:22:34 +00:00
Rob G. Healey c31bd0bfa5 NarrativeWeb: Removed the addition of listing the active person in its siblings. Fixed typo error.
svn: r15624
2010-07-08 01:46:35 +00:00
Nick Hall 897fbabaa5 Add a history sidebar plugin
svn: r15623
2010-07-06 14:47:53 +00:00
Nick Hall 6648bc9ed7 Fix bug where edit buttons are missing in person view
svn: r15622
2010-07-06 14:38:08 +00:00
Nick Hall 7f83fc7fcb Tidy up navigation sidebar code
svn: r15621
2010-07-06 14:30:38 +00:00
Rob G. Healey 16f95e157c NarrativeWeb: Fixed inline usage in dump_attribute().
svn: r15620
2010-07-05 09:26:08 +00:00
Rob G. Healey 0e06a98523 NarrativeWeb: Removed extra hyperlink in display_ind_sources(). Re-claimed valuable and expensive vertical real estatetoo. Web_Basic-Blue: added element to remove underline in display_ind_sources().
svn: r15619
2010-07-05 09:11:24 +00:00
Rob G. Healey 76d7588339 Added underlines under children and siblings.
svn: r15618
2010-07-05 07:26:23 +00:00
Rob G. Healey fc219d57af NarrativeWeb: Fixed attributes section display on Individual Pages. Moved sources to the end instead of middle.
svn: r15617
2010-07-05 07:21:17 +00:00
Rob G. Healey 7ef7715f1c Refactoring of Place Page and Family Map Pages is should now be completed. Adjusted elements in Mapstraction style sheet.
svn: r15616
2010-07-05 06:26:23 +00:00
Nick Hall 24403802ac Fix tooltips in list views (currently disabled)
svn: r15615
2010-07-04 16:59:05 +00:00
Nick Hall 5ab9ca2e5a Fix marker colours in Family and Note views
svn: r15613
2010-07-03 15:04:36 +00:00
Jérôme Rapinat adda80f8fe 4089: Capital letter and short months for russian
svn: r15612
2010-06-30 08:03:42 +00:00
Jérôme Rapinat 36d657b272 4089: try to use cyrillic alphabet for russian long months
svn: r15611
2010-06-30 07:53:56 +00:00
Jérôme Rapinat d351fe147f 4089: translate month names (Finnish, Lithuanian, Russian)
svn: r15610
2010-06-30 07:42:42 +00:00
Peter Landgren bb170241dd Some unnecessary unicode conversion cleanup after fix of issue 4078.
svn: r15606
2010-06-30 07:14:37 +00:00
Peter Landgren 9127018ca9 Some unnecessary unicode conversion cleanup after fix of issue 4078.
svn: r15605
2010-06-30 07:13:02 +00:00
Peter Landgren 7168001163 Some unnecessary unicode conversion cleanup after fix of issue 4078.
svn: r15604
2010-06-30 07:11:13 +00:00
Peter Landgren 57006ccfbe Some unnecessary unicode conversion cleanup after fix of issue 4078.
svn: r15603
2010-06-30 07:10:12 +00:00
Rob G. Healey 71b6877928 Added parents and partner to list of people and places for family place map.
svn: r15602
2010-06-29 19:07:19 +00:00
Rob G. Healey f32dbb3eaa Fixed a border dashed style for Attributes list.
svn: r15601
2010-06-29 00:05:33 +00:00
Rob G. Healey c0d86a8993 Added references section to Family Map Page. Adjusted the zoom level, and modified style sheet elements.
svn: r15600
2010-06-28 21:55:56 +00:00
Peter Landgren 8900ce7f6d Fix of issue 4078, note.get() unicode now.
svn: r15599
2010-06-28 07:45:05 +00:00
Peter Landgren 88c1389251 Fix of issue 4078, note.get() unicode now.
svn: r15598
2010-06-28 07:44:17 +00:00
Peter Landgren e2d3fca8d8 Fix of issue 4078, note.get() unicode now.
svn: r15597
2010-06-28 07:43:41 +00:00
Jérôme Rapinat c9cf3a990f 4087: name for a polish language (by Yenidai_2nd)
svn: r15594
2010-06-26 08:39:34 +00:00
Rob G. Healey 39fd0bc26d Added Individual Family Place Map to NarrativeWeb; Created and adjusted css elements for Place and Family Maps.
svn: r15593
2010-06-25 09:22:14 +00:00
Rob G. Healey 01d27b8694 Removing extra mapstraction provider javascript files after conversations with Serge Noiraud. Would like to do some more research on mxn.googleearth.core.js for possible use in something else.
svn: r15591
2010-06-24 06:44:28 +00:00
Rob G. Healey aad0f9d0f5 Added elements for family map option to mapstraction style sheet.
svn: r15590
2010-06-23 08:39:23 +00:00
Rob G. Healey 7fb39141c8 Uploading missing mapstraction javascript files. Updated to 2.0.2
svn: r15589
2010-06-23 08:37:47 +00:00
Rob G. Healey b73286a598 Cleared up some valuable vertical spacing.
svn: r15588
2010-06-22 04:32:44 +00:00
Rob G. Healey 59e9259d7a Added border lines to PlaceDetail table section.
svn: r15587
2010-06-21 02:44:13 +00:00
Rob G. Healey 84fb222ca0 Added dashed line back into Attributes section.
svn: r15586
2010-06-20 19:47:55 +00:00
Rob G. Healey 79e2d97698 Moved _create_place_map() back into class PlacePage. Getting ready for include family place map. Added border around PlacePage map in style sheet.
svn: r15585
2010-06-20 07:48:25 +00:00
Rob G. Healey cba915b882 Add place_title to bottom of map and at marker description. Added style elements to style sheet.
svn: r15584
2010-06-20 05:42:42 +00:00
Nick Hall 939ac5505e Change sort order from D.D8 to ISO-DMS
svn: r15583
2010-06-19 23:44:13 +00:00
Nick Hall 49a0830d29 4076: Fix sort order when different latitude/longitude formats are used
svn: r15581
2010-06-19 17:41:28 +00:00
Rob G. Healey 1915b899b3 Pep8 cleanup, media_link() and doc_link(): can see object description now and making them look and work like each other. indivgallery changes in style sheet.
svn: r15579
2010-06-19 02:47:48 +00:00
Rob G. Healey 71ecdfdee8 Re-added the dashed border on the List pages.
svn: r15578
2010-06-18 22:05:57 +00:00
Rob G. Healey 1f9033cb44 Fixed name sorting in AddressBookListPage. Fixed has_residence in AddressBookPage. Fixed some elements in style sheet.
svn: r15577
2010-06-18 07:34:59 +00:00
Rob G. Healey 24978e4ba6 Added marker.setInfoBubble() back into Place Map, and adjusted font of the div#geo-info to a more readable size.
svn: r15576
2010-06-17 05:21:00 +00:00
Rob G. Healey c5f30ccc3a Added ftps:// to list of url.startswith() in display_url_list().
svn: r15575
2010-06-17 04:47:32 +00:00
Rob G. Healey f5ef3abf53 Fixed missing marker on PlacePage Map.
svn: r15574
2010-06-16 06:03:51 +00:00
Rob G. Healey 82cb3ff0cc Simplified the python and style sheet code for Place Maps.
svn: r15570
2010-06-15 08:26:38 +00:00
Peter Landgren d6fa234f9b Fix of 4071 so that substitutioins variables /%N, /%s, /%S follow the spec in the manual.
svn: r15569
2010-06-15 06:34:54 +00:00
Rob G. Healey 205a1b703d Re-located the _create_place_map() code and updated Mapstraction.css style sheet.
svn: r15567
2010-06-15 00:30:31 +00:00
Rob G. Healey 368ebca243 NarrativeWeb: Adding new style sheet for Mapstraction CSS elements.
svn: r15566
2010-06-14 05:16:14 +00:00
Zdeněk Hataš d325bc5428 minor translation updates
svn: r15565
2010-06-13 18:40:54 +00:00
Mirko Leonhäuser a5281ae067 Updated German translation
svn: r15563
2010-06-13 13:16:04 +00:00
Serge Noiraud 42043e29ac GeoView : Moving to mapstraction v2, openlayers and google v3 as
google v2 is deprecated. With mapstraction v2, we need
          to use the openlayers api to show openstreetmap.


svn: r15562
2010-06-12 21:46:32 +00:00
Rob G. Healey 3d2daa22f4 Add border to place map and added info-bubble to left-click on marker.
svn: r15561
2010-06-12 19:23:06 +00:00
Rob G. Healey 570cf9a5df Removed table from the place map division because of problem associated with drifting when changing providers. Thank you Serge Noiraud.
svn: r15560
2010-06-12 17:21:23 +00:00
Serge Noiraud 27c21d0a09 NarrativeWeb : add icons and correct a drift problem with openlayers.
svn: r15559
2010-06-12 09:18:27 +00:00
Gerald Britton da1abaa31d Optimize by replacing multiple calls to .write methods with one call where possible
svn: r15558
2010-06-11 14:29:44 +00:00
Rob G. Healey 36aadb5c60 Removed options from Place Map tab and added to advanced instead. Removed individualpage map. Please test it out and let me know how well it works.
svn: r15557
2010-06-11 06:34:09 +00:00
Doug Blank 7cddb5c236 Removed some subtle checks in probably_alive to make more protective when restricting on alive status
svn: r15554
2010-06-11 00:35:54 +00:00
Rob G. Healey f509249c59 Fixed problems in Basic-Blue style sheet. Cleaned up page layout for PlacePage.
svn: r15553
2010-06-11 00:10:53 +00:00
Rob G. Healey 5cdccef384 PlacePage map using mapstraction is now complete and ready for testing. IndividualPage maps are not ready yet.
svn: r15552
2010-06-10 08:03:31 +00:00
Doug Blank 85d3e6424f Duplicate messages in he.po
svn: r15551
2010-06-10 01:37:15 +00:00
Peter Landgren ee99d280d8 Fix of issue 4059, event type begins with non latin char.
svn: r15550
2010-06-09 21:04:03 +00:00
Gerald Britton b6aa4a4d83 Replace "== None" with "is None"
svn: r15547
2010-06-09 20:08:11 +00:00
Gerald Britton 98473ea46b Optimize by combining many write calls into one plus other minor tweaks
svn: r15546
2010-06-09 20:06:55 +00:00
Jérôme Rapinat 7afaffcb07 Add Breton contributions - not installed)
svn: r15545
2010-06-09 07:21:44 +00:00
Rob G. Healey b2a8800379 Fixed problems with attributes not being properly displayed.
svn: r15544
2010-06-08 23:16:09 +00:00
Rob G. Healey d78c1d0f9c Add svn Id string to file.
svn: r15542
2010-06-08 06:47:30 +00:00
Rob G. Healey 11c37cea2d Add extra files needed for google and openlayers maps for v3.
svn: r15541
2010-06-08 06:44:12 +00:00
Rob G. Healey 3cd93ce9ba Fixed errors introduced in r15528.
svn: r15540
2010-06-08 06:34:22 +00:00
Rob G. Healey 76e30c0071 Removed options from plugin that didn't exist in plugin options -- fixed crash.
svn: r15539
2010-06-08 06:25:56 +00:00
Rob G. Healey f3b2aaebc0 Cleanup and simplify display_first_image_as_thumbnail().
svn: r15538
2010-06-08 06:06:11 +00:00
Igal Shapira 9e99065877 Merge hebrew translations to trunk (67%)
svn: r15536
2010-06-06 18:17:48 +00:00
Peter Landgren 308d9e2142 Fixed coding error when looking at issue 4034.
svn: r15535
2010-06-06 17:18:48 +00:00
Rob G. Healey 69df521213 Cleanup of class PlaceListPage and PlacePage, dump_places(). Add the elements for the PlaceListPage.
svn: r15533
2010-06-05 13:53:34 +00:00
Doug Blank 937c8368ac Crash on family with no parents
svn: r15532
2010-06-05 11:36:28 +00:00
Serge Noiraud b70e874315 Mapstraction : google v2 is deprecated. So we move to v2 with googlev3 and openlayers.
will be used by narativeweb individual maps. 
               The gramps maps use v1 for the moment : no more crosshair in v2, ...


svn: r15530
2010-06-05 09:16:20 +00:00
Rob G. Healey 2d2a9481bf Feature Request#4029: Added PlaceMap elements to all style sheets. Thanks Serge Noiraud.
svn: r15528
2010-06-05 05:09:25 +00:00
Gerald Britton 7244e05a25 Optimize docgen backends by consolidating calls to write methods
svn: r15527
2010-06-04 17:19:26 +00:00
Jérôme Rapinat 0901feda9e #4044 #2855 #2762 fix on half relations (contribution by reinhard)
svn: r15526
2010-06-04 13:33:22 +00:00
Rob G. Healey 02316615d4 Mirrored changed made in display_url_list() to all style sheets.
svn: r15525
2010-06-04 04:04:24 +00:00
Rob G. Healey 504b31e255 Cleanup on display_url_list() and WebLinks elements.
svn: r15524
2010-06-04 03:33:14 +00:00
Rob G. Healey fcf02507b5 Cleanup and add conformity to dump_residence().
svn: r15523
2010-06-04 02:56:14 +00:00
Rob G. Healey 4b57c7c3be Adjusted some PlaceDetail elements.
svn: r15522
2010-06-04 02:29:49 +00:00
Rob G. Healey 629df385e0 Beginning of feature request #4029: placemaps on placepages with help from Serge Noiraud. Cleanup and conformity of dump_place() with remainder of NarrativeWeb.
svn: r15521
2010-06-04 02:28:00 +00:00
Doug Blank 3989ef284f Follow StyledText links to include other objects, too
svn: r15520
2010-06-01 17:10:00 +00:00
Doug Blank 8d2e6a82c4 Protection from null family
svn: r15519
2010-05-31 15:47:22 +00:00
Doug Blank c5d11d3218 Added filter editor for person and note filters, and removed unneeded reference filters
svn: r15518
2010-05-31 14:50:34 +00:00
Doug Blank 943cfd07e2 4037: get_full_path method of gen.lib.url uses undefined variable
svn: r15517
2010-05-31 12:56:19 +00:00
Mirko Leonhäuser 6d242d7d78 Fixed error with plural forms
svn: r15516
2010-05-31 09:31:30 +00:00
Doug Blank 01ef2759d4 Inverse filters will show differences between previous proxy
svn: r15514
2010-05-30 14:03:29 +00:00
Doug Blank 61905f3681 Change message to right-click from double-click
svn: r15513
2010-05-30 13:50:29 +00:00
Doug Blank ddfcf61f12 Add a second version of reference by select proxy (doesn't remove people)
svn: r15512
2010-05-30 13:38:58 +00:00
Doug Blank 546272f1bb Use correct method of translating number-based items (ngettext)
svn: r15511
2010-05-30 13:15:14 +00:00
Doug Blank 8110ef8eda Use correct method of translating number-based items (ngettext)
svn: r15510
2010-05-30 13:08:44 +00:00
Doug Blank cbef7fe84c Minor change of packing
svn: r15509
2010-05-30 12:59:49 +00:00
Doug Blank ea7bf26054 Use new option_box in ExportCsv
svn: r15508
2010-05-30 12:57:20 +00:00
Doug Blank a6c702638f Protection from null objects
svn: r15507
2010-05-30 12:14:26 +00:00
Doug Blank 204c4e1d24 Protection from null objects
svn: r15506
2010-05-30 12:09:17 +00:00
Doug Blank 016d45b4a6 Protect from null tree iter
svn: r15505
2010-05-30 11:49:50 +00:00
Doug Blank 41a4ff748d Protection from null objects
svn: r15504
2010-05-30 11:35:45 +00:00
Erik De Richter 27d27113ce update nl translation
svn: r15503
2010-05-30 07:14:20 +00:00
Doug Blank a9ac340110 3878: Private option and filter on Exporter; adds proxy order, browse of proxy data, referenced proxy, update of all exports (except csv)
svn: r15502
2010-05-30 04:07:50 +00:00
Doug Blank ba2d5d503d Protection from null family
svn: r15501
2010-05-30 04:03:05 +00:00
Doug Blank 1b3e2aa09f Protections for readonly databases
svn: r15500
2010-05-29 20:19:22 +00:00
Doug Blank 34c7efe804 New proxy that traces forward references
svn: r15499
2010-05-29 20:17:06 +00:00
Doug Blank 2a44a7dd77 Added SimpleAccess.describe method that gives a simple description of an object instance; protection for null objects; new quick views for proxies
svn: r15498
2010-05-29 20:13:09 +00:00
Rob G. Healey 44aafc8569 Make Menu easier to read and see when hovering over it...for Web_Basic_Blue.css
svn: r15497
2010-05-28 21:28:07 +00:00
Rob G. Healey a93f4e0a85 Mant Pep8 fixes in this commit from 7.19 to 8.82
svn: r15496
2010-05-28 21:11:28 +00:00
Doug Blank 00cf69b744 Convert SimpleTable left- and double-click actions to a right-click popup menu to workaround gtk problems
svn: r15495
2010-05-28 13:35:43 +00:00
Doug Blank 41524b59a4 Added a new quickview: people not in proxy, but in basedb
svn: r15494
2010-05-28 13:34:27 +00:00
Peter Landgren bbf095ddb5 Final fix of issue 3935, coding problem in Windows.
svn: r15493
2010-05-28 13:21:14 +00:00
Rob G. Healey 23b1178629 Changed main and sub navigation menus.
svn: r15491
2010-05-28 07:11:45 +00:00
Serge Noiraud 59ab92808d Open Document : Issue 4018 and 4017 : random page break + top and bottom margin for paragraphs.
svn: r15490
2010-05-27 19:12:11 +00:00
Mirko Leonhäuser 7d998edc95 Updated German translation
svn: r15489
2010-05-27 17:30:16 +00:00
Peter Landgren 4e929d3595 Added info about DB version.
svn: r15487
2010-05-27 11:04:45 +00:00
Doug Blank 6cedab8349 3778: Family notes and attributes are not displayed in reports, by lcc
svn: r15485
2010-05-26 02:15:38 +00:00
Doug Blank 8a25a77c9f Removed .get_base_db() method as there was already basedb for the same purpose
svn: r15484
2010-05-25 23:29:37 +00:00
Doug Blank 8f9970839b 4015: Addition of option of 'Page Break before Endnotes' on DDR and DAR reports
svn: r15482
2010-05-25 21:21:52 +00:00
Doug Blank 72eadb0d71 4016: Plugin with a BooleanListOption crashes when report_options.xml has fewer entries than expected.
svn: r15481
2010-05-25 21:10:25 +00:00
Gerald Britton 2604ee39fa Use itertools ifilter and imap to simplify some operations
svn: r15480
2010-05-25 18:31:31 +00:00
Doug Blank 5e632304dc 4012: Improvement for "What's next" report
svn: r15479
2010-05-25 13:21:06 +00:00
Doug Blank 6c91585f43 Fixed spelling error
svn: r15477
2010-05-25 11:30:43 +00:00
Doug Blank f72178b4df 4012: Improvement for "What's next" report
svn: r15475
2010-05-25 10:06:53 +00:00
Rob G. Healey 6c01a611d7 Removed Totals Column and Row from class EventListPage.
svn: r15472
2010-05-25 04:59:00 +00:00
Rob G. Healey 577071b666 Increased the size of #navigation and #subnavigation menus.
svn: r15471
2010-05-25 04:43:59 +00:00
Rob G. Healey e9db3fd8c1 Bug#4007: class EventListPage and EventPage: family events are being doubled up.
svn: r15470
2010-05-25 04:42:16 +00:00
Rob G. Healey 4c273594ba Some cleanup of the menus.
svn: r15469
2010-05-24 04:57:56 +00:00
Doug Blank a00b4bcb45 4004, 3983, 3861, 3758: initialize_options missing argument
svn: r15467
2010-05-24 01:41:03 +00:00
Doug Blank 0a73ecc10e use new get_base_db method of db
svn: r15466
2010-05-23 15:45:41 +00:00
Doug Blank a69337b6c6 method for getting base database, if a proxy
svn: r15465
2010-05-23 15:44:51 +00:00
Doug Blank a3a12e87fe Show All filter shows counts out of total, unfiltered
svn: r15464
2010-05-23 15:43:49 +00:00
Doug Blank 96c081bb6e Some ordering problems when readonly db
svn: r15463
2010-05-23 15:42:18 +00:00
Doug Blank 67a82ed20c No need to get surname list for a readonly db
svn: r15462
2010-05-23 15:40:59 +00:00
Doug Blank ed3c144a79 Apparently we don't need these two methods (see Gerald in mailing list, 05/23/2010)
svn: r15461
2010-05-23 15:36:15 +00:00
Doug Blank ed73f393ed Readonly databases do not necessarily have commit methods
svn: r15460
2010-05-23 15:00:48 +00:00
Doug Blank 7c4d945da6 Backrefmodel will skip missing or inaccessible objects
svn: r15459
2010-05-23 14:59:04 +00:00
Doug Blank 0c10a6c7a5 Added 7 new quick view filters: all (summary counts), all events, all media, all notes, all repos, all sources, and all places.
svn: r15458
2010-05-23 14:57:43 +00:00
Doug Blank cdeb47ad3b Proxies should report that they are read-only
svn: r15457
2010-05-23 14:55:20 +00:00
Doug Blank 4ac224430f Added missing editors for media and note; add ability for table link to be a filter
svn: r15456
2010-05-23 14:53:04 +00:00
Doug Blank 80f5069a49 Protection from missing (or inaccessible) person
svn: r15455
2010-05-23 14:51:51 +00:00
Doug Blank 4ce41d4656 3986: Interface for running code not associated with a plugin type: this passes dbstate and uistate to a load_on_reg function/class if a library has it, and it is marked as load_on_reg
svn: r15454
2010-05-23 11:44:13 +00:00
Doug Blank 8ca80428a5 added methods that protect living data from leaking out: get_person_handles, iter_person_handles, and iter_people
svn: r15453
2010-05-23 05:10:11 +00:00
Rob G. Healey 657e4dc784 Bug#4006: Fixed WebCal text being doubled up. Thank you Doug S. Blank for the patch.
svn: r15452
2010-05-23 04:51:59 +00:00
Doug Blank 1e3b765bd4 iter_people method was incorrectly returning handles and people objects; should be just people to match gen.db interface
svn: r15451
2010-05-23 04:40:58 +00:00
Serge Noiraud 80c94857ed GeoView : bug #4002 console message: undefined @1: ReferenceError: Can't find variable: addcrosshair
svn: r15448
2010-05-22 07:41:04 +00:00
Rob G. Healey bedbf0084f Changed Download page a little and made the changes uniform in all the style sheets. Still have a problem in Web_Mainz.css though.
svn: r15446
2010-05-22 07:20:27 +00:00
Doug Blank 630596fca9 3993: Add Jewish holidays and translate holidays and countries names (part 1), by igal_shapira: hide file
svn: r15443
2010-05-21 20:08:57 +00:00
Doug Blank c087de2913 3993: Add Jewish holidays and translate holidays and countries names (part 2)
svn: r15442
2010-05-21 19:49:16 +00:00
Peter Landgren c92dde9549 Added version info about the database.
svn: r15441
2010-05-21 14:18:32 +00:00
Doug Blank 9421b66984 3993: Add Jewish holidays and translate holidays and countries names (part 2)
svn: r15439
2010-05-21 12:58:08 +00:00
Doug Blank 3af2af9dd2 3993: Add Jewish holidays and translate holidays and countries names (part 1), by igal_shapira
svn: r15438
2010-05-21 12:18:21 +00:00
Doug Blank 2a0ae02088 3982: One more date-time format - Database Timestamp (ISO) format, by Yenidai
svn: r15436
2010-05-21 11:15:08 +00:00
Peter Landgren 59acfc216d Fixed problem with non unicode path name.
svn: r15434
2010-05-21 06:22:24 +00:00
Serge Noiraud 9a6a01fabb 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: r15433
2010-05-20 21:00:47 +00:00
Gerald Britton df79811a4e Add extra information for undo history
svn: r15430
2010-05-20 18:40:31 +00:00
Gerald Britton c6df5a7a0f Tweak
svn: r15429
2010-05-20 18:39:58 +00:00
Gerald Britton 6369bb0286 Minor edit
svn: r15428
2010-05-20 18:32:36 +00:00
Gerald Britton cd8ded4b37 Updates to undo/redo logic:
1. Replace single transaction list with separate undo/redo deques
2. Update UndoHistory GUI to work with new queue setup
3. Add test to txn.py for empty transaction list


svn: r15427
2010-05-20 18:32:08 +00:00
Nick Hall 6da2ade5e3 Format date in Last Changed column in views according to preference setting
svn: r15426
2010-05-20 17:47:31 +00:00
Doug Blank 8981551fcd 3878: Private option and filter on Exporter --- protection from null person
svn: r15425
2010-05-19 00:30:00 +00:00
Doug Blank 88a571d9e3 3878: Private option and filter on Exporter (undo of commit 15402)
svn: r15424
2010-05-19 00:13:25 +00:00
Stéphane Charette 516822a795 merge forward the NEW files since 3.2.3 was released
svn: r15422
2010-05-17 05:40:18 +00:00
Jérôme Rapinat bc7912d5ab update month names (by Łukasz Rymarczyk)
svn: r15418
2010-05-16 15:49:03 +00:00
Mirko Leonhäuser 6aeba0bb35 Updated german translation
svn: r15416
2010-05-16 12:17:16 +00:00
Doug Blank b400c4ed79 Remove debug setting as default
svn: r15411
2010-05-14 08:59:36 +00:00
Peter Landgren 6c03ca3ca3 Update of Swedish translation.
svn: r15410
2010-05-14 07:18:13 +00:00
Nick Hall 3c6546c6dd 3710: Add a configuration dialog to the pedigree view
svn: r15409
2010-05-13 21:50:22 +00:00
Jérôme Rapinat 75d8575909 use of functions
svn: r15406
2010-05-13 17:52:00 +00:00
Nick Hall a1c96c8a93 Append space to paragraph leader in ascii reports. (revert 15388)
svn: r15404
2010-05-13 17:12:18 +00:00
Doug Blank d2d983f10a Try to reload first; if fails, then not in path (addon), and try new import
svn: r15403
2010-05-13 13:02:52 +00:00
Doug Blank d134be8d2e 3878: Private option and filter on Exporter
svn: r15402
2010-05-13 12:11:22 +00:00
Doug Blank 7da7919b78 3957: probably_alive does not use full database to determine living status
svn: r15401
2010-05-13 12:09:15 +00:00
Doug Blank 2df0322aef 3958: Extremely slow gedcom import
svn: r15400
2010-05-13 11:08:20 +00:00
Rob G. Healey 44a360c1bf Fixed EventDetail pages in ColumnPerson... First individual was being shown twice in the line
svn: r15398
2010-05-13 06:17:43 +00:00
Rob G. Healey b3e5f17baf Removed forcing the table headers to be full capsitalization, except for the calendar day letters
svn: r15397
2010-05-13 03:20:52 +00:00
Doug Blank 958a0fe898 Protection against null objects; added ability to get fallback object rather than just date
svn: r15396
2010-05-12 19:25:51 +00:00
Rob G. Healey b3b100747e Removed border lines from Parents section on the IndividualPages
svn: r15392
2010-05-12 07:28:27 +00:00
Rob G. Healey 33bcc40293 Switched 'Graph generations' option in Report Options from EnumeratedListOption to NumberOption as it didn't maked sense to me
svn: r15391
2010-05-12 07:17:23 +00:00
Rob G. Healey 9b73c0e80a Re-added event description back into event sections
svn: r15390
2010-05-12 07:08:28 +00:00
Rob G. Healey 3a0acefae7 Removed black cell in EventsPage details on Person
svn: r15389
2010-05-12 06:11:54 +00:00
Craig J. Anderson 81e1b117b2 added a space after the descendant number.
svn: r15388
2010-05-12 02:35:09 +00:00
Jérôme Rapinat ed1cdfd58a update Polish translation (by Łukasz Rymarczyk)
svn: r15386
2010-05-11 17:35:35 +00:00
Doug Blank cda97348e8 3878: Private option and filter on Exporter
svn: r15383
2010-05-10 00:00:15 +00:00
Espen Berg 0d588841d5 Revised Norwegian bokmål translation
svn: r15380
2010-05-09 20:25:40 +00:00
Espen Berg 548a8ba315 issues 3915, 3950 and 3951 (and perhaps some more?) due to a change in pygtk appears to be fixed with this patch.
svn: r15378
2010-05-09 18:43:06 +00:00
Jérôme Rapinat 47199e72cb minor improvement on unit test
svn: r15377
2010-05-09 16:45:53 +00:00
Doug Blank e7a50282b4 3943: Crashed whilst exporting to data.gramps using a person filter 'Public'; fixed many filter rules for people
svn: r15374
2010-05-09 15:18:54 +00:00
Doug Blank 7044978e72 3943: Crashed whilst exporting to data.gramps using a person filter 'Public'; fixed many filter rules for people
svn: r15372
2010-05-09 15:08:53 +00:00
Doug Blank 187e1d582f 3640: Truncated FILE media path on Gedcom export; extended line for file to 255 characters
svn: r15370
2010-05-09 13:54:50 +00:00
Doug Blank 9fd5722f96 3943: Crashed whilst exporting to data.gramps using a person filter 'Public'; fixed many filter rules for people
svn: r15369
2010-05-09 13:43:50 +00:00
Doug Blank 14f3d33da4 3640: Truncated FILE media path on Gedcom export; extended line for file to 255 characters
svn: r15366
2010-05-09 12:57:05 +00:00
Rob G. Healey 887f8ba9bd Added Gramps Styled Notes hyperlink element to Blue stylesheet.
svn: r15365
2010-05-08 19:24:19 +00:00
Rob G. Healey eb2f4ee79d Moved navigation menu outside borders to Horizontal stylesheet.
svn: r15364
2010-05-08 19:22:36 +00:00
Rob G. Healey b8d650d3c7 Fixed Horiontal navigation menus outside borders.
svn: r15363
2010-05-08 19:17:41 +00:00
Doug Blank a2c515f5da Added a flag to get_note_format to set the up variable so that the backend will build_link correctly. This should be refactored, but it at least does the right thing for now.
svn: r15362
2010-05-08 15:21:11 +00:00
Doug Blank 19089b6f51 Typo in handling tags
svn: r15361
2010-05-08 15:19:23 +00:00
Peter Landgren a19abb267f Fix of issue 3935. Wrong encoding in Windows.
svn: r15360
2010-05-08 14:30:01 +00:00
Doug Blank 937af27eaf Header and Footer notes were not formatted
svn: r15358
2010-05-08 13:05:28 +00:00
Doug Blank c1ce7ace3f Removed changing of padding on a hover
svn: r15357
2010-05-08 12:45:49 +00:00
Doug Blank 49fde849a4 Need to handle links in _create_xmltag because they are a supported styletype now
svn: r15356
2010-05-08 12:04:48 +00:00
Doug Blank e13ed1433a Jakim Friant's fix: msg_callback typo
svn: r15355
2010-05-08 11:45:41 +00:00
Doug Blank 2f603d2592 Fixing issues with get_privacy on non-existent objects which were probably filted out by a living proxy
svn: r15354
2010-05-07 23:45:54 +00:00
Rob G. Healey a41de0ebb7 Adjusted alphabet navigation in Horizontal menu to be more consistent with navigation menu in appearance.
svn: r15352
2010-05-07 21:00:57 +00:00
Doug Blank fccc819e82 Allows load button for those plugins which are not loaded (eg, failed to load)
svn: r15351
2010-05-07 20:59:34 +00:00
Doug Blank 6db2110937 Forces the unloading of loaded plugins to load new versions
svn: r15350
2010-05-07 19:46:07 +00:00
Doug Blank a7d5470caa Small cleanup of link type names
svn: r15349
2010-05-07 18:33:44 +00:00
Doug Blank 99c4671e3e Added 'Link References' quickview; added a get_link to SimpleAccess
svn: r15348
2010-05-07 12:59:23 +00:00
Stephen George 6846befb21 Windows: Provide ability to patch a release version installer
Windows: Generate a locale dependent launcher

svn: r15347
2010-05-07 11:03:48 +00:00
Doug Blank 9edf445574 Added files to svn:ignore list
svn: r15346
2010-05-07 10:59:53 +00:00
Rob G. Healey 51ec91e313 Added overflow: hidden to the header section of this stylesheet for user_header note.
svn: r15345
2010-05-07 09:33:36 +00:00
Peter Landgren 47cfc776ec Deleted deprecated cli --usage.
svn: r15344
2010-05-06 19:48:22 +00:00
Peter Landgren 6e650ebfcc Deleted deprecated cli --usage.
svn: r15343
2010-05-06 19:47:42 +00:00
Jérôme Rapinat 2c795dec56 #3936: months not localized (by maple)
svn: r15342
2010-05-06 18:40:28 +00:00
Doug Blank 40b8c2d9a2 3914: Add a new markup for creating links to URLs and for gramps objects
svn: r15340
2010-05-06 15:54:33 +00:00
Peter Landgren ef002c54ad Added data for --settings so that translation works.
svn: r15338
2010-05-06 07:26:37 +00:00
Peter Landgren 6a15175bc5 Fixed tramslation of cli help message.
svn: r15337
2010-05-06 07:25:33 +00:00
Peter Landgren aa3d7b4dc3 Fixed two minor spelling issues and added some new translations.
svn: r15336
2010-05-06 07:07:47 +00:00
Brian Matherly 663240d7a7 POTFILES.in needs to be updated after #0003796
svn: r15333
2010-05-06 03:44:02 +00:00
Brian Matherly ecbde74066 Repair duplicated file contents resulting from 0003796 (Make export available when no GUI available).
svn: r15332
2010-05-06 03:40:30 +00:00
Jérôme Rapinat e067a9b010 #3918: months not localized (by jcreus)
svn: r15330
2010-05-05 16:52:49 +00:00
Doug Blank 6c08e80327 Always return a string (even if error message) for SimpleAccess.display
svn: r15328
2010-05-05 15:49:16 +00:00
Jérôme Rapinat e2e3065cfb merge fix on branch rev15295
svn: r15327
2010-05-05 11:47:18 +00:00
Doug Blank 788b731168 Removed unneeded import of StyledTextEditor; gets StyledTextEditor from glade file
svn: r15326
2010-05-05 11:02:08 +00:00
Doug Blank be0b0a7530 Disabled Load button on Loaded Plugin tab... doesn't make any sense to have there as they are already loaded.
svn: r15325
2010-05-05 04:24:20 +00:00
Doug Blank 118525b4b9 Added a generic goto_handle that works (at least) with selectors; added a default keyword that takes a handle
svn: r15323
2010-05-05 03:23:35 +00:00
Doug Blank e847354d8b Allow 'Media' short for 'MediaObject'
svn: r15322
2010-05-05 03:19:54 +00:00
Doug Blank 98436e2e53 Double Oops: that line does belong here
svn: r15321
2010-05-04 22:13:43 +00:00
Peter Landgren f9eb65c4c6 Issue 3915, error in error message.
svn: r15320
2010-05-04 12:04:27 +00:00
Doug Blank 67e5d8d6d2 Oops: should not have included this line; from another patch
svn: r15319
2010-05-04 11:59:08 +00:00
Peter Landgren c7ca895545 Issue 3904, dirname and filename swapped.
svn: r15317
2010-05-04 11:55:14 +00:00
Doug Blank 8a80aeae96 Added an EditObject that works on any object_class; will look up obj based on gramps_id or handle
svn: r15314
2010-05-03 22:47:47 +00:00
Doug Blank 22bbe691ae Added a display to return a string of any object; fixed a bug in gid(obj) so that it can now work for any obj
svn: r15313
2010-05-03 22:46:14 +00:00
Peter Landgren 757a2a683d Fix of included files.
svn: r15312
2010-05-03 16:31:12 +00:00
Peter Landgren 22377f265c Fix of included files.
svn: r15311
2010-05-03 16:20:42 +00:00
Peter Landgren d838145fdb Fix of included files.
svn: r15310
2010-05-03 16:17:42 +00:00
Peter Landgren decedf9c7d Information in file was doubled/tripled.
svn: r15309
2010-05-03 12:40:39 +00:00
Peter Landgren 0eb5728320 Information in file was doubled/tripled.
svn: r15308
2010-05-03 12:39:49 +00:00
Peter Landgren 0236eb15ab Information in file was doubled/tripled.
svn: r15307
2010-05-03 12:39:29 +00:00
Peter Landgren ab8bdc2a19 Information in file was doubled/tripled.
svn: r15306
2010-05-03 12:38:30 +00:00
Jason Simanek 289a947fa1 bug #0003908: fixed NarWeb footer height problem
svn: r15305
2010-05-03 12:22:10 +00:00
Doug Blank 54c2465186 Added underline to a links as otherwise one couldn't see them with new links in notes
svn: r15303
2010-05-03 10:30:15 +00:00
Doug Blank 652a1f132b 3911: Crash because of syntax error in name format
svn: r15302
2010-05-03 01:07:24 +00:00
Doug Blank 527db10555 Protect views with no histories
svn: r15300
2010-05-02 13:46:23 +00:00
Doug Blank 12918718f9 3879: Allow multiple versions of a plugin
svn: r15299
2010-05-01 21:30:15 +00:00
Doug Blank 39f4ac256f Removed duplicate code inserted by change set 15294; added plugin version in display
svn: r15298
2010-05-01 21:22:05 +00:00
Doug Blank ba10530ead 3900: Export to Gedcom; and other living proxy None issue
svn: r15297
2010-05-01 18:51:31 +00:00
Brian Matherly df32be43de 0003796: Make export available when no GUI available. Patch from jmodule (Jakim Friant).
svn: r15294
2010-05-01 04:12:42 +00:00
Rob G. Healey 356f23ac98 Removed div#footer section height limitation.
svn: r15293
2010-04-25 18:06:29 +00:00
Rob G. Healey 464ef0dbd8 Added source_citations back into media attributes.
svn: r15292
2010-04-25 18:03:49 +00:00
Stéphane Charette 5d2c4edad4 removed libgconf2 as a build dependency
svn: r15290
2010-04-25 08:31:10 +00:00
Stéphane Charette 2096825f22 update for 3.2.2 release
svn: r15289
2010-04-25 08:30:25 +00:00
Erik De Richter 365e701faa update nl translation
svn: r15283
2010-04-25 06:29:10 +00:00
Espen Berg 720bb8899e Revised Norwegian translation
svn: r15281
2010-04-24 23:20:14 +00:00
Doug Blank 845d5d0a33 3877: 'alive' and incomplet date
svn: r15280
2010-04-24 18:59:14 +00:00
Gerald Britton 72e19bb7a9 Updates to undo/redo logic -- part 1
svn: r15277
2010-04-23 19:02:24 +00:00
Rob G. Healey 71575f91ea Added a:hover element to all style sheets for Div#EventList table.infolist tbody tr td.ColumnLetter.
svn: r15274
2010-04-23 02:36:05 +00:00
Rob G. Healey 85523a2226 Modified alphabet_navigation to remove the necessity of key, modified class EventListPage to use alphabet_navigation just like the rest of the site.
svn: r15273
2010-04-23 00:39:24 +00:00
Gerald Britton bb17e00abd PEP8 edits and minor simplifications
svn: r15272
2010-04-22 19:46:50 +00:00
Gerald Britton 8cecd15dab Use print function instead of print statement
svn: r15271
2010-04-22 19:41:48 +00:00
Rob G. Healey 5a7c72338f Removed page x of page y from 'Creating event pages'.
svn: r15270
2010-04-22 17:05:34 +00:00
Rob G. Healey 9aea3ae849 Added title attribute to navigation/alphabet navigation menus for better visually impaired accessibility. The title attribute is read by accessibility devices.
svn: r15269
2010-04-22 14:36:02 +00:00
Rob G. Healey ea23f135bd Added title attribute to all media objects for better readability by screen readers and braille writers, Jaws(c) by http://www.freedomscientific.com/, for example.
svn: r15268
2010-04-22 13:56:16 +00:00
Stéphane Charette f3a661920a updated NEWS on trunk with 3.2.1 information
svn: r15267
2010-04-22 08:17:12 +00:00
Rob G. Healey 4966059097 Reverted NarrativeWeb back to before I committed it today. Back to Doug Blank's last revisions.
svn: r15265
2010-04-22 07:49:13 +00:00
Rob G. Healey 26ed0be397 Added src/plugins/sidebar directory to src/plugins/Makefile.am. Added src/plugins/sidebar/sidebar.gpr.py to po/POTFILES.skip .
svn: r15264
2010-04-22 07:36:22 +00:00
Rob G. Healey 61f262a339 Added title and alt attributes to images and http links for better ability for screen readers and braille writers. These changes make it so that the devices can read the page to its users.
svn: r15257
2010-04-22 01:27:53 +00:00
Rob G. Healey 1a11af68fa Removed the use of key in write_header(). Added <h2> tags back into write_header() so that the printed pages can be identified by it. Re-wrote alphabet_navigation for the class EventsListPage only. Added title for navigation and alphabet so that screen readers and braille writers can identify the menu items.
svn: r15256
2010-04-22 01:24:05 +00:00
Rob G. Healey 8fb4e6d924 Cleanup div#Places elements in Basic-Blue Style sheet.
svn: r15255
2010-04-22 01:10:59 +00:00
Rob G. Healey d88d0bfbeb Re-wrote Vertical navigation menu elements.
svn: r15254
2010-04-22 01:05:16 +00:00
Rob G. Healey 8e1b25f41b Made two minor spacing changes.
svn: r15253
2010-04-22 00:59:57 +00:00
Mirko Leonhäuser 2ea9f36ec9 Updated german translation
svn: r15251
2010-04-21 17:27:58 +00:00
Stephen George 309d8594bd svn: r15246 2010-04-20 21:48:32 +00:00
Rob G. Healey 147ed82195 Fixed Printer stylesheet. More updates of Blue.
svn: r15241
2010-04-19 22:28:24 +00:00
Mirko Leonhäuser 4141973f90 Updated german translation
svn: r15240
2010-04-19 20:19:33 +00:00
Doug Blank d8d47881ab 3430: Add Gramps version to the output of reports
svn: r15238
2010-04-19 14:39:04 +00:00
Peter Landgren f32a092057 Fix of issue 3865.
svn: r15236
2010-04-19 13:53:43 +00:00
Doug Blank 4d51c49508 3863: Narrative Web report : role not displayed when not primary
svn: r15234
2010-04-19 13:48:54 +00:00
Peter Landgren 441c7fb720 Fix of 3838.
svn: r15232
2010-04-19 13:11:27 +00:00
Doug Blank c0fa9b4b37 Format references: [1], [2]
svn: r15229
2010-04-19 11:01:33 +00:00
Doug Blank d71d5c67dc 3868: NarWeb Associations should be a link to the person's webpage
svn: r15228
2010-04-19 10:53:16 +00:00
Jérôme Rapinat aaaa05f4dd typo
svn: r15226
2010-04-19 08:22:08 +00:00
Doug Blank bec07d4543 3862: Narrative Web Report - Hyperlink on image regions no more clikable
svn: r15220
2010-04-18 16:14:59 +00:00
Doug Blank 3afeecc8b2 3805: Report 'Narrated Web Site...' - Contact page will be shown only if Publisher contact note OR image was set before
svn: r15218
2010-04-18 13:52:59 +00:00
Doug Blank d5056554a0 Fixes for configuring gramplets
svn: r15215
2010-04-18 13:42:46 +00:00
Doug Blank 1dd85ced01 Fixed error in losing options on config of this gramplet
svn: r15214
2010-04-18 12:59:40 +00:00
Doug Blank d42b3f870c Fixed error in losing options on config of this gramplet
svn: r15212
2010-04-18 12:55:43 +00:00
Doug Blank 385c4d0a6d 3863: Narrative Web report : role not displayed when not primary; moved associations above sources to include assoc sources
svn: r15209
2010-04-18 11:07:12 +00:00
Rob G. Healey ef6040b61d Moved color elements out of Horizontal as color should be handled by the stylesheet and not menus. Completing the cleanup of Basic-Blue style sheet.
svn: r15207
2010-04-18 08:11:43 +00:00
Rob G. Healey a558bd68c1 Changed trunk favicon.ico to favicon2.ico as Benny suggested.
svn: r15206
2010-04-18 02:14:03 +00:00
Doug Blank 8bd8c868fc All known CSS syntax errors fixed
svn: r15203
2010-04-18 00:39:58 +00:00
Doug Blank 7e5e5db27f 3798: tempfile wrongly used in Gramps: possible error 'Too many open files: ...'
svn: r15201
2010-04-17 23:20:01 +00:00
Doug Blank fc298c806c 3544: Narrated web report does not get created
svn: r15197
2010-04-17 21:58:09 +00:00
Doug Blank 08a23911c9 CSS fixes---need to do to all
svn: r15196
2010-04-17 21:46:14 +00:00
Doug Blank 40f88a9e7d 3851: NarWeb Associations don't show unless Include Private is checked
svn: r15192
2010-04-17 20:07:52 +00:00
Doug Blank 8d9ad55ae6 Rest of fix of 3837
svn: r15188
2010-04-17 18:34:00 +00:00
Doug Blank 9a82394a6f Width issues in CSS
svn: r15187
2010-04-17 18:20:00 +00:00
Doug Blank 87dd9aff24 CSS fixes and partial fix to 3837
svn: r15185
2010-04-17 14:49:36 +00:00
Peter Landgren 487d099611 Issue 3823, improved support for 2-byte unicode sequence.
svn: r15182
2010-04-17 13:57:51 +00:00
Doug Blank ee4f0923aa Changed a gettext string (home -> active); only show home link if person is selected
svn: r15181
2010-04-17 13:14:50 +00:00
Doug Blank fbac7a716d Show gallery in order of media_list, and include snapshot in gallery
svn: r15178
2010-04-17 12:35:32 +00:00
Rob G. Healey 2d23b3c174 Fixed the home_link in the footer.
svn: r15177
2010-04-17 01:44:18 +00:00
Rob G. Healey 0033084874 Partial cleanup of Visually Impaired.
svn: r15176
2010-04-17 01:34:43 +00:00
Rob G. Healey f6a0b8f2f1 Removed CurrentSection Elements from the navigation menus. Put them into Blue and Visually.
svn: r15175
2010-04-17 01:28:17 +00:00
Rob G. Healey dbb0c3bea2 Huge cleanup and making it consistent.
svn: r15174
2010-04-17 01:25:38 +00:00
Doug Blank b2d31be01a Removed unnecessary return
svn: r15172
2010-04-17 00:47:53 +00:00
Doug Blank 8a16a9ac2f 3848: Web Report Revision 15110, missing name
svn: r15171
2010-04-17 00:21:12 +00:00
Benny Malengier 56c85f0255 3815: Notes with html show verbatim in narrative web
svn: r15169
2010-04-16 20:59:10 +00:00
Doug Blank 9a8626a668 Protection from scale error
svn: r15165
2010-04-16 15:38:32 +00:00
Doug Blank 02d78e66ef 3798: Narrative Web Report error 'Too many open files: ...'
svn: r15163
2010-04-16 15:36:31 +00:00
Doug Blank 3e7ae3aeb5 Protect from unknown types---just mark as unknown
svn: r15162
2010-04-16 15:35:40 +00:00
Erik De Richter 620cdb5510 update nl translation
svn: r15159
2010-04-16 06:30:19 +00:00
Doug Blank f84e3409b2 Resized Download page
svn: r15157
2010-04-16 00:16:23 +00:00
Doug Blank 782ac444b0 Create Addressbook Page, even if no addresses if it is checked; center mainz addressbook pages
svn: r15155
2010-04-15 21:44:09 +00:00
Doug Blank e9fb9c4277 Mainz subparts centered
svn: r15153
2010-04-15 21:26:56 +00:00
Doug Blank 807d9a96d3 Mainz centered
svn: r15151
2010-04-15 21:16:05 +00:00
Doug Blank 0fd7cce3e2 Errors in CSS
svn: r15149
2010-04-15 21:02:29 +00:00
Espen Berg 1a5e78a76f Revised Norwegian Bokmål translation
svn: r15148
2010-04-15 19:32:46 +00:00
Rob G. Healey 7b8ddfb4a8 Added Navigation menus and Basic-Blue style sheet to src/data directory.
svn: r15146
2010-04-15 14:37:18 +00:00
Doug Blank 9aa81df81e 3829: Narrated Web Site: Type of source ref note is not output
svn: r15143
2010-04-15 12:40:17 +00:00
Doug Blank 82b7d8d168 Long/lat showing as None
svn: r15141
2010-04-15 10:52:49 +00:00
Doug Blank 20a3958294 Repository name was double-escaped
svn: r15139
2010-04-15 10:47:15 +00:00
Doug Blank 72ebf72840 Added cropped region thumbnail to ancestor tree
svn: r15138
2010-04-15 10:40:50 +00:00
Rob G. Healey 14767e285f Some cleanup work on class RepositoryList.
svn: r15135
2010-04-15 06:49:26 +00:00
Rob G. Healey 68adc1639f Attempt to return Mainz to its original state. Only needs work on the div#footer. Sides, header, and body all working once again.
svn: r15134
2010-04-15 06:47:41 +00:00
Peter Landgren f9886854ee Fix of 3800, so that error msg are dispalyed.
svn: r15133
2010-04-15 06:41:56 +00:00
Doug Blank 62fd3f8874 3845: In NarrativeWeb plugin, would like to remove the <sup> from the source annotations, by adamplumb
svn: r15130
2010-04-15 04:12:07 +00:00
Doug Blank bed9092bb9 3843: In NarrativeWeb plugin Events Table, the column needs to be written even if no notes exist, by adamplumb
svn: r15129
2010-04-15 04:03:20 +00:00
Doug Blank a85114fa66 3828: Narrated Web Site: Association output is incorrect, by kulath
svn: r15128
2010-04-15 03:52:01 +00:00
Doug Blank 3de2b43491 If first image is a image with region that links to object, then use a thumbnail of the region for snapshot; show regions in snapshot thumbnails otherwise; some refactoring
svn: r15126
2010-04-15 03:01:07 +00:00
Rob G. Healey e78e60609e Adjusted padding for div#header, and div#navigation for Horizontal menus.
svn: r15125
2010-04-15 02:10:15 +00:00
Rob G. Healey e2f6a57f74 Fixed class SourcePage where information would not be created if 'Suppress Gramps IDs' was selected.
svn: r15124
2010-04-15 01:59:10 +00:00
Benny Malengier 38eff3382c 1892: Name Editor Cancel marks Override
svn: r15121
2010-04-14 20:15:49 +00:00
Jérôme Rapinat 255a9fc025 update Slovak DateHandler (by Lubo Vasko)
svn: r15117
2010-04-14 16:22:48 +00:00
Jérôme Rapinat fcc48548cd update Hebrew and Slovak translations (by Igal Shapira and Lubo Vasko) and enable Hebrew (50%) for 3.2.1 and later
svn: r15114
2010-04-14 08:46:25 +00:00
Rob G. Healey 491f0d3180 Fixed the place detail missing because if place.main_loc in dump_places() was indented one too far.
svn: r15111
2010-04-14 06:00:58 +00:00
Rob G. Healey 26fa02bbf5 Removed ColumnPath from display_url_list() elements from all stylesheets.
svn: r15109
2010-04-14 05:01:37 +00:00
Rob G. Healey 9281d1388c Removed the extra media_ref_rect_regions that should not have been tried in the first place. Remove ColumnPath from display_url_list().
svn: r15108
2010-04-14 04:58:27 +00:00
Doug Blank 98e8a6aaf8 3822: Narrated Web Site: citations for person sources are missing
svn: r15106
2010-04-14 00:26:24 +00:00
Serge Noiraud d4711a4bcf GeoView : bug 3820 : The database was no more opened the first time we create a page ( relative to svn 15029 )
svn: r15104
2010-04-13 17:08:16 +00:00
Peter Landgren 2543cc32fe Fix of issue 3840.
svn: r15103
2010-04-13 07:34:44 +00:00
Doug Blank 57d289fee9 3827: Narrated Web Site: Dates for Alternate names are not shown, by kulath
svn: r15100
2010-04-13 02:49:05 +00:00
Doug Blank 42f948b606 3834: Death date on individuals an surnames pages in Narrative Web Report
svn: r15099
2010-04-13 02:38:26 +00:00
Doug Blank 9e505f3419 3831: Childref notes are lost on merging of children
svn: r15096
2010-04-13 02:23:56 +00:00
Doug Blank 73ed8a51dc 3676: NarrativeWeb report sometimes uses urls not availables (filter, proxy, living)
svn: r15095
2010-04-13 02:16:42 +00:00
Doug Blank 614ac18c5d CSS Errors
svn: r15093
2010-04-12 23:56:47 +00:00
Mirko Leonhäuser 0bb18c3df0 Updated german translation
svn: r15090
2010-04-11 20:28:08 +00:00
Peter Landgren 5d2934acd1 All strings in unicode.
svn: r15088
2010-04-11 17:34:24 +00:00
Doug Blank ce4a809f7b 3826: Language detection in spelling does not work, by kulath
svn: r15084
2010-04-11 14:16:54 +00:00
Doug Blank 76fbbcaab9 3831: Childref notes are lost on merging of children, by MD Nauta
svn: r15083
2010-04-11 13:44:01 +00:00
Doug Blank ac4e25bffc 3830: 'Merged GRAMPS ID' attribute overwritten on PeopleMerge by MD Nauta
svn: r15080
2010-04-11 13:09:23 +00:00
Jérôme Rapinat ad9f1c37b7 3756: Cannot set new year value different than default (first January)
svn: r15079
2010-04-11 06:48:45 +00:00
Jérôme Rapinat a83c39eed5 3756: Cannot set new year value different than default (first January)
svn: r15075
2010-04-10 18:30:13 +00:00
Jérôme Rapinat 6b3c125866 3756: Cannot set new year value different than default (first January)
svn: r15074
2010-04-10 18:27:43 +00:00
Nick Hall d8f2a046b4 Add scrollbar to category sidebar
svn: r15073
2010-04-10 16:29:18 +00:00
Nick Hall c7294b600b Make sidebar menu label translatable
svn: r15072
2010-04-10 16:13:30 +00:00
Rob G. Healey 8be9e00ff5 Fixed note issue in header_note and footer_note.
svn: r15069
2010-04-09 22:35:35 +00:00
Erik De Richter afe298209f update nl translation
svn: r15066
2010-04-08 14:09:35 +00:00
Raphael Ackermann 3f30d0493c fix docstring typos
svn: r15063
2010-04-08 06:50:21 +00:00
Rob G. Healey ca25394c46 Fixed the center person to be using the actual center person option in NarrativeWeb.
svn: r15061
2010-04-08 05:10:36 +00:00
Rob G. Healey 734c907fcb Fixed footer note to use straight HTML code instead of styled text.
svn: r15060
2010-04-08 02:29:12 +00:00
Rob G. Healey 003029f0bc Bug #3816: Fixxed header note so that there is no formatting. Straight HTML.
svn: r15055
2010-04-07 23:43:37 +00:00
Rob G. Healey 98146a9b6c Fixed page source layout for links so that they all line up together.
svn: r15054
2010-04-07 23:38:12 +00:00
Nick Hall 483d2dd7ff Reset last view defaults if number of categories changes
svn: r15053
2010-04-07 18:23:45 +00:00
Raphael Ackermann 8e0381b64e 0003219: Mother Lineage Quick Report (on Person view) uses incorrect genetic nomenclature
see http://genealogy.about.com/cs/geneticgenealogy/a/dna_tests.htm for info about this.

svn: r15051
2010-04-06 20:15:23 +00:00
Raphael Ackermann c3d200a96c doc string typo
svn: r15050
2010-04-06 20:01:13 +00:00
Raphael Ackermann a62463597e add all menu options to doc string
svn: r15049
2010-04-06 20:00:50 +00:00
Raphael Ackermann 3e7f5993e3 improve error message when missing report name
svn: r15048
2010-04-06 19:59:58 +00:00
Raphael Ackermann 8bcb3127aa add more cli options to docstring
svn: r15047
2010-04-06 19:59:18 +00:00
Benny Malengier 4268131523 fix short month dutch datehandler
svn: r15046
2010-04-06 19:22:30 +00:00
Jérôme Rapinat a46b607121 Add bookmark icon was missing on Menu (same string as navigationview)
svn: r15042
2010-04-06 17:59:26 +00:00
Jérôme Rapinat f7ae672bb9 Edit bookmark icon was missing on Menu
svn: r15041
2010-04-06 17:49:37 +00:00
Nick Hall 3ad0a469f3 Add base class for sidebar plugins
svn: r15038
2010-04-06 16:34:35 +00:00
Nick Hall ffffb7047c get_active should return None if no history object exists
svn: r15037
2010-04-05 16:14:26 +00:00
Raphael Ackermann 844002e312 docstring typo fixes
svn: r15036
2010-04-05 13:10:29 +00:00
Doug Blank d79961ff0b Add empty date for fallback wrapper in SimpleAccess where there is no event
svn: r15035
2010-04-05 12:38:04 +00:00
Rob G. Healey 201848dd82 Fixed menu element padding to allow all menu items on one row in Horizontal menu.
svn: r15034
2010-04-05 05:54:22 +00:00
Doug Blank 2842f8e8a5 3131: sibling quickview doesn't reflect person view
svn: r15033
2010-04-05 02:53:32 +00:00
Rob G. Healey 35874b1145 Removed libaccess, improved birth and death lookup in IndividualPages.
svn: r15032
2010-04-04 23:36:55 +00:00
Raphael Ackermann a5079f5031 fix typos in doc
svn: r15031
2010-04-04 21:06:45 +00:00
Raphael Ackermann e371599df4 docstring typo fixes
svn: r15030
2010-04-04 18:55:58 +00:00
Nick Hall 6ae2f1c81e GEPS 019: Improved sidebar which allows sidebar plugins
svn: r15029
2010-04-04 18:16:03 +00:00
Raphael Ackermann 5726d688ca 0003075: Image scaling in web pages
svn: r15028
2010-04-04 14:46:38 +00:00
Doug Blank c551d6beb1 Newyear import/export changes and fix
svn: r15027
2010-04-04 12:10:12 +00:00
Raphael Ackermann e740d374a9 doc typos
svn: r15026
2010-04-04 11:58:34 +00:00
Doug Blank cc843399a6 Typo on newyear fix
svn: r15024
2010-04-04 11:32:10 +00:00
Raphael Ackermann 10206b34a0 0002953: wrong handling of gramps id's on individual report. I44 and I440 I441 etc are all included when only I44 should be
replacing comparison by find with ==    (find only looks for substrings, doesn't check for equality of strings)

svn: r15023
2010-04-04 11:07:29 +00:00
Raphael Ackermann 08728c6bd4 doc typos
svn: r15022
2010-04-04 11:03:43 +00:00
Raphael Ackermann 40791a47bb added checks so that missing LOCALEDIR won't prevent gramps from starting
svn: r15021
2010-04-04 09:25:18 +00:00
Jérôme Rapinat 751888dacc 3756: Cannot set new year value different than default (first January) - remove list and parsing
svn: r15019
2010-04-04 06:43:27 +00:00
Rob G. Healey 1106d15cdc Fixed navigation menu spacing and alignment.
svn: r15014
2010-04-04 03:44:49 +00:00
Rob G. Healey cded0bcf9e Bug#2872: Fixed #streetaddress in ContactPage for Nebraska stylesheet.
svn: r15013
2010-04-04 02:52:02 +00:00
Doug Blank 1bacb0bfee 3756: Cannot set new year value different than default (first January) - removed textbased example so as not to confuse
svn: r15011
2010-04-03 23:36:07 +00:00
Doug Blank 7047015603 3756: Cannot set new year value different than default (first January)
svn: r15010
2010-04-03 23:33:17 +00:00
Doug Blank 0e330eb929 Added a --settings to show settings and versions (based on test_dependencies.py by Stephen George)
svn: r15009
2010-04-03 22:44:41 +00:00
Raphael Ackermann 8769efd0da 0003770: Transutils crashes if it cannot find /usr/local/share/locale
svn: r15006
2010-04-03 11:59:53 +00:00
Jérôme Rapinat 54172ab176 first test for newyear support
svn: r15005
2010-04-03 10:23:38 +00:00
Rob G. Healey a6dd3e861d Fixed download page table being oversized. Removed download page note from download page. Bug#3795 should be resolved.
svn: r15002
2010-04-03 01:22:40 +00:00
Peter Landgren 8ba3e7fbe5 Fix of issue 2740.
svn: r14998
2010-04-02 09:11:17 +00:00
Erik De Richter 95bba1aab3 update nl translation
svn: r14997
2010-04-02 07:25:58 +00:00
Rob G. Healey 4994fb128b Fixed a typo from eaxct_search to exact_search.
svn: r14995
2010-04-02 00:04:13 +00:00
Doug Blank 2f05c0f1b1 3789: Web report crash
svn: r14994
2010-04-01 23:36:21 +00:00
Rob G. Healey 16e1cc5e3e Exacted changes to reflect the change from Web_Alphabet-*.css to Web_Navigation-*.css
svn: r14991
2010-04-01 16:16:01 +00:00
Mirko Leonhäuser 59195c9303 Updated german translation
svn: r14990
2010-04-01 15:42:08 +00:00
Rob G. Healey ec6ccdc58f Changed names of Navigation Alphabet stylesheets. Cleanup code and stylesheets.
svn: r14988
2010-04-01 15:11:33 +00:00
Doug Blank 3e345733eb 3780: 'Gender contains' filter does not work as I expect
svn: r14985
2010-04-01 13:22:58 +00:00
Doug Blank 77feae36e2 3609: Can't open a gramps 3.1 database from trunk on Windows 7 64 bit from Gramps 3.2
svn: r14983
2010-04-01 01:19:04 +00:00
Doug Blank 5c4b9e0241 0003734: [Calendars] Only add persons whose birth date is year/01/01 on the first january
svn: r14981
2010-04-01 01:02:55 +00:00
Benny Malengier ed296c227d 3757: key2string map still in memory after XML import
svn: r14979
2010-03-31 08:26:36 +00:00
Rob G. Healey 08331a522f Fix for bug #3775. Add separation between citation links.
svn: r14978
2010-03-31 07:54:48 +00:00
Rob G. Healey 433033f6b8 Converted Date, Name, and NameType to gen.lib.object so that libaccess can be used instead.
svn: r14977
2010-03-31 02:45:39 +00:00
Benny Malengier 6b1c15db54 3783: NewPerson Dialogue: "available surname list" shows each occurrence of a family name instead of one per family name
svn: r14975
2010-03-30 13:41:23 +00:00
Rob G. Healey 902b343897 Changed some of the gen.lib objects back to gen.lib. EventType, Person, ChildRelType...
svn: r14973
2010-03-30 07:52:35 +00:00
Rob G. Healey 110c45c7f0 Made a few little changes to AddressBookList and AddressBookDetail.
svn: r14972
2010-03-30 07:49:47 +00:00
Nick Hall 993ac0db22 Fix bug introduced with adding column to place tree view
svn: r14970
2010-03-29 22:37:09 +00:00
Nick Hall 4ffef76fac 3740: Fix problems with add, delete and update of views when filter applied
svn: r14968
2010-03-29 16:00:24 +00:00
Peter Landgren 4a807a55e1 Swedish update.
svn: r14967
2010-03-29 13:20:22 +00:00
Espen Berg f88dce665b Revised Norwegian translation
svn: r14961
2010-03-28 16:05:05 +00:00
Stéphane Charette 876f0ac1d3 merged from 32: only scale images down, not up
svn: r14958
2010-03-28 14:48:23 +00:00
Stéphane Charette efaec2271c merged from 32: remove stray html on resized images
svn: r14957
2010-03-28 14:36:34 +00:00
Nick Hall f22febbea0 0407 and 1447: Save column widths in configuration file
svn: r14953
2010-03-28 00:55:09 +00:00
Nick Hall e090d8d250 3731: Add place name column to place tree view
svn: r14951
2010-03-27 23:00:41 +00:00
Raphael Ackermann 9d1bd83f5b typo in docstring
svn: r14949
2010-03-27 19:30:29 +00:00
Rob G. Healey d50cfb29f1 Created CSS elements for WebLinks sections in Individual Pages and AddressBook Pages. Fixed missing hyperlinks and description fields. Problem from Alain Aupeix. No bug tracker created.
svn: r14942
2010-03-27 07:11:10 +00:00
Mirko Leonhäuser ab4e3955ee Updated german translation
svn: r14940
2010-03-27 01:09:24 +00:00
Craig J. Anderson f2123db6f9 Fixed bug 2878
svn: r14939
2010-03-27 00:47:51 +00:00
Rob G. Healey befcd007fa Fixed missing notes and sources in Event Section of Individual Pages. Reported by Alain Aupeix and Stephane Charette. No bug report generated.
svn: r14937
2010-03-26 23:51:31 +00:00
Rob G. Healey dd5ba77a0a Fixed a navigation menu errors in WebCal and Basic-Blue and Visually.
svn: r14936
2010-03-26 22:51:53 +00:00
Nick Hall edaec66f47 Translate strings for hierarchy level headings
svn: r14935
2010-03-26 21:12:09 +00:00
Nick Hall 80a1b440b8 3752: Fix sort order of last-changed column
svn: r14933
2010-03-26 19:49:46 +00:00
Jérôme Rapinat e71d2d21c3 convert localized short months to DateObject
svn: r14930
2010-03-26 15:45:31 +00:00
Rob G. Healey 8d7784ab24 Fixed something in the Events section of IndividualPage.
svn: r14927
2010-03-26 05:54:05 +00:00
Rob G. Healey ab64cf35a9 Added notes and sources back to the Events on the IndividualPage again! It was on the EventPage. Problem brought me by Alvin and Stephane.
svn: r14926
2010-03-26 05:50:40 +00:00
Benny Malengier 229cf5ccc0 3761: Error when editing family event
svn: r14924
2010-03-24 19:46:21 +00:00
Benny Malengier 910d34c330 Solving connected date bugs
3390: Date module that reads calendar on Gedcom file format, cannot read the @
3763: dates parsed wrong
3754: Active markup for invalid date on Event View
Some other bugs might be fixed by these changes


svn: r14922
2010-03-24 16:05:42 +00:00
Boril Gourinov c58cbb8c08 Updating Bulgarian translation
svn: r14918
2010-03-23 20:43:27 +00:00
Serge Noiraud ac90dd4db5 ODFDoc : Issue 2576 : change run-through form background to foreground.
svn: r14916
2010-03-23 18:40:24 +00:00
Benny Malengier c17d595d70 3715: Plugin manager load/reload does not unload earlier versions of plugins
svn: r14914
2010-03-23 13:27:18 +00:00
Julio Sánchez 69bfb1e6bf Handle GEDCOM 5.5.1 formats for latitude and longitude (bug #3743)
svn: r14912
2010-03-22 22:35:53 +00:00
Jérôme Rapinat b5274cb626 3723: Some labels should be plural ?
svn: r14906
2010-03-22 17:17:24 +00:00
Jérôme Rapinat 0a2b0b84bf 3723: Some labels should be plural ?
svn: r14903
2010-03-22 13:11:18 +00:00
Erik De Richter f255dc43cd svn: r14901 2010-03-22 08:13:43 +00:00
Espen Berg 9afb254c53 Revised Norwegian bokmål translation
svn: r14899
2010-03-21 21:40:45 +00:00
Luigi Toscano d2355e3112 Merge translations from gramps32 branch, regenerate template
svn: r14898
2010-03-21 21:01:35 +00:00
Serge Noiraud 17e6af2afb GeoView : Issue 3749 : syncronize the crosshair to the new position.
svn: r14896
2010-03-21 16:21:41 +00:00
Serge Noiraud 7af6dd4490 GeoView : Issue 3749: better way to place the icon at the same place as googlemap do.
svn: r14892
2010-03-21 15:58:25 +00:00
Serge Noiraud 4cc0356d8a GeoView : Issue 3749 : Pin positions drift with zoom
svn: r14890
2010-03-21 15:24:52 +00:00
Benny Malengier aad74b8bb8 3690: Do not need to use underscore on text for file formats (import/export)
svn: r14889
2010-03-21 10:33:08 +00:00
Benny Malengier 739a0f0f43 3655: last modified timestamp changes everytime a tree is accessed
svn: r14887
2010-03-21 09:37:10 +00:00
Doug Blank c1938a8dfb 3742: Gramps 3.2 crashes on data entry
svn: r14883
2010-03-20 15:23:07 +00:00
Doug Blank 0b9baf268a 3475: Sort temple names on LDS Editor
svn: r14881
2010-03-20 14:30:35 +00:00
Doug Blank bbf2bfe654 Commented out set_pagesize to be compatible with previous versions of gramps (gramps31).
svn: r14880
2010-03-20 13:06:54 +00:00
Doug Blank 552f09ce07 3739: Find duplicate people (error in soundex unicode)
svn: r14878
2010-03-20 12:33:44 +00:00
Peter Landgren e2bb5062d1 Fix of issue 3737.
svn: r14877
2010-03-20 11:54:17 +00:00
Jérôme Rapinat 7d3cebada8 3744: Cannot display name, description, uri for 'Web Home' web link generated by NarrativeWeb (need descr)
svn: r14875
2010-03-20 08:25:55 +00:00
Jérôme Rapinat 42b092b307 3738: ftp url can lead to NarrativeWeb crash (typo)
svn: r14872
2010-03-20 04:20:18 +00:00
Rob G. Healey 929f63ceea Did some cleanup work on the import statements.
svn: r14870
2010-03-20 00:31:03 +00:00
Raphael Ackermann cb2bdd9613 0002857: Spacebar doesn't activate embedded edit buttons
svn: r14867
2010-03-19 13:47:20 +00:00
Doug Blank a13a0e1fcd 3728: Daterange with cformat doesn't XML-import
svn: r14866
2010-03-19 01:20:31 +00:00
Doug Blank b23abf392b Changed variable name to avoid conflict with reload function
svn: r14863
2010-03-18 23:56:10 +00:00
Benny Malengier 306671f9af 3715: Plugin manager load/reload does not unload earlier versions of plugins
svn: r14861
2010-03-18 22:27:45 +00:00
Jérôme Rapinat 38ae88a4ee 3729: plugin names are description
svn: r14856
2010-03-17 15:15:34 +00:00
Jérôme Rapinat 3521206d64 3694: Use of the same translation string on View as the name set on group
svn: r14855
2010-03-17 15:06:46 +00:00
Benny Malengier fbf86b4c2f 3706: GRAMPS plugins selecting a local path produces an error
svn: r14848
2010-03-16 08:54:35 +00:00
Benny Malengier fee41a2cde 3709: Typos and grammar mistakes
svn: r14845
2010-03-15 22:24:26 +00:00
Benny Malengier 1a2cf9dbbc 3709: Typos and grammar mistakes
svn: r14843
2010-03-15 22:15:29 +00:00
Benny Malengier 585e0fa85d 3709: Typos and grammar mistakes
svn: r14841
2010-03-15 22:11:25 +00:00
Benny Malengier 86238994bb 3721: RuntimeWarning on Event comparison tool
svn: r14839
2010-03-15 22:05:26 +00:00
Espen Berg cecfb0b1f2 Revised Norwegian translation
svn: r14833
2010-03-15 15:33:26 +00:00
Jérôme Rapinat 326cc6405b Some 16x16 images are missing, used by OS or desktop not able to scale SVG images
svn: r14831
2010-03-15 13:55:07 +00:00
Jérôme Rapinat 84ab4206dc 3696: Typo on translation strings into NarrativeWeb
svn: r14828
2010-03-15 11:13:51 +00:00
Jérôme Rapinat 234f721877 missing image for old distribution or desktop (no SVG support)
svn: r14826
2010-03-15 11:03:05 +00:00
Stéphane Charette 31bfbc7fff copy NEWS of 3.2.0 into trunk
svn: r14823
2010-03-15 07:52:14 +00:00
Serge Noiraud 2799929027 GeoView : first try to have navigation for person and family views.
svn: r14817
2010-03-14 17:59:29 +00:00
Boril Gourinov 32b59f6244 Bulgarian Calendar Holidays fixed tipo
svn: r14815
2010-03-14 15:19:19 +00:00
Boril Gourinov dccb1556f9 Bulgarian Calendar Holidays
svn: r14812
2010-03-14 14:19:37 +00:00
Doug Blank d1ea3c8728 3688: Fanchart view is built twice when made active
svn: r14810
2010-03-14 13:46:28 +00:00
Mirko Leonhäuser 2255d27455 Updated german translation
svn: r14809
2010-03-14 12:27:14 +00:00
Peter Landgren c6703ae1df Found a missing _
svn: r14805
2010-03-14 10:04:55 +00:00
Josip Pisoj ba5c34b559 hr translations
svn: r14802
2010-03-14 08:39:49 +00:00
Boril Gourinov de44cd39f3 Updating Bulgarian translation
svn: r14798
2010-03-13 21:32:32 +00:00
Peter Landgren 0cb50c9fc5 Fix of issue 3703.
svn: r14796
2010-03-13 20:26:22 +00:00
Jérôme Rapinat 8b421dfc4c 3708: Portuguese Date Handler updated (by lcc)
svn: r14791
2010-03-13 08:45:12 +00:00
Erik De Richter e3061d1c74 update nl translation
svn: r14790
2010-03-13 07:47:31 +00:00
Erik De Richter 057007a464 update nl translation
svn: r14788
2010-03-13 06:59:07 +00:00
Boril Gourinov 0f8219efba Bug fixing of DateParser class in _Date_bg.py.
svn: r14785
2010-03-12 23:04:56 +00:00
Boril Gourinov f3ff5bd3c8 Bulgarian translation update. Some minor spell errors fixed.
svn: r14784
2010-03-12 23:00:21 +00:00
Serge Noiraud e8fbf6279a GeoView : crosshair synchronization between providers.
config file named "None.ini"


svn: r14781
2010-03-12 21:10:49 +00:00
Jérôme Rapinat 21c6294599 update french translations
svn: r14777
2010-03-12 18:27:21 +00:00
Benny Malengier 8e6ee12497 add bulgarian date handler
svn: r14773
2010-03-12 08:33:53 +00:00
Benny Malengier 5fdebe709c add bulgarian date handler
svn: r14772
2010-03-12 08:31:26 +00:00
Nick Hall 14ea5e8a75 Correct maximum sizes for compact style trees
svn: r14768
2010-03-11 23:05:32 +00:00
Nick Hall 48712fb619 Fix problem with marriage box size for small trees
svn: r14767
2010-03-11 22:30:57 +00:00
Craig J. Anderson d9c5d83c33 fixed small type-o's and does not print ', ' before marriage infomration if no birth and death information
svn: r14765
2010-03-11 21:22:34 +00:00
Nick Hall 6801063087 Improvments to coding style (pylint=9.56). Also fixes bug #3698.
svn: r14763
2010-03-11 19:50:56 +00:00
Mirko Leonhäuser 0089bc4a85 Updated german translation
svn: r14762
2010-03-11 19:04:25 +00:00
Espen Berg 6bbbc809e9 Revised Norwegian bokmål translation
svn: r14760
2010-03-11 18:23:49 +00:00
Nick Hall fc18243040 Rebuild pedigree view if flagged as dirty
svn: r14758
2010-03-11 17:58:51 +00:00
Craig J. Anderson 2263d01498 ticket 3490, add marriage info into spousal line. refactored code.
svn: r14755
2010-03-11 16:44:45 +00:00
Rob G. Healey 71a21b507e Cleaned up display_url_list().
svn: r14749
2010-03-11 07:14:54 +00:00
Rob G. Healey 045d9542a7 Made each stylesheet consistence with AddressBookList elements.
svn: r14748
2010-03-11 07:03:43 +00:00
Rob G. Healey 34148aea8a NarrativeWeb: Fixed Address Book not creating page if there was no address. Stylesheets: Cleanup to correctly show AddressBookList.
svn: r14744
2010-03-10 22:40:14 +00:00
Boril Gourinov 8b0cc60344 Update of Bulgarian translation, sinchronization with 3.2
svn: r14742
2010-03-10 18:51:28 +00:00
Nick Hall 5f133cd21b 3691: Make all views displaying names respond to nameformat-changed signals
svn: r14737
2010-03-10 12:36:27 +00:00
Benny Malengier 72afaa04bb activate help buttons in editors
svn: r14734
2010-03-10 11:39:23 +00:00
Stéphane Charette fc09649901 merge of changeset 14731 to trunk; debian config files to create the .deb packages
svn: r14733
2010-03-10 09:45:30 +00:00
Stéphane Charette 2665e28d76 update copyright year in "about" dialog window
svn: r14729
2010-03-10 07:44:29 +00:00
Nick Hall 623d5d43e5 3687: Prevent multiple re-build of views when name format changed
svn: r14725
2010-03-09 22:40:07 +00:00
Benny Malengier 4aca1a8a3f make notrelated ok in glade designer
svn: r14723
2010-03-09 21:00:13 +00:00
Benny Malengier ada5e33c08 add help button to changenames as it is assumed in the code
svn: r14720
2010-03-09 20:53:45 +00:00
Nick Hall 28646e563f Add navigation menu items to place tree view
svn: r14717
2010-03-09 17:41:37 +00:00
Espen Berg f4889b5d0d Updated Norwegian bokmål
svn: r14714
2010-03-09 16:51:31 +00:00
Peter Landgren 9d4734403b Add message if addon has wrong version.
svn: r14710
2010-03-09 12:49:25 +00:00
Espen Berg 6c2995cb72 Updated Norwegian bokmål translation for trunk
svn: r14709
2010-03-09 09:49:18 +00:00
Craig J. Anderson b53c8b6e9d all for textreport/DescendReport.py. 1. fixed top level de_Villiers_Pama number
svn: r14708
2010-03-09 02:20:13 +00:00
Craig J. Anderson b216d06281 all for textreport/DescendReport.py. 1. added option 'show spouses.' 2. added 'Meurgey de Tupigny' and 'de Villiers/Pama' numbering systems. 3. refactored code.
svn: r14707
2010-03-09 01:43:26 +00:00
Doug Blank bd56197fcd Used module desc rather than plugin desc
svn: r14704
2010-03-09 01:21:53 +00:00
Josip Pisoj eed3ff80e0 bug #3662: SoundEx works only for ascii characters
svn: r14700
2010-03-08 18:12:13 +00:00
Peter Landgren 6d4838add9 Swedish update.
svn: r14697
2010-03-08 12:25:36 +00:00
Peter Landgren 345dacc135 Fixed a typo.
svn: r14696
2010-03-08 12:08:21 +00:00
Craig J. Anderson 157d27f262 updated authors.xml
svn: r14690
2010-03-08 03:06:44 +00:00
Doug Blank 8418c06ae0 3673: People with less than 1 year seems to be ignored on 'Age on Date' gramplet and 'Records' report
svn: r14689
2010-03-08 02:59:49 +00:00
Doug Blank 3ae0224e1a Removed Django import/export and CalcEstimateDates (moved to addons)
svn: r14685
2010-03-07 21:42:03 +00:00
Arturas Sleinius d1d83106ec Updated Lithuanian translation
svn: r14684
2010-03-07 21:21:18 +00:00
Doug Blank 4442a33f96 Speed-up for right-click menu
svn: r14681
2010-03-07 20:57:46 +00:00
Nick Hall 669db7237e Bug fix for multiple sort keys
svn: r14679
2010-03-07 19:49:50 +00:00
Benny Malengier 6802502aeb 3175: Crash when undoing a family edit- part of undo being slow
svn: r14677
2010-03-07 19:38:51 +00:00
Nick Hall d34e83d9ba Allow multiple sort keys on tree views
svn: r14673
2010-03-07 17:48:58 +00:00
Nick Hall 665e62edd1 Fix sort order in flat person view
svn: r14672
2010-03-07 17:27:53 +00:00
Benny Malengier a3b52f5878 3657: Calculation od step siblings is incorrect in narrated Web report
svn: r14667
2010-03-07 16:09:06 +00:00
Doug Blank 8efe5a27d6 Added FAQs with links from user list and wiki
svn: r14664
2010-03-07 16:07:13 +00:00
Benny Malengier 9ab5decb47 3667: Addings a new person and changing the name grouping results in frozen window
svn: r14662
2010-03-07 15:33:38 +00:00
Doug Blank 98ebcb9697 Added comments for gramplets
svn: r14661
2010-03-07 15:00:11 +00:00
Benny Malengier 5e01687b73 3671: Asymmetric strings in Check plugin
svn: r14659
2010-03-07 09:18:12 +00:00
Benny Malengier 6d96bac2f1 3672: Crosshair image missing from GeoView
svn: r14658
2010-03-07 09:10:49 +00:00
Doug Blank 953db778f2 Removed specific gramps version number in message
svn: r14654
2010-03-06 23:26:50 +00:00
Doug Blank dcfb25abc4 Trunk is now version 3.3.0
svn: r14653
2010-03-06 22:47:25 +00:00
Nick Hall 696f051d13 Add my name to authors file
svn: r14652
2010-03-06 16:09:32 +00:00
Espen Berg e4d1d29d34 Complete Norwegian bokmål translation in trunk
svn: r14650
2010-03-06 16:02:20 +00:00
Doug Blank a033320589 3665: Crash with Webcal report when linking with WebReport
svn: r14648
2010-03-06 13:29:02 +00:00
Peter Landgren d3d8431c46 One file was listed twice.
svn: r14646
2010-03-06 10:52:53 +00:00
Benny Malengier deece71d56 make fanchart a stable plugin
svn: r14645
2010-03-06 10:10:54 +00:00
Benny Malengier c6f071e43b 3441: Need to connect on_result_delete_event on glade dialogs - part 2
svn: r14641
2010-03-05 22:52:12 +00:00
Benny Malengier 4df36b23d3 3441: Need to connect on_result_delete_event on glade dialogs
svn: r14640
2010-03-05 22:36:04 +00:00
Craig J. Anderson bf09340cb7 (1)Removed dependancy on (not needed) dependancy SubstKeywords. (2)Code cleanup. (3)better use of def get_info.
svn: r14637
2010-03-05 21:36:59 +00:00
Jérôme Rapinat f6ccd8484f geoview icon for zoom missing
svn: r14635
2010-03-05 18:59:28 +00:00
Jérôme Rapinat 757a7d038e typo, only copy geo-place-add.svg
svn: r14633
2010-03-05 17:51:03 +00:00
Jérôme Rapinat 104b029daa PNG images for Gnome UI (SVG missing)
svn: r14631
2010-03-05 17:45:00 +00:00
Benny Malengier d7e9b5a9da 3271: Verify tool glade file needs to have elements renamed
svn: r14629
2010-03-05 15:43:50 +00:00
Benny Malengier a8206b52ac 2043: Error on cosole output when Esc press in configure window of custom text in the book report
svn: r14626
2010-03-05 15:24:07 +00:00
Peter Landgren d0803692e7 Delteted extended perdigree view.
svn: r14619
2010-03-04 14:54:34 +00:00
Peter Landgren b2b889e39c Fixed another three problems with string formatting using {}.
svn: r14616
2010-03-04 14:09:40 +00:00
Peter Landgren 244b8621fc Fixed another two problems with string formatting using {}.
svn: r14614
2010-03-04 13:56:26 +00:00
Peter Landgren 8636acda8e Fixed another problem with string formatting using {}.
svn: r14612
2010-03-04 13:48:49 +00:00
Peter Landgren 7ad1b8563f Fixed another problem with string formatting using {}.
svn: r14611
2010-03-04 13:39:22 +00:00
Jérôme Rapinat 7e0cfce9f7 3659: unable to load MediaManager
svn: r14609
2010-03-04 13:26:43 +00:00
Nick Hall 657fc3ba3c Swap lines so they show the correct relationship line style
svn: r14607
2010-03-04 12:09:47 +00:00
Jérôme Rapinat 71b2e58776 3661: Typo on all_events.py quickview
svn: r14605
2010-03-04 11:17:12 +00:00
Doug Blank a8e3439e80 Added some protection on loading bad views
svn: r14601
2010-03-04 01:04:08 +00:00
Nick Hall 3cf500040c Replace pedigree view with new extended pedigree view
svn: r14598
2010-03-03 23:12:56 +00:00
Boril Gourinov ef1ae45133 Update of Bulgarian translation, fixed some bugs
svn: r14597
2010-03-03 20:19:56 +00:00
Peter Landgren 3b1e7d5a36 Typo.
svn: r14596
2010-03-03 15:37:30 +00:00
Jérôme Rapinat ec7a7c869e 3654: Cannot print title on all_relations quick view
svn: r14594
2010-03-03 08:45:42 +00:00
Rob G. Healey 5f64246564 Moved colors for CurrentSection in navigation to stylesheet rather than navigation stylesheet.
svn: r14592
2010-03-03 06:59:33 +00:00
Rob G. Healey acb8e6384a Changed Navigation Menu spacing and layout. Move colors from Vertical to Basic-Blue.
svn: r14591
2010-03-03 06:49:57 +00:00
Gary Burton b99bcd2a89 Do not explicitly set an item width as it causes excessive whitespace around thumbnails when the image description becomes longer.
svn: r14589
2010-03-02 21:57:00 +00:00
Serge Noiraud d632f8a0c9 GeoView : synchronization with 3.2 : bad word and bug 3517.
svn: r14586
2010-03-02 21:10:57 +00:00
Mirko Leonhäuser 53a2dfe026 Updated _Date_de.py
svn: r14585
2010-03-02 20:27:17 +00:00
Nick Hall 1698f8ddbf Update history and MRU lists when objects are deleted
svn: r14581
2010-03-02 15:49:27 +00:00
Benny Malengier 045a787ad1 03650: Cannot execute changes proposed by Calculate Estimated Date
svn: r14577
2010-03-02 11:20:17 +00:00
Benny Malengier d594dcf247 03651: Deleting more than one person causes crash
Actually these are fixes trying to fix this bug


svn: r14575
2010-03-02 11:13:30 +00:00
Peter Landgren ef4ef445d1 Fix of issue 3653 (Windows only issue).
svn: r14567
2010-03-02 09:15:46 +00:00
Benny Malengier 8923efd27a include fanchart in distribution
svn: r14565
2010-03-02 08:12:50 +00:00
Rob G. Healey a6d8438b31 Fixed Horizontal/ Vertical menu options in NarrativeWeb. Fixed alphabet/navigation menus in the stylesheets.
svn: r14562
2010-03-02 07:40:48 +00:00
Rob G. Healey 84afe03996 Fixed overlapping border when mouse is over a hyperlink in alphabet navigation.
svn: r14561
2010-03-02 05:36:33 +00:00
Rob G. Healey d6e4126cea Fixed Navigation Menus. Updated stylesheets.
svn: r14559
2010-03-02 01:16:46 +00:00
Mirko Leonhäuser 05bceeff35 Updated _Date_de.py translated months
svn: r14557
2010-03-01 21:39:45 +00:00
Nick Hall a2e54ea390 3603: Make family option in reports default to the active family
svn: r14554
2010-03-01 19:20:13 +00:00
Peter Landgren 3e907c7e85 Dix of issue 3645.
svn: r14551
2010-03-01 18:08:09 +00:00
Nick Hall b9a98eaa3e 3646: Remove redundant code
svn: r14550
2010-03-01 17:46:20 +00:00
Benny Malengier 575a4bbd67 3542: Scratchpad does not remove objects when changing database
svn: r14546
2010-03-01 12:52:57 +00:00
Benny Malengier 4105b54984 Fix bug: allow drop from Nautilius/Dolphin
svn: r14542
2010-03-01 08:57:44 +00:00
Benny Malengier 699d0d9eb8 Fix bug: allow drop from Nautilius/Dolphin
svn: r14540
2010-03-01 08:51:48 +00:00
Boril Gourinov 2f8d6d0ce0 Update of Bulgarian translation, copy from 3.2 branch
svn: r14538
2010-02-28 22:12:33 +00:00
Peter Landgren f98d049f20 Further improvments to drag and drop mult files in Windows.
svn: r14535
2010-02-28 21:29:24 +00:00
Gary Burton 20105369fd Fix for 0003629: Cannot set entry on marker field into NotRelated tool
svn: r14533
2010-02-28 21:13:37 +00:00
Gary Burton 2fdd3817f0 Align vertical position of person label and edit button
svn: r14529
2010-02-28 19:59:23 +00:00
Nick Hall 4f7a2d7593 Only update display counts for nodes with handles
svn: r14527
2010-02-28 17:27:43 +00:00
Nick Hall ccbe040c1f 3448: Prevent removal of hidden root node
svn: r14525
2010-02-28 17:02:26 +00:00
Gary Burton 6d96f92a00 Improve GEDCOM round trip by parsing SOUR and NOTE tokens for FACT attributes. Gramps was previously exporting this data but ignoring it on import.
svn: r14523
2010-02-28 16:18:47 +00:00
Jérôme Rapinat e6627850d5 typo
svn: r14520
2010-02-28 15:27:20 +00:00
Benny Malengier fd867e93ba 3631: Cannot start Gramps without any view loaded (OK, it is stupid...)
svn: r14518
2010-02-28 14:27:59 +00:00
Benny Malengier 528ba93613 Fix drag/drop bug: allow multiple drop on gallery
svn: r14515
2010-02-28 14:02:45 +00:00
Gary Burton 24bf1c6434 Fix GEDCOM import of CHAN for SOUR, REPO, OBJE. Bug 3373.
svn: r14513
2010-02-28 12:28:49 +00:00
Peter Landgren 5314acd4fa Fixed a type 'juct' -> 'just'.
svn: r14509
2010-02-27 14:22:10 +00:00
Peter Landgren 80b41f402c Made translation more consistent.
svn: r14508
2010-02-27 14:19:43 +00:00
Peter Landgren 88c481ce2b Fix of issue 3642.
svn: r14506
2010-02-27 13:30:11 +00:00
Doug Blank 3fb9d1fcae 3639: Check and Repair tool fails with unsupported operand
svn: r14503
2010-02-27 12:12:55 +00:00
Jérôme Rapinat e5ee70c94b typo
svn: r14502
2010-02-27 09:30:42 +00:00
Rob G. Healey 05edffadad Still working on it.
svn: r14495
2010-02-26 07:01:15 +00:00
Doug Blank ea86578163 3639: Check and Repair tool fails with unsupported operand
svn: r14493
2010-02-26 01:54:19 +00:00
Rob G. Healey f0b68e8d94 Fixed place.lat and place.long in class PlaceListPage. Working on Navigation menu placement and look.
svn: r14492
2010-02-26 01:02:12 +00:00
Rob G. Healey 518b5681f2 Re-working the Vertical Navigation Menu.
svn: r14491
2010-02-25 23:55:10 +00:00
Rob G. Healey d3a1cae6ae Added Vertical and Horizontal Navigation Menus back into NarrativeWeb. Added State, Country, and Lat & Long to the PlacesListPage.
svn: r14490
2010-02-25 22:28:03 +00:00
Jérôme Rapinat 5d2c817048 typo
svn: r14488
2010-02-25 17:19:12 +00:00
Rob G. Healey bcedebba64 Fixed an error on line 691-- named variables. Thanks Peter for pointing it out.
svn: r14486
2010-02-25 16:53:31 +00:00
Rob G. Healey 6593bcc66f Something else was wrong.
svn: r14484
2010-02-25 15:54:31 +00:00
Rob G. Healey 36a91b6cb9 Changed some formatted strings to named variables for 'make distcheck' to work properly.
svn: r14483
2010-02-25 15:52:32 +00:00
Peter Landgren b2cfa9c776 Update of Swedish translation after some problems(Murphy's Law).
svn: r14482
2010-02-25 15:35:55 +00:00
Benny Malengier d2a341f19e translate category in menu and title
svn: r14479
2010-02-25 12:59:12 +00:00
Doug Blank 5868bd6c21 3628: Frames not set on CalcToolManagedWindow class
svn: r14472
2010-02-25 01:05:46 +00:00
Peter Landgren 61805bc090 Swedish update.
svn: r14451
2010-02-24 13:58:18 +00:00
Rob G. Healey a23786bb26 Fixed two errors incurred from r14448.
svn: r14449
2010-02-24 07:10:40 +00:00
Rob G. Healey a4bc9b6d2b Added formatted strings for distcheck.
svn: r14448
2010-02-24 06:37:21 +00:00
Peter Landgren 61ae6d87ec Fix of issue 3534.
svn: r14447
2010-02-23 13:47:09 +00:00
Peter Landgren 284af59757 Fix of issue 3534.
svn: r14446
2010-02-23 13:45:49 +00:00
Serge Noiraud 947dc67886 GeoView : Don't use a dot at the end of messages in the configuration window.
svn: r14443
2010-02-22 18:09:46 +00:00
Jérôme Rapinat a1a704f9e8 disable translations without active translators and too many untranslated strings
svn: r14439
2010-02-22 15:30:40 +00:00
Doug Blank 696b236777 Changes to allow distcheck to pass
svn: r14436
2010-02-22 12:05:37 +00:00
Peter Landgren ba5f5ea7eb Missed () in some constfunc.win().
svn: r14434
2010-02-22 08:17:36 +00:00
Stéphane Charette 4a68664f47 increment version number on trunk
svn: r14431
2010-02-22 02:52:51 +00:00
Serge Noiraud 2618b3adfd GeoView : Allow message translation.
svn: r14430
2010-02-21 20:57:29 +00:00
Mirko Leonhäuser 21d65684b3 Update german translation
svn: r14428
2010-02-21 16:09:43 +00:00
Erik De Richter fbd7348ceb update nl translation
svn: r14426
2010-02-21 15:12:05 +00:00
638 changed files with 223184 additions and 167788 deletions
+51
View File
@@ -1,3 +1,54 @@
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.
* See the release notes from the 3.2.1 release for the full list of changes and translation updates.
Version 3.2.1 -- the "One of those men is my father" release.
* Many bug fixes:
-> fixed missing icons
-> load/reload plugins must unload old plugins
-> import/export fixes (date ranges, underscore, latitude/longitude)
-> narrative web crash fixes and many updates, html notes, css updates
-> geoview fixes and updates
-> unicode error in soundex
-> fixed crash on data entry
* Translation updates: bg, ca, de, es, fr, he, hr, it, nb, nl, sk, sv
Version 3.2.0 -- the "I am your father" release.
* New Plugin System:
-> In the Help Menu -> Menu Status, all available plugins are visible. All
plugins can be hidden, saving resources and hiding options you do not need.
* Faster:
-> Many under the hood improvements have occurred that should improve
performance enormously. New features are implemented as plugins that can
be hidden.
-> Performance improvement example: Insertion of a new person in a family
tree with 30000 people previously took 4 seconds on a 1.4GHz PC running
Gramps 3.1, but now takes milliseconds.
* New Views:
-> There are new views, and some existing views have been greatly improved
-> People view can now be sorted on the columns
-> A Place treeview is present, nicely grouping your places under country
groups
-> GeoView has left it's beta status behind and shows your data on an online
map (OpenStreetMap or Google Maps, a fast internet connection is required)
-> Help Menu -> Extra Reports/Tools open a webpage with downloadable views
* Other Improvements:
-> Styled Notes now in most output formats that support styles
-> New languages
-> Select language in which report should be created (not yet available in
all reports)
Version 3.1.3 -- the "What name?" release.
* contains translation updates, crash fixes, bug fixes, and minor updates.
* fixes and updates to:
+1 -1
View File
@@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/bash
# Run this to generate all the initial makefiles, etc.
# $Id$
+8 -4
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.0, [gramps-bugs@lists.sourceforge.net])
AC_INIT(gramps, 3.3.0, [gramps-bugs@lists.sourceforge.net])
AC_CONFIG_SRCDIR(configure.in)
AM_INIT_AUTOMAKE([1.6.3 foreign])
@@ -33,7 +33,7 @@ AC_SUBST(RELEASE)
AC_SUBST(VERSIONSTRING)
dnl Add the languages which your application supports here.
ALL_LINGUAS="hu zh_CN cs da de es fr it nb nl nn pl pt_BR ro ru sv eo fi lt sk tr bg hr sl ca mk sq he"
ALL_LINGUAS="hu zh_CN cs da de es fr it nb nl nn pl pt_BR ru sv fi lt sk bg hr sl ca sq he"
GETTEXT_PACKAGE=gramps
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Define to the Gettext package name.])
@@ -93,6 +93,7 @@ gramps.sh
src/const.py
src/Makefile
src/cli/Makefile
src/cli/plug/Makefile
src/gen/Makefile
src/gen/db/Makefile
src/gen/display/Makefile
@@ -102,11 +103,14 @@ src/gen/plug/Makefile
src/gen/plug/docbackend/Makefile
src/gen/plug/docgen/Makefile
src/gen/plug/menu/Makefile
src/gen/plug/report/Makefile
src/gen/proxy/Makefile
src/gen/utils/Makefile
src/gui/Makefile
src/gui/editors/Makefile
src/gui/editors/displaytabs/Makefile
src/gui/plug/Makefile
src/gui/plug/report/Makefile
src/gui/selectors/Makefile
src/gui/views/Makefile
src/gui/views/treemodels/Makefile
@@ -127,8 +131,6 @@ src/Filters/Rules/Note/Makefile
src/Filters/SideBar/Makefile
src/Simple/Makefile
src/GrampsLocale/Makefile
src/PluginUtils/Makefile
src/ReportBase/Makefile
src/plugins/Makefile
src/plugins/docgen/Makefile
src/plugins/drawreport/Makefile
@@ -140,10 +142,12 @@ src/plugins/lib/Makefile
src/plugins/mapservices/Makefile
src/plugins/quickview/Makefile
src/plugins/rel/Makefile
src/plugins/sidebar/Makefile
src/plugins/textreport/Makefile
src/plugins/tool/Makefile
src/plugins/view/Makefile
src/plugins/webreport/Makefile
src/plugins/webstuff/Makefile
src/DateHandler/Makefile
src/data/Makefile
src/glade/Makefile
+13 -10
View File
@@ -55,7 +55,7 @@ DATABASE
<!ELEMENT database (header, name-formats?, events?, people?, families?,
sources?, places?, objects?, repositories?, notes?,
bookmarks?,namemaps?)>
<!ATTLIST database xmlns CDATA #FIXED "http://gramps-project.org/xml/1.3.0/">
<!ATTLIST database xmlns CDATA #FIXED "http://gramps-project.org/xml/1.4.0/">
<!-- ************************************************************
HEADER
@@ -96,7 +96,7 @@ PEOPLE
home IDREF #IMPLIED
>
<!ELEMENT person (gender, name*, nick?, eventref*, lds_ord*,
<!ELEMENT person (gender, name*, eventref*, lds_ord*,
objref*, address*, attribute*, url*, childof*,
parentin*, personref*, noteref*, sourceref*)>
<!ATTLIST person
@@ -112,7 +112,7 @@ GENDER has values of M, F, or U.
-->
<!ELEMENT gender (#PCDATA)>
<!ELEMENT name (first?,call?,last?,suffix?,patronymic?,title?,
<!ELEMENT name (first?,call?,surname*,nick?,familynick?,suffix?,title?,group?
(daterange|datespan|dateval|datestr)?,noteref*,sourceref*)>
<!ATTLIST name
alt (0|1) #IMPLIED
@@ -124,16 +124,19 @@ GENDER has values of M, F, or U.
<!ELEMENT first (#PCDATA)>
<!ELEMENT call (#PCDATA)>
<!ELEMENT last (#PCDATA)>
<!ATTLIST last
prefix CDATA #IMPLIED
group CDATA #IMPLIED
>
<!ELEMENT suffix (#PCDATA)>
<!ELEMENT patronymic (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT nick (#PCDATA)>
<!ELEMENT familynick (#PCDATA)>
<!ELEMENT group (#PCDATA)>
<!ELEMENT nick (#PCDATA)>
<!ELEMENT surname (#PCDATA)>
<!ATTLIST surname
prefix CDATA #IMPLIED
primary (1|0) #IMPLIED
derivation CDATA #IMPLIED
connector CDATA #IMPLIED
>
<!ELEMENT childof EMPTY>
<!ATTLIST childof hlink IDREF #REQUIRED
+25 -8
View File
@@ -31,7 +31,7 @@
<grammar
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
ns="http://gramps-project.org/xml/1.3.0/"
ns="http://gramps-project.org/xml/1.4.0/"
xmlns="http://relaxng.org/ns/structure/1.0">
<start><element name="database">
@@ -150,7 +150,6 @@
<zeroOrMore><element name="name">
<ref name="name-content"/>
</element></zeroOrMore>
<optional><element name="nick"><text/></element></optional>
<zeroOrMore><element name="eventref">
<ref name="eventref-content"/>
</element></zeroOrMore>
@@ -221,13 +220,13 @@
<optional><attribute name="display"><text/></attribute></optional>
<optional><element name="first"><text/></element></optional>
<optional><element name="call"><text/></element></optional>
<optional><element name="last">
<text/>
<optional><attribute name="prefix"><text/></attribute></optional>
<optional><attribute name="group"><text/></attribute></optional>
</element></optional>
<optional><element name="nick"><text/></element></optional>
<optional><element name="familynick"><text/></element></optional>
<optional><element name="group"><text/></element></optional>
<zeroOrMore><element name="surname">
<ref name="surname-content"/>
</element></zeroOrMore>
<optional><element name="suffix"><text/></element></optional>
<optional><element name="patronymic"><text/></element></optional>
<optional><element name="title"><text/></element></optional>
<optional><ref name="date-content"/></optional>
<zeroOrMore><element name="noteref">
@@ -238,6 +237,24 @@
</element></zeroOrMore>
</define>
<define name="surname-content">
<element name="surname">
<text/>
<optional><attribute name="prefix"><text/></attribute></optional>
<optional><attribute name="primary"><choice>
<value>1</value>
<value>0</value>
</choice></attribute></optional>
<optional><attribute name="derivation"><choice>
<value>inherited</value>
<value>patronymic</value>
<value>matronymic</value>
<value>other</value>
</choice></attribute></optional>
<optional><attribute name="connector"><text/></attribute></optional>
</element>
</define>
<define name="address-content">
<optional><attribute name="priv">
<ref name="priv-content"/>
+12 -5
View File
@@ -3,9 +3,16 @@ gramps for Debian
This is the Debian package of GRAMPS.
If you do not install python-reportlab (gramps Recommends it be
installed) then you will be able to create usable PDF files only if
your database contains solely latin (iso-8859-1) characters. Reportlab
will generate PDF files containing non-latin characters although they
are quite large as the font must be included in the file.
Regarding the extra dependencies:
Recommends: graphviz
Enable creation of graphs
Recommends: python-gtkmozembed
Recommends: python-webkit
Enable html rendering for Geographic view and Web view. If both
are installed webkit will be used. python-gtkmozembed may be more
stable.
Suggests: ttf-freefont
Allows more fonts in reports
Suggests: python-gtkspell python-enchant
allows spell checking in the notes. Both need to be installed.
+251 -6
View File
@@ -1,20 +1,265 @@
gramps (3.0.0-1) gutsy; urgency=low
gramps (3.2.0-0beta1) unstable; urgency=low
* New upstream release
* works with gtk 2.19. Closes: #566958
-- James A. Treacy <treacy@debian.org> Fri, 05 Mar 2010 14:05:39 -0500
gramps (3.1.3-2) unstable; urgency=low
* Switch to dpkg-source 3.0 (quilt) format
-- James A. Treacy <treacy@debian.org> Tue, 05 Jan 2010 20:04:30 -0500
gramps (3.1.3-1) unstable; urgency=low
* New upstream release
-- Stephane Charette <stephanecharette@gmail.com> Mon, 31 Mar 2008 19:42:05 -0700
-- James A. Treacy <treacy@debian.org> Sun, 06 Dec 2009 13:46:48 -0500
gramps (2.90.0-0beta) unstable; urgency=low
gramps (3.1.2-2) unstable; urgency=low
* allow python >= 2.5. Closes: #547150
* fix Relationship Graph to use new format for URLs. Closes: #532559
* Web report creation fixed. Closes: #537355
-- James A. Treacy <treacy@debian.org> Tue, 17 Nov 2009 11:38:43 -0500
gramps (3.1.2-1.1) unstable; urgency=low
* Non-maintainer upload.
* debian/control: drop Recommends on python-gnome2-desktop: it is now
gone and none of its modules are used anyhow (Closes: #541560)
-- Stefano Zacchiroli <zack@debian.org> Thu, 08 Oct 2009 13:52:35 +0200
gramps (3.1.2-1) unstable; urgency=low
* New upstream release.
* Replace Recommends on python-gnome2-extras with python-gtkspell
* Do not create the directory /etc/gconf/schemas/. Closes: Bug#525683
-- James A. Treacy <treacy@debian.org> Sun, 07 Jun 2009 14:01:16 -0400
gramps (3.1.1-1) unstable; urgency=low
* New upstream release.
-- James A. Treacy <treacy@debian.org> Tue, 10 Mar 2009 09:26:52 -0400
gramps (3.1.0-1) unstable; urgency=low
* New upstream release.
* link /usr/share/common-licenses/GPL-2 from /usr/share/gramps/COPYING
so gramps can find the file.
-- James A. Treacy <treacy@debian.org> Sat, 07 Mar 2009 22:03:09 -0500
gramps (3.0.4-1) unstable; urgency=low
* New upstream version. Closes: #506621, #506818
-- James A. Treacy <treacy@debian.org> Sun, 07 Dec 2008 21:39:55 -0500
gramps (3.0.3-1) unstable; urgency=low
* New upstream version
-- James A. Treacy <treacy@debian.org> Mon, 20 Oct 2008 20:43:35 -0400
gramps (3.0.2-1) unstable; urgency=low
* New upstream version
-- James A. Treacy <treacy@debian.org> Sat, 27 Sep 2008 17:25:09 -0400
gramps (3.0.1-2) unstable; urgency=low
* Remove dependency on gnome-doc-utils and scrollkeeper
* Disable spell checking in src/Spell.py due to the spell checker
crashing. Closes: #492212
Spell checking will be reenabled once the offending package is
identified and fixed.
-- James A. Treacy <treacy@debian.org> Fri, 29 Aug 2008 11:09:04 -0400
gramps (3.0.1-1) unstable; urgency=low
* New upstream version
-- James A. Treacy <treacy@debian.org> Mon, 19 May 2008 09:38:28 -0400
gramps (3.0.0-6) unstable; urgency=low
* Fix typo in _EditChildRef.py which can cause gramps to crash. Closes: #476163
-- James A. Treacy <treacy@debian.org> Tue, 15 Apr 2008 23:37:04 -0400
gramps (3.0.0-5) unstable; urgency=low
* Remove gtkspell Recommends as it is now provided by python-gnome2-extras.
Closes: Bug#474755
-- James A. Treacy <treacy@debian.org> Mon, 07 Apr 2008 17:25:18 -0400
gramps (3.0.0-4) unstable; urgency=low
* Fix the binary package python dependency properly. A recent python
(>= 2.4.4-6) is needed to ensure python2.5 is supported properly.
Closes: #474056
-- James A. Treacy <treacy@debian.org> Thu, 03 Apr 2008 09:46:28 -0400
gramps (3.0.0-3) unstable; urgency=low
* Build-Depends on Python2.5. Closes: Bug#473946, #474056
-- James A. Treacy <treacy@debian.org> Wed, 02 Apr 2008 08:28:27 -0400
gramps (3.0.0-2) unstable; urgency=low
* Explicitly require python version >= 2.5
-- James A. Treacy <treacy@debian.org> Wed, 26 Mar 2008 09:34:25 -0400
gramps (3.0.0-1) unstable; urgency=low
* New upstream release. Closes: #472681
-- James A. Treacy <treacy@debian.org> Tue, 25 Mar 2008 09:35:00 -0400
gramps (2.2.10-2) unstable; urgency=low
* Remove build dependency on python-xml. Closes: Bug#468625
-- James A. Treacy <treacy@debian.org> Fri, 29 Feb 2008 13:30:11 -0500
gramps (2.2.10-1) unstable; urgency=low
* New upstream release
* Added dh_icons to debian/rules. Closes: #454761
* Remove version from scrollkeeper dependency. Closes: #456600
* Fixed typos in description. Closes: #433559
-- James A. Treacy <treacy@debian.org> Mon, 14 Jan 2008 09:57:25 -0500
gramps (2.2.9-2) unstable; urgency=low
* Move debhelper to Build-Depends. Closes: #447948
-- James A. Treacy <treacy@debian.org> Wed, 24 Oct 2007 20:03:36 -0400
gramps (2.2.9-1) unstable; urgency=low
* New upstream release
-- Stephane Charette <stephanecharette@gmail.com> Wed, 16 Jan 2008 21:45:00 -0800
-- James A. Treacy <treacy@debian.org> Thu, 18 Oct 2007 13:14:30 -0400
gramps (2.1.6-1) unstable; urgency=low
gramps (2.2.8-2) unstable; urgency=low
* Work around a bug in gnome-python-extras which caused a deallocation
of the TextView in the check if a spell checker is present.
Closes: #445864
-- James A. Treacy <treacy@debian.org> Tue, 09 Oct 2007 17:26:54 -0400
gramps (2.2.8-1) unstable; urgency=low
* New Upstream version
* Misleading error message changed. Closes: #418033
-- James A. Treacy <treacy@debian.org> Mon, 28 May 2007 21:00:51 -0400
gramps (2.2.7-2) unstable; urgency=low
* Added dependency on librsvg2-common
-- James A. Treacy <treacy@debian.org> Mon, 23 Apr 2007 19:32:00 -0400
gramps (2.2.7-1) unstable; urgency=low
* New upstream version
-- James A. Treacy <treacy@debian.org> Sun, 22 Apr 2007 20:08:55 -0400
gramps (2.2.6-1) unstable; urgency=low
* New upstream version
-- James A. Treacy <treacy@debian.org> Mon, 29 Jan 2007 20:12:05 -0500
gramps (2.2.5-0rc1-1) unstable; urgency=low
* rc1 of 2.2.5
-- James A. Treacy <treacy@debian.org> Thu, 25 Jan 2007 23:04:24 -0500
gramps (2.2.4-1) unstable; urgency=low
* New upstream release
-- Alex Roitman <shura@gramps-project.org> Thu, 22 Jun 2006 13:28:14 -0700
-- James A. Treacy <treacy@debian.org> Wed, 27 Dec 2006 18:04:11 -0500
gramps (2.2.3-1) unstable; urgency=low
* New upstream release
-- James A. Treacy <treacy@debian.org> Mon, 27 Nov 2006 00:27:23 -0500
gramps (2.2.2-2) unstable; urgency=low
* call dh_desktop in debian/rules so .desktop file is registered. Closes: Bug#398423
-- James A. Treacy <treacy@debian.org> Mon, 13 Nov 2006 20:26:00 -0500
gramps (2.2.2-1) unstable; urgency=low
* Bumped upstream version number. 2.2.1-3 and -4 should have been 2.2.2
-- James A. Treacy <treacy@debian.org> Sat, 4 Nov 2006 16:34:47 -0500
gramps (2.2.1-4) unstable; urgency=low
* add missing Build-Depends-Indep. Closes: #396874
-- James A. Treacy <treacy@debian.org> Fri, 3 Nov 2006 11:03:35 -0500
gramps (2.2.1-3) unstable; urgency=low
* New Upstream release
-- James A. Treacy <treacy@debian.org> Fri, 3 Nov 2006 08:07:38 -0500
gramps (2.2.1-2) unstable; urgency=low
* Upload to sid
-- James A. Treacy <treacy@debian.org> Wed, 1 Nov 2006 20:50:28 -0500
gramps (2.2.1-1) experimental; urgency=low
* New upstream release
-- James A. Treacy <treacy@debian.org> Mon, 30 Oct 2006 10:32:43 -0500
gramps (2.1.95-1) experimental; urgency=low
* Beta release of version 2.2
-- James A. Treacy <treacy@debian.org> Tue, 29 Aug 2006 11:40:08 -0400
gramps (2.1.90-1) experimental; urgency=low
* Beta release of version 2.2
-- James A. Treacy <treacy@debian.org> Tue, 25 Jul 2006 00:18:15 -0400
gramps (2.0.11-2) unstable; urgency=low
* Complies with new python policy
-- James A. Treacy <treacy@debian.org> Wed, 5 Jul 2006 14:47:56 -0400
gramps (2.0.11-1) unstable; urgency=low
+1 -1
View File
@@ -1 +1 @@
4
7
+20 -16
View File
@@ -1,23 +1,27 @@
Source: gramps
Section: gnome
Priority: optional
Maintainer: James A. Treacy <treacy@debian.org>
Build-Depends-Indep: debhelper (>=5.0.37.2), python-xml, python-gnome2, python-glade2, scrollkeeper, libglib2.0-dev, build-essential, gnome-doc-utils, intltool, xsltproc, python-central (>= 0.4.17)
Standards-Version: 3.6.2
XS-Python-Version: current
Maintainer: Stéphane Charette <stephanecharette@gmail.com>
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/
XS-Python-Version: >=2.5
Package: gramps
Architecture: all
Depends: ${python:Depends}, python-gnome2, python-glade2, ${misc:Depends}
Replaces: gramps-manual, gramps-extending-doc, gramps-help
Conflicts: gramps-manual, gramps-extending-doc, gramps-common
Recommends: graphviz, ttf-freefont, python-reportlab, python-gnome2-extras
Description: Genealogical Research and Analysis Management Program
GRAMPS, the Genealogical Research and Analysis Management Programming
System, is an Open Source genealogy program written in Python, using
the GTK/GNOME interface.
GRAMPS has the ability to import GEDCOM files that are used in such
programs as FamilyTree Maker for Windows and can produce reports
in various formats such as the popular ABIWord and OpenOffice.org
formats as well as HTML and PDF.
Depends: ${python:Depends}, librsvg2-common, python-gtk2, xdg-utils, ${misc:Depends}
Replaces: gramps-manual, gramps-extending-doc
Conflicts: gramps-manual, gramps-extending-doc, gramps-common, python-gtk-1.2
Recommends: graphviz, python-webkit, python-gtkmozembed
Suggests: ttf-freefont, python-enchant, python-gtkspell
Description: Genealogical research program
GRAMPS is an Open Source genealogy program written in Python, using
the GTK/GNOME interface. It is an extremely flexible program fitting
the needs for both the amateur genealogist and serious genealogical
researcher.
GRAMPS has the ability to import GEDCOM files exported from many
proprietary genealogy programs and can produce a large number of
reports in many popular formats.
XB-Python-Version: ${python:Versions}
+1
View File
@@ -1 +1,2 @@
usr/share/pixmaps
usr/share/mime/packages
+3
View File
@@ -0,0 +1,3 @@
/usr/bin/
/usr/share/
/etc
+1 -1
View File
@@ -1,3 +1,3 @@
?package(gramps):needs="X11" section="Apps/Tools"\
?package(gramps):needs="X11" section="Applications/Office"\
title="gramps" command="/usr/bin/gramps"\
icon="/usr/share/pixmaps/gramps.xpm"
+1
View File
@@ -0,0 +1 @@
2
+29 -32
View File
@@ -4,71 +4,68 @@ build: build-stamp
build-stamp:
dh_testdir
./configure \
--enable-packager-mode \
--disable-scrollkeeper \
--prefix=/usr \
--mandir=\$${prefix}/share/man \
--sysconfdir=/etc
#./autogen.sh --prefix=/usr --mandir=\$${prefix}/share/man --sysconfdir=/etc
./configure --enable-packager-mode --prefix=/usr --mandir=\$${prefix}/share/man --sysconfdir=/etc
# ./configure --prefix=`pwd`/debian/tmp/usr --mandir=\$${prefix}/share/man
$(MAKE)
# $(MAKE) html
touch build-stamp
clean:
dh_testdir
dh_testroot
-rm -f build-stamp
-$(MAKE) clean
-rm -f src/*.pyo src/*/*.pyo src/*/*/*.pyo src/*/*/*/*.pyo
-rm -f config.status config.log
# [ ! -f Makefile ] || $(MAKE) distclean
# -rm -f src/*.pyo src/*/*.pyo
# -rm -f config.status config.log
dh_auto_clean
dh_clean
install: build
dh_testdir
dh_testroot
dh_clean -k
dh_prep
dh_installdirs
GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1
# Add here commands to install the package into debian/tmp.
# GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1
$(MAKE) install DESTDIR=`pwd`/debian/gramps
# Remove help-related dirs, they will go into gramps-help package
-rm -rf debian/gramps/usr/share/gnome
-rm -rf debian/gramps/usr/share/omf
# Remove byte-compiled python files
-rm -f debian/gramps/usr/share/gramps/COPYING
ln -s /usr/share/common-licenses/GPL-2 debian/gramps/usr/share/gramps/COPYING
-rm -rf debian/gramps/usr/var
# cp src/data/gramps.xml debian/gramps/usr/share/mime/packages
-find debian/gramps/usr/share/ -name "*.pyo" -exec rm -f '{}' ';'
# Copy icon file
cp debian/gramps.xpm debian/gramps/usr/share/pixmaps/
# cp src/gramps.xpm debian/tmp/usr/share/pixmaps/
#cp src/data/gramps.svg debian/gramps/usr/share/pixmaps/
#chmod 644 debian/gramps/usr/share/pixmaps/gramps.svg
# Instal gramps-help things
#$(MAKE) -C help install DESTDIR=`pwd`/debian/gramps-help
# cp src/images/gramps.svg debian/gramps/usr/share/pixmaps/
# chmod 644 debian/gramps/usr/share/pixmaps/gramps.svg
# Build architecture-independent files here.
binary-indep: build install
dh_testdir
dh_testroot
dh_installdocs
dh_installmenu --package=gramps
dh_installman --package=gramps
dh_installdocs FAQ
dh_installmenu
# dh_installman
dh_installmime -i
dh_installchangelogs --package=gramps ChangeLog
#dh_installchangelogs --package=gramps-help help/ChangeLog
dh_gconf --package=gramps
#dh_scrollkeeper --package=gramps-help
# dh_installchangelogs ChangeLog
dh_installchangelogs
dh_icons
# dh_movefiles -i
# dh_gconf -i
dh_link -i
dh_compress -i
dh_fixperms -i
dh_python --package=gramps
dh_installdeb -i
dh_pycentral -i
dh_installdeb -i
dh_gencontrol -i
dh_md5sums -i
dh_builddeb -i
# Build architecture-dependent files here.
binary-arch: build install
+11
View File
@@ -0,0 +1,11 @@
#########################################
The :class:`RelationshipCalculator` Class
#########################################
Contents:
.. automodule:: Relationship
.. autoclass:: RelationshipCalculator
:members:
:undoc-members:
:show-inheritance:
+62 -38
View File
@@ -46,6 +46,7 @@ src/cli/arghandler.py
src/cli/argparser.py
src/cli/clidbman.py
src/cli/grampscli.py
src/cli/plug/__init__.py
# gen API
src/gen/__init__.py
@@ -109,12 +110,15 @@ src/gen/lib/eventref.py
src/gen/lib/privsrcnote.py
src/gen/lib/placebase.py
src/gen/lib/name.py
src/gen/lib/nametype.py
src/gen/lib/nameorigintype.py
src/gen/lib/addressbase.py
src/gen/lib/family.py
src/gen/lib/event.py
src/gen/lib/nametype.py
src/gen/lib/secondaryobj.py
src/gen/lib/srcbase.py
src/gen/lib/surname.py
src/gen/lib/surnamebase.py
src/gen/lib/eventtype.py
src/gen/lib/researcher.py
src/gen/lib/familyreltype.py
@@ -170,6 +174,12 @@ src/gen/plug/docbackend/__init__.py
src/gen/plug/docbackend/cairobackend.py
src/gen/plug/docbackend/docbackend.py
# plugin report base API (was ReportBase)
src/gen/plug/report/_constants.py
src/gen/plug/report/_paper.py
src/gen/plug/report/endnotes.py
src/gen/plug/report/utils.py
# gen proxy API
src/gen/proxy/living.py
src/gen/proxy/private.py
@@ -191,6 +201,7 @@ src/gui/dbloader.py
src/gui/dbman.py
src/gui/filtereditor.py
src/gui/grampsgui.py
src/gui/makefilter.py
src/gui/pluginmanager.py
src/gui/utils.py
src/gui/viewmanager.py
@@ -206,6 +217,7 @@ src/gui/editors/editeventref.py
src/gui/editors/editfamily.py
src/gui/editors/editldsord.py
src/gui/editors/editlocation.py
src/gui/editors/editlink.py
src/gui/editors/editmedia.py
src/gui/editors/editmediaref.py
src/gui/editors/editname.py
@@ -261,10 +273,24 @@ src/gui/editors/displaytabs/reporefmodel.py
src/gui/editors/displaytabs/sourcebackreflist.py
src/gui/editors/displaytabs/sourceembedlist.py
src/gui/editors/displaytabs/sourcerefmodel.py
src/gui/editors/displaytabs/surnametab.py
src/gui/editors/displaytabs/surnamemodel.py
src/gui/editors/displaytabs/webembedlist.py
src/gui/editors/displaytabs/webmodel.py
src/gui/editors/displaytabs/__init__.py
# gui plugin API (was PluginUtils and ReportBase)
src/gui/plug/_dialogs.py
src/gui/plug/_guioptions.py
src/gui/plug/_windows.py
src/gui/plug/report/_docreportdialog.py
src/gui/plug/report/_graphvizreportdialog.py
src/gui/plug/report/_papermenu.py
src/gui/plug/report/_reportdialog.py
src/gui/plug/report/_stylecombobox.py
src/gui/plug/report/_styleeditor.py
src/gui/plug/tool.py
# gui/selectors - the GUI selectors package
src/gui/selectors/baseselector.py
src/gui/selectors/selectevent.py
@@ -305,9 +331,13 @@ src/gui/widgets/labels.py
src/gui/widgets/menutoolbuttonaction.py
src/gui/widgets/progressdialog.py
src/gui/widgets/styledtexteditor.py
src/gui/widgets/undoablebuffer.py
src/gui/widgets/undoableentry.py
src/gui/widgets/undoablestyledbuffer.py
src/gui/widgets/validatedmaskedentry.py
# Simple API
src/Simple/_SimpleAccess.py
src/Simple/_SimpleTable.py
# Config package
@@ -315,11 +345,20 @@ src/config.py
# Merge package
src/Merge/__init__.py
src/Merge/_MergePerson.py
src/Merge/_MergePlace.py
src/Merge/_MergeSource.py
src/Merge/mergeevent.py
src/Merge/mergefamily.py
src/Merge/mergemedia.py
src/Merge/mergenote.py
src/Merge/mergeperson.py
src/Merge/mergeplace.py
src/Merge/mergerepository.py
src/Merge/mergesource.py
#src/Merge/_MergePerson.py
#src/Merge/_MergePlace.py
#src/Merge/_MergeSource.py
# DateHandler package
src/DateHandler/_Date_bg.py
src/DateHandler/_Date_cs.py
src/DateHandler/_Date_de.py
src/DateHandler/_DateDisplay.py
@@ -381,7 +420,6 @@ src/plugins/drawreport/TimeLine.py
# plugins/export directory
src/plugins/export/export.gpr.py
src/plugins/export/ExportCsv.py
src/plugins/export/ExportDjango.gpr.py
src/plugins/export/ExportFtree.py
src/plugins/export/ExportGedcom.py
src/plugins/export/ExportGeneWeb.py
@@ -420,8 +458,6 @@ src/plugins/graph/GVRelGraph.py
# plugins/import directory
src/plugins/import/import.gpr.py
src/plugins/import/ImportCsv.py
src/plugins/import/ImportDjango.gpr.py
src/plugins/import/ImportDjango.py
src/plugins/import/ImportGedcom.py
src/plugins/import/ImportGeneWeb.py
src/plugins/import/ImportGrdb.py
@@ -447,6 +483,7 @@ src/plugins/lib/libpersonview.py
src/plugins/lib/libplaceview.py
src/plugins/lib/libplugins.gpr.py
src/plugins/lib/libtranslate.py
src/plugins/lib/holidays.xml.in
# plugins/mapservices directory
src/plugins/mapservices/eniroswedenmap.py
@@ -465,6 +502,7 @@ src/plugins/quickview/OnThisDay.py
#src/plugins/quickview/Query.py
src/plugins/quickview/quickview.gpr.py
src/plugins/quickview/References.py
src/plugins/quickview/LinkReferences.py
src/plugins/quickview/Reporef.py
src/plugins/quickview/SameSurnames.py
src/plugins/quickview/siblings.py
@@ -506,7 +544,6 @@ src/plugins/textreport/Summary.py
src/plugins/textreport/textplugins.gpr.py
# plugins/tool directory
src/plugins/tool/CalculateEstimatedDates.py
src/plugins/tool/ChangeNames.py
src/plugins/tool/ChangeTypes.py
src/plugins/tool/Check.py
@@ -534,8 +571,8 @@ src/plugins/tool/Verify.py
#plugins/view directory
src/plugins/view/eventview.py
src/plugins/view/familyview.py
src/plugins/view/fanchartview.gpr.py
src/plugins/view/fanchartview.py
src/plugins/view/fanchartview.gpr.py
src/plugins/view/geoview.py
src/plugins/view/geoview.gpr.py
src/plugins/view/grampletview.py
@@ -543,8 +580,6 @@ src/plugins/view/htmlrenderer.py
src/plugins/view/mediaview.py
src/plugins/view/noteview.py
src/plugins/view/pedigreeview.py
src/plugins/view/pedigreeviewext.py
src/plugins/view/pedigreeviewext.gpr.py
src/plugins/view/personlistview.py
src/plugins/view/persontreeview.py
src/plugins/view/placelistview.py
@@ -560,30 +595,9 @@ src/plugins/webreport/NarrativeWeb.py
src/plugins/webreport/WebCal.py
src/plugins/webreport/webplugins.gpr.py
# PluginUtils package
src/PluginUtils/_GuiOptions.py
src/PluginUtils/_Options.py
src/PluginUtils/_PluginDialogs.py
src/PluginUtils/_PluginWindows.py
src/PluginUtils/_Tool.py
# ReportBase package
src/ReportBase/_CommandLineReport.py
src/ReportBase/_Constants.py
src/ReportBase/_DocReportDialog.py
src/ReportBase/_DrawReportDialog.py
src/ReportBase/_Endnotes.py
src/ReportBase/_GraphvizReportDialog.py
src/ReportBase/_FileEntry.py
src/ReportBase/__init__.py
src/ReportBase/_PaperMenu.py
src/ReportBase/_ReportDialog.py
src/ReportBase/_ReportOptions.py
src/ReportBase/_Report.py
src/ReportBase/_ReportUtils.py
src/ReportBase/_StyleComboBox.py
src/ReportBase/_StyleEditor.py
src/ReportBase/_TextReportDialog.py
# plugins/webstuff directory
src/plugins/webstuff/webstuff.gpr.py
src/plugins/webstuff/webstuff.py
# Filters package
src/Filters/_FilterComboBox.py
@@ -639,7 +653,6 @@ src/Filters/Rules/Person/_HasMarkerOf.py
src/Filters/Rules/Person/_HasNameOf.py
src/Filters/Rules/Person/_HasNote.py
src/Filters/Rules/Person/_HasNoteMatchingSubstringOf.py
src/Filters/Rules/Person/_HasNote.py
src/Filters/Rules/Person/_HasNoteRegexp.py
src/Filters/Rules/Person/_HasRelationship.py
src/Filters/Rules/Person/_HasSource.py
@@ -851,6 +864,7 @@ src/glade/editrepository.glade
src/glade/editreporef.glade
src/glade/editpersonref.glade
src/glade/editlocation.glade
src/glade/editlink.glade
src/glade/editfamily.glade
src/glade/editchildref.glade
src/glade/editattribute.glade
@@ -865,10 +879,19 @@ src/glade/editsourceref.glade
src/glade/editname.glade
src/glade/editevent.glade
src/glade/mergedata.glade
src/glade/mergeevent.glade
src/glade/mergefamily.glade
src/glade/mergemedia.glade
src/glade/mergenote.glade
src/glade/mergeperson.glade
src/glade/mergeplace.glade
src/glade/mergerepository.glade
src/glade/mergesource.glade
src/glade/plugins.glade
src/glade/rule.glade
src/glade/scratchpad.glade
src/glade/papermenu.glade
src/glade/updateaddons.glade
src/plugins/tool/notrelated.glade
src/plugins/bookreport.glade
src/plugins/tool/changenames.glade
@@ -892,11 +915,12 @@ src/plugins/export/exportgeneweb.glade
src/plugins/export/exportvcalendar.glade
src/plugins/export/exportvcard.glade
src/plugins/tool/verify.glade
#
# web
#
src/web/grampsdb/views.py
src/web/utils.py
#src/web/grampsdb/views.py
#src/web/utils.py
#
# Files to extract from and then merge into
#
+5
View File
@@ -16,6 +16,7 @@ src/plugins/gramplet/NoteGramplet.py
src/plugins/gramplet/PluginManagerGramplet.py
src/plugins/gramplet/PythonGramplet.py
src/plugins/import/ImportSql.py
src/plugins/tool/CalculateEstimatedDates.py
src/plugins/tool/DateParserDisplayTest.py
src/plugins/tool/DumpGenderStats.py
src/plugins/tool/PHPGedViewConnector.py
@@ -25,4 +26,8 @@ src/plugins/gramplet/FaqGramplet.py
src/plugins/gramplet/HeadlineNewsGramplet.py
src/plugins/quickview/AllNames.py
src/plugins/quickview/Query.py
src/plugins/sidebar/sidebar.gpr.py
src/ReportBase/_DocReportDialog.py
src/Simple/_SimpleDoc.py
src/web/grampsdb/views.py
src/web/utils.py
+9879 -7216
View File
File diff suppressed because it is too large Load Diff
+23504
View File
File diff suppressed because it is too large Load Diff
+20536 -19672
View File
File diff suppressed because it is too large Load Diff
+2905 -3984
View File
File diff suppressed because it is too large Load Diff
+6884 -6784
View File
File diff suppressed because it is too large Load Diff
+6212 -5646
View File
File diff suppressed because it is too large Load Diff
+17169 -15762
View File
File diff suppressed because it is too large Load Diff
+20808 -18342
View File
File diff suppressed because it is too large Load Diff
+6341 -5082
View File
File diff suppressed because it is too large Load Diff
+2173 -2414
View File
File diff suppressed because it is too large Load Diff
+9178 -7969
View File
File diff suppressed because it is too large Load Diff
+5655 -5529
View File
File diff suppressed because it is too large Load Diff
+14265 -12614
View File
File diff suppressed because it is too large Load Diff
+5265 -6664
View File
File diff suppressed because it is too large Load Diff
+21090 -20572
View File
File diff suppressed because it is too large Load Diff
+7538 -6133
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
+2 -3
View File
@@ -186,7 +186,6 @@ class DateEditorDialog(ManagedWindow.ManagedWindow):
"""
Initiate and display the dialog.
"""
ManagedWindow.ManagedWindow.__init__(self, uistate, track, self)
# Create self.date as a copy of the given Date object.
@@ -240,7 +239,7 @@ class DateEditorDialog(ManagedWindow.ManagedWindow):
self.dual_dated = self.top.get_object('dualdated')
self.new_year = self.top.get_object('newyear')
self.new_year.set_active(self.date.get_new_year())
self.new_year.set_text(self.date.newyear_to_str())
# Disable second date controls if not compound date
if not self.date.is_compound():
@@ -341,7 +340,7 @@ class DateEditorDialog(ManagedWindow.ManagedWindow):
self.start_year.get_value_as_int(),
self.dual_dated.get_active())
calendar = self.calendar_box.get_active()
newyear = self.new_year.get_active()
newyear = Date.newyear_to_code(self.new_year.get_text())
return (quality, modifier, calendar, value, text, newyear)
def switch_type(self, obj):
+4 -2
View File
@@ -6,13 +6,14 @@
pkgdatadir = $(datadir)/@PACKAGE@/DateHandler
pkgdata_PYTHON = \
_Date_ca.py\
_Date_bg.py\
_Date_ca.py\
_Date_cs.py\
_Date_de.py\
_Date_es.py\
_Date_fi.py\
_Date_fr.py\
_Date_hr.py\
_Date_hr.py\
_Date_it.py\
_Date_lt.py\
_Date_nb.py\
@@ -21,6 +22,7 @@ pkgdata_PYTHON = \
_Date_pt.py\
_Date_ru.py\
_Date_sk.py\
_Date_sl.py\
_Date_sr.py\
_Date_sv.py\
_DateDisplay.py\
+7 -2
View File
@@ -139,12 +139,17 @@ class DateDisplay(object):
Formats the extra items (calendar, newyear) for a date.
"""
scal = self.calendar[cal]
snewyear = self.newyear[newyear]
if isinstance(newyear, int) and newyear <= len(self.newyear):
snewyear = self.newyear[newyear]
elif isinstance(newyear, (list, tuple)):
snewyear = "%s-%s" % (newyear[0], newyear[1])
else:
snewyear = "Err"
retval = ""
for item in [scal, snewyear]:
if item:
if retval:
retval += ","
retval += ", "
retval += item
if retval:
return " (%s)" % retval
+77 -18
View File
@@ -154,11 +154,17 @@ class DateParser(object):
modifier_after_to_int = {}
hebrew_to_int = {
"tishri" : 1, "heshvan" : 2, "kislev" : 3,
"tevet" : 4, "shevat" : 5, "adari" : 6,
"adarii" : 7, "nisan" : 8, "iyyar" : 9,
"sivan" : 10, "tammuz" : 11, "av" : 12,
"elul" : 13,
u"tishri" : 1, u"heshvan" : 2, u"kislev" : 3,
u"tevet" : 4, u"shevat" : 5, u"adari" : 6,
u"adarii" : 7, u"nisan" : 8, u"iyyar" : 9,
u"sivan" : 10, u"tammuz" : 11, u"av" : 12,
u"elul" : 13,
#alternative spelling
u"cheshvan": 2, u"adar sheni": 7, u"iyar" : 9,
#GEDCOM months
u"tsh" : 1, u"csh": 5, u"ksl": 3, u"tvt": 4, u"shv": 5, u"adr": 6,
u"ads" : 7, u"nsn": 8, u"iyr": 9, u"svn":10, u"tmz":11, u"aav":12,
u"ell":13,
}
french_to_int = {
@@ -168,7 +174,15 @@ class DateParser(object):
u'germinal' : 7, u'floréal' : 8,
u'prairial' : 9, u'messidor' : 10,
u'thermidor' : 11, u'fructidor' : 12,
u'extra' : 13
u'extra' : 13,
#GEDCOM months
u'vend' : 1, u'brum' : 2,
u'frim' : 3, u'nivo' : 4,
u'pluv' : 5, u'vent' : 6,
u'germ' : 7, u'flor' : 8,
u'prai' : 9, u'mess' : 10,
u'ther' : 11, u'fruc' : 12,
u'comp' : 13,
}
islamic_to_int = {
@@ -303,20 +317,25 @@ class DateParser(object):
self._imon_str = self.re_longest_first(self.islamic_to_int.keys())
self._smon_str = self.re_longest_first(self.swedish_to_int.keys())
self._cal_str = self.re_longest_first(self.calendar_to_int.keys())
self._ny_str = self.re_longest_first(self.newyear_to_int.keys())
self._ny_str = self.re_longest_first(self.newyear_to_int.keys())
# bce, calendar type and quality may be either at the end or at
# the beginning of the given date string, therefore they will
# be parsed from the middle and will be in match.group(2).
self._bce_re = re.compile("(.*)\s+%s( ?.*)" % self._bce_str)
self._bce_re = re.compile("(.*)\s+%s( ?.*)" % self._bce_str)
self._cal = re.compile("(.*)\s+\(%s\)( ?.*)" % self._cal_str,
re.IGNORECASE)
self._calny = re.compile("(.*)\s+\(%s,\s*%s\)( ?.*)" % (self._cal_str,
self._ny_str),
re.IGNORECASE)
self._calny_iso = re.compile("(.*)\s+\(%s,\s*(\d{1,2}-\d{1,2})\)( ?.*)" % self._cal_str,
re.IGNORECASE)
self._ny = re.compile("(.*)\s+\(%s\)( ?.*)" % self._ny_str,
re.IGNORECASE)
self._ny_iso = re.compile("(.*)\s+\((\d{1,2}-\d{1,2})\)( ?.*)")
self._cal = re.compile("(.*)\s+\(%s\)( ?.*)" % self._cal_str,
re.IGNORECASE)
self._calny = re.compile("(.*)\s+\(%s,%s\)( ?.*)" % (self._cal_str,
self._ny_str),
re.IGNORECASE)
self._ny = re.compile("(.*)\s+\(%s\)( ?.*)" % self._ny_str,
re.IGNORECASE)
self._qual = re.compile("(.* ?)%s\s+(.+)" % self._qual_str,
re.IGNORECASE)
@@ -355,6 +374,7 @@ class DateParser(object):
re.IGNORECASE)
self._numeric = re.compile("((\d+)[/\.]\s*)?((\d+)[/\.]\s*)?(\d+)\s*$")
self._iso = re.compile("(\d+)(/(\d+))?-(\d+)-(\d+)\s*$")
self._isotimestamp = re.compile("^\s*?(\d{4})([01]\d)([0123]\d)(?:(?:[012]\d[0-5]\d[0-5]\d)|(?:\s+[012]\d:[0-5]\d(?::[0-5]\d)?))?\s*?$")
self._rfc = re.compile("(%s,)?\s+(\d|\d\d)\s+%s\s+(\d+)\s+\d\d:\d\d(:\d\d)?\s+(\+|-)\d\d\d\d"
% (self._rfc_day_str, self._rfc_mon_str))
@@ -430,7 +450,6 @@ class DateParser(object):
m = 0
else:
m = mmap[groups[1].lower()]
d = self._get_int(groups[0])
if groups[2] is None:
@@ -487,6 +506,19 @@ class DateParser(object):
else:
return (d, m, y, False)
# Database datetime format, used in ex. MSSQL
# YYYYMMDD HH:MM:SS or YYYYMMDD or YYYYMMDDHHMMSS
match = self._isotimestamp.match(text)
if match:
groups = match.groups()
y = self._get_int(groups[0])
m = self._get_int(groups[1])
d = self._get_int(groups[2])
value = (d, m, y, False)
if not check((d, m, y)):
value = Date.Empty
return value
match = self._rfc.match(text)
if match:
groups = match.groups()
@@ -549,6 +581,12 @@ class DateParser(object):
cal = self.calendar_to_int[match.group(2).lower()]
newyear = self.newyear_to_int[match.group(3).lower()]
text = match.group(1) + match.group(4)
else:
match = self._calny_iso.match(text)
if match:
cal = self.calendar_to_int[match.group(2).lower()]
newyear = tuple([int(s) for s in match.group(3).split("-")])
text = match.group(1) + match.group(4)
return (text, cal, newyear)
def match_newyear(self, text, newyear):
@@ -561,6 +599,11 @@ class DateParser(object):
if match:
newyear = self.newyear_to_int[match.group(2).lower()]
text = match.group(1) + match.group(3)
else:
match = self._ny_iso.match(text)
if match:
newyear = tuple([int(s) for s in match.group(2).split("-")])
text = match.group(1) + match.group(3)
return (text, newyear)
def match_quality(self, text, qual):
@@ -586,11 +629,15 @@ class DateParser(object):
text_parser = self.parser[cal]
(text1, bc1) = self.match_bce(match.group('start'))
start = self._parse_subdate(text1, text_parser)
if start == Date.EMPTY and text1 != "":
return 0
if bc1:
start = self.invert_year(start)
(text2, bc2) = self.match_bce(match.group('stop'))
stop = self._parse_subdate(text2, text_parser)
if stop == Date.EMPTY and text2 != "":
return 0
if bc2:
stop = self.invert_year(stop)
@@ -609,11 +656,15 @@ class DateParser(object):
text_parser = self.parser[cal]
(text1, bc1) = self.match_bce(match.group('start'))
start = self._parse_subdate(text1, text_parser)
if start == Date.EMPTY and text1 != "":
return 0
if bc1:
start = self.invert_year(start)
(text2, bc2) = self.match_bce(match.group('stop'))
stop = self._parse_subdate(text2, text_parser)
if stop == Date.EMPTY and text2 != "":
return 0
if bc2:
stop = self.invert_year(stop)
@@ -666,7 +717,10 @@ class DateParser(object):
start = self._parse_subdate(grps[0], self.parser[cal])
mod = self.modifier_after_to_int.get(grps[1].lower(),
Date.MOD_NONE)
if bc:
if start == Date.EMPTY:
date.set_modifier(Date.MOD_TEXTONLY)
date.set_text_value(text)
elif bc:
date.set(qual, mod, cal, self.invert_year(start), newyear=ny)
else:
date.set(qual, mod, cal, start, newyear=ny)
@@ -676,7 +730,10 @@ class DateParser(object):
grps = match.groups()
start = self._parse_subdate(grps[0])
mod = Date.MOD_ABOUT
if bc:
if start == Date.EMPTY:
date.set_modifier(Date.MOD_TEXTONLY)
date.set_text_value(text)
elif bc:
date.set(qual, mod, cal, self.invert_year(start), newyear=ny)
else:
date.set(qual, mod, cal, start, newyear=ny)
@@ -712,6 +769,8 @@ class DateParser(object):
if subdate == Date.EMPTY and text != "":
date.set_as_text(text)
return
#else:
# print 'valid subdate', text, subdate
except:
date.set_as_text(text)
return
+314
View File
@@ -0,0 +1,314 @@
# -*- coding: utf-8 -*-
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2004-2006 Donald N. Allingham
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# $Id: _Date_bg.py 9101 2007-10-08 16:41:39Z dallingham $
"""
Bulgarian-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
#-------------------------------------------------------------------------
#
# Bulgarian parser
#
#-------------------------------------------------------------------------
class DateParserBG(DateParser):
modifier_to_int = {
u'преди' : Date.MOD_BEFORE,
u'пр.' : Date.MOD_BEFORE,
u'пр' : Date.MOD_BEFORE,
u'след' : Date.MOD_AFTER,
u'сл.' : Date.MOD_AFTER,
u'сл' : Date.MOD_AFTER,
u'ок' : Date.MOD_ABOUT,
u'ок.' : Date.MOD_ABOUT,
u'около' : Date.MOD_ABOUT,
u'примерно' : Date.MOD_ABOUT,
u'прим' : Date.MOD_ABOUT,
u'прим.' : Date.MOD_ABOUT,
u'приблизително' : Date.MOD_ABOUT,
u'приб.' : Date.MOD_ABOUT,
u'прибл.' : Date.MOD_ABOUT,
u'приб' : Date.MOD_ABOUT,
u'прибл' : Date.MOD_ABOUT,
}
calendar_to_int = {
u'григориански' : Date.CAL_GREGORIAN,
u'г' : Date.CAL_GREGORIAN,
u'юлиански' : Date.CAL_JULIAN,
u'ю' : Date.CAL_JULIAN,
u'еврейски' : Date.CAL_HEBREW,
u'е' : Date.CAL_HEBREW,
u'ислямски' : Date.CAL_ISLAMIC,
u'и' : Date.CAL_ISLAMIC,
u'френски републикански' : Date.CAL_FRENCH,
u'републикански' : Date.CAL_FRENCH,
u'фр.реп.' : Date.CAL_FRENCH,
u'р' : Date.CAL_FRENCH,
u'френски' : Date.CAL_FRENCH,
u'фр.' : Date.CAL_FRENCH,
u'персийски' : Date.CAL_PERSIAN,
u'п' : Date.CAL_PERSIAN,
}
quality_to_int = {
u'приблизително' : Date.QUAL_ESTIMATED,
u'прибл.' : Date.QUAL_ESTIMATED,
u'изчислено' : Date.QUAL_CALCULATED,
u'изчисл.' : Date.QUAL_CALCULATED,
u'изч.' : Date.QUAL_CALCULATED,
}
hebrew_to_int = {
u"тишрей":1,
u"мархешван":2,
u"кислев":3,
u"тевет":4,
u"шват":5,
u"адар":6,
u"адар бет":7,
u"нисан":8,
u"ияр":9,
u"сиван":10,
u"тамуз":11,
u"ав":12,
u"eлул":13,
}
islamic_to_int = {
u"мухаррам":1,
u"саффар":2,
u"рабиу-л-ауал":3,
u"рабиу-с-сани":4,
u"джумадал-уля":5,
u"джумада-с-сания":6,
u"раджаб":7,
u"шаабан":8,
u"рамадан":9,
u"шауал":10,
u"зу-л-кида":11,
u"зул-л-хиджа":12,
}
persian_to_int = {
u"фарвардин":1,
u"урдбихищ":2,
u"хурдад":3,
u"тир":4,
u"мурдад":5,
u"шахривар":6,
u"михр":7,
u"абан":8,
u"азар":9,
u"дай":10,
u"бахман":11,
u"исфаидармуз":12,
}
french_to_int = {
u"вандемер":1,
u"брюмер":2,
u"фример":3,
u"нивоз":4,
u"плювиоз":5,
u"вантоз":6,
u"жерминал":7,
u"флореал":8,
u"прериал":9,
u"месидор":10,
u"термидор":11,
u"фрюктидор":12,
u"допълнителен":13,
}
bce = [
u'преди Христа', u'пр. Хр.', u'пр.Хр.'
] + DateParser.bce
def init_strings(self):
DateParser.init_strings(self)
_span_1 = [u'от']
_span_2 = [u'до']
_range_1 = [u'между']
_range_2 = [u'и']
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_span_1), '|'.join(_span_2)),
re.IGNORECASE)
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
('|'.join(_range_1), '|'.join(_range_2)),
re.IGNORECASE)
#-------------------------------------------------------------------------
#
# Bulgarian displayer
#
#-------------------------------------------------------------------------
class DateDisplayBG(DateDisplay):
"""
Bulgarian language date display class.
"""
long_months = ( u"", u"януари", u"февруари", u"март", u"април", u"май",
u"юни", u"юли", u"август", u"септември", u"октомври",
u"ноември", u"декември" )
short_months = ( u"", u"яну", u"февр", u"март", u"апр", u"май", u"юни",
u"юли", u"авг", u"септ", u"окт", u"ное", u"дек" )
calendar = (
u"",
u"юлиански",
u"еврейски",
u"републикански",
u"персийски",
u"ислямски",
u"шведски"
)
_mod_str = ("", "преди ", "след ", "около ", "", "", "")
_qual_str = ("", "приблизително ", "изчислено ")
_bce_str = u"%s пр. Хр."
formats = (
"ГГГГ-ММ-ДД (ISO)", "Числов", "Месец Ден, Година", "Мес. Ден, Година", "Ден Месец Година", "Ден Мес. Година"
)
hebrew = ( 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"Зул-л-хиджа",
)
persian = ( 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"Допълнителен"
)
def display(self, date):
"""
Returns a text string representing the date.
"""
mod = date.get_modifier()
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
qual_str = self._qual_str[qual]
if mod == Date.MOD_TEXTONLY:
return date.get_text()
elif start == Date.EMPTY:
return ""
elif mod == Date.MOD_SPAN:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'от', d1, u'до', d2, scal)
elif mod == Date.MOD_RANGE:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'между', d1, u'и', d2, scal)
else:
text = self.display_cal[date.get_calendar()](start)
scal = self.format_extras(cal, newyear)
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text, scal)
#-------------------------------------------------------------------------
#
# Register classes
#
#-------------------------------------------------------------------------
register_datehandler(('bg_BG', 'bg', 'bulgarian', 'Bulgarian'),
DateParserBG, DateDisplayBG)
+15 -12
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"Julià", u"Hebreu",
u"Revolucionari", u"Persa", u"Islàmic",
u"Suec"
)
_mod_str = ("", u"abans de ", u"després de ", u"cap a ", "", "", "")
@@ -164,6 +163,7 @@ class DateDisplayCA(DateDisplay):
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
qual_str = self._qual_str[qual]
@@ -174,14 +174,17 @@ class DateDisplayCA(DateDisplay):
elif mod == Date.MOD_SPAN:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
return "%s%s %s %s %s%s" % (qual_str, u'des de', d1, u'fins a', d2, self.calendar[cal])
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'des de', d1, u'fins a', d2, scal)
elif mod == Date.MOD_RANGE:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
return "%s%s %s %s %s%s" % (qual_str, u'entre', d1, u'i', d2, self.calendar[cal])
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'entre', d1, u'i', d2, scal)
else:
text = self.display_cal[date.get_calendar()](start)
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text, self.calendar[cal])
scal = self.format_extras(cal, newyear)
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text, scal)
#-------------------------------------------------------------------------
#
+15 -12
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"juliánský", u"hebrejský",
u"republikánský", u"perský", u"islámský",
u"švédský"
)
_mod_str = ("", u"před ", u"po ", u"kolem ", "", "", "")
@@ -133,6 +132,7 @@ class DateDisplayCZ(DateDisplay):
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
qual_str = self._qual_str[qual]
@@ -143,17 +143,20 @@ class DateDisplayCZ(DateDisplay):
elif mod == Date.MOD_SPAN:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'od', d1,
u'do', d2, self.calendar[cal])
u'do', d2, scal)
elif mod == Date.MOD_RANGE:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'mezi',
d1, u'a', d2, self.calendar[cal])
d1, u'a', d2, scal)
else:
text = self.display_cal[date.get_calendar()](start)
scal = self.format_extras(cal, newyear)
return "%s%s%s%s" % (qual_str, self._mod_str[mod],
text, self.calendar[cal])
text, scal)
#-------------------------------------------------------------------------
#
+87 -23
View File
@@ -56,27 +56,87 @@ class DateParserDE(DateParser):
month_to_int[u"jan"] = 1
month_to_int[u"jänner"] = 1
month_to_int[u"jän"] = 1
# Add other common latin, local and historical variants
# Add other common latin,
month_to_int[u"januaris"] = 1
month_to_int[u"januarii"] = 1
month_to_int[u"januarius"] = 1
month_to_int[u"februaris"] = 2
month_to_int[u"februarii"] = 2
month_to_int[u"februarius"] = 2
month_to_int[u"martii"] = 3
month_to_int[u"martius"] = 3
month_to_int[u"aprilis"] = 4
month_to_int[u"maius"] = 5
month_to_int[u"maii"] = 5
month_to_int[u"junius"] = 6
month_to_int[u"junii"] = 6
month_to_int[u"julius"] = 7
month_to_int[u"julii"] = 7
month_to_int[u"augustus"] = 8
month_to_int[u"augusti"] = 8
month_to_int[u"septembris"] = 9
month_to_int[u"7bris"] = 9
month_to_int[u"september"] = 9
month_to_int[u"october"] = 10
month_to_int[u"octobris"] = 10
month_to_int[u"8bris"] = 10
month_to_int[u"novembris"] = 11
month_to_int[u"9bris"] = 11
month_to_int[u"november"] = 11
month_to_int[u"decembris"] = 12
month_to_int[u"10bris"] = 12
month_to_int[u"xbris"] = 12
month_to_int[u"december"] = 12
# local and historical variants
month_to_int[u"jenner"] = 1
month_to_int[u"feber"] = 2
month_to_int[u"februaris"] = 2
month_to_int[u"merz"] = 3
month_to_int[u"aprilis"] = 4
month_to_int[u"maius"] = 5
month_to_int[u"junius"] = 6
month_to_int[u"julius"] = 7
month_to_int[u"augst"] = 8
month_to_int[u"7ber"] = 9
month_to_int[u"7bris"] = 9
month_to_int[u"8ber"] = 10
month_to_int[u"8bris"] = 10
month_to_int[u"9ber"] = 11
month_to_int[u"9bris"] = 11
month_to_int[u"10ber"] = 12
month_to_int[u"10bris"] = 12
month_to_int[u"xber"] = 12
month_to_int[u"xbris"] = 12
# old german names
month_to_int[u"hartung"] = 1
month_to_int[u"eismond"] = 1
month_to_int[u"hornung"] = 2
month_to_int[u"schmelzmond"] = 2
month_to_int[u"taumond"] = 2
month_to_int[u"narrenmond"] = 2
month_to_int[u"rebmond"] = 2
month_to_int[u"hintester"] = 2
month_to_int[u"lenzing"] = 3
month_to_int[u"lenzmond"] = 3
month_to_int[u"launing"] = 4
month_to_int[u"ostermond"] = 4
month_to_int[u"winnemond"] = 5
month_to_int[u"weidenmonat"] = 5
month_to_int[u"blumenmond"] = 5
month_to_int[u"brachet"] = 6
month_to_int[u"brachmond"] = 6
month_to_int[u"heuert"] = 7
month_to_int[u"heumond"] = 7
month_to_int[u"ernting"] = 8
month_to_int[u"erntemond"] = 8
month_to_int[u"bisemond"] = 8
month_to_int[u"scheiding"] = 9
month_to_int[u"herbstmond"] = 9
month_to_int[u"gilbhard"] = 10
month_to_int[u"gilbhart"] = 10
month_to_int[u"windmond"] = 11
month_to_int[u"nebelung"] = 11
month_to_int[u"wintermond"] = 11
month_to_int[u"julmond"] = 12
month_to_int[u"heilmond"] = 12
month_to_int[u"christmond"] = 12
month_to_int[u"dustermond"] = 12
modifier_to_int = {
u'vor' : Date.MOD_BEFORE,
@@ -137,18 +197,18 @@ class DateDisplayDE(DateDisplay):
"""
German 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" )
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 = ( u"", u"Januar", u"Februar", u"März", u"April", u"Mai",
u"Juni", u"Juli", u"August", u"September", u"Oktober",
u"November", u"Dezember" )
short_months = ( u"", u"Jan", u"Feb", u"Mär", u"Apr", u"Mai", u"Jun",
u"Jul", u"Aug", u"Sep", u"Okt", u"Nov", u"Dez" )
calendar = (
"", u" (julianisch)", u" (hebräisch)",
u" (französisch republikanisch)", u" (persisch)", u" (islamisch)",
u" (schwedisch)"
"", u"julianisch", u"hebräisch",
u"französisch republikanisch", u"persisch", u"islamisch",
u"schwedisch"
)
_mod_str = ("", u"vor ", u"nach ", u"etwa ", "", "", "")
@@ -229,6 +289,7 @@ class DateDisplayDE(DateDisplay):
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
qual_str = self._qual_str[qual]
@@ -239,14 +300,17 @@ class DateDisplayDE(DateDisplay):
elif mod == Date.MOD_SPAN:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
return "%s%s %s %s %s%s" % (qual_str, u'von', d1, u'bis', d2, self.calendar[cal])
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'von', d1, u'bis', d2, scal)
elif mod == Date.MOD_RANGE:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
return "%szwischen %s und %s%s" % (qual_str, d1, d2, self.calendar[cal])
scal = self.format_extras(cal, newyear)
return "%szwischen %s und %s%s" % (qual_str, d1, d2, scal)
else:
text = self.display_cal[date.get_calendar()](start)
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text, self.calendar[cal])
scal = self.format_extras(cal, newyear)
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text, scal)
#-------------------------------------------------------------------------
#
+10 -6
View File
@@ -127,9 +127,9 @@ class DateDisplayES(DateDisplay):
u"dic" )
calendar = (
"", u" (Juliano)", u" (Hebreo)",
u" (Revolucionario)", u" (Persa)", u" (Islámico)",
u" (Swedish)"
"", u"Juliano", u"Hebreo",
u"Revolucionario", u"Persa", u"Islámico",
u"Swedish"
)
_mod_str = ("", u"antes de ", u"después de ", u"hacia ", "", "", "")
@@ -149,6 +149,7 @@ class DateDisplayES(DateDisplay):
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
qual_str = self._qual_str[qual]
@@ -159,14 +160,17 @@ class DateDisplayES(DateDisplay):
elif mod == Date.MOD_SPAN:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
return "%s%s %s %s %s%s" % (qual_str, u'de', d1, u'a', d2, self.calendar[cal])
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'de', d1, u'a', d2, scal)
elif mod == Date.MOD_RANGE:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
return "%s%s %s %s %s%s" % (qual_str, u'entre', d1, u'y', d2, self.calendar[cal])
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'entre', d1, u'y', d2, scal)
else:
text = self.display_cal[date.get_calendar()](start)
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text, self.calendar[cal])
scal = self.format_extras(cal, newyear)
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text, scal)
#-------------------------------------------------------------------------
#
+19 -16
View File
@@ -116,22 +116,22 @@ 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)",
u"(heprealainen)",
u"(ranskan v.)",
u"(persialainen)",
u"(islamilainen)",
u" (svensk)"
)
u"juliaaninen",
u"heprealainen",
u"ranskan v.",
u"persialainen",
u"islamilainen",
u"svensk"
)
_qual_str = (u"", u"arviolta", u"laskettuna")
@@ -139,7 +139,7 @@ class DateDisplayFI(DateDisplay):
formats = (
"VVVV-KK-PP (ISO)",
"PP.KK.VVVV"
"PP.KK.VVVV"
)
def display(self, date):
@@ -150,6 +150,7 @@ class DateDisplayFI(DateDisplay):
qual = date.get_quality()
cal = date.get_calendar()
start = date.get_start_date()
newyear = date.get_new_year()
if mod == Date.MOD_TEXTONLY:
return date.get_text()
@@ -185,9 +186,11 @@ class DateDisplayFI(DateDisplay):
if qual:
# prepend quality
text = u"%s %s" % (self._qual_str[qual], text)
if cal:
if cal or newyear:
# append calendar type
text = u"%s %s" % (text, self.calendar[cal])
scal = self.format_extras(cal, newyear)
text = u"%s %s" % (text, scal)
return text
+23 -12
View File
@@ -58,6 +58,15 @@ class DateParserFR(DateParser):
month_to_int = DateParser.month_to_int
# Custom short months not the same as long months
month_to_int[u"janv"] = 1
month_to_int[u"févr"] = 2
month_to_int[u"juil"] = 7
month_to_int[u"sept"] = 9
month_to_int[u"oct"] = 10
month_to_int[u"déc"] = 12
# Add common value
month_to_int[u"bluviose"] = 5
@@ -230,7 +239,6 @@ class DateParserFR(DateParser):
self._stext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' %
self._smon_str, re.IGNORECASE)
#-------------------------------------------------------------------------
#
# French display
@@ -247,8 +255,8 @@ class DateDisplayFR(DateDisplay):
short_months = ( u"", u"janv", u"févr", u"mars", u"avril", u"mai", u"juin",
u"juil", u"août", u"sept", u"oct", u"nov", u"déc" )
calendar = ("", u" (Julien)", u" (Hébreu)", u" (Révolutionnaire)",
u" (Perse)", u" (Islamique)", u" (Suédois)")
calendar = ("", u"Julien", u"Hébreu", u"Révolutionnaire",
u"Perse", u"Islamique", u"Suédois")
_mod_str = ("", u"avant ", u"après ", u"vers ", "", "", "")
@@ -383,6 +391,7 @@ class DateDisplayFR(DateDisplay):
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
qual_str = (self._qual_str)[qual]
@@ -391,20 +400,22 @@ class DateDisplayFR(DateDisplay):
elif start == Date.EMPTY:
return ""
elif mod == Date.MOD_SPAN:
date1 = (self.display_cal)[cal](start)
date2 = (self.display_cal)[cal](date.get_stop_date())
date1 = self.display_cal[cal](start)
date2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'de', date1, u'à',
date2, (self.calendar)[cal])
date2, scal)
elif mod == Date.MOD_RANGE:
date1 = (self.display_cal)[cal](start)
date2 = (self.display_cal)[cal](date.get_stop_date())
date1 = self.display_cal[cal](start)
date2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'entre', date1, u'et',
date2, (self.calendar)[cal])
date2, scal)
else:
text = (self.display_cal)[date.get_calendar()](start)
text = self.display_cal[date.get_calendar()](start)
scal = self.format_extras(cal, newyear)
return "%s%s%s%s" % (qual_str, (self._mod_str)[mod], text,
(self.calendar)[cal])
scal)
#-------------------------------------------------------------------------
#
+14 -7
View File
@@ -115,6 +115,7 @@ class DateParserHR(DateParser):
month_to_int[u"septembar"] = 9
month_to_int[u"septembra"] = 9
month_to_int[u"ix"] = 9
month_to_int[u"7ber"] = 9
month_to_int[u"listopad"] = 10
month_to_int[u"listopada"] = 10
@@ -122,6 +123,7 @@ class DateParserHR(DateParser):
month_to_int[u"oktobar"] = 10
month_to_int[u"oktobra"] = 10
month_to_int[u"x"] = 10
month_to_int[u"8ber"] = 10
month_to_int[u"studeni"] = 11
month_to_int[u"studenog"] = 11
@@ -129,6 +131,7 @@ class DateParserHR(DateParser):
month_to_int[u"novembar"] = 11
month_to_int[u"novembra"] = 11
month_to_int[u"xi"] = 11
month_to_int[u"9ber"] = 11
month_to_int[u"prosinac"] = 12
month_to_int[u"prosinca"] = 12
@@ -160,7 +163,7 @@ class DateParserHR(DateParser):
u'franc.' : Date.CAL_FRENCH,
u'perzijski' : Date.CAL_PERSIAN,
u'perz. ' : Date.CAL_PERSIAN,
u'swedish' : Date.CAL_SWEDISH,
u'švedski' : Date.CAL_SWEDISH,
u's' : Date.CAL_SWEDISH,
}
@@ -224,9 +227,9 @@ class DateDisplayHR(DateDisplay):
)
calendar = (
"", u" (julijanski)", u" (hebrejski)",
u" (francuski republikanski)", u" (perzijski)", u" (islamski)",
u" (swedish)"
"", u"julijanski", u"hebrejski",
u"francuski republikanski", u"perzijski", u"islamski",
u"swedish"
)
_mod_str = ("", "prije ", "poslije ", "okolo ", "", "", "")
@@ -319,6 +322,7 @@ class DateDisplayHR(DateDisplay):
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
qual_str = self._qual_str[qual]
@@ -329,17 +333,20 @@ class DateDisplayHR(DateDisplay):
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 "%s%s %s %s %s%s" % (qual_str, u'od', d_1, u'do', d_2,
self.calendar[cal])
scal)
elif mod == Date.MOD_RANGE:
d_1 = self.display_cal[cal](start)
d_2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'između', d_1, u'i', d_2,
self.calendar[cal])
scal)
else:
text = self.display_cal[date.get_calendar()](start)
scal = self.format_extras(cal, newyear)
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text,
self.calendar[cal])
scal)
#-------------------------------------------------------------------------
#
+10 -6
View File
@@ -120,9 +120,9 @@ class DateDisplayIT(DateDisplay):
u"lug", u"ago", u"set", u"ott", u"nov", u"dic" )
calendar = (
"", u" (Giuliano)", u" (Ebraico)",
u" (Rivoluzionario)", u" (Persiano)", u" (Islamico)",
u" (Svedese)"
"", u"Giuliano", u"Ebraico",
u"Rivoluzionario", u"Persiano", u"Islamico",
u"Svedese"
)
_mod_str = ("", u"prima del ", u"dopo del ", u"circa il ", "", "", "")
@@ -159,6 +159,7 @@ class DateDisplayIT(DateDisplay):
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
qual_str = self._qual_str[qual]
@@ -169,14 +170,17 @@ class DateDisplayIT(DateDisplay):
elif mod == Date.MOD_SPAN:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
return "%s%s %s %s %s%s" % (qual_str, u'dal', d1, u'al', d2, self.calendar[cal])
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'dal', d1, u'al', d2, scal)
elif mod == Date.MOD_RANGE:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
return "%s%s %s %s %s%s" % (qual_str, u'tra', d1, u'e', d2, self.calendar[cal])
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'tra', d1, u'e', d2, scal)
else:
text = self.display_cal[date.get_calendar()](start)
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text, self.calendar[cal])
scal = self.format_extras(cal, newyear)
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text, scal)
#-------------------------------------------------------------------------
#
+18 -15
View File
@@ -101,21 +101,20 @@ 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"Balandzio",
u"Geguzes", u"Birzelio", u"Liepos", u"Rugpjucio",
u"Rugsejo", u"Spalio", u"Lapkricio", u"Gruodis")
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"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" (persų)",
u" (islamo)",
u" (swedish)"
u"", u"julijaus",
u"hebrajų",
u"prancuzų respublikos",
u"persų",
u"islamo",
u"swedish"
)
_mod_str = (u"",
@@ -139,6 +138,7 @@ class DateDisplayLT(DateDisplay):
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
qual_str = self._qual_str[qual]
@@ -149,17 +149,20 @@ class DateDisplayLT(DateDisplay):
elif mod == Date.MOD_SPAN:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'nuo', d1, u'iki',
d2, self.calendar[cal])
d2, scal)
elif mod == Date.MOD_RANGE:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'tarp', d1, u'ir',
d2, self.calendar[cal])
d2, scal)
else:
text = self.display_cal[date.get_calendar()](start)
scal = self.format_extras(cal, newyear)
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text,
self.calendar[cal])
scal)
#-------------------------------------------------------------------------
#
+13 -9
View File
@@ -124,12 +124,12 @@ class DateDisplayNb(DateDisplay):
calendar = (
"",
" (juliansk)",
" (hebraisk)",
" (fransk republikansk)",
" (persisk)",
" (islamisk)",
" (svensk)"
"juliansk",
"hebraisk",
"fransk republikansk",
"persisk",
"islamisk",
"svensk"
)
_mod_str = ("", u"før ", u"etter ", u"ca ", "", "", "")
@@ -146,6 +146,7 @@ class DateDisplayNb(DateDisplay):
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
qual_str = self._qual_str[qual]
@@ -156,16 +157,19 @@ class DateDisplayNb(DateDisplay):
elif mod == Date.MOD_SPAN:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
return u"%sfra %s til %s%s" % (qual_str, d1, d2, self.calendar[cal])
scal = self.format_extras(cal, newyear)
return u"%sfra %s til %s%s" % (qual_str, d1, d2, scal)
elif mod == Date.MOD_RANGE:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return u"%smellom %s og %s%s" % (qual_str, d1, d2,
self.calendar[cal])
scal)
else:
text = self.display_cal[date.get_calendar()](start)
scal = self.format_extras(cal, newyear)
return u"%s%s%s%s" % (qual_str, self._mod_str[mod],
text, self.calendar[cal])
text, scal)
#-------------------------------------------------------------------------
#
+14 -7
View File
@@ -65,6 +65,9 @@ class DateParserNL(DateParser):
month_to_int[u"feber"] = 2
month_to_int[u"februaris"] = 2
month_to_int[u"merz"] = 3
#make sure on all distro mrt and maa are accepted
month_to_int[u"maa"] = 3
month_to_int[u"mrt"] = 3
month_to_int[u"aprilis"] = 4
month_to_int[u"maius"] = 5
month_to_int[u"junius"] = 6
@@ -143,13 +146,13 @@ class DateDisplayNL(DateDisplay):
u"juni", u"juli", u"augustus", u"september", u"oktober",
u"november", u"december" )
short_months = ( u"", u"jan", u"feb", u"maa", u"apr", u"mei", u"jun",
short_months = ( u"", u"jan", u"feb", u"mrt", u"apr", u"mei", u"jun",
u"jul", u"aug", u"sep", u"okt", u"nov", u"dec" )
calendar = (
"", u" (juliaans)", u" (hebreeuws)",
u" (franse republiek)", u" (persisch)", u" (islamitisch)",
u" (zweeds)" )
"", u"juliaans", u"hebreeuws",
u"franse republiek", u"persisch", u"islamitisch",
u"zweeds" )
_mod_str = ("", u"voor ", u"na ", u"rond ", "", "", "")
@@ -231,6 +234,7 @@ class DateDisplayNL(DateDisplay):
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
qual_str = self._qual_str[qual]
@@ -241,17 +245,20 @@ class DateDisplayNL(DateDisplay):
elif mod == Date.MOD_SPAN:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'van', d1,
u'tot', d2, self.calendar[cal])
u'tot', d2, scal)
elif mod == Date.MOD_RANGE:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%stussen %s en %s%s" % (qual_str, d1, d2,
self.calendar[cal])
scal)
else:
text = self.display_cal[date.get_calendar()](start)
scal = self.format_extras(cal, newyear)
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text,
self.calendar[cal])
scal)
#-------------------------------------------------------------------------
#
+61 -23
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,18 +173,18 @@ 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)",
u" (francuski republikański)", u" (perski)", u" (islamski)",
u" (swedish)"
"", u"juliański", u"hebrajski",
u"francuski republikański", u"perski", u"islamski",
u"swedish"
)
_mod_str = ("", u"przed ", u"po ", u"ok. ", "", "", "")
@@ -246,6 +280,7 @@ class DateDisplayPL(DateDisplay):
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
qual_str = self._qual_str[qual]
@@ -256,17 +291,20 @@ class DateDisplayPL(DateDisplay):
elif mod == Date.MOD_SPAN:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'od', d1, u'do', d2,
self.calendar[cal])
scal)
elif mod == Date.MOD_RANGE:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'między', d1, u'a', d2,
self.calendar[cal])
scal)
else:
text = self.display_cal[date.get_calendar()](start)
scal = self.format_extras(cal, newyear)
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text,
self.calendar[cal])
scal)
#-------------------------------------------------------------------------
#
+36 -27
View File
@@ -52,20 +52,26 @@ from _DateHandler import register_datehandler
class DateParserPT(DateParser):
modifier_to_int = {
u'antes de' : Date.MOD_BEFORE,
u'antes' : Date.MOD_BEFORE,
u'ant.' : Date.MOD_BEFORE,
u'ant' : Date.MOD_BEFORE,
u'após' : Date.MOD_AFTER,
u'aprox.' : Date.MOD_ABOUT,
u'aprox' : Date.MOD_ABOUT,
u'apr.' : Date.MOD_ABOUT,
u'apr' : Date.MOD_ABOUT,
u'cerca de' : Date.MOD_ABOUT,
u'ca.' : Date.MOD_ABOUT,
u'ca' : Date.MOD_ABOUT,
u'c.' : Date.MOD_ABOUT,
u'até' : Date.MOD_ABOUT,
u'antes de' : Date.MOD_BEFORE,
u'antes' : Date.MOD_BEFORE,
u'ant.' : Date.MOD_BEFORE,
u'ant' : Date.MOD_BEFORE,
u'a' : Date.MOD_BEFORE,
u'depois de' : Date.MOD_AFTER,
u'depois' : Date.MOD_AFTER,
u'dep.' : Date.MOD_AFTER,
u'dep' : Date.MOD_AFTER,
u'aprox.' : Date.MOD_ABOUT,
u'aprox' : Date.MOD_ABOUT,
u'apr.' : Date.MOD_ABOUT,
u'apr' : Date.MOD_ABOUT,
u'cerca de' : Date.MOD_ABOUT,
u'ca.' : Date.MOD_ABOUT,
u'ca' : Date.MOD_ABOUT,
u'c.' : Date.MOD_ABOUT,
u'por volta de' : Date.MOD_ABOUT,
u'por volta' : Date.MOD_ABOUT,
u'pvd.' : Date.MOD_ABOUT,
}
calendar_to_int = {
@@ -116,21 +122,20 @@ class DateDisplayPT(DateDisplay):
"""
Portuguese 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"Janeiro", u"Fevereiro", u"Março", u"Abril", u"Maio",
u"Junho", u"Julho", u"Agosto", u"Setembro", u"Outubro",
u"Novembro", u"Dezembro" )
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"Jan", u"Fev", u"Mar", u"Abr", u"Mai", u"Jun",
u"Jul", u"Ago", u"Set", u"Out", u"Nov", u"Dez" )
calendar = (
"", u" (Juliano)", u" (Hebreu)",
u" (Revolucionário)", u" (Persa)", u" (Islâmico)",
u" (Swedish)"
"", u"Juliano", u"Hebreu",
u"Revolucionário", u"Persa", u"Islâmico",
u"Sueco"
)
_mod_str = ("",u"antes de ",u"depois de ",u"até ","","","")
_mod_str = ("",u"antes de ",u"depois de ",u"por volta de ","","","")
_qual_str = ("","estimado ","calculado ")
@@ -147,6 +152,7 @@ class DateDisplayPT(DateDisplay):
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
qual_str = self._qual_str[qual]
@@ -157,14 +163,17 @@ class DateDisplayPT(DateDisplay):
elif mod == Date.MOD_SPAN:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
return "%s%s %s %s %s%s" % (qual_str, u'de', d1, u'a', d2,self.calendar[cal])
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'de', d1, u'a', d2, scal)
elif mod == Date.MOD_RANGE:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
return "%s%s %s %s %s%s" % (qual_str, u'entre', d1, u'e', d2, self.calendar[cal])
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'entre', d1, u'e', d2, scal)
else:
text = self.display_cal[date.get_calendar()](start)
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text, self.calendar[cal])
scal = self.format_extras(cal, newyear)
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text, scal)
#-------------------------------------------------------------------------
#
+19 -15
View File
@@ -187,22 +187,22 @@ 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"",
u" (юлианский)",
u" (еврейский)",
u" (республиканский)",
u" (персидский)",
u" (исламский)",
u" (Swedish)"
u"юлианский",
u"еврейский",
u"республиканский",
u"персидский",
u"исламский",
u"Swedish"
)
_mod_str = (
@@ -291,6 +291,7 @@ class DateDisplayRU(DateDisplay):
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
qual_str = self._qual_str[qual]
@@ -301,17 +302,20 @@ class DateDisplayRU(DateDisplay):
elif mod == Date.MOD_SPAN:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%sс %s %s %s%s" % (qual_str, d1, u'по', d2,
self.calendar[cal])
scal)
elif mod == Date.MOD_RANGE:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'между', d1, u'и',
d2, self.calendar[cal])
d2, scal)
else:
text = self.display_cal[date.get_calendar()](start)
scal = self.format_extras(cal, newyear)
return "%s%s%s%s" % (qual_str, self._mod_str[mod],
text, self.calendar[cal])
text, scal)
#-------------------------------------------------------------------------
#
+15 -12
View File
@@ -104,18 +104,17 @@ class DateDisplaySK(DateDisplay):
"""
Slovak 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"január", u"február", u"marec", u"apríl", u"máj",
u"jún", u"júl", u"august", u"september", u"október",
u"november", u"december" )
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"jan", u"feb", u"mar", u"apr", u"máj", u"jún",
u"júl", u"aug", u"sep", u"okt", u"nov", u"dec" )
calendar = (
"", u" (juliánský)", u" (hebrejský)",
u" (republikánsky)", u" (perzský)", u" (islamský)",
u" (swedish)"
"", u"juliánský", u"hebrejský",
u"republikánsky", u"perzský", u"islamský",
u"swedish"
)
_mod_str = ("", u"pred ", u"po ", u"okolo ", "", "", "")
@@ -135,6 +134,7 @@ class DateDisplaySK(DateDisplay):
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
qual_str = self._qual_str[qual]
@@ -145,17 +145,20 @@ class DateDisplaySK(DateDisplay):
elif mod == Date.MOD_SPAN:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'od', d1,
u'do', d2, self.calendar[cal])
u'do', d2, scal)
elif mod == Date.MOD_RANGE:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'medzi',
d1, u'a', d2, self.calendar[cal])
d1, u'a', d2, scal)
else:
text = self.display_cal[date.get_calendar()](start)
scal = self.format_extras(cal, newyear)
return "%s%s%s%s" % (qual_str, self._mod_str[mod],
text, self.calendar[cal])
text, scal)
#-------------------------------------------------------------------------
#
+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)
+10 -6
View File
@@ -251,9 +251,9 @@ class DateDisplaySR_latin(DateDisplay):
)
calendar = (
"", u" (julijanski)", u" (hebrejski)",
u" (francuski republikanski)", u" (persijski)", u" (islamski)",
u" (švedski)"
"", u"julijanski", u"hebrejski",
u"francuski republikanski", u"persijski", u"islamski",
u"švedski"
)
_mod_str = ("", "pre ", "posle ", "oko ", "", "", "")
@@ -334,6 +334,7 @@ class DateDisplaySR_latin(DateDisplay):
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
qual_str = self._qual_str[qual]
@@ -344,17 +345,20 @@ class DateDisplaySR_latin(DateDisplay):
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 "%s%s %s %s %s%s" % (qual_str, u'od', d_1, u'do', d_2,
self.calendar[cal])
scal)
elif mod == Date.MOD_RANGE:
d_1 = self.display_cal[cal](start)
d_2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, u'između', d_1, u'i', d_2,
self.calendar[cal])
scal)
else:
text = self.display_cal[date.get_calendar()](start)
scal = self.format_extras(cal, newyear)
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text,
self.calendar[cal])
scal)
#-------------------------------------------------------------------------
+18 -14
View File
@@ -64,7 +64,7 @@ class DateParserSv(DateParser):
u'c:a' : Date.MOD_ABOUT
}
bce = ["f Kr"]
bce = [u"f Kr"]
calendar_to_int = {
u'gregoriansk ' : Date.CAL_GREGORIAN,
@@ -128,20 +128,20 @@ class DateDisplaySv(DateDisplay):
)
calendar = (
"",
" (juliansk)",
" (hebreisk)",
" (fransk republikansk)",
" (persisk)",
" (islamisk)",
" (svensk)"
u"",
u"juliansk",
u"hebreisk",
u"fransk republikansk",
u"persisk",
u"islamisk",
u"svensk"
)
_mod_str = ("", u"före ", u"efter ", u"c:a ", "", "", "")
_mod_str = (u"", u"före ", u"efter ", u"c:a ", u"", u"", u"")
_qual_str = ("", u"uppskattat ", u"beräknat ")
_qual_str = (u"", u"uppskattat ", u"beräknat ")
_bce_str = "%s f Kr"
_bce_str = u"%s f Kr"
def display(self, date):
"""
@@ -151,6 +151,7 @@ class DateDisplaySv(DateDisplay):
cal = date.get_calendar()
qual = date.get_quality()
start = date.get_start_date()
newyear = date.get_new_year()
qual_str = self._qual_str[qual]
@@ -161,16 +162,19 @@ class DateDisplaySv(DateDisplay):
elif mod == Date.MOD_SPAN:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
return u"%sfrån %s till %s%s" % (qual_str, d1, d2, self.calendar[cal])
scal = self.format_extras(cal, newyear)
return u"%sfrån %s till %s%s" % (qual_str, d1, d2, scal)
elif mod == Date.MOD_RANGE:
d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear)
return u"%smellan %s och %s%s" % (qual_str, d1, d2,
self.calendar[cal])
scal)
else:
text = self.display_cal[date.get_calendar()](start)
scal = self.format_extras(cal, newyear)
return u"%s%s%s%s" % (qual_str, self._mod_str[mod],
text, self.calendar[cal])
text, scal)
#-------------------------------------------------------------------------
#
+2
View File
@@ -29,6 +29,7 @@ from _DateHandler import (LANG, LANG_SHORT, LANG_TO_PARSER, LANG_TO_DISPLAY,
register_datehandler)
# Import all the localized handlers
import _Date_bg
import _Date_ca
import _Date_cs
import _Date_de
@@ -44,6 +45,7 @@ import _Date_pl
import _Date_pt
import _Date_ru
import _Date_sk
import _Date_sl
import _Date_sr
import _Date_sv
+10 -2
View File
@@ -125,11 +125,15 @@ class _DdTargets(object):
self.REPO_LINK = _DdType(self, 'repo-link')
self.REPOREF = _DdType(self, 'reporef')
self.PERSON_LINK = _DdType(self, 'person-link')
self.PERSON_LINK_LIST = _DdType(self, 'person-link-list')
self.FAMILY_LINK = _DdType(self, 'family-link')
self.LINK_LIST = _DdType(self, 'link-list')
self.RAW_LIST = _DdType(self, 'raw-list')
self.HANDLE_LIST = _DdType(self, 'handle-list')
self.PERSONREF = _DdType(self, 'personref')
self.SOURCEREF = _DdType(self, 'srcref')
self.SOURCE_LINK = _DdType(self, 'source-link')
self.URL = _DdType(self, 'url')
self.SURNAME = _DdType(self, 'surname')
# List of all types that are used between
# gramps widgets but should not be exported
@@ -146,13 +150,17 @@ class _DdTargets(object):
self.NOTE_LINK,
self.PLACE_LINK,
self.PERSON_LINK,
self.PERSON_LINK_LIST,
self.FAMILY_LINK,
self.LINK_LIST,
self.RAW_LIST,
self.HANDLE_LIST,
self.PERSONREF,
self.REPO_LINK,
self.REPOREF,
self.SOURCEREF,
self.SOURCE_LINK,
self.URL,
self.SURNAME
]
self.CHILD = _DdType(self, 'child')
+49 -10
View File
@@ -80,10 +80,22 @@ class History(gen.utils.Callback):
'mru-changed' : (list, )
}
def __init__(self):
def __init__(self, dbstate, nav_type):
gen.utils.Callback.__init__(self)
self.clear()
dbstate.connect('database-changed', self.connect_signals)
self.signal_map = {}
self.signal_map[nav_type.lower() + '-delete'] = self.handles_removed
self.signal_map[nav_type.lower() + '-rebuild'] = self.history_changed
def connect_signals(self, dbstate):
"""
Connects database signals when the database has changed.
"""
for sig in self.signal_map:
dbstate.connect(sig, self.signal_map[sig])
def clear(self):
"""
Clears the history, resetting the values back to their defaults
@@ -191,6 +203,22 @@ class History(gen.utils.Callback):
if not self.at_end():
self.history = self.history[0:self.index+1]
def handles_removed(self, handle_list):
"""
Called in response to an object-delete signal.
Removes a list of handles from the history.
"""
for handle in handle_list:
self.remove(handle)
def history_changed(self):
"""
Called in response to an object-rebuild signal.
Objects in the history list may have been deleted.
"""
self.clear()
self.emit('mru-changed', (self.mru, ))
#-------------------------------------------------------------------------
#
# Recent Docs Menu
@@ -279,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()
@@ -301,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()
@@ -370,13 +408,13 @@ class DisplayState(gen.utils.Callback):
"""
return self.history_lookup.get((nav_type, nav_group))
def register(self, nav_type, nav_group):
def register(self, dbstate, nav_type, nav_group):
"""
Create a history and navigation object for the specified
navigation type and group, if they don't exist.
"""
if (nav_type, nav_group) not in self.history_lookup:
history = History()
history = History(dbstate, nav_type)
self.history_lookup[(nav_type, nav_group)] = history
def get_active(self, nav_type, nav_group=0):
@@ -385,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):
"""
@@ -393,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)
+10
View File
@@ -142,3 +142,13 @@ class DbError(Exception):
def __str__(self):
"Return string representation"
return self.value
class MergeError(Exception):
"""Error used to report merge errors"""
def __init__(self, value=""):
Exception.__init__(self)
self.value = value
def __str__(self):
"Return string representation"
return self.value
+28 -11
View File
@@ -4,6 +4,8 @@
# Copyright (C) 2004-2007 Donald N. Allingham
# Copyright (C) 2008 Brian G. Matherly
# Contribution 2009 by Brad Crittenden <brad [AT] bradcrittenden.net>
# Copyright (C) 2008 Benny Malengier
# Copyright (C) 2010 Jakim Friant
#
# 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
@@ -56,6 +58,7 @@ import config
from gui.pluginmanager import GuiPluginManager
import Utils
import ManagedWindow
from QuestionDialog import ErrorDialog
#-------------------------------------------------------------------------
#
@@ -92,6 +95,7 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
"""
#override predefined do_xxx signal handlers
__gsignals__ = {"apply": "override", "cancel": "override",
"close": "override", "prepare": "override"}
@@ -164,6 +168,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)
@@ -278,7 +298,7 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
vbox.foreach(vbox.remove)
# add new content
if config_box_class:
self.option_box_instance = config_box_class(self.person)
self.option_box_instance = config_box_class(self.person, self.dbstate, self.uistate)
box = self.option_box_instance.get_option_box()
vbox.add(box)
else:
@@ -382,22 +402,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
@@ -536,7 +552,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):
@@ -603,6 +619,7 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
export_function = self.map_exporters[ix].get_export_function()
success = export_function(self.dbstate.db,
filename,
ErrorDialog,
self.option_box_instance,
self.callback)
return success
+571 -78
View File
@@ -28,7 +28,7 @@
#
#-------------------------------------------------------------------------
import gtk
from gen.ggettext import gettext as _
import pango
import gobject
#-------------------------------------------------------------------------
@@ -36,10 +36,60 @@ import gobject
# GRAMPS modules
#
#-------------------------------------------------------------------------
from gen.ggettext import gettext as _
from gen.ggettext import ngettext
import config
import gui.widgets
from gen.display.name import displayer as name_displayer
from Filters import GenericFilter, Rules
from gui.utils import ProgressMeter
def get_proxy_value(proxy_name):
return [value for (name, value) in
config.get('export.proxy-order') if name == proxy_name][0]
def set_proxy_value(proxy_name, proxy_value):
[name_value for name_value in
config.get('export.proxy-order') if name_value[0] == proxy_name][0][1] = int(proxy_value)
def get_proxy_names():
return [name for (name, value) in config.get('export.proxy-order')]
def swap_proxy_order(row1, row2):
po = config.get('export.proxy-order')
po[row1], po[row2] = po[row2], po[row1]
class Progress(object):
"""
Mirros the same interface that the ExportAssistant uses in the
selection, but this is for the preview selection.
"""
def __init__(self):
self.pm = ProgressMeter(_("Selecting Preview Data"), _('Selecting...'))
self.progress_cnt = 0
self.title = _("Selecting...")
while gtk.events_pending():
gtk.main_iteration()
def reset(self, title):
self.pm.set_header(title)
self.title = title
while gtk.events_pending():
gtk.main_iteration()
def set_total(self, count):
self.pm.set_pass(self.title, total=count+1)
while gtk.events_pending():
gtk.main_iteration()
def update(self, count):
self.pm.step()
while gtk.events_pending():
gtk.main_iteration()
def close(self):
self.pm.step()
self.pm.close()
#-------------------------------------------------------------------------
#
@@ -52,97 +102,315 @@ class WriterOptionBox(object):
the options.
"""
def __init__(self, person):
def __init__(self, person, dbstate, uistate):
self.person = person
self.dbstate = dbstate
self.uistate = uistate
self.preview_dbase = None
self.preview_button = None
self.preview_proxy_button = {}
self.proxy_options_showing = False
self.proxy_dbase = {}
self.private = 0
self.restrict = 0
self.unlinked = 0
self.restrict_num = 0
self.reference_num = 0
self.cfilter = None
self.nfilter = None
self.restrict_check = None
self.restrict_option = None
self.private_check = None
self.unlinked_check = None
self.filter_obj = None
self.filter_note = None
self.reference_filter = None
self.initialized_show_options = False
# The following are special properties. Create them to force the
# export wizard to not ask for a file, and to override the
# confirmation message:
#self.no_fileselect = True
#self.confirm_text = "You made it, kid!"
def mark_dirty(self, widget=None):
self.preview_dbase = None
if self.preview_button:
self.preview_button.set_sensitive(1)
for proxy_name in self.preview_proxy_button:
if proxy_name != "unfiltered":
self.preview_proxy_button[proxy_name].set_sensitive(0)
self.parse_options()
def get_option_box(self):
"""Build up a gtk.Table that contains the standard options."""
table = gtk.Table(5, 2)
widget = gtk.VBox()
self.filter_obj = gtk.ComboBox()
label = gtk.Label(_('_Person Filter'))
label.set_use_underline(True)
label.set_mnemonic_widget(self.filter_obj)
# Objects for choosing a Note filter
self.filter_note = gtk.ComboBox()
label_note = gtk.Label(_('_Note Filter'))
label_note.set_use_underline(True)
label_note.set_mnemonic_widget(self.filter_note)
full_database_row = gtk.HBox()
full_database_row.pack_start(gtk.Label("Unfiltered Family Tree:"), False)
people_count = len(self.dbstate.db.get_person_handles())
button = gtk.Button(ngettext("%d Person", "%d People", people_count) %
people_count)
button.set_tooltip_text(_("Click to see preview of unfiltered data"))
button.set_size_request(100, -1)
button.connect("clicked", self.show_preview_data)
button.proxy_name = "unfiltered"
self.preview_proxy_button["unfiltered"] = button
self.spacer = gtk.HBox()
full_database_row.pack_end(self.spacer, False)
full_database_row.pack_end(button, False)
widget.pack_start(full_database_row, False)
self.private_check = gtk.CheckButton(
_('_Do not include records marked private'))
self.restrict_check = gtk.CheckButton(
_('_Restrict data on living people'))
self.unlinked_check = gtk.CheckButton(
_('_Do not include unlinked records'))
self.private_check.connect("clicked", self.mark_dirty)
self.private_check.set_active(get_proxy_value("privacy"))
self.private_check.set_active(config.get('export.no-private'))
self.restrict_check.set_active(config.get('export.restrict-living'))
self.unlinked_check.set_active(config.get('export.no-unlinked'))
table.set_border_width(12)
table.set_row_spacings(6)
table.set_col_spacings(6)
table.attach(label, 0, 1, 0, 1, xoptions=0, yoptions=0)
table.attach(self.filter_obj, 1, 2, 0, 1, yoptions=0)
table.attach(label_note, 0, 1, 1, 2, xoptions =0, yoptions=0)
table.attach(self.filter_note, 1, 2, 1, 2, yoptions=0)
table.attach(self.private_check, 1, 2, 2, 3, yoptions=0)
table.attach(self.restrict_check, 1, 2, 3, 4, yoptions=0)
table.attach(self.unlinked_check, 1, 2, 4, 5, yoptions=0)
self.proxy_widget = {}
self.vbox_n = []
self.up_n = []
self.down_n = []
row = 0
for proxy_name in get_proxy_names():
frame = self.build_frame(proxy_name, row)
widget.pack_start(frame, False)
row += 1
# Populate the Person Filter
entire_db = GenericFilter()
entire_db.set_name(_("Entire Database"))
the_filters = [entire_db]
if self.person:
the_filters += self.__define_person_filters()
from Filters import CustomFilters
the_filters.extend(CustomFilters.get_filters('Person'))
model = gtk.ListStore(gobject.TYPE_STRING, object)
for item in the_filters:
model.append(row=[item.get_name(), item])
hbox = gtk.HBox()
self.advanced_button = gtk.Button(_("Change order"))
self.advanced_button.set_size_request(150, -1)
self.proxy_options_showing = False
self.advanced_button.connect("clicked", self.show_options)
hbox.pack_end(self.advanced_button, False)
self.preview_button = gtk.Button(_("Calculate Previews"))
self.preview_button.connect("clicked", self.preview)
hbox.pack_end(self.preview_button, False)
widget.pack_start(hbox, False)
cell = gtk.CellRendererText()
cell.set_property('ellipsize', pango.ELLIPSIZE_END)
self.filter_obj.pack_start(cell, True)
self.filter_obj.add_attribute(cell, 'text', 0)
self.filter_obj.set_model(model)
self.filter_obj.set_active(0)
# Populate the Notes Filter
notes_filters = [entire_db]
notes_filters.extend(CustomFilters.get_filters('Note'))
notes_model = gtk.ListStore(gobject.TYPE_STRING, object)
for item in notes_filters:
notes_model.append(row=[item.get_name(), item])
self.filter_obj.set_model(self.build_model("person"))
self.filter_obj.set_active(get_proxy_value("person"))
cell = gtk.CellRendererText()
cell.set_property('ellipsize', pango.ELLIPSIZE_END)
self.restrict_option.pack_start(cell, True)
self.restrict_option.add_attribute(cell, 'text', 0)
self.restrict_option.set_model(self.build_model("living"))
self.restrict_option.set_active(get_proxy_value("living"))
cell = gtk.CellRendererText()
cell.set_property('ellipsize', pango.ELLIPSIZE_END)
self.reference_filter.pack_start(cell, True)
self.reference_filter.add_attribute(cell, 'text', 0)
self.reference_filter.set_model(self.build_model("reference"))
self.reference_filter.set_active(get_proxy_value("reference"))
notes_cell = gtk.CellRendererText()
notes_cell.set_property('ellipsize', pango.ELLIPSIZE_END)
self.filter_note.pack_start(notes_cell, True)
self.filter_note.add_attribute(notes_cell, 'text', 0)
self.filter_note.set_model(notes_model)
self.filter_note.set_active(0)
self.filter_note.set_model(self.build_model("note"))
self.filter_note.set_active(get_proxy_value("note"))
table.show()
return table
self.filter_note.connect("changed", self.mark_dirty)
self.filter_obj.connect("changed", self.mark_dirty)
self.restrict_option.connect("changed", self.mark_dirty)
self.reference_filter.connect("changed", self.mark_dirty)
return widget
def show_preview_data(self, widget):
from DbState import DbState
from QuickReports import run_quick_report_by_name
if widget.proxy_name == "unfiltered":
dbstate = self.dbstate
else:
dbstate = DbState()
dbstate.db = self.proxy_dbase[widget.proxy_name]
dbstate.open = True
run_quick_report_by_name(dbstate,
self.uistate,
'filterbyname',
'all')
def preview(self, widget):
"""
Calculate previews to see the selected data.
"""
self.parse_options()
pm = Progress()
self.preview_dbase = self.get_filtered_database(self.dbstate.db, pm, preview=True)
pm.close()
self.preview_button.set_sensitive(0)
def build_frame(self, proxy_name, row):
"""
Build a frame for a proxy option. proxy_name is a string.
"""
# Make a box and put the option in it:
button = gtk.Button(ngettext("%d Person", "%d People", 0) % 0)
button.set_size_request(100, -1)
button.connect("clicked", self.show_preview_data)
button.proxy_name = proxy_name
if proxy_name == "person":
# Frame Person:
self.filter_obj = gtk.ComboBox()
label = gtk.Label(_('_Person Filter') + ": ")
label.set_alignment(0, 0.5)
label.set_size_request(150, -1)
label.set_use_underline(True)
label.set_mnemonic_widget(self.filter_obj)
box = gtk.HBox()
box.pack_start(label, False)
box.pack_start(self.filter_obj)
box.pack_start(
gui.widgets.SimpleButton(gtk.STOCK_EDIT,
lambda obj: self.edit_filter('Person', self.filter_obj)),
False)
button.set_tooltip_text(_("Click to see preview after person filter"))
elif proxy_name == "note":
# Frame Note:
# Objects for choosing a Note filter:
self.filter_note = gtk.ComboBox()
label_note = gtk.Label(_('_Note Filter') + ": ")
label_note.set_alignment(0, 0.5)
label_note.set_size_request(150, -1)
label_note.set_use_underline(True)
label_note.set_mnemonic_widget(self.filter_note)
box = gtk.HBox()
box.pack_start(label_note, False)
box.pack_start(self.filter_note)
box.pack_start(
gui.widgets.SimpleButton(gtk.STOCK_EDIT,
lambda obj: self.edit_filter('Note', self.filter_note)),
False)
button.set_tooltip_text(_("Click to see preview after note filter"))
elif proxy_name == "privacy":
# Frame 3:
label = gtk.Label(_("Privacy Filter") + ":")
label.set_alignment(0, 0.5)
label.set_size_request(150, -1)
box = gtk.HBox()
box.pack_start(label, False)
box.add(self.private_check)
button.set_tooltip_text(_("Click to see preview after privacy filter"))
elif proxy_name == "living":
# Frame 4:
label = gtk.Label(_("Living Filter") + ":")
label.set_alignment(0, 0.5)
label.set_size_request(150, -1)
box = gtk.HBox()
box.pack_start(label, False)
self.restrict_option = gtk.ComboBox()
box.add(self.restrict_option)
button.set_tooltip_text(_("Click to see preview after living filter"))
elif proxy_name == "reference":
# Frame 5:
self.reference_filter = gtk.ComboBox()
label = gtk.Label(_('Reference Filter') + ": ")
label.set_alignment(0, 0.5)
label.set_size_request(150, -1)
box = gtk.HBox()
box.pack_start(label, False)
box.pack_start(self.reference_filter)
button.set_tooltip_text(_("Click to see preview after reference filter"))
else:
raise AttributeError("Unknown proxy '%s'" % proxy_name)
frame = gtk.Frame()
hbox = gtk.HBox()
frame.add(hbox)
vbox = gtk.HBox()
self.vbox_n.append(vbox)
up = gtk.Button()
up.connect("clicked", self.swap)
if row == 0:
up.set_sensitive(0) # can't go up
image = gtk.Image()
image.set_from_stock(gtk.STOCK_GO_UP,
gtk.ICON_SIZE_MENU)
up.set_image(image)
up.row = row - 1
self.up_n.append(up)
down = gtk.Button()
down.connect("clicked", self.swap)
image = gtk.Image()
image.set_from_stock(gtk.STOCK_GO_DOWN,
gtk.ICON_SIZE_MENU)
down.set_image(image)
down.row = row
if row == 4:
down.set_sensitive(0) # can't go down
self.down_n.append(down)
self.preview_proxy_button[proxy_name] = button
self.preview_proxy_button[proxy_name].set_sensitive(0)
box.pack_end(button, False)
hbox.pack_start(box)
hbox.pack_end(vbox, False)
self.proxy_widget[proxy_name] = box
return frame
def show_options(self, widget=None):
"""
Show or hide the option arrows. Needs to add them if first
time due to the fact that Gramps tends to use show_all rather
than show.
"""
if self.proxy_options_showing:
self.advanced_button.set_label(_("Change order"))
self.spacer_up.hide()
self.spacer_down.hide()
for n in range(5):
self.up_n[n].hide()
self.down_n[n].hide()
else:
self.advanced_button.set_label(_("Hide order"))
if not self.initialized_show_options:
self.initialized_show_options = True
# This is necessary because someone used show_all up top
# Now, we can't add something that we want hidden
for n in range(5):
self.vbox_n[n].pack_start(self.up_n[n])
self.vbox_n[n].pack_end(self.down_n[n])
# some spacer buttons:
up = gtk.Button()
up.set_sensitive(0)
image = gtk.Image()
image.set_from_stock(gtk.STOCK_GO_UP,
gtk.ICON_SIZE_MENU)
up.set_image(image)
self.spacer.pack_start(up, False)
down = gtk.Button()
down.set_sensitive(0)
image = gtk.Image()
image.set_from_stock(gtk.STOCK_GO_DOWN,
gtk.ICON_SIZE_MENU)
down.set_image(image)
self.spacer.pack_end(down, False)
self.spacer_up = up
self.spacer_down = down
self.spacer_up.show()
self.spacer_down.show()
for n in range(5):
self.up_n[n].show()
self.down_n[n].show()
self.proxy_options_showing = not self.proxy_options_showing
def swap(self, widget):
"""
Swap the order of two proxies.
"""
row1 = widget.row
row2 = widget.row + 1
proxy1 = config.get('export.proxy-order')[row1][0]
proxy2 = config.get('export.proxy-order')[row2][0]
widget1 = self.proxy_widget[proxy1]
widget2 = self.proxy_widget[proxy2]
parent1 = widget1.get_parent()
parent2 = widget2.get_parent()
widget1.reparent(parent2)
widget2.reparent(parent1)
swap_proxy_order(row1, row2)
self.mark_dirty(widget)
def __define_person_filters(self):
"""Add person filters if the active person is defined."""
@@ -178,24 +446,249 @@ class WriterOptionBox(object):
restrict = restrict information on living peoplel
cfitler = return the GenericFilter selected
nfilter = return the NoteFilter selected
unlinked = restrict unlinked records
reference = restrict referenced/orphaned records
"""
self.restrict = self.restrict_check.get_active()
self.private = self.private_check.get_active()
self.unlinked = self.unlinked_check.get_active()
if self.private_check:
self.private = self.private_check.get_active()
set_proxy_value("privacy", self.private)
config.set('export.no-private', self.private)
config.set('export.restrict-living', self.restrict)
config.set('export.no-unlinked', self.unlinked)
config.save()
if self.filter_obj:
model = self.filter_obj.get_model()
node = self.filter_obj.get_active_iter()
if node:
self.cfilter = model[node][1]
set_proxy_value("person", self.filter_obj.get_active())
model = self.filter_obj.get_model()
node = self.filter_obj.get_active_iter()
self.cfilter = model[node][1]
if self.restrict_option:
model = self.restrict_option.get_model()
node = self.restrict_option.get_active_iter()
if node:
self.restrict_num = model[node][1]
set_proxy_value("living", self.restrict_option.get_active())
model = self.filter_note.get_model()
node = self.filter_note.get_active_iter()
self.nfilter = model[node][1]
if self.filter_note:
model = self.filter_note.get_model()
node = self.filter_note.get_active_iter()
if node:
self.nfilter = model[node][1]
set_proxy_value("note", self.filter_note.get_active())
if self.reference_filter:
model = self.reference_filter.get_model()
node = self.reference_filter.get_active_iter()
if node:
self.reference_num = model[node][1]
set_proxy_value("reference", self.reference_filter.get_active())
def get_filtered_database(self, dbase, progress=None, preview=False):
"""
dbase - the database
progress - instance that has:
.reset() method
.set_total() method
.update() method
.progress_cnt integer representing N of total done
"""
# Increment the progress count for each filter type chosen
if self.private and progress:
progress.progress_cnt += 1
if self.restrict_num > 0 and progress:
progress.progress_cnt += 1
if not self.cfilter.is_empty() and progress:
progress.progress_cnt += 1
if not self.nfilter.is_empty() and progress:
progress.progress_cnt += 1
if self.reference_num > 0 and progress:
progress.progress_cnt += 1
if progress:
progress.set_total(progress.progress_cnt)
progress.progress_cnt = 0
if self.preview_dbase:
if progress:
progress.progress_cnt += 5
return self.preview_dbase
self.proxy_dbase.clear()
for proxy_name in get_proxy_names():
dbase = self.apply_proxy(proxy_name, dbase, progress)
if preview:
self.proxy_dbase[proxy_name] = dbase
self.preview_proxy_button[proxy_name].set_sensitive(1)
people_count = len(dbase.get_person_handles())
self.preview_proxy_button[proxy_name].set_label(
ngettext("%d Person", "%d People", people_count) %
people_count)
return dbase
def apply_proxy(self, proxy_name, dbase, progress=None):
"""
Apply the named proxy to the dbase, and return.
proxy_name is one of
["person", "note", "privacy", "living", "reference"]
"""
# If the private flag is set, apply the PrivateProxyDb
import gen.proxy
if proxy_name == "privacy":
if self.private:
if progress:
progress.reset(_("Filtering private data"))
progress.progress_cnt += 1
progress.update(progress.progress_cnt)
dbase = gen.proxy.PrivateProxyDb(dbase)
# If the restrict flag is set, apply the LivingProxyDb
elif proxy_name == "living":
if self.restrict_num > 0:
if progress:
progress.reset(_("Filtering living persons"))
progress.progress_cnt += 1
progress.update(progress.progress_cnt)
mode = [None, # include living
gen.proxy.LivingProxyDb.MODE_INCLUDE_LAST_NAME_ONLY,
gen.proxy.LivingProxyDb.MODE_EXCLUDE_ALL,
][self.restrict_num]
dbase = gen.proxy.LivingProxyDb(
dbase,
mode) #
# If the filter returned by cfilter is not empty, apply the
# FilterProxyDb (Person Filter)
elif proxy_name == "person":
if not self.cfilter.is_empty():
if progress:
progress.reset(_("Applying selected person filter"))
progress.progress_cnt += 1
progress.update(progress.progress_cnt)
dbase = gen.proxy.FilterProxyDb(
dbase, self.cfilter)
# Apply the Note Filter
elif proxy_name == "note":
if not self.nfilter.is_empty():
if progress:
progress.reset(_("Applying selected note filter"))
progress.progress_cnt += 1
progress.update(progress.progress_cnt)
dbase = gen.proxy.FilterProxyDb(
dbase, note_filter=self.nfilter)
# Apply the ReferencedBySelection
elif proxy_name == "reference":
if progress:
progress.reset(_("Filtering referenced records"))
progress.progress_cnt += 1
progress.update(progress.progress_cnt)
if self.reference_num == 0:
pass
elif self.reference_num == 1:
dbase = gen.proxy.ReferencedBySelectionProxyDb(dbase,
all_people=True)
else:
raise AttributeError("no such proxy '%s'" % proxy_name)
return dbase
def edit_filter(self, namespace, filter_obj):
"""
Callback which invokes the EditFilter dialog. Will create new
filter if called if none is selected.
"""
from gui.filtereditor import EditFilter
from Filters import FilterList, GenericFilterFactory
import const
the_filter = None
filterdb = FilterList(const.CUSTOM_FILTERS)
filterdb.load()
if filter_obj.get_active() != 0:
model = filter_obj.get_model()
node = filter_obj.get_active_iter()
if node:
sel_filter = model.get_value(node, 1)
# the_filter needs to be a particular object for editor
for filt in filterdb.get_filters(namespace):
if filt.get_name() == sel_filter.get_name():
the_filter = filt
else:
the_filter = GenericFilterFactory(namespace)()
if the_filter:
EditFilter(namespace, self.dbstate, self.uistate, [],
the_filter, filterdb,
lambda : self.edit_filter_save(filterdb, namespace))
else: # can't edit this filter
from QuestionDialog import ErrorDialog
ErrorDialog(_("Cannot edit a system filter"),
_("Please select a different filter to edit"))
def edit_filter_save(self, filterdb, namespace):
"""
If a filter changed, save them all. Reloads, and also calls callback.
"""
from Filters import CustomFilters
from Filters import reload_custom_filters
filterdb.save()
reload_custom_filters()
if namespace == "Person":
model = self.build_model("person")
widget = self.filter_obj
elif namespace == "Note":
model = self.build_model("note")
widget = self.filter_note
widget.set_model(model)
widget.set_active(0)
def build_model(self, namespace):
"""
Build a model for the combo box selector.
"""
from Filters import CustomFilters
if namespace == "person":
# Populate the Person Filter
entire_db = GenericFilter()
entire_db.set_name(_("Include all selected people"))
the_filters = [entire_db]
if self.person:
the_filters += self.__define_person_filters()
the_filters.extend(CustomFilters.get_filters('Person'))
model = gtk.ListStore(gobject.TYPE_STRING, object)
for item in the_filters:
model.append(row=[item.get_name(), item])
elif namespace == "note":
# Populate the Notes Filter
entire_db = GenericFilter()
entire_db.set_name(_("Include all selected notes"))
notes_filters = [entire_db]
notes_filters.extend(CustomFilters.get_filters('Note'))
model = gtk.ListStore(gobject.TYPE_STRING, object)
for item in notes_filters:
model.append(row=[item.get_name(), item])
elif namespace == "living":
model = gtk.ListStore(gobject.TYPE_STRING, int)
row = 0
for item in [
_('Include all selected people'),
_('Replace given names of living people'),
_('Do not include living people')]:
model.append(row=[item, row])
row += 1
elif namespace == "reference":
model = gtk.ListStore(gobject.TYPE_STRING, int)
row = 0
for item in [
_('Include all selected records'),
_('Do not include records not linked to a selected person'),]:
model.append(row=[item, row])
row += 1
return model
@@ -38,7 +38,7 @@ from Filters.Rules._HasNoteSubstrBase import HasNoteSubstrBase
# "Events having notes that contain a substring"
#-------------------------------------------------------------------------
class HasNoteMatchingSubstringOf(HasNoteSubstrBase):
"""People having notes containing <subtring>"""
"""People having notes containing <substring>"""
name = _('Events having notes containing <substring>')
description = _("Matches events whose notes contain text "
+2 -2
View File
@@ -40,5 +40,5 @@ from Filters.Rules._HasSourceBase import HasSourceBase
class HasSource(HasSourceBase):
"""Events with sources"""
name = _('Events with <count> source')
description = _("Matches events with a certain number of items in the source")
name = _('Events with <count> sources')
description = _("Matches events with a certain number of sources connected to it")
@@ -38,7 +38,7 @@ from Filters.Rules._HasNoteSubstrBase import HasNoteSubstrBase
# "People having notes that contain a substring"
#-------------------------------------------------------------------------
class HasNoteMatchingSubstringOf(HasNoteSubstrBase):
"""People having notes containing <subtring>"""
"""People having notes containing <substring>"""
name = _('Families having notes containing <substring>')
description = _("Matches families whose notes contain text matching a substring")
+2 -2
View File
@@ -43,5 +43,5 @@ from Filters.Rules._HasSourceBase import HasSourceBase
class HasSource(HasSourceBase):
"""Families with sources"""
name = _('Families with <count> source')
description = _("Matches families with a certain number of items in the source")
name = _('Families with <count> sources')
description = _("Matches families with a certain number of sources connected to it")
+1 -1
View File
@@ -24,7 +24,7 @@
Set of wrappers for family filter rules based on personal rules.
Any rule that matches family based on personal rule applied
to father, mather, or any child, just needs to do two things:
to father, mother, or any child, just needs to do two things:
> Set the class attribute 'base_class' to the personal rule
> Set apply method to be an appropriate wrapper below
Example:
+1
View File
@@ -17,6 +17,7 @@ pkgdata_PYTHON = \
_HasNoteSubstrBase.py\
_HasReferenceCountBase.py \
_HasSourceBase.py \
_HasTagBase.py \
_HasTextMatchingRegexpOf.py\
_HasTextMatchingSubstringOf.py\
__init__.py\
@@ -38,7 +38,7 @@ from Filters.Rules._HasNoteSubstrBase import HasNoteSubstrBase
# "Media having notes that contain a substring"
#-------------------------------------------------------------------------
class HasNoteMatchingSubstringOf(HasNoteSubstrBase):
"""Media having notes containing <subtring>"""
"""Media having notes containing <substring>"""
name = _('Media objects having notes containing <substring>')
description = _("Matches media objects whose notes contain text "
+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
@@ -39,7 +39,7 @@ from Filters.Rules import Rule
# "Events having notes that contain a substring"
#-------------------------------------------------------------------------
class MatchesSubstringOf(Rule):
"""Notes having notes containing <subtring>"""
"""Notes having notes containing <substring>"""
labels = [ _('Substring:')]
name = _('Notes containing <substring>')
@@ -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
+1
View File
@@ -28,6 +28,7 @@ pkgdata_PYTHON = \
_HasRelationship.py \
_HasSource.py \
_HasSourceOf.py \
_HasTag.py \
_HasTextMatchingRegexpOf.py \
_HasTextMatchingSubstringOf.py \
_HasUnknownGender.py \
@@ -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)
@@ -57,25 +57,29 @@ class HasCommonAncestorWith(Rule):
# Start with filling the cache for root person (gramps_id in self.list[0])
self.ancestor_cache = {}
root_person = db.get_person_from_gramps_id(self.list[0])
self.add_ancs(db, root_person)
self.with_people = [root_person.handle]
if root_person:
self.add_ancs(db, root_person)
self.with_people = [root_person.handle]
else:
self.with_people = []
def add_ancs(self, db, person):
if person.handle not in self.ancestor_cache:
if person and person.handle not in self.ancestor_cache:
self.ancestor_cache[person.handle] = set()
else:
return
for fam_handle in person.get_parent_family_handle_list():
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:
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]
def reset(self):
self.ancestor_cache = {}
@@ -84,13 +88,13 @@ class HasCommonAncestorWith(Rule):
for handle in self.with_people:
if ((handle in self.ancestor_cache and
self.ancestor_cache[handle]) &
(other.handle in self.ancestor_cache and
(other and other.handle in self.ancestor_cache and
self.ancestor_cache[other.handle])):
return True
return False
def apply(self, db, person):
if person.handle not in self.ancestor_cache:
if person and person.handle not in self.ancestor_cache:
self.add_ancs(db, person)
return self.has_common_ancestor(person)
@@ -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"""
@@ -51,8 +51,8 @@ class HasCommonAncestorWithFilterMatch(HasCommonAncestorWith,MatchesFilter):
"with anybody matched by a filter")
category = _("Ancestral filters")
def __init__(self,list):
HasCommonAncestorWith.__init__(self,list)
def __init__(self, list):
HasCommonAncestorWith.__init__(self, list)
self.ancestor_cache = {}
def prepare(self, db):
@@ -64,13 +64,13 @@ 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):
if person and filt.apply(db, person):
#store all people in the filter so as to compare later
self.with_people.append(person.handle)
#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
+56 -20
View File
@@ -34,6 +34,7 @@ from gen.ggettext import sgettext as _
#
#-------------------------------------------------------------------------
from Filters.Rules._Rule import Rule
from gen.lib import NameOriginType
#-------------------------------------------------------------------------
#
@@ -43,41 +44,76 @@ from Filters.Rules._Rule import Rule
class HasNameOf(Rule):
"""Rule that checks for full or partial name matches"""
labels = [ _('Given name:'),
_('Family name:'),
_('Suffix:'),
labels = [ _('Given name:'),
_('Full Family name:'),
_('person|Title:'),
_('Suffix:'),
_('Call Name:'),
_('Nick Name:'),
_('Prefix:'),
_('Single Surname:'),
_('Connector'),
_('Patronymic:'),
_('Call Name:'),]
_('Family Nick Name:')]
name = _('People with the <name>')
description = _("Matches people with a specified (partial) name")
category = _('General filters')
def apply(self,db,person):
self.firstn = self.list[0]
self.lastn = self.list[1]
self.surn = self.list[2]
self.title = self.list[3]
self.prefix = self.list[4]
self.patr = self.list[5]
self.calln = self.list[6]
def prepare(self, db):
self.firstn = self.list[0].upper()
self.lastn = self.list[1].upper()
self.title = self.list[2].upper()
self.suffix = self.list[3].upper()
self.calln = self.list[4].upper()
self.nick = self.list[5].upper()
self.famnick = self.list[10].upper()
#surname parts
self.prefix = self.list[6].upper()
self.surn = self.list[7].upper()
self.con = self.list[8].upper()
self.patr = self.list[9].upper()
def apply(self, db, person):
for name in [person.get_primary_name()] + person.get_alternate_names():
val = 1
if self.firstn and name.get_first_name().upper().find(self.firstn.upper()) == -1:
valpref = 0
if not self.prefix:
valpref = 1
valsurn = 0
if not self.surn:
valsurn = 1
valcon = 0
if not self.con:
valcon = 1
valpatr = 0
if not self.patr:
valpatr = 1
if self.firstn and name.get_first_name().upper().find(self.firstn) == -1:
val = 0
if self.lastn and name.get_surname().upper().find(self.lastn.upper()) == -1:
elif self.lastn and name.get_surname().upper().find(self.lastn) == -1:
val = 0
if self.surn and name.get_suffix().upper().find(self.surn.upper()) == -1:
elif self.suffix and name.get_suffix().upper().find(self.surn) == -1:
val = 0
if self.title and name.get_title().upper().find(self.title.upper()) == -1:
elif self.title and name.get_title().upper().find(self.title) == -1:
val = 0
if self.prefix and name.get_prefix().upper().find(self.prefix.upper()) == -1:
elif self.calln and name.get_call_name().upper().find(self.calln) == -1:
val = 0
if self.patr and name.get_patronymic().upper().find(self.patr.upper()) == -1:
elif self.nick and name.get_nick_name().upper().find(self.nick) == -1:
val = 0
if self.calln and name.get_call_name().upper().find(self.calln.upper()) == -1:
elif self.famnick and name.get_family_nick_name().upper().find(self.famnick) == -1:
val = 0
if val == 1:
else:
#obtain surnames
for surn in name.get_surname_list():
if self.prefix and surn.get_prefix().upper().find(self.prefix) != -1:
valpref = 1
if self.surn and surn.get_surname().upper().find(self.surn) != -1:
valsurn = 1
if self.con and surn.get_connector().upper().find(self.con) != -1:
valcon = 1
if self.patr and surn.get_origintype().value == NameOriginType.PATRONYMIC \
and surn.get_surname().upper().find(self.patr) != -1:
valpatr = 1
if val == 1 and valpref == 1 and valsurn == 1 and valcon == 1 and valpatr ==1:
return True
return False
@@ -38,7 +38,7 @@ from Filters.Rules._HasNoteSubstrBase import HasNoteSubstrBase
# "People having notes that contain a substring"
#-------------------------------------------------------------------------
class HasNoteMatchingSubstringOf(HasNoteSubstrBase):
"""People having notes containing <subtring>"""
"""People having notes containing <substring>"""
name = _('People having notes containing <substring>')
description = _("Matches people whose notes contain text matching a substring")
+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]:
+2 -2
View File
@@ -43,5 +43,5 @@ from Filters.Rules._HasSourceBase import HasSourceBase
class HasSource(HasSourceBase):
"""People with sources"""
name = _('People with <count> source')
description = _("Matches people with a certain number of items in the source")
name = _('People with <count> sources')
description = _("Matches people with a certain number of sources connected to it")
+50
View File
@@ -0,0 +1,50 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2010 Nick Hall
#
# 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
#
# $Id$
"""
Rule that checks for a person with a particular tag.
"""
#-------------------------------------------------------------------------
#
# Standard Python modules
#
#-------------------------------------------------------------------------
from gen.ggettext import gettext as _
#-------------------------------------------------------------------------
#
# GRAMPS modules
#
#-------------------------------------------------------------------------
from Filters.Rules._HasTagBase import HasTagBase
#-------------------------------------------------------------------------
#
# HasTag
#
#-------------------------------------------------------------------------
class HasTag(HasTagBase):
"""
Rule that checks for a person with a particular tag.
"""
labels = [ _('Tag:') ]
name = _('People with the <tag>')
description = _("Matches people with the particular tag")
@@ -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
+4 -3
View File
@@ -48,8 +48,9 @@ class IncompleteNames(Rule):
def apply(self,db,person):
for name in [person.get_primary_name()] + person.get_alternate_names():
if name.get_first_name() == "":
return True
if name.get_surname() == "":
if name.get_first_name().strip() == "":
return True
for surn in name.get_surname_list():
if surn.get_surname().strip() == "":
return True
return False
@@ -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]:

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