Commit ddde2457e3e0f32f81fbd878415974c9c374a4cc

Authored by tatiana
1 parent c62c2951

ENH: Surface removel (still needs testing)

invesalius/data/surface.py
... ... @@ -156,18 +156,33 @@ class SurfaceManager():
156 156 print "OnRemove"
157 157 selected_items = pubsub_evt.data
158 158 proj = prj.Project()
159   - for item in selected_items:
160   - print "before"
161   - print "1:", proj.surface_dict
162   - print "2:", self.actors_dict
163   - proj.RemoveSurface(item)
164   - print "after"
165   - print "1", proj.surface_dict
166   - actor = self.actors_dict[item]
167   - self.actors_dict.pop(item)
168   - print "2", self.actors_dict
169   - print "\n"
170   - ps.Publisher().sendMessage('Remove surface actor from viewer', actor)
  159 +
  160 + print "before"
  161 + print "1:", proj.surface_dict
  162 + print "2:", self.actors_dict
  163 +
  164 + old_dict = self.actors_dict
  165 + new_dict = {}
  166 + if selected_items:
  167 + for index in selected_items:
  168 + proj.RemoveSurface(index)
  169 + actor = old_dict[index]
  170 + for i in old_dict:
  171 + if i < index:
  172 + new_dict[i] = old_dict[i]
  173 + if i > index:
  174 + new_dict[i-1] = old_dict[i]
  175 + old_dict = new_dict
  176 + ps.Publisher().sendMessage('Remove surface actor from viewer', actor)
  177 + self.actors_dict = new_dict
  178 +
  179 + print "after"
  180 + print "1", proj.surface_dict
  181 + print "2", self.actors_dict
  182 + print "\n"
  183 +
  184 +
  185 +
171 186  
172 187 def OnSeedSurface(self, pubsub_evt):
173 188 """
... ...
invesalius/gui/data_notebook.py
... ... @@ -363,7 +363,7 @@ class MasksListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin):
363 363 return selected
364 364  
365 365  
366   -
  366 +#-------------------------------------------------
367 367 #-------------------------------------------------
368 368 class SurfacePage(wx.Panel):
369 369 """
... ... @@ -476,13 +476,8 @@ class SurfaceButtonControlPanel(wx.Panel):
476 476 ps.Publisher().sendMessage('Create surface', surface_data)
477 477  
478 478 def OnRemove(self):
479   - selected_items = self.parent.listctrl.GetSelected()
480   - if selected_items:
481   - for item in selected_items:
482   - self.parent.listctrl.RemoveSurface(item)
483   - ps.Publisher().sendMessage('Remove surfaces', selected_items)
484   - else:
485   - dlg.SurfaceSelectionRequiredForRemoval()
  479 + self.parent.listctrl.RemoveSurfaces()
  480 +
486 481  
487 482 def OnDuplicate(self):
488 483 selected_items = self.parent.listctrl.GetSelected()
... ... @@ -535,23 +530,38 @@ class SurfacesListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin):
535 530 keycode = event.GetKeyCode()
536 531 # Delete key
537 532 if (sys.platform == 'darwin') and (keycode == wx.WXK_BACK):
538   - selected = self.GetSelected()
539   - self.__remove_items()
540   - for item in selected:
541   - self.RemoveSurface(item)
542   -
  533 + self.RemoveSurfaces()
543 534 elif (keycode == wx.WXK_DELETE):
544   - selected = self.GetSelected()
545   - self.__remove_items()
546   - for item in selected:
547   - self.RemoveSurface(item)
  535 + self.RemoveSurfaces()
548 536  
549   - def __remove_items(self):
  537 + def RemoveSurfaces(self):
  538 + """
  539 + Remove item given its index.
  540 + """
  541 + # it is necessary to update internal dictionary
  542 + # that maps bitmap given item index
550 543 selected_items = self.GetSelected()
  544 + old_dict = self.surface_list_index
  545 + new_dict = {}
  546 + print "RemoveSurfaces"
  547 + print "selected_items"
  548 + print "before", self.surface_list_index
551 549 if selected_items:
552   - for item in selected_items:
553   - self.RemoveSurface(item)
  550 + for index in selected_items:
  551 + self.DeleteItem(index)
  552 + for i in old_dict:
  553 + if i < index:
  554 + new_dict[i] = old_dict[i]
  555 + if i > index:
  556 + new_dict[i-1] = old_dict[i]
  557 + old_dict = new_dict
  558 + self.surface_list_index = new_dict
  559 +
554 560 ps.Publisher().sendMessage('Remove surfaces', selected_items)
  561 + else:
  562 + dlg.SurfaceSelectionRequiredForRemoval()
  563 + print "after", self.surface_list_index
  564 +
555 565  
556 566 def OnCloseProject(self, pubsub_evt):
557 567 self.DeleteAllItems()
... ... @@ -726,24 +736,9 @@ class SurfacesListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin):
726 736 self.imagelist.Replace(image_index, image)
727 737 self.Refresh()
728 738  
729   - def RemoveSurface(self, index):
730   - """
731   - Remove item given its index.
732   - """
733   - # it is necessary to update internal dictionary
734   - # that maps bitmap given item index
735   - old_dict = self.surface_list_index
736   - new_dict = {}
737   - for i in old_dict:
738   - if i < index:
739   - new_dict[i] = old_dict[i]
740   - if i > index:
741   - new_dict[i-1] = old_dict[i]
742   - self.surface_list_index = new_dict
743   -
744   - self.DeleteItem(index)
745 739  
746 740 #-------------------------------------------------
  741 +#-------------------------------------------------
747 742  
748 743 class MeasuresListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin):
749 744 # TODO: Change edimixin to affect third column also
... ...