diff --git a/gramps2/src/ImageSelect.py b/gramps2/src/ImageSelect.py index b8e7d346e..dfc5c94fd 100644 --- a/gramps2/src/ImageSelect.py +++ b/gramps2/src/ImageSelect.py @@ -64,6 +64,9 @@ _IMAGEX = 140 _IMAGEY = 150 _PAD = 5 + +_iconlist_refs = [] + #------------------------------------------------------------------------- # # ImageSelect class @@ -217,6 +220,8 @@ class Gallery(ImageSelect): icon_list.connect("drag_data_get", self.on_photolist_drag_data_get) + _iconlist_refs.append(icon_list) + # Remember arguments self.path = path; self.dataobj = dataobj; @@ -235,9 +240,13 @@ class Gallery(ImageSelect): def close(self): self.iconlist.hide() - self.canvas_list = None + for a in self.canvas_list: + a[0].destroy() + a[1].destroy() + a[2].destroy() + self.p_map = None -# gc.collect() + self.canvas_list = None self.iconlist.destroy() def on_canvas1_event(self,obj,event): diff --git a/gramps2/src/PlaceView.py b/gramps2/src/PlaceView.py index 4148283ec..150053405 100644 --- a/gramps2/src/PlaceView.py +++ b/gramps2/src/PlaceView.py @@ -142,17 +142,12 @@ class PlaceView: def button_press(self,obj,event): if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1: - store,iter = self.selection.get_selected() - id = store.get_value(iter,1) - - place = self.db.getPlace(id) - EditPlace.EditPlace(self,place,self.update_display) + mlist = [] + self.selection.selected_foreach(self.blist,mlist) + if mlist: + EditPlace.EditPlace(self,mlist[0],self.update_display) return 1 -# def insert_place(self,place): -# self.place_list.append(place.getDisplayInfo()) -# self.place_list.set_row_data(self.place_list.rows-1,place.getId()) - def new_place_after_edit(self,place): self.db.addPlace(place) self.update(0) @@ -165,57 +160,48 @@ class PlaceView: def on_add_place_clicked(self,obj): EditPlace.EditPlace(self,Place(),self.new_place_after_edit) -# def moveto(self,row): -# self.place_list.unselect_all() -# self.place_list.select_row(row,0) -# self.place_list.moveto(row) - def on_delete_clicked(self,obj): - store,iter = self.selection.get_selected() - if not iter: - return - - id = store.get_value(iter,1) + mlist = [] + self.selection.selected_foreach(self.blist,mlist) - used = 0 - place = self.db.getPlace(id) - for key in self.db.getPersonKeys(): - p = self.db.getPerson(key) - event_list = [p.getBirth(), p.getDeath()] + p.getEventList() - if p.getLdsBaptism(): - event_list.append(p.getLdsBaptism()) - if p.getLdsEndowment(): - event_list.append(p.getLdsEndowment()) - if p.getLdsSeal(): - event_list.append(p.getLdsSeal()) - for event in event_list: - if event.getPlace() == place: - used = 1 + for place in mlist: + for key in self.db.getPersonKeys(): + p = self.db.getPerson(key) + event_list = [p.getBirth(), p.getDeath()] + p.getEventList() + if p.getLdsBaptism(): + event_list.append(p.getLdsBaptism()) + if p.getLdsEndowment(): + event_list.append(p.getLdsEndowment()) + if p.getLdsSeal(): + event_list.append(p.getLdsSeal()) + for event in event_list: + if event.getPlace() == place: + used = 1 - for f in self.db.getFamilyMap().values(): - event_list = f.getEventList() - if f.getLdsSeal(): - event_list.append(f.getLdsSeal()) - for event in event_list: - if event.getPlace() == place: - used = 1 + for f in self.db.getFamilyMap().values(): + event_list = f.getEventList() + if f.getLdsSeal(): + event_list.append(f.getLdsSeal()) + for event in event_list: + if event.getPlace() == place: + used = 1 - if used == 1: - ans = EditPlace.DeletePlaceQuery(place,self.db,self.update_display) - QuestionDialog(_('Delete Place'), - _("This place is currently being used. Delete anyway?"), - ans.query_response) - else: - self.db.removePlace(place.getId()) - self.update(0) - Utils.modified() + if used == 1: + ans = EditPlace.DeletePlaceQuery(place,self.db,self.update_display) + QuestionDialog(_('Delete Place'), + _("%s is currently being used.\nDelete anyway?" % place.get_title()), + ans.query_response) + else: + self.db.removePlace(place.getId()) + self.update(0) + Utils.modified() def on_edit_clicked(self,obj): """Display the selected places in the EditPlace display""" - list_store, iter = self.selection.get_selected() - if iter: - id = list_store.get_value(iter,1) - place = self.db.getPlace(id) + mlist = [] + self.selection.selected_foreach(self.blist,mlist) + + for place in mlist: EditPlace.EditPlace(self, place, self.update_display) def blist(self,store,path,iter,list): diff --git a/gramps2/src/gramps.zodb b/gramps2/src/gramps.zodb index d7f7a315e..ad3e9f9b8 100644 Binary files a/gramps2/src/gramps.zodb and b/gramps2/src/gramps.zodb differ