* src/AddSpouse.py: new database callback scheme. This scheme

provides a registration mechanism to signal interested objects
when database commits occur. The eliminates most of all callback
functions tied to interface windows.
* src/AddrEdit.py: new database callback scheme
* src/AttrEdit.py: new database callback scheme
* src/ChooseParents.py: new database callback scheme
* src/EditPerson.py: new database callback scheme
* src/EditPlace.py: new database callback scheme
* src/EditSource.py: new database callback scheme
* src/EventEdit.py: new database callback scheme
* src/FamilyView.py: new database callback scheme
* src/GrampsBSDDB.py: new database callback scheme
* src/GrampsDbBase.py: new database callback scheme
* src/GrampsInMemDB.py: new database callback scheme
* src/Marriage.py: new database callback scheme
* src/NameEdit.py: new database callback scheme
* src/PeopleView.py: new database callback scheme
* src/PlaceView.py: new database callback scheme
* src/ReadGedcom.py: new database callback scheme
* src/ReadXML.py: new database callback scheme
* src/SourceView.py: new database callback scheme
* src/Sources.py: new database callback scheme
* src/gramps_main.py: new database callback scheme


svn: r4267
This commit is contained in:
Don Allingham
2005-04-01 05:33:22 +00:00
parent c427a2b0f4
commit 862ba59a2f
22 changed files with 477 additions and 355 deletions

View File

@@ -67,7 +67,7 @@ _HANDLE_COL = len(column_names)
#-------------------------------------------------------------------------
class PlaceView:
def __init__(self,parent,db,glade,update):
def __init__(self,parent,db,glade):
self.parent = parent
self.glade = glade
self.list = glade.get_widget("place_list")
@@ -84,7 +84,7 @@ class PlaceView:
self.topWindow = self.glade.get_widget("gramps")
self.columns = []
self.build_columns()
self.change_db(db)
def build_columns(self):
for column in self.columns:
@@ -107,7 +107,22 @@ class PlaceView:
self.columns.append(column)
self.list.append_column(column)
def place_add(self,handle_list):
for handle in handle_list:
self.model.add_row_by_handle(handle)
def place_update(self,handle_list):
for handle in handle_list:
self.model.update_row_by_handle(handle)
def place_delete(self,handle_list):
for handle in handle_list:
self.model.delete_row_by_handle(handle)
def change_db(self,db):
db.add_place_callbacks(
'place_view', self.place_add, self.place_update,
self.place_delete, self.build_tree)
self.build_columns()
self.build_tree()
@@ -123,8 +138,7 @@ class PlaceView:
self.selection.selected_foreach(self.blist,mlist)
if mlist:
place = self.parent.db.get_place_from_handle(mlist[0])
EditPlace.EditPlace(self.parent,place,self.update_display,
self.topWindow)
EditPlace.EditPlace(self.parent,place,self.topWindow)
return 1
elif event.type == gtk.gdk.BUTTON_PRESS and event.button == 3:
self.build_context_menu(event)
@@ -165,14 +179,11 @@ class PlaceView:
menu.popup(None,None,None,event.button,event.time)
def on_add_place_clicked(self,obj):
EditPlace.EditPlace(self.parent,RelLib.Place(),self.new_place_after_edit)
EditPlace.EditPlace(self.parent,RelLib.Place())
def new_place_after_edit(self,place):
self.model.add_row_by_handle(place.get_handle())
def update_display(self,place):
self.model.update_row_by_handle(place.get_handle())
def delete_place(self,place):
trans = self.parent.db.transaction_begin()
place_handle = place.get_handle()
@@ -220,15 +231,15 @@ class PlaceView:
place = self.parent.db.get_place_from_handle(place_handle)
if used == 1:
ans = EditPlace.DeletePlaceQuery(place,self.parent.db,
self.model.delete_row_by_handle)
QuestionDialog(_('Delete %s?') % place.get_title(),
_('This place is currently being used by at least one '
'record in the database. Deleting it will remove it '
'from the database and remove it from all records '
'that reference it.'),
_('_Delete Place'),
ans.query_response)
ans = EditPlace.DeletePlaceQuery(place,self.parent.db)
QuestionDialog(
_('Delete %s?') % place.get_title(),
_('This place is currently being used by at least one '
'record in the database. Deleting it will remove it '
'from the database and remove it from all records '
'that reference it.'),
_('_Delete Place'),
ans.query_response)
else:
self.delete_place(place)
@@ -239,7 +250,7 @@ class PlaceView:
for place_handle in mlist:
place = self.parent.db.get_place_from_handle(place_handle)
EditPlace.EditPlace(self.parent, place, self.update_display)
EditPlace.EditPlace(self.parent, place,self.topWindow)
def blist(self,store,path,iter,list):
handle = store.get_value(iter,_HANDLE_COL)