diff --git a/invesalius/data/styles.py b/invesalius/data/styles.py index 85446af..1698e2f 100644 --- a/invesalius/data/styles.py +++ b/invesalius/data/styles.py @@ -948,33 +948,41 @@ class WaterShedInteractorStyle(DefaultInteractorStyle): self.viewer.interactor.Render() def WOnScrollBackward(self, obj, evt): + iren = self.viewer.interactor viewer = self.viewer - iren = viewer.interactor if iren.GetControlKey(): - if viewer.slice_.opacity > 0: - viewer.slice_.opacity -= 0.1 - self.viewer.slice_.buffer_slices['AXIAL'].discard_vtk_mask() - self.viewer.slice_.buffer_slices['CORONAL'].discard_vtk_mask() - self.viewer.slice_.buffer_slices['SAGITAL'].discard_vtk_mask() - viewer.OnScrollBar() + mouse_x, mouse_y = iren.GetEventPosition() + render = iren.FindPokedRenderer(mouse_x, mouse_y) + slice_data = self.viewer.get_slice_data(render) + cursor = slice_data.cursor + size = cursor.radius * 2 + size -= 1 + + if size > 0: + Publisher.sendMessage('Set watershed brush size', size) + cursor.SetPosition(cursor.position) + self.viewer.interactor.Render() else: self.OnScrollBackward(obj, evt) - def WOnScrollForward(self, obj, evt): + iren = self.viewer.interactor viewer = self.viewer - iren = viewer.interactor if iren.GetControlKey(): - if viewer.slice_.opacity < 1: - viewer.slice_.opacity += 0.1 - self.viewer.slice_.buffer_slices['AXIAL'].discard_vtk_mask() - self.viewer.slice_.buffer_slices['CORONAL'].discard_vtk_mask() - self.viewer.slice_.buffer_slices['SAGITAL'].discard_vtk_mask() - viewer.OnScrollBar() + mouse_x, mouse_y = iren.GetEventPosition() + render = iren.FindPokedRenderer(mouse_x, mouse_y) + slice_data = self.viewer.get_slice_data(render) + cursor = slice_data.cursor + size = cursor.radius * 2 + size += 1 + + if size <= 100: + Publisher.sendMessage('Set watershed brush size', size) + cursor.SetPosition(cursor.position) + self.viewer.interactor.Render() else: self.OnScrollForward(obj, evt) - def OnBrushClick(self, obj, evt): if (self.viewer.slice_.buffer_slices[self.orientation].mask is None): return diff --git a/invesalius/gui/task_slice.py b/invesalius/gui/task_slice.py index b7471c1..255f0ad 100644 --- a/invesalius/gui/task_slice.py +++ b/invesalius/gui/task_slice.py @@ -902,6 +902,7 @@ class WatershedTool(EditionTools): self.SetAutoLayout(1) self.__bind_events_wx() + self.__bind_pubsub_evt() def __bind_events_wx(self): @@ -912,6 +913,9 @@ class WatershedTool(EditionTools): self.btn_exp_watershed.Bind(wx.EVT_BUTTON, self.OnExpandWatershed) self.btn_wconfig.Bind(wx.EVT_BUTTON, self.OnConfig) + def __bind_pubsub_evt(self): + Publisher.subscribe(self._set_brush_size, 'Set watershed brush size') + def ChangeMaskColour(self, pubsub_evt): colour = pubsub_evt.data self.gradient_thresh.SetColour(colour) @@ -956,6 +960,10 @@ class WatershedTool(EditionTools): # Strangelly this is being called twice Publisher.sendMessage('Set watershed brush size',self.spin.GetValue()) + def _set_brush_size(self, pubsub_evt): + size = pubsub_evt.data + self.spin.SetValue(size) + def OnComboBrushOp(self, evt): brush_op = self.combo_brush_op.GetValue() Publisher.sendMessage('Set watershed operation', brush_op) -- libgit2 0.21.2