From 155529ac7c40cec2867d63ff31f12fa85ab80679 Mon Sep 17 00:00:00 2001 From: Thiago Franco de Moraes Date: Thu, 28 Jul 2016 14:23:16 -0300 Subject: [PATCH] Removing incomplete measurements from the data_notebook --- invesalius/data/measures.py | 16 +++++++++------- invesalius/data/styles.py | 10 ++++++++++ invesalius/gui/data_notebook.py | 14 ++++++++++++++ 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/invesalius/data/measures.py b/invesalius/data/measures.py index 7fcf519..d38e6f7 100644 --- a/invesalius/data/measures.py +++ b/invesalius/data/measures.py @@ -320,22 +320,24 @@ class MeasurementManager(object): if self.current is None: return - mr = self.current[1] - print "RM INC M", self.current, mr.IsComplete() + m, mr = self.current if not mr.IsComplete(): print "---To REMOVE" - self.measures.pop() + idx = self.measures._list_measures.index((m, mr)) + self.measures.remove((m, mr)) + Publisher.sendMessage("Remove GUI measurement", idx) actors = mr.GetActors() slice_number = self.current[0].slice_number - Publisher.sendMessage(('Remove actors ' + str(self.current[0].location)), - (actors, slice_number)) + if m.location == const.SURFACE: + Publisher.sendMessage(('Remove actors ' + str(self.current[0].location)), + (actors, slice_number)) if self.current[0].location == const.SURFACE: Publisher.sendMessage('Render volume viewer') else: Publisher.sendMessage('Update slice viewer') - if self.measures: - self.measures.pop() + # if self.measures: + # self.measures.pop() self.current = None diff --git a/invesalius/data/styles.py b/invesalius/data/styles.py index 3d1976b..b2a0180 100644 --- a/invesalius/data/styles.py +++ b/invesalius/data/styles.py @@ -381,6 +381,7 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle): self.AddObserver("LeftButtonPressEvent", self.OnInsertMeasurePoint) self.AddObserver("LeftButtonReleaseEvent", self.OnReleaseMeasurePoint) self.AddObserver("MouseMoveEvent", self.OnMoveMeasurePoint) + self.AddObserver("LeaveEvent", self.OnLeaveMeasureInteractor) def OnInsertMeasurePoint(self, obj, evt): slice_number = self.slice_data.number @@ -457,6 +458,15 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle): else: self.viewer.interactor.SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT)) + def OnLeaveMeasureInteractor(self, obj, evt): + if self.creating or self.selected: + n, m, mr = self.creating + if not mr.IsComplete(): + Publisher.sendMessage("Remove incomplete measurements") + self.creating = None + self.selected = None + Publisher.sendMessage('Update slice viewer') + def CleanUp(self): self.picker.PickFromListOff() Publisher.sendMessage("Remove incomplete measurements") diff --git a/invesalius/gui/data_notebook.py b/invesalius/gui/data_notebook.py index 77dfb1b..af7fc00 100644 --- a/invesalius/gui/data_notebook.py +++ b/invesalius/gui/data_notebook.py @@ -943,6 +943,7 @@ class MeasuresListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): Publisher.subscribe(self.OnShowSingle, 'Show single measurement') Publisher.subscribe(self.OnShowMultiple, 'Show multiple measurements') Publisher.subscribe(self.OnLoadData, 'Load measurement dict') + Publisher.subscribe(self.OnRemoveGUIMeasure, 'Remove GUI measurement') def __bind_events_wx(self): self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated) @@ -959,6 +960,19 @@ class MeasuresListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): elif (keycode == wx.WXK_DELETE): self.RemoveMeasurements() + def OnRemoveGUIMeasure(self, pubsub_evt): + idx = pubsub_evt.data + self.DeleteItem(idx) + + old_dict = self._list_index + new_dict = {} + j = 0 + for i in old_dict: + if i != idx: + new_dict[j] = old_dict[i] + j+=1 + self._list_index = new_dict + def RemoveMeasurements(self): """ Remove items selected. -- libgit2 0.21.2