Commit 89d8c6172efeec81359417a1943175968701204a

Authored by Thiago Franco de Moraes
1 parent 88fe930f
Exists in interactor_style

Created a new interactor style to change slices with the mouse movement

invesalius/data/styles.py
... ... @@ -385,6 +385,44 @@ class ZoomSLInteractorStyle(vtk.vtkInteractorStyleRubberBandZoom):
385 385 #self.Reposition(slice_data)
386 386 self.viewer.interactor.Render()
387 387  
  388 +
  389 +class ChangeSliceInteractorStyle(RightZoomInteractorStyle):
  390 + """
  391 + Interactor style responsible for change slice moving the mouse.
  392 + """
  393 + def __init__(self, viewer):
  394 + RightZoomInteractorStyle.__init__(self)
  395 +
  396 + self.viewer = viewer
  397 +
  398 + self.AddObserver("MouseMoveEvent", self.OnChangeSliceMove)
  399 + self.AddObserver("LeftButtonPressEvent", self.OnChangeSliceClick)
  400 +
  401 + def OnChangeSliceMove(self, evt, obj):
  402 + if self.left_pressed:
  403 + min = 0
  404 + max = self.viewer.slice_.GetMaxSliceNumber(self.viewer.orientation)
  405 +
  406 + position = self.viewer.interactor.GetLastEventPosition()
  407 + scroll_position = self.viewer.scroll.GetThumbPosition()
  408 +
  409 + if (position[1] > self.last_position) and\
  410 + (self.acum_achange_slice > min):
  411 + self.acum_achange_slice -= 1
  412 + elif(position[1] < self.last_position) and\
  413 + (self.acum_achange_slice < max):
  414 + self.acum_achange_slice += 1
  415 + self.last_position = position[1]
  416 +
  417 + self.viewer.scroll.SetThumbPosition(self.acum_achange_slice)
  418 + self.viewer.OnScrollBar()
  419 +
  420 + def OnChangeSliceClick(self, evt, obj):
  421 + position = self.viewer.interactor.GetLastEventPosition()
  422 + self.acum_achange_slice = self.viewer.scroll.GetThumbPosition()
  423 + self.last_position = position[1]
  424 +
  425 +
388 426 class ViewerStyle:
389 427 def __init__(self):
390 428 self.interactor = None
... ...
invesalius/data/viewer_slice.py
... ... @@ -245,6 +245,13 @@ class Viewer(wx.Panel):
245 245 self.interactor.SetInteractorStyle(style)
246 246 self.interactor.Render()
247 247  
  248 + elif state == const.SLICE_STATE_SCROLL:
  249 + style = styles.ChangeSliceInteractorStyle(self)
  250 +
  251 + self.style = style
  252 + self.interactor.SetInteractorStyle(style)
  253 + self.interactor.Render()
  254 +
248 255 else:
249 256 self.state = state
250 257 action = {
... ...