コード例 #1
0
ファイル: cgmSnap.py プロジェクト: liudger/cgmTools
class snapMarkingMenu(mUI.BaseMelWindow):
    def __init__(self):
        """
		Initializes the pop up menu class call
		"""
        self._str_MM = 'snapMarkingMenu'
        self.optionVars = []
        self.toolName = 'cgm.snapMM'
        IsClickedOptionVar = cgmMeta.cgmOptionVar('cgmVar_IsClicked', 'int')
        mmActionOptionVar = cgmMeta.cgmOptionVar('cgmVar_mmAction', 'int')
        surfaceSnapAimModeVar = cgmMeta.cgmOptionVar(
            'cgmVar_SurfaceSnapAimMode', 'int')
        UpdateRotateOrderOnTagVar = cgmMeta.cgmOptionVar(
            'cgmVar_TaggingUpdateRO', 'int')
        self.LocinatorUpdateObjectsBufferOptionVar = cgmMeta.cgmOptionVar(
            'cgmVar_LocinatorUpdateObjectsBuffer', defaultValue=[''])

        self.LocinatorUpdateObjectsOptionVar = cgmMeta.cgmOptionVar(
            'cgmVar_SnapMMUpdateMode', defaultValue=0)
        guiFactory.appendOptionVarList(
            self, self.LocinatorUpdateObjectsOptionVar.name)

        self.SnapModeOptionVar = cgmMeta.cgmOptionVar('cgmVar_SnapMatchMode',
                                                      defaultValue=0)
        guiFactory.appendOptionVarList(self, self.SnapModeOptionVar.name)

        IsClickedOptionVar.setValue(0)
        mmActionOptionVar.setValue(0)

        #if mc.popupMenu('cgmMM',ex = True):
        #mc.deleteUI('cgmMM')#...deleting ui elements seems to be hard crashing maya 2017

        _p = mc.getPanel(up=True)
        if _p is None:
            log.error("No panel detected...")
            return
        if _p:
            log.info("{0} panel under pointer {1}...".format(self._str_MM, _p))
            _parentPanel = mc.panel(_p, q=True, ctl=True)
            log.info("{0} panel under pointer {1} | parent: {2}...".format(
                self._str_MM, _p, _parentPanel))
            if 'MayaWindow' in _parentPanel:
                _p = 'viewPanes'
        if not mc.control(_p, ex=True):
            raise ValueError, "{0} doesn't exist!".format(_p)
            #_p = panel
        if not mc.popupMenu('cgmMM', ex=True):
            mc.popupMenu('cgmMM',
                         ctl=0,
                         alt=0,
                         sh=0,
                         mm=1,
                         b=1,
                         aob=1,
                         p=_p,
                         pmc=lambda *a: self.createUI('cgmMM'),
                         postMenuCommandOnce=True)
        else:
            mc.popupMenu('cgmMM',
                         edit=True,
                         ctl=0,
                         alt=0,
                         sh=0,
                         mm=1,
                         b=1,
                         aob=1,
                         p=_p,
                         pmc=lambda *a: self.createUI('cgmMM'),
                         postMenuCommandOnce=True)

    def createUI(self, parent):
        """
		Create the UI
		"""
        def buttonAction(command):
            """
			execute a command and let the menu know not do do the default button action but just kill the ui
			"""
            killUI()
            mmActionOptionVar.value = 1
            command

        self.LocinatorUpdateObjectsBufferOptionVar = cgmMeta.cgmOptionVar(
            'cgmVar_LocinatorUpdateObjectsBuffer', defaultValue=[''])
        IsClickedOptionVar = cgmMeta.cgmOptionVar('cgmVar_IsClicked', 'int')
        mmActionOptionVar = cgmMeta.cgmOptionVar('cgmVar_mmAction', 'int')

        self.SnapModeOptionVar.update(
        )  #Check if another tool has changed this setting

        _sel = mc.ls(sl=True)
        selPair = search.checkSelectionLength(2)
        _selecCheck = len(_sel)
        IsClickedOptionVar.value = 1

        mc.menu(parent, e=True, deleteAllItems=True)
        mUI.MelMenuItem(parent,
                        en=selPair,
                        l='Point Snap',
                        c=lambda *a: buttonAction(tdToolsLib.doPointSnap()),
                        rp='NW')
        mUI.MelMenuItem(parent,
                        en=selPair,
                        l='Parent Snap',
                        c=lambda *a: buttonAction(tdToolsLib.doParentSnap()),
                        rp='N')
        mUI.MelMenuItem(parent,
                        en=selPair,
                        l='Orient Snap',
                        c=lambda *a: buttonAction(tdToolsLib.doOrientSnap()),
                        rp='NE')

        mUI.MelMenuItem(parent,
                        en=selPair,
                        l='Surface Snap',
                        c=lambda *a: buttonAction(
                            tdToolsLib.doSnapClosestPointToSurface(False)),
                        rp='W')

        if self.LocinatorUpdateObjectsOptionVar.value:
            ShowMatch = False
            if self.LocinatorUpdateObjectsBufferOptionVar.value:
                ShowMatch = True
            mUI.MelMenuItem(parent,
                            en=ShowMatch,
                            l='Buffer Snap',
                            c=lambda *a: buttonAction(
                                locinatorLib.doUpdateLoc(self, True)),
                            rp='S')
        else:
            ShowMatch = search.matchObjectCheck()
            mUI.MelMenuItem(parent,
                            en=ShowMatch,
                            l='Match Snap',
                            c=lambda *a: buttonAction(
                                locinatorLib.doUpdateSelectedObjects(self)),
                            rp='S')

        mUI.MelMenuItem(
            parent,
            en=_selecCheck,
            l='RayCast',
            #c = mUI.Callback(buttonAction,raySnap_start(_sel)),
            c=lambda *a: buttonAction(raySnap_start(_sel)),
            rp='SW')
        mUI.MelMenuItem(
            parent,
            en=0,
            l='Mirror',
            c=lambda *a: buttonAction(locinatorLib.doUpdateObj(self, True)),
            rp='SE')

        mUI.MelMenuItemDiv(parent)
        mUI.MelMenuItem(parent,
                        l='Loc Me',
                        c=lambda *a: buttonAction(locinatorLib.doLocMe(self)))
        mUI.MelMenuItem(
            parent,
            l='Tag Loc to Object',
            en=selPair,
            c=lambda *a: buttonAction(locinatorLib.doTagObjects(self)))
        # Update Mode
        UpdateMenu = mUI.MelMenuItem(parent, l='Update Mode', subMenu=True)
        UpdateMenuCollection = mUI.MelRadioMenuCollection()

        if self.LocinatorUpdateObjectsOptionVar.value == 0:
            slMode = True
            bufferMode = False
        else:
            slMode = False
            bufferMode = True

        UpdateMenuCollection.createButton(
            UpdateMenu,
            l='Selected',
            c=lambda *a: self.LocinatorUpdateObjectsOptionVar.setValue(0),
            rb=slMode)
        UpdateMenuCollection.createButton(
            UpdateMenu,
            l='Buffer',
            c=lambda *a: self.LocinatorUpdateObjectsOptionVar.setValue(1),
            rb=bufferMode)
        #>>>Match Mode
        self.MatchModeOptions = ['parent', 'point', 'orient']

        self.MatchModeCollection = mUI.MelRadioMenuCollection()
        self.MatchModeCollectionChoices = []

        MatchModeMenu = mUI.MelMenuItem(parent, l='Match Mode', subMenu=True)
        self.matchMode = self.SnapModeOptionVar.value
        for c, item in enumerate(self.MatchModeOptions):
            if self.matchMode == c:
                rbValue = True
            else:
                rbValue = False
            self.MatchModeCollectionChoices.append(
                self.MatchModeCollection.createButton(
                    MatchModeMenu,
                    label=item,
                    rb=rbValue,
                    command=mUI.Callback(self.SnapModeOptionVar.setValue, c)))
        #>>> Define
        DefineMenu = mUI.MelMenuItem(parent, l='Buffer', subMenu=True)
        mUI.MelMenuItem(DefineMenu,
                        l="Define",
                        c=lambda *a: locinatorLib.defineObjBuffer(
                            self.LocinatorUpdateObjectsBufferOptionVar))

        mUI.MelMenuItem(DefineMenu,
                        l="Add Selected",
                        c=lambda *a: locinatorLib.addSelectedToObjBuffer(
                            self.LocinatorUpdateObjectsBufferOptionVar))

        mUI.MelMenuItem(DefineMenu,
                        l="Remove Selected",
                        c=lambda *a: locinatorLib.removeSelectedFromObjBuffer(
                            self.LocinatorUpdateObjectsBufferOptionVar))

        mUI.MelMenuItemDiv(DefineMenu)
        mUI.MelMenuItem(DefineMenu,
                        l="Select Members",
                        c=lambda *a: locinatorLib.selectObjBufferMembers(
                            self.LocinatorUpdateObjectsBufferOptionVar))
        mUI.MelMenuItem(DefineMenu,
                        l="Clear",
                        c=lambda *a: locinatorLib.clearObjBuffer(
                            self.LocinatorUpdateObjectsBufferOptionVar))

        try:  #>>> Sym Axis....
            _str_section = 'Ray Cast menu'

            uiMenu_rayCast = mUI.MelMenuItem(parent,
                                             l='Ray Cast Mode',
                                             subMenu=True)
            var_RayCastMode = cgmMeta.cgmOptionVar(
                'cgmVar_SnapMenuRayCastMode', defaultValue=0)

            self.uiRC_RayCast = mUI.MelRadioMenuCollection()
            self.uiOptions_RayCast = []
            _v = var_RayCastMode.value
            _modes = cgmDrag._clickMesh_modes
            for i, item in enumerate(_modes):
                if i == _v:
                    _rb = True
                else:
                    _rb = False
                self.uiOptions_RayCast.append(
                    self.uiRC_RayCast.createButton(
                        uiMenu_rayCast,
                        label=item,
                        c=mUI.Callback(var_RayCastMode.setValue, i),
                        rb=_rb))
        except Exception, err:
            log.error("{0} failed to load. err: {1}".format(_str_section, err))

        mUI.MelMenuItemDiv(parent)
        mUI.MelMenuItem(parent,
                        l='Locinator',
                        c=lambda *a: buttonAction(cgmToolbox.loadLocinator()))
        mUI.MelMenuItem(parent,
                        l='cgm.animTools',
                        c=lambda *a: buttonAction(cgmToolbox.loadAnimTools()))
        mUI.MelMenuItem(parent,
                        l='cgm.tdTools',
                        c=lambda *a: buttonAction(cgmToolbox.loadTDTools()))
        mUI.MelMenuItem(parent,
                        l='cgm.attrTools',
                        c=lambda *a: buttonAction(cgmToolbox.loadAttrTools()))
        mUI.MelMenuItem(parent,
                        l='reload cgm.core',
                        c=lambda *a: buttonAction(cgmToolbox.reload_cgmCore()))

        mUI.MelMenuItemDiv(parent)

        mUI.MelMenuItem(
            parent,
            l="Docs",
            c='import webbrowser;webbrowser.open("http://www.cgmonks.com/tools/maya-tools/cgmmmsnap");'
        )

        mUI.MelMenuItem(parent,
                        l="Reset",
                        c=lambda *a: guiFactory.resetGuiInstanceOptionVars(
                            self.optionVars))
