Commit 46f4452a1b5c39e826de86c383345df72eeeb9b1
1 parent
4a7add3a
Exists in
interactor_style
Cleaning code related to vtk events from viewer_slice
Showing
1 changed file
with
2 additions
and
244 deletions
Show diff stats
invesalius/data/viewer_slice.py
| ... | ... | @@ -178,6 +178,8 @@ class Viewer(wx.Panel): |
| 178 | 178 | self.__set_cross_visibility(0) |
| 179 | 179 | self.on_wl = False |
| 180 | 180 | self.wl_text.Hide() |
| 181 | + self.state = state | |
| 182 | + | |
| 181 | 183 | if state == const.STATE_DEFAULT: |
| 182 | 184 | style = styles.DefaultInteractorStyle(self) |
| 183 | 185 | self.style = style |
| ... | ... | @@ -257,156 +259,12 @@ class Viewer(wx.Panel): |
| 257 | 259 | self.interactor.SetInteractorStyle(style) |
| 258 | 260 | self.interactor.Render() |
| 259 | 261 | |
| 260 | - else: | |
| 261 | - self.state = state | |
| 262 | - action = { | |
| 263 | - const.SLICE_STATE_EDITOR: | |
| 264 | - { | |
| 265 | - "MouseMoveEvent": self.OnBrushMove, | |
| 266 | - "LeftButtonPressEvent": self.OnBrushClick, | |
| 267 | - "LeftButtonReleaseEvent": self.OnBrushRelease, | |
| 268 | - "EnterEvent": self.OnEnterInteractor, | |
| 269 | - "LeaveEvent": self.OnLeaveInteractor | |
| 270 | - }, | |
| 271 | - const.STATE_DEFAULT: | |
| 272 | - { | |
| 273 | - }, | |
| 274 | - } | |
| 275 | - | |
| 276 | - | |
| 277 | - if state == const.SLICE_STATE_CROSS: | |
| 278 | - self.__set_cross_visibility(1) | |
| 279 | - Publisher.sendMessage('Activate ball reference') | |
| 280 | - else: | |
| 281 | - self.__set_cross_visibility(0) | |
| 282 | - Publisher.sendMessage('Deactivate ball reference') | |
| 283 | - | |
| 284 | - if state == const.STATE_WL: | |
| 285 | - self.on_wl = True | |
| 286 | - self.wl_text.Show() | |
| 287 | - else: | |
| 288 | - self.on_wl = False | |
| 289 | - self.wl_text.Hide() | |
| 290 | - | |
| 291 | - self._set_editor_cursor_visibility(0) | |
| 292 | - | |
| 293 | - # Bind method according to current mode | |
| 294 | - if(state == const.STATE_ZOOM_SL): | |
| 295 | - style = vtk.vtkInteractorStyleRubberBandZoom() | |
| 296 | - | |
| 297 | - style.AddObserver("RightButtonPressEvent", self.QuitRubberBandZoom) | |
| 298 | - #style.AddObserver("RightButtonPressEvent", self.EnterRubberBandZoom) | |
| 299 | - | |
| 300 | - else: | |
| 301 | - style = vtk.vtkInteractorStyleImage() | |
| 302 | - | |
| 303 | - # Check each event available for each state | |
| 304 | - for event in action[state]: | |
| 305 | - # Bind event | |
| 306 | - style.AddObserver(event, | |
| 307 | - action[state][event]) | |
| 308 | - | |
| 309 | - # Common to all styles | |
| 310 | - # Mouse Buttons' presses / releases | |
| 311 | - style.AddObserver("LeftButtonPressEvent", self.OnLeftClick) | |
| 312 | - style.AddObserver("LeftButtonReleaseEvent", self.OnReleaseLeftButton) | |
| 313 | - style.AddObserver("RightButtonPressEvent", self.OnRightClick) | |
| 314 | - style.AddObserver("RightButtonReleaseEvent", self.OnReleaseRightButton) | |
| 315 | - | |
| 316 | - # Zoom using right button | |
| 317 | - style.AddObserver("RightButtonPressEvent",self.OnZoomRightClick) | |
| 318 | - style.AddObserver("MouseMoveEvent", self.OnZoomMoveRight) | |
| 319 | - style.AddObserver("RightButtonReleaseEvent", self.OnVtkRightRelease) | |
| 320 | - | |
| 321 | - #Scroll change slice | |
| 322 | - style.AddObserver("MouseWheelForwardEvent",self.OnScrollForward) | |
| 323 | - style.AddObserver("MouseWheelBackwardEvent", self.OnScrollBackward) | |
| 324 | - | |
| 325 | - | |
| 326 | - # Measures are using vtkPropPicker because they need to get which actor | |
| 327 | - # was picked. | |
| 328 | - if state in (const.STATE_MEASURE_DISTANCE, const.STATE_MEASURE_ANGLE): | |
| 329 | - self.pick = vtk.vtkPropPicker() | |
| 330 | - self.interactor.SetPicker(self.pick) | |
| 331 | - else: | |
| 332 | - self.pick = vtk.vtkWorldPointPicker() | |
| 333 | - self.interactor.SetPicker(self.pick) | |
| 334 | - | |
| 335 | - self.style = style | |
| 336 | - self.interactor.SetInteractorStyle(style) | |
| 337 | - self.interactor.Render() | |
| 338 | - | |
| 339 | - def QuitRubberBandZoom(self, evt, obj): | |
| 340 | - style = vtk.vtkInteractorStyleImage() | |
| 341 | - self.interactor.SetInteractorStyle(style) | |
| 342 | - self.style = style | |
| 343 | - | |
| 344 | - style.AddObserver("LeftButtonPressEvent", self.EnterRubberBandZoom) | |
| 345 | - | |
| 346 | - # Zoom using right button | |
| 347 | - style.AddObserver("RightButtonPressEvent", self.OnRightClick) | |
| 348 | - style.AddObserver("RightButtonReleaseEvent", self.OnReleaseRightButton) | |
| 349 | - style.AddObserver("RightButtonPressEvent",self.OnZoomRightClick) | |
| 350 | - style.AddObserver("MouseMoveEvent", self.OnZoomMoveRight) | |
| 351 | - style.AddObserver("RightButtonReleaseEvent", self.OnReleaseRightButton) | |
| 352 | - | |
| 353 | - def EnterRubberBandZoom(self, evt, obj): | |
| 354 | - style = vtk.vtkInteractorStyleRubberBandZoom() | |
| 355 | - self.interactor.SetInteractorStyle(style) | |
| 356 | - self.style = style | |
| 357 | - | |
| 358 | - style.AddObserver("RightButtonPressEvent", self.QuitRubberBandZoom) | |
| 359 | - | |
| 360 | - def OnRightClick(self, evt, obj): | |
| 361 | - self.last_position_mouse_move = \ | |
| 362 | - self.interactor.GetLastEventPosition() | |
| 363 | - | |
| 364 | - self.right_pressed = 1 | |
| 365 | - | |
| 366 | - def OnReleaseRightButton(self, evt, obj): | |
| 367 | - self.right_pressed = 0 | |
| 368 | - Publisher.sendMessage('Update slice viewer') | |
| 369 | - | |
| 370 | - def OnLeftClick(self, evt, obj): | |
| 371 | - self.left_pressed = 1 | |
| 372 | - | |
| 373 | - def OnReleaseLeftButton(self, evt, obj): | |
| 374 | - self.left_pressed = 0 | |
| 375 | - Publisher.sendMessage('Update slice viewer') | |
| 376 | - | |
| 377 | 262 | def UpdateWindowLevelValue(self, pubsub_evt): |
| 378 | 263 | window, level = pubsub_evt.data |
| 379 | 264 | self.acum_achange_window, self.acum_achange_level = (window, level) |
| 380 | 265 | self.SetWLText(window, level) |
| 381 | 266 | Publisher.sendMessage('Update all slice') |
| 382 | 267 | |
| 383 | - def OnPanMove(self, evt, obj): | |
| 384 | - mouse_x, mouse_y = self.interactor.GetLastEventPosition() | |
| 385 | - ren = self.interactor.FindPokedRenderer(mouse_x, mouse_y) | |
| 386 | - cam = ren.GetActiveCamera() | |
| 387 | - | |
| 388 | - if (self.left_pressed): | |
| 389 | - evt.Pan() | |
| 390 | - evt.OnRightButtonDown() | |
| 391 | - self.paned_image = True | |
| 392 | - | |
| 393 | - def OnPanClick(self, evt, obj): | |
| 394 | - evt.StartPan() | |
| 395 | - | |
| 396 | - def OnVtkRightRelease(self, evt, obj): | |
| 397 | - evt.OnRightButtonUp() | |
| 398 | - | |
| 399 | - def OnEnterInteractor(self, evt, obj): | |
| 400 | - if (self.slice_.buffer_slices[self.orientation].mask is None): | |
| 401 | - return | |
| 402 | - self.slice_data.cursor.Show() | |
| 403 | - self.interactor.SetCursor(wx.StockCursor(wx.CURSOR_BLANK)) | |
| 404 | - | |
| 405 | - def OnLeaveInteractor(self, evt, obj): | |
| 406 | - self.slice_data.cursor.Show(0) | |
| 407 | - self.interactor.SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT)) | |
| 408 | - self.interactor.Render() | |
| 409 | - | |
| 410 | 268 | def SetWLText(self, window_width, window_level): |
| 411 | 269 | value = STR_WL%(window_level, window_width) |
| 412 | 270 | if (self.wl_text): |
| ... | ... | @@ -660,98 +518,6 @@ class Viewer(wx.Panel): |
| 660 | 518 | slice_data.SetCursor(cursor) |
| 661 | 519 | self.interactor.Render() |
| 662 | 520 | |
| 663 | - def OnBrushClick(self, evt, obj): | |
| 664 | - if (self.slice_.buffer_slices[self.orientation].mask is None): | |
| 665 | - return | |
| 666 | - | |
| 667 | - self._set_editor_cursor_visibility(1) | |
| 668 | - | |
| 669 | - mouse_x, mouse_y = self.interactor.GetEventPosition() | |
| 670 | - render = self.interactor.FindPokedRenderer(mouse_x, mouse_y) | |
| 671 | - slice_data = self.get_slice_data(render) | |
| 672 | - | |
| 673 | - # TODO: Improve! | |
| 674 | - #for i in self.slice_data_list: | |
| 675 | - #i.cursor.Show(0) | |
| 676 | - self.slice_data.cursor.Show() | |
| 677 | - | |
| 678 | - self.pick.Pick(mouse_x, mouse_y, 0, render) | |
| 679 | - | |
| 680 | - coord = self.get_coordinate_cursor() | |
| 681 | - position = self.slice_data.actor.GetInput().FindPoint(coord) | |
| 682 | - | |
| 683 | - if position != -1: | |
| 684 | - coord = self.slice_data.actor.GetInput().GetPoint(position) | |
| 685 | - | |
| 686 | - slice_data.cursor.SetPosition(coord) | |
| 687 | - cursor = self.slice_data.cursor | |
| 688 | - radius = cursor.radius | |
| 689 | - | |
| 690 | - if position < 0: | |
| 691 | - position = self.calculate_matrix_position(coord) | |
| 692 | - | |
| 693 | - self.slice_.edit_mask_pixel(self._brush_cursor_op, cursor.GetPixels(), | |
| 694 | - position, radius, self.orientation) | |
| 695 | - self._flush_buffer = True | |
| 696 | - | |
| 697 | - # TODO: To create a new function to reload images to viewer. | |
| 698 | - self.OnScrollBar() | |
| 699 | - | |
| 700 | - def OnBrushMove(self, evt, obj): | |
| 701 | - if (self.slice_.buffer_slices[self.orientation].mask is None): | |
| 702 | - return | |
| 703 | - | |
| 704 | - self._set_editor_cursor_visibility(1) | |
| 705 | - | |
| 706 | - mouse_x, mouse_y = self.interactor.GetEventPosition() | |
| 707 | - render = self.interactor.FindPokedRenderer(mouse_x, mouse_y) | |
| 708 | - slice_data = self.get_slice_data(render) | |
| 709 | - | |
| 710 | - # TODO: Improve! | |
| 711 | - #for i in self.slice_data_list: | |
| 712 | - #i.cursor.Show(0) | |
| 713 | - | |
| 714 | - self.pick.Pick(mouse_x, mouse_y, 0, render) | |
| 715 | - | |
| 716 | - #if (self.pick.GetViewProp()): | |
| 717 | - #self.interactor.SetCursor(wx.StockCursor(wx.CURSOR_BLANK)) | |
| 718 | - #else: | |
| 719 | - #self.interactor.SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT)) | |
| 720 | - | |
| 721 | - coord = self.get_coordinate_cursor() | |
| 722 | - position = self.slice_data.actor.GetInput().FindPoint(coord) | |
| 723 | - | |
| 724 | - # when position == -1 the cursos is not over the image, so is not | |
| 725 | - # necessary to set the cursor position to world coordinate center of | |
| 726 | - # pixel from slice image. | |
| 727 | - if position != -1: | |
| 728 | - coord = self.slice_data.actor.GetInput().GetPoint(position) | |
| 729 | - slice_data.cursor.SetPosition(coord) | |
| 730 | - #self.__update_cursor_position(slice_data, coord) | |
| 731 | - | |
| 732 | - if (self.left_pressed): | |
| 733 | - cursor = self.slice_data.cursor | |
| 734 | - position = self.slice_data.actor.GetInput().FindPoint(coord) | |
| 735 | - radius = cursor.radius | |
| 736 | - | |
| 737 | - if position < 0: | |
| 738 | - position = self.calculate_matrix_position(coord) | |
| 739 | - | |
| 740 | - self.slice_.edit_mask_pixel(self._brush_cursor_op, cursor.GetPixels(), | |
| 741 | - position, radius, self.orientation) | |
| 742 | - # TODO: To create a new function to reload images to viewer. | |
| 743 | - self.OnScrollBar(update3D=False) | |
| 744 | - | |
| 745 | - else: | |
| 746 | - self.interactor.Render() | |
| 747 | - | |
| 748 | - def OnBrushRelease(self, evt, obj): | |
| 749 | - if (self.slice_.buffer_slices[self.orientation].mask is None): | |
| 750 | - return | |
| 751 | - | |
| 752 | - self.slice_.apply_slice_buffer_to_mask(self.orientation) | |
| 753 | - self._flush_buffer = False | |
| 754 | - | |
| 755 | 521 | def Navigation(self, pubsub_evt): |
| 756 | 522 | # Get point from base change |
| 757 | 523 | x, y, z = pubsub_evt.data |
| ... | ... | @@ -781,14 +547,6 @@ class Viewer(wx.Panel): |
| 781 | 547 | Publisher.sendMessage(('Set scroll position', 'SAGITAL'), |
| 782 | 548 | coord[0]) |
| 783 | 549 | |
| 784 | - def OnZoomMoveRight(self, evt, obj): | |
| 785 | - if (self.right_pressed): | |
| 786 | - evt.Dolly() | |
| 787 | - evt.OnRightButtonDown() | |
| 788 | - | |
| 789 | - def OnZoomRightClick(self, evt, obj): | |
| 790 | - evt.StartDolly() | |
| 791 | - | |
| 792 | 550 | def get_slice_data(self, render): |
| 793 | 551 | #for slice_data in self.slice_data_list: |
| 794 | 552 | #if slice_data.renderer is render: | ... | ... |