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

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

 

from PythonQt import QtCore, QtGui 

import functools 

 

from director import applogic as app 

 

_spreadsheetView = None 

def getSpreadsheetView(): 

    return _spreadsheetView 

 

 

def setSpreadsheetColumnData(columnIndex, name, data): 

 

    sv = getSpreadsheetView() 

    model = sv.model() 

 

    model.item(0, columnIndex).setText(name) 

    for i, value in enumerate(data): 

          model.item(i + 1, columnIndex).setText(value) 

 

 

def updateSpreadsheetPoses(poseCollection, poseName=None): 

 

    poseMap = poseCollection.map() 

    for i, poseName in enumerate(sorted(poseMap.keys())): 

        setSpreadsheetColumnData(i + 3, poseName, poseMap[poseName]) 

 

 

def initSpreadsheetColumns(costCollection): 

 

    jointNames = [ 

      'base_x', 

      'base_y', 

      'base_z', 

      'base_roll', 

      'base_pitch', 

      'base_yaw', 

      'back_bkz', 

      'back_bky', 

      'back_bkx', 

      'l_arm_usy', 

      'l_arm_shx', 

      'l_arm_ely', 

      'l_arm_elx', 

      'l_arm_uwy', 

      'l_leg_hpz', 

      'l_leg_hpx', 

      'l_leg_hpy', 

      'l_leg_kny', 

      'l_leg_aky', 

      'l_leg_akx', 

      'l_arm_mwx', 

      'r_arm_usy', 

      'r_arm_shx', 

      'r_arm_ely', 

      'r_arm_elx', 

      'r_arm_uwy', 

      'r_leg_hpz', 

      'r_leg_hpx', 

      'r_leg_hpy', 

      'r_leg_kny', 

      'r_leg_aky', 

      'r_leg_akx', 

      'r_arm_mwx', 

      'neck_ay', 

    ] 

 

    costData = [ 

      0.0, 

      0.0, 

      100.0, 

      100.0, 

      0.0, 

    ] 

 

    costData += [100.0 for i in xrange(len(jointNames) - len(costData))] 

    costCollection.setItem('default_costs', costData) 

 

    setSpreadsheetColumnData(0, 'joint_names', jointNames) 

    setSpreadsheetColumnData(1, 'default_costs', costData) 

 

 

def init(poseCollection, costCollection): 

 

    global _spreadsheetView 

    _spreadsheetView = app.getViewManager().createView('Spreadsheet View', 'Spreadsheet View') 

 

    updateMethod = functools.partial(updateSpreadsheetPoses, poseCollection) 

    poseCollection.connect('itemChanged(const QString&)', updateMethod) 

    poseCollection.connect('itemAdded(const QString&)', updateMethod) 

    poseCollection.connect('itemRemoved(const QString&)', updateMethod) 

 

    initSpreadsheetColumns(costCollection) 

    updateMethod()