Commit 58ec7c3a2b56db90ad6ca5fc06da8df731481634

Authored by Thiago Franco de Moraes
1 parent 4df1d061
Exists in interactor_style

Created a new interactor style to handle the Zoom camera by selecting a region

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 = {
... ...