def rig_connectAll(self, mode='connect', progressBar=None, progressEnd=True): """ Connect/disconnect the whole puppet """ _str_func = ' rig_connectAll'.format(self) log.debug("|{0}| >> ... [{1}]".format(_str_func, self) + '-' * 80) ml_modules = modules_get(self) ml_modules = modules_get(self) if progressBar: int_lenModules = len(ml_modules) cgmUI.progressBar_start(progressBar, int_lenModules + 2) _d_modeToCall = {'connect': 'rig_connect', 'disconnect': 'rig_disconnect'} if not _d_modeToCall.get(mode): raise ValueError, "Unknown mode: {0}".format(mode) for i, mModule in enumerate([self] + ml_modules): if progressBar: cgmUI.progressBar_set(progressBar, status=mModule.p_nameShort, progress=i, vis=True) try: mModule.atUtils(_d_modeToCall.get(mode)) except Exception, err: log.error("{0} | {1}".format(mModule, err))
def add_connection_row(self, parent, connection, label, connectionInfo): # Add Connection # _row = mUI.MelHSingleStretchLayout(parent,ut='cgmUISubTemplate',padding = 5) mUI.MelSpacer(_row,w=_padding) mUI.MelLabel(_row,l='Target:') conLabel = mUI.MelLabel(_row,ut='cgmUIInstructionsTemplate',l=label,en=False) _row.setStretchWidget( conLabel ) mUI.MelLabel(_row,l='Min:') ff_min = mUI.MelFloatField(_row, ut='cgmUISubTemplate', w= 50, precision = 2, v=connectionInfo['min']) mUI.MelLabel(_row,l='Max:') ff_max = mUI.MelFloatField(_row, ut='cgmUISubTemplate', w= 50, precision = 2, v=connectionInfo['max']) mUI.MelLabel(_row,l='Damp:') ff_damp = mUI.MelFloatField(_row, ut='cgmUISubTemplate', w= 50, precision = 2, v=connectionInfo['damp']) ff_min(edit=True, cc=cgmGEN.Callback(uiFunc_change_connection,self,connection, label, ff_min, ff_max, ff_damp)) ff_max(edit=True, cc=cgmGEN.Callback(uiFunc_change_connection,self,connection, label, ff_min, ff_max, ff_damp)) ff_damp(edit=True, cc=cgmGEN.Callback(uiFunc_change_connection,self,connection, label, ff_min, ff_max, ff_damp)) cgmUI.add_Button(_row,'X', cgmGEN.Callback(uiFunc_remove_connection,self,_row, connection, label), "Remove connection.") mUI.MelSpacer(_row,w=_padding) _row.layout()
def updateTemplate(i_customizationNetwork, **kws): assert i_customizationNetwork.mClass == 'cgmMorpheusMakerNetwork', "Not a customization Network" assert i_customizationNetwork.mPuppet.mClass == 'cgmMorpheusPuppet', "Puppet isn't there" d_customizationData = verify_customizationData(i_customizationNetwork) i_Morpheus = i_customizationNetwork.mPuppet if not d_customizationData: return False mayaMainProgressBar = gui.doStartMayaProgressBar(len(l_modulesToDoOrder)) for moduleKey in l_modulesToDoOrder: if mc.progressBar(mayaMainProgressBar, query=True, isCancelled=True): break mc.progressBar(mayaMainProgressBar, edit=True, status="Setting:'%s'..." % (moduleKey), step=1) i_module = i_Morpheus.getModuleFromDict(d_moduleCheck[moduleKey]) if not i_module: log.warning("Cannot find Module: '%s'" % moduleKey) return False log.debug("Building: '%s'" % moduleKey) i_module.doSize(sizeMode='manual', posList=d_customizationData.get(moduleKey)) i_module.doTemplate(tryTemplateUpdate=True, **kws) gui.doEndMayaProgressBar(mayaMainProgressBar) #Close out this progress bar
def uiFunc_make_display_line(parent, label="", text="", button=False, buttonLabel = ">>", buttonCommand=None, buttonInfo="", presetOptions=False, presetObj=None): _row = mUI.MelHSingleStretchLayout(parent,ut='cgmUISubTemplate',padding = _padding) mUI.MelSpacer(_row,w=_padding) mUI.MelLabel(_row, l=label) uiTF = mUI.MelLabel(_row,ut='cgmUIInstructionsTemplate',l=text, en=True) if button: cgmUI.add_Button(_row,buttonLabel, buttonCommand, buttonInfo) _row.setStretchWidget(uiTF) if presetOptions: presetMenu = mUI.MelOptionMenu(_row,useTemplate = 'cgmUITemplate') presetMenu.append("Load Preset") for a in mc.nodePreset( list=presetObj ): presetMenu.append(a) presetMenu.append("---") presetMenu.append("Save Preset") presetMenu(edit=True, value = "Load Preset", cc = cgmGEN.Callback(uiFunc_process_preset_change, presetObj, presetMenu) ) mUI.MelSpacer(_row,w=_padding) _row.layout() return uiTF
def mirror_verify(self, progressBar=None, progressEnd=True): """ Verify the mirror setup of the puppet modules """ _str_func = ' mirror_verify'.format(self) log.debug("|{0}| >> ... [{1}]".format(_str_func, self) + '-' * 80) md_data = {} ml_modules = modules_get(self) d_runningSideIdxes = {'Centre': 0, 'Left': 0, 'Right': 0} ml_processed = [] ml_modules = modules_get(self) int_lenModules = len(ml_modules) if progressBar: cgmUI.progressBar_start(progressBar) for i, mModule in enumerate(ml_modules): if progressBar: cgmUI.progressBar_set(progressBar, minValue=0, maxValue=int_lenModules + 1, progress=i, vis=True) try: mModule.UTILS.mirror_verifySetup(mModule, d_runningSideIdxes, ml_processed, progressBar=progressBar, progressEnd=False) except Exception, err: log.error("{0} | {1}".format(mModule, err))
def updateTemplate(i_customizationNetwork,**kws): assert i_customizationNetwork.mClass == 'cgmMorpheusMakerNetwork', "Not a customization Network" assert i_customizationNetwork.mPuppet.mClass == 'cgmMorpheusPuppet',"Puppet isn't there" d_customizationData = verify_customizationData(i_customizationNetwork) i_Morpheus = i_customizationNetwork.mPuppet if not d_customizationData: return False mayaMainProgressBar = gui.doStartMayaProgressBar(len(l_modulesToDoOrder)) for moduleKey in l_modulesToDoOrder: if mc.progressBar(mayaMainProgressBar, query=True, isCancelled=True ) : break mc.progressBar(mayaMainProgressBar, edit=True, status = "Setting:'%s'..."%(moduleKey), step=1) i_module = i_Morpheus.getModuleFromDict(d_moduleCheck[moduleKey]) if not i_module: log.warning("Cannot find Module: '%s'"%moduleKey) return False log.debug("Building: '%s'"%moduleKey) i_module.doSize(sizeMode = 'manual', posList = d_customizationData.get(moduleKey)) i_module.doTemplate(tryTemplateUpdate = True, **kws) gui.doEndMayaProgressBar(mayaMainProgressBar)#Close out this progress bar
def rigNodes_setAttr(self, attr=None, value=None, progressBar=None, progressEnd=True): """ Verify the mirror setup of the puppet modules """ _str_func = ' rigNodes_setAttr'.format(self) log.debug("|{0}| >> ... [{1}]".format(_str_func, self) + '-' * 80) md_data = {} ml_modules = modules_get(self) ml_processed = [] ml_modules = modules_get(self) if progressBar: int_lenModules = len(ml_modules) cgmUI.progressBar_start(progressBar, int_lenModules + 1) l_dat = self.getMessage('rigNodes') for i, mModule in enumerate(ml_modules): if progressBar: cgmUI.progressBar_set(progressBar, progress=i, vis=True) try: l_dat.extend(mModule.rigNull.getMessage('rigNodes')) except Exception, err: log.error("{0} | {1}".format(mModule, err))
def buildSection_objDefaults(self,parent,frame=True): try:self.var_objDefaultAimAxis except:self.var_objDefaultAimAxis = cgmMeta.cgmOptionVar('cgmVar_objDefaultAimAxis', defaultValue = 2) try:self.var_objDefaultUpAxis except:self.var_objDefaultUpAxis = cgmMeta.cgmOptionVar('cgmVar_objDefaultUpAxis', defaultValue = 1) try:self.var_objDefaultOutAxis except:self.var_objDefaultOutAxis = cgmMeta.cgmOptionVar('cgmVar_objDefaultOutAxis', defaultValue = 3) if frame: _frame = mUI.MelFrameLayout(parent,label = 'Obj Defaults',vis=True, collapse=self.var_objectDefaultsFrameCollapse.value, collapsable=True, enable=True, useTemplate = 'cgmUIHeaderTemplate', expandCommand = lambda:self.var_objectDefaultsFrameCollapse.setValue(0), collapseCommand = lambda:self.var_objectDefaultsFrameCollapse.setValue(1) ) _inside = mUI.MelColumnLayout(_frame,useTemplate = 'cgmUISubTemplate') else: _inside = parent #>>>Aim defaults mode ------------------------------------------------------------------------------------- _d = {'aim':self.var_objDefaultAimAxis, 'up':self.var_objDefaultUpAxis, 'out':self.var_objDefaultOutAxis} for k in _d.keys(): _var = _d[k] _row = mUI.MelHSingleStretchLayout(_inside,ut='cgmUISubTemplate',padding = 5) mUI.MelSpacer(_row,w=5) mUI.MelLabel(_row,l='Obj {0}:'.format(k)) _row.setStretchWidget( mUI.MelSeparator(_row) ) uiRC = mUI.MelRadioCollection() _on = _var.value for i,item in enumerate(SHARED._l_axis_by_string): if i == _on: _rb = True else:_rb = False uiRC.createButton(_row,label=item,sl=_rb, onCommand = cgmGEN.Callback(_var.setValue,i)) mUI.MelSpacer(_row,w=2) _row.layout() #>>>Buttons ------------------------------------------------------------------------------------- _row_defaults = mUI.MelHLayout(_inside,ut='cgmUISubTemplate',padding = 5, ) cgmUI.add_Button(_row_defaults,'Tag selected for aim', lambda *a:MMCONTEXT.func_process(SNAP.verify_aimAttrs, mc.ls(sl=True),'each','Verify aim attributes',True,**{}),) _row_defaults.layout()
def loadCGMSimpleGUI(*a): try: from cgm.core.classes import GuiFactory as uiFactory reload(uiFactory) uiFactory.cgmGUI() except Exception, err: cgmGEN.cgmException(Exception, err)
def build_layoutWrapper(self, parent): uiColumn_main = zooUI.MelColumnLayout(parent) cgmUI.add_Header('Setup Hotkey') cgmUI.add_TextBlock(self.mi_cgmHotkeyer._d_kws['name']) #>>>Modifier row ------------------------------------------------------------------------------------ self.uiRow_Modifier = zooUI.MelHSingleStretchLayout( uiColumn_main, ut='cgmUISubTemplate', padding=2) #zooUI.MelSpacer(self.uiRow_Modifier,w=5) #zooUI.MelLabel(self.uiRow_Modifier, label = 'Modifier: ',align='right') self.uiRow_Modifier.setStretchWidget( zooUI.MelSeparator(self.uiRow_Modifier)) self.uiRow_Modifier.layout() self.uiRadioCollection_modifier = zooUI.MelRadioCollection() self.uiOptions_modifier = [] for i, item in enumerate(cgmHotkeyer._l_modifierOptions): self.uiOptions_modifier.append( self.uiRadioCollection_modifier.createButton( self.uiRow_Modifier, label=item)) self.uiRow_Modifier.layout() mc.radioCollection(self.uiRadioCollection_modifier, edit=True, sl=self.uiOptions_modifier[0]) #>>>Text row ------------------------------------------------------------------------------------ uiRow_key = zooUI.MelHLayout(uiColumn_main, ut='cgmUISubTemplate', padding=15) self.uiText_key = zooUI.MelTextField( uiRow_key, backgroundColor=[1, 1, 1], h=20, text=self.mi_cgmHotkeyer._defaultKey, ut='cgmUITemplate', #ec = lambda *a:self._UTILS.puppet_doChangeName(self), annotation="Hotkey to use") uiRow_key.layout() #>>> Button row mc.setParent(uiColumn_main) cgmUI.add_LineSubBreak() uiRow_buttons = zooUI.MelHLayout(uiColumn_main, ut='cgmUISubTemplate', padding=5) cgmUI.add_Button(uiRow_buttons, 'Go', commandText=lambda *a: self.buttonPress_go(), annotationText="Set it up") cgmUI.add_Button( uiRow_buttons, 'Reset', commandText=lambda *a: self.buttonPress_reset(), en=False, annotationText="Reset given key to the default maya setting") uiRow_buttons.layout()
def bakeTempLocator(self, startTime=None, endTime=None): _str_func = 'PostBake.bakeTempLocator' if startTime is None: startTime = self.startTime if endTime is None: endTime = self.endTime ct = mc.currentTime(q=True) self._bakedLoc = cgmMeta.asMeta(LOC.create(name='bakeLoc')) self._bakedLoc.rotateOrder = self.obj.rotateOrder SNAP.matchTarget_set(self._bakedLoc.mNode, self.obj.mNode) _len = endTime - startTime _progressBar = cgmUI.doStartMayaProgressBar(_len, "Processing...") _obj = VALID.objString(self._bakedLoc.mNode, noneValid=False) _target = VALID.objString( self.obj.mNode, noneValid=False ) #ATTR.get_message(_obj, 'cgmMatchTarget','cgmMatchDat',0) ak = mc.autoKeyframe(q=True, state=True) mc.autoKeyframe(state=False) mc.refresh(su=True) completed = True for i in range(startTime, endTime + 1): mc.currentTime(i) SNAP.go(_obj, _target, True, True, pivot='rp') mc.setKeyframe(_obj, at=['translate', 'rotate']) if _progressBar: if mc.progressBar(_progressBar, query=True, isCancelled=True): log.warning('Bake cancelled!') completed = False break mc.progressBar(_progressBar, edit=True, status=("{0} On frame {1}".format(_str_func, i)), step=1, maxValue=_len) mc.refresh(su=False) mc.autoKeyframe(state=ak) cgmUI.doEndMayaProgressBar(_progressBar) mc.currentTime(ct) return completed
def buildScrollForm(self, parent, hasHeader = False, buttonArgs = [], headerText = 'Header', allowMultiSelection=True, buttonCommand=None, doubleClickCommand=None, selectCommand=None): main_form = mUI.MelFormLayout(parent,ut='cgmUITemplate') header = None if(hasHeader): header = cgmUI.add_Header(headerText, overrideUpper = True) scroll_list = mUI.MelObjectScrollList( main_form, ut='cgmUITemplate', allowMultiSelection=allowMultiSelection, doubleClickCommand=cgmGEN.Callback(doubleClickCommand,self), selectCommand=cgmGEN.Callback(selectCommand,self) ) buttonLayout = None buttons = [] hasButton = len(buttonArgs) > 0 if(hasButton): #buttonLayout = mUI.MelColumnLayout(main_form,useTemplate = 'cgmUISubTemplate') buttonLayout = mUI.MelHLayout(main_form,ut='cgmUISubTemplate',padding = 1,bgc=_subLineBGC) for btn in buttonArgs: button = cgmUI.add_Button(buttonLayout,btn['label'], cgmGEN.Callback(btn['command'],self), btn['annotation'], bgc=_buttonBGC) buttons.append(button) buttonLayout.layout() af = [(scroll_list,"left",0), (scroll_list,"right",0)] ac = [] attachNone = [] if(hasHeader): af += [ (header,"top",0), (header,"left",0), (header,"right",0) ] ac += [(scroll_list,"top",0,header)] attachNone += [(header,"bottom")] else: af += [ (scroll_list,"top",0) ] if(hasButton): af += [ (buttonLayout,"bottom",0), (buttonLayout,"left",0), (buttonLayout,"right",0)] ac += [(scroll_list,"bottom",0,buttonLayout)] attachNone += [(buttonLayout,"top")] else: af += [ (scroll_list,"bottom",0) ] main_form(edit=True, af = af, ac = ac, attachNone = attachNone) return [main_form, scroll_list, header, buttons]
def buildRow_commitButtons(self, parent): #>>>Match mode ------------------------------------------------------------------------------------- _row = mUI.MelHLayout(parent, ut='cgmUISubTemplate', padding=5) cgmUI.add_Button(_row, 'Check for updates', lambda *a: (self.uiFunc_checkForUpdates()), "Check your last branch pull for updates") cgmUI.add_Button( _row, 'Get Selected', lambda *a: (self.uiFunc_updateMyStuff()), ) _row.layout() return _row
def build_layoutWrapper(self, parent): _str_func = 'build_layoutWrapper' #self._d_uiCheckBoxes = {} #_MainForm = mUI.MelFormLayout(parent,ut='cgmUISubTemplate') _MainForm = mUI.MelFormLayout(self, ut='cgmUITemplate') _column = buildColumn_main(self, _MainForm, False) self.uiScroll_commits = mUI.MelScrollLayout(_MainForm, bgc=[.5, .5, .5]) #for v in range(50): #mUI.MelLabel(self.uiFrame_commits, l=v) self.uiUpdate_commits() _row_buttons = buildRow_commitButtons(self, _MainForm) _row_cgm = cgmUI.add_cgmFooter(_MainForm) _MainForm(edit=True, af=[ (_column, "top", 0), (_column, "left", 0), (_column, "right", 0), (_row_buttons, "left", 0), (_row_buttons, "right", 0), (self.uiScroll_commits, "left", 0), (self.uiScroll_commits, "right", 0), (_row_cgm, "left", 0), (_row_cgm, "right", 0), (_row_cgm, "bottom", 0), ], ac=[(self.uiScroll_commits, "top", 2, _column), (self.uiScroll_commits, "bottom", 5, _row_buttons), (_row_buttons, "bottom", 2, _row_cgm)], attachNone=[(_row_buttons, "top")])
def uiFunc_create_selection_list(parent, items): itemList = cgmUI.cgmScrollList(parent, numberOfRows=4, height=75) itemList.setItems(items) itemList(edit=True, selectCommand=cgmGEN.Callback(uiFunc_select_list_item, itemList)) return itemList
def build_layoutWrapper(self,parent): MainForm = zooUI.MelColumnLayout(parent) SetHeader = cgmUI.add_Header('HI') #self.l_helpElements.extend(add_InstructionBlock(MainForm,"Purge all traces of cgmThinga tools from the object and so and so forth forever, amen.",vis = self.var_ShowHelp.value)) cgmUI.add_Button(MainForm) cgmUI.add_Button(MainForm,'Debug test', lambda *a: self.do_DebugEchoTest()) cgmUI.add_MelLabel(MainForm,'asdfasdfasdf')
def __init__( self,mi_cgmHotkeyer,*args,**kws): #Check our tool option var for debug mode to set logger level if so if mc.optionVar(exists = "cgmVar_guiDebug") and mc.optionVar(q="cgmVar_guiDebug"): log.setLevel(logging.DEBUG) self.mi_cgmHotkeyer = mi_cgmHotkeyer self.__toolName__ = __toolName__ self.l_allowedDockAreas = ['right', 'left'] self.WINDOW_NAME = cgmSimpleUI.WINDOW_NAME self.WINDOW_TITLE = cgmSimpleUI.WINDOW_TITLE self.DEFAULT_SIZE = cgmSimpleUI.DEFAULT_SIZE #>>> Standard cgm variables #==================== cgmUI.initializeTemplates() self.build_layoutWrapper(self) self.show()
def uiUpdate_commits(self): self.uiScroll_commits.clear() #_d_ui_annotations = {} _sidePadding = 25 _parent = self.uiScroll_commits _branch = self.var_branchMode.value _dat = cgmUpdate.get_dat(_branch, _commit_limit, True) uiRC = mUI.MelRadioCollection() self.uiRC_commits = uiRC self.dat_commits = _dat for i, d in enumerate(_dat): _hash = d['hash'] _msg = d['msg'] _date = d['date'] _url = d['url'] _ann = '\n {0} commit {1} | {2} | {3} \n {4} \n {5}'.format( _branch, i, _hash, _date, _msg, _url) _report = '{0} | {1}'.format(_hash, _msg[:50]) _label = "{0} - {1} | {3}...".format(i, _date, _hash[:8], _msg[:40]) #log.debug(_report) #cgmUI.mUI.MelLabel(_parent, l = _msg, # annotation = d['msg']) #mc.separator(parent = _parent, height = 5, #ut='cgmUISubTemplate' # ) cgmUI.mUI.MelSpacer(_parent, h=5) uiRC.createButton( _parent, label=_label, annotation=_ann, onCommand=cgmGEN.Callback(log.info, _ann), #ut='cgmUIHeader', #onCommand = lambda*a:(log.info("{0} | {1} | {2}".format(uiRC.getSelectedIndex(), _branch, self.dat_commits[uiRC.getSelectedIndex()]['hash']))) #sl=_rb, #onCommand = cgmGEN.Callback(_var.setValue,i) ) mc.setParent(_parent) cgmUI.add_LineSubBreak()
def setState(i_customizationNetwork, state=False, **kws): """" Returns a defined Morpheus asset What is a morpheus asset """ assert i_customizationNetwork.mClass == 'cgmMorpheusMakerNetwork', "Not a customization Network" assert i_customizationNetwork.mPuppet.mClass == 'cgmMorpheusPuppet', "Puppet isn't there" #>>>Kw defaults rebuildFrom = kws.get('rebuildFrom') or None forceNew = kws.get('forceNew') or False tryTemplateUpdate = kws.get('tryTemplateUpdate') or True loadTemplatePose = kws.get('loadTemplatePose') or True i_Morpheus = i_customizationNetwork.mPuppet d_customizationData = verify_customizationData(i_customizationNetwork) if not d_customizationData: return False mayaMainProgressBar = gui.doStartMayaProgressBar(len(l_modulesToDoOrder)) for moduleKey in l_modulesToDoOrder: if mc.progressBar(mayaMainProgressBar, query=True, isCancelled=True): break mc.progressBar(mayaMainProgressBar, edit=True, status="Setting:'%s'..." % (moduleKey), step=1) i_module = i_Morpheus.getModuleFromDict(d_moduleCheck[moduleKey]) if not i_module: log.warning("Cannot find Module: '%s'" % moduleKey) return False log.debug("Building: '%s'" % moduleKey) i_module.setState(state, sizeMode='manual', posList=d_customizationData.get(moduleKey), **kws) #i_module.doSize('manual', posList = d_customizationData.get(moduleKey)) #i_module.doTemplate() gui.doEndMayaProgressBar(mayaMainProgressBar) #Close out this progress bar
def setState(i_customizationNetwork,state = False, **kws): """" Returns a defined Morpheus asset What is a morpheus asset """ assert i_customizationNetwork.mClass == 'cgmMorpheusMakerNetwork', "Not a customization Network" assert i_customizationNetwork.mPuppet.mClass == 'cgmMorpheusPuppet',"Puppet isn't there" #>>>Kw defaults rebuildFrom = kws.get('rebuildFrom') or None forceNew = kws.get('forceNew') or False tryTemplateUpdate = kws.get('tryTemplateUpdate') or True loadTemplatePose = kws.get('loadTemplatePose') or True i_Morpheus = i_customizationNetwork.mPuppet d_customizationData = verify_customizationData(i_customizationNetwork) if not d_customizationData: return False mayaMainProgressBar = gui.doStartMayaProgressBar(len(l_modulesToDoOrder)) for moduleKey in l_modulesToDoOrder: if mc.progressBar(mayaMainProgressBar, query=True, isCancelled=True ) : break mc.progressBar(mayaMainProgressBar, edit=True, status = "Setting:'%s'..."%(moduleKey), step=1) i_module = i_Morpheus.getModuleFromDict(d_moduleCheck[moduleKey]) if not i_module: log.warning("Cannot find Module: '%s'"%moduleKey) return False log.debug("Building: '%s'"%moduleKey) i_module.setState(state, sizeMode = 'manual', posList = d_customizationData.get(moduleKey), **kws) #i_module.doSize('manual', posList = d_customizationData.get(moduleKey)) #i_module.doTemplate() gui.doEndMayaProgressBar(mayaMainProgressBar)#Close out this progress bar
def uiFunc_build_post_process_column(self, parentColumn): mc.setParent(parentColumn) cgmUI.add_LineSubBreak() # Post Process Action # _row = mUI.MelHSingleStretchLayout(parentColumn, ut='cgmUISubTemplate', padding=5) self._post_row_aimDirection = _row mUI.MelSpacer(_row, w=_padding) mUI.MelLabel(_row, l='Action:') _row.setStretchWidget(mUI.MelSeparator(_row)) actions = ['Dragger', 'Spring', 'Trajectory Aim', 'Keys to Motion Curve'] self.post_actionMenu = mUI.MelOptionMenu(_row, useTemplate='cgmUITemplate', changeCommand=cgmGEN.Callback( uiFunc_setPostAction, self)) for dir in actions: self.post_actionMenu.append(dir) self.post_actionMenu.setValue(actions[0]) mUI.MelSpacer(_row, w=_padding) _row.layout() # # End Post Process Action # Post Process Options Frame # self._postProcessOptionsColumn = mUI.MelColumnLayout( parentColumn, useTemplate='cgmUISubTemplate') # # Post Process Options Frame uiFunc_setPostAction(self)
def uiFunc_build_controller_connection_column(self, parent, connection): mc.setParent(parent) cgmUI.add_LineSubBreak() # Connection Column # connectionColumn = mUI.MelColumnLayout(parent,useTemplate = 'cgmUISubTemplate') for label in self.connectionDict[connection]: add_connection_row(self, connectionColumn, connection, label, self.connectionDict[connection][label]) # # End Connection Column _row = mUI.MelHLayout(parent,ut='cgmUISubTemplate',padding = _padding) btn = cgmUI.add_Button(_row,'Add Connection', cgmGEN.Callback(add_connection,self, connectionColumn, connection), #lambda *a: attrToolsLib.doAddAttributesToSelected(self), 'Add Connection Button',h=25) btn = cgmUI.add_Button(_row,'Clear All', cgmGEN.Callback(uiFunc_clear_connections,self, connectionColumn, connection), #lambda *a: attrToolsLib.doAddAttributesToSelected(self), 'Clear Connections Button',h=25) _row.layout() mc.setParent(parent) cgmUI.add_LineSubBreak()
def build_layoutWrapper(self,parent): uiColumn_main = zooUI.MelColumnLayout(parent) cgmUI.add_Header('Setup Hotkey') cgmUI.add_TextBlock(self.mi_cgmHotkeyer._d_kws['name']) #>>>Modifier row ------------------------------------------------------------------------------------ self.uiRow_Modifier = zooUI.MelHSingleStretchLayout(uiColumn_main,ut='cgmUISubTemplate',padding = 2) #zooUI.MelSpacer(self.uiRow_Modifier,w=5) #zooUI.MelLabel(self.uiRow_Modifier, label = 'Modifier: ',align='right') self.uiRow_Modifier.setStretchWidget( zooUI.MelSeparator(self.uiRow_Modifier) ) self.uiRow_Modifier.layout() self.uiRadioCollection_modifier = zooUI.MelRadioCollection() self.uiOptions_modifier = [] for i,item in enumerate(cgmHotkeyer._l_modifierOptions): self.uiOptions_modifier.append(self.uiRadioCollection_modifier.createButton(self.uiRow_Modifier,label=item)) self.uiRow_Modifier.layout() mc.radioCollection(self.uiRadioCollection_modifier,edit=True, sl=self.uiOptions_modifier[0]) #>>>Text row ------------------------------------------------------------------------------------ uiRow_key = zooUI.MelHLayout(uiColumn_main,ut='cgmUISubTemplate',padding = 15) self.uiText_key = zooUI.MelTextField(uiRow_key,backgroundColor = [1,1,1],h=20, text = self.mi_cgmHotkeyer._defaultKey, ut = 'cgmUITemplate', #ec = lambda *a:self._UTILS.puppet_doChangeName(self), annotation = "Hotkey to use") uiRow_key.layout() #>>> Button row mc.setParent(uiColumn_main) cgmUI.add_LineSubBreak() uiRow_buttons = zooUI.MelHLayout(uiColumn_main,ut='cgmUISubTemplate',padding = 5) cgmUI.add_Button(uiRow_buttons,'Go',commandText = lambda *a:self.buttonPress_go(), annotationText="Set it up") cgmUI.add_Button(uiRow_buttons,'Reset',commandText = lambda *a:self.buttonPress_reset(),en = False, annotationText="Reset given key to the default maya setting") uiRow_buttons.layout()
def buildColumn_main(self,parent, asScroll = False): """ Trying to put all this in here so it's insertable in other uis """ if asScroll: _inside = mUI.MelScrollLayout(parent,useTemplate = 'cgmUISubTemplate') else: _inside = mUI.MelColumnLayout(parent,useTemplate = 'cgmUISubTemplate') #>>>Objects Load Row --------------------------------------------------------------------------------------- _row_objLoad = mUI.MelHSingleStretchLayout(_inside,ut='cgmUITemplate',padding = 5) mUI.MelSpacer(_row_objLoad,w=10) mUI.MelLabel(_row_objLoad, l='Source:') uiTF_objLoad = mUI.MelLabel(_row_objLoad,ut='cgmUITemplate',l='', en=True) self.uiTF_objLoad = uiTF_objLoad cgmUI.add_Button(_row_objLoad,'<<', cgmGEN.Callback(uiFunc_load_selected,self), "Load first selected object.") _row_objLoad.setStretchWidget(uiTF_objLoad) mUI.MelSpacer(_row_objLoad,w=10) """ _row_objLoad.layout() #>>>Report --------------------------------------------------------------------------------------- _row_report = mUI.MelHLayout(_inside ,ut='cgmUIInstructionsTemplate',h=20) self.uiField_report = mUI.MelLabel(_row_report, bgc = SHARED._d_gui_state_colors.get('help'), label = '...', h=20) _row_report.layout() """ _row_objLoad.layout() uiFunc_load_selected(self) return _inside
def patch_templateToForm(): try: _str_func = 'patch_templateToForm' log.debug(cgmGEN.logString_start(_str_func)) _l = mc.ls() _progressBar = CGMUI.doStartMayaProgressBar(stepMaxValue=len(_l)) for i, o in enumerate(_l): _str = "{0} | {1} ".format(i, o) log.debug(cgmGEN.logString_sub(_str_func, _str)) CGMUI.progressBar_set(_progressBar, step=1, status=_str) mObj = cgmMeta.asMeta(o) for a in mc.listAttr(o, ud=True) or []: log.debug(cgmGEN.logString_msg(_str_func, str(a))) if 'template' in a: log.info( cgmGEN.logString_msg( _str_func, "{0} | {1} | template in".format(_str, a))) ATTR.rename(o, a, a.replace('template', 'form')) elif 'Template' in a: log.info( cgmGEN.logString_msg( _str_func, "{0} | {1} | Template in".format(_str, a))) ATTR.rename(o, a, a.replace('Template', 'Form')) v = ATTR.get(o, a) if 'template' == str(v): log.info( cgmGEN.logString_msg( _str_func, "{0} | {1} | template value".format(_str, str(a)))) ATTR.set(o, a, 'form') except Exception, err: cgmGEN.cgmExceptCB(Exception, err)
def collect_worldSpaceObjects(self, progressBar=None): _str_func = 'collect_worldSpaceObjects' log.debug("|{0}| >> ...".format(_str_func) + cgmGEN._str_hardBreak) log.debug(self) ml_objs = [] mMasterNull = self.masterNull mWorldSpaceObjectsGroup = mMasterNull.worldSpaceObjectsGroup mPuppetSpaceObjectsGroup = mMasterNull.puppetSpaceObjectsGroup ml_children = self.masterControl.getChildren(asMeta=1) or [] if progressBar: cgmUI.progressBar_start(progressBar) len_children = len(ml_children) for i, mObj in enumerate(ml_children): if progressBar: #mc.progressBar(progressBar,edit = True, # minValue = 0, # maxValue=len_children,step=i, vis=True) cgmUI.progressBar_set(progressBar, minValue=0, maxValue=len_children + 1, progress=i, vis=True) time.sleep(.01) if mObj.getMayaAttr('cgmType') in ['dynDriver']: mObj.parent = mPuppetSpaceObjectsGroup ml_objs.append(mObj) ml_children = mObj in mMasterNull.getChildren(asMeta=1) or [] if progressBar: len_children = len(ml_children) for i, mObj in enumerate(ml_children): if progressBar: cgmUI.progressBar_set(progressBar, minValue=0, maxValue=len_children + 1, progress=i, vis=True) time.sleep(.01) if mObj.getMayaAttr('cgmType') in ['dynDriver']: mObj.parent = mWorldSpaceObjectsGroup ml_objs.append(mObj) if progressBar: cgmUI.progressBar_end(progressBar) return ml_objs
def build_layoutWrapper(self, parent): _str_func = 'build_layoutWrapper' #self._d_uiCheckBoxes = {} _MainForm = mUI.MelFormLayout(self, ut='cgmUITemplate') _column = buildColumn_main(self, _MainForm, True) _row_cgm = cgmUI.add_cgmFooter(_MainForm) _MainForm(edit=True, af=[ (_column, "top", 0), (_column, "left", 0), (_column, "right", 0), (_row_cgm, "left", 0), (_row_cgm, "right", 0), (_row_cgm, "bottom", 0), ], ac=[ (_column, "bottom", 2, _row_cgm), ], attachNone=[(_row_cgm, "top")])
def uiFunc_update_details(self): if not self._mDynFK: return self.detailsFrame.clear() dat = self._mDynFK.get_dat() self.detailsFrame(edit=True, collapse=False) _details = mUI.MelColumnLayout(self.detailsFrame, useTemplate='cgmUIHeaderTemplate') cgmUI.add_LineSubBreak() # Base Name uiFunc_make_display_line(_details, label='Base Name:', text=self._mDynFK.baseName, button=False) # Direction Info _row = mUI.MelHSingleStretchLayout(_details, ut='cgmUISubTemplate', padding=5) mUI.MelSpacer(_row, w=_padding) mUI.MelLabel(_row, l="Direction:") _row.setStretchWidget(mUI.MelSeparator(_row)) mUI.MelLabel(_row, l="Fwd:") uiTF = mUI.MelLabel(_row, ut='cgmUISubTemplate', l=self._mDynFK.fwd, en=True) mUI.MelLabel(_row, l="Up:") uiTF = mUI.MelLabel(_row, ut='cgmUISubTemplate', l=self._mDynFK.up, en=True) mUI.MelSpacer(_row, w=10) _row.layout() # Nucleus uiFunc_make_display_line(_details, label='Nucleus:', text=self._mDynFK.mNucleus[0], button=True, buttonLabel=">>", buttonCommand=cgmGEN.Callback( uiFunc_select_item, self._mDynFK.mNucleus[0]), buttonInfo="Select nucleus transform.", presetOptions=True, presetObj=self._mDynFK.mNucleus[0]) uiFunc_make_display_line(_details, label='Hair System:', text=dat['mHairSysShape'].p_nameBase, button=True, buttonLabel=">>", buttonCommand=cgmGEN.Callback( uiFunc_select_item, dat['mHairSysShape'].p_nameBase), buttonInfo="Select hair system transform.", presetOptions=True, presetObj=dat['mHairSysShape'].p_nameBase) _row = mUI.MelHSingleStretchLayout(_details, ut='cgmUISubTemplate', padding=5) mUI.MelSpacer(_row, w=_padding) mUI.MelLabel(_row, l='Enabled:') _row.setStretchWidget(mUI.MelSeparator(_row)) self.nucleusEnabledCB = mUI.MelCheckBox(_row, en=True, v=True, label='', ann='Enable Nucleus') self.nucleusEnabledCB(edit=True, changeCommand=cgmGEN.Callback( uiFunc_set_nucleus_enabled, self)) mUI.MelSpacer(_row, w=_padding) _row.layout() # Start Times _row = mUI.MelHSingleStretchLayout(_details, ut='cgmUISubTemplate', padding=5) mUI.MelSpacer(_row, w=_padding) mUI.MelLabel(_row, l='Start Time:') _row.setStretchWidget(mUI.MelSeparator(_row)) self.startTimeIF = mUI.MelIntField(_row, v=dat['mNucleus'].startFrame) self.startTimeIF(edit=True, changeCommand=cgmGEN.Callback(uiFunc_set_start_time, self, mode='refresh')) cgmUI.add_Button( _row, '<<', cgmGEN.Callback(uiFunc_set_start_time, self, mode='beginning'), "Set Start To Beginning of Slider.") mUI.MelSpacer(_row, w=_padding) _row.layout() # TimeInput Row ---------------------------------------------------------------------------------- _row = mUI.MelHSingleStretchLayout(_details, ut='cgmUISubTemplate') mUI.MelSpacer(_row, w=_padding) mUI.MelLabel(_row, l='Bake Time:') _row.setStretchWidget(mUI.MelSeparator(_row)) mUI.MelLabel(_row, l='Start:') self.uiFieldInt_start = mUI.MelIntField(_row, 'cgmLocWinStartFrameField', width=40) mUI.MelLabel(_row, l='End:') self.uiFieldInt_end = mUI.MelIntField(_row, 'cgmLocWinEndFrameField', width=40) cgmUI.add_Button(_row, '<<', cgmGEN.Callback(uiFunc_updateTimeRange, self, 'min'), "Set Start To Beginning of Slider.") cgmUI.add_Button(_row, '[ ]', cgmGEN.Callback(uiFunc_updateTimeRange, self, 'slider'), "Set Time to Slider.") cgmUI.add_Button(_row, '>>', cgmGEN.Callback(uiFunc_updateTimeRange, self, 'max'), "Set End To End of Slider.") uiFunc_updateTimeRange(self, mode='slider') mUI.MelSpacer(_row, w=_padding) _row.layout() mc.setParent(_details) cgmUI.add_LineSubBreak() allChains = [] for idx in dat['chains']: allChains += dat['chains'][idx]['mObjJointChain'] allTargets = [] for idx in dat['chains']: allTargets += dat['chains'][idx]['mTargets'] _row = mUI.MelHLayout(_details, ut='cgmUISubTemplate', padding=_padding * 2) cgmUI.add_Button( _row, 'Bake All Joints', cgmGEN.Callback(uiFunc_bake, self, 'chain', allChains), #lambda *a: attrToolsLib.doAddAttributesToSelected(self), 'Bake All Joints') cgmUI.add_Button(_row, 'Bake All Targets', cgmGEN.Callback(uiFunc_bake, self, 'target', allTargets), 'Bake All Targets') _row.layout() _row = mUI.MelHLayout(_details, ut='cgmUISubTemplate', padding=_padding * 2) cgmUI.add_Button( _row, 'Connect All Targets', cgmGEN.Callback(uiFunc_connect_targets, self), #lambda *a: attrToolsLib.doAddAttributesToSelected(self), 'Connect All Targets') cgmUI.add_Button(_row, 'Disconnect All Targets', cgmGEN.Callback(uiFunc_disconnect_targets, self), 'Disconnect All Targets') _row.layout() # Chains for i, chain in enumerate(self._mDynFK.msgList_get('chain')): _row = mUI.MelHSingleStretchLayout(_details, ut='cgmUISubTemplate', padding=_padding) mUI.MelSpacer(_row, w=_padding) _subChainColumn = mUI.MelColumnLayout( _row, useTemplate='cgmUIHeaderTemplate') chainFrame = mUI.MelFrameLayout(_subChainColumn, label=chain.p_nameBase, collapsable=True, collapse=True, useTemplate='cgmUIHeaderTemplate') _chainColumn = mUI.MelColumnLayout(chainFrame, useTemplate='cgmUIHeaderTemplate') _row.setStretchWidget(_subChainColumn) #mUI.MelSpacer(_row,w=_padding) _row.layout() mc.setParent(_chainColumn) cgmUI.add_LineSubBreak() uiFunc_make_display_line( _chainColumn, label='Follicle:', text=cgmMeta.asMeta(chain.mFollicle[0]).p_nameBase, button=True, buttonLabel=">>", buttonCommand=cgmGEN.Callback(uiFunc_select_item, chain.mFollicle[0]), buttonInfo="Select follicle transform.", presetOptions=True, presetObj=chain.mFollicle[0]) mc.setParent(_chainColumn) cgmUI.add_LineSubBreak() uiFunc_make_display_line(_chainColumn, label='Group:', text=chain.p_nameShort, button=True, buttonLabel=">>", buttonCommand=cgmGEN.Callback( uiFunc_select_item, chain.p_nameBase), buttonInfo="Select group transform.") mc.setParent(_chainColumn) cgmUI.add_LineSubBreak() _row = mUI.MelHSingleStretchLayout(_chainColumn, ut='cgmUISubTemplate', padding=5) mUI.MelSpacer(_row, w=_padding) mUI.MelLabel(_row, l='Orient Up:') _row.setStretchWidget(mUI.MelSeparator(_row)) chainDirections = [] for dir in ['x+', 'x-', 'y+', 'y-', 'z+', 'z-']: if chain.fwd[0] != dir[0]: chainDirections.append(dir) chainDirections.append('None') upMenu = mUI.MelOptionMenu(_row, useTemplate='cgmUITemplate') for dir in chainDirections: upMenu.append(dir) upMenu.setValue(chain.up) upMenu(edit=True, changeCommand=cgmGEN.Callback(uiFunc_set_chain_up, self, i, upMenu)) mUI.MelSpacer(_row, w=_padding) _row.layout() _row = mUI.MelHLayout(_chainColumn, ut='cgmUISubTemplate', padding=_padding * 2) cgmUI.add_Button( _row, 'Bake Joints', cgmGEN.Callback(uiFunc_bake, self, 'chain', chain.msgList_get('mObjJointChain')), #lambda *a: attrToolsLib.doAddAttributesToSelected(self), 'Bake All Joints') cgmUI.add_Button( _row, 'Bake Targets', cgmGEN.Callback(uiFunc_bake, self, 'target', chain.msgList_get('mTargets')), 'Bake All Targets') _row.layout() _row = mUI.MelHLayout(_chainColumn, ut='cgmUISubTemplate', padding=_padding * 2) cgmUI.add_Button( _row, 'Connect Targets', cgmGEN.Callback(uiFunc_connect_targets, self, i), #lambda *a: attrToolsLib.doAddAttributesToSelected(self), 'Connect All Targets') cgmUI.add_Button(_row, 'Disconnect Targets', cgmGEN.Callback(uiFunc_disconnect_targets, self, i), 'Disconnect All Targets') _row.layout() _row = mUI.MelHLayout(_chainColumn, ut='cgmUISubTemplate', padding=_padding * 2) cgmUI.add_Button( _row, 'Delete Chain', cgmGEN.Callback(uiFunc_delete_chain, self, i), #lambda *a: attrToolsLib.doAddAttributesToSelected(self), 'Bake All Joints') _row.layout() frameDat = [['Targets', 'mTargets'], ['Locators', 'mLocs'], ['Joint Chain', 'mObjJointChain'], ['Aims', 'mAims'], ['Parents', 'mParents']] for dat in frameDat: frame = mUI.MelFrameLayout(_chainColumn, label=dat[0], collapsable=True, collapse=True, useTemplate='cgmUIHeaderTemplate') column = mUI.MelColumnLayout(frame, useTemplate='cgmUITemplate', height=75) row = mUI.MelHSingleStretchLayout(column, ut='cgmUIHeaderTemplate', padding=_padding) mUI.MelSpacer(row, w=_padding) itemList = uiFunc_create_selection_list( row, [x.p_nameShort for x in chain.msgList_get(dat[1])]) mUI.MelSpacer(row, w=_padding) row.setStretchWidget(itemList) row.layout() # End Chains mc.setParent(_details) cgmUI.add_LineSubBreak()
def verifyMorpheusNodeStructure(i_Morpheus): """" Returns a defined Morpheus asset What is a morpheus asset """ assert i_Morpheus.mClass == 'cgmMorpheusPuppet',"Not a cgmMorpheusPuppet" def returnModuleMatch(moduleKey): for i_m in i_Morpheus.moduleChildren: matchBuffer = 0 for key in d_moduleCheck[moduleKey].keys(): log.debug("attr: %s"%key) log.debug("value: '%s"%i_m.__dict__[key]) log.debug("checkTo: '%s'"%d_moduleCheck[moduleKey].get(key)) if i_m.hasAttr(key) and i_m.__dict__[key] == d_moduleCheck[moduleKey].get(key): matchBuffer +=1 if matchBuffer == len(d_moduleCheck[moduleKey].keys()): log.debug("Found Morpheus Module: '%s'"%moduleKey) return i_m return False d_moduleInstances = {} # Create the modules #===================================================================== mayaMainProgressBar = gui.doStartMayaProgressBar(len(l_modulesToDoOrder)) for moduleKey in l_modulesToDoOrder: if mc.progressBar(mayaMainProgressBar, query=True, isCancelled=True ) : break mc.progressBar(mayaMainProgressBar, edit=True, status = "On segment '%s'..."%(moduleKey), step=1) if moduleKey not in d_moduleParents.keys():#Make sure we have a parent log.info("Missing parent info for: '%s'"%moduleKey) return False if moduleKey not in d_moduleCheck.keys():#Make sure we have a parent log.info("Missing check info for: '%s'"%moduleKey) return False if moduleKey in d_moduleTemplateSettings.keys():#Make sure we have settings d_settingsDict = d_moduleTemplateSettings[moduleKey] elif d_moduleCheck[moduleKey]['moduleType'] in d_moduleTemplateSettings.keys(): d_settingsDict = d_moduleTemplateSettings[ d_moduleCheck[moduleKey]['moduleType'] ] else: log.info("Missing limb info for: '%s'"%moduleKey) return False log.debug("Have all setup info. Checking structure...") if moduleKey in d_moduleInstances.keys():#if it's already stored, use it i_module = d_moduleInstances[moduleKey] else: i_module = i_Morpheus.getModuleFromDict(d_moduleCheck[moduleKey])#Look for it d_moduleInstances[moduleKey] = i_module#Store it if found if not i_module: log.info("Need to create: '%s'"%moduleKey) kw_direction = False kw_name = False if 'cgmDirection' in d_moduleCheck[moduleKey].keys(): kw_direction = d_moduleCheck[moduleKey].get('cgmDirection') if 'cgmName' in d_moduleCheck[moduleKey].keys(): kw_name = d_moduleCheck[moduleKey].get('cgmName') i_module = i_Morpheus.addModule(mClass = 'cgmLimb',mType = d_moduleCheck[moduleKey]['moduleType'],name = kw_name, direction = kw_direction) d_moduleInstances[moduleKey] = i_module#Store it if i_module:i_module.__verify__() #>>> Settings for key in d_settingsDict.keys(): i_templateNull = i_module.templateNull if i_templateNull.hasAttr(key): log.debug("attr: '%s'"%key) log.debug("setting: '%s'"%d_settingsDict.get(key)) try:i_templateNull.__setattr__(key,d_settingsDict.get(key)) except:log.warning("attr failed: %s"%key) #>>>Parent stuff if d_moduleParents.get(moduleKey):#If we should be looking for a module parent if d_moduleParents.get(moduleKey) in d_moduleInstances.keys(): i_moduleParent = False if i_module.getMessage('moduleParent') and i_module.getMessage('moduleParent') == [d_moduleInstances[d_moduleParents[moduleKey]].mNode]: i_moduleParent = None else: i_moduleParent = d_moduleInstances[d_moduleParents.get(moduleKey)] else: i_moduleParent = i_Morpheus.getModuleFromDict(d_moduleCheck.get(d_moduleParents.get(moduleKey))) if i_moduleParent is None: log.info("moduleParent already connected: '%s'"%d_moduleParents.get(moduleKey)) elif i_moduleParent: i_module.doSetParentModule(i_moduleParent.mNode) else: log.info("moduleParent not found from key: '%s'"%d_moduleParents.get(moduleKey)) # For each module #===================================================================== gui.doEndMayaProgressBar(mayaMainProgressBar)#Close out this progress bar #i_limb.getGeneratedCoreNames() return i_Morpheus
def loadCGMSimpleGUI( *a ): from cgm.core.classes import GuiFactory as uiFactory reload(uiFactory) uiFactory.cgmGUI()
def doMove(self, **kws): if kws: log.debug("Snap.doMove>>> kws: %s" % kws) if len(self.l_targets) == 1: #>>> Check our target i_target = cgmMeta.cgmNode(self.l_targets[0]) log.debug("i_target: %s" % i_target) targetType = i_target.getMayaType() if self.b_snapComponents: components = self.i_obj.getComponents() if not components: raise StandardError, "This objects has no components to snap: '%s'" % self.i_obj.getShortName( ) #>>>Progress bar mayaMainProgressBar = gui.doStartMayaProgressBar( len(components)) for c in components: if mc.progressBar(mayaMainProgressBar, query=True, isCancelled=True): break mc.progressBar(mayaMainProgressBar, edit=True, status=("Wrapping '%s'" % c), step=1) if targetType in ['mesh', 'nurbsSurface', 'nurbsCurve']: pos = distance.returnWorldSpacePosition(c) targetLoc = mc.spaceLocator() mc.move(pos[0], pos[1], pos[2], targetLoc[0]) closestLoc = locators.locClosest([targetLoc[0]], i_target.mNode) if self._posOffset: self.doOrientObjToSurface(i_target.mNode, closestLoc) mc.move(self._posOffset[0], self._posOffset[1], self._posOffset[2], [closestLoc], r=True, rpr=True, os=True, wd=True) position.movePointSnap(c, closestLoc) mc.delete([targetLoc[0], closestLoc]) gui.doEndMayaProgressBar( mayaMainProgressBar) #Close out this progress bar else: pos = False if self.b_snaptoSurface: #>>> If our target is surface we can use if targetType in ['mesh', 'nurbsCurve', 'nurbsSurface']: i_locObj = self.i_obj.doLoc() #Get our position loc i_locTarget = cgmMeta.cgmObject( locators.locClosest([i_locObj.mNode], i_target.mNode)) #Loc closest #i_locObj.rename('objLoc') #i_locTarget.rename('targetLoc') if self._posOffset: try: self.doOrientObjToSurface( i_target.mNode, i_locTarget.mNode) mc.move(self._posOffset[0], self._posOffset[1], self._posOffset[2], [i_locTarget.mNode], r=True, rpr=True, os=True, wd=True) except StandardError, error: log.warn("self._posOffset failure!") log.error(error) pos = i_locTarget.getPosition(True) i_locObj.delete() i_locTarget.delete() elif self.b_midSurfacePos: log.debug("Snap.move>>> midSurfacePos mode!") if targetType not in [ 'mesh', 'nurbsCurve', 'nurbsSurface' ]: log.warning( "Can't do midSurfacPos on targetType: '%s'" % targetType) return False #Get the axis info axisToCheck = kws.pop('axisToCheck', False) if not axisToCheck: axisToCheck = [] up = dictionary.returnVectorToString( self._upVector) or False if not up: raise StandardError, "SnapFactory>>> must have up vector for midSurfaceSnap: %s" % self._upVector for a in ['x', 'y', 'z']: if a != up[0]: axisToCheck.append(a) if not axisToCheck: raise StandardError, "SnapFactory>>> couldn't find any axis to do" #i_locObj = self.i_obj.doLoc()#Get our position loc #log.debug(axisToCheck) pos = RayCast.findMeshMidPointFromObject( i_target.mNode, self.i_obj.mNode, axisToCheck=axisToCheck, **kws) #i_locObj.delete() else: pos = i_target.getPosition(True) if pos: if self.i_obj.isComponent(): if self.b_softSelection: #Only need to do this if soft select is on mc.softSelect(softSelectEnabled=True) mc.select(self.i_obj.getComponent()) mc.move(pos[0], pos[1], pos[2], rpr=True) mc.select(cl=True) else: mc.move(pos[0], pos[1], pos[2], self.i_obj.getComponent()) else: mc.move(pos[0], pos[1], pos[2], self.i_obj.mNode, rpr=True)
# Mutli if int_lenObjects == 1: #MelMenuItem(parent,l="-- Object --",en = False) use_parent = parent state_multiObject = False else: #MelMenuItem(parent,l="-- Objects --",en = False) iSubM_objects = mUI.MelMenuItem(parent,l="Objects(%s)"%(int_lenObjects),subMenu = True) use_parent = iSubM_objects state_multiObject = True if l_commonAttrs and [d_commonOptions.get(a) for a in l_commonAttrs]: for atr in d_commonOptions.keys(): tmpMenu = mUI.MelMenuItem( parent, l="multi Change %s"%atr, subMenu=True) for i,o in enumerate(d_commonOptions.get(atr)): MelMenuItem(tmpMenu,l = "%s"%o, c = cgmUI.Callback(func_multiChangeDynParent,atr,o)) # Individual ---------------------------------------------------------------------------- log.debug("%s"%[k.getShortName() for k in self.d_objectsInfo.keys()]) for i_o in self.d_objectsInfo.keys(): d_buffer = self.d_objectsInfo.get(i_o) or False if d_buffer: if state_multiObject: iTmpObjectSub = mUI.MelMenuItem(use_parent,l=" %s "%i_o.getBaseName(),subMenu = True) else: mUI.MelMenuItem(parent,l="-- %s --"%i_o.getShortName(),en = False) iTmpObjectSub = use_parent if d_buffer.get('dynParent'): mi_dynParent = d_buffer['dynParent'].get('mi_dynParent') d_attrOptions = d_buffer['dynParent'].get('attrOptions') or {} for a in d_attrOptions.keys(): if i_o.hasAttr(a):
_str = "{0} | {1} ".format(i, o) log.debug(cgmGEN.logString_sub(_str_func, _str)) CGMUI.progressBar_set(_progressBar, step=1, status=_str) mObj = cgmMeta.asMeta(o) for a in mc.listAttr(o, ud=True) or []: log.debug(cgmGEN.logString_msg(_str_func, str(a))) if 'template' in a: log.info( cgmGEN.logString_msg( _str_func, "{0} | {1} | template in".format(_str, a))) ATTR.rename(o, a, a.replace('template', 'form')) elif 'Template' in a: log.info( cgmGEN.logString_msg( _str_func, "{0} | {1} | Template in".format(_str, a))) ATTR.rename(o, a, a.replace('Template', 'Form')) v = ATTR.get(o, a) if 'template' == str(v): log.info( cgmGEN.logString_msg( _str_func, "{0} | {1} | template value".format(_str, str(a)))) ATTR.set(o, a, 'form') except Exception, err: cgmGEN.cgmExceptCB(Exception, err) finally: CGMUI.doEndMayaProgressBar()
def buildColumn_main(self, parent, asScroll=False): """ Trying to put all this in here so it's insertable in other uis """ if asScroll: _inside = mUI.MelScrollLayout(parent, useTemplate='cgmUIHeaderTemplate') else: _inside = mUI.MelColumnLayout(parent, useTemplate='cgmUIHeaderTemplate') #>>>Objects Load Row --------------------------------------------------------------------------------------- mUI.MelSeparator(_inside, ut='cgmUISubTemplate', h=3) _row = mUI.MelHSingleStretchLayout(_inside, ut='cgmUISubTemplate', padding=5) mUI.MelSpacer(_row, w=_padding) mUI.MelLabel(_row, l='Dynamic Chain System:') uiTF_objLoad = mUI.MelLabel(_row, ut='cgmUIInstructionsTemplate', l='', en=True) self.uiTF_objLoad = uiTF_objLoad cgmUI.add_Button(_row, '<<', cgmGEN.Callback(uiFunc_load_selected, self), "Load first selected object.") _row.setStretchWidget(uiTF_objLoad) mUI.MelSpacer(_row, w=_padding) _row.layout() mc.setParent(_inside) cgmUI.add_LineSubBreak() self.detailsFrame = mUI.MelFrameLayout(_inside, label="Details", collapsable=True, collapse=True, useTemplate='cgmUIHeaderTemplate') uiFunc_update_details(self) # Create Frame self.createFrame = mUI.MelFrameLayout(_inside, label="Create", collapsable=True, collapse=False, useTemplate='cgmUIHeaderTemplate') _create = mUI.MelColumnLayout(self.createFrame, useTemplate='cgmUIHeaderTemplate') cgmUI.add_LineSubBreak() _row = mUI.MelHSingleStretchLayout(_create, ut='cgmUISubTemplate', padding=_padding) mUI.MelSpacer(_row, w=_padding) _subRow = mUI.MelColumnLayout(_row, useTemplate='cgmUIHeaderTemplate') self.itemList = cgmUI.cgmScrollList(_subRow, numberOfRows=8, height=100) self.itemList(edit=True, allowMultiSelection=True) mUI.MelSpacer(_row, w=_padding) _row.setStretchWidget(_subRow) _row.layout() mUI.MelSeparator(_create, ut='cgmUISubTemplate', h=5) _row = mUI.MelHSingleStretchLayout(_create, ut='cgmUISubTemplate', padding=5) mUI.MelSpacer(_row, w=_padding) addBtn = cgmUI.add_Button( _row, 'Add Selected', cgmGEN.Callback(uiFunc_list_function, self.itemList, 'add selected'), "Load selected objects.") cgmUI.add_Button( _row, 'Remove Selected', cgmGEN.Callback(uiFunc_list_function, self.itemList, 'remove selected'), "Remove selected objects.") cgmUI.add_Button( _row, 'Clear', cgmGEN.Callback(uiFunc_list_function, self.itemList, 'clear'), "Clear all objects.") _row.setStretchWidget(addBtn) mUI.MelSpacer(_row, w=_padding) _row.layout() cgmUI.add_LineSubBreak() _row = mUI.MelHSingleStretchLayout(_create, ut='cgmUISubTemplate', padding=5) mUI.MelSpacer(_row, w=_padding) _row.setStretchWidget( cgmUI.add_Button(_row, 'Make Dynamic Chain', cgmGEN.Callback(uiFunc_make_dynamic_chain, self), "Make Dynamic Chain.")) mUI.MelSpacer(_row, w=_padding) _row.layout() cgmUI.add_LineSubBreak() self.optionsFrame = mUI.MelFrameLayout(_create, label="Options", collapsable=True, collapse=True, useTemplate='cgmUIHeaderTemplate') _options = mUI.MelColumnLayout(self.optionsFrame, useTemplate='cgmUISubTemplate') mUI.MelSeparator(_options, ut='cgmUISubTemplate', h=5) _row = mUI.MelHSingleStretchLayout(_options, ut='cgmUISubTemplate', padding=5) mUI.MelSpacer(_row, w=_padding) mUI.MelLabel(_row, l='Base Name: ') self.options_baseName = mUI.MelTextField(_row, ann='Name', text='DynamicChain') _row.setStretchWidget(self.options_baseName) mUI.MelSpacer(_row, w=_padding) _row.layout() _row = mUI.MelHSingleStretchLayout(_options, ut='cgmUISubTemplate', padding=5) mUI.MelSpacer(_row, w=_padding) mUI.MelLabel(_row, l='Name: ') self.options_name = mUI.MelTextField(_row, ann='Name', text='') _row.setStretchWidget(self.options_name) mUI.MelSpacer(_row, w=_padding) _row.layout() mUI.MelSeparator(_options, ut='cgmUISubTemplate', h=5) _row = mUI.MelHSingleStretchLayout(_options, ut='cgmUISubTemplate', padding=5) mUI.MelSpacer(_row, w=_padding) mUI.MelLabel(_row, l='Direction:') _row.setStretchWidget(mUI.MelSeparator(_row)) directions = ['x+', 'x-', 'y+', 'y-', 'z+', 'z-'] mUI.MelLabel(_row, l='Fwd:') self.fwdMenu = mUI.MelOptionMenu(_row, useTemplate='cgmUITemplate') for dir in directions: self.fwdMenu.append(dir) self.fwdMenu.setValue('z+') mUI.MelSpacer(_row, w=_padding) mUI.MelLabel(_row, l='Up:') self.upMenu = mUI.MelOptionMenu(_row, useTemplate='cgmUITemplate') for dir in directions: self.upMenu.append(dir) self.upMenu.setValue('y+') mUI.MelSpacer(_row, w=_padding) _row.layout() """ _row.layout() #>>>Report --------------------------------------------------------------------------------------- _row_report = mUI.MelHLayout(_inside ,ut='cgmUIInstructionsTemplate',h=20) self.uiField_report = mUI.MelLabel(_row_report, bgc = SHARED._d_gui_state_colors.get('help'), label = '...', h=20) _row_report.layout() """ return _inside
def doMove(self,**kws): if kws:log.debug("Snap.doMove>>> kws: %s"%kws) if len(self.l_targets) == 1: #>>> Check our target i_target = cgmMeta.cgmNode( self.l_targets[0] ) log.debug("i_target: %s"%i_target) targetType = i_target.getMayaType() if self.b_snapComponents: components = self.i_obj.getComponents() if not components:raise StandardError,"This objects has no components to snap: '%s'"%self.i_obj.getShortName() #>>>Progress bar mayaMainProgressBar = gui.doStartMayaProgressBar(len(components)) for c in components: if mc.progressBar(mayaMainProgressBar, query=True, isCancelled=True ) : break mc.progressBar(mayaMainProgressBar, edit=True, status = ("Wrapping '%s'"%c), step=1) if targetType in ['mesh','nurbsSurface','nurbsCurve']: pos = distance.returnWorldSpacePosition(c) targetLoc = mc.spaceLocator() mc.move (pos[0],pos[1],pos[2], targetLoc[0]) closestLoc = locators.locClosest([targetLoc[0]],i_target.mNode) if self._posOffset: self.doOrientObjToSurface(i_target.mNode,closestLoc) mc.move (self._posOffset[0],self._posOffset[1],self._posOffset[2], [closestLoc], r=True, rpr = True, os = True, wd = True) position.movePointSnap(c,closestLoc) mc.delete([targetLoc[0],closestLoc]) gui.doEndMayaProgressBar(mayaMainProgressBar)#Close out this progress bar else: pos = False if self.b_snaptoSurface:#>>> If our target is surface we can use if targetType in ['mesh','nurbsCurve','nurbsSurface']: i_locObj = self.i_obj.doLoc()#Get our position loc i_locTarget = cgmMeta.cgmObject( locators.locClosest([i_locObj.mNode],i_target.mNode) )#Loc closest #i_locObj.rename('objLoc') #i_locTarget.rename('targetLoc') if self._posOffset: try: self.doOrientObjToSurface(i_target.mNode,i_locTarget.mNode) mc.move (self._posOffset[0],self._posOffset[1],self._posOffset[2], [i_locTarget.mNode], r=True, rpr = True, os = True, wd = True) except StandardError,error: log.warn("self._posOffset failure!") log.error(error) pos = i_locTarget.getPosition(True) i_locObj.delete() i_locTarget.delete() elif self.b_midSurfacePos: log.debug("Snap.move>>> midSurfacePos mode!") if targetType not in ['mesh','nurbsCurve','nurbsSurface']: log.warning("Can't do midSurfacPos on targetType: '%s'"%targetType) return False #Get the axis info axisToCheck = kws.pop('axisToCheck',False) if not axisToCheck: axisToCheck = [] up = dictionary.returnVectorToString(self._upVector) or False if not up: raise StandardError,"SnapFactory>>> must have up vector for midSurfaceSnap: %s"%self._upVector for a in ['x','y','z']: if a != up[0]: axisToCheck.append(a) if not axisToCheck: raise StandardError,"SnapFactory>>> couldn't find any axis to do" #i_locObj = self.i_obj.doLoc()#Get our position loc #log.debug(axisToCheck) pos = RayCast.findMeshMidPointFromObject(i_target.mNode, self.i_obj.mNode, axisToCheck=axisToCheck,**kws) #i_locObj.delete() else: pos = i_target.getPosition(True) if pos: if self.i_obj.isComponent(): if self.b_softSelection:#Only need to do this if soft select is on mc.softSelect(softSelectEnabled = True) mc.select(self.i_obj.getComponent()) mc.move (pos[0],pos[1],pos[2],rpr=True) mc.select(cl=True) else: mc.move (pos[0],pos[1],pos[2], self.i_obj.getComponent()) else: mc.move (pos[0],pos[1],pos[2], self.i_obj.mNode, rpr=True)
def buildColumn_main(self,parent,asScroll=False): """ Trying to put all this in here so it's insertable in other uis """ self._d_transformAttrFields = {} self._d_transformRows = {} self._d_transformCBs = {} self._mTransformTarget = False if asScroll: _inside = mUI.MelScrollLayout(parent,useTemplate = 'cgmUISubTemplate') else: _inside = mUI.MelColumnLayout(parent,useTemplate = 'cgmUISubTemplate') #>>>Objects Load Row --------------------------------------------------------------------------------------- _row_objLoad = mUI.MelHSingleStretchLayout(_inside,ut='cgmUITemplate',padding = 5) mUI.MelSpacer(_row_objLoad,w=10) mUI.MelLabel(_row_objLoad, l='Source:') uiTF_objLoad = mUI.MelLabel(_row_objLoad,ut='cgmUITemplate',l='', en=True) #self.uiPopUpMenu_dynChild = mUI.MelPopupMenu(_utf_objLoad,button = 1) #mc.menuItem(self.uiPopUpMenu_dynChild,l='Select',c=lambda *a:(self._mNode.select())) self.uiTF_objLoad = uiTF_objLoad cgmUI.add_Button(_row_objLoad,'<<', cgmGEN.Callback(uiFunc_load_selected,self), "Load first selected object.") cgmUI.add_Button(_row_objLoad,'Update', cgmGEN.Callback(uiFunc_updateFields,self), "Update with current values.") cgmUI.add_Button(_row_objLoad,'Ctxt', cgmGEN.Callback(uiFunc_getTargets,self), "Get Targets") _row_objLoad.setStretchWidget(uiTF_objLoad) mUI.MelSpacer(_row_objLoad,w=10) """ _row_objLoad.layout() #>>>Report --------------------------------------------------------------------------------------- _row_report = mUI.MelHLayout(_inside ,ut='cgmUIInstructionsTemplate',h=20) self.uiField_report = mUI.MelLabel(_row_report, bgc = SHARED._d_gui_state_colors.get('help'), label = '...', h=20) _row_report.layout() """ #buildRow_space(self,_inside,'source',__l_spaceModes) #buildRow_space(self,_inside,'targets',__l_spaceModes) buildRow_lockSource(self,_inside) buildRow_tweak(self, _inside) mc.setParent(_inside) cgmUI.add_SectionBreak() mc.setParent(_inside) mc.text('VALUES',align = 'center',bgc = cgmUI.guiBackgroundColor) #cgmUI.add_Header('Values') cgmUI.add_SectionBreak() buildRow_vector(self,_inside,'translate') buildRow_vector(self,_inside,'position') buildRow_vector(self,_inside,'rotate') buildRow_vector(self,_inside,'orient') buildRow_vector(self,_inside,'rotateAxis') buildRow_vector(self,_inside,'jointOrient') buildRow_vector(self,_inside,'scale') buildRow_vector(self,_inside,'scaleLossy',tweak=False) buildRow_vector(self,_inside,'scalePivot',tweak=False) uiFunc_load_selected(self) return _inside