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,18 +156,33 @@ class SurfaceManager():
156 print "OnRemove" 156 print "OnRemove"
157 selected_items = pubsub_evt.data 157 selected_items = pubsub_evt.data
158 proj = prj.Project() 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 def OnSeedSurface(self, pubsub_evt): 187 def OnSeedSurface(self, pubsub_evt):
173 """ 188 """
invesalius/gui/data_notebook.py
@@ -363,7 +363,7 @@ class MasksListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): @@ -363,7 +363,7 @@ class MasksListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin):
363 return selected 363 return selected
364 364
365 365
366 - 366 +#-------------------------------------------------
367 #------------------------------------------------- 367 #-------------------------------------------------
368 class SurfacePage(wx.Panel): 368 class SurfacePage(wx.Panel):
369 """ 369 """
@@ -476,13 +476,8 @@ class SurfaceButtonControlPanel(wx.Panel): @@ -476,13 +476,8 @@ class SurfaceButtonControlPanel(wx.Panel):
476 ps.Publisher().sendMessage('Create surface', surface_data) 476 ps.Publisher().sendMessage('Create surface', surface_data)
477 477
478 def OnRemove(self): 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 def OnDuplicate(self): 482 def OnDuplicate(self):
488 selected_items = self.parent.listctrl.GetSelected() 483 selected_items = self.parent.listctrl.GetSelected()
@@ -535,23 +530,38 @@ class SurfacesListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): @@ -535,23 +530,38 @@ class SurfacesListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin):
535 keycode = event.GetKeyCode() 530 keycode = event.GetKeyCode()
536 # Delete key 531 # Delete key
537 if (sys.platform == 'darwin') and (keycode == wx.WXK_BACK): 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 elif (keycode == wx.WXK_DELETE): 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 selected_items = self.GetSelected() 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 if selected_items: 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 ps.Publisher().sendMessage('Remove surfaces', selected_items) 560 ps.Publisher().sendMessage('Remove surfaces', selected_items)
  561 + else:
  562 + dlg.SurfaceSelectionRequiredForRemoval()
  563 + print "after", self.surface_list_index
  564 +
555 565
556 def OnCloseProject(self, pubsub_evt): 566 def OnCloseProject(self, pubsub_evt):
557 self.DeleteAllItems() 567 self.DeleteAllItems()
@@ -726,24 +736,9 @@ class SurfacesListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): @@ -726,24 +736,9 @@ class SurfacesListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin):
726 self.imagelist.Replace(image_index, image) 736 self.imagelist.Replace(image_index, image)
727 self.Refresh() 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 class MeasuresListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): 743 class MeasuresListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin):
749 # TODO: Change edimixin to affect third column also 744 # TODO: Change edimixin to affect third column also