Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

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 

 

def registerFrame(frame): 

        global lastEditedFrame 

        lastEditedFrame = frame 

 

def applyFrameTransform(x, y, z, yaw): 

        if lastEditedFrame is not None and lastEditedFrame.getProperty('Edit'): 

                t = vtk.vtkTransform() 

                t.Concatenate(lastEditedFrame.transform) 

                t.RotateZ(yaw) 

                t.Translate(x, y, z) 

                lastEditedFrame.copyFrame(t) 

 

def disableFrameEdit(): 

        if lastEditedFrame is not None and lastEditedFrame.getProperty('Edit'): 

                lastEditedFrame.setProperty('Edit', False) 

 

def shiftFrameX(amount): 

        applyFrameTransform(amount, 0, 0, 0) 

 

def shiftFrameY(amount): 

        applyFrameTransform(0, amount, 0, 0) 

 

def shiftFrameYaw(amount): 

        applyFrameTransform(0, 0, 0, amount) 

 

def shiftFrameZ(amount): 

        applyFrameTransform(0, 0, amount, 0) 

 

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