From 6d6357a2fc55853775b99cae0d36d1ad64229839 Mon Sep 17 00:00:00 2001 From: Benny Malengier Date: Fri, 5 Oct 2007 11:58:27 +0000 Subject: [PATCH] 2007-10-05 Benny Malengier * src/DisplayTabs/_GalleryTab.py: remove bug that leads to database corruption, if media is deleted in mediaview, remove media in all open gallery tabs svn: r9082 --- ChangeLog | 4 ++++ src/DisplayTabs/_GalleryTab.py | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/ChangeLog b/ChangeLog index 79ee6fc13..e47b1965d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2007-10-05 Benny Malengier + * src/DisplayTabs/_GalleryTab.py: remove bug that leads to database corruption, + if media is deleted in mediaview, remove media in all open gallery tabs + 2007-10-05 James G. Sack * src/GrampsDb/_GrampsDbBase.py: * src/GrampsDb/_GrampsGEDDB.py: diff --git a/src/DisplayTabs/_GalleryTab.py b/src/DisplayTabs/_GalleryTab.py index 1114736fb..ef65ca04c 100644 --- a/src/DisplayTabs/_GalleryTab.py +++ b/src/DisplayTabs/_GalleryTab.py @@ -77,6 +77,9 @@ class GalleryTab(ButtonTab): self.rebuild() self.show_all() + + #connect external remove of object to rebuild + self.dbstate.db.connect('media-delete',self.media_delete) def double_click(self, obj, event): """ @@ -271,6 +274,26 @@ class GalleryTab(ButtonTab): self.changed = True self.rebuild() + def media_delete(self, del_media_handle_list): + """ + Outside of this tab media objects have been deleted. Check if tab + and object must be changed. + Note: delete of object will cause reference on database to be removed, + so this method need not do this + """ + ref_handles = [x.ref for x in self.media_list] + for handle in del_media_handle_list : + pos = None + try : + pos = ref_handles.index(handle) + except ValueError : + continue + + if pos is not None: + #oeps, we need to remove this reference, and rebuild tab + self.media_list.remove(self.media_list[pos]) + self.rebuild() + def _set_dnd(self): """ Sets up drag-n-drop. The source and destionation are set by calling .target()