Commit 4303f718d7dff82011dc3b09c063dd4f56ef42eb

Authored by tatiana
1 parent ec1544ea

FIX: Removal using del

invesalius/data/slice_.py
@@ -88,7 +88,9 @@ class Slice(object): @@ -88,7 +88,9 @@ class Slice(object):
88 ps.Publisher().subscribe(self.OnDuplicateMasks, 'Duplicate masks') 88 ps.Publisher().subscribe(self.OnDuplicateMasks, 'Duplicate masks')
89 89
90 def OnRemoveMasks(self, pubsub_evt): 90 def OnRemoveMasks(self, pubsub_evt):
  91 + print "OnRemoveMasks"
91 selected_items = pubsub_evt.data 92 selected_items = pubsub_evt.data
  93 + print "selected_items"
92 proj = Project() 94 proj = Project()
93 for item in selected_items: 95 for item in selected_items:
94 proj.RemoveMask(item) 96 proj.RemoveMask(item)
invesalius/gui/data_notebook.py
@@ -30,7 +30,7 @@ import wx.lib.pubsub as ps @@ -30,7 +30,7 @@ import wx.lib.pubsub as ps
30 30
31 import gui.dialogs as dlg 31 import gui.dialogs as dlg
32 import gui.widgets.listctrl as listmix 32 import gui.widgets.listctrl as listmix
33 - 33 +import utils as ul
34 34
35 35
36 BTN_NEW, BTN_REMOVE, BTN_DUPLICATE = [wx.NewId() for i in xrange(3)] 36 BTN_NEW, BTN_REMOVE, BTN_DUPLICATE = [wx.NewId() for i in xrange(3)]
@@ -201,12 +201,26 @@ class MasksListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): @@ -201,12 +201,26 @@ class MasksListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin):
201 # Delete key 201 # Delete key
202 if (sys.platform == 'darwin') and (keycode == wx.WXK_BACK): 202 if (sys.platform == 'darwin') and (keycode == wx.WXK_BACK):
203 selected = self.GetSelected() 203 selected = self.GetSelected()
  204 + self.__remove_items()
204 for item in selected: 205 for item in selected:
205 self.RemoveMask(item) 206 self.RemoveMask(item)
206 elif (keycode == wx.WXK_DELETE): 207 elif (keycode == wx.WXK_DELETE):
207 selected = self.GetSelected() 208 selected = self.GetSelected()
  209 + self.__remove_items()
208 for item in selected: 210 for item in selected:
209 self.RemoveMask(item) 211 self.RemoveMask(item)
  212 +
  213 +
  214 + def __remove_items(self):
  215 + print "__remove_items - mask"
  216 + selected_items = self.GetSelected()
  217 + print selected_items
  218 + if selected_items:
  219 + for item in selected_items:
  220 + self.RemoveMask(item)
  221 + ps.Publisher().sendMessage('Remove masks', selected_items)
  222 +
  223 +
210 224
211 def OnCloseProject(self, pubsub_evt): 225 def OnCloseProject(self, pubsub_evt):
212 self.DeleteAllItems() 226 self.DeleteAllItems()
@@ -320,6 +334,7 @@ class MasksListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): @@ -320,6 +334,7 @@ class MasksListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin):
320 """ 334 """
321 selected = [] 335 selected = []
322 for index in self.mask_list_index: 336 for index in self.mask_list_index:
  337 + print 'index', index
323 if self.IsSelected(index): 338 if self.IsSelected(index):
324 selected.append(index) 339 selected.append(index)
325 # it is important to revert items order, so 340 # it is important to revert items order, so
@@ -348,7 +363,12 @@ class MasksListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): @@ -348,7 +363,12 @@ class MasksListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin):
348 self.SetItemImage(key, 1) 363 self.SetItemImage(key, 1)
349 ps.Publisher().sendMessage('Show mask', (key, 1)) 364 ps.Publisher().sendMessage('Show mask', (key, 1))
350 365
351 - self.DeleteItem(index) 366 + # TODO: Understand why this is occuring and enhace code, so
  367 + # this excpet is not necessary
  368 + try:
  369 + self.DeleteItem(index)
  370 + except wx._core.PyAssertionError:
  371 + ul.debug("tried to remove inexistent index")
352 372
353 #------------------------------------------------- 373 #-------------------------------------------------
354 class SurfacePage(wx.Panel): 374 class SurfacePage(wx.Panel):
@@ -522,13 +542,24 @@ class SurfacesListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): @@ -522,13 +542,24 @@ class SurfacesListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin):
522 # Delete key 542 # Delete key
523 if (sys.platform == 'darwin') and (keycode == wx.WXK_BACK): 543 if (sys.platform == 'darwin') and (keycode == wx.WXK_BACK):
524 selected = self.GetSelected() 544 selected = self.GetSelected()
  545 + self.__remove_items()
525 for item in selected: 546 for item in selected:
526 self.RemoveSurface(item) 547 self.RemoveSurface(item)
  548 +
527 elif (keycode == wx.WXK_DELETE): 549 elif (keycode == wx.WXK_DELETE):
528 selected = self.GetSelected() 550 selected = self.GetSelected()
  551 + self.__remove_items()
529 for item in selected: 552 for item in selected:
530 self.RemoveSurface(item) 553 self.RemoveSurface(item)
531 554
  555 + def __remove_items(self):
  556 + print "Remove items - surface"
  557 + selected_items = self.GetSelected()
  558 + print selected_items
  559 + if selected_items:
  560 + for item in selected_items:
  561 + self.RemoveSurface(item)
  562 + ps.Publisher().sendMessage('Remove surfaces', selected_items)
532 563
533 def OnCloseProject(self, pubsub_evt): 564 def OnCloseProject(self, pubsub_evt):
534 self.DeleteAllItems() 565 self.DeleteAllItems()
@@ -717,7 +748,11 @@ class SurfacesListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): @@ -717,7 +748,11 @@ class SurfacesListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin):
717 if i > index: 748 if i > index:
718 new_dict[i-1] = old_dict[i] 749 new_dict[i-1] = old_dict[i]
719 self.surface_list_index = new_dict 750 self.surface_list_index = new_dict
720 - self.DeleteItem(index) 751 +
  752 + try:
  753 + self.DeleteItem(index)
  754 + except wx._core.PyAssertionError:
  755 + ul.debug("tried to remove inexistent index")
721 756
722 #------------------------------------------------- 757 #-------------------------------------------------
723 758