Commit 8655534fb637a6f820a576b05a9506d93b5cf8f6

Authored by tatiana
1 parent 2595aafa

FIX: Mask removal... Apparently working (several tests)

invesalius/data/slice_.py
@@ -95,14 +95,14 @@ class Slice(object): @@ -95,14 +95,14 @@ class Slice(object):
95 print "1", proj.mask_dict 95 print "1", proj.mask_dict
96 for item in selected_items: 96 for item in selected_items:
97 proj.RemoveMask(item) 97 proj.RemoveMask(item)
98 - print "2", proj.mask_dict  
99 - #index = self.current_mask.index  
100 - print "current_mask", self.current_mask.index  
101 - if (proj.mask_dict) and (self.current_mask.index in selected_items):  
102 - print "first mask exist"  
103 - self.current_mask = proj.mask_dict[0]  
104 - self.SelectCurrentMask(0)  
105 - elif not proj.mask_dict: 98 + #print "2", proj.mask_dict
  99 + ##index = self.current_mask.index
  100 + #print "current_mask", self.current_mask.index
  101 + #if (proj.mask_dict) and (self.current_mask.index in selected_items):
  102 + # print "first mask exist"
  103 + # self.current_mask = proj.mask_dict[0]
  104 + # self.SelectCurrentMask(0)
  105 + if not proj.mask_dict:
106 print "no mask" 106 print "no mask"
107 self.blend_filter.SetOpacity(1, 0) 107 self.blend_filter.SetOpacity(1, 0)
108 self.blend_filter.Update() 108 self.blend_filter.Update()
invesalius/gui/data_notebook.py
@@ -148,15 +148,16 @@ class ButtonControlPanel(wx.Panel): @@ -148,15 +148,16 @@ class ButtonControlPanel(wx.Panel):
148 ps.Publisher().sendMessage('Create new mask', mask_name) 148 ps.Publisher().sendMessage('Create new mask', mask_name)
149 149
150 def OnRemove(self): 150 def OnRemove(self):
151 - print "button -- OnRemove"  
152 - selected_items = self.parent.listctrl.GetSelected()  
153 - if selected_items:  
154 - print selected_items  
155 - ps.Publisher().sendMessage('Remove masks', selected_items)  
156 - for item in selected_items:  
157 - self.parent.listctrl.RemoveMask(item)  
158 - else:  
159 - dlg.MaskSelectionRequiredForRemoval() 151 + #print "button -- OnRemove"
  152 + #selected_items = self.parent.listctrl.GetSelected()
  153 + #print "selected_items:",selected_items
  154 +
  155 + #if selected_items:
  156 + # ps.Publisher().sendMessage('Remove masks', selected_items)
  157 + # for item in selected_items:
  158 + self.parent.listctrl.RemoveMasks()
  159 + #else:
  160 + # dlg.MaskSelectionRequiredForRemoval()
160 161
161 def OnDuplicate(self): 162 def OnDuplicate(self):
162 selected_items = self.parent.listctrl.GetSelected() 163 selected_items = self.parent.listctrl.GetSelected()
@@ -203,70 +204,60 @@ class MasksListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): @@ -203,70 +204,60 @@ class MasksListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin):
203 keycode = event.GetKeyCode() 204 keycode = event.GetKeyCode()
204 # Delete key 205 # Delete key
205 if (sys.platform == 'darwin') and (keycode == wx.WXK_BACK): 206 if (sys.platform == 'darwin') and (keycode == wx.WXK_BACK):
206 - selected = self.GetSelected()  
207 - #self.__remove_items()  
208 - ps.Publisher().sendMessage('Remove masks', selected)  
209 - for item in selected:  
210 - self.RemoveMask(item) 207 + self.RemoveMasks()
211 elif (keycode == wx.WXK_DELETE): 208 elif (keycode == wx.WXK_DELETE):
212 - selected = self.GetSelected()  
213 - #self.__remove_items()  
214 - ps.Publisher().sendMessage('Remove masks', selected)  
215 - for item in selected:  
216 - self.RemoveMask(item) 209 + self.RemoveMasks()
217 210
218 -  
219 - def __remove_items(self):  
220 - print "__remove_items - mask" 211 + def RemoveMasks(self):
  212 + """
  213 + Remove selected items.
  214 + """
  215 + print "---------------------------------------------------"
  216 + print "Remove item"
221 selected_items = self.GetSelected() 217 selected_items = self.GetSelected()
222 - print selected_items 218 + print "selected_items:",selected_items
  219 +
223 if selected_items: 220 if selected_items:
224 - for item in selected_items:  
225 - self.RemoveMask(item)  
226 ps.Publisher().sendMessage('Remove masks', selected_items) 221 ps.Publisher().sendMessage('Remove masks', selected_items)
  222 + else:
  223 + dlg.MaskSelectionRequiredForRemoval()
  224 +
227 225
228 - def RemoveMask(self, index):  
229 - """  
230 - Remove item given its index.  
231 - """  
232 - print "Remove item"  
233 # it is necessary to update internal dictionary 226 # it is necessary to update internal dictionary
234 # that maps bitmap given item index 227 # that maps bitmap given item index
235 old_dict = self.mask_list_index 228 old_dict = self.mask_list_index
236 print "current_index", self.current_index 229 print "current_index", self.current_index
237 print "old_dict", old_dict 230 print "old_dict", old_dict
238 new_dict = {} 231 new_dict = {}
239 - for i in old_dict:  
240 - if i < index:  
241 - new_dict[i] = old_dict[i]  
242 - if i > index:  
243 - new_dict[i-1] = old_dict[i] 232 + for index in selected_items:
  233 + self.DeleteItem(index)
  234 + for i in old_dict:
  235 + if i < index:
  236 + new_dict[i] = old_dict[i]
  237 + if i > index:
  238 + new_dict[i-1] = old_dict[i]
  239 + old_dict = new_dict
244 self.mask_list_index = new_dict 240 self.mask_list_index = new_dict
245 print "new_dict", new_dict 241 print "new_dict", new_dict
246 -  
247 - if new_dict and not index:  
248 - print "gotta case"  
249 - for key in new_dict:  
250 - if key == 0:  
251 - print ":)", key  
252 - self.SetItemImage(key, 1)  
253 - ps.Publisher().sendMessage('Show mask', (key, 1))  
254 - else:  
255 - print ":("  
256 - self.SetItemImage(key, 0)  
257 -  
258 - self.DeleteItem(index)  
259 - 242 +
260 if new_dict: 243 if new_dict:
261 - if self.current_index > index:  
262 - self.current_index -= 1  
263 - elif self.current_index == index:  
264 - print "XXXXXXXXXXXXX"  
265 - self.current_index = 0 244 + if index == self.current_index:
  245 + print "a) set to zero"
266 self.SetItemImage(0, 1) 246 self.SetItemImage(0, 1)
267 ps.Publisher().sendMessage('Show mask', (0, 1)) 247 ps.Publisher().sendMessage('Show mask', (0, 1))
  248 + ps.Publisher().sendMessage('Change mask selected', 0)
  249 + for key in new_dict:
  250 + if key:
  251 + self.SetItemImage(key, 0)
268 252
269 - 253 + elif index < self.current_index:
  254 + print "b) minor, keep the same"
  255 + self.current_index -= 1
  256 + self.SetItemImage(self.current_index, 1)
  257 + else:
  258 + pass
  259 + # enchanged
  260 + print "---------------------------------------------------"
270 261
271 262
272 def OnCloseProject(self, pubsub_evt): 263 def OnCloseProject(self, pubsub_evt):