Commit 3acea9b2730b3d6edee3d92d0e911051d9e150db

Authored by Paulo Henrique Junqueira Amorim
1 parent 69661eb1

ENH: Mouse scroll to change slices

Showing 1 changed file with 32 additions and 6 deletions   Show diff stats
invesalius/data/viewer_slice.py
@@ -227,6 +227,10 @@ class Viewer(wx.Panel): @@ -227,6 +227,10 @@ class Viewer(wx.Panel):
227 style.AddObserver("MouseMoveEvent", self.OnZoomMoveRight) 227 style.AddObserver("MouseMoveEvent", self.OnZoomMoveRight)
228 style.AddObserver("RightButtonReleaseEvent", self.OnVtkRightRelease) 228 style.AddObserver("RightButtonReleaseEvent", self.OnVtkRightRelease)
229 229
  230 + #Scroll change slice
  231 + style.AddObserver("MouseWheelForwardEvent",self.OnScrollForward)
  232 + style.AddObserver("MouseWheelBackwardEvent", self.OnScrollBackward)
  233 +
230 if ((state == const.STATE_ZOOM) or (state == const.STATE_ZOOM_SL)): 234 if ((state == const.STATE_ZOOM) or (state == const.STATE_ZOOM_SL)):
231 self.interactor.Bind(wx.EVT_LEFT_DCLICK, self.OnUnZoom) 235 self.interactor.Bind(wx.EVT_LEFT_DCLICK, self.OnUnZoom)
232 else: 236 else:
@@ -234,7 +238,6 @@ class Viewer(wx.Panel): @@ -234,7 +238,6 @@ class Viewer(wx.Panel):
234 238
235 self.style = style 239 self.style = style
236 self.interactor.SetInteractorStyle(style) 240 self.interactor.SetInteractorStyle(style)
237 -  
238 241
239 def QuitRubberBandZoom(self, evt, obj): 242 def QuitRubberBandZoom(self, evt, obj):
240 style = vtk.vtkInteractorStyleImage() 243 style = vtk.vtkInteractorStyleImage()
@@ -1190,6 +1193,7 @@ class Viewer(wx.Panel): @@ -1190,6 +1193,7 @@ class Viewer(wx.Panel):
1190 (self.orientation, pos)) 1193 (self.orientation, pos))
1191 1194
1192 def OnScrollBar(self, evt=None): 1195 def OnScrollBar(self, evt=None):
  1196 + print "...................................."
1193 pos = self.scroll.GetThumbPosition() 1197 pos = self.scroll.GetThumbPosition()
1194 self.set_slice_number(pos) 1198 self.set_slice_number(pos)
1195 #self.UpdateSlice3D(pos) 1199 #self.UpdateSlice3D(pos)
@@ -1204,26 +1208,48 @@ class Viewer(wx.Panel): @@ -1204,26 +1208,48 @@ class Viewer(wx.Panel):
1204 self.UpdateSlice3D(self.pos) 1208 self.UpdateSlice3D(self.pos)
1205 evt.Skip() 1209 evt.Skip()
1206 1210
1207 - def OnKeyDown(self, evt=None): 1211 + def OnKeyDown(self, evt=None, obj=None):
1208 pos = self.scroll.GetThumbPosition() 1212 pos = self.scroll.GetThumbPosition()
1209 1213
1210 min = 0 1214 min = 0
1211 max = self.actor.GetSliceNumberMax() 1215 max = self.actor.GetSliceNumberMax()
1212 1216
1213 if (evt.GetKeyCode() == wx.WXK_UP and pos > min): 1217 if (evt.GetKeyCode() == wx.WXK_UP and pos > min):
1214 - pos = pos - 1  
1215 - self.scroll.SetThumbPosition(pos) 1218 + self.OnScrollForward()
1216 self.OnScrollBar() 1219 self.OnScrollBar()
  1220 +
1217 elif (evt.GetKeyCode() == wx.WXK_DOWN and pos < max): 1221 elif (evt.GetKeyCode() == wx.WXK_DOWN and pos < max):
1218 - pos = pos + 1  
1219 - self.scroll.SetThumbPosition(pos) 1222 + self.OnScrollBackward()
1220 self.OnScrollBar() 1223 self.OnScrollBar()
  1224 +
1221 self.UpdateSlice3D(pos) 1225 self.UpdateSlice3D(pos)
1222 self.interactor.Render() 1226 self.interactor.Render()
1223 1227
1224 if evt: 1228 if evt:
1225 evt.Skip() 1229 evt.Skip()
1226 1230
  1231 + def OnScrollForward(self, evt=None, obj=None):
  1232 + pos = self.scroll.GetThumbPosition()
  1233 + min = 0
  1234 +
  1235 + if(pos > min):
  1236 + pos = pos - 1
  1237 + self.scroll.SetThumbPosition(pos)
  1238 + self.OnScrollBar()
  1239 +
  1240 +
  1241 +
  1242 + def OnScrollBackward(self, evt=None, obj=None):
  1243 + pos = self.scroll.GetThumbPosition()
  1244 + max = self.actor.GetSliceNumberMax()
  1245 +
  1246 + if(pos < max):
  1247 + pos = pos + 1
  1248 + self.scroll.SetThumbPosition(pos)
  1249 + self.OnScrollBar()
  1250 +
  1251 +
  1252 +
1227 def OnSize(self, evt): 1253 def OnSize(self, evt):
1228 w, h = evt.GetSize() 1254 w, h = evt.GetSize()
1229 w = float(w) / self.layout[0] 1255 w = float(w) / self.layout[0]