Commit 58ec7c3a2b56db90ad6ca5fc06da8df731481634
1 parent
4df1d061
Exists in
interactor_style
Created a new interactor style to handle the Zoom camera by selecting a region
Showing
2 changed files
with
24 additions
and
0 deletions
Show diff stats
invesalius/data/styles.py
| ... | ... | @@ -368,6 +368,23 @@ class ZoomInteractorStyle(RightZoomInteractorStyle): |
| 368 | 368 | self.viewer.interactor.Render() |
| 369 | 369 | |
| 370 | 370 | |
| 371 | +class ZoomSLInteractorStyle(vtk.vtkInteractorStyleRubberBandZoom): | |
| 372 | + """ | |
| 373 | + Interactor style responsible for zoom by selecting a region. | |
| 374 | + """ | |
| 375 | + def __init__(self, viewer): | |
| 376 | + self.viewer = viewer | |
| 377 | + self.viewer.interactor.Bind(wx.EVT_LEFT_DCLICK, self.OnUnZoom) | |
| 378 | + | |
| 379 | + def OnUnZoom(self, evt): | |
| 380 | + mouse_x, mouse_y = self.viewer.interactor.GetLastEventPosition() | |
| 381 | + ren = self.viewer.interactor.FindPokedRenderer(mouse_x, mouse_y) | |
| 382 | + #slice_data = self.get_slice_data(ren) | |
| 383 | + ren.ResetCamera() | |
| 384 | + ren.ResetCameraClippingRange() | |
| 385 | + #self.Reposition(slice_data) | |
| 386 | + self.viewer.interactor.Render() | |
| 387 | + | |
| 371 | 388 | class ViewerStyle: |
| 372 | 389 | def __init__(self): |
| 373 | 390 | self.interactor = None | ... | ... |
invesalius/data/viewer_slice.py
| ... | ... | @@ -238,6 +238,13 @@ class Viewer(wx.Panel): |
| 238 | 238 | self.interactor.SetInteractorStyle(style) |
| 239 | 239 | self.interactor.Render() |
| 240 | 240 | |
| 241 | + elif state == const.STATE_ZOOM_SL: | |
| 242 | + style = styles.ZoomSLInteractorStyle(self) | |
| 243 | + | |
| 244 | + self.style = style | |
| 245 | + self.interactor.SetInteractorStyle(style) | |
| 246 | + self.interactor.Render() | |
| 247 | + | |
| 241 | 248 | else: |
| 242 | 249 | self.state = state |
| 243 | 250 | action = { | ... | ... |