Commit 7af56b45db5070adf8c4aa291bd447d56b2ac021
1 parent
d30ecf1a
Exists in
master
and in
38 other branches
Ctrl-scroll changing watershed brush size
Showing
2 changed files
with
32 additions
and
16 deletions
Show diff stats
invesalius/data/styles.py
@@ -948,33 +948,41 @@ class WaterShedInteractorStyle(DefaultInteractorStyle): | @@ -948,33 +948,41 @@ class WaterShedInteractorStyle(DefaultInteractorStyle): | ||
948 | self.viewer.interactor.Render() | 948 | self.viewer.interactor.Render() |
949 | 949 | ||
950 | def WOnScrollBackward(self, obj, evt): | 950 | def WOnScrollBackward(self, obj, evt): |
951 | + iren = self.viewer.interactor | ||
951 | viewer = self.viewer | 952 | viewer = self.viewer |
952 | - iren = viewer.interactor | ||
953 | if iren.GetControlKey(): | 953 | if iren.GetControlKey(): |
954 | - if viewer.slice_.opacity > 0: | ||
955 | - viewer.slice_.opacity -= 0.1 | ||
956 | - self.viewer.slice_.buffer_slices['AXIAL'].discard_vtk_mask() | ||
957 | - self.viewer.slice_.buffer_slices['CORONAL'].discard_vtk_mask() | ||
958 | - self.viewer.slice_.buffer_slices['SAGITAL'].discard_vtk_mask() | ||
959 | - viewer.OnScrollBar() | 954 | + mouse_x, mouse_y = iren.GetEventPosition() |
955 | + render = iren.FindPokedRenderer(mouse_x, mouse_y) | ||
956 | + slice_data = self.viewer.get_slice_data(render) | ||
957 | + cursor = slice_data.cursor | ||
958 | + size = cursor.radius * 2 | ||
959 | + size -= 1 | ||
960 | + | ||
961 | + if size > 0: | ||
962 | + Publisher.sendMessage('Set watershed brush size', size) | ||
963 | + cursor.SetPosition(cursor.position) | ||
964 | + self.viewer.interactor.Render() | ||
960 | else: | 965 | else: |
961 | self.OnScrollBackward(obj, evt) | 966 | self.OnScrollBackward(obj, evt) |
962 | 967 | ||
963 | - | ||
964 | def WOnScrollForward(self, obj, evt): | 968 | def WOnScrollForward(self, obj, evt): |
969 | + iren = self.viewer.interactor | ||
965 | viewer = self.viewer | 970 | viewer = self.viewer |
966 | - iren = viewer.interactor | ||
967 | if iren.GetControlKey(): | 971 | if iren.GetControlKey(): |
968 | - if viewer.slice_.opacity < 1: | ||
969 | - viewer.slice_.opacity += 0.1 | ||
970 | - self.viewer.slice_.buffer_slices['AXIAL'].discard_vtk_mask() | ||
971 | - self.viewer.slice_.buffer_slices['CORONAL'].discard_vtk_mask() | ||
972 | - self.viewer.slice_.buffer_slices['SAGITAL'].discard_vtk_mask() | ||
973 | - viewer.OnScrollBar() | 972 | + mouse_x, mouse_y = iren.GetEventPosition() |
973 | + render = iren.FindPokedRenderer(mouse_x, mouse_y) | ||
974 | + slice_data = self.viewer.get_slice_data(render) | ||
975 | + cursor = slice_data.cursor | ||
976 | + size = cursor.radius * 2 | ||
977 | + size += 1 | ||
978 | + | ||
979 | + if size <= 100: | ||
980 | + Publisher.sendMessage('Set watershed brush size', size) | ||
981 | + cursor.SetPosition(cursor.position) | ||
982 | + self.viewer.interactor.Render() | ||
974 | else: | 983 | else: |
975 | self.OnScrollForward(obj, evt) | 984 | self.OnScrollForward(obj, evt) |
976 | 985 | ||
977 | - | ||
978 | def OnBrushClick(self, obj, evt): | 986 | def OnBrushClick(self, obj, evt): |
979 | if (self.viewer.slice_.buffer_slices[self.orientation].mask is None): | 987 | if (self.viewer.slice_.buffer_slices[self.orientation].mask is None): |
980 | return | 988 | return |
invesalius/gui/task_slice.py
@@ -902,6 +902,7 @@ class WatershedTool(EditionTools): | @@ -902,6 +902,7 @@ class WatershedTool(EditionTools): | ||
902 | self.SetAutoLayout(1) | 902 | self.SetAutoLayout(1) |
903 | 903 | ||
904 | self.__bind_events_wx() | 904 | self.__bind_events_wx() |
905 | + self.__bind_pubsub_evt() | ||
905 | 906 | ||
906 | 907 | ||
907 | def __bind_events_wx(self): | 908 | def __bind_events_wx(self): |
@@ -912,6 +913,9 @@ class WatershedTool(EditionTools): | @@ -912,6 +913,9 @@ class WatershedTool(EditionTools): | ||
912 | self.btn_exp_watershed.Bind(wx.EVT_BUTTON, self.OnExpandWatershed) | 913 | self.btn_exp_watershed.Bind(wx.EVT_BUTTON, self.OnExpandWatershed) |
913 | self.btn_wconfig.Bind(wx.EVT_BUTTON, self.OnConfig) | 914 | self.btn_wconfig.Bind(wx.EVT_BUTTON, self.OnConfig) |
914 | 915 | ||
916 | + def __bind_pubsub_evt(self): | ||
917 | + Publisher.subscribe(self._set_brush_size, 'Set watershed brush size') | ||
918 | + | ||
915 | def ChangeMaskColour(self, pubsub_evt): | 919 | def ChangeMaskColour(self, pubsub_evt): |
916 | colour = pubsub_evt.data | 920 | colour = pubsub_evt.data |
917 | self.gradient_thresh.SetColour(colour) | 921 | self.gradient_thresh.SetColour(colour) |
@@ -956,6 +960,10 @@ class WatershedTool(EditionTools): | @@ -956,6 +960,10 @@ class WatershedTool(EditionTools): | ||
956 | # Strangelly this is being called twice | 960 | # Strangelly this is being called twice |
957 | Publisher.sendMessage('Set watershed brush size',self.spin.GetValue()) | 961 | Publisher.sendMessage('Set watershed brush size',self.spin.GetValue()) |
958 | 962 | ||
963 | + def _set_brush_size(self, pubsub_evt): | ||
964 | + size = pubsub_evt.data | ||
965 | + self.spin.SetValue(size) | ||
966 | + | ||
959 | def OnComboBrushOp(self, evt): | 967 | def OnComboBrushOp(self, evt): |
960 | brush_op = self.combo_brush_op.GetValue() | 968 | brush_op = self.combo_brush_op.GetValue() |
961 | Publisher.sendMessage('Set watershed operation', brush_op) | 969 | Publisher.sendMessage('Set watershed operation', brush_op) |