58 import maya.OpenMaya
as OpenMaya
59 import maya.OpenMayaMPx
as OpenMayaMPx
60 import maya.OpenMayaUI
as OpenMayaUI
62 kPluginCmdName =
"spMathTableControl"
65 kNopLongFlag =
"-noOperation"
67 kMultLongFlag =
"-multiplyVals"
69 kAddLongFlag =
"-addVals"
71 kRedrawFlagLong =
"-redraw"
75 kNop =
lambda x,y:
"cell(%d,%d)" % (x,y)
76 kMult =
lambda x,y: str(x*y)
77 kAdd =
lambda x,y: str(x+y)
81 class MathTableControlCmd(OpenMayaMPx.MPxControlCommand):
83 OpenMayaMPx.MPxControlCommand.__init__(self)
86 def makeControl(self):
87 control = MathTableControl(self)
88 control.setOperation(kNop)
89 control.setNumberOfRows(5)
90 control.setNumberOfColumns(3)
91 return OpenMayaMPx.asMPxPtr(control)
94 def doEditFlags(self):
95 theParser = self._parser()
96 theControl = kPythonPtrTable.get(OpenMayaMPx.asHashable(self._control()),
None)
98 if theParser.isFlagSet(kNopFlag):
99 theControl.setOperation(kNop)
100 elif theParser.isFlagSet(kMultFlag):
101 theControl.setOperation(kMult)
102 elif theParser.isFlagSet(kAddFlag):
103 theControl.setOperation(kAdd)
104 elif theParser.isFlagSet(kRedrawFlag):
105 theControl.redrawCells()
106 theControl.redrawLabels()
108 OpenMayaMPx.MPxControlCommand.doEditFlags(self)
111 def doQueryFlags(self):
112 return OpenMayaMPx.MPxControlCommand.doQueryFlags(self)
115 def appendSyntax(self):
116 theSyntax = self._syntax()
117 theSyntax.addFlag(kNopFlag, kNopLongFlag)
118 theSyntax.addFlag(kMultFlag, kMultLongFlag)
119 theSyntax.addFlag(kAddFlag, kAddLongFlag)
120 theSyntax.addFlag(kRedrawFlag, kRedrawFlagLong)
123 class MathTableControl(OpenMayaMPx.MPxUITableControl):
124 def __init__(self, command):
125 OpenMayaMPx.MPxUITableControl.__init__(self, command)
126 self.__myOperation =
None
127 kPythonPtrTable[OpenMayaMPx.asHashable(self)] = self
131 del kPythonPtrTable[OpenMayaMPx.asHashable(self)]
134 def cellString(self, row, column, isValidCell):
136 if callable(self.__myOperation):
137 result = self.__myOperation(row, column)
138 OpenMaya.MScriptUtil.setBool(isValidCell, bool(result))
142 def labelString(self, labelType, index):
144 if labelType == OpenMayaMPx.MPxUITableControl.kRowLabel:
145 value =
"[Row %d]" % index
146 elif labelType == OpenMayaMPx.MPxUITableControl.kColumnLabel:
147 value =
"[Col %d]" % index
151 def setOperation(self, op):
152 self.__myOperation = op
160 return OpenMayaMPx.asMPxPtr(MathTableControlCmd())
163 def initializePlugin(mobject):
164 mplugin = OpenMayaMPx.MFnPlugin(mobject,
"Autodesk",
"1.0",
"Any")
166 mplugin.registerControlCommand(kPluginCmdName, cmdCreator)
168 sys.stderr.write(
"Failed to register command: %s\n" % kPluginCmdName)
172 def uninitializePlugin(mobject):
173 mplugin = OpenMayaMPx.MFnPlugin(mobject)
175 mplugin.deregisterControlCommand(kPluginCmdName)
177 sys.stderr.write(
"Failed to unregister command: %s\n" % kPluginCmdName)