def tdTab(myPath, myDirs, parent): ''' Depending upon how many directory are located in the folder, create tabs for each one. ''' print("Create tabs") # On the nuke side this will be the folder that contain the render passes. cmds.setParent(parent) global tabs, mainTab tabs = [] mainTab = cmds.tabLayout(w=winWidth, h=winWidth, p=parent) # Just create the tabs for myDir in myDirs: # tabMainCol = cmds.columnLayout() tabMainCol = cmds.rowColumnLayout( nc=1, w=winWidth, h=winHeight, cw=[1,winWidth+10]) # tabMainCol = cmds.formLayout() #cmds.text(l="This is tab: %s" %myDir, w=winWidth, h=winHeight) # Call frameLayout function framePath = os.path.join(myPath, myDir) frameDirs = os.walk(framePath).next()[1] #print(framePath) #print(frameDirs) tdFrame(framePath, frameDirs, tabMainCol ) tabs.append(tabMainCol) cmds.tabLayout(mainTab, e=True, tl=[tabMainCol, myDir]) cmds.setParent(mainTab) cmds.setParent(parent) return tabs
def simpleTemplateEditorAddCallbacks( *args): currTab = str(cmds.tabLayout(tabs1,q=1, st=1)) currColChld = cmds.columnLayout(str(cmds.tabLayout(tabs1,q=1, st=1)),q=1, ca=1) curList = "" for temp in currColChld: if cmds.textScrollList(temp, exists= True): curList= temp tempSelAttrs = cmds.textScrollList(curList, q=1, si= True) tempSelIndAttrs = cmds.textScrollList(curList, q=1, sii= True) if cmds.textScrollList(curList, q=1, nsi= True)!=0: result = cmds.promptDialog(title='Add Callback', message='Enter The Callback command for the selected attributes:',button=['OK', 'Cancel'],defaultButton='OK', cancelButton='Cancel', dismissString='Cancel') if result == 'OK': text = str(cmds.promptDialog(query=True, text= True)) if text != "": for tempAttrI in tempSelIndAttrs: cmds.textScrollList(curList, e=1, sii=tempAttrI) tempAttrs = cmds.textScrollList(curList, q=1, si= True) tempAttr = tempAttrs[0] tempAttrStrp = tempAttr.replace(" ","") tempAttrStrp = tempAttrStrp.replace(" *","") dictCallbacks[currTab + "_" + tempAttrStrp] = text if (cmds.menuItem(verbMenuI, q=1, checkBox = True)) == True: print (' - Callback created for ' + tempAttrStrp + ' in view "' + currTab + '"') cmds.textScrollList(curList, e=1, rii=tempAttrI) cmds.textScrollList(curList, e=1, ap=[tempAttrI," " + tempAttrStrp+ " *"])
def buildMainLayout(self): '''Build the main part of the ui ''' tabs = mc.tabLayout() tab1 = mc.columnLayout(adj=True) mc.scrollLayout(cr=True) self.shelfLayout = mc.shelfLayout() self.refreshShelfLayout() mc.setParent(tabs) tab2 = mc.columnLayout(adj=True) mc.separator(height=8, style='none') mc.text('Select curve(s) to export. Multiple selected curves will be combined.') mc.text('Center and fit the curve in the viewport,') mc.text('and make sure nothing else is visible for best icon creation.') mc.separator(height=16, style='in') mc.button('Export Selected Curve', command=self.exportControl, annotation='Select a nurbsCurve to export.') mc.tabLayout( tabs, edit=True, tabLabel=((tab1, 'Import'), (tab2, 'Export') )) if not mc.shelfLayout(self.shelfLayout, query=True, numberOfChildren=True): mc.tabLayout( tabs, edit=True, selectTab=tab2)
def __init__(self) : # now we create a window ready to populate the components self.m_window = cmds.window( title='Flock The System', ) # create a layout form = cmds.formLayout() tabs = cmds.tabLayout(innerMarginWidth=10, innerMarginHeight=10) cmds.formLayout( form, edit=True, attachForm=((tabs, 'top', 0), (tabs, 'left', 0), (tabs, 'bottom', 0), (tabs, 'right', 0)) ) child1 = cmds.rowColumnLayout(numberOfColumns=1) #cmds.image( image='/home/i7867155/Desktop/Screenshot.png' ) cmds.intFieldGrp( numberOfFields=2, label='Start Frame', extraLabel='End Frame', value1=3, value2=3, ) #cmds.button( label='Update Flock', bgc=(1,0,0) ) #cmds.iconTextButton( style='iconOnly', image1='/home/i7867155/Desktop/Screenshot.png', command='click()' ) exportButton = cmds.button( label='Export/Update Curves', command='exportCurves()' ) cmds.setParent( tabs ) child2 = cmds.rowColumnLayout(numberOfColumns=2) cmds.button(width=50) cmds.button() cmds.button() cmds.setParent( tabs ) cmds.tabLayout( tabs, edit=True, tabLabel=((child1, 'Pre-flock'), (child2, 'Post-flock')) ) # finally show the window cmds.showWindow( self.m_window )
def makeAppFolders( tabLayout, title, cmdType, folderPath ): childArr = cmds.tabLayout( tabLayout, q=1, ca=1 ) tabLabels = cmds.tabLayout( tabLayout, q=1, tabLabel=1 ) appFolder = folderPath+'/'+ title deletePath( appFolder ) if cmdType == 'python': initPath = appFolder+'/__init__.py' makeFile( initPath ) for i in range( len( childArr ) ): childUi = childArr[i] tabLabel = tabLabels[i].replace( ' ', '_' ) srcFile = appFolder+'/'+tabLabel+'.py' makeFile( srcFile ) f = open( srcFile, 'w' ) f.write( cmds.scrollField( childUi, q=1, tx=1 ) ) f.close() elif cmdType == 'mel': for i in range( len( childArr ) ): childUi = childArr[i] tabLabel = tabLabels[i].replace( ' ', '_' ) srcFile = appFolder+'/'+tabLabel+'.mel' makeFile( srcFile ) f = open( srcFile, 'w' ) f.write( cmds.scrollField( childUi, q=1, tx=1 ) ) f.close()
def _saveTab(self): ''' The name of the tab The frames included the attributes for each frame ''' # Prompt where to save the file. # pack data currTab = cmds.tabLayout( self.mainTab, q=True, selectTab=True) tabIndex = cmds.tabLayout( self.mainTab, q=True, selectTabIndex=True) - 1 # tab index are 1 based. tabLabels = cmds.tabLayout( self.mainTab, q=True, tl=True ) tabName = tabLabels[tabIndex] frameNames = [] frames = {} for frameInfo in self.tabs[self.tabNames[tabIndex]]: frameNames.append([frameInfo.frameName, frameInfo.mainLayout]) frames[frameInfo.mainLayout] = frameInfo.attrs path = cmds.fileDialog(mode=1) if(path): fileInfo = open( path, "w" ) pickle.dump( tabName, fileInfo ) pickle.dump( frameNames, fileInfo ) pickle.dump( frames, fileInfo ) fileInfo.close() else: print("Save Cancelled.")
def savepose(*args): alltab = mc.tabLayout('tabs',q=1,st=1) chktabs = mc.tabLayout ('Animation',q=1,st=1) chktabs1= mc.tabLayout ('Poses',q=1,st=1) sel_obj = mc.ls(sl=1) if len(sel_obj)==0: mc.confirmDialog (title = "Error",message ="Nothing is selected",button= "OK",defaultButton ="Yes") else : if alltab=='Animation': if chktabs=='': mc.confirmDialog (title = "Error",message ="Please create a tab first",button= "OK",defaultButton ="Yes") else: Animname = mc.confirmDialog( title='Frame chk', message='Pls chk : Start frame and End frame ', button=['OK', 'Cancel'], defaultButton='OK', cancelButton='Cancel', dismissString='Cancel') if Animname =='OK': Animposecam(sel_obj) else: if chktabs1=='': mc.confirmDialog (title = "Error",message ="Please create a tab first",button= "OK",defaultButton ="Yes") else: Animposecam(sel_obj)
def ModuleTemplateBuilderUI(): MTB_UI='MTB_UI' if cmds.window(MTB_UI,q=1,ex=1 ): cmds.deleteUI(MTB_UI) cmds.window(MTB_UI,t='creatureRigs: Modules Builder ' +__version__,mb=1) cmds.menu(l='File') cmds.menuItem(l='install shelf button',c='') cmds.menuItem(label ="Close",c ="") cmds.menu(l='Edit') cmds.menuItem(l='Toggle Selectable',c='') cmds.menu(l='Tools') cmds.menuItem(l='Auto Rigger',c='') cmds.menuItem(l='Curve Utilities',c='') cmds.menu(l='Help') cmds.menuItem(label ="How to use",c ="") cmds.menuItem(label ="Close",c ="") cmds.menuItem(label ='') form = cmds.formLayout() tabs = cmds.tabLayout(innerMarginWidth=5, innerMarginHeight=5) #--------------------- cmds.formLayout( form, edit=True, attachForm=((tabs, 'top', 0), (tabs, 'left', 0), (tabs, 'bottom', 0),(tabs, 'right', 0)) ) child1 = cmds.rowColumnLayout(numberOfColumns=1) createSkeletonLayout() cmds.setParent( '..' ) child2 = cmds.rowColumnLayout(numberOfColumns=1) createRigLayout() cmds.setParent( '..' ) cmds.tabLayout( tabs, edit=True, tabLabel=((child1, ' Create Skeleton '), (child2, ' Create Rig '))) cmds.showWindow(MTB_UI)
def duplicateSpecialZ(*args): if cmds.window("dupSpecialZ", exists=True): cmds.deleteUI("dupSpecialZ") cmds.window("dupSpecialZ",title="Jelly Special Z",mnb=True, mxb=False,w=250,h=130,sizeable=False) form = cmds.formLayout() tabs = cmds.tabLayout(w=250, h=100, bgc = (0.3,0.3,0.3), innerMarginWidth=10, innerMarginHeight=5) cmds.formLayout( form, edit=True, attachForm=((tabs, 'top', 0), (tabs, 'left', 0), (tabs, 'bottom', 0), (tabs, 'right', 0)) ) child1=cmds.columnLayout( columnAttach=('both', 0), rowSpacing=1,columnWidth=250,h=110) cmds.text(label="Permanent Distance", bgc=(0.5,0.7,0.5)) cmds.text(label="Number of copies", align='left') cmds.textField('copiesZper',w=200) cmds.text(label="Translate", align='left') cmds.textField('translateZper',w=200) cmds.button(label="Duplicate", bgc=(0.5,0.7,0.5),command=translateZpermanent) cmds.setParent( '..' ) child2=cmds.columnLayout( columnAttach=('both', 0), rowSpacing=1,columnWidth=250,h=110) cmds.text(label="Increasing Distance", bgc=(0.5,0.3,0.5)) cmds.text(label="Number of copies", align='left') cmds.textField('copiesZinc',w=200) cmds.text(label="Translate", align='left') cmds.textField('translateZinc',w=200) cmds.button(label="Duplicate",bgc=(0.5,0.3,0.5),command=trasnlateZincreasing) cmds.setParent( '..' ) cmds.tabLayout( tabs, edit=True, tabLabel=((child1, 'Permanent Distance'),(child2,'Increasing Distance'))) cmds.setParent( '..' ) cmds.showWindow()
def _addTab(self, name): ''' Adds an additional tab to the system. ''' # Make sure that a tab exists! # scroll = cmds.scrollLayout( h=450, parent=self.mainTab ) col = cmds.columnLayout(parent=self.mainTab) frm = cmds.formLayout( w=450 ) path = os.path.split(__file__)[0] fullPath = lambda x : os.path.join( path, "icons", x ) btn1 = cmds.symbolButton( image=fullPath('plus_16b.xpm'), h=20, command=Callback(self.addFramePrompt)) # self._attrGUI ) btn2 = cmds.symbolButton( image=fullPath('delete_16b.xpm'), h=20, command=Callback(self._removeTab ))#command=self._removeAttrs ) btn3 = cmds.symbolButton( image=fullPath('save_16.xpm'), h=20, command=Callback(self._saveTab)) # self._attrGUI ) txt = cmds.text( l="" ) cmds.formLayout( frm, e=1, af=[[btn1, "top", 5],[btn1, "left", 5], [btn2, "top", 5],[btn3, "top", 5], [txt, "top", 5], [txt, "right", 0]], ac=[[btn2, "left", 0, btn1],[btn3, "left", 0, btn2]]) cmds.setParent( col ) # frm = cmds.formLayout( parent=self.mainTab, w=300, h=300 ) cmds.tabLayout( self.mainTab, e=1, tl=[col, name]) self.tabs[col] = [] self.tabNames.append(col) return col
def deletetab(*args): alltabs = mc.tabLayout ('tabs',q=1,st=1) chktabs = mc.tabLayout ('Animation',q=1,st=1) chktabs1= mc.tabLayout ('Poses',q=1,st=1) if alltabs == 'Animation': seltab = mc.tabLayout('Animation',q=1,st=1) mc.deleteUI(seltab) Del_tab=savepathini+'Savepose/Animation/'+seltab Del1_in=Del_tab+'/' list_in=mc.getFileList(fld=Del1_in) for i in range(len(list_in)): mc.sysFile(Del1_in+'/'+list_in[i],delete=1) mc.sysFile(Del_tab,red=1) if chktabs=='': mc.confirmDialog (title='Error',message='No tabs to delete', button='OK',defaultButton='Yes') # else : # return else : seltab = mc.tabLayout('Poses',q=1,st=1) mc.deleteUI(seltab) Del_tab=savepathini+'Savepose/Poses/'+seltab Del1_in=Del_tab+'/' list_in=mc.getFileList(fld=Del1_in) for i in range(len(list_in)): mc.sysFile(Del1_in+'/'+list_in[i],delete=1) mc.sysFile(Del_tab,red=1) if chktabs1=='': mc.confirmDialog (title='Error',message='No tabs to delete', button='OK',defaultButton='Yes') else : return
def uvSetOptions(self): window_name = "uvSetOptions" if cmds.window(window_name, q=True, exists=True): cmds.deleteUI(window_name) self.optionWindow = cmds.window(window_name, title="Lightmap Options") tabs = cmds.tabLayout(innerMarginWidth=5, innerMarginHeight=5) standardLayout = cmds.columnLayout(parent=self.optionWindow, adj=True) self.uvSetChoice = cmds.optionMenuGrp(label="Source UV Set") for uvSet in self.uvList: #lists selections' uv sets cmds.menuItem(label=uvSet) self.lightmapBox = cmds.textFieldGrp(label="New UV Set Name", text=self.lightmap) self.presetSelect = cmds.optionMenuGrp(self.presetSelect, label="Spacing Presets", cc=self.presetValue) for preset in self.spacingPresets: cmds.menuItem(label=preset) cmds.floatSliderGrp(self.shellSpacingSlider, label="Percentage Space:", v=3.200, step=0.001, max=5.000, field=True) print cmds.floatSliderGrp(self.shellSpacingSlider, q=True, v=True) cmds.button(label="Generate Lightmap", width=200, c=self.copyAndLayoutCheck) advancedLayout = cmds.columnLayout(parent=self.optionWindow, adj=True) layoutObjectsCollection = cmds.radioCollection() #radial button, creates new layout layoutObjectsCollection_layout = cmds.columnLayout() cmds.text(label = "Layout objects:", p=layoutObjectsCollection_layout) rbl = cmds.radioButton(label="Per object(overlapping)", p=layoutObjectsCollection_layout, onc=lambda *args: self.perObjectLayout(0)) rbl = cmds.radioButton(label="Single or multiple objects(non-overlapping)", p=layoutObjectsCollection_layout, onc=lambda *args: self.perObjectLayout(1), sl=True ) prescaleCollection = cmds.radioCollection() #radial button, creates new layout prescaleCollection_layout = cmds.columnLayout() cmds.text(label = "Prescale:", p=prescaleCollection_layout) rbl = cmds.radioButton(label="None", p=prescaleCollection_layout, onc=lambda *args: self.prescaleLayout(0)) rbl = cmds.radioButton(label="Object", p=prescaleCollection_layout, onc=lambda *args: self.prescaleLayout(1)) rbl = cmds.radioButton(label="World", p=prescaleCollection_layout, onc=lambda *args: self.prescaleLayout(2), sl=True) collection = cmds.radioCollection() #radial button, creates new layout collection_layout = cmds.columnLayout() cmds.text(label = "Shell Layout:", p=collection_layout) rbl = cmds.radioButton(label="Into region", p=collection_layout, onc=lambda *args: self.shellLayout(0), sl=True) rbl = cmds.radioButton(label="Along U", p=collection_layout, onc=lambda *args: self.shellLayout(1)) rbl = cmds.radioButton(label="None", p=collection_layout, onc=lambda *args: self.shellLayout(2)) collection = cmds.radioCollection() #radial button, creates new layout collection_layout = cmds.columnLayout() cmds.text(label = "Scale:", p=collection_layout) rbl = cmds.radioButton(label="None", p=collection_layout, onc=lambda *args: self.scaleLayout(0)) rbl = cmds.radioButton(label="Uniform", p=collection_layout, onc=lambda *args: self.scaleLayout(1), sl=True) rbl = cmds.radioButton(label="Stretch", p=collection_layout, onc=lambda *args: self.scaleLayout(2)) rotateCollection = cmds.radioCollection() #radial button, creates new layout rotateCollection_layout = cmds.columnLayout() cmds.text(label = "Rotate:", p=rotateCollection_layout) rbl = cmds.radioButton(label="None", p=rotateCollection_layout, onc=lambda *args: self.rotationLayout(0)) rbl = cmds.radioButton(label="90 degrees", p=rotateCollection_layout, onc=lambda *args: self.rotationLayout(1), sl=True) rbl = cmds.radioButton(label="Free", p=rotateCollection_layout, onc=lambda *args: self.rotationLayout(2)) cmds.tabLayout( tabs, edit=True, tabLabel=((standardLayout, 'General'), (advancedLayout, 'Advanced')) ) cmds.showWindow(self.optionWindow)
def mainWindow(configData, assetsList, modules): layoutWidth = 450 #check if the window already exists, if it does delete it. if cmds.window( 'pipeline', exists = True ): cmds.deleteUI( 'pipeline' ) cmds.window( 'pipeline' ) # create the base layouts for the UI form = cmds.formLayout( 'pipeline_mainFormLayout' ) tabs = cmds.tabLayout('pipeline_mainTabsLayout', innerMarginWidth=5, innerMarginHeight=5) cmds.formLayout( form, edit=True, attachForm=((tabs, 'top', 0), (tabs, 'left', 0), (tabs, 'bottom', 0), (tabs, 'right', 0)) ) # tab one contents start here tabOne = cmds.scrollLayout( horizontalScrollBarThickness=16, verticalScrollBarThickness=16) cmds.rowColumnLayout( 'pipeline_TabOne', width = layoutWidth, numberOfColumns = 1 ) cmds.text( 'pipeline_tabOne_heading', label = 'manage pipline here' ) # use the module names to create the work flow catagories for module in modules: # becuase the name of hte module is a string, use __import__ method to import it. currentModule = __import__(module) reload(currentModule) #based of the setting in config, create the module or not if module + '=True' in configData: currentModule.FMlayout(layoutWidth,configData,assetsList) cmds.setParent( '..' ) if module + '=False' in configData: currentModule.disabledMessage() cmds.setParent('..'), cmds.setParent('..') # tab two starts here, it contains the options from the config file tabTwo = cmds.rowColumnLayout( width = layoutWidth, numberOfColumns = 1 ) #cmds.text( label = 'This is intenationally blank.' ) cmds.text( label = '' ) # loop over the config data, creating relevant checkboxes and textfields for data in configData: dataName, dataType, property = pipe_func.findDataType(data) #print dataName if dataType == 'booleanData': if property == 'True': propertyValue = True if property == 'False': propertyValue = False cmds.checkBox( dataName + 'CB', label = dataName, value = propertyValue) if dataType == 'string': cmds.text( label = dataName ) cmds.textField( dataName + 'TF', text = property, width = (layoutWidth -100) ) # the save button goes here cmds.button( label = 'Save settings', command = lambda arg : pipe_func.saveOptionsSettings(configData) ) cmds.setParent('..'), cmds.setParent('..') # tab names cmds.tabLayout( tabs, edit=True, tabLabel=((tabOne, 'pipeline'), (tabTwo, 'Options')) ) # This line docks the window as tool palette or utility window, so it sits nicey nice at the side if cmds.dockControl( 'pipeline', exists = True ): cmds.deleteUI( 'pipeline' ) cmds.dockControl( 'pipeline', label = 'Fire Monkeys Pipline Manager', area='right', content='pipeline', allowedArea='right' )
def __init__(self): self.moduleInstance = None self.deleteSymmetryMoveExpressions() #store UI elements in a dictionary self.UIElements = {} if cmds.window("blueprint_UI_window", exists=True): cmds.deleteUI("blueprint_UI_window") cmds.windowPref( "blueprint_UI_window", remove=True ) windowWidth = 400 windowHeight = 598 self.UIElements ["window"] = cmds.window("blueprint_UI_window", width=windowWidth, height=windowHeight, title="Blueprint Module UI", sizeable = True) self.UIElements["topLevelColumn"] = cmds.columnLayout (adjustableColumn=True, columnAlign="center") #Setup taps tabHeight = 500 self.UIElements["tabs"] = cmds.tabLayout(height=tabHeight,width=windowWidth, innerMarginWidth=5, innerMarginHeight=5) tabWidth = cmds.tabLayout(self.UIElements["tabs"], q=True, width=True) self.scrollWidth = tabWidth - 40 self.initialiseModuleTab(tabHeight,tabWidth) cmds.setParent(self.UIElements["tabs"]) self.initialiseTemplatesTab(tabHeight, tabWidth) scenePublished = cmds.objExists('Scene_Published') sceneUnlocked = not cmds.objExists('Scene_Locked') and not scenePublished cmds.tabLayout(self.UIElements["tabs"], edit=True, tabLabelIndex=([1,"Modules"],[2,'Templates']),enable=sceneUnlocked) cmds.setParent(self.UIElements['topLevelColumn']) self.UIElements['lockPublishColumn'] = cmds.columnLayout(adj=True,columnAlign='center',rs=3) cmds.separator() self.UIElements['lockBtn'] = cmds.button(label='Lock', c=self.lock, enable=sceneUnlocked) cmds.separator() self.UIElements['publishBtn'] = cmds.button(label='Publish',enable=not sceneUnlocked and not scenePublished, c=self.publish) cmds.separator() #Display window cmds.showWindow(self.UIElements["window"]) self.createScriptJob()
def __init__( self ): window_name = 'fissureToolWindow' window_width = 200 window_height = 200 if cmds.window( window_name, exists = True, q = True ): cmds.deleteUI( window_name ) cmds.window( window_name, title = 'Fissure Tool {0}'.format( VERSION ), widthHeight = ( window_width, window_height ) ) form = cmds.formLayout() tabs = cmds.tabLayout( innerMarginWidth = 5, innerMarginHeight = 5 ) cmds.formLayout( form, edit = True, attachForm = ( ( tabs, 'top', 0 ), ( tabs, 'left', 0 ), ( tabs, 'bottom', 0 ), ( tabs, 'right', 0 ) ) ) # Crack Row crack_row = cmds.rowColumnLayout( numberOfColumns = 1 ) cmds.separator( style = 'none', height = 20 ) cmds.text( label = 'Crack Pieces' ) self.crack_float = cmds.floatField( value = 50, precision = 0 ) cmds.button( l = 'Crack Mesh', w = window_width, c = self.run_crack_obj ) cmds.separator( height = 40, style = 'in' ) cmds.button( l = 'Create Plane Rig', w = window_width, c = self.run_create_plane_rig ) cmds.button( l = 'Attach Plane Rig', w = window_width, c = self.run_attach_plane_rig ) cmds.separator( height = 40, style = 'in' ) cmds.button( l = 'Create Cluster', w = window_width, c = self.run_create_cluster ) cmds.setParent( '..' ) # Simulation Row sim_row = cmds.rowColumnLayout( numberOfColumns = 1 ) cmds.separator( style = 'none', height = 20 ) cmds.text( label = 'Gravity Magnitude' ) self.magnitude_float = cmds.floatField( value = 50, precision = 2 ) cmds.button( l = 'Add Rigid Body', w = window_width, c = self.run_add_rigid_body ) cmds.separator( height = 40, style = 'in' ) cmds.button( l = 'Add Crack Distance', w = window_width, c = self.run_create_crack_distance ) cmds.button( l = 'Run Crack Distance', w = window_width, c = self.run_build_crack_distance ) cmds.separator( height = 40, style = 'in' ) cmds.button( l = 'Bake Simulation', w = window_width, c = self.run_bake_sim ) cmds.setParent( '..' ) # Export Row export_row = cmds.rowColumnLayout( numberOfColumns = 1 ) cmds.separator( style = 'none', height = 20 ) cmds.button( l = 'Convert to game skin', w = window_width, c = self.run_convert_to_game_skin ) cmds.separator( height = 40, style = 'in' ) cmds.button( l = 'Export FBX Mesh', w = window_width ) cmds.button( l = 'Export FBX Skin', w = window_width ) cmds.button( l = 'Export FBX Animation', w = window_width ) cmds.setParent( '..' ) cmds.tabLayout( tabs, edit = True, tabLabel = ( ( crack_row, 'Crack' ), ( sim_row, 'Simulation' ), ( export_row, 'Export' ) ) ) cmds.showWindow()
def createUploadWindow(): #---------------------------------------------以下窗体显示部分------------------------------------------ uploadCacheWindow = cmds.window(title = "Upload Cache", iconName = "UC", widthHeight = (420, 160)) uploadForm = cmds.formLayout() #------------------以下为标签的内容--------------------- tabs = cmds.tabLayout(innerMarginWidth=5, innerMarginHeight=5) #标签1 child1 = cmds.rowColumnLayout(numberOfColumns=2) chlid1Form = cmds.formLayout() uCOptionMenu = cmds.optionMenu(label = "Project Name: ") projectNameList = getProjectName() #添加optionMenu的项 for projectName in projectNameList: cmds.menuItem(label = projectName) tFolder = getUploadDir(uCOptionMenu) #拿到tFolder uploadTextRowLayout = cmds.rowColumnLayout(numberOfColumns=2, columnAttach=(1, 'right', 0), columnWidth=[(1, 88), (2, 280)], rowSpacing = (1, 4)) uploadDirText = cmds.text(label="Upload Directory: ") uploadDirTextField = cmds.textField(text = tFolder, editable = False) cmds.setParent("..") cmds.formLayout(chlid1Form, edit=True, attachForm=[(uCOptionMenu, "top", 6), (uCOptionMenu, "left", 6), (uCOptionMenu, "right", 4), (uploadTextRowLayout, "left", 4), (uploadTextRowLayout, "bottom", 10), (uploadTextRowLayout, "right", 4)], attachControl=[(uploadTextRowLayout, "top", 12, uCOptionMenu)] ) cmds.setParent( '..' ) cmds.setParent( '..' ) #标签2 child2 = cmds.rowColumnLayout(numberOfColumns=2) chlid2Form = cmds.formLayout() tFolder = "" chlid2TextFBG = cmds.textFieldButtonGrp(label = "Upload Directory: ", columnWidth = [(1, 90),(2, 260),(3,80)], text = tFolder, editable = False, buttonLabel = "brower") browerNoticeText = cmds.text("Please Select Project Name!") cmds.formLayout(chlid2Form, edit=True, attachForm=[(chlid2TextFBG, "top", 6), (chlid2TextFBG, "left", 0), (chlid2TextFBG, "right", 0), (browerNoticeText, "left", 4), (browerNoticeText, "bottom", 10), (browerNoticeText, "right", 4)]) cmds.setParent( '..' ) cmds.setParent( '..' ) cmds.tabLayout(tabs, edit=True, tabLabel=((child1, "Basic"), (child2, "Advanced")) ) cmds.setParent( '..' ) #----------------以下为button的内容----------------- uCButtonRowLayout = cmds.rowLayout(numberOfColumns = 2, columnAttach = [(1, "right", 0),(2, "right", 0)], columnWidth=[(1, 280), (2, 78)]) #cmds.button(label = "Upload", width = 75, command = 'clothAndHair.chMain.otherWinCmd.doUploadCache(\"' + uCOptionMenu + '\", \"' + uploadCacheWindow+'\")') uploadButton = cmds.button(label = "Upload", width = 75) closeButton = cmds.button(label = "Close", width = 75) cmds.setParent("..") cmds.formLayout(uploadForm, edit=True, attachForm=[(tabs, "top", 4), (tabs, "left", 4), (tabs, "bottom", 50), (tabs, "right", 4), (uCButtonRowLayout, "bottom", 12),(uCButtonRowLayout, "left", 52), (uCButtonRowLayout, "right", 4)], attachControl=[(uCButtonRowLayout, "top", 12, tabs)] ) cmds.showWindow(uploadCacheWindow) #---------------------------------------------以下窗体指令部分------------------------------------------ cmds.optionMenu(uCOptionMenu, edit = True, changeCommand = (lambda x:changeProject(uploadDirTextField, uCOptionMenu))) cmds.textFieldButtonGrp(chlid2TextFBG, edit = True, buttonCommand = (lambda:getUploadDirAdv(chlid2TextFBG))) cmds.button(uploadButton, edit = True, command = lambda x:doUploadCache(tabs , child1 , child2 , uploadDirTextField , chlid2TextFBG , uploadCacheWindow )) cmds.button(closeButton, edit = True, command=('cmds.deleteUI(\"' + uploadCacheWindow + '\", window=True)'))
def drawTweakTabs(self): mainTl = self.ui['tabLayout'] tabs = cmds.tabLayout(mainTl, q=True, childArray=True) labels = cmds.tabLayout(mainTl, q=True, tabLabel=True) for twkLst in self.tweaks: # search tabs for this tweak list try: idx = labels.index(twkLst) # delete content if layout is available col = tabs[idx] content = cmds.columnLayout(col, q=True, childArray=True) if content: cmds.deleteUI(content) # or create a new one except: col = cmds.columnLayout(adjustableColumn=True, parent=mainTl) cmds.tabLayout(mainTl, edit=True, tabLabel=((col, twkLst))) for typ in self.tweaks[twkLst]: if not self.tweaks[twkLst][typ]: continue for item in self.tweaks[twkLst][typ]: if typ == 'hotkeys': keyLabel = hotkey.makeKeyLabel(self.tweaks[twkLst][typ][item]) checkValue = 'hotkeyBackups' in self.prefsDict and keyLabel in self.prefsDict['hotkeyBackups'] # a collapsable frame with checkbox in front cmds.rowLayout(numberOfColumns=2, parent=col, adjustableColumn=2) cmds.checkBox(label='', w=20, value=checkValue, onCommand=partial(hotkey.setup, item, self.tweaks[twkLst]['hotkeys'][item]), offCommand=partial(hotkey.reset, item, self.tweaks[twkLst]['hotkeys'][item], keyLabel)) cmds.frameLayout(label=('%s (%s)') % (item, keyLabel), collapsable=True, collapse=True, borderStyle='in') cmds.columnLayout(adjustableColumn=True) # first version: write everything in textFields: for attr in self.tweaks[twkLst][typ][item]: cmds.textFieldGrp(label='%s:' % attr, text=self.tweaks[twkLst][typ][item][attr], cw=(1, LABEL_W), adjustableColumn=2) key = self.tweaks[twkLst][typ][item]['key'] ctl = 'ctl' in self.tweaks[twkLst][typ][item] alt = 'alt' in self.tweaks[twkLst][typ][item] data = hotkey.gather(key, ctl, alt) # show the override item when any hotkey is already found if data: # and if set by us and actually overrides something if checkValue: if self.prefsDict['hotkeyBackups'][keyLabel]: overrideLabel = self.prefsDict['hotkeyBackups'][keyLabel]['name'] else: overrideLabel = None else: overrideLabel = data['name'] if overrideLabel: cmds.textFieldGrp(label='overrides:', text=overrideLabel, bgc=(0.4, 0, 0), cw=(1, LABEL_W), adjustableColumn=2)
def createUI(): preUI() mc.window( 'gitMayaWin', title="Git Tools", iconName='', widthHeight=(200, 55) ) mc.menuBarLayout() mc.menu( label='File' ) mc.menuItem( label='Create Repo', c=lambda *args: createRepo() ) mc.setParent( '..' ) mc.columnLayout( adjustableColumn=True ) mc.rowLayout( numberOfColumns=3, columnWidth3=(80, 80, 80)) mc.button( label='Create Repo', w=80, h=80) mc.button( label='Clone Repo', w=80, h=80) mc.setParent( '..' ) mc.separator(h=10, style='none') mc.textFieldButtonGrp( 'repoPath', label='Repo Path', text='', buttonLabel='Browse', bc=lambda *args: getFolder() ) mc.button( label='Refresh', c=lambda *args: initRepo() ) mc.separator(h=10, style='none') mc.tabLayout(innerMarginWidth=5, innerMarginHeight=5) mc.columnLayout( 'Files', adjustableColumn=True ) mc.rowColumnLayout(nc=5) mc.separator(h=20, style='none') mc.text(l='Working Copy Changes') mc.separator(h=20, style='none') mc.separator(h=20, style='none') mc.text(l='Staged Changes') mc.columnLayout( 'workingChangesColor', adjustableColumn=True) mc.setParent( '..' ) mc.textScrollList( 'workingChanges', numberOfRows=16, allowMultiSelection=True) mc.columnLayout( adjustableColumn=True ) mc.button( label='>>', c=lambda *args: addChanged()) mc.button( label='>' ) mc.separator(h=30, style='none') mc.button( label='<', c=lambda *args: remSelected()) mc.button( label='<<' ) mc.setParent( '..' ) mc.columnLayout( 'stagedChangesColor', adjustableColumn=True ) mc.setParent( '..' ) mc.textScrollList( 'stagedChanges', numberOfRows=16, allowMultiSelection=True) mc.setParent( '..' ) mc.textFieldButtonGrp( 'commitMessage', label='Message', text='', buttonLabel='Commit', bc=lambda *args: doCommit() ) mc.separator(h=20) mc.setParent( '..' ) mc.columnLayout( 'History', adjustableColumn=True ) mc.intFieldGrp( 'commitCount', numberOfFields=1, label='Number of Commits', value1=10, cc=lambda *args: getCommits()) mc.scrollLayout(h=250, horizontalScrollBarThickness=16, verticalScrollBarThickness=16) mc.rowColumnLayout( 'commitsGrid', numberOfColumns=2, cw=([1,450],[2,150]) ) mc.setParent( '..' ) mc.setParent( '..' ) mc.text(l='Commited Changes') mc.textScrollList( 'commitChanges', numberOfRows=16, allowMultiSelection=True) mc.showWindow( 'gitMayaWin' ) postUI()
def zbw_mmUI(): """the UI for the script""" if (cmds.window('`UI', exists=True)): cmds.deleteUI('zbw_messageMapperUI', window=True) cmds.windowPref('zbw_messageMapperUI', remove=True) window=cmds.window('zbw_messageMapperUI', widthHeight=(600,400), title='zbw_messageMapper') cmds.tabLayout(h=400) cmds.columnLayout("mmAddNewConnections", h=400) #2nd small column for the persistant UI cmds.columnLayout(w=400, h=100) cmds.textFieldButtonGrp('zbw_tfbg_baseObj', cal=(1, "left"), cw3=(75, 200, 75), label="base object", w=400, bl="choose object", bc=partial(zbw_mmAddBase, "zbw_tfbg_baseObj", "clear")) #button to create new message/obj field groups cmds.separator(h=20, st="single") cmds.button(w=150, l="add new message attr/obj", c=zbw_mmAddMObjs) cmds.separator(h=20, st="single") cmds.setParent(u=True) cmds.rowColumnLayout("mmRCLayout", nc=2, co=(2, "left", 30)) #back up to the 2nd columnLayout cmds.setParent(u=True) cmds.separator(h=20, st="single") #create button to delete last pair of text fields cmds.button("deleteLastButton", w=150, bgc=(.5,0,0), l="delete last attr/obj pair", c=zbw_mmDeleteLast) cmds.separator(h=20, st="double") #button to do connect all the attr/messages cmds.button("createMessageButton", w=150, bgc=(0,.5,0), l="create messages", c=zbw_mmConnectM) #back up to the main column cmds.setParent(u=True) #back up to the tab cmds.setParent(u=True) #new tab cmds.columnLayout("existingMessages", w=600, h=400) #Here we add stuff to the second tab cmds.textFieldButtonGrp("mmListMessages", cal=(1, "left"), cw3=(75,200,75), label="baseObject", w=400, bl="choose object", bc=partial(zbw_mmAddBase,"mmListMessages", "noClear")) cmds.separator(h=20, st="double") #button to create list of message attrs cmds.button(w=200, l="list all message attr for base", bgc = (0,.5,0), c=partial(zbw_mmListCurrentMessages, "mmListMessages")) cmds.separator(h=20, st="double") cmds.text("rt-click on the attr or object to change the connection") cmds.separator(h=20, st="double") cmds.rowColumnLayout("mmRCTextLayout", w=600, nc=3, cw=[(1, 200),(2,290),(3,100)]) cmds.text("ATTR") cmds.text("OBJECT") cmds.text("DELETE") cmds.showWindow(window)
def addTab(self, tab): """ adds tab object to tab UI, creating it's ui and attaching to main window """ cmds.setParent(self.mainTabLayout) layout = tab.createUI(self.mainTabLayout) cmds.tabLayout( self.mainTabLayout, edit=True, tabLabel=((layout, tab.title())) ); tab.parentWindow = self self.tabs.append(tab) return tab
def cmdLoadBeforeSetting( pWindow, textField, tabLayout, radioCollection, packageFolderPath ): packageFolderPath = packageFolderPath.replace( '\\', '/' ) packageFolderName = packageFolderPath.split( '/' )[-1] codeNames = [] codePaths = [] codeTypeIndex = 0 for root, dirs, names in os.walk( packageFolderPath ): if not names: return None else: for name in names: codeName, extension = name.split( '.' ) if codeName == '__init__': continue if extension == 'mel': codeTypeIndex = 0 elif extension == 'py': codeTypeIndex = 1 else: continue codeNames.append( codeName ) codePaths.append( root+'/'+name ) break items = [] cmds.setParent( tabLayout ) mainCommandField = cmds.tabLayout( tabLayout, q=1, ca=1 )[0] uiCmdInst = uiCmd( pWindow ) for i in range( len( codeNames ) ): codeName = codeNames[i] codePath = codePaths[i] f = open( codePath, 'r' ) data = f.read() f.close() if codeName == 'MainCommand': scrollField = mainCommandField else: scrollField = uiCmdInst.addChild(tabLayout, codeName) cmds.scrollField( scrollField, e=1, tx=data ) cmds.setParent( '..' ) childItems = cmds.radioCollection( radioCollection, q=1, cia=1 ) cmds.radioCollection( radioCollection, e=1, sl=childItems[codeTypeIndex] ) cmds.textField( textField, e=1, tx=packageFolderName ) cmds.tabLayout( tabLayout, e=1, tabLabel=items )
def fkik_snap_build_ui( self ): self.get_globals() cmds.window( WINDOW_NAME, title = 'FKIK Snap Build {0}'.format( VERSION ), w = 500, h = 300 ) cmds.rowColumnLayout( 'main_column', numberOfRows = 1 ) cmds.rowColumnLayout( 'set_column', numberOfRows = 3 ) self.set_scroll = cmds.textScrollList( self.set_scroll_str, w = 150, h = 300, dcc = self.rename_set, selectCommand = self.load_set_data ) cmds.button( label = 'Add Set', c = self.add_set ) cmds.button( label = 'Remove Set', c = self.remove_set ) cmds.setParent( '..' ) form = cmds.formLayout() tabs = cmds.tabLayout( w = 500, h = 300 ) cmds.formLayout( form, edit = True, attachForm = ( ( tabs, 'top', 0 ), ( tabs, 'left', 0 ), ( tabs, 'bottom', 0 ), ( tabs, 'right', 0 ) ) ) set_objects_column = cmds.rowColumnLayout() cmds.rowColumnLayout( numberOfColumns = 4, columnWidth = [( 1, 25 ), ( 2, 200 ), ( 3, 50 ), ( 4, 200 )] ) self.object_order_scroll = cmds.textScrollList( self.object_number_str, allowMultiSelection = False, h = 300, selectCommand = functools.partial( self.obj_list_select, self.object_number_str ), dcc = self.change_obj_number ) self.object_name_scroll = cmds.textScrollList( self.object_name_str, allowMultiSelection = False, h = 300, selectCommand = functools.partial( self.obj_list_select, self.object_name_str ), dcc = functools.partial( self.select_obj, self.object_name_str ) ) self.object_connect_scroll = cmds.textScrollList( self.object_connect_str, allowMultiSelection = False, h = 300, selectCommand = functools.partial( self.obj_list_select, self.object_connect_str ), dcc = self.add_snap_obj ) self.object_snap_scroll = cmds.textScrollList( self.object_snap_str, allowMultiSelection = False, h = 300, selectCommand = functools.partial( self.obj_list_select, self.object_snap_str ), dcc = functools.partial( self.select_obj, self.object_snap_str ) ) cmds.setParent( '..' ) cmds.button( label = 'Add Selected Object', c = self.add_obj ) cmds.button( label = 'Remove Selected Object', c = self.remove_obj ) cmds.separator( height = 20, style = 'in' ) cmds.button( label = 'BUILD FKIK SNAP', c = self.build, bgc = [1, 1, 1] ) cmds.setParent( '..' ) set_connections_column = cmds.rowColumnLayout( numberOfColumns = 2 ) self.opposite_set_scroll = cmds.textScrollList( h = 300, w = 225 ) self.switch_scroll = cmds.textScrollList( h = 300, w = 225 ) cmds.button( label = 'Pick Opposite Set', c = self.sets_list_ui ) cmds.button( label = 'Add Selected FKIK Switch Attribute', c = self.add_switch ) cmds.setParent( '..' ) self.connected_set_scroll = cmds.tabLayout( tabs, edit = True, tabLabel = ( ( set_objects_column, 'Set Objects' ), ( set_connections_column, 'Opposite Set' ) ) ) self.load_ui() cmds.showWindow()
def createSkeletonLayout(): createSkeleton_tabs = cmds.tabLayout(innerMarginWidth=5, innerMarginHeight=5) #--------------------- createSkeleton_child1 = cmds.rowColumnLayout(numberOfColumns=1) modulesLayout() cmds.setParent( '..' ) createSkeleton_child2 = cmds.rowColumnLayout(numberOfColumns=1) templatesLayout() cmds.setParent( '..' ) cmds.tabLayout( createSkeleton_tabs, edit=True, tabLabel=((createSkeleton_child1, ' - MODULES - '),(createSkeleton_child2, ' - TEPLATES - ')))
def simpleTemplateEditorAddAttrs( *args): attrsList = cmds.textScrollList(txtScrl1, q=1, si=1) if attrsList==None: return currColChld = cmds.columnLayout(str(cmds.tabLayout(tabs1,q=1, st=1)),q=1, ca=1) curList = "" for temp in currColChld: if cmds.textScrollList(temp, exists= True): curList= temp for temp in attrsList: cmds.textScrollList(curList, e=1, append=(" " + temp)) if (cmds.menuItem(verbMenuI, q=1, checkBox = True)) == True: print (' - Added "' + temp + '" to the "' + str(cmds.tabLayout(tabs1,q=1, st=1)) +'" View ')
def _removeTab(self): currTab = cmds.tabLayout( self.mainTab, q=True, selectTab=True) tabIndex = cmds.tabLayout( self.mainTab, q=True, selectTabIndex=True) - 1 # tab index are 1 based. # Find list item for tab # Remove from list # Remove from dictionary # Remove ui print( "Deleting: %s %s" %(currTab, tabIndex)) print( self.tabNames ) print( self.tabs ) cmds.deleteUI(self.tabNames[tabIndex] ) del self.tabs[self.tabNames[tabIndex]] self.tabNames.pop(tabIndex)
def createUi(self, parent): self.mainLayout = cmds.formLayout(parent = parent) headerUiLayout = self.createHeaderUi() # create the top buttons cmds.setParent('..') self.mainTabLayout = cmds.tabLayout(changeCommand = self.onTabChange) self.nodeListLayout = NodeListLayout() # create the node list layout self.listLayoutId = self.nodeListLayout.getId() cmds.setParent('..') allShaders = cmds.columnLayout() cmds.button() cmds.setParent('..') allTextures = cmds.columnLayout() cmds.button() cmds.setParent('..') cmds.formLayout( self.mainLayout, edit = 1, width = self.toolbarWidth, attachForm = [ # (self.listLayoutId, 'left', 0), # (self.listLayoutId, 'right', 0), # (self.listLayoutId, 'bottom', 0), (self.mainTabLayout, 'left', 0), (self.mainTabLayout, 'right', 0), (self.mainTabLayout, 'bottom', 0), (headerUiLayout, 'left', 0), (headerUiLayout, 'right', 0), ], attachControl = [ (self.mainTabLayout, 'top', 0, headerUiLayout), # (self.listLayoutId, 'top', 0, headerUiLayout), ], ) cmds.tabLayout( self.mainTabLayout, edit = True, tabLabel = ( (self.listLayoutId, 'Inspector'), (allShaders, 'Shaders'), (allTextures, 'Textures'), ), ) self.updateUiOnSelectionChange(self.listLayoutId) self.sjSelChangeId = self.createScriptJob()
def spaceMatchUI(): if (cmds.window("spaceMatchWin", exists=True)): cmds.deleteUI("spaceMatchWin", window=True) widgets["window"] = cmds.window("spaceMatchWin", title="Space Matcher", w=250, h=300) widgets["mainLO"] = cmds.columnLayout() widgets["tabLO"] = cmds.tabLayout() widgets["getObjCLO"] = cmds.columnLayout() widgets["instruct"] = cmds.text("get obj, then attr, then space then do it") cmds.separator(h=10) #----------fill with selection automatically? widgets["objTFG"] = cmds.textFieldGrp(l="select obj", cw=([1,50],[2,150],[3,50]), cal=([1,"left"], [2,"left"],[3,"left"]), cc=clearList) widgets["matchObjButton"] = cmds.button(l="select object", c=partial(getObj, widgets["objTFG"])) cmds.separator(h=10) #-----------maybe here have it catch the selected obj by default #-----------and/or have a field for the attribute (default to "follow") widgets["getAttrButton"] = cmds.button(w=250, al="center", h=20, l="select enum space attr from obj", bgc= (.5, .5, 0), c=getAttr) #-----------when the attr is selected list the attrs automagically, widgets["spacesTSL"] = cmds.textScrollList(w=250, h=200, nr=8, ams=False, bgc=(.2, .2, .2)) widgets["matchButton"] = cmds.button(w=250, al="center", h=40, bgc= (0,.5,0), l="space switch/match", c= doSpaceMatch) #tab for creation/setup of matching cmds.setParent(widgets["tabLO"]) #----------in this tab, create frames. One (closable) to create constraint and fill items, check boxes for orient, position (with user selecting objects), one frame (maybe already filled out) (always open) for setting up attrs (message, strings) widgets["setupCLO"] = cmds.columnLayout() #frame layout for creating the constraints widgets["createFrameLO"] = cmds.frameLayout(l="create Constrants", collapsable=True, w=250) cmds.text("have em select for constraint") widgets["posRotCBG"] = cmds.checkBoxGrp(ncb=2, l1="translation", v1=True, l2="rotation", v2=True) #----------this button should just create the constraints on the objects in question, but then fill in what parts of the lower half it can widgets["createSetupButton"] = cmds.button(l="create constraints") cmds.setParent(widgets["setupCLO"]) #frameLayout for setting up the attrs widgets["setupFrameLO"] = cmds.frameLayout(l="setup matching", collapsable=False, w=250, h=250) widgets["setupObjTFG"] = cmds.textFieldGrp(l="select ctrl obj", cw=([1,100],[2,150]), cal=([1,"left"], [2,"left"])) widgets["setupObjButton"] = cmds.button(l="get ctrl object", h=40, c= partial(getObj, widgets["setupObjTFG"])) widgets["setupConstrTFG"] = cmds.textFieldGrp(l="constraint", cw=([1,100],[2,150]), cal=([1,"left"], [2,"left"])) widgets["setupConstrButton"] = cmds.button(l="get constraint", h=40, c= partial(getObj, widgets["setupConstrTFG"])) #create list of attrs on constraint #attr = cmds.listAttr(sel,ud=True ) #create list of spaces on obj attr cmds.tabLayout(widgets["tabLO"], e=True, tabLabel = ((widgets["getObjCLO"], "change spaces"),(widgets["setupCLO"], "setup matching"))) cmds.showWindow(widgets["window"]) cmds.window(widgets["window"], e=True, w=250, h=300)
def renametab(*args): seltab = mc.tabLayout('tabs',q=1,st=1) alltabs = mc.tabLayout('Animation',q=1,st=1) alltabs1 = mc.tabLayout('Poses',q=1,st=1) if seltab == 'Animation': if alltabs=='': mc.confirmDialog (title='Error',message='No tabs to rename', button='OK',defaultButton='Yes') else: newname = mc.promptDialog( text=alltabs, title='Rename Tab', message='New Tab Name:', button=['OK', 'Cancel'], defaultButton='OK', cancelButton='Cancel', dismissString='Cancel') if newname == 'OK': newtabname = mc.promptDialog (query=True, text=True) if newtabname =='': mc.confirmDialog (title='Error' ,message= 'Sorry, The name entered is not valid', button=['OK'] ,defaultButton='Yes') return else : oldname = mc.tabLayout('Animation',q=1,st=1) mc.tabLayout ('Animation',e=True,tl=((oldname, newtabname))) Ren_tab =savepathini+'Savepose/Animation/'+oldname Ren_tab1=savepathini+'Savepose/Animation/'+newtabname mc.sysFile(Ren_tab,rename=Ren_tab1) return else: return else: if alltabs1 == '': mc.confirmDialog (title='Error',message='No tabs to rename', button='OK',defaultButton='Yes') else: newname = mc.promptDialog( title='Rename Tab', message='New Tab Name:', tx = alltabs1, button=['OK', 'Cancel'], defaultButton='OK', cancelButton='Cancel', dismissString='Cancel') if newname == 'OK': newtabname = mc.promptDialog (query=True, text=True) if newtabname =='': mc.confirmDialog (title='Error' ,message= 'Sorry, The name entered is not valid', button=['OK'] ,defaultButton='Yes') return else: oldname = mc.tabLayout('Poses',q=1,st=1) mc.tabLayout ('Poses',e=True,tl=((oldname, newtabname))) Ren_tab =savepathini+'Savepose/Poses/'+oldname Ren_tab1=savepathini+'Savepose/Poses/'+newtabname mc.sysFile(Ren_tab,rename=Ren_tab1) return else: return
def simpleTemplateEditorAddView( *args): result = cmds.promptDialog(title='New View Name ', message='Enter New View Name (Non-alpha characters will be stripped):',button=['OK', 'Cancel'],defaultButton='OK', cancelButton='Cancel', dismissString='Cancel') if result == 'OK': text = cmds.promptDialog(query=True, text= True) zz="" for c in text: if c.isalpha()==True: zz=zz+c if zz=="": cmds.confirmDialog(title = 'Invalid View Name',button="Retry", message='View names may only be text -- no numbers or other characters.\n\nTry a different name.\n') simpleTemplateEditorAddView() text=zz tabsList = cmds.tabLayout(tabs1,q=1, ca=1) test="" for temp in tabsList: if temp == text: test="Match" if test=="Match" : cmds.confirmDialog(title = 'View Exists',button="OK", message='The view "' + text + '" already exists.\n\nTry a different name.\n') simpleTemplateEditorAddView() elif text=="" : return else: tabsList.append(text) tabsList.sort(lambda x, y: cmp(x.lower(),y.lower())) tempC = 0 counter = 1 for tempX in tabsList: if tempX == text: tempC=counter counter=counter+1 cmds.setParent(tabs1) cmds.columnLayout(text ,cat=["both",5], adj= True) cmds.separator(style="none", h=8) cmds.textScrollList(nr=21, ams= True) cmds.popupMenu() cmds.menuItem( bld=True, label= ' - -=Callbacks=- -') cmds.menuItem( divider=True ) cmds.menuItem(label= 'Add a Callback to selected Attributes in the "' + text + '" view', command = simpleTemplateEditorAddCallbacks) cmds.menuItem( divider=True ) cmds.menuItem( label= 'List Attributes with Callbacks in Current View', command = simpleTemplateEditorPrintCallbacks) cmds.menuItem( divider=True ) cmds.menuItem( label= 'List Attributes with Callbacks in ALL Views', command = simpleTemplateEditorPrintAllCallbacks) cmds.separator(style="none", h=5) cmds.setParent('..') cmds.tabLayout(tabs1, e=1, mt = [len(tabsList), tempC]) if (cmds.menuItem(verbMenuI, q=1, checkBox = True)) == True: print (' - Added View "' + text + '"')
def simpleTemplateEditorDelView( *args): currView = str(cmds.tabLayout(tabs1,q=1, st=1)) x=cmds.tabLayout(tabs1,q=1, ca=1) if len(x)==1: cmds.confirmDialog(title='Warning - No Views Left ', message='There must be at least one View!\nCreate a New View before deleting this one!\n\n',button=['OK']) else: if cmds.confirmDialog(button=["Delete View","Cancel"], defaultButton = "Cancel",cancelButton="Cancel", message="Delete " +currView + " view?\n\nYou will lose any unsaved template editing.\n\n") == "Delete View": tempkeys = dictCallbacks.keys() for temp in tempkeys: if temp.startswith(currView): del dictCallbacks[temp] cmds.deleteUI(currView, layout= True) if (cmds.menuItem(verbMenuI, q=1, checkBox = True)) == True: print (' - View "'+ currView + '" has been deleted')
def selectDir(F=True): global tabs tabState=cmds.tabLayout(tabs,q=1,selectTabIndex=1)#en que tab estoy? if tabState==1:#tab de export global epathShader global epathAlembic if F: multifilter="Maya Files (*.ma *.mb)" folder=cmds.fileDialog2(cap=" - ELIJE ARCHIVO SHADER - ",startingDirectory='M:/MAYA/01_CHAR',fm=4,ff=multifilter)#selecciona Archivo filePath=str(str(folder[0]).replace('\\','/')) cmds.textField(epathShader, edit=True,text=filePath) else: folder=cmds.fileDialog2(cap=" - ELIJE CARPETA DONDE GUARDAR - ",startingDirectory='M:/',fm=3)#seleccionar Carpeta filePath=str(str(folder[0]).replace('\\','/')) cmds.textField(epathAlembic, edit=True,text=filePath) if tabState==2:#tab de import global ipathShader global ipathAlembic if F: multifilter="Maya Files (*.ma *.mb)" folder=cmds.fileDialog2(cap=" - ELIJE ARCHIVO SHADER- ",startingDirectory='M:/MAYA/01_CHAR',fm=4,ff=multifilter)#selecciona Archivo filePath=str(str(folder[0]).replace('\\','/')) cmds.textField(ipathShader, edit=True,text=filePath) else: multifilter="*.abc" filen=cmds.fileDialog2(cap=" - ELIJE ARCHIVO ALEMBIC - ",startingDirectory='M:/MAYA/01_CHAR',fm=4,ff=multifilter)#selecciona Archivo filePath=str(str(filen[0]).replace('\\','/')) cmds.textField(ipathAlembic, edit=True,text=filePath) if tabState==3:#tab de update global upathAlembic if F: multifilter="*.abc" filen=cmds.fileDialog2(cap=" - ELIJE ARCHIVO ALEMBIC - ",startingDirectory='M:/MAYA/01_CHAR',fm=4,ff=multifilter)#selecciona Archivo filePath=str(str(filen[0]).replace('\\','/')) cmds.textField(upathAlembic, edit=True,text=filePath)
def alembic(): global tabs tabState=cmds.tabLayout(tabs,q=1,selectTabIndex=1)#en que tab estoy? if tabState==1:#tab de export global eloadNameSpace global epathShader global epathAlembic #tico:Asset #D:/PH_SCRIPTS/SCENES_RIG/PACOTEST/CHAR/TICO/03_TICO_SHD.ma #D:/PH_SCRIPTS/SCENES_RIG/PACOTEST/ALEMBIC rigNamespace = cmds.textField(eloadNameSpace, edit=False, text=True, q=1) assetSHDPath = cmds.textField(epathShader, edit=False, text=True, q=1) cachePath = cmds.textField(epathAlembic, edit=False, text=True, q=1) PS.MM.cache.exportAssetCache( rigNamespace, assetSHDPath, cachePath ) elif tabState==2:#tab de import global iloadNameSpace global ipathShader global ipathAlembic assetNamespace = cmds.textField(iloadNameSpace, edit=False, text=True, q=1) assetSHDPath = cmds.textField(ipathShader, edit=False, text=True, q=1) cachePath = cmds.textField(ipathAlembic, edit=False, text=True, q=1) PS.MM.cache.referenceAssetWithCache( assetNamespace, assetSHDPath, cachePath ) elif tabState==3:#tab de update global uloadNameSpace global upathAlembic assetNamespace = cmds.textField(uloadNameSpace, edit=False, text=True, q=1) cachePath = cmds.textField(upathAlembic, edit=False, text=True, q=1) PS.MM.cache.updateAssetCache( assetNamespace, cachePath )
def simpleTemplateEditorResetTemplate( *args): feedback = "" if cmds.textFieldGrp(txtFld1, q=1,text=True) == "": feedback="Reset Editor" else: feedback = cmds.confirmDialog(button=["Reset Editor","Continue Editing"], defaultButton = "Continue Editing",cancelButton="Continue Editing", message="Reset Template Editor?\n\nYou will lose any unsaved template editing.\n\n") if feedback == "Reset Editor": if (cmds.menuItem(verbMenuI, q=1, checkBox = True)) == True: print " - Template Editor Reset" temp2= [] temp2= cmds.ls(sl=True) if len(temp2)!=1: cmds.confirmDialog(button="OK", message="\n\nThere is no node selected.\n\nSelect a node and Reset the \nEditor to start creating views.\n\n") else: currentNode=temp2[0] currentType = cmds.nodeType(currentNode) cmds.textScrollList(txtScrl1, e=1, ra=1) cmds.textFieldGrp(txtFld1, e=1, text=currentType) cmds.textField(textFld2, e=1, text=currentNode) tempAllAttrs = cmds.listAttr() tempAllAttrs.sort() for temp in tempAllAttrs: try: name = cmds.attributeQuery(temp, n=currentNode, ln=True) tempDType = cmds.getAttr (currentNode+'.'+temp, type=True) if tempDType != None: cmds.textScrollList(txtScrl1, e=1, append=temp) except: if (cmds.menuItem(verbMenuI, q=1, checkBox = True)) == True: print (" - " + currentNode+'.'+temp + ' was skipped') cmds.deleteUI("simpleTemplateEditorUITabsLayout", layout=True) cmds.setParent(col33) cmds.tabLayout("simpleTemplateEditorUITabsLayout") for tempStr in startupViews: cmds.columnLayout(tempStr,cat=["both",5], adj=True) cmds.separator(style="none", h=8) tmptxtScrl = cmds.textScrollList(nr=21, ams=True) cmds.popupMenu() cmds.menuItem(label= ' - -=Callbacks=- -') cmds.menuItem( divider=True ) cmds.menuItem(label= 'Add a Callback to selected Attributes in the "' + tempStr + '" view', command = simpleTemplateEditorAddCallbacks) cmds.menuItem( divider=True ) cmds.menuItem(label= 'List Attributes with Callbacks in Current View', command = simpleTemplateEditorPrintCallbacks) cmds.menuItem( divider=True ) cmds.menuItem(label= 'List Attributes with Callbacks in ALL Views', command = simpleTemplateEditorPrintAllCallbacks) cmds.setParent('..') dictCallbacks.clear()
def creatUi(self): 'UI core functions' if cmds.window(self.uiName, ex=1): cmds.deleteUI(self.uiName) cmds.window(self.uiName, t=u'提交渲染前检查工具', wh=(550, 400)) self.maiform = cmds.formLayout(numberOfDivisions=100) Help_b = cmds.button(l=u'帮助', h=30) close_b = cmds.button(l=u'关闭', h=30, c=self.closeWindow) paneL = cmds.paneLayout(configuration='vertical2', ps=[1, 60, 40]) self.tabs = cmds.tabLayout(innerMarginWidth=5, innerMarginHeight=5) self.button_listScr_CJ = cmds.scrollLayout(vst=1, hst=0, cr=1) frameCJ = cmds.frameLayout(label=u'场景提交渲染前执行按钮', borderStyle='etchedIn') bb = CreateButton() bb.create_button(True) cmds.setParent(self.tabs) self.button_listScr_JS = cmds.scrollLayout(vst=1, hst=0, cr=1) frameJS = cmds.frameLayout(label=u'角色提交渲染前执行按钮', borderStyle='etchedIn') cc = CreateButton() cc.create_button(False) cmds.tabLayout(self.tabs, edit=True, tabLabel=((self.button_listScr_CJ, u'场景'), (self.button_listScr_JS, u'角色'))) cmds.setParent(paneL) self.help_listScr = cmds.scrollLayout(vst=1, hst=0, cr=1) cmds.frameLayout('ann_ts_frame', label=u'按钮提示', borderStyle='etchedIn') cmds.formLayout(self.maiform, e=True, af=[(Help_b, 'left', 5), (Help_b, 'bottom', 5), (close_b, 'right', 5), (close_b, 'bottom', 5), (paneL, 'left', 5), (paneL, 'right', 5), (paneL, 'top', 5)], ac=[(paneL, 'bottom', 5, Help_b), (Help_b, 'right', 5, close_b)], ap=[(close_b, 'left', 0, 50)]) #cmds.tabLayout(self.tabs, edit=True, tabLabel=((frameCJ, u'场景'), (frameCJ, u'角色'))) cmds.window(self.uiName, e=True, wh=(730, 400)) cmds.showWindow(self.uiName)
def __init__(s): cmds.window(t="Anim Train!") cmds.columnLayout(adj=True) tabs = cmds.tabLayout() # Apply apply_col = cmds.columnLayout(adj=True, p=tabs) cmds.text( l="Apply training to current animation, on selected objects.") s._apply_path = PathBrowse("Training Data (training):", False, fm=3) s._apply_range = FrameRange() cmds.button(l="Apply to selected!", c=s.apply) # Export export_col = cmds.columnLayout(adj=True, p=tabs) cmds.text( l="Export animation from selected objects to be used for later training." ) s._export_path = PathBrowse("Export (anim):", "*.anim", fm=0) s._export_range = FrameRange() cmds.button(l="Export Animation", c=s.export) # Train train_col = cmds.columnLayout(adj=True, p=tabs) cmds.text(l="Learn differences between animation data.") s._train_path_train = PathBrowse("Training Data (training):", False, fm=3) s._train_path_source = PathBrowse("Source (anim):", "*.anim", fm=1) s._train_path_expect = PathBrowse("Expected (anim):", "*.anim", fm=1) cmds.button(l="Train", c=s.train) # Test test_col = cmds.columnLayout(adj=True, p=tabs) cmds.text(l="Check accuracy.") s._test_path_train = PathBrowse("Training Data (training):", False, fm=3) s._test_path_source = PathBrowse("Source (anim):", "*.anim", fm=1) s._test_path_expect = PathBrowse("Expected (anim):", "*.anim", fm=1) cmds.button(l="Test", c=s.test) cmds.tabLayout(tabs, e=True, tl=[(apply_col, "Apply"), (export_col, "Export"), (train_col, "Train"), (test_col, "Test")]) cmds.showWindow()
def appendUI(): """UI for appendPath script""" #create window with 3 text fields, buttons call up proc to add path if cmds.window("appendPath", exists=True): cmds.deleteUI("appendPath") widgets["win"] = cmds.window("appendPath", t="zbw_appendPath", w=500, h=5, s=False, rtf=True) #create some menus for saving and loading cmds.setParent(widgets["win"]) widgets["menu"] = cmds.menuBarLayout() widgets["menuFile"] = cmds.menu(label="file") cmds.menuItem(l='Clear Values', c=clearValues) cmds.menuItem(l="Save Add Paths", c=saveValues) cmds.menuItem(l="Load Add Paths", c=loadValues) widgets["tabLO"] = cmds.tabLayout(h=210) widgets["columnLO"] = cmds.columnLayout("Add Paths", w=500) widgets["path1"] = cmds.textFieldButtonGrp(l="path1", cal=[(1, "left"), (2,"left"),(3,"left")], cw3=(40, 410, 50), bl="<<<", bc=partial(addToField, 1)) widgets["path2"] = cmds.textFieldButtonGrp(l="path2", cal=[(1, "left"), (2,"left"),(3,"left")], cw3=(40, 410, 50), bl="<<<", bc=partial(addToField, 2)) widgets["path3"] = cmds.textFieldButtonGrp(l="path3", cal=[(1, "left"), (2,"left"),(3,"left")], cw3=(40, 410, 50), bl="<<<", bc=partial(addToField, 3)) widgets["melCBG"] = cmds.checkBoxGrp(ncb=1, l1="also add to mel path (MAYA_SCRIPT_PATH)", v1=1, cal=[(1, "left"), (2, "left")], cw = [(1, 100), (2,25)]) cmds.separator(h=10, st="single") widgets["buttonRCL"] = cmds.rowColumnLayout(nc=3, w=500, cw=[(1,123),(2,247 ),(3,123)]) widgets["addCloseBut"] = cmds.button(l="Add and Close", w=120, h=30, bgc=(.6, .8, .6), c=applyClose) widgets["addBut"] = cmds.button(l="Add Paths!", w=245, h=30, bgc=(.8, .8, .6), c=apply) widgets["closeBut"] = cmds.button(l="Close", w=120, h=30, bgc=(.8,.6,.6), c=close) cmds.setParent(widgets["columnLO"]) cmds.separator(h=5, style="single") cmds.text("Click the '<<<' buttons to browse for paths to add. Click the 'Add' button to add those \npaths to the 'sys.path' list. Use the 'ViewPath' tab to view current list of paths.", al="center") cmds.text("Use 'file->save' to save the selected paths. Use 'file->load' to load previously saved paths") #back to window cmds.setParent(widgets["tabLO"]) widgets["columnLO2"] = cmds.columnLayout("View Paths", w=500) cmds.text("Double-click to display full path in script editor") widgets["listTSL"] = cmds.textScrollList(w=500, h=120, fn="smallPlainLabelFont", append=["click button below", "to refresh this list!"], dcc=printMe) refresh() cmds.separator(h=5, style="single") widgets["columnLO3"] = cmds.columnLayout(w=500) widgets["refreshBut"] = cmds.button(l="Refresh Paths", w=500, h=20, bgc=(.5, .5, .6), c=refresh) cmds.rowColumnLayout(nc=3, cw=[(1,200),(2,150 ),(3,150)]) widgets["removeBut"] = cmds.button(l="Remove Selected", w=180, h=20, bgc=(.7, .5, .5), c=removePath) widgets["topBut"] = cmds.button(l="Selected To Top", w=130, h=20, bgc=(.7, .5, .5), c=topPath) widgets["bottomBut"] = cmds.button(l="Selected To Bottom", w=130, h=20, bgc=(.7, .5, .5), c=bottomPath) #load (and check) previous saves cmds.showWindow(widgets["win"]) cmds.window(widgets["win"], e=True, w=5, h=5, rtf=True)
def activeShelf(): """Returns the currently active maya shelf as a :class:`Shelf` object. :return: :rtype: :class:`Shelf` """ return Shelf( cmds.tabLayout(primaryshelfLayout(), query=True, selectTab=True))
def _addTab(self, name): ''' Adds an additional tab to the system. ''' # Make sure that a tab exists! col = cmds.columnLayout(parent=self.mainTab) cmds.text( l="", w=415) # frm = cmds.formLayout( parent=self.mainTab, w=300, h=300 ) cmds.tabLayout( self.mainTab, e=1, tl=[col, name]) self.tabs[col] = [] self.tabNames.append(col ) return col
def makeShelfButton(command, sourceType='python'): shelfLayout = mel.eval('string $temp = $gShelfTopLevel') shelf = cmds.tabLayout(shelfLayout, query=True, st=True) cmds.shelfButton(annotation='Saved selection', image1='menuIconWindow.png', sourceType=sourceType, command=command, parent=shelf)
def __init__(self): self.projInfo = ppc.ProjectInfo() if not self.projInfo.validProject: utils.msgWin("Error", "Not a valid Project", False) return self.cachePipe = True if self.projInfo.pipelineType == "cache" else False if mc.window('shotManager', exists=1): mc.deleteUI('shotManager') if mc.windowPref('shotManager', exists=1): mc.windowPref('shotManager', r=1) if mc.dockControl('shotDock', q=True, exists=1): mc.deleteUI('shotDock') if mc.tabLayout("mainShotTab", ex=True): mc.deleteUI("mainShotTab") mel.eval( "global string $gMainWindow;tabLayout -parent $gMainWindow mainShotTab" ) self.win = mc.loadUI(f=shotUi) mc.control(self.win, e=1, ebg=1, p="mainShotTab") mc.tabLayout("mainShotTab", e=1, tv=0) mc.dockControl('shotDock', w=375, a='right', con="mainShotTab", aa=['right', 'left'], l='Toonz Shot Manager', vcc=self.clearDock) eporsq = "Episode : " if self.projInfo.epOrSeq == "ep" else "Sequence : " mc.text("lblEpisode", e=True, l=eporsq) breakDown = self.projInfo.breakDown self.breakDownPath = "%s/%s" % (self.projInfo.mapDrive, breakDown) self.setDept() self.deptChange() mc.optionMenu('cmbDepts', e=1, cc=lambda event: self.deptChange()) mc.optionMenu('cmbEpisode', e=1, cc=lambda event: self.loadShots()) mc.optionMenu('cmbShot', e=1, cc=lambda event: self.selectDeptVer()) mc.optionMenu('cmbDeptVer', e=1, cc=lambda event: self.loadVersions()) mc.optionMenu('cmbRetake', e=1, cc=lambda event: self.loadVersions()) mc.optionMenu('cmbCategory', e=1, cc=lambda event: self.fgbgSwitch()) mc.button('btnOpen', e=1, c=lambda event: self.openFile("file")) mc.button('btnOpenVer', e=1, c=lambda event: self.openFile("ver")) mc.button('btnImpCam', e=1, c=lambda event: self.importCamera()) mc.button('btnOpenBlast', e=1, c=lambda event: self.openBlast()) mc.button('btnCreateWs', e=1, c=lambda event: self.createWs()) mc.button('btnSaveToWs', e=1, c=lambda event: self.saveFile()) mc.button('btnSaveToLocal', e=1, c=lambda event: self.saveFile(True)) mc.checkBox('chkPlayblast', e=1, cc=lambda event: self.toggleCache()) mc.checkBox('chkCache', e=1, cc=lambda event: self.togglePb())
def add_utility_mingler(self, k, v, msw_switch_Layout, mswPane): cmds.frameLayout(msw_switch_Layout, edit=True, label=k+ ' Utility Shop Toolkit') cmds.button(label='+ChopColorize', height=25, backgroundColor=[0.3, 0.3, 0.3], command=partial(self.chop_mesh_manager.heyWitch_geoChopRandomColourSet, k)) msw_grab_tabs = self.global_work_space['miscData']['switch_layouts']['msw_grab_tabs'] if cmds.layout(msw_grab_tabs, ex=True): cmds.deleteUI(msw_grab_tabs, layout=True) msw_grab_tabs = cmds.tabLayout(innerMarginWidth=5, innerMarginHeight=5, parent=mswPane) self.global_work_space['miscData']['switch_layouts']['msw_grab_tabs'] = msw_grab_tabs raw_mesh_grid_layout = cmds.gridLayout(numberOfColumns=2, cellWidthHeight=(125, 25)) cmds.select(k + '_grp', hierarchy=True) cmds.select(k + '_grp', deselect=True) rawMeshList = cmds.ls(sl=True, type='transform') for raw_mesh in rawMeshList: cmds.button(label=raw_mesh, command=partial(self.helper.heyWitch_selectRawMesh, raw_mesh)) cmds.setParent('..') cmds.tabLayout(msw_grab_tabs, edit=True, tabLabel=(raw_mesh_grid_layout, 'Raw Meshes'))
def jpmAutoRig_makePlaceCubes(button): pickedTab = cmds.tabLayout("autoRigTabs", q=1, st=1) print pickedTab myCubesFile = "" myCubesContents = helper.jpReadFile(myCubesFile) mm.eval(myCubesContents) print button
def dynamic_button_layout(settings_data, picker_namespace): #for each key in set keys make a new tab, named after the name set_keys = settings_data['config']['set_keys'] #make our layout objects form = cmds.formLayout() tabs = cmds.tabLayout(innerMarginWidth=5, innerMarginHeight=5) #set padding cmds.formLayout(form, edit=True, attachForm=( (tabs, 'top', 0), (tabs, 'left', 0), (tabs, 'bottom', 0), (tabs, 'right', 0) ) ) tab_name_list = [] tab_content_list = [] #check for super tabs or regular tabs use_super_sets = False #check if using super set style tabs if 'super_sets' in settings_data.get('config_advanced', []) : use_super_sets = True if use_super_sets: add_super_set_tabs(settings_data,set_keys, tab_name_list,tab_content_list, picker_namespace) else: add_set_tabs(settings_data,set_keys, tab_name_list,tab_content_list, picker_namespace) #make the tuple how maya wants it tab_label_tuple = tuple((content,name) for content, name in zip(tab_content_list, tab_name_list)) #add the contents cmds.tabLayout( tabs, edit=True, tabLabel=tab_label_tuple) #escape the layout cmds.setParent('..')
def get_text_edit(self): 'get current qtextedit from script editor' tabIdx = mc.tabLayout(gCommandExecuterTabs, q=1, st=1) _logger.debug('current tab: %s', tabIdx) cmd_executer = mc.layout(tabIdx, q=1, ca=1)[0] ptr = apiUI.MQtUtil.findControl(cmd_executer) self.textedit = sip.wrapinstance(long(ptr), QObject)
def returnActiveAOVs(): index = cmds.tabLayout('aovTab', q=True, sti=True) aovs = tabs[index].keys() activeAOVs = [] for i in aovs: if cmds.checkBox(i, v=True, q=True): activeAOVs.append(i) return activeAOVs
def createWindow(self): ''' creates main GUI window and it's contents ''' BaseToolWindow.createWindow(self) self.targetUI = TargetDataDisplay() self.actions = MainUiActions(self.windowName) self.mainMenu = MainMenu() self.mainMenu.create() # putting tabs in a from targetUiLayout is needed to workaround maya2011 # bug with an additional empty tab appearing otherwise # form = FormLayout(parent=self.windowName) # targetUiLayout = self.targetUI.create(form) # form.attachForm(targetUiLayout, 0, Constants.MARGIN_SPACING_HORIZONTAL,None,Constants.MARGIN_SPACING_HORIZONTAL) # # self.mainTabLayout = cmds.tabLayout(childResizable=True,parent=form,scrollable=False,innerMarginWidth=3) # form.attachControl(self.mainTabLayout, targetUiLayout, Constants.MARGIN_SPACING_VERTICAL, None,None,None) # form.attachForm(self.mainTabLayout, None, 0,0,0) self.splitPosition = PersistentValueModel( name="ngSkinTools_mainWindow_splitPosition", defaultValue=50) def updateSplitPosition(*args): size = cmds.paneLayout(horizontalSplit, q=True, paneSize=True) # returns (widht, height, width, height) self.splitPosition.set(size[1]) horizontalSplit = cmds.paneLayout( configuration="horizontal2", width=100, height=200, separatorMovedCommand=updateSplitPosition) if Utils.getMayaVersion() >= Utils.MAYA2011: cmds.paneLayout(horizontalSplit, e=True, staticHeightPane=2) cmds.paneLayout(horizontalSplit, e=True, paneSize=(1, 100, self.splitPosition.get())) cmds.paneLayout(horizontalSplit, e=True, paneSize=(2, 100, 100 - self.splitPosition.get())) targetUiLayout = self.targetUI.create(horizontalSplit) self.mainTabLayout = cmds.tabLayout(childResizable=True, parent=horizontalSplit, scrollable=False, innerMarginWidth=3) self.tabPaint = self.addTab(TabPaint()) self.tabMirror = self.addTab(TabMirror()) self.tabRelax = self.addTab(TabSkinRelax()) self.tabAssignWeights = self.addTab(TabAssignWeights()) self.tabSettings = self.addTab(TabSettings()) self.actions.updateEnabledAll()
def standardWindow( windowName, title, buttons): # this proc creates a standard window with a columnLayout and some button below # if $windowName is empty, a new window will be created (otherwise the existing window is shown # it returns an array with: # - the UI name of the window # - the UI name of the columnLayout # - the names of the buttons # The window is NOT shown, so that the contents can be added before the window appears if len( buttons) == 0: mc.error( 'This window should have at least one button!') if windowName == '': windowName = mc.window( w=414, h=402, title=title) # if no UI name is given then create a window elif mc.window( windowName, exists=1): mc.showWindow( windowName) return( windowName) else: mc.window( windowName, w=414, h=402, title=title) result = [] result.append( windowName) form = mc.formLayout( nd=100) tab = mc.tabLayout( tv=0, scr=0, cr=1) result.append( mc.columnLayout( adj=1)) mc.setParent( form) sep = mc.separator( h=10) for b in buttons: result.append( mc.button( label=b)) mc.formLayout( form, edit=1, attachForm = [(tab, 'top', 10), (tab, 'left', 5), (tab, 'right', 5), (sep, 'left', 5), (sep, 'right', 5)], attachControl = [(tab, 'bottom', 5, sep), (sep, 'bottom', 5, result[2])], attachNone = [(sep, 'top')]) mc.formLayout( form, edit=1, attachForm = [(result[2], 'left', 5), (result[2], 'bottom', 5), (result[-1], 'right', 5), (result[-1], 'bottom', 5)], attachNone = [(result[2], 'top'), (result[-1], 'top')]) gapStep = 100 / len(buttons) for i in range( 3, len( result)): mc.formLayout( form, edit=1, attachPosition = [(result[i-1], 'right', 2, gapStep*(i-2)), (result[i], 'left', 2, gapStep*(i-2))], attachForm = [(result[i], 'bottom', 5)]) return result
def createCategoriesLayout(self): print("ML Log: createCategoriesLayout") # Create tab, form and scroll layouts. tabLayout = cmds.tabLayout(innerMarginWidth=5, innerMarginHeight=15, borderStyle="full") formLayout = cmds.formLayout(numberOfDivisions=100) scrollLayout = cmds.scrollLayout(backgroundColor=self.backgroundColor, horizontalScrollBarThickness=0, verticalScrollBarThickness=16, childResizable=True) # Lay out categories vertically. catergories = cmds.columnLayout() # Add layouts with index based names for easy lookup. index = 0 for category in self.manifest["categories"]: cmds.iconTextButton("RPRCategory" + str(index), style='iconAndTextHorizontal', image='material_browser/folder_closed.png', label=category["name"], height=20, command=partial(self.selectCategory, index)) index += 1 # Assign the form to the tab. cmds.tabLayout(tabLayout, edit=True, tabLabel=((formLayout, 'Categories'))) # Lay out components within the form. cmds.formLayout(formLayout, edit=True, attachForm=[(scrollLayout, 'top', 5), (scrollLayout, 'left', 5), (scrollLayout, 'bottom', 5), (scrollLayout, 'right', 5)]) cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..')
def widget(self, widgetParent): wd = mc.columnLayout(widgetParent, q=True, w=True) mc.columnLayout(adjustableColumn=True, p=widgetParent, w=wd) mc.separator() mc.rowLayout(numberOfColumns=3, columnWidth2=(80, (self.canvasSize[0] - 80 - 20)), adjustableColumn=2, cl2=('left', 'both')) mc.text(l=' Current Path :') pathTxFld = mc.textField('buildDish_UI_data_dir_txFld', ed=False) self.tabCtrl_A = mc.tabLayout(innerMarginWidth=5, innerMarginHeight=5, p=widgetParent) #--------------------------------------------------------------------------------- self.cookTab() #--------------------------------------------------------------------------------- self.deliverTab() modulePath = ''.join( os.path.dirname(inspect.getfile(self.resizeBuildTabs)) + '\src') mc.textField(pathTxFld, e=True, tx=modulePath) mc.tabLayout(self.tabCtrl_A, e=True, tabLabelIndex=[1, 'Cook']) mc.tabLayout(self.tabCtrl_A, e=True, tabLabelIndex=[2, 'Deliver']) mc.tabLayout(self.tabCtrl_A, e=True, cc=self.resizeBuildTabs)
def blendShapeManage(): if cmds.window('blendShapeManage',exists=True): cmds.deleteUI('blendShapeManage') cmds.window('blendShapeManage',mb=True,t= 'blendShapeManage_'+blendShapeManage_version()) cmds.menu(l='Eidt') cmds.menuItem(l='Append',c=lambda *args:CreativeBlendShape().AppendTarget() and freshTargetBlendShape("append")) cmds.menuItem(l='Delete',c=lambda *args:CreativeBlendShape().RemoveTarget() and freshTargetBlendShape("remove")) cmds.menuItem(l='Gain',c=lambda *args:CreativeBlendShape().GainTarget()) cmds.menuItem(l='Rename',c= lambda *args:CreativeBlendShape().RenameTarget() and freshTargetBlendShape("append")) cmds.menuItem(l='RevertTarget',c= lambda *args:CreativeBlendShape().GainTarget_All_for()) cmds.setParent('..') cmds.menu(l='help') cmds.menuItem(label= "GGHelp" ) cmds.menuItem(d=True) cmds.menuItem(label ="Close",c =lambda *args:cmds.window('blendShapeManage',e=True,vis=0)) cmds.menuItem(label =blendShapeManage_version()) cmds.columnLayout('') cmds.rowColumnLayout( numberOfColumns=2, columnWidth=[(1, 300),(2,180)] ) cmds.textFieldGrp('meshShapeText',label='BlendShape mesh',cw2 = (100,200),text=meshShapeSel() ,ed=False) cmds.text(label='-> '+blendShape_Node()) #cmds.button('buttonBlendShapeMesh',label = 'Reload',c='cmds.button(e=1,)' ) cmds.setParent('..') form = cmds.formLayout() tabs = cmds.tabLayout(innerMarginWidth=5, innerMarginHeight=5) cmds.formLayout( form, edit=True, attachForm=((tabs, 'top', 0), (tabs, 'left', 0), (tabs, 'bottom', 0), (tabs, 'right', 0)) ) cmds.columnLayout('child1') Create_UI() cmds.setParent( '..' ) cmds.columnLayout('child2') Edit_UI() cmds.setParent( '..' ) cmds.columnLayout('child3') Clone_UI() cmds.setParent( '..' ) cmds.tabLayout( tabs,cc=lambda *args: freshTargetBlendShape("append"), edit=True,tabLabel=(('child1', 'Create'),('child2', 'Edit'),('child3', 'Clone'))) cmds.setParent( '..' ) #cmds.columnLayout('') #cmds.textField('', text=meshShapeSel() ,ed=False) #cmds.setParent( '..' ) cmds.showWindow('blendShapeManage') cmds.window('blendShapeManage',edit=True,w=460,h=600)
def p(self): pathA=self.pathA1[0:] getpath=cmds.textField('Path',q=True,tx=True) delto=getpath.replace('\\','/') path=delto+'/' trvsel=cmds.treeView('ok',q=True,si=True) trvselP=cmds.treeView('ok',q=True,ip=trvsel[0]) object=cmds.tabLayout('tuplistlayout',q=True,st=True) Path1=path+trvselP+'/'+trvsel[0]+'/'+object[0:]+'/' id1=cmds.getFileList(folder=Path1) slLc=cmds.scrollLayout(object[0:],q=True,ca=True) #cmds.rowColumnLayout('RowL',numberOfColumns=1,p=object[0:]) if slLc!=None: for slLcobj in slLc: cmds.deleteUI(slLcobj,control=True) else: print '没有' if cmds.formLayout('RowL',ex=True): cmds.deleteUI('RowL') #cmds.rowColumnLayout('RowL',numberOfColumns=1,p=object[0:]) cmds.formLayout('RowL',p=object[0:]) ksymbolButtonk=[] ktextk=[] k_tW=100 k_tH=100 k_tH=20 for i in range(len(id1)): pic=[w for w in os.listdir(Path1+id1[i]+'/') if w.endswith('.jpg')] pp=Path1+id1[i]+'/' #cmds.symbolButton(image=(Path1+id1[i]+'/'+pic[0]),ann='oo',p='RowL',w=100,h=100,c=partial(self.showFileInfo,(Path1+id1[i]+'/'))) #增加图片按钮 ksymbolButtonk.append(cmds.symbolButton(image=(Path1+id1[i]+'/'+pic[0]),p='RowL',w=k_tW,h=k_tH,c=partial(self.showFileInfo,(Path1+id1[i]+'/'))))#增加图片按钮 cmds.popupMenu() cmds.menuItem(l=u'导入动画数据',c = partial(self.eidtpath,(Path1+id1[i]+'/'))) cmds.menuItem(l=u'观看视频!',c=self.OPENVIDEO) cmds.menuItem(l=u'打开文件夹!',c=self.OPENFILE) cmds.menuItem(l=u'打开文件!',c=self.OPENMB) cmds.menuItem(l=u'信息查看与动画截取',c=self.editaniwin) #cmds.text(l=id1[i],p='RowL') ktextk.append(cmds.iconTextButton (style=('textOnly'),enable=0,l=id1[i],w=k_tW,h=k_tH,p='RowL')) self.editSBsize() for o in range(len(id1)): if o==0: cmds.formLayout('RowL',e=True,attachPosition=((ksymbolButtonk[o],'top',0,0),(ksymbolButtonk[o],'left',0,0))) elif o==1: cmds.formLayout('RowL',e=True,attachPosition=(ksymbolButtonk[o],'top',0,0),attachControl=(ksymbolButtonk[o],'left',0,ksymbolButtonk[o-1])) elif o%2==1: cmds.formLayout('RowL',e=True,attachControl=((ksymbolButtonk[o],'top',0,ktextk[o-2]),(ksymbolButtonk[o],'left',0,ksymbolButtonk[o-1]))) else: cmds.formLayout('RowL',e=True,attachControl=(ksymbolButtonk[o],'top',k_tH,ksymbolButtonk[o-2]),attachPosition=(ksymbolButtonk[o],'left',0,0)) for u in range(len(id1)): if u%2==1: cmds.formLayout('RowL',e=True,attachControl=((ktextk[u],'top',0,ksymbolButtonk[u]),(ktextk[u],'left',0,ktextk[u-1]))) else: cmds.formLayout('RowL',e=True,attachControl=(ktextk[u],'top',0,ksymbolButtonk[u]),attachPosition=(ktextk[u],'left',0,0))
def dmxExportButton(self): currentShelf = cmds.tabLayout("ShelfLayout", selectTab=True, query=True) cmds.shelfButton( annotation='DMX Export', image1='DMXExport.png', imageOverlayLabel='DMX', command='import DMXExport; reload(DMXExport); DMXExport.createUI()', parent=currentShelf, label='DMX')
def setAOVsCheckBox(key=True, *args): index = cmds.tabLayout('aovTab', q=True, sti=True) aovs = tabs[index].keys() if key == True: for i in aovs: cmds.checkBox(i, v=True, e=True) else: for i in aovs: cmds.checkBox(i, v=False, e=True)
def jpmAutoRig_mirrorPlaceCubes(button): pickedTab = cmds.tabLayout("autoRigTabs", q=1, st=1) print pickedTab lefties = ["left_clavicle_PLACE_GEO", "left_hip_PLACE_GEO"] cmds.select(lefties) cmds.duplicate group = cmds.group cmds.setAttr((group + ".scaleX"), -1)
def asset_UI_create(*args): """ ui """ if cmds.window("assetWin", exists=True): cmds.deleteUI("assetWin") w = 820 h = 550 widgets["win"] = cmds.window("assetWin", t="Asset Manager", w=w, h=h) widgets["mainCLO"] = cmds.columnLayout(w=w, h=h) widgets["mainFLO"] = cmds.formLayout(w=w, h=h, bgc=(.2,.2,.2)) widgets["phaseOM"] = cmds.optionMenu( label='Phase: ')#, changeCommand=temp) cmds.menuItem(label="Modeling") cmds.menuItem(label="Rigging") cmds.menuItem(label="Animation") cmds.optionMenu(widgets["phaseOM"], e=True, value = "Rigging") widgets["assetsFLO"] = cmds.formLayout(w=200, h=500) widgets["assetsTab"] = cmds.tabLayout(w=200,h=500) widgets["charCLO"] = cmds.columnLayout("CHARS", w=200, h=500) widgets["charTSL"] = cmds.textScrollList(w=200, h=500) cmds.setParent(widgets["assetsTab"]) widgets["propCLO"] = cmds.columnLayout("PROPS", w=200, h=500) widgets["propTSL"] = cmds.textScrollList(w=200, h=500) cmds.setParent(widgets["assetsTab"]) widgets["setCLO"] = cmds.columnLayout("SETS", w=200, h=500) widgets["setTSL"] = cmds.textScrollList(w=200, h=500) cmds.formLayout(widgets["assetsFLO"], e=True, af = [(widgets["assetsTab"], "top", 30), (widgets["assetsTab"], "left", 0), ]) cmds.setParent(widgets["mainFLO"]) widgets["refBut"] = cmds.button(l=">>>Ref in>>>", w=70, h=30, bgc=(.5,.5,.5), c=create_new_ref) # widgets["impBut"] = cmds.button(l=">>>Import in>>>", w=70, h=30, en=False, bgc=(.5,.5,.5), c=create_new_import) widgets["execBut"] = cmds.button(l="Execute Changes", w=120, h=40, bgc=(.5,.5,.5), c=execute) widgets["reloadBut"] = cmds.button(l="Reload/Refresh", w=120, h=40, bgc=(.5,.5,.5), c=reload_ref_list) cmds.setParent(widgets["mainFLO"]) widgets["refSLO"] = cmds.scrollLayout(w=520, h=400, bgc=(0,0,0)) widgets["refCLO"] = cmds.columnLayout(w=520, rowSpacing=2, bgc = (.0,.0,.0), p=widgets["refSLO"]) cmds.formLayout(widgets["mainFLO"], e=True, af = [(widgets["assetsFLO"], "top", 20), (widgets["assetsFLO"], "left", 5), (widgets["phaseOM"], "top", 10), (widgets["phaseOM"], "left", 0), (widgets["refSLO"], "top", 70), (widgets["refSLO"], "left", 290), (widgets["refBut"], "top", 100), (widgets["refBut"], "left", 210), # (widgets["impBut"], "top", 150), (widgets["impBut"], "left", 210), (widgets["execBut"], "top", 485), (widgets["execBut"], "left", 680), (widgets["reloadBut"], "top", 485), (widgets["reloadBut"], "left", 540), ]) cmds.window(widgets["win"], e=True, w=5, h=5, rtf=True) cmds.showWindow(widgets["win"]) load_asset_info() create_ref_list()
def simpleTemplateEditorPrintCallbacks(*args): currTab = str(cmds.tabLayout(tabs1, q=1, st=1)) tempkeys = dictCallbacks.keys() print '\n-------------------------------------\n Callbacks list in the "' + currTab + '" View\n-------------------------------------' for temp in tempkeys: if temp.startswith(currTab): tempCB = dictCallbacks[temp] temp = temp.replace(currTab + "_", "") print temp + ": " + tempCB
def deleteChild(self, *args): tabLayout = self.pWindow.tab selItemIndex = cmds.tabLayout(tabLayout, q=1, sti=1) if selItemIndex == 1: cmds.error('Main Command tab Can not delete') children = cmds.tabLayout(tabLayout, q=1, ca=1) tabLabels = cmds.tabLayout(tabLayout, q=1, tabLabel=1) cmds.deleteUI(children.pop(selItemIndex - 1)) tabLabels.pop(selItemIndex - 1) items = [] for i in range(len(children)): items.append((children[i], tabLabels[i])) cmds.tabLayout(tabLayout, e=1, tabLabel=items)
def createShelfBtn(): currentShelf = cmds.tabLayout("ShelfLayout", selectTab=True, query=True) cmds.shelfButton(annotation='Delta Mush To Skin Cluster', command='import dm2sc.convert as convert\nconvert.main()', label='DM2SC', sourceType='python', image1='pythonFamily.png', imageOverlayLabel='DM2SC', parent=currentShelf)
def createScrollLayout(parent): if Utils.getMayaVersion() >= Utils.MAYA2011: return cmds.scrollLayout(parent=parent, childResizable=True) # scrollbar fake shamelessly stolen from Autodesk's own UI code return cmds.tabLayout(parent=parent, tv=False, childResizable=True, scrollable=True)
def buildUI(self): if cmds.dockControl("characterPicker_dockControl", exists=True): cmds.deleteUI("characterPicker_dockControl") self.widgets["window"] = cmds.window(title="Character Picker", w=400, h=600, mnb=False, mxb=False) self.widgets["mainLayout"] = cmds.columnLayout(w=400, h=600) self.widgets["tabLayout"] = cmds.tabLayout() for name in self.namespaces: self.widgets[(name + "_formLayout")] = cmds.formLayout(w=400, h=600, parent=self.widgets["tabLayout"]) namespace = name + ":" # create the buttons self.widgets[name + "_headButton"] = cmds.button(label="", w=40, h=40, bgc=[0, 0.593, 1]) cmds.button(self.widgets[name + "_headButton"], edit=True, c=partial(self.selectControls, [namespace + "head"], [(self.widgets[name + "_headButton"], [0, 0.593, 1])])) self.widgets[name + "_spine03Button"] = cmds.button(label="", w=100, h=40, bgc=[0.824, 0.522, 0.275]) cmds.button(self.widgets[name + "_spine03Button"], edit=True, c=partial(self.selectControls, [namespace + "spine_03"], [(self.widgets[name + "_spine03Button"], [0.824, 0.522, 0.275])])) self.widgets[name + "_spine02Button"] = cmds.button(label="", w=100, h=40, bgc=[0.824, 0.522, 0.275]) cmds.button(self.widgets[name + "_spine02Button"], edit=True, c=partial(self.selectControls, [namespace + "spine_02"], [(self.widgets[name + "_spine02Button"], [0.824, 0.522, 0.275])])) self.widgets[name + "_spine01Button"] = cmds.button(label="", w=100, h=40, bgc=[0.824, 0.522, 0.275]) cmds.button(self.widgets[name + "_spine01Button"], edit=True, c=partial(self.selectControls, [namespace + "spine_01"], [(self.widgets[name + "_spine01Button"], [0.824, 0.522, 0.275])])) self.widgets[name + "_selectAllSpineButton"] = cmds.button(label="", w=30, h=30, bgc=[0, 1, 0]) cmds.button(self.widgets[name + "_selectAllSpineButton"], edit=True, c=partial(self.selectControls, [(namespace + "spine_01"), (namespace + "spine_02"), (namespace + "spine_03")], [(self.widgets[name + "_spine01Button"], [0.824, 0.522, 0.275]), (self.widgets[name + "_spine02Button"], [0.824, 0.522, 0.275]), (self.widgets[name + "_spine03Button"], [0.824, 0.522, 0.275])])) # place the buttons cmds.formLayout(self.widgets[name + "_formLayout"], edit=True, af=[(self.widgets[name + "_headButton"], "left", 175), (self.widgets[name + "_headButton"], "top", 100)]) cmds.formLayout(self.widgets[name + "_formLayout"], edit=True, af=[(self.widgets[name + "_spine03Button"], "left", 145), (self.widgets[name + "_spine03Button"], "top", 150)]) cmds.formLayout(self.widgets[name + "_formLayout"], edit=True, af=[(self.widgets[name + "_spine02Button"], "left", 145), (self.widgets[name + "_spine02Button"], "top", 200)]) cmds.formLayout(self.widgets[name + "_formLayout"], edit=True, af=[(self.widgets[name + "_spine01Button"], "left", 145), (self.widgets[name + "_spine01Button"], "top", 250)]) cmds.formLayout(self.widgets[name + "_formLayout"], edit=True, af=[(self.widgets[name + "_selectAllSpineButton"], "left", 250), (self.widgets[name + "_selectAllSpineButton"], "top", 205)]) cmds.tabLayout(self.widgets["tabLayout"], edit=True, tabLabel=((self.widgets[(name + "_formLayout")], name))) # cmds.showWindow(self.widgets["window"]) cmds.dockControl(label="Character Picker", area="right", allowedArea="right", content=self.widgets["window"])