コード例 #2
0
ファイル: cgmPuppetKey.py プロジェクト: liudger/cgmTools
                        mUI.MelMenuItem( iSubM_Siblings, l="Reset",
                                     c = cgmUI.Callback(i_module.animReset_siblings,False))			
                        mUI.MelMenuItem( iSubM_Siblings, l="Push pose",
                                     c = cgmUI.Callback(i_module.animPushPose_siblings))			
                        mUI.MelMenuItem( iSubM_Siblings, l="Mirror",
                                     c = cgmUI.Callback(i_module.mirrorMe_siblings,False))

                        if i_module.moduleType not in cgmPM.__l_faceModuleTypes__:
                            mUI.MelMenuItem( iSubM_Siblings, l="Mirror Push",
                                         c = cgmUI.Callback(i_module.mirrorPush_siblings,False))
                            mUI.MelMenuItem( iSubM_Siblings, l="Mirror Pull",
                                         c = cgmUI.Callback(i_module.mirrorPull_siblings,False))
                except Exception,error:
                    log.info("Failed to build basic module menu for: %s | %s"%(i_o.getShortName(),error))					

                mUI.MelMenuItemDiv(parent)						
        log.info(">"*10  + ' Module options build =  %0.3f seconds  ' % (time.clock()-timeStart_ModuleStuff) + '<'*10)  

        #>>> Puppet =====================================================================================================
        timeStart_PuppetStuff = time.clock()  	    
        if self.BuildPuppetOptionVar.value and self.l_puppets:
            #MelMenuItem(parent,l="-- Puppets --",en = False)	    
            self.l_puppets = lists.returnListNoDuplicates(self.l_puppets)
            self.ml_puppets = cgmMeta.validateObjListArg(self.l_puppets)
            log.info("Puppets:")
            for p in self.l_puppets:
                log.info(">>> {0}".format(p))
            int_lenPuppets = len(self.ml_puppets)
            if int_lenPuppets == 1:
                use_parent = parent
                state_multiPuppet = False
