# -*- coding: utf-8 -*- ''' this plugin is created for use with autodesk maya 2018+. (because it import pyside2 module,and i don't know in which version maya would update this.) ''' import sys import maya.api.OpenMaya as om import mocaphelperui import mocaphelpersaccore import mocaphelperfacore import mocaphelperutility from Qt import QtWidgets from Qt import QtCore version = 1.44 ui = None translator = QtCore.QTranslator() def maya_useNewAPI(): """ The presence of this function tells Maya that the plugin produces, and expects to be passed, objects created using the Maya Python API 2.0. """ pass # Initialize the plug-in def initializePlugin(plugin): pluginFn = om.MFnPlugin(plugin) try: pluginFn.registerCommand( mocaphelpersaccore.SmoothAnimCurve.kPluginCmdName, mocaphelpersaccore.SmoothAnimCurve.cmdCreator,mocaphelpersaccore.syntaxCreator ) except: sys.stderr.write( "Failed to register command: %s\n" % mocaphelpersaccore.SmoothAnimCurve.kPluginCmdName ) raise try: pluginFn.registerCommand( openui.kPluginCmdName, openui.cmdCreator,openuiSyntaxCreator ) except: sys.stderr.write( "Failed to register command: %s\n" % openui.kPluginCmdName ) raise try: pluginFn.registerCommand( mocaphelperfacore.FrameAlign.kPluginCmdName, mocaphelperfacore.FrameAlign.cmdCreator,mocaphelperfacore.syntaxCreator ) except: sys.stderr.write( "Failed to register command: %s\n" % mocaphelperfacore.FrameAlign.kPluginCmdName ) raise try: pluginFn.registerCommand( Eval.kPluginCmdName, Eval.cmdCreator,evalSyntaxCreator ) except: sys.stderr.write( "Failed to register command: %s\n" % Eval.kPluginCmdName ) raise # Uninitialize the plug-in def uninitializePlugin(plugin): pluginFn = om.MFnPlugin(plugin) try: pluginFn.deregisterCommand(mocaphelpersaccore.SmoothAnimCurve.kPluginCmdName) except: sys.stderr.write( "Failed to unregister command: %s\n" % mocaphelpersaccore.SmoothAnimCurve.kPluginCmdName ) raise try: pluginFn.deregisterCommand(openui.kPluginCmdName) except: sys.stderr.write( "Failed to unregister command: %s\n" % openui.kPluginCmdName ) raise try: pluginFn.deregisterCommand(mocaphelperfacore.FrameAlign.kPluginCmdName) except: sys.stderr.write( "Failed to unregister command: %s\n" % mocaphelperfacore.FrameAlign.kPluginCmdName ) raise try: pluginFn.deregisterCommand(Eval.kPluginCmdName) except: sys.stderr.write( "Failed to unregister command: %s\n" % Eval.kPluginCmdName ) raise # command class openui(om.MPxCommand): kPluginCmdName = "moCapHelper_showUi" uiLanguageFlagShortName = "lan" uiLanguageFlagLongName = "language" lang = None def __init__(self): om.MPxCommand.__init__(self) @staticmethod def cmdCreator(): return openui() def parseArguments(self,args): argdata = om.MArgParser(self.syntax(),args) if argdata.isFlagSet( self.uiLanguageFlagShortName ): self.lang = argdata.flagArgumentString(self.uiLanguageFlagShortName,0) else: self.lang = None def doIt(self, args): self.parseArguments(args) global ui if ui != None: print("saved ui ref:",ui) print("closing ui:--------",ui.destroy(True,True)) app = QtWidgets.QApplication.instance() app.installTranslator(translator) dir = mocaphelperutility.getDir() # translate: if self.lang == "CN": translator.load("ui_CN",dir) ui = mocaphelperui.MoCapHelperUI() ui.setWindowTitle('动补助手 v'+str(version)) # print(translator.filePath()) # print(translator.translate()) # mocaphelperui.translateUi(ui.ui,ui.ui) else: translator.load("") ui = mocaphelperui.MoCapHelperUI() ui.show() def openuiSyntaxCreator(): syntax = om.MSyntax() syntax.addFlag( openui.uiLanguageFlagShortName, openui.uiLanguageFlagLongName, om.MSyntax.kString ) return syntax class Eval(om.MPxCommand): kPluginCmdName = "moCapHelper_eval" strFlagShortName = "s" strFlagLongName = "string" cmd = "" def __init__(self): om.MPxCommand.__init__(self) def parseArguments(self,args): argdata = om.MArgParser(self.syntax(),args) if argdata.isFlagSet( self.strFlagShortName ): self.cmd = argdata.flagArgumentString(self.strFlagShortName,0) else: raise Exception("no str input") @staticmethod def cmdCreator(): return Eval() def doIt(self, args): self.parseArguments(args) print(self.cmd) global ui if ui != None: exec(self.cmd) else: raise Exception("please create ui first.") def evalSyntaxCreator(): syntax = om.MSyntax() syntax.addFlag( Eval.strFlagShortName, Eval.strFlagLongName, om.MSyntax.kString ) return syntax