import PythonQt
from PythonQt import QtCore, QtGui
import numpy as np
import vtkAll as vtk
#global state is fine here since this module behaves like a singleton
lastEditedFrame = None
[docs]def registerFrame(frame):
global lastEditedFrame
lastEditedFrame = frame
[docs]def disableFrameEdit():
if lastEditedFrame is not None and lastEditedFrame.getProperty('Edit'):
lastEditedFrame.setProperty('Edit', False)
[docs]def shiftFrameX(amount):
applyFrameTransform(amount, 0, 0, 0)
[docs]def shiftFrameY(amount):
applyFrameTransform(0, amount, 0, 0)
[docs]def shiftFrameYaw(amount):
applyFrameTransform(0, 0, 0, amount)
[docs]def shiftFrameZ(amount):
applyFrameTransform(0, 0, amount, 0)
[docs]def handleKey(event):
linearDisplacement = 0.005
angularDisplacement = 1
multiplier = 5
if event.modifiers() & QtCore.Qt.ControlModifier:
linearDisplacement *= multiplier
angularDisplacement *= multiplier
if event.key() == QtCore.Qt.Key_Left:
if event.modifiers() & QtCore.Qt.ShiftModifier:
shiftFrameYaw(angularDisplacement)
else:
shiftFrameY(linearDisplacement)
return True
elif event.key() == QtCore.Qt.Key_Right:
if event.modifiers() & QtCore.Qt.ShiftModifier:
shiftFrameYaw(-angularDisplacement)
else:
shiftFrameY(-linearDisplacement)
return True
elif event.key() == QtCore.Qt.Key_Up:
if event.modifiers() & QtCore.Qt.ShiftModifier:
shiftFrameZ(linearDisplacement)
else:
shiftFrameX(linearDisplacement)
return True
elif event.key() == QtCore.Qt.Key_Down:
if event.modifiers() & QtCore.Qt.ShiftModifier:
shiftFrameZ(-linearDisplacement)
else:
shiftFrameX(-linearDisplacement)
return True
elif event.key() == QtCore.Qt.Key_Escape:
disableFrameEdit()
return True
return False