* src/ReadXML.py: handle date object on names

* src/gramps.glade: add menu items for merging
* src/MergePeople.py: new person merge
* src/gramps_main.py: merge handling callbacks
* src/mergedata.glade: updated interface for merging

* src/SourceView.py: connect SourceView.merge into the multiple
selection mechanism


svn: r4254
This commit is contained in:
Don Allingham
2005-03-30 01:45:14 +00:00
parent 1856f08d98
commit 9d2dffcc9d
6 changed files with 3355 additions and 1595 deletions

View File

@ -76,6 +76,7 @@ import Exporter
import RelImage
import RecentFiles
import NameDisplay
import Errors
from GrampsMime import mime_type_is_defined
@ -152,7 +153,7 @@ class Gramps:
self.init_interface()
except const.ErrorSchemaInvalid, val:
except Errors.GConfSchemaError, val:
ErrorDialog(_("Configuration error"),
val + _("\n\nPossibly the installation of GRAMPS was incomplete."
" Make sure the GConf schema of GRAMPS is properly installed."))
@ -398,6 +399,7 @@ class Gramps:
"on_media_list_drag_data_get" : self.media_view.on_drag_data_get,
"on_media_list_drag_data_received" : self.media_view.on_drag_data_received,
"on_merge_activate" : self.on_merge_activate,
"on_fast_merge1_activate" : self.on_fast_merge_activate,
"on_sidebar1_activate" : self.on_sidebar_activate,
"on_toolbar2_activate" : self.on_toolbar_activate,
"on_filter1_activate" : self.on_filter_activate,
@ -991,6 +993,29 @@ class Gramps:
def report_bug_activate(self,obj):
gnome.url_show(_BUGREPORT)
def on_fast_merge_activate(self,obj):
"""Calls up the merge dialog for the selection"""
page = self.views.get_current_page()
if page == PERSON_VIEW:
mlist = self.people_view.get_selected_objects()
if len(mlist) != 2:
msg = _("Cannot merge people.")
msg2 = _("Exactly two people must be selected to perform a merge. "
"A second person can be selected by holding down the "
"control key while clicking on the desired person.")
ErrorDialog(msg,msg2)
else:
import MergePeople
p1 = self.db.get_person_from_handle(mlist[0])
p2 = self.db.get_person_from_handle(mlist[1])
merger = MergePeople.MergePeopleUI(self.db,p1,p2,self.merge_update)
elif page == PLACE_VIEW:
self.place_view.merge()
elif page == SOURCE_VIEW:
self.source_view.merge()
def on_merge_activate(self,obj):
"""Calls up the merge dialog for the selection"""
page = self.views.get_current_page()
@ -1005,11 +1030,10 @@ class Gramps:
"control key while clicking on the desired person.")
ErrorDialog(msg,msg2)
else:
import MergeData
import MergePeople
p1 = self.db.get_person_from_handle(mlist[0])
p2 = self.db.get_person_from_handle(mlist[1])
MergeData.MergePeople(self,self.db,p1,p2,self.merge_update,
self.update_after_edit)
merger = MergePeople.Compare(self.db,p1,p2,self.merge_update)
elif page == PLACE_VIEW:
self.place_view.merge()
elif page == SOURCE_VIEW:
@ -1427,9 +1451,7 @@ class Gramps:
self.redraw_histmenu()
self.enable_interface()
def merge_update(self,p1,p2,old_id):
self.people_view.remove_from_person_list(p2)
self.people_view.remove_from_history(p2)
def merge_update(self):
self.redraw_histmenu()
self.people_view.build_tree()
self.update_display(0)