コード例 #3
0
ファイル: cgmSnap.py プロジェクト: liudger/cgmTools
    def createUI(self, parent):
        """
		Create the UI
		"""
        def buttonAction(command):
            """
			execute a command and let the menu know not do do the default button action but just kill the ui
			"""
            killUI()
            mmActionOptionVar.value = 1
            command

        self.LocinatorUpdateObjectsBufferOptionVar = cgmMeta.cgmOptionVar(
            'cgmVar_LocinatorUpdateObjectsBuffer', defaultValue=[''])
        IsClickedOptionVar = cgmMeta.cgmOptionVar('cgmVar_IsClicked', 'int')
        mmActionOptionVar = cgmMeta.cgmOptionVar('cgmVar_mmAction', 'int')

        self.SnapModeOptionVar.update(
        )  #Check if another tool has changed this setting

        _sel = mc.ls(sl=True)
        selPair = search.checkSelectionLength(2)
        _selecCheck = len(_sel)
        IsClickedOptionVar.value = 1

        mc.menu(parent, e=True, deleteAllItems=True)
        mUI.MelMenuItem(parent,
                        en=selPair,
                        l='Point Snap',
                        c=lambda *a: buttonAction(tdToolsLib.doPointSnap()),
                        rp='NW')
        mUI.MelMenuItem(parent,
                        en=selPair,
                        l='Parent Snap',
                        c=lambda *a: buttonAction(tdToolsLib.doParentSnap()),
                        rp='N')
        mUI.MelMenuItem(parent,
                        en=selPair,
                        l='Orient Snap',
                        c=lambda *a: buttonAction(tdToolsLib.doOrientSnap()),
                        rp='NE')

        mUI.MelMenuItem(parent,
                        en=selPair,
                        l='Surface Snap',
                        c=lambda *a: buttonAction(
                            tdToolsLib.doSnapClosestPointToSurface(False)),
                        rp='W')

        if self.LocinatorUpdateObjectsOptionVar.value:
            ShowMatch = False
            if self.LocinatorUpdateObjectsBufferOptionVar.value:
                ShowMatch = True
            mUI.MelMenuItem(parent,
                            en=ShowMatch,
                            l='Buffer Snap',
                            c=lambda *a: buttonAction(
                                locinatorLib.doUpdateLoc(self, True)),
                            rp='S')
        else:
            ShowMatch = search.matchObjectCheck()
            mUI.MelMenuItem(parent,
                            en=ShowMatch,
                            l='Match Snap',
                            c=lambda *a: buttonAction(
                                locinatorLib.doUpdateSelectedObjects(self)),
                            rp='S')

        mUI.MelMenuItem(
            parent,
            en=_selecCheck,
            l='RayCast',
            #c = mUI.Callback(buttonAction,raySnap_start(_sel)),
            c=lambda *a: buttonAction(raySnap_start(_sel)),
            rp='SW')
        mUI.MelMenuItem(
            parent,
            en=0,
            l='Mirror',
            c=lambda *a: buttonAction(locinatorLib.doUpdateObj(self, True)),
            rp='SE')

        mUI.MelMenuItemDiv(parent)
        mUI.MelMenuItem(parent,
                        l='Loc Me',
                        c=lambda *a: buttonAction(locinatorLib.doLocMe(self)))
        mUI.MelMenuItem(
            parent,
            l='Tag Loc to Object',
            en=selPair,
            c=lambda *a: buttonAction(locinatorLib.doTagObjects(self)))
        # Update Mode
        UpdateMenu = mUI.MelMenuItem(parent, l='Update Mode', subMenu=True)
        UpdateMenuCollection = mUI.MelRadioMenuCollection()

        if self.LocinatorUpdateObjectsOptionVar.value == 0:
            slMode = True
            bufferMode = False
        else:
            slMode = False
            bufferMode = True

        UpdateMenuCollection.createButton(
            UpdateMenu,
            l='Selected',
            c=lambda *a: self.LocinatorUpdateObjectsOptionVar.setValue(0),
            rb=slMode)
        UpdateMenuCollection.createButton(
            UpdateMenu,
            l='Buffer',
            c=lambda *a: self.LocinatorUpdateObjectsOptionVar.setValue(1),
            rb=bufferMode)
        #>>>Match Mode
        self.MatchModeOptions = ['parent', 'point', 'orient']

        self.MatchModeCollection = mUI.MelRadioMenuCollection()
        self.MatchModeCollectionChoices = []

        MatchModeMenu = mUI.MelMenuItem(parent, l='Match Mode', subMenu=True)
        self.matchMode = self.SnapModeOptionVar.value
        for c, item in enumerate(self.MatchModeOptions):
            if self.matchMode == c:
                rbValue = True
            else:
                rbValue = False
            self.MatchModeCollectionChoices.append(
                self.MatchModeCollection.createButton(
                    MatchModeMenu,
                    label=item,
                    rb=rbValue,
                    command=mUI.Callback(self.SnapModeOptionVar.setValue, c)))
        #>>> Define
        DefineMenu = mUI.MelMenuItem(parent, l='Buffer', subMenu=True)
        mUI.MelMenuItem(DefineMenu,
                        l="Define",
                        c=lambda *a: locinatorLib.defineObjBuffer(
                            self.LocinatorUpdateObjectsBufferOptionVar))

        mUI.MelMenuItem(DefineMenu,
                        l="Add Selected",
                        c=lambda *a: locinatorLib.addSelectedToObjBuffer(
                            self.LocinatorUpdateObjectsBufferOptionVar))

        mUI.MelMenuItem(DefineMenu,
                        l="Remove Selected",
                        c=lambda *a: locinatorLib.removeSelectedFromObjBuffer(
                            self.LocinatorUpdateObjectsBufferOptionVar))

        mUI.MelMenuItemDiv(DefineMenu)
        mUI.MelMenuItem(DefineMenu,
                        l="Select Members",
                        c=lambda *a: locinatorLib.selectObjBufferMembers(
                            self.LocinatorUpdateObjectsBufferOptionVar))
        mUI.MelMenuItem(DefineMenu,
                        l="Clear",
                        c=lambda *a: locinatorLib.clearObjBuffer(
                            self.LocinatorUpdateObjectsBufferOptionVar))

        try:  #>>> Sym Axis....
            _str_section = 'Ray Cast menu'

            uiMenu_rayCast = mUI.MelMenuItem(parent,
                                             l='Ray Cast Mode',
                                             subMenu=True)
            var_RayCastMode = cgmMeta.cgmOptionVar(
                'cgmVar_SnapMenuRayCastMode', defaultValue=0)

            self.uiRC_RayCast = mUI.MelRadioMenuCollection()
            self.uiOptions_RayCast = []
            _v = var_RayCastMode.value
            _modes = cgmDrag._clickMesh_modes
            for i, item in enumerate(_modes):
                if i == _v:
                    _rb = True
                else:
                    _rb = False
                self.uiOptions_RayCast.append(
                    self.uiRC_RayCast.createButton(
                        uiMenu_rayCast,
                        label=item,
                        c=mUI.Callback(var_RayCastMode.setValue, i),
                        rb=_rb))
        except Exception, err:
            log.error("{0} failed to load. err: {1}".format(_str_section, err))