Exemple #1
0
def arnoldAboutDialog():
    arnoldAboutText =  u"Arnold for Maya\n\n"
    arnoldAboutText += "MtoA " + cmds.pluginInfo( 'mtoa', query=True, version=True)
    arnoldMercurialID = cmds.arnoldPlugins(getMercurialID=True)
    if not '(Master)' in arnoldMercurialID:
        arnoldAboutText += " - " + arnoldMercurialID
    arnoldAboutText += "\nArnold Core "+".".join(ai.AiGetVersion())+"\n\n"
    arnoldAboutText += u"(c) 2001-2009 Marcos Fajardo and (c) 2009-2015\nSolid Angle SL\n\n"
    arnoldAboutText += u"Developed by: Ángel Jimenez, Olivier Renouard,\nYannick Puech, Borja Morales, Nicolas Dumay,\nPedro Fernando Gomez, Pál Mezei\n\n"
    arnoldAboutText += u"Acknowledgements: Javier González, Miguel González, \nLee Griggs, Chad Dombrova, Gaetan Guidet, \nGaël Honorez, Diego Garcés, Kevin Tureski, \nFrédéric Servant"

    if (cmds.window("AboutArnold", ex=True)):
        cmds.deleteUI("AboutArnold")
    w = cmds.window("AboutArnold", title="About")
    cmds.window("AboutArnold", edit=True, width=402, height=280)
    cmds.rowColumnLayout( numberOfColumns=4, columnWidth=[(1,20), (2, 52), (3, 50), (4, 280)] )

    cmds.text(label="");cmds.text(label="");cmds.text(label="");cmds.text(label="")

    cmds.text(label="")
    cmds.image(image="MtoA_Logo.png")
    cmds.text(label="")
    cmds.text(align="left",label=arnoldAboutText)

    cmds.text(label="");cmds.text(label="\n");cmds.text(label="");cmds.text(label="")

    cmds.text(label="")
    cmds.text(label="")
    cmds.button( width=150,label='OK', command=('import maya.cmds as cmds;cmds.deleteUI(\"' + w + '\", window=True)') )
    cmds.setParent( '..' )
    
    cmds.showWindow(w)
Exemple #2
0
def UI():
	# check to see if the window exists
	if cmds.window('exampleUI', exists = True):
		cmds.deleteUI('exampleUI')
	#create the window
	window = cmds.window('exampleUI', title = 'exampleUI', w = 300, h = 300, mnb  = False, mxb = False, sizeable = False)
	#show window
	cmds.showWindow(window)
	# create a main layout
	mainLayout = cmds.columnLayout(h = 300, w = 300)
	# banner image
	imagePath = cmds.internalVar(userPrefDir = True) + 'icons' + '/test.jpg' # find the path to the image
	cmds.image(w = 300, h = 100, image = imagePath)
	cmds.separator(h = 15)# just a seperator
	# projects option menu
	projectsOptionMenu = cmds.optionMenu ( 'projectsOptionMenu', width = 300, changeCommand = populateCharacters, label = 'choose a project:     ') # change command needed to update character option menu based on what project is selected
	# create a character option menu
	characerOptionMenu = cmds.optionMenu ( 'characerOptionMenu', width = 300, label = 'choose a character: ')
	cmds.separator(h = 15) # just a seperator
	# create the build button
	cmds.button(label = 'build', w = 300, h = 50 ,c = build)
	# activate populate projects option menu
	populateProjects()
	# activate populate characaters option menu
	populateCharacters()
def editCharacter(*args):
    
    if cmds.window("artEditCharacterUI", exists = True):
        cmds.deleteUI("artEditCharacterUI")
    
    window = cmds.window("artEditCharacterUI", w = 300, h = 400, title = "Edit Character", mxb = False, mnb = False, sizeable = False)
    mainLayout = cmds.columnLayout(w = 300, h = 400, rs = 5, co = ["both", 5])
    
    #banner image
    toolsPath = cmds.internalVar(usd = True) + "mayaTools.txt"
    if os.path.exists(toolsPath):
        
        f = open(toolsPath, 'r')
        mayaToolsDir = f.readline()
        f.close()
	
    cmds.image(w = 300, h = 50, image = mayaToolsDir + "/General/Icons/ART/artBanner300px.bmp", parent = mainLayout)
    
    cmds.text(label = "", h = 1, parent = mainLayout)
    optionMenu = cmds.optionMenu("artProjOptionMenu", label = "Project:", w =290, h = 40, cc = getProjCharacters, parent = mainLayout)
    textScrollList = cmds.textScrollList("artProjCharacterList", w = 290, h = 300, parent = mainLayout)
    button = cmds.button(w = 290, h = 40, label = "Edit Export File", c = editSelectedCharacter, ann = "Edit the character's skeleton settings, joint positions, or skin weights.", parent = mainLayout)
    button2 = cmds.button(w = 290, h = 40, label = "Edit Rig File", c = editSelectedCharacterRig, ann = "Edit the character's control rig that will be referenced in by animation.", parent = mainLayout)
    
    cmds.text(label = "", h = 1)
    
    
    cmds.showWindow(window)
    getProjects()
    getProjCharacters()
Exemple #4
0
	def nu(self):
		if(cmds.window(self.win, q = 1, ex = 1)):
			cmds.deleteUI(self.win)
		if(cmds.windowPref(self.win, ex = True)):
			cmds.windowPref(self.win, r = True)

		cmds.window(self.win, t = "Export as FBX", h = 170, w = 250,rtf=1,s=0)
		mainCol = cmds.columnLayout()
		cmds.columnLayout()
		cmds.image( image="//10.10.35.93/data/_3dAppDomain/_images/maya_export_fbx.png",w=250,h=45 )
		cmds.text(label="")
		uRow = cmds.columnLayout()
		#zRow = cmds.rowLayout(numberOfColumns=1,cl1="left",cw1=170,ct1="left")
		cmds.button(label='click to set preset file')		
		#cmds.setParent(zRow)
		tRow = cmds.rowLayout(numberOfColumns=2,cl2=("right","left"),cw2=(170,70),ct2=("right","left"))

		self.expPath = cmds.textField()
		cmds.textField( self.expPath , edit=True, width = 140, enterCommand=('cmds.setFocus(\"' + self.expPath + '\")') )
		cmds.button(label='Browse',command='obj.abc()')
		cmds.setParent(tRow)
		cmds.setParent(uRow)
		cmds.text(label = " ")
		sRow = cmds.rowLayout(numberOfColumns=2,cl2=("center","center"),cw2=(120,130),ct2=("both","both"),co2=(10,05))
		butExp = cmds.button( label='Push Export', command='obj.sortAndExport()')
		cmds.button( label=" Close ", command=("obj.close()"))
		cmds.setParent(sRow)
		cmds.setParent(mainCol)
#		cmds.text(label="")
		cmds.showWindow(self.win)
    def __init__(self):
        if cmds.window('ms_info_window', query=True, exists=True):
            cmds.deleteUI('ms_info_window')

        window = cmds.window('ms_info_window', title='About Mayaseed', sizeable=False)

        cmds.columnLayout(rs=10, columnOffset=['both', 20], width=600)

        cmds.rowLayout(numberOfColumns=2)
        cmds.text('', width=30)
        cmds.image(image=os.path.join(ROOT_DIRECTORY, 'graphics', 'mayaseed.png'))
        cmds.setParent('..')

        cmds.text('Version ' + MAYASEED_VERSION)
        cmds.text('Mayaseed is a Maya plugin for exporting scenes to the appleseed renderer.')
        cmds.text('Written by Jonathan Topf.')

        cmds.rowLayout(numberOfColumns=4)
        cmds.button(label='Mayaseed website', command=('import webbrowser\nwebbrowser.open_new_tab("' + MAYASEED_URL + '")'))
        cmds.button(label='appleseed website', command=('import webbrowser\nwebbrowser.open_new_tab("' + APPLESEED_URL + '")'))
        cmds.text('', width=166)
        cmds.button(label='Close', command=('import maya.cmds as cmds\ncmds.deleteUI(\"' + window + '\", window=True)'), width=100)
        cmds.setParent('..')

        cmds.text('')

        cmds.setParent('..')

        cmds.showWindow(window)
Exemple #6
0
 def createLayout(self):     
    
     mainLayout = cmds.rowLayout(numberOfColumns=6, parent=self.parentLayout)
     
     #manipulator orientation
     #cmds.iconTextButton("manipOrientButton", style='textOnly',  label='-', h=self.hb, annotation="Selected objects", command=updateManipOrient)  
     #launchManipOrient()
     
     self.autoSmartSnapKeys       = AutoSmartSnapKeys()
     self.selectionCounter        = SelectionCounter()
       
     #selection        
     cmds.iconTextButton("selectionCounterButton", style='textOnly', font="smallPlainLabelFont", label='0', h=self.hb, annotation="Selected objects")  
     cmds.popupMenu("selectionCounterButtonMenu", button=1, postMenuCommand=self.selectionCounter.populateMenu)      
     
     #animation crash recovery
     cmds.image("animationCrashRecoveryLed", w=14, h=14, annotation="Test")  
             
     #menu
     cmds.iconTextButton(style='iconOnly',   w=self.wb, h=self.hb, image= uiMod.getImagePath("aTools"), highlightImage= uiMod.getImagePath("aTools copy"), annotation="aTools Menu")
     self.popUpaToolsMenu()
      
     self.update = Update()
     self.update.about = self.about
     self.update.checkUpdates(self, mainLayout)
  
     # set default config and startup scripts
     self.setDefaultConfig() 
def errorWindow_NamingConvention():
	print "Something went wrong...."

	for image in [IMG_NAMING_CONVENTION, IMG_FOLDERSTRUKTURE]:
		cmds.window(title="Read this !!!", sizeable=False)
		cmds.columnLayout()
		cmds.image(image = image)
		cmds.showWindow()
Exemple #8
0
def UI():
    #check to see if window exists
    if cmds.window("mkProjects", exists=True):
        cmds.deleteUI("mkProjects")

    #main window
    window = cmds.window("mkProjects", title="Project Quick Load", width=400, 
                        height=300, mnb=False, mxb=False, sizeable=False)

    #main layout
    mainLayout = cmds.columnLayout(width=400, height=300)

    #banner image
    imagePath = path.join(cmds.internalVar(upd=True), 'icons', 'mkProjects.jpg')
    #load image
    cmds.image(width=400, height=100, image=imagePath)

    cmds.separator(height=15)
    cmds.textField('location', width=400, editable=False, 
        text=getDefaultProject())

    #create projects option menu
    projectsOptionMenu = cmds.optionMenu("projectsOptionMenu", width=400, 
        label="Choose a project: ", cc=populateScenes)

    #populate projects with maya default project location
    populateProjects()

    cmds.separator(height=15)
    rowLayout = cmds.rowLayout(nc=2)

    #List Control
    scenesList = cmds.textScrollList("scenesList", 
        allowMultiSelection=False, width=300, dcc=loadFile)
    populateScenes()

    colLayout = cmds.columnLayout()
    cmds.button(label="Set Location", width=95, height=30, c=setLocation)
    cmds.separator(height=5)
    cmds.button(label="Create Project", width=95, height=30, 
        c=cmds.ProjectWindow)
    cmds.separator(height=5)
    cmds.button(label="Open Project", width=95, height=30, c=openProject)
    cmds.separator(height=5)
    cmds.button(label="Open Scenes", width=95, height=30, c=openScenes)
    cmds.separator(height=5)
    cmds.button(label="Open Textures", width=95, height=30, c=openTextures)
    cmds.separator(height=5)
    cmds.button(label="Open Renders", width=95, height=30, c=openRenders)

    #open scene button
    cmds.separator(height=15, parent=mainLayout)
    cmds.button(label="Load File", width=400, height=50, parent=mainLayout, 
        c=loadFile)

    #show window
    cmds.showWindow(window)
Exemple #9
0
def HdrlsLiveUI():	
	if cmds.window("HdrLightStudioLive", exists=True):
		cmds.deleteUI("HdrLightStudioLive")

	window = cmds.window("HdrLightStudioLive", w=300, h=350, mnb=False, mxb=False, sizeable=False, title="HDR Light Studio 4 Live")
	job1 = cmds.scriptJob(uiDeleted=[window, stopLiveSession])
	job2 = cmds.scriptJob(event=["quitApplication", stopLiveSession])

	#gfx that we need
	iconsPath = cmds.internalVar(upd=True) + "icons/"
	imageLogo = iconsPath + "HdrlsLogo.png"

	#create main layout
	mainLayout = cmds.columnLayout(w=300, h=350, columnOffset=["both", 5])

	#image logo location and image control
	cmds.separator(h=5)
	cmds.image(w=300, h=35, image=imageLogo)

	#renderer list
	cmds.separator(h=10)
	cmds.text(" Host Renderer")
	cmds.separator(h=2)
	exportFormatMenu = cmds.optionMenu("hostRendererMenu", w=300, changeCommand=hostRendererChanged)

	#text field for unavailable renderers
	cmds.separator(h=5)
	cmds.scrollField('rendererErrorText', text="Error will go here", w=300, h=70, visible=True, enable=False, ww=True)

	#environment hooks list
	cmds.separator(h=10)
	cmds.text(" Environment Hooks")
	cmds.separator(h=2)
	exportFormatMenu = cmds.optionMenu("envHooksMenu", w=300, changeCommand=envHookChanged)

	#refresh button for env hooks and sync to maya button to show in attribute editor
	cmds.separator(h=10)
	cmds.rowColumnLayout(nc=2, cw=[(1, 150), (2, 150)], columnOffset=[(1, "left", 15), (2, "right", 15)], parent=mainLayout)
	cmds.button(label="Refresh Env-Hooks", w=130, c=pushRefreshEnvHooks)
	cmds.button("syncToMaya", label="Show Hook In Maya", w=130, c=pushSyncMayaToEnvHooks)

	#Start/Stop Live Session
	cmds.separator(h=25)
	cmds.separator(h=25)
	cmds.button("initHdrls", label="Start Live", w=100, enable=True,c=pushStartLiveSession)
	cmds.button("exitHdrls", label="Stop Live", w=100, enable=True, c=pushExitLiveSession)
	cmds.separator(h=10, parent=mainLayout)

	#Version information
	cmds.text(HdrlsVersion.GetHdrlsScriptVersion(), parent=mainLayout, w=300, align="right", font="smallObliqueLabelFont")

	#populate initial lists
	populateHostRendererList()

	#show window
	cmds.showWindow(window)
 def __init__(self):
     
 
     #liste des attributs
     self.listNamespace = []
     self.listEmptyNamespace = []
     self.listSelectedNamespace = []
     
     
     #If the window already exists, erase it
     if cmds.window('InE_NSMWin', exists=True):
         cmds.deleteUI('InE_NSMWin')
     #Create the window
     #s : Can window be resized?
     #rtf : Resize to fit childrens?
     self.window = cmds.window('InE_NSMWin', title = "Namespace Manager", widthHeight=(520, 435), s = False, rtf=True)
     #Main layout
     cmds.formLayout("InE_NSMFlowLayout", p = 'InE_NSMWin', w = 50, h = 50)
     cmds.image(image="R:\Benoit\Scripts\maya\icons\NSMBackground.png")
     #Layout that draws an empty space at the top to see the beautyful flowers
     cmds.columnLayout('InE_NSMEmptyLayout', p = "InE_NSMFlowLayout", columnAttach=('both', 14), rowSpacing=5, columnWidth=520, cal="left"  )
     cmds.text(label = "", p = 'InE_NSMEmptyLayout')
     cmds.text(label = "", p = 'InE_NSMEmptyLayout')
     cmds.text(label = "", p = 'InE_NSMEmptyLayout')
     cmds.text(label = "", p = 'InE_NSMEmptyLayout')
     cmds.text(label = "", p = 'InE_NSMEmptyLayout')
     #Real main layout containing all the UI
     cmds.rowColumnLayout( 'InE_NSMMainLayout', p = "InE_NSMEmptyLayout", numberOfColumns=2, columnWidth=[(1, 300), (2, 190)], h = 330, ro = [[1, "both", 20], [2, "both", 10]], co = [[1, "both", 10], [2, "both", 0]])
     
     
     cmds.treeView('InE_NSMTextScrollList', parent = "InE_NSMMainLayout", numberOfButtons = 0, h= 150, abr = False, ams = True, adr = True, arp = True, idc = self.emptyMethod, sc = self.selectNamespace )
     cmds.treeView('InE_NSMTextScrollList', edit = True, enk = True)
     
     cmds.columnLayout('InE_NSMInformations', p = "InE_NSMMainLayout", columnAttach=('both', 0), cw = 250, rowSpacing=5, cal="left" , ebg = True)
     cmds.text(p = 'InE_NSMInformations', label = "Informations")
     cmds.text('InE_NSMNameInformations', p = 'InE_NSMInformations', label = "")
     cmds.text('InE_NSMEmptyInformations', p = 'InE_NSMInformations', label = "")
     
     cmds.columnLayout('InE_NSMModifications', p = "InE_NSMMainLayout", columnAttach=('both', 20), co = ("both", 10), cw = 250, rowSpacing=6, cal="left" , ebg = True)
     cmds.text(p = 'InE_NSMModifications', label = "Rename selected to: ")
     cmds.textField('InE_NSMNameInput', p = 'InE_NSMModifications')
     cmds.radioCollection('InE_NSMRadioCollection', p = 'InE_NSMModifications')
     cmds.radioButton('InE_NSMRadioButton1', label='and keep namespace hierarchy', select=True )
     cmds.radioButton('InE_NSMRadioButton2', label='and move namespace to root' )
     cmds.button('InE_NSMRenameSelected', p = 'InE_NSMModifications', label = "Rename selected", en = True, command = self.renameSelected)
     
     cmds.columnLayout('InE_NSMButtons', p = "InE_NSMMainLayout", columnAttach=('both', 20), co = ("both", 10), rowSpacing=23, cal="left" , ebg = True)
     cmds.button('InE_NSMRemoveSelected', p = 'InE_NSMButtons', label = "Remove selected", w = 128, en = True, command = self.removeSelected)
     cmds.button('InE_NSMRemoveEmpty', p = 'InE_NSMButtons', label = "Remove empty", w = 128, en = True, command = self.removeEmpty)
     cmds.button('InE_NSMRemoveAll', p = 'InE_NSMButtons', label = "Remove all", w = 128, en = True, command = self.removeAll)
     
     
     cmds.showWindow()   
     
     self.updateTreeView()
     print self.listNamespace
    def setLed(self, state):
        
        if not cmds.image("animationCrashRecoveryLed", query=True, exists=True): return
        
        self.blinkingRed(False)
        
        if state == "on":
            if self.saveRecommended:    
                image               = "ACR_red"
                ann                 = "Animation Crash Recovery recommends you to save"
                G.lastSaveWarning   = time.time() if not G.lastSaveWarning else G.lastSaveWarning
                
                if time.time() - G.lastSaveWarning >= self.redBlinkingSecs: self.blinkingRed(True)
                    
            else:                       
                image               = "ACR_green"
                ann                 = "Animation Crash Recovery is ON"
                G.lastSaveWarning   = None
            
            cmds.image("animationCrashRecoveryLed", edit=True, image= uiMod.getImagePath(image), ann=ann) 
            
        elif state == "off":
            cmds.image("animationCrashRecoveryLed", edit=True, image= uiMod.getImagePath("ACR_off"), ann="Animation Crash Recovery is OFF") 

        elif state == "blinking":
            self.blinkingLedState = not self.blinkingLedState
            image = "ACR_white_half" if self.blinkingLedState else "ACR_white_bright"
            cmds.image("animationCrashRecoveryLed", edit=True, image= uiMod.getImagePath(image), ann="Animation Crash Recovery is saving animation") 
            
        elif state == "blinking_red":
            self.blinkingLedState = not self.blinkingLedState
            image = "ACR_red_half" if self.blinkingLedState else "ACR_red_bright"
            cmds.image("animationCrashRecoveryLed", edit=True, image= uiMod.getImagePath(image), ann="Animation Crash Recovery HIGHLY recommends you to save") 
	def __init__(self):

		# Collect Variables: Paths
		fullPath = str(cmds.file(sceneName=True, q=True))
		self.rootFolder = "/".join(fullPath.split("/")[:-1])

		# Collect Variables: SceneName-Parts
		try:
			sceneName = fullPath.split("/")[-1]
			self.assetName = sceneName.split("_")[0]
			self.taskName = sceneName.split("_")[1]
			self.artist = vuPipelineHelpers.getArtist()
			self.sceneType = sceneName.split(".")[-1]
		except:
			mayaUtils.errorWindow_NamingConvention()
			return

		self.version = "v" + ("000" + str(VersionControl.getLatest(self.rootFolder, up=1, getNum=True)))[-3:]

		self.window = cmds.window("klPipeline_SaveIncr", title="Krotenlied-Pipeline: SaveScene+1", sizeable=False)

		# Header
		cmds.columnLayout(parent=self.window)
		cmds.image(image = HEADER_PATH)
		cmds.separator(h=5, vis=True, st='none')

		cmds.rowColumnLayout(parent=self.window, numberOfColumns=6)

		# Labels
		cmds.text( al="left", w=75, label='Name')
		cmds.text( al="left", w=50, label='Task')
		cmds.text( al="left", w=50, label='Version' )
		cmds.text( al="left", w=40, label='Artist')
		cmds.text( al="left", w=200, label='Comment')
		cmds.text( al="left", w=25, label='')

		# TextFields
		cmds.textField(ed=False, w=75, tx=self.assetName)
		cmds.textField(ed=False, w=50, tx=self.taskName)
		cmds.textField(ed=False, w=50, tx=self.version)
		cmds.textField(ed=False, w=40, tx=self.artist)
		self.textComment = cmds.textField(w=200, enterCommand=self.btnSave)
		cmds.textField(ed=False, w=25, tx="." + self.sceneType)

		# Button
		cmds.rowColumnLayout(parent=self.window, numberOfColumns=2)

		cmds.separator(w=300, h=20, vis=True, st='none')
		cmds.separator(st='none')
		cmds.separator(st='none')
		cmds.button(h=30, w=100, label='Save+1', command=self.btnSave)

		cmds.showWindow()
		cmds.setFocus(self.textComment)
Exemple #13
0
 def imageViewer(self):
         """
         Click thumbnail to see enlarged image
         """
         selectedImage=os.path.join(cmds.textField('location',q=True,tx=True),cmds.textScrollList('fileLister',q=True,
                                                                                                  si=True)[0]).split(" > ")[0]
         for each in ["jpg","png",'tif',"iff"]:
                 if selectedImage.endswith(each):
                         window = cmds.window(t="Image Viewer")
                         cmds.paneLayout()
                         cmds.image( image=selectedImage)
                         cmds.showWindow( window )
Exemple #14
0
 def previewCharacter(self, x=None) :
     ''' TODO: Stub '''
     
     self.mocapTable.clearSelection()
     self.loadButton.setText("Load Template")
     return
     print "Preview Character: " + str(x)
     item = self.getSelectedCharacter()
     if item is None : return
     loadThumb = "%s/character/%s/thumb/%s" % (self.pathPrefix, item.group['title'], item.thumb)
     tempThumb = self.cache.cacheFile(loadThumb)
     m.image("peelMocap_image", e=True, i=tempThumb)
     m.image("peelMocap_image", e=True, vis=True)
Exemple #15
0
 def _updateCommand(self):
     items = self.ui_listwidget.selectedItems()
     self.ui_textedit.setText('')
     cmds.image('MMtoKeyPyIconWidget', e=True, vis=False)
     self.ui_textedit.setEnabled(False)
     self.ui_button.setEnabled(False)
     if items:
         self.ui_combobox.setCurrentIndex(items[0].getLanguage())
     if len(items) == 1:
         self.ui_textedit.setText(items[0].getCommand())
         cmds.image('MMtoKeyPyIconWidget', e=True, vis=True, i=items[0].ICON)
         self.ui_textedit.setEnabled(True)
         self.ui_button.setEnabled(True)
 def findCharacterThumbnail(self):
     project = cmds.optionMenu(self.widgets["project"], q=True, value=True)
     selectedCharacter = cmds.textScrollList(self.widgets["characterList"], q=True, si=True)[0]
     thumbnailPath = os.path.join(self.mayaToolsDir, "General", "Icons", "ART", "Thumbnails", project)
     try:
         thumbnails = os.listdir(thumbnailPath)
         for thumb in thumbnails:
             if thumb.find("_small") == -1:
                 if thumb.find(selectedCharacter) == 0:
                     cmds.image(self.widgets["thumbnail"], edit=True, image=os.path.join(thumbnailPath, thumb))
     except:
         cmds.confirmDialog(icon="critical", title="Error", message="No thumbnail found for character")
         return
Exemple #17
0
def createGUI(): 
    '''
    Creates a user interface for the city generator script.
    
    On exit: A window with the user interface has been created.
    '''    
    GUIwindow = cmds.window( title = "City Generator")
    layout0 = cmds.columnLayout()
    imageNum = random.randint(1,19)
    cmds.image("cityImage", image="cityImages/dayImage" + str(imageNum) + ".jpg", width = 800, height = 288 )
    layout1 = cmds.rowLayout(nc = 2, parent = layout0)
    layout2 = cmds.columnLayout(parent = layout1, rs = 3)
    cmds.rowLayout(nc = 2, parent = layout2, cw2 = [140,250])
    cmds.text(label = "City name")
    cmds.textField("cityName", width = 240)
    cmds.intSliderGrp("cityWidth", field=True, label="City width", minValue=50, maxValue=200, fieldMinValue=50, fieldMaxValue=200, value=100, cal = [1,"left"],parent = layout2)
    cmds.intSliderGrp("cityDepth", field=True, label="City depth", minValue=50, maxValue=200, fieldMinValue=50, fieldMaxValue=200, value=100, cal = [1,"left"],parent = layout2)
    cmds.intSliderGrp("minHeight", field=True, label="Minimum house height", minValue=4, maxValue=40, fieldMinValue=4, fieldMaxValue=40, value=4, cal = [1,"left"],parent = layout2, dc = changeMaxHeight)
    cmds.intSliderGrp("maxHeight", field=True, label="Maximum house height", minValue=4, maxValue=40, fieldMinValue=4, fieldMaxValue=40, value=30, cal = [1,"left"],parent = layout2, dc = changeMinHeight)
    cmds.intSliderGrp("minWidth", field=True, label="Minimum house width", minValue=2, maxValue=20, fieldMinValue=2, fieldMaxValue=20, value=5, cal = [1,"left"],parent = layout2, dc = changeMaxWidth)
    cmds.intSliderGrp("maxWidth", field=True, label="Maximum house width", minValue=12, maxValue=30, fieldMinValue=12, fieldMaxValue=30, value=20, cal = [1,"left"],parent = layout2, dc = changeMinWidth)
    cmds.checkBoxGrp("features", numberOfCheckBoxes=3, label1="Windows", label2 = "Booleans", label3="Deformers", v1=True, v2 = False, v3 = True, cc1 =  windows, cc2 = booleans, cal = [1,"left"],parent = layout2,cw = [1,140])
    cmds.checkBoxGrp("time", numberOfCheckBoxes=3, label1="Daytime", label2="Nighttime", label3 = "All windows glow", v1=True, v2 = False, v3 = False, enable3 = False, cal = [1,"left"], parent = layout2,cw = [1,140], cc1 = daytime, cc2 = nighttime )
    cmds.colorSliderGrp("environment", label="Environment colour", hsv=(204, 0.451, 1), parent = layout2, cal = [1,"left"] )
    layout3 = cmds.columnLayout(parent = layout1)
    cmds.text("Set the colour range for the houses by selecting the ranges separately for hue,\nsaturation and value.", align  = "left")
    cmds.text("\nStart of range:", align = "left")
    cmds.rowLayout( numberOfColumns=2, parent = layout3, cw2 = [70,200])
    cmds.canvas("hueCanvas1", hsvValue=(0, 1, 1), width=70, height=15)
    cmds.intSliderGrp("hue1", field=True, label="Hue", minValue=0, maxValue=360, fieldMinValue=0, fieldMaxValue=360, value=0,cw3 = [70,70,170], dc = hueChange1 )
    cmds.rowLayout( numberOfColumns=2, parent = layout3, cw2 = [70,200])
    cmds.canvas("saturationCanvas1", hsvValue=(0, 1, 1), width=70, height=15)
    cmds.floatSliderGrp("saturation1", field=True, label="Saturation", minValue=0, maxValue=1, fieldMinValue=0, fieldMaxValue=1, value=1,cw3 = [70,70,170], dc = saturationChange1, step = 0.01)
    cmds.rowLayout( numberOfColumns=2, parent = layout3, cw2 = [70,200])
    cmds.canvas("valueCanvas1", hsvValue=(0, 1, 1), width=70, height=15)
    cmds.floatSliderGrp("value1", field=True, label="Value", minValue=0, maxValue=1, fieldMinValue=0, fieldMaxValue=1, value=1,cw3 = [70,70,170], dc = valueChange1, step = 0.01)
    cmds.text("End of range:", align =  "left", parent = layout3)
    cmds.rowLayout( numberOfColumns=2, parent = layout3, cw2 = [70,200])
    cmds.canvas("hueCanvas2", hsvValue=(0, 1, 1), width=70, height=15)
    cmds.intSliderGrp("hue2", field=True, label="Hue", minValue=0, maxValue=360, fieldMinValue=0, fieldMaxValue=360, value=0,cw3 = [70,70,170], dc = hueChange2 )
    cmds.rowLayout( numberOfColumns=2, parent = layout3, cw2 = [70,200])
    cmds.canvas("saturationCanvas2", hsvValue=(0, 1, 1), width=70, height=15)
    cmds.floatSliderGrp("saturation2", field=True, label="Saturation", minValue=0, maxValue=1, fieldMinValue=0, fieldMaxValue=1, value=1,cw3 = [70,70,170], dc = saturationChange2, step = 0.01)
    cmds.rowLayout( numberOfColumns=2, parent = layout3, cw2 = [70,200])
    cmds.canvas("valueCanvas2", hsvValue=(0, 1, 1), width=70, height=15)
    cmds.floatSliderGrp("value2", field=True, label="Value", minValue=0, maxValue=1, fieldMinValue=0, fieldMaxValue=1, value=1,cw3 = [70,70,170], dc = valueChange2, step = 0.01)
    cmds.button(label = "Randomize", command = randomize, parent = layout3)
    layout4 = cmds.rowLayout(numberOfColumns=2, parent = layout0, cw2 = [690,110])
    cmds.button(label="Generate City", command = defaultButtonPush, parent = layout4, w = 685, h = 50)
    cmds.button(label="Clear Scene", command = clearScene, parent = layout4, w = 110, h = 50)
    cmds.showWindow()
Exemple #18
0
def UI():
        rlmAttrs()
        images=os.path.join(mc.workspace(q=1,rd=1),"images",mc.getAttr("renderLayerManager.shotName"))
        if (mc.window('rcFileManage',exists=True)): mc.deleteUI('rcFileManage')
        mc.window('rcFileManage', mxb=0,title=' ',tlb=False,)

        ###Main
        mc.columnLayout('renderLayers2Files')#,bgc=[0.2,0.2,0.2] 
        mc.image(image=iconPath+'toptitle.png')
        mc.cmdScrollFieldReporter(clr=1,hf=0,w=700,h=80,bgc=[0,0,0])
        print '//rc.Tools'
	mc.setParent('..')

	mc.rowColumnLayout(numberOfColumns=3,columnWidth=[(1,row1),(2,row2),(3,480)])
	
	mc.text(al='right',font=ui.titleFont,label='  Image Prefix: ')
	mc.menuBarLayout()
	mc.menu(label='Shot Name/')
	mc.menuItem(label='<RenderLayer>/<RenderLayer>',c=partial(runMethod,'set.imagePrefix','("S__L__L")'))
	mc.menuItem(label='<RenderLayer>/<RenderLayer>.<RenderPass>',c=partial(runMethod,'set.imagePrefix','("S__L__L.P")'))
	mc.menuItem(label='<RenderLayer>/<RenderPass>/<RenderLayer>.<RenderPass>',c=partial(runMethod,'set.imagePrefix','("S__L__P__L.P")'))
	mc.menu(label='...')
	mc.menuItem(label='<RenderLayer>/<RenderLayer>',c=partial(runMethod,'set.imagePrefix','("L__L")'))
	mc.menuItem(label='<RenderLayer>/<RenderLayer>.<RenderPass>',c=partial(runMethod,'set.imagePrefix','("L__L.P")'))
	mc.menuItem(label='<RenderLayer>/<RenderPass>/<RenderLayer>.<RenderPass>',c=partial(runMethod,'set.imagePrefix','("L__P__L.P")'))
	mc.setParent('..')
	mc.textField('imageFilePrefix',font=ui.fieldFont,en=1,text=mc.getAttr('defaultRenderGlobals.imageFilePrefix'))    
	
	mc.setParent('..')
	mc.setParent('..')

	###ListsUI
	mc.rowColumnLayout('listLayout',numberOfColumns=3,columnWidth=[(1,102),(2,browselistWidth), (3, targetlistWidth)])#LISTS LAYOUT

	mc.columnLayout()
	mc.separator(h=10,style='in')
	
	mc.rowColumnLayout(numberOfColumns=2)
	mc.text('UNITS:  ',align='right',fn='tinyBoldLabelFont')
	mc.text(str(mc.currentUnit(query=True)),align='left',fn='tinyBoldLabelFont')
	mc.text('FPS:  ',align='right',fn='tinyBoldLabelFont')
	mc.text(str(sceneData.fps()),align='left',fn='tinyBoldLabelFont')
	mc.text('RENDER:  ',align='left',fn='tinyBoldLabelFont')
	mc.text(str(mc.getAttr('defaultResolution.width'))+'x'+str(mc.getAttr('defaultResolution.height')),align='left',fn='tinyBoldLabelFont')
	mc.setParent('..')
	mc.setParent('listLayout')
	bldBrowseList()
	mc.setParent('listLayout')
	bldTargetList('browser')
	mc.setParent('listLayout')
	mc.showWindow()	
	def __init__(self):
		# Settings:
		bgColor = [0.5, 0.5, 0.5]
		headerPath = "//bigfoot/kroetenlied/060_Software/Kroetenlied_Pipeline/vuMayaPlugins/scripts/saveIncr.jpg"


		# Collect Variables
		fullName = cmds.file(sceneName=True, q=True)
		paths = fullName.split("/")
		assetCode = paths[-2].split("_")[1]

		self.rootFolder = "/".join(paths[:-1])
		self.taskName = paths[-2].split("_")[2]
		self.assetName = Assets.getFullName(assetCode)
		self.artist = getpass.getuser()[:2]
		self.version = "v" + ("000" + str(VersionControl.getLatest(self.rootFolder, up=1, getNum=True)))[-3:]

		self.window = cmds.window(title="Krotenlied-Pipeline: SaveScene+1")

		# Header
		cmds.columnLayout(parent=self.window)
		cmds.image(image = headerPath)
		cmds.separator(h=5, vis=True, st='none')

		cmds.rowColumnLayout(parent=self.window, numberOfColumns=6)

		# Labels
		cmds.text( al="left", w=75, label='Name')
		cmds.text( al="left", w=50, label='Task')
		cmds.text( al="left", w=50, label='Version' )
		cmds.text( al="left", w=50, label='Artist')
		cmds.text( al="left", w=200, label='Comment')
		cmds.text( al="left", w=25, label='')

		# TextFields
		cmds.textField(ed=False, w=75, tx=self.assetName)
		cmds.textField(ed=False, w=50, tx=self.taskName)
		cmds.textField(ed=False, w=50, tx=self.version)
		cmds.textField(ed=False, w=50, tx=self.artist)
		self.textComment = cmds.textField(w=200)
		cmds.textField(ed=False, w=25, tx=".ma")

		# Button
		cmds.rowColumnLayout(parent=self.window, numberOfColumns=2)

		cmds.separator(w=300, h=20, vis=True, st='none')
		cmds.separator(st='none')
		cmds.separator(st='none')
		cmds.button(h=30, w=100, label='Save+1', command=self.btnSave)

		cmds.showWindow()
Exemple #20
0
 def fillModuleList( self, *args ):
     from marigold.utility.NodeUtility import getMetaNodesInScene
     from marigold.utility.FrameUtility import getFrameBitSettings
     
     # Clean up UI elements for refreshing the list.
     lChildren = cmds.scrollLayout( self.moduleList, query=True, childArray=True )
     if lChildren is not None:
         for c in lChildren:
             cmds.deleteUI( c )
             #self.aRows = []
     
     # Build module list for ui.
     moduleList = getMetaNodesInScene( 'frameModule' )
     print moduleList
     
     previousColor = 2
     warningPip = False
     for i, module in enumerate( moduleList ):
         print i, module
         
         # Get the required plug data.
         moduleData = {}
         nodeAttrs = getFrameBitSettings( module )    
         moduleData['priority'] = nodeAttrs['buildPriority']
         moduleData['frameName'] = module
         moduleData['modFolder'] = nodeAttrs['buildFolder']
         moduleData['modFile'] = nodeAttrs['metaClass']
         
         # Set the row color.
         color = 1
         if previousColor is 1:
             color = 2
             previousColor = 2
         else:
             color = 1
             previousColor = 1
             
         # Make the row.
         self.modListColumn = cmds.rowColumnLayout( parent=self.moduleList, numberOfColumns=6,
                                                    columnWidth=[(1,26),(2,30),(3,90),(4,50),(5,50),(6,20)],
                                                    columnSpacing=[(1,2),(2,2),(3,2),(4,2),(5,2),(6,2)],
                                                    backgroundColor=self.rowColors[color-1] )
         cmds.intField( editable=False, value=moduleData['priority'] )
         cmds.image( image='icon_warning_pip.png', visible=warningPip )
         cmds.text( label=moduleData['frameName'] )
         cmds.button( label='options' )
         cmds.button( label='build', command=lambda v, a1=moduleData['modFolder'], a2=moduleData['modFile']: buttonBuildTemp( v, a1, a2 ) )
         cmds.checkBox( label='' )            
         cmds.setParent( '..' )#self.modListColumn
 def loadWindow():
     
     mayaFileName    = infoData["mayaFileName"]
     message         = "%s\n%s\n\nWarning: Loading crash files after editing your Maya file can lead to unpredictable results."%(mayaFileName, time.ctime(modDate))
     
     formLayout      = cmds.setParent(query=True)        
     icon            = cmds.image(image= uiMod.getImagePath("ACR_white_bright")) 
     titleText       = cmds.text(label="Do you want to load?", font="boldLabelFont", align="left")  
     messageText     = cmds.text(label=message, align="left")
     buttonLoad      = cmds.button(label='Load', command='cmds.layoutDialog(dismiss="load")')
     buttonLoadSel   = cmds.button(label='Load On Selection', command='cmds.layoutDialog(dismiss="load_selection")', w=110)
    
     cmds.formLayout (formLayout, edit=True, width=300, height=170,
                     attachPosition   = [
                                      (icon, 'left', 10, 0), 
                                      (icon, 'top', 10, 0),  
                                      (titleText, 'top', 10, 0), 
                                      (messageText, 'left', 10, 0), 
                                      (messageText, 'top', 0, 30),
                                      (buttonLoad, 'left', 10, 0),
                                      (buttonLoad, 'bottom', 10, 100),
                                      (buttonLoadSel, 'bottom', 10, 100)
                                      ],
                     attachForm       = [
                                      (buttonLoad, 'left', 10),
                                      (buttonLoadSel, 'right', 10)
                                      ],
                     attachControl    = [
                                      (titleText, 'left', 10, icon),
                                      (buttonLoad, 'right', 5, buttonLoadSel)
                                      ])
 def warningWindow():
 
     formLayout      = cmds.setParent(query=True)        
     icon            = cmds.image(image= uiMod.getImagePath("ACR_white_bright")) 
     titleText       = cmds.text(label="You have newer animation. Do you want to load?", font="boldLabelFont", align="left")
     messageText     = cmds.text(label=message, align="left")
     buttonLoad      = cmds.button(label='Load', command='cmds.layoutDialog(dismiss="load")')
     buttonMaybe     = cmds.button(label='Maybe Later', command='cmds.layoutDialog(dismiss="maybe")', w=100)
     
   
     cmds.formLayout (formLayout, edit=True, width=300, height=height,
                     attachPosition   = [
                                      (icon, 'left', 10, 0), 
                                      (icon, 'top', 10, 0),  
                                      (titleText, 'top', 10, 0), 
                                      (messageText, 'left', 10, 0), 
                                      (messageText, 'top', 0, 30),
                                      (buttonLoad, 'left', 10, 0),
                                      (buttonLoad, 'bottom', 10, 100),
                                      (buttonMaybe, 'bottom', 10, 100)
                                      ],
                     attachForm       = [
                                      (buttonLoad, 'left', 10),
                                      (buttonMaybe, 'right', 10)
                                      ],
                     attachControl    = [
                                      (titleText, 'left', 10, icon),
                                      (buttonLoad, 'right', 5, buttonMaybe)
                                      ])
Exemple #23
0
def UI():
    # kill all jobs
    cmds.scriptJob( ka=True, force=True)
    
    # check to see if our window exists
    if cmds.window("ExampleUI", exists = True):
        cmds.deleteUI("ExampleUI")
    
    # create our window
    window = cmds.window("ExampleUI", title = "Example UI", w = 300, h = 300, mnb = False, mxb = False, sizeable = False)

    # create main layout
    mainLayout = cmds.columnLayout(w = 300, h = 300)

    # banner image
    imagePath = cmds.internalVar(upd = True) + "icons/rc.jpg"
    cmds.image(w = 300, h = 100, image = imagePath)

    # create projects option menu
    cmds.separator(h = 15)
    projectsOptionsMenu = cmds.optionMenu(w = 300, label = "Choose a Project: ")

    # create character option menu
    cmds.separator(h = 15)
    characterOptionMenu = cmds.optionMenu(w = 300, label = "Choose a Character: ")

    # create the build button
    cmds.separator(h = 15)
    cmds.button(label = "X", w = 300, h = 30, c = partial(flatten,"x"))
    cmds.button(label = "Y", w = 300, h = 30, c = partial(flatten,"y"))
    cmds.button(label = "Z", w = 300, h = 30, c = partial(flatten,"z"))
    cmds.button(label = "Merge into last", w = 300, h = 30, c = combineto)
    cmds.button(label = "Locator at location", w = 300, h = 30, c = locatorSpaced)
    cmds.separator(h = 15)

    textField = cmds.textField('textField', text = "Nothing selected")

    # show our window
    cmds.showWindow(window)

    # kill all jobs
    cmds.scriptJob( ka=True, force=True)
            
    # call function on selection change
    cmds.scriptJob(kws=True, event=("SelectionChanged",changedSelection))
def UI():

	# close window if exists
	if cmds.window('wf_exporter', exists=True):
		cmds.deleteUI('wf_exporter')
	
	# create window	
	window = cmds.window('wf_exporter', title='Worldforge Exporter', w=200, h=500, mnb= False, mxb=False, sizeable=False)
	
	main_layout = cmds.columnLayout(w=100, h=300)

	#header image path
	img_path = cmds.internalVar(upd=True)+ 'icons/wf_header.jpg'
	cmds.image(w=215, h=52, image = img_path)


	#cmds.window('wf_exporter45', title='Worldforge Exporter', w=200, h=200, mnb= False, mxb=False, sizeable=True)
	cmds.frameLayout(label="Utilities", collapsable=True, collapse=False) 
	cmds.rowLayout(numberOfColumns=2, columnWidth2=(102, 105), adjustableColumn1=True, columnAttach=[(1, 'both', 0), (2, 'both', 0), (3, 'both', 0)] )	
	cmds.button(label="Add Mat Attrs", command=add_wf_mat_name_attr)
	cmds.button(label='Re-Path Textures', command=repath_scene_textures)
	cmds.setParent( '..' )
	cmds.separator(h=5)

	# rename materials section
	cmds.columnLayout( columnAttach=('both', 5), rowSpacing=10, columnWidth=200 )
	cmds.button( label='Re-Name Materials',w=199, command=rename_materials)
	cmds.setParent( '..' )

	# rename objects section
	cmds.columnLayout( columnAttach=('both', 5), rowSpacing=10, columnWidth=200 )
	cmds.textField('txt_input', w=199)
	cmds.button( label='Re-Name Selected',w=199, command=rename_objects)
	cmds.setParent( '..' )

	
	cmds.frameLayout(label="Exporter", collapsable=True, collapse=False) 
	cmds.separator(h=5)
	cmds.columnLayout( columnAttach=('both', 5), rowSpacing=10, adjustableColumn=True  )

	cmds.button(label="Export Static", width=199, h=50, command=export_static_ogre)
	cmds.button(label="Export Animated", width=199, h=50, enable=False)
	
	cmds.setParent( '..' )
	cmds.showWindow()
    def CreateUI(self):      

        #Deletes the buffer separator
        try:cmds.deleteUI("BufferTT")
        except:pass
        
        #Create Previews
        if not os.path.exists(self.Snap):
            ScreenCapture.ScreenCapture( self.Snap, [309,160]) 
        
        #Create a TextLabel for the turntable
        cmds.text(self.LabelText, p = "TurnTableLayout", label = "Turntable " + str( self.CurrentIndex ), bgc = [0.361, 0.361, 0.361] , w = 309, h = 20, font = "boldLabelFont")
            
        #Create preview image on window
        cmds.image(self.Image, image = self.Snap, p = "TurnTableLayout")
        cmds.button(self.Switch, c = self.SwitchTT, bgc = [0.361, 0.361, 0.361], label = "Included in next rendering", p = "TurnTableLayout")
        cmds.text(self.RangeText, w = 309, p = "TurnTableLayout", label = "From frame                                   To frame    ")
        cmds.rowLayout( self.RangeLayout, w = 309, numberOfColumns = 2, p = "TurnTableLayout")
        cmds.intField( self.MinField, w = 154, min = 0, max = 35, v = cmds.getAttr(self.Camera + ".StartRange") , p = self.RangeLayout, cc = self.Range )
        cmds.intField( self.MaxField, w = 154, min = 0, max = 35, v = cmds.getAttr(self.Camera + ".StopRange"), p = self.RangeLayout, cc = self.Range)
        
        cmds.separator( self.Separator, w = 309, h = 10, p = "TurnTableLayout")
        
        #Create popupMenu for images     
        cmds.popupMenu( self.PopUp, parent = self.Image )
        cmds.menuItem( label = 'Edit Current Camera', p = self.PopUp, c = self.ChangePersp )
        cmds.menuItem( label = 'Delete Camera' , p = self.PopUp, c = self.deleteTurntable )
        cmds.menuItem( label='Copy Camera Information', p = self.PopUp, c = self.CopyCameraInfo )
        cmds.menuItem( divider = True, p = self.PopUp)
        cmds.menuItem( divider = True, p = self.PopUp)
        cmds.menuItem( label='Delete all turntables', p = self.PopUp, c = TurntableClass.DeleteAllSnapshots )
        
        #Update the counter
        if len(TurntableClass.Turntables) > 0:
            cmds.text("TurntableCounter", edit = True, label = "Turntable Count = " + str(len(TurntableClass.Turntables)), bgc = [0, 0.361, 0])
        else:
            cmds.text("TurntableCounter", edit = True, label = "Turntable Count = " + str(len(TurntableClass.Turntables)) + ", Min required is 1", bgc = [0.361, 0, 0])
        
        #Update the buffer separator
        if len(TurntableClass.Turntables) == 1:
            cmds.separator("BufferTT", h = 400, p = "TurnTableLayout", style = "none")
        elif len(TurntableClass.Turntables) == 2:
            cmds.separator("BufferTT", h = 200, p = "TurnTableLayout", style = "none")
        else:
            cmds.separator("BufferTT", h = 10 , p = "TurnTableLayout", style = "none")
def UI():
    # Check to see if the window exists
    if cmds.window("testUI", exists=True):
        cmds.deleteUI("testUI")
        
    # Create a window 
    windowA = cmds.window("testUI", title="ExampleUI", w=300, h=300,  mnb=False, mxb=False, sizeable=False)
    
    # Create a main layout
    mainLayout = cmds.columnLayout(w=300, h=300)
    # Banner Image
    #imagePath = cmds.internalVar
    imagePath = "C:/Users/rgriffin/Google Drive/RG_ARTTOOLS/learnPython/exbanner.png"
    cmds.image(h=300, w=300, image=imagePath)
    
    # Show window
    cmds.showWindow(windowA)
    
    def RefreshImage( self ):
        cmds.undoInfo(openChunk = True)
        cmds.hudButton("SnapButton", edit = True, label = "Create Turntable", rc = TurntableClass.CreateTurntable)
        #If the active cam is not the current cam exit the function
        if self.GetActiveCamera() != self.Camera + "Shape":
            return 0
        
        #remove the old image
        os.remove( self.Snap) 
 
        #Create new Preview
        ScreenCapture.ScreenCapture( self.Snap, [309,160] ) 

        #Create preview image on window
        cmds.image( self.Image, edit = True, image = self.Snap )
        
        TurntableClass.SetActiveCamera("persp")
        cmds.undoInfo(closeChunk = True)
	def initDimensions(self):
		# Creating a temp window.
		# This window will never be shown.
		filePath = os.path.join( self.path, self.iconName )
		win = cmds.window()
		cmds.columnLayout()
		if( self.iconType == "xpm" ):
			# Create a picture
			pic = cmds.picture( i=filePath )
			self.width = cmds.picture( pic, q=True, w=True)
			self.height = cmds.picture( pic, q=True, h=True)
		else:
			# Create a image
			pic = cmds.image( i=filePath )
			self.width = cmds.image( pic, q=True, w=True)
			self.height = cmds.image( pic, q=True, h=True)		
		print( "Icon Width: %s, Height: %s" %(self.width, self.height))
		cmds.deleteUI(win)
Exemple #29
0
 def _selectMarkingMenu(self):
     fileread = cmds.fileDialog2(fm=1, ff='menu_*.mel', dir=cmds.internalVar(umm=True), cap='open Marking Menu')[0]
     self.ui_listwidget.clear()
     self.ui_listwidget.setCurrentRow(-1)
     self.ui_textedit.setText('')
     self.ui_button.setEnabled(False)
     cmds.image('MMtoKeyPyIconWidget', e=True, vis=False)
     self.fileread = fileread
     with open(self.fileread, 'r') as filelink:
         self.textblock = filelink.readlines()
     i = 0
     while i < len(self.textblock):
         if 'menuItem' in self.textblock[i]:
             element = MenuItem(self.textblock)
             i = element.lookThrow(i + 1)
             if not element.NOT_INCLUDE and element.LABEL:
                 self.ui_listwidget.addItem(element)
         else:
             i += 1
	def __init__(self):

		nameSpaces = cmds.namespaceInfo(lon=True)

		self.Characters = []
		for nameSpace in nameSpaces:
			assetName = nameSpace.split("_")[0]
			if assetName in klAssetNames.AssetNames:
				self.Characters.append(assetName)


		self.window = cmds.window(
						title="Krotenlied-Pipeline: Alembic Export",
						sizeable = False,
						minimizeButton = False,
						maximizeButton = False)

		# Header
		cmds.columnLayout(parent=self.window)
		cmds.image(image = HEADER_PATH)
		cmds.separator(h=5, vis=True, st='none')

		mainLayout = cmds.rowColumnLayout(parent=self.window, numberOfColumns=1)


		# Check Boxes
		cmds.frameLayout("Characters", collapsable=False, w=198, p=mainLayout)
		cmds.rowColumnLayout(numberOfColumns=2)
		self.checkBoxes = []
		for char in self.Characters:
			cmds.separator(w=40, st=None, vis=True)
			checkBox = cmds.checkBox(label=char, changeCommand=self.checkCheckBoxes, value=True)

			self.checkBoxes.append(checkBox)


		# Button
		cmds.separator(h=20, vis=True, st='none', p=mainLayout)
		self.buttonExport = cmds.button(h=30, w=100, label="Export Selected", command=self.btnExport, p=mainLayout)

		self.checkCheckBoxes()
		cmds.showWindow()
def createUI():
    ''' Function to generate the user interface. '''

    windowID = "GUI"
    if mc.window(windowID, exists=True):
        mc.deleteUI(windowID)

    winControl = mc.window(windowID, title='Growth Control', w=100)

    mc.columnLayout(columnAttach=('both', 5),
                    rowSpacing=7,
                    columnWidth=10,
                    adjustableColumn=True)

    mc.rowLayout(nc=3,
                 cat=[(1, 'both', 1), (2, 'both', 10), (3, 'both', 1)],
                 adjustableColumn=2)
    mc.separator()
    scriptPath = os.environ['MAYA_SCRIPT_PATH'].split(";")[0]
    mc.image(image=scriptPath + '/thumbnail.png', h=150)
    mc.separator()
    mc.setParent('..')

    mc.separator()
    mc.text(label="Submeshes Names")
    submeshNamesCtrl = mc.scrollField(editable=True,
                                      wordWrap=True,
                                      text="MeshName",
                                      h=100)
    mc.separator(style='in')

    mc.text(label="Distribution Type")

    alignmentTypeCtrl = mc.radioCollection()
    mc.rowLayout(nc=3, cat=[(1, 'both', 10), (2, 'both', 10), (3, 'both', 10)])
    randomCtrl = mc.radioButton(label='Random',
                                align='center',
                                sl=True,
                                ann='random')
    alignedCtrl = mc.radioButton(label='Aligned', align='center')
    evenCtrl = mc.radioButton(label='Evenly Spaced', align='center')
    mc.setParent('..')
    mc.separator(style='in')

    mc.rowLayout(nc=3, cat=[(1, 'both', 1), (2, 'both', 10), (3, 'both', 1)])
    mc.separator()
    randRotCtrl = mc.checkBox(l='Random Yaw Rotation', v=True)
    mc.separator()
    mc.setParent('..')
    mc.separator(style='in')

    mc.rowLayout(nc=2,
                 cat=[(1, 'left', 5), (2, 'both', 5)],
                 adjustableColumn=2)
    numberText = mc.text("Number of instances")
    numberCtrl = mc.intField(v=100, w=1)
    mc.setParent('..')
    mc.separator(style='in')

    mc.rowLayout(nc=2,
                 cat=[(1, 'left', 5), (2, 'both', 5)],
                 adjustableColumn=2)
    widthText = mc.text("Instances along X-axis", enable=False)
    widthCtrl = mc.intField(v=20, w=1, min=1, max=100, step=1, enable=False)
    mc.setParent('..')
    mc.rowLayout(nc=2,
                 cat=[(1, 'left', 5), (2, 'both', 5)],
                 adjustableColumn=2)
    heightText = mc.text("Instances along Y-axis", enable=False)
    heightCtrl = mc.intField(v=20, w=1, min=1, max=100, step=1, enable=False)
    mc.setParent('..')
    mc.rowLayout(nc=2,
                 cat=[(1, 'left', 5), (2, 'both', 5)],
                 adjustableColumn=2)
    depthText = mc.text("Instances along Z-axis", enable=False)
    depthCtrl = mc.intField(v=20, w=1, min=1, max=100, step=1, enable=False)
    mc.setParent('..')
    mc.separator(style='in')

    mc.rowLayout(nc=3,
                 cat=[(1, 'both', 1), (2, 'both', 10), (3, 'both', 1)],
                 adjustableColumn=2)
    mc.separator()
    animatedCtrl = mc.checkBox(l='Animated Base Mesh', v=False)
    mc.separator()
    mc.setParent('..')
    mc.separator(style='in')

    mc.text(label="Growth Animation Type")

    mc.radioCollection()
    mc.rowLayout(nc=3,
                 cat=[(1, 'both', 10), (2, 'both', 10), (3, 'both', 10)],
                 adjustableColumn=1)
    uniformCtrl = mc.radioButton(label='Uniform', align='center')
    useSphereCtrl = mc.radioButton(label='Sphere Mask',
                                   align='center',
                                   sl=True)
    alongSurfaceCtrl = mc.radioButton(label='Along surface', align='center')
    mc.setParent('..')

    influenceTextCtrl = mc.text(label='Growth Influence Type')
    mc.radioCollection()
    mc.rowLayout(nc=2, cat=[(1, 'left', 10), (2, 'left', 10)])
    insideCtrl = mc.radioButton(label='Inside Sphere', align='center', sl=True)
    outsideCtrl = mc.radioButton(label='Outside Sphere', align='center')
    mc.setParent('..')

    mc.rowLayout(nc=2,
                 cat=[(1, 'left', 5), (2, 'both', 5)],
                 adjustableColumn=2)
    speedTextCtrl = mc.text(label='Submesh growth speed', vis=False)
    speedCtrl = mc.floatField(v=4, vis=False)
    mc.setParent('..')
    mc.separator(style='in')

    mc.rowLayout(nc=5,
                 adjustableColumn5=3,
                 cat=[(1, 'left', 1), (2, 'left', 2), (3, 'both', 5),
                      (4, 'right', 2), (5, 'right', 1)])
    mc.text(label="Start Frame")
    startFrameCtrl = mc.intField(w=60, v=1)
    mc.separator(w=5)
    mc.text(label="End Frame")
    endFrameCtrl = mc.intField(w=60, v=50)
    mc.setParent('..')
    mc.separator(style='in')

    mc.radioButton(randomCtrl,
                   e=True,
                   cc=ft.partial(switchRandomAlignmentSettings, numberText,
                                 numberCtrl))
    mc.radioButton(alignedCtrl,
                   e=True,
                   cc=ft.partial(switchAlignedAlignmentSettings, widthText,
                                 widthCtrl, heightText, heightCtrl, depthText,
                                 depthCtrl))
    mc.radioButton(evenCtrl,
                   e=True,
                   cc=ft.partial(switchRandomAlignmentSettings, numberText,
                                 numberCtrl))
    mc.radioButton(uniformCtrl,
                   e=True,
                   cc=ft.partial(switchInfluenceTypeSettings,
                                 influenceTextCtrl, insideCtrl, outsideCtrl))
    mc.radioButton(useSphereCtrl,
                   e=True,
                   cc=ft.partial(changeInfluenceTypeLabels, insideCtrl,
                                 outsideCtrl, 'Inside Sphere',
                                 'Outside Sphere'))
    mc.radioButton(alongSurfaceCtrl,
                   e=True,
                   cc=ft.partial(changeInfluenceTypeLabelsForAlongSurface,
                                 insideCtrl, outsideCtrl,
                                 'Inwards Towards Sphere',
                                 'Outwards From Sphere', speedTextCtrl,
                                 speedCtrl))

    mc.button(label="Generate, populate and animate!",
              command=ft.partial(populateGenerateAnimate, alignmentTypeCtrl,
                                 randomCtrl, alignedCtrl, evenCtrl,
                                 submeshNamesCtrl, useSphereCtrl,
                                 alongSurfaceCtrl, insideCtrl, startFrameCtrl,
                                 endFrameCtrl, numberCtrl, widthCtrl,
                                 heightCtrl, depthCtrl, animatedCtrl,
                                 speedCtrl, randRotCtrl))

    mc.separator(style='in')

    mc.showWindow(winControl)
Exemple #32
0
def build_gui_sphere_type():
    ''' Builds the UI for GT Sphere Types '''
    if cmds.window("build_gui_sphere_type", exists=True):
        cmds.deleteUI("build_gui_sphere_type")

    # main dialog Start Here =================================================================================

    build_gui_sphere_type = cmds.window("build_gui_sphere_type", title='Sphere Types - (v' + script_version + ')',\
                          titleBar=True,minimizeButton=False,maximizeButton=False, sizeable =True)
    cmds.window(build_gui_sphere_type, e=True, s=True, wh=[1, 1])

    content_main = cmds.columnLayout(adj=True)

    # Generate Header Image
    icons_folder_dir = cmds.internalVar(userBitmapsDir=True)
    header_img = icons_folder_dir + 'gt_m1_sphere_types.png'

    if os.path.isdir(icons_folder_dir) and os.path.exists(header_img) == False:
        image_enconded = 'iVBORw0KGgoAAAANSUhEUgAAAMgAAAA/CAYAAAClz4c/AAAACXBIWXMAAFxGAABcRgEUlENBAAAF8WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIwLTExLTA0VDE2OjEzOjMyLTA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTExLTA0VDE2OjEzOjMyLTA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMC0xMS0wNFQxNjoxMzozMi0wODowMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpkODMyNzVmNi1mMTAwLTliNGMtOGMzYy1iOTJjYmJmN2I2ZDgiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDoyZDQ3MjNjNS0yMDM5LTUzNDgtYTRlYi02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'
        #image_64_decode = base64.decodestring(image_enconded)
        image_64_decode = base64.b64decode(image_enconded)
        image_result = open(header_img, 'wb')
        image_result.write(image_64_decode)
        image_result.close()

    cmds.rowColumnLayout(numberOfColumns=1,
                         columnWidth=[(1, 200), (2, 100), (3, 10)],
                         cs=[(1, 10), (2, 5), (3, 5)])

    cmds.image(image=header_img)

    cmds.text("Sphere Options:")
    cmds.separator(h=5, p=content_main, st="none")
    cmds.rowColumnLayout(p=content_main,
                         numberOfColumns=3,
                         columnWidth=[(1, 100), (2, 100), (3, 10)],
                         cs=[(1, 10), (2, 5), (3, 5)])
    cmds.separator(h=3, p=content_main, st="none")
    cmds.button(l="Standard Sphere",
                c=lambda x: create_standard_sphere(),
                w=100)
    cmds.button(l="Platonic Sphere A", c=lambda x: create_platonic_sphere_a())
    #cmds.separator(h=10, st="none" )
    cmds.rowColumnLayout(p=content_main,
                         numberOfColumns=2,
                         columnWidth=[(1, 100), (2, 100), (3, 10)],
                         cs=[(1, 10), (2, 5), (3, 5)])
    cmds.button(l="Cube Sphere", c=lambda x: create_cube_sphere(), w=100)
    cmds.button(l="Platonic Sphere B", c=lambda x: create_platonic_sphere_b())
    cmds.separator(h=10, st="none")

    # Show and Lock Window
    cmds.showWindow(build_gui_sphere_type)
    cmds.window(build_gui_sphere_type, e=True, s=False)

    # Set Window Icon
    qw = omui.MQtUtil.findWindow(build_gui_sphere_type)
    if python_version == 3:
        widget = wrapInstance(int(qw), QWidget)
    else:
        widget = wrapInstance(long(qw), QWidget)
    icon = QIcon(':/lambert.svg')

    widget.setWindowIcon(icon)
Exemple #33
0
def UI():
    #function attributes that will be used for getting final settings from the UI
    UI.targetPrim = 'Cube'
    UI.population = 0
    UI.resolution = 256

    #default radius/size
    UI.targetPrimSize = 2

    #target color
    UI.targetR = 1
    UI.targetG = 1
    UI.targetB = 1

    #target rotation
    UI.targetOrientation = (0, 0, 0)
    UI.randomOrientation = False

    #target in middle/random
    UI.targetMiddle = False
    UI.targetOffsetRange = 1

    UI.lightRot = (0.0, 0.0, 0.0)
    UI.lightIntensity = 0.8

    UI.exportTargetData = True
    UI.exportLightData = False
    UI.exportNoiseData = False

    #if mc.window('UIwindow', exists = True):
    #  mc.deleteUI(uiwindow)
    #  print('deleted previous window')

    uiwindow = mc.window('UIw2255342s32222222ndow',
                         t='Training Scene Generator',
                         widthHeight=(320, 520),
                         mnb=False,
                         mxb=False,
                         sizeable=False)

    #main layout
    mainLayout = mc.columnLayout(w=320, h=520, co=('left', 10))

    #header image
    mc.separator(12)
    imagePath = mc.internalVar(upd=True) + "icons/SG2000Logo.png"
    mc.image(w=320, h=93, image=imagePath)
    mc.separator(h=18)

    #-------------------------------------TARGET PRIM-------------------------------------#
    #dropdown for target object
    targetDropdownMenu = mc.optionMenu('targetDropdownMenu',
                                       w=280,
                                       label='Target Primitive Geometry: ',
                                       cc=partial(updateTargetPrim))

    #RGB sliders
    mc.separator(h=6)
    mc.text("Target Primitive Color RGB")
    mc.separator(h=6)

    mc.rowColumnLayout(numberOfRows=1, rowSpacing=(10, 10))
    mc.text('R:')
    mc.floatSlider('targetRSlider',
                   min=0,
                   max=30,
                   value=0,
                   step=1,
                   cc=setTargetRGB,
                   bgc=(.6, 0.2, 0.2))
    mc.text('G:')
    mc.floatSlider('targetGSlider',
                   min=0,
                   max=30,
                   value=0,
                   step=1,
                   cc=setTargetRGB,
                   bgc=(.2, .6, .2))
    mc.text('B:')
    mc.floatSlider('targetBSlider',
                   min=0,
                   max=30,
                   value=0,
                   step=1,
                   cc=setTargetRGB,
                   bgc=(0.4, 0.4, .8))
    mc.setParent('..')

    #POSITION AND ORIENTATION AND SIZE
    mc.separator(6)
    mc.rowColumnLayout(numberOfRows=1)
    mc.checkBox('in_mid', v=UI.targetMiddle, cc=setTargetMidBool)
    mc.checkBox('rand_rot', cc=setRandomOrientation)

    mc.text('size: ')
    mc.intField('radiusIntField', w=30, v=2, cc=changeRadiusIntField)
    mc.text('offset: ')
    mc.intField('offsetIntField',
                w=30,
                maxValue=10,
                minValue=0,
                v=UI.targetOffsetRange,
                cc=changeOffsetIntField)
    mc.separator(6)
    mc.setParent('..')

    #CREATE OR DELETE PRIM
    mc.rowColumnLayout(numberOfRows=1)
    mc.button(label='CREATE', c=partial(createTargetPrim))
    mc.button(label='DELETE', c=partial(deleteTargetPrim))
    mc.setParent('..')
    #---------------------------------END OF TARGET PRIM---------------------------------#

    #---------------------------------BACKGROUND OBJECTS---------------------------------#
    mc.separator(h=18)
    mc.text('Background Population Density')
    mc.rowColumnLayout(numberOfRows=1)
    mc.separator(h=12)
    mc.text('few')
    mc.intSlider('popSlider',
                 min=0,
                 max=400,
                 value=0,
                 step=1,
                 cc=setPopulation)
    mc.text('many objects in the background')
    mc.setParent('..')

    # mc.text('Background Population Variety')
    # mc.rowColumnLayout( numberOfRows = 1)
    # mc.separator(h=6)
    # mc.text('few')
    # mc.intSlider('popSlider', min=0, max=400, value=0, step=80, cc=setPopulation)
    # mc.text('many types of primitives')
    mc.setParent('..')
    mc.rowColumnLayout(numberOfRows=1)
    mc.separator(h=6)
    mc.button(label='BUILD', c=partial(buildBackground))
    mc.button(label='DELETE', c=partial(deleteBackground))
    mc.setParent('..')

    #-----------------------------END OF BACKGROUND OBJECTS-------------------------------#

    #--------------------------------------LIGHTS-----------------------------------------#
    mc.rowColumnLayout(numberOfRows=1)
    mc.text('light rotation')
    mc.separator(w=120)
    mc.text('light intensity')
    mc.setParent('..')
    mc.rowColumnLayout(numberOfRows=1)
    mc.separator(h=6)
    mc.floatField('lxr', w=40, cc=setLightRot)
    mc.floatField('lyr', w=40, cc=setLightRot)
    mc.floatField('lzr', w=40, cc=setLightRot)
    mc.separator(w=60)
    mc.floatField('lin', w=40, cc=setLightIntensity, v=0.8)
    mc.setParent('..')
    #-----------------------------------END OF LIGHTS-------------------------------------#

    #--------------------------------------OUTPUT-----------------------------------------#
    mc.separator(h=12)
    mc.text('Rendering')
    mc.separator(h=6)

    mc.rowColumnLayout(numberOfRows=1)
    mc.button('change save directory', bgc=(.2, .6, .2), c=changeRenderpath)
    mc.separator(h=6)
    mc.setParent('..')

    mc.rowColumnLayout(numberOfRows=1)
    mc.button(label='CAMERA', c=partial(makeCamera))
    mc.button(label='X', c=partial(deleteCamera), bgc=(.8, .2, .2))
    mc.button(label='RENDER', c=partial(RenderScenes))
    mc.intField('rendercountfield',
                w=40,
                minValue=1,
                maxValue=4000,
                cc=updateRenderCount)
    mc.text('times with these settings')
    mc.setParent('..')

    mc.rowColumnLayout(numberOfRows=1)
    mc.text('Export   : ')
    mc.checkBox('target', v=UI.exportTargetData)
    mc.checkBox('light', v=UI.exportLightData)
    mc.checkBox('noise', v=UI.exportNoiseData)
    mc.setParent('..')

    mc.showWindow(uiwindow)
Exemple #34
0
def showSelObject(*args):
    sel = mc.ls(sl=True)
    add = mc.textField('tFld', edit=True, text=sel[0])

if mc.window("dumWin", exists=True):
    mc.deleteUI("dumWin")

# Specs of the window
myWindow = mc.window("dumWin", t="Measure it!", w=300, h=300)
# Creates an adjustable column
mc.columnLayout(adj=True)
# Define logo path
logoPath = mc.internalVar(upd=True) + "icons/MitLogo_02.png"
# logo display space specs
mc.image(w=300, h=100, image=logoPath)
mc.separator(w=300)
mc.separator(w=300)
mc.text("Select an item to measure.", align='center')
mc.separator(w=300)
# set parents ends the current layout
mc.setParent('..')
mc.rowColumnLayout(numberOfColumns=3, columnWidth=[(1, 75), (2, 150), (3, 75)])
mc.text("Selected Item:", align='center')
mc.textField('tFld')
mc.button(l="Update", c=showSelObject)
mc.setParent('..')
mc.columnLayout()
mc.separator(w=300)
mc.button(l="Measure", c=mit, w=300)
mc.separator(w=300)
Exemple #35
0
def createUI():
    # Check to see if our window exists
    if cmds.window("myWindow", exists=True):
        cmds.deleteUI("myWindow")

    # Create our main window
    window = cmds.window("myWindow",
                         title="L-System Interpreter",
                         s=False,
                         w=450,
                         h=650,
                         mnb=False,
                         mxb=False)
    mainLayout = cmds.columnLayout(w=450, h=650)
    import os
    pathVar = os.path.dirname(
        __file__)  # This stores the current working directory
    imagePath = pathVar + "/banner.png"  # I designed a nice header for it
    cmds.image(w=450, h=160, image=imagePath)

    #--- MAIN FRAME LAYOUT ---#
    mainFrame = cmds.frameLayout(l="L-System String Operations",
                                 lv=False,
                                 cll=False,
                                 cl=True,
                                 mw=10,
                                 mh=10)

    #////////////////////////////////////////INSTRUCTIONS//AND//PRESETS////////////////////////////////////////////////////#
    def displayInstructions(*pArgs):
        """Shows in an independent window a list of instructions for the user to set things up quickly"""
        if cmds.window("instructions_window", exists=True):
            cmds.deleteUI("instructions_window")
        instructions_window = cmds.window("instructions_window",
                                          title="Instructions",
                                          s=False,
                                          mnb=False,
                                          mxb=False)
        instructionsLayout = cmds.frameLayout(l="Instructions",
                                              collapsable=False,
                                              cl=False,
                                              mw=10,
                                              mh=10)
        cmds.rowColumnLayout(nc=3,
                             cw=[(1, 20), (2, 480), (3, 20)],
                             cal=[(2, "left")],
                             parent=instructionsLayout)
        cmds.separator(st="none")
        cmds.text(
            l="1. Write an axiom (or initial word), depth and rules. If you don't know what it is put the mouse over the parameter and read the help line.\n2. Click Generate String. Then you will see the result in the text field below, this is just mere text. Now the string needs to be interpreted.\n3. Set all the 'Geometric Interpretation' attributes (Angle, Segment Length...). Remember to put the mouse over it if your are confused.\n4. Click Create Geometry. You will see the result in your scene. If you want to clean the last plant\n\tclick Clean Plant. If you click Create Geometry again you will get another plant.\n6. Always remember to pay attention to the help line and warnings field."
        )
        cmds.separator(st="none")
        cmds.separator(st="none")
        cmds.text(
            l="\nThis is the meaning for each character you enter in the rules section:"
        )
        cmds.separator(st="none")
        cmds.separator(st="none")
        cmds.text(l="""        
        F    Move forward
        f    Move forward
        L    Leaf
        B    Blossom
        +    Rotate +X (yaw right)
        -    Rotate -X (yaw left)
        ^    Rotate +Y (roll right)
        &    Rotate -Y (roll left)
        <    Rotate +Z (pitch down)
        >    Rotate -Z (pitch up)
        *    Turtle rotates 180 (as it was facing backwards)
        [    Push current turtle state on the stack
        ]    Pop the current turtle state from the stack""")
        cmds.showWindow(instructions_window)

    cmds.rowColumnLayout(numberOfColumns=4,
                         cal=[(2, "left")],
                         columnWidth=[(1, 5), (2, 320), (3, 100), (4, 5)],
                         parent=mainFrame)
    cmds.separator(st="none")
    cmds.text(
        l="You might feel a bit lost, I recommend you to read a quick guide")
    cmds.button(l="Instructions", en=True, command=displayInstructions)
    cmds.separator(st="none")

    cmds.rowColumnLayout(nc=7,
                         cw=[(1, 103), (2, 5), (3, 103), (4, 5), (5, 102),
                             (6, 5), (7, 102)],
                         parent=mainFrame)

    def preset1Action(*args):
        import presets
        set1 = presets.preset1()

    cmds.button(l="Preset1", c=preset1Action, ann="Loads Preset #1.")
    cmds.separator(st="none")

    def preset2Action(*args):
        import presets
        set2 = presets.preset2()

    cmds.button(l="Preset2", c=preset2Action, ann="Loads Preset #2.")
    cmds.separator(st="none")

    def preset3Action(*args):
        import presets
        set3 = presets.preset3()

    cmds.button(l="Preset3", c=preset3Action, ann="Loads Preset #3.")
    cmds.separator(st="none")

    def preset4Action(*args):
        import presets
        set4 = presets.preset4()

    cmds.button(l="Preset4", c=preset4Action, ann="Loads Preset #4.")

    # !!!!!!!!!!!!!!!!!!!!!!! TO DO --> PRESETS

    cmds.rowColumnLayout(numberOfColumns=1,
                         columnWidth=[(1, 425)],
                         parent=mainFrame)
    cmds.separator(h=1, st="none")

    #////////////////////////////////////////////////RULES//TAB////////////////////////////////////////////////////////////#
    rulesLayout = cmds.frameLayout(label="Rules",
                                   collapsable=True,
                                   cl=False,
                                   mw=10,
                                   mh=10,
                                   w=425)

    #--- Axiom ---#
    cmds.rowColumnLayout(numberOfColumns=2,
                         columnWidth=[(1, 43), (2, 363)],
                         parent=rulesLayout)
    cmds.text(l="Axiom ", align="right")
    cmds.textField(
        "axiomTextField",
        tx="F",
        ann=
        "Type the initial word you want to start with. The rules will replace each char of the word."
    )

    #--- Depth ---#
    cmds.rowColumnLayout(numberOfColumns=1,
                         columnWidth=[(1, 406)],
                         parent=rulesLayout)
    cmds.intSliderGrp(
        "depthIntField",
        l="Depth: ",
        v=4,
        cw3=[40, 30, 350],
        min=1,
        max=10,
        fmx=20,
        f=True,
        ann=
        "Set the index of recursion. The number of iterations over the generated string. How many times do you want to seach and replace chars in the string?"
    )

    #--- Probabilities header ---#
    cmds.rowColumnLayout(numberOfColumns=3,
                         cal=[(1, "right")],
                         columnWidth=[(1, 325), (2, 50), (3, 45)],
                         parent=rulesLayout)
    cmds.separator(st="none")
    cmds.text(l="Prob.(%)", en=True, ebg=True, bgc=[0.0, 0.153, 0.0666])
    cmds.separator(st="none")

    #--- Collection of rules ---#
    cmds.rowColumnLayout(nc=7,
                         cal=[(1, "right")],
                         cw=[(1, 40), (2, 30), (3, 20), (4, 245), (5, 40),
                             (6, 5), (7, 20)],
                         p=rulesLayout)

    #--- RULE 1 ---#
    cmds.text(l="Rule 1: ", en=True)
    cmds.textField(
        "prodRulePred1",
        en=True,
        tx="F",
        ann=
        "Enter predecessor string for production rule 1. If this character is found in the string it will be replaced."
    )
    cmds.text(l="->", en=True)
    cmds.textField(
        "prodRuleSucc1",
        en=True,
        tx="F[&+F]F[->FL][&FB]",
        ann=
        "Enter successor string for production rule 1. The value you want to replace the predecessor with."
    )
    cmds.intField(
        "prodRuleProb1",
        minValue=0,
        maxValue=100,
        value=100,
        ann=
        "Enter the probability (in percentage %) in which you want this rule to be executed. Applies just if you write the same predecessors in different rules."
    )
    cmds.separator(st="none")
    cmds.separator(st="none")

    #--- RULE 2 ---#
    cmds.text("prodRule2Text_A", l="Rule 2: ", en=False)
    cmds.textField(
        "prodRulePred2",
        en=False,
        ann=
        "Enter predecessor string for production rule 2. If this character is found in the string it will be replaced."
    )
    cmds.text("prodRule2Text_B", l="->", en=False)
    cmds.textField(
        "prodRuleSucc2",
        en=False,
        ann=
        "Enter successor string for production rule 2. The value you want to replace the predecessor with."
    )
    cmds.intField(
        "prodRuleProb2",
        minValue=0,
        maxValue=100,
        value=0,
        en=False,
        ann=
        "Enter the probability (in percentage %) in which you want this rule to be executed. Applies just if you write the same predecessors in different rules."
    )
    cmds.separator(st="none")
    cmds.checkBox("prodRuleCheckBox2",
                  l="",
                  value=False,
                  ann="Activates the 2st production rule.")

    def toggleGreyingOut2(*pArgs):
        valueCB2 = cmds.checkBox("prodRuleCheckBox2", q=True, value=True)
        if valueCB2 == True:
            cmds.text("prodRule2Text_A", edit=True, en=True)
            cmds.textField("prodRulePred2", edit=True, en=True)
            cmds.text("prodRule2Text_B", edit=True, en=True)
            cmds.textField("prodRuleSucc2", edit=True, en=True)
            cmds.intField("prodRuleProb2", edit=True, en=True)
            cmds.intField("prodRuleProb2", edit=True, v=100)
        if valueCB2 == False:
            cmds.text("prodRule2Text_A", edit=True, en=False)
            cmds.textField("prodRulePred2", edit=True, en=False)
            cmds.text("prodRule2Text_B", edit=True, en=False)
            cmds.textField("prodRuleSucc2", edit=True, en=False)
            cmds.intField("prodRuleProb2", edit=True, en=False)
            cmds.intField("prodRuleProb2", edit=True, v=0)

    cmds.checkBox("prodRuleCheckBox2",
                  edit=True,
                  changeCommand=toggleGreyingOut2)

    #--- RULE 3 ---#
    cmds.text("prodRule3Text_A", l="Rule 3: ", en=False)
    cmds.textField(
        "prodRulePred3",
        en=False,
        ann=
        "Enter predecessor string for production rule 3. If this character is found in the string it will be replaced."
    )
    cmds.text("prodRule3Text_B", l="->", en=False)
    cmds.textField(
        "prodRuleSucc3",
        en=False,
        ann=
        "Enter successor string for production rule 3. The value you want to replace the predecessor with."
    )
    cmds.intField(
        "prodRuleProb3",
        minValue=0,
        maxValue=100,
        value=0,
        en=False,
        ann=
        "Enter the probability (in percentage %) in which you want this rule to be executed. Applies just if you write the same predecessors in different rules."
    )
    cmds.separator(st="none")
    cmds.checkBox("prodRuleCheckBox3",
                  l="",
                  value=False,
                  ann="Activates the 3rd production rule.")

    def toggleGreyingOut3(*pArgs):
        valueCB3 = cmds.checkBox("prodRuleCheckBox3", q=True, value=True)
        if valueCB3 == True:
            cmds.text("prodRule3Text_A", edit=True, en=True)
            cmds.textField("prodRulePred3", edit=True, en=True)
            cmds.text("prodRule3Text_B", edit=True, en=True)
            cmds.textField("prodRuleSucc3", edit=True, en=True)
            cmds.intField("prodRuleProb3", edit=True, en=True)
            cmds.intField("prodRuleProb3", edit=True, v=100)
        if valueCB3 == False:
            cmds.text("prodRule3Text_A", edit=True, en=False)
            cmds.textField("prodRulePred3", edit=True, en=False)
            cmds.text("prodRule3Text_B", edit=True, en=False)
            cmds.textField("prodRuleSucc3", edit=True, en=False)
            cmds.intField("prodRuleProb3", edit=True, en=False)
            cmds.intField("prodRuleProb3", edit=True, v=0)

    cmds.checkBox("prodRuleCheckBox3",
                  edit=True,
                  changeCommand=toggleGreyingOut3)

    #--- RULE 4 ---#
    cmds.text("prodRule4Text_A", l="Rule 4: ", en=False)
    cmds.textField(
        "prodRulePred4",
        en=False,
        ann=
        "Enter predecessor string for production rule 4. If this character is found in the string it will be replaced."
    )
    cmds.text("prodRule4Text_B", l="->", en=False)
    cmds.textField(
        "prodRuleSucc4",
        en=False,
        ann=
        "Enter successor string for production rule 4. The value you want to replace the predecessor with."
    )
    cmds.intField(
        "prodRuleProb4",
        minValue=0,
        maxValue=100,
        value=0,
        en=False,
        ann=
        "Enter the probability (in percentage %) in which you want this rule to be executed. Applies just if you write the same predecessors in different rules."
    )
    cmds.separator(st="none")
    cmds.checkBox("prodRuleCheckBox4",
                  l="",
                  value=False,
                  ann="Activates the 4th production rule.")

    def toggleGreyingOut4(*pArgs):
        valueCB4 = cmds.checkBox("prodRuleCheckBox4", q=True, value=True)
        if valueCB4 == True:
            cmds.text("prodRule4Text_A", edit=True, en=True)
            cmds.textField("prodRulePred4", edit=True, en=True)
            cmds.text("prodRule4Text_B", edit=True, en=True)
            cmds.textField("prodRuleSucc4", edit=True, en=True)
            cmds.intField("prodRuleProb4", edit=True, en=True)
            cmds.intField("prodRuleProb4", edit=True, v=100)
        if valueCB4 == False:
            cmds.text("prodRule4Text_A", edit=True, en=False)
            cmds.textField("prodRulePred4", edit=True, en=False)
            cmds.text("prodRule4Text_B", edit=True, en=False)
            cmds.textField("prodRuleSucc4", edit=True, en=False)
            cmds.intField("prodRuleProb4", edit=True, en=False)
            cmds.intField("prodRuleProb4", edit=True, v=0)

    cmds.checkBox("prodRuleCheckBox4",
                  edit=True,
                  changeCommand=toggleGreyingOut4)

    #--- Generate String / Clear String  ---#
    cmds.rowColumnLayout(numberOfColumns=3,
                         columnWidth=[(1, 196), (2, 10), (3, 196)],
                         parent=rulesLayout)
    cmds.button(l="Generate String",
                ann="Click to run the L-System string procedure.",
                c=generateStringButtonAction)
    cmds.separator(h=5, st="none")
    cmds.button(l="Clear String",
                ann="Click to reset the generated string",
                command=clearStringButtonAction)

    #--- String Output ---#
    cmds.rowColumnLayout(numberOfColumns=1,
                         columnWidth=[(1, 402)],
                         parent=rulesLayout)
    cmds.textField(
        "output",
        editable=True,
        ann=
        "This is the generated string. When you get it proceed to construct the geometry."
    )
    cmds.rowColumnLayout(numberOfColumns=1,
                         columnWidth=[(1, 402)],
                         parent=mainFrame)
    cmds.separator(h=5, st='none')

    #//////////////////////////////////////GEOMETRIC//INTERPRETATION///////////////////////////////////////////////////////#
    mInterpret = cmds.frameLayout(label="Geometric Interpretation",
                                  collapsable=True,
                                  cl=True,
                                  mw=10,
                                  mh=10,
                                  w=425)

    #--- Set of geometric parameters ---#
    cmds.rowColumnLayout(numberOfColumns=1,
                         columnWidth=[(1, 406)],
                         parent=mInterpret)
    cmds.floatSliderGrp(
        "angle",
        l="Angle: ",
        pre=1,
        v=25.2,
        cal=[2, 'center'],
        cw3=[92, 40, 788],
        min=0,
        max=100,
        fmx=360,
        f=True,
        ann=
        "The turtle will yaw, roll or pitch by this angular (degrees) amount each time it finds each corresponding symbol."
    )
    cmds.floatSliderGrp("length",
                        l="Segment Length: ",
                        pre=2,
                        v=1.20,
                        cw3=[92, 40, 788],
                        min=0,
                        max=10,
                        fmx=100,
                        f=True,
                        ann="The length of each turtle's step or segment.")
    cmds.floatSliderGrp(
        "radius",
        l="Segment Radius: ",
        pre=2,
        v=0.20,
        cw3=[92, 40, 788],
        min=0,
        max=0.5,
        fmx=2,
        f=True,
        ann="The radius of each cylinder (segment) that is placed.")
    cmds.intSliderGrp("cylSubdivs",
                      l="Cylinder Subdivs: ",
                      v=5,
                      cw3=[92, 40, 788],
                      min=4,
                      max=20,
                      fmx=20,
                      f=True,
                      ann="No. of subdivisions for each cylinder.")
    cmds.intSliderGrp(
        "length_atenuation",
        l="Len. Atenuation: ",
        v=95,
        cw3=[92, 40, 788],
        min=0,
        max=100,
        fmx=100,
        f=True,
        ann=
        "Next's index branch's segment's length will be (this field) percent the length of the previous one."
    )
    cmds.intSliderGrp(
        "radius_atenuation",
        l="Rad. Atenuation: ",
        v=85,
        cw3=[92, 40, 788],
        min=0,
        max=100,
        fmx=100,
        f=True,
        ann=
        "Next's index branch's segment's radius will be (this field) percent the length of the previous one."
    )
    cmds.floatSliderGrp(
        "turtleSpeed",
        l="Turtle speed: ",
        v=0,
        cw3=[92, 40, 288],
        min=0,
        max=1,
        pre=2,
        fmx=5,
        f=True,
        ann=
        "Before proceeding to the next turtle command it will be frozen for this amount of time (in seconds). Useful for keeping track of everything that happens."
    )
    cmds.separator(h=2, st="none")

    #--- Colour Fields ---#
    global rgb_branchField, rgb_leafField, rgb_branchField
    cmds.colorSliderGrp("rgb_branchField",
                        l="Branches",
                        rgb=(0.430, 0.230, 0.11),
                        cw3=[52, 30, 328],
                        ann="Branch colour.")
    cmds.separator(h=6, st="none")
    cmds.colorSliderGrp("rgb_leafField",
                        l="Leaves",
                        rgb=(0, 0.624, 0),
                        cw3=[52, 30, 328],
                        ann="Leaf colour.")
    cmds.separator(h=6, st="none")
    cmds.colorSliderGrp('rgb_blossomField',
                        l="Blossoms",
                        rgb=(0.624, 0, 0),
                        cw3=[52, 30, 328],
                        ann="Blossoms colour.")

    #--- Create Geometry / Clean Plant ---#
    cmds.rowColumnLayout(numberOfColumns=3,
                         columnWidth=[(1, 196), (2, 10), (3, 196)],
                         parent=mInterpret)
    cmds.button(l="Create Geometry",
                command=createGeometryButtonAction,
                ann="Go turtle! Go!")
    cmds.separator(h=5, st="none")
    cmds.button(l="Clean Plant",
                command=cleanPlantButtonAction,
                ann='Deletes the lastest generated plant.')

    #/////////////////////////////////////WARNINGS//AND//HELPLINE//////////////////////////////////////////////////////////#
    cmds.rowColumnLayout(numberOfColumns=3,
                         columnWidth=[(1, 55), (2, 5), (3, 366)],
                         parent=mainFrame)
    cmds.text(l="Warnings")
    cmds.separator(st="none")
    cmds.textField("warningsTextField", editable=False, tx="None")
    cmds.rowColumnLayout(numberOfColumns=1,
                         columnWidth=[(1, 426)],
                         parent=mainFrame)
    cmds.helpLine(bgc=[0.0, 0.0, 0.0])

    #--- Credits Layout ---#
    cmds.rowColumnLayout(numberOfColumns=1,
                         columnWidth=[(1, 426)],
                         parent=mainFrame)
    cmds.text(l="Ramon Blanquer - www.ramonblanquer.com - NCCA 2014")
    cmds.showWindow()
    cmds.showWindow(window)
'''


def Bind():
    charName = cmds.textFieldGrp(NameInput, q=True, text=True)
    cmds.select(charName + '_Joints_01', hi=True)
    # if charName+'_Geo_01' null print 'put your model in Main>Geo group'
    cmds.select(charName + '_Geo_01', hi=True, add=True)
    cmds.bindSkin()


#Interface
cmds.window("Generator de foule", w=300, h=600)
cmds.columnLayout(adj=True)
imagePath = cmds.workspace(q=True, rd=True) + "/scripts/image_2.jpg"
cmds.image(w=300, h=100, image=imagePath)
cmds.rowLayout(numberOfColumns=1,
               columnWidth3=(80, 75, 300),
               adjustableColumn=2,
               columnAlign=(1, 'right'),
               columnAttach=[(1, 'both', 0), (2, 'both', 0), (3, 'both', 0)])
#cmds.button( label='Import character',command= 'ImportOBJ()')

NameInput = cmds.textFieldGrp(label="Character Name", editable=True)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')

cmds.frameLayout(label='Auto Rig', collapsable=True, collapse=False)
cmds.rowColumnLayout(numberOfColumns=5,
                     columnWidth=[(1, 80), (2, 80), (3, 80), (4, 80), (5, 80)])
    def __init__(self):

        #get access to our maya tools

        toolsPath = cmds.internalVar(usd=True) + "mayaTools.txt"

        if os.path.exists(toolsPath):

            f = open(toolsPath, 'r')

            self.mayaToolsDir = f.readline()

            f.close()

        #create a dictionary for our UI widgets

        self.widgets = {}

        #create window

        if cmds.window("addCharacter_UI", exists=True):

            cmds.deleteUI("addCharacter_UI")

        self.widgets["window"] = cmds.window("addCharacter_UI",
                                             title="Add Character",
                                             w=430,
                                             h=260,
                                             sizeable=True,
                                             mxb=False,
                                             mnb=False)

        #create the main layout

        main = cmds.columnLayout(w=430)

        #banner image

        cmds.image(w=430,
                   h=50,
                   image=self.mayaToolsDir +
                   "/General/Icons/ART/artBanner430px.bmp",
                   parent=main)

        self.widgets["formLayout"] = cmds.formLayout(w=430, h=260, parent=main)

        #create the widgets

        self.widgets["project"] = cmds.optionMenu(label="Project:",
                                                  w=200,
                                                  cc=self.findCharacterRigs)

        self.widgets["search"] = cmds.textFieldGrp(label="Search:",
                                                   cl2=["left", "left"],
                                                   ct2=["left", "left"],
                                                   cw2=[40, 160],
                                                   text="coming soon",
                                                   enable=False)

        self.widgets["characterList"] = cmds.textScrollList(
            allowMultiSelection=False,
            w=200,
            h=180,
            selectCommand=self.findCharacterThumbnail)

        self.widgets["thumbnailBorder"] = cmds.image(w=210,
                                                     h=210,
                                                     image="",
                                                     ebg=True,
                                                     bgc=[0, 0, 0])

        self.widgets["thumbnail"] = cmds.image(w=200, h=200, image="")

        self.widgets["addButton"] = cmds.button(label="Add",
                                                w=60,
                                                c=partial(
                                                    self.addCharacter, False))

        self.widgets["addButton2"] = cmds.button(label="Add and Close",
                                                 w=80,
                                                 c=partial(
                                                     self.addCharacter, True))

        self.widgets["cancelButton"] = cmds.button(label="Cancel",
                                                   w=60,
                                                   c=self.cancel)

        #attach widgets

        cmds.formLayout(self.widgets["formLayout"],
                        edit=True,
                        af=[(self.widgets["project"], 'top', 10),
                            (self.widgets["project"], 'left', 10)])

        cmds.formLayout(self.widgets["formLayout"],
                        edit=True,
                        af=[(self.widgets["search"], 'top', 40),
                            (self.widgets["search"], 'left', 10)])

        cmds.formLayout(self.widgets["formLayout"],
                        edit=True,
                        af=[(self.widgets["characterList"], 'top', 70),
                            (self.widgets["characterList"], 'left', 10)])

        cmds.formLayout(self.widgets["formLayout"],
                        edit=True,
                        af=[(self.widgets["thumbnailBorder"], 'top', 5),
                            (self.widgets["thumbnailBorder"], 'right', 5)])

        cmds.formLayout(self.widgets["formLayout"],
                        edit=True,
                        af=[(self.widgets["thumbnail"], 'top', 10),
                            (self.widgets["thumbnail"], 'right', 10)])

        cmds.formLayout(self.widgets["formLayout"],
                        edit=True,
                        af=[(self.widgets["addButton"], 'bottom', 10),
                            (self.widgets["addButton"], 'left', 215)])

        cmds.formLayout(self.widgets["formLayout"],
                        edit=True,
                        af=[(self.widgets["addButton2"], 'bottom', 10),
                            (self.widgets["addButton2"], 'left', 280)])

        cmds.formLayout(self.widgets["formLayout"],
                        edit=True,
                        af=[(self.widgets["cancelButton"], 'bottom', 10),
                            (self.widgets["cancelButton"], 'right', 5)])

        #show the window

        cmds.showWindow(self.widgets["window"])

        self.findProjects()

        #set favorite project if it exists

        settingsLocation = self.mayaToolsDir + "/General/Scripts/projectSettings.txt"

        if os.path.exists(settingsLocation):

            f = open(settingsLocation, 'r')

            settings = cPickle.load(f)

            favoriteProject = settings.get("FavoriteProject")

            try:

                cmds.optionMenu(self.widgets["project"],
                                edit=True,
                                v=favoriteProject)

            except:

                pass

            self.findCharacterRigs()
def arnoldLicenseDialog():
    if (cmds.window("ArnoldLicense", ex=True)):
        cmds.deleteUI("ArnoldLicense")
    w = cmds.window("ArnoldLicense", title="Arnold Node-locked License")
    cmds.window("ArnoldLicense", edit=True, width=550, height=280)
    cmds.columnLayout()
    cmds.rowColumnLayout(numberOfColumns=4,
                         columnWidth=[(1, 10), (2, 64), (3, 18), (4, 450)])

    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")

    arnoldAboutText = u"A node-locked license allows you to render with Arnold on one computer only.\n"

    cmds.text(label="")
    cmds.image(image="licensing_mtoa.png")
    cmds.text(label="")
    cmds.text(align="left", label=arnoldAboutText)

    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")

    cmds.separator()
    cmds.separator()
    cmds.separator()
    cmds.separator()

    cmds.setParent('..')
    cmds.separator()

    cmds.rowColumnLayout(numberOfColumns=2, columnWidth=[(1, 10), (2, 500)])
    macText = u"To issue a node-locked license, we need the MAC address of your computer.\n"
    cmds.text(label="")
    cmds.text(align="left", label=macText)
    cmds.setParent('..')
    cmds.separator()

    cmds.rowColumnLayout(numberOfColumns=6,
                         columnWidth=[(1, 10), (2, 90), (3, 190), (4, 40),
                                      (5, 80), (6, 132)])
    cmds.text(label="")
    cmds.text(align="left", label="MAC Address")
    name = cmds.textField()
    mac = get_mac()
    mactext = ("%012X" % mac)
    cmds.textField(name, edit=True, text=mactext, editable=False)
    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")

    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")

    cmds.separator()
    cmds.separator()
    cmds.separator()
    cmds.separator()
    cmds.separator()
    cmds.separator()

    cmds.setParent('..')

    cmds.rowColumnLayout(numberOfColumns=2, columnWidth=[(1, 10), (2, 500)])
    macText = u"To install your node-locked license, locate the license file (.lic) and click Install.\n"
    cmds.text(label="")
    cmds.text(align="left", label=macText)
    cmds.setParent('..')

    cmds.rowColumnLayout(numberOfColumns=8,
                         columnWidth=[(1, 10), (2, 90), (3, 190), (4, 7),
                                      (5, 26), (6, 7), (7, 80), (8, 132)])
    cmds.text(label="")
    cmds.text(align="left", label="License file (.lic)")
    file = cmds.textField()
    cmds.text(label="")
    cmds.button(label='...', command=lambda *args: dotDotDotButtonPush(file))
    cmds.text(label="")
    cmds.button(label='Install', command=lambda *args: installButtonPush(file))
    cmds.text(label="")

    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")

    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")
    cmds.text(label="")

    cmds.setParent('..')

    cmds.rowColumnLayout(numberOfColumns=5,
                         columnWidth=[(1, 200), (2, 160), (3, 80), (4, 20),
                                      (5, 80)])
    cmds.text(label="")
    cmds.text(label="")
    cmds.button(label='Close',
                command=('import maya.cmds as cmds;cmds.deleteUI(\"' + w +
                         '\", window=True)'))
    cmds.text(label="")
    cmds.button(label='Help',
                c=lambda *args: cmds.launch(
                    webPage='https://www.solidangle.com/support/licensing/'))

    cmds.setParent('..')

    cmds.showWindow(w)
Exemple #39
0
import traceback
Exemple #40
0
    def __init__(self, *args):
        if not cmds.objExists('All_InitCTL'):
            self.rigInitCtl_inst = initrigset.RigAll()
            self.rigInitCtl_inst.putInitCtl()
            self.rigInitCtl_inst.doIt()

            try:
                f = open("pickle.dat", 'w')
                pickle.dump(self.rigInitCtl_inst, f)
                f.close()
            except:
                pass
        else:
            try:
                f = open("pickle.dat", 'r')
                self.rigInitCtl_inst = pickle.load(f)
                f.close()
            except:
                pass

        win = rigbase.createWindow('locusHumanRig_ui', title='Locus Human Rig')

        form = cmds.formLayout()
        cmds.image(image=chModules.chRiggingImagePath)
        cmds.popupMenu()
        cmds.menuItem(l='Mirror <<')
        cmds.menuItem(l='Mirror >>')

        self.neckField = cmds.intField(v=4, min=3)
        self.bodyField = cmds.intField(v=5, min=3)
        self.armLUField = cmds.intField(v=5, min=3)
        self.armLLField = cmds.intField(v=5, min=3)
        self.armRUField = cmds.intField(v=5, min=3)
        self.armRLField = cmds.intField(v=5, min=3)
        self.legLUField = cmds.intField(v=5, min=3)
        self.legLLField = cmds.intField(v=5, min=3)
        self.legRUField = cmds.intField(v=5, min=3)
        self.legRLField = cmds.intField(v=5, min=3)

        self.fieldGrp = [
            self.neckField, self.bodyField, self.armLUField, self.armLLField,
            self.armRUField, self.armRLField, self.legLUField, self.legLLField,
            self.legRUField, self.legRLField
        ]

        self.headFollow = cmds.frameLayout(l='Head Follow', w=100)
        cmds.checkBox(l='Neck',
                      v=1,
                      onc=partial(self.followAttrVis, ['Head_CTL'],
                                  'neckFollow', True),
                      ofc=partial(self.followAttrVis, ['Head_CTL'],
                                  'neckFollow', False))
        cmds.checkBox(l='Chest',
                      v=1,
                      onc=partial(self.followAttrVis, ['Head_CTL'],
                                  'chestFollow', True),
                      ofc=partial(self.followAttrVis, ['Head_CTL'],
                                  'chestFollow', False))
        cmds.checkBox(l='Root',
                      onc=partial(self.followAttrVis, ['Head_CTL'],
                                  'rootFollow', True),
                      ofc=partial(self.followAttrVis, ['Head_CTL'],
                                  'rootFollow', False))
        cmds.checkBox(l='Move',
                      onc=partial(self.followAttrVis, ['Head_CTL'],
                                  'moveFollow', True),
                      ofc=partial(self.followAttrVis, ['Head_CTL'],
                                  'moveFollow', False))
        cmds.setParent('..')

        self.collarFollow = cmds.frameLayout(l='Collar Follow', w=100)
        cmds.checkBox(l='Chest',
                      onc=partial(self.followAttrVis,
                                  ['Collar_L_CTL', 'Collar_R_CTL'],
                                  'chestFollow', True),
                      ofc=partial(self.followAttrVis,
                                  ['Collar_L_CTL', 'Collar_R_CTL'],
                                  'chestFollow', False))
        cmds.checkBox(l='Root',
                      onc=partial(self.followAttrVis,
                                  ['Collar_L_CTL', 'Collar_R_CTL'],
                                  'rootFollow', True),
                      ofc=partial(self.followAttrVis,
                                  ['Collar_L_CTL', 'Collar_R_CTL'],
                                  'rootFollow', False))
        cmds.checkBox(l='Move',
                      onc=partial(self.followAttrVis,
                                  ['Collar_L_CTL', 'Collar_R_CTL'],
                                  'moveFollow', True),
                      ofc=partial(self.followAttrVis,
                                  ['Collar_L_CTL', 'Collar_R_CTL'],
                                  'moveFollow', False))
        cmds.setParent('..')

        self.armFollow = cmds.frameLayout(l='Arm Follow', w=100)
        cmds.checkBox(l='Collar',
                      onc=partial(self.followAttrVis,
                                  ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'],
                                  'collarFollow', True),
                      ofc=partial(self.followAttrVis,
                                  ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'],
                                  'collarFollow', False))
        cmds.checkBox(l='Head',
                      onc=partial(self.followAttrVis,
                                  ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'],
                                  'headFollow', True),
                      ofc=partial(self.followAttrVis,
                                  ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'],
                                  'headFollow', False))
        cmds.checkBox(l='Chest',
                      v=1,
                      onc=partial(self.followAttrVis,
                                  ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'],
                                  'chestFollow', True),
                      ofc=partial(self.followAttrVis,
                                  ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'],
                                  'chestFollow', False))
        cmds.checkBox(l='Hip',
                      onc=partial(self.followAttrVis,
                                  ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'],
                                  'hipFollow', True),
                      ofc=partial(self.followAttrVis,
                                  ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'],
                                  'hipFollow', False))
        cmds.checkBox(l='Root',
                      v=1,
                      onc=partial(self.followAttrVis,
                                  ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'],
                                  'rootFollow', True),
                      ofc=partial(self.followAttrVis,
                                  ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'],
                                  'rootFollow', False))
        cmds.checkBox(l='Move',
                      onc=partial(self.followAttrVis,
                                  ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'],
                                  'moveFollow', True),
                      ofc=partial(self.followAttrVis,
                                  ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'],
                                  'moveFollow', False))
        cmds.setParent('..')

        self.legFollow = cmds.frameLayout(l='Leg Follow', w=100)
        cmds.checkBox(l='Hip',
                      onc=partial(self.followAttrVis,
                                  ['Leg_L_Switch_CTL', 'Leg_R_Switch_CTL'],
                                  'hipFollow', True),
                      ofc=partial(self.followAttrVis,
                                  ['Leg_L_Switch_CTL', 'Leg_R_Switch_CTL'],
                                  'hipFollow', False))
        cmds.checkBox(l='Root',
                      v=1,
                      onc=partial(self.followAttrVis,
                                  ['Leg_L_Switch_CTL', 'Leg_R_Switch_CTL'],
                                  'rootFollow', True),
                      ofc=partial(self.followAttrVis,
                                  ['Leg_L_Switch_CTL', 'Leg_R_Switch_CTL'],
                                  'rootFollow', False))
        cmds.checkBox(l='Move',
                      onc=partial(self.followAttrVis,
                                  ['Leg_L_Switch_CTL', 'Leg_R_Switch_CTL'],
                                  'moveFollow', True),
                      ofc=partial(self.followAttrVis,
                                  ['Leg_L_Switch_CTL', 'Leg_R_Switch_CTL'],
                                  'moveFollow', False))
        cmds.setParent('..')

        dfFollowButton = cmds.button(l='Default Follow',
                                     w=100,
                                     h=30,
                                     c=self.defaultFollow)
        self.setButton = cmds.button(l='SET',
                                     c=self.setCmd,
                                     w=60,
                                     h=30,
                                     bgc=[.308 - .1, .312 - .1, .292 - .1])
        self.backButton = cmds.button(l='BACK',
                                      c=self.backCmd,
                                      vis=0,
                                      w=60,
                                      h=30,
                                      bgc=[.308 - .1, .312 - .1, .292 - .1])

        empty = cmds.text(l='')
        #mirrorLButton = cmds.button( l='>>',  w=30, h=80 )
        #mirrorRButton  = cmds.button( l='<<', w=30, h=80 )
        cmds.frameLayout(self.collarFollow, q=1, ca=1)

        cmds.formLayout(form,
                        e=1,
                        attachForm=[(self.neckField, 'top', 80),
                                    (self.neckField, 'left', 130),
                                    (self.bodyField, 'top', 195),
                                    (self.bodyField, 'left', 150),
                                    (self.armLUField, 'top', 170),
                                    (self.armLUField, 'left', 200),
                                    (self.armLLField, 'top', 235),
                                    (self.armLLField, 'left', 215),
                                    (self.armRUField, 'top', 170),
                                    (self.armRUField, 'left', 65),
                                    (self.armRLField, 'top', 235),
                                    (self.armRLField, 'left', 50),
                                    (self.legLUField, 'top', 350),
                                    (self.legLUField, 'left', 175),
                                    (self.legLLField, 'top', 465),
                                    (self.legLLField, 'left', 165),
                                    (self.legRUField, 'top', 350),
                                    (self.legRUField, 'left', 105),
                                    (self.legRLField, 'top', 470),
                                    (self.legRLField, 'left', 85),
                                    (self.headFollow, 'top', 15),
                                    (self.headFollow, 'left', 320),
                                    (self.collarFollow, 'top', 150),
                                    (self.collarFollow, 'left', 320),
                                    (self.armFollow, 'top', 265),
                                    (self.armFollow, 'left', 320),
                                    (self.legFollow, 'top', 440),
                                    (self.legFollow, 'left', 320),
                                    (dfFollowButton, 'top', 560),
                                    (dfFollowButton, 'left', 320),
                                    (self.setButton, 'top', 560),
                                    (self.setButton, 'left', 250),
                                    (self.backButton, 'top', 560),
                                    (self.backButton, 'left', 250),
                                    (empty, 'top', 0)])

        cmds.window(win, e=1, wh=[313, 595], s=0)

        try:
            from BorderlessFrame import BorderlessFrame, toQtObject
            dlg = toQtObject(win)
            self._win = BorderlessFrame()
            self._win.setContent(dlg)
            self._win.setTitle('Locus Human Rig')
            self._win.show()
            self._win.move(214, 223)
        except:
            cmds.showWindow(win)

        self.win = win

        self.followMenuVisSet()
        self.scriptJobSetting()
Exemple #41
0
def tic_tac_toe_ui(USERPATH):
    PATH_ICONS = USERPATH + "\\tic_tac_toe_icons\\"
    sys.path.append(USERPATH)
    sys.path.append(PATH_ICONS)

    ui_title = "tic tac_toe"
    main_color = [0.492, 0.980, 0.570]
    secondary_color = [0.953, 0.588, 0.4]

    window = cmds.window(ui_title,
                         title="Tic Tac Toe",
                         backgroundColor=main_color,
                         sizeable=True,
                         resizeToFitChildren=True)

    # DELETE if it already exists:
    if cmds.window(ui_title, exists=True):
        cmds.deleteUI(ui_title)

    ###############################################################
    ##########################   HEADER   #########################
    ###############################################################
    cmds.columnLayout(rowSpacing=5)

    cmds.formLayout("ttt_form_count",
                    backgroundColor=main_color,
                    numberOfDivisions=100)

    ttt_count_user = cmds.image("ttt_count_user",
                                image=PATH_ICONS + "\\ttt_number\\" +
                                'ttt_0.png')

    ttt_count_ia = cmds.image("ttt_count_ia",
                              image=PATH_ICONS + "\\ttt_number\\" +
                              'ttt_0.png')
    cmds.image("ttt_bg", image=PATH_ICONS + 'ttt_banner.png')

    ttt_difficulty = cmds.iconTextButton(
        "ttt_difficulty",
        style='iconOnly',
        image=PATH_ICONS + 'ttt_settings_fair.png',
        command="ttt.change_difficulty(USERPATH)")

    cmds.formLayout("ttt_form_count",
                    edit=True,
                    attachForm=[(ttt_count_user, 'left', 70),
                                (ttt_count_user, 'top', 88),
                                (ttt_count_ia, 'left', 385),
                                (ttt_count_ia, 'top', 88),
                                (ttt_difficulty, 'left', 420),
                                (ttt_difficulty, 'top', 0)])
    cmds.setParent("..")

    ###############################################################
    ####################   TIC TAC TOE GRID    ####################
    ###############################################################
    cmds.formLayout("ttt_formlayout",
                    backgroundColor=main_color,
                    numberOfDivisions=100)
    cmds.image("ttt_bg", image=PATH_ICONS + 'ttt_grid.png')

    ttt_button01 = cmds.iconTextButton(
        "ttt_button01",
        style='iconOnly',
        image=PATH_ICONS + 'ttt_idle.png',
        command="ttt.check_difficulty_level('ttt_button01', USERPATH)")
    ttt_button02 = cmds.iconTextButton(
        "ttt_button02",
        style='iconOnly',
        image=PATH_ICONS + 'ttt_idle.png',
        command="ttt.check_difficulty_level('ttt_button02', USERPATH)")
    ttt_button03 = cmds.iconTextButton(
        "ttt_button03",
        style='iconOnly',
        image=PATH_ICONS + 'ttt_idle.png',
        command="ttt.check_difficulty_level('ttt_button03', USERPATH)")
    ttt_button04 = cmds.iconTextButton(
        "ttt_button04",
        style='iconOnly',
        image=PATH_ICONS + 'ttt_idle.png',
        command="ttt.check_difficulty_level('ttt_button04', USERPATH)")
    ttt_button05 = cmds.iconTextButton(
        "ttt_button05",
        style='iconOnly',
        image=PATH_ICONS + 'ttt_idle.png',
        command="ttt.check_difficulty_level('ttt_button05', USERPATH)")
    ttt_button06 = cmds.iconTextButton(
        "ttt_button06",
        style='iconOnly',
        image=PATH_ICONS + 'ttt_idle.png',
        command="ttt.check_difficulty_level('ttt_button06', USERPATH)")
    ttt_button07 = cmds.iconTextButton(
        "ttt_button07",
        style='iconOnly',
        image=PATH_ICONS + 'ttt_idle.png',
        command="ttt.check_difficulty_level('ttt_button07', USERPATH)")
    ttt_button08 = cmds.iconTextButton(
        "ttt_button08",
        style='iconOnly',
        image=PATH_ICONS + 'ttt_idle.png',
        command="ttt.check_difficulty_level('ttt_button08', USERPATH)")
    ttt_button09 = cmds.iconTextButton(
        "ttt_button09",
        style='iconOnly',
        image=PATH_ICONS + 'ttt_idle.png',
        command="ttt.check_difficulty_level('ttt_button09', USERPATH)")

    cmds.formLayout("ttt_formlayout",
                    edit=True,
                    attachForm=[(ttt_button01, 'left', 25),
                                (ttt_button01, 'top', 25),
                                (ttt_button02, 'left', 180),
                                (ttt_button02, 'top', 25),
                                (ttt_button03, 'left', 335),
                                (ttt_button03, 'top', 25),
                                (ttt_button04, 'left', 25),
                                (ttt_button04, 'top', 180),
                                (ttt_button05, 'left', 180),
                                (ttt_button05, 'top', 180),
                                (ttt_button06, 'left', 335),
                                (ttt_button06, 'top', 180),
                                (ttt_button07, 'left', 25),
                                (ttt_button07, 'top', 335),
                                (ttt_button08, 'left', 180),
                                (ttt_button08, 'top', 335),
                                (ttt_button09, 'left', 335),
                                (ttt_button09, 'top', 335)])
    cmds.setParent("..")

    ###############################################################
    #########################   BUTTONS    ########################
    ###############################################################
    cmds.rowLayout(numberOfColumns=2)
    ttt_button_match = cmds.iconTextButton(
        "ttt_button_match",
        style='iconOnly',
        image=PATH_ICONS + 'ttt_restart_match.png',
        command="ttt.restart_match(USERPATH)")

    ttt_button_game = cmds.iconTextButton("ttt_button_game",
                                          style='iconOnly',
                                          image=PATH_ICONS +
                                          'ttt_new_game.png',
                                          command="ttt.restart_game(USERPATH)")
    cmds.showWindow()
    def BuildUI(self):
        #global spineValue
        ###########################################
        #         Create the basic window        ##
        ###########################################

        # Create a window with the name Auto Rigger

        base.window("Auto Rigger")

        form = base.formLayout()
        tabs = base.tabLayout(imh=5, imw=5)

        base.formLayout(form,
                        edit=True,
                        attachForm=((tabs, 'top', 0), (tabs, 'left', 0),
                                    (tabs, 'right', 0), (tabs, 'bottom', 0)))

        # set the layout of the window

        ch1 = base.rowColumnLayout(nc=1,
                                   cal=(1, 'right'),
                                   adjustableColumn=True)

        base.image(w=400,
                   h=100,
                   image=os.path.dirname(os.path.realpath(__file__)) +
                   "\logo.jpg")
        settingsText = base.text('Settings', l='Rig Settings')
        base.separator(st='none')
        #base.text(l = 'Prefix', w = 100)
        self.prefix = base.textFieldGrp(w=100, text='test', editable=True)
        self.spineCount = base.intSliderGrp(l="Spine Count",
                                            min=1,
                                            max=10,
                                            value=4,
                                            step=1,
                                            field=True)
        #spineCount = base.intField(minValue = 1, maxValue = 10, value = 4)
        self.fingerCount = base.intSliderGrp(l="Finger Count",
                                             min=1,
                                             max=10,
                                             value=5,
                                             step=1,
                                             field=True)
        #fingerCount = base.intField(minValue = 0, maxValue = 10, value = 5)
        base.separator(h=10, st='none')
        self.doubleElbow = base.checkBox(l='Double Elbow', align='left')

        base.setParent('..')

        ch2 = base.rowColumnLayout(nc=1,
                                   cal=(1, 'right'),
                                   adjustableColumn=True)
        base.separator(h=10, st='none')
        base.button(l="Create Base Locators", w=200, c=self.DoLocators)
        base.separator(st='none')
        base.button(l="Create Secondary Locators",
                    w=200,
                    c="SL.SecondaryLocators()")
        base.separator(st='none', h=20)
        base.button(l="Create Facial Locators", w=200, c="FJ.FaceJoints()")
        base.separator(st='none')
        base.button(l="Mirror L->R", w=200, c="Locators.mirrorLocators()")
        base.separator(st='none')
        base.button(l="Delete All Locators",
                    w=200,
                    c="Locators.deleteLocators()")

        base.setParent('..')
        ch3 = base.rowColumnLayout(nc=1,
                                   cal=(1, 'right'),
                                   adjustableColumn=True)

        base.separator(st='none')
        base.button(l="Joints Window", w=200, c="Joints.CreateJointsWindow()")
        base.separator(st='none')

        base.setParent('..')
        ch4 = base.rowColumnLayout(nc=1,
                                   cal=(1, 'right'),
                                   adjustableColumn=True)

        base.button(l="Finalize Rig", w=200, c=self.FinalizeRig)
        base.separator(st='none')
        base.button(l="Bind Skin", w=200, c="Constraints.BindSkin()")

        base.setParent('..')

        base.tabLayout(tabs,
                       edit=True,
                       tabLabel=((ch1, 'Settings'), (ch2, 'Locators'),
                                 (ch3, 'Facial Rig'), (ch4, 'Finalize')))

        # show the actual window
        base.showWindow()
def editCharacter(*args):

    if cmds.window("artEditCharacterUI", exists=True):

        cmds.deleteUI("artEditCharacterUI")

    window = cmds.window("artEditCharacterUI",
                         w=300,
                         h=400,
                         title="Edit Character",
                         mxb=False,
                         mnb=False,
                         sizeable=False)

    mainLayout = cmds.columnLayout(w=300, h=400, rs=5, co=["both", 5])

    #banner image

    toolsPath = cmds.internalVar(usd=True) + "mayaTools.txt"

    if os.path.exists(toolsPath):

        f = open(toolsPath, 'r')

        mayaToolsDir = f.readline()

        f.close()

    cmds.image(w=300,
               h=50,
               image=mayaToolsDir + "/General/Icons/ART/artBanner300px.bmp",
               parent=mainLayout)

    cmds.text(label="", h=1, parent=mainLayout)

    optionMenu = cmds.optionMenu("artProjOptionMenu",
                                 label="Project:",
                                 w=290,
                                 h=40,
                                 cc=getProjCharacters,
                                 parent=mainLayout)

    textScrollList = cmds.textScrollList("artProjCharacterList",
                                         w=290,
                                         h=300,
                                         parent=mainLayout)

    button = cmds.button(
        w=290,
        h=40,
        label="Edit Export File",
        c=editSelectedCharacter,
        ann=
        "Edit the character's skeleton settings, joint positions, or skin weights.",
        parent=mainLayout)

    button2 = cmds.button(
        w=290,
        h=40,
        label="Edit Rig File",
        c=editSelectedCharacterRig,
        ann=
        "Edit the character's control rig that will be referenced in by animation.",
        parent=mainLayout)

    cmds.text(label="", h=1)

    cmds.showWindow(window)

    getProjects()

    getProjCharacters()
Exemple #44
0
def gui():
    icon_path = os.path.join(os.path.split(__file__)[0], 'icons')
    win_width = 314
    win = 'prm_face_win'
    cmds.window(win, sizeable=0, w=win_width, t='PRM Face System')
    main = cmds.columnLayout(bgc=[.78, .69, .6])
    cmds.image(w=314, h=65, i=os.path.join(icon_path, 'rba_installer.png'))
    icon_width = 128 / 2
    icon_height = 181 / 2
    # Level 1 Mouth Shapes
    cmds.frameLayout(label="Mouth Shapes",
                     w=314,
                     h=icon_height + 65,
                     bgc=[.52, .47, .4])
    cmds.scrollLayout()
    row = cmds.rowColumnLayout(nr=1)
    Face_Button(parent=row,
                label='Left Smile',
                image=os.path.join(icon_path, 'lt_mouth_smile.gif'),
                width=icon_width,
                height=icon_height)
    Face_Button(parent=row,
                label='Left Frown',
                image=os.path.join(icon_path, 'lt_mouth_frown.gif'),
                width=icon_width,
                height=icon_height)
    Face_Button(parent=row,
                label='Left Wide',
                image=os.path.join(icon_path, 'lt_mouth_wide.gif'),
                width=icon_width,
                height=icon_height)
    Face_Button(parent=row,
                label='Left OO',
                image=os.path.join(icon_path, 'lt_mouth_oo.gif'),
                width=icon_width,
                height=icon_height)

    Face_Button(parent=row,
                label='Rigth Smile',
                image=os.path.join(icon_path, 'rt_mouth_smile.gif'),
                width=icon_width,
                height=icon_height)
    Face_Button(parent=row,
                label='Right Frown',
                image=os.path.join(icon_path, 'rt_mouth_frown.gif'),
                width=icon_width,
                height=icon_height)
    Face_Button(parent=row,
                label='Right Wide',
                image=os.path.join(icon_path, 'rt_mouth_wide.gif'),
                width=icon_width,
                height=icon_height)
    Face_Button(parent=row,
                label='Right OO',
                image=os.path.join(icon_path, 'lt_mouth_oo.gif'),
                width=icon_width,
                height=icon_height)
    cmds.setParent(main)

    # Level 1 Eye
    # Lt and Rt Eye Close

    # Level 2
    # Lt and Rt Upper lid and lower lid surprise and close. (4 Shapes each side)
    cmds.frameLayout(label="Eye Lid Shapes",
                     w=314,
                     h=icon_height + 65,
                     bgc=[.52, .47, .4])
    cmds.scrollLayout()
    row2 = cmds.rowColumnLayout(nr=1)
    Face_Button(parent=row2,
                label='Left Up Wide',
                image=os.path.join(icon_path, 'lt_eye_wide.png'),
                width=icon_width,
                height=icon_height)
    Face_Button(parent=row2,
                label='Left Up Close',
                image=os.path.join(icon_path, 'lt_eye_closed.gif'),
                width=icon_width,
                height=icon_height)
    Face_Button(parent=row2,
                label='Left Low Wide',
                image=os.path.join(icon_path, 'lt_eye_wide.png'),
                width=icon_width,
                height=icon_height)
    Face_Button(parent=row2,
                label='Left Low Close',
                image=os.path.join(icon_path, 'lt_eye_closed.gif'),
                width=icon_width,
                height=icon_height)

    Face_Button(parent=row2,
                label='Right Up Close',
                image=os.path.join(icon_path, 'rt_eye_closed.gif'),
                width=icon_width,
                height=icon_height)
    Face_Button(parent=row2,
                label='Rigth Up Wide',
                image=os.path.join(icon_path, 'lt_eye_wide.png'),
                width=icon_width,
                height=icon_height)
    Face_Button(parent=row2,
                label='Right Low Close',
                image=os.path.join(icon_path, 'rt_eye_closed.gif'),
                width=icon_width,
                height=icon_height)
    Face_Button(parent=row2,
                label='Rigth Low Wide',
                image=os.path.join(icon_path, 'lt_eye_wide.png'),
                width=icon_width,
                height=icon_height)
    cmds.setParent(main)

    # Level 1 Brow
    # Eye Brow Up and Down
    cmds.frameLayout(label="Eye Brow Shapes",
                     w=314,
                     h=icon_height + 47,
                     bgc=[.52, .47, .4])
    cmds.scrollLayout()
    row3 = cmds.rowColumnLayout(nr=1)
    Face_Button(parent=row3,
                label='Left Up',
                image=os.path.join(icon_path, 'lt_brow_up.gif'),
                width=icon_width,
                height=icon_height)
    Face_Button(parent=row3,
                label='Left Down',
                image=os.path.join(icon_path, 'rt_brow_down.gif'),
                width=icon_width,
                height=icon_height)
    Face_Button(parent=row3,
                label='Right Up',
                image=os.path.join(icon_path, 'rt_brow_up.gif'),
                width=icon_width,
                height=icon_height)
    Face_Button(parent=row3,
                label='Right Down',
                image=os.path.join(icon_path, 'rt_brow_down.gif'),
                width=icon_width,
                height=icon_height)
    cmds.setParent(main)
    # Level 2 Inside, Mid, Outside (Lt and Rt), Center

    # Binding System
    # Jaw System

    # Neck System

    cmds.button(w=win_width, l='Apply Face System', bgc=[1, 0.9, 0.4])

    cmds.showWindow()
Exemple #45
0
 def image(*args, **kwargs):
     try:
         return cmds.image(*args, **kwargs)
     except Exception as exp:
         LOG.debug("MayaAPI exception in 'image': {0}".format(exp).strip())
         return None
Exemple #46
0
    def __init__(self):

        #get access to our maya tools
        toolsPath = cmds.internalVar(usd=True) + "mayaTools.txt"
        if os.path.exists(toolsPath):

            f = open(toolsPath, 'r')
            self.mayaToolsDir = f.readline()
            f.close()

        #check to see if window exists, if so, delete
        if cmds.window("AnimationRiggingTool_SettingsUI", exists=True):
            cmds.deleteUI("AnimationRiggingTool_SettingsUI")

        self.path = self.mayaToolsDir
        self.widgets = {}

        #create the window
        self.widgets["window"] = cmds.window("AnimationRiggingTool_SettingsUI",
                                             w=400,
                                             h=300,
                                             titleBarMenu=False,
                                             title="Settings",
                                             sizeable=False)

        #main layout
        self.widgets["main"] = cmds.formLayout(w=400, h=300)

        #background image
        image = self.mayaToolsDir + "/General/Icons/ART/settings.jpg"
        self.widgets["background"] = cmds.image(w=400,
                                                h=300,
                                                parent=self.widgets["main"],
                                                image=image)

        #close button
        self.widgets["closeButton"] = cmds.symbolButton(
            w=26,
            h=20,
            parent=self.widgets["main"],
            image=self.mayaToolsDir + "/General/Icons/ART/xbutton.bmp",
            c=self.close)
        cmds.formLayout(self.widgets["main"],
                        edit=True,
                        af=[(self.widgets["closeButton"], "top", 2),
                            (self.widgets["closeButton"], "right", 2)])

        #tools path
        self.widgets["toolsPathLabel"] = cmds.text(h=40,
                                                   w=100,
                                                   label="Tools Path: ",
                                                   font="boldLabelFont",
                                                   parent=self.widgets["main"])
        self.widgets["toolsPathField"] = cmds.textField(
            h=40, w=225, text="", parent=self.widgets["main"], editable=False)
        self.widgets["toolsPathBrowseButton"] = cmds.symbolButton(
            w=40,
            h=40,
            parent=self.widgets["main"],
            image=self.mayaToolsDir + "/General/Icons/ART/browse.bmp",
            c=self.browseNewToolsPath)

        cmds.formLayout(self.widgets["main"],
                        edit=True,
                        af=[(self.widgets["toolsPathLabel"], "top", 40),
                            (self.widgets["toolsPathLabel"], "left", 10)])
        cmds.formLayout(self.widgets["main"],
                        edit=True,
                        af=[(self.widgets["toolsPathField"], "top", 40),
                            (self.widgets["toolsPathField"], "right", 50)])
        cmds.formLayout(self.widgets["main"],
                        edit=True,
                        af=[(self.widgets["toolsPathBrowseButton"], "top", 40),
                            (self.widgets["toolsPathBrowseButton"], "right", 5)
                            ])

        #Source control settings
        divider = cmds.separator(w=400, h=10, style="out")
        self.widgets["useSourceControl"] = cmds.checkBox(
            h=40,
            label="Use Source Control",
            v=False,
            parent=self.widgets["main"],
            onc=partial(self.useSourceControl, True),
            ofc=partial(self.useSourceControl, False))

        cmds.formLayout(self.widgets["main"],
                        edit=True,
                        af=[(divider, "top", 95), (divider, "left", 0)])
        cmds.formLayout(self.widgets["main"],
                        edit=True,
                        af=[(self.widgets["useSourceControl"], "top", 105),
                            (self.widgets["useSourceControl"], "left", 10)])

        #source control test button
        self.widgets["testConnection"] = cmds.button(
            w=225,
            h=40,
            label="Test Perforce Connection",
            parent=self.widgets["main"],
            enable=False,
            c=self.testConnection)
        cmds.formLayout(self.widgets["main"],
                        edit=True,
                        af=[(self.widgets["testConnection"], "top", 105),
                            (self.widgets["testConnection"], "right", 25)])

        #favorite project option
        favoriteProjLabel = cmds.text(label="Set Favorite Project: ",
                                      parent=self.widgets["main"])
        cmds.formLayout(self.widgets["main"],
                        edit=True,
                        af=[(favoriteProjLabel, "top", 170),
                            (favoriteProjLabel, "left", 10)])
        self.widgets["favoriteProject_OM"] = cmds.optionMenu(
            w=225, h=40, label="", parent=self.widgets["main"])
        cmds.menuItem(label="None", parent=self.widgets["favoriteProject_OM"])

        cmds.formLayout(self.widgets["main"],
                        edit=True,
                        af=[(self.widgets["favoriteProject_OM"], "top", 160),
                            (self.widgets["favoriteProject_OM"], "right", 25)])

        #get projects and add to menu
        self.findProjects()

        #save settings button
        self.widgets["saveSettings"] = cmds.button(
            w=380,
            h=40,
            label="Save Settings and Close",
            parent=self.widgets["main"],
            c=self.saveSettings)
        cmds.formLayout(self.widgets["main"],
                        edit=True,
                        af=[(self.widgets["saveSettings"], "bottom", 10),
                            (self.widgets["saveSettings"], "right", 10)])

        #show window
        cmds.showWindow(self.widgets["window"])

        #get tools path
        self.getToolsPath()

        #load settings from disk
        settingsLocation = self.mayaToolsDir + "/General/Scripts/projectSettings.txt"
        if os.path.exists(settingsLocation):
            f = open(settingsLocation, 'r')
            settings = cPickle.load(f)
            useSource = settings.get("UseSourceControl")
            favoriteProject = settings.get("FavoriteProject")

            f.close()

            try:
                #set the checkbox to the settings value
                cmds.checkBox(self.widgets["useSourceControl"],
                              edit=True,
                              v=useSource)
                self.useSourceControl(useSource)

            except:
                pass

            try:
                #set the optionMenu to favorite project
                cmds.optionMenu(self.widgets["favoriteProject_OM"],
                                edit=True,
                                v=favoriteProject)

            except:
                pass
Exemple #47
0
    def ask_user_for_project_shot_other_details_once_then_save_file_in_format(
            self):
        '''

		'''
        self.form = cmds.setParent(q=True)

        cmds.formLayout(self.form, e=True, width=750)

        #		t1 = cmds.text(l=' show 		  scn			 shNo		   description			   version			initials			  comments(optional)	 .extension')
        self.t1 = cmds.columnLayout()
        self.i1 = cmds.image(image='D:/test/versionsHeader.jpg')
        cmds.setParent('..')
        self.l1 = cmds.optionMenu(label=' ',
                                  w=140,
                                  cc='onmi.changeOptionMenu()')
        showrec = self.readSql("select prjName from projects")
        for each in showrec:
            cmds.menuItem(label=each, parent=self.l1)

#		self.l2 = cmds.optionMenu(label=' ',w = 140 )
#		cmds.menuItem( label=' ' ,parent = self.l2)

        self.l3 = cmds.optionMenu(label=' ', w=140)
        cmds.menuItem(label=' ', parent=self.l3)

        self.l4 = cmds.textField()
        self.l5 = cmds.textField()
        self.l6 = cmds.textField()
        self.l7 = cmds.textField()

        cmds.textField(self.l4,
                       edit=True,
                       width=100,
                       enterCommand=('cmds.setFocus(\"' + self.l7 + '\")'))
        cmds.textField(self.l5,
                       edit=True,
                       width=30,
                       enterCommand=('cmds.setFocus(\"' + self.l5 + '\")'),
                       text='01',
                       enable=False)
        cmds.textField(self.l6,
                       edit=True,
                       width=30,
                       enterCommand=('cmds.setFocus(\"' + self.l6 + '\")'),
                       text=self.returnUserPrefix()[0])
        cmds.textField(self.l7,
                       edit=True,
                       width=70,
                       enterCommand=('cmds.setFocus(\"' + self.l7 + '\")'))

        self.l8 = cmds.button(
            label='ok, create first scene file',
            c='onmi.computeFileName();onmi.saveFileName(onmi.minorFolderName,onmi.ffilename)'
        )
        self.l9 = cmds.button(label='go ahead check in project folder')

        spacer = 5
        top = 5
        edge = 5

        #		cmds.formLayout(self.form, edit=True, attachForm=[(self.t1, 'top', 0), (self.t1, 'left', 0),(self.l1,'left', 10),(self.l8,'left',30)], attachControl=[(self.l1, 'top', 10, self.t1),(self.l2, 'top', 10, self.t1),(self.l3, 'top', 10, self.t1), (self.l4, 'top', 10, self.t1),(self.l5, 'top', 10, self.t1), (self.l6, 'top', 10, self.t1),(self.l7, 'top', 10, self.t1), (self.l8,'top',10, self.l1), (self.l9,'top',10, self.l1),(self.l9,'left',20, self.l8), (self.l2,'left', 10, self.l1),(self.l3,'left', 10, self.l2), (self.l4,'left', 10, self.l3), (self.l5,'left', 10, self.l4), (self.l6,'left', 10, self.l5), (self.l7,'left', 10, self.l6)])
        cmds.formLayout(self.form,
                        edit=True,
                        attachForm=[(self.t1, 'top', 0), (self.t1, 'left', 0),
                                    (self.l1, 'left', 10),
                                    (self.l8, 'left', 30)],
                        attachControl=[(self.l1, 'top', 10, self.t1),
                                       (self.l3, 'top', 10, self.t1),
                                       (self.l4, 'top', 10, self.t1),
                                       (self.l5, 'top', 10, self.t1),
                                       (self.l6, 'top', 10, self.t1),
                                       (self.l7, 'top', 10, self.t1),
                                       (self.l8, 'top', 10, self.l1),
                                       (self.l9, 'top', 10, self.l1),
                                       (self.l9, 'left', 20, self.l8),
                                       (self.l3, 'left', 10, self.l1),
                                       (self.l4, 'left', 10, self.l3),
                                       (self.l5, 'left', 10, self.l4),
                                       (self.l6, 'left', 10, self.l5),
                                       (self.l7, 'left', 10, self.l6)])
Exemple #48
0
def createUI(*args):
    #window
    windowID = 'spiderGenUI90'
    if cmds.window(windowID, exists=True):
        cmds.deleteUI(windowID)

    cmds.window(windowID,
                title='Spider Web Generator',
                resizeToFitChildren=True,
                sizeable=False)

    #header image
    cmds.rowColumnLayout(w=400)
    #
    #cmds.image(image=cmds.internalVar(usd=True)+"SpiderGen/UIheader.png")
    cmds.image(image=image_path + "/script/model/SpiderGen/UIheader.png")
    cmds.setParent("..")

    #controls
    cmds.frameLayout(label="Spiderweb Options", collapsable=False, mw=5, mh=5)

    cmds.text(
        label=
        'Please create a ring of Anchors to define the shape of the spiderweb.',
        align='center',
        height=20)
    cmds.rowColumnLayout(numberOfColumns=3,
                         columnWidth=[(1, 200), (2, 10), (3, 190)])
    cmds.button(label='Create Anchor', command=spiderGen.createAnchor, w=200)
    cmds.text(label='')
    deleteAnchors = cmds.checkBox(label='Delete Anchors after use')
    cmds.setParent("..")

    cmds.separator(height=10)

    secondaryRadiusControl = cmds.floatSliderGrp(label='Web Radius',
                                                 minValue=0,
                                                 maxValue=1,
                                                 value=0.5,
                                                 field=True)
    secondaryRoundnessControl = cmds.floatSliderGrp(pre=2,
                                                    label='Web Roundness',
                                                    minValue=-1,
                                                    maxValue=1,
                                                    value=0.5,
                                                    field=True)
    spiralStartRadiusControl = cmds.floatSliderGrp(label='Spiral Start Radius',
                                                   minValue=0,
                                                   maxValue=0.5,
                                                   value=0.1,
                                                   field=True)
    spiralStepControl = cmds.floatSliderGrp(pre=2,
                                            label='Spiral Step Distance',
                                            minValue=0.1,
                                            maxValue=1,
                                            value=0.5,
                                            field=True)
    spirallingControl = cmds.floatSliderGrp(pre=2,
                                            label='Spiralling Amount',
                                            minValue=0,
                                            maxValue=1,
                                            value=0,
                                            field=True)
    randomControl = cmds.floatSliderGrp(pre=2,
                                        label='Random Influence',
                                        minValue=0,
                                        maxValue=1,
                                        value=0.1,
                                        field=True)
    perfection = cmds.floatSliderGrp(pre=2,
                                     label='Web Imperfections',
                                     minValue=0,
                                     maxValue=1,
                                     value=0.5,
                                     field=True)

    cmds.separator(height=10)

    cmds.rowColumnLayout(numberOfColumns=3,
                         columnWidth=[(1, 100), (1, 150), (1, 150)])

    cmds.text(label='Animated Spider:', align='right')
    animatedSpider = cmds.checkBox(label='')
    cmds.separator(height=20, vis=False)
    cmds.text(label='Frame Range:', align='right')
    animStart = cmds.intField(value=cmds.playbackOptions(q=True, minTime=True))
    animEnd = cmds.intField(value=(cmds.playbackOptions(q=True, maxTime=True)))

    cmds.setParent("..")

    cmds.text(
        label='Adjust the spiders size by scaling the rectangular controller.',
        align='center')
    cmds.text(
        label=
        'The animation can also be adjusted under the Extra Attributes tab.',
        align='center')

    cmds.separator(height=20)

    cmds.rowColumnLayout(nc=3, cw=[(1, 150), (2, 150), (3, 100)])

    cmds.button(
        label='Generate Spider Web',
        height=30,
        command=lambda *args: spiderGen.createSpiderWeb(
            cmds.floatSliderGrp(secondaryRadiusControl, query=True, value=True
                                ),
            cmds.floatSliderGrp(
                secondaryRoundnessControl, query=True, value=True),
            cmds.floatSliderGrp(
                spiralStartRadiusControl, query=True, value=True),
            cmds.floatSliderGrp(spiralStepControl, query=True, value=True),
            cmds.floatSliderGrp(randomControl, query=True, value=True),
            cmds.floatSliderGrp(spirallingControl, query=True, value=True),
            cmds.checkBox(animatedSpider, query=True, value=True),
            cmds.intField(animStart, query=True, value=True),
            cmds.intField(animEnd, query=True, value=True),
            cmds.floatSliderGrp(perfection, query=True, value=True),
            cmds.checkBox(deleteAnchors, query=True, value=True)))

    cmds.button(label='Add to Custom shelf', command=shelfButton)
    cmds.button(label='Reset', command=createUI)

    cmds.setParent("..")

    #text
    cmds.text(l='Joe Withers - 2016',
              w=400,
              h=30,
              ww=True,
              fn="smallPlainLabelFont")

    cmds.showWindow()
Exemple #49
0
def UI():
    settings.readFromFile(settingsName)

    #Icon path
    icon = scriptsDir + "Icons/menuIconFile.png"

    #Check to see if our window exists
    if cmds.window("batchExportUI", exists=True):
        cmds.deleteUI("batchExportUI")

#Create UI window
    window = cmds.window("batchExportUI",
                         title="batchExport",
                         w=400,
                         h=190,
                         mnb=False,
                         mxb=False,
                         sizeable=False,
                         titleBarMenu=True,
                         menuBar=True)

    #Create main layout
    mainLayout = cmds.columnLayout(w=400, h=190)

    #Banner image
    bannerPath = scriptsDir + "Icons/batchExportBanner.jpg"
    cmds.image(w=400, h=40, image=bannerPath)

    #Create our row column layout
    cmds.separator(height=5)
    rowColumnLayout = cmds.rowColumnLayout(nc=2,
                                           cw=[(1, 360), (2, 40)],
                                           columnOffset=[(1, "both", 5),
                                                         (2, "both", 5)])

    #Export Directory
    cmds.text(label="Export Directory:", align="left")
    cmds.text(label="")
    inputField = cmds.textField("inputField", width=360)

    #Edit the inputfield to have filepath as default
    defaultDir = getDefaultDir()
    if defaultDir == "/FBX":
        cmds.textField("inputField", edit=True, text="SET OUTPUT DIR")
    else:
        cmds.textField("inputField", edit=True, text=defaultDir)
    exportBrowseButton = cmds.symbolButton(w=20,
                                           h=25,
                                           image=icon,
                                           c=browseFilePath)

    #Origo checkbox
    cmds.separator(height=10, style="none")
    cmds.separator(height=10, style="none")
    rowColumnLayout2 = cmds.rowColumnLayout(nc=2, cw=[(1, 200), (2, 148)])
    origoBox = cmds.checkBox("origoBox",
                             label="Move to Origo",
                             value=settings.moveToOrigo,
                             cc=saveSettings)

    #FBX dropdown
    cmds.optionMenu("FBXVersion", label="FBXVersion", cc=saveSettings)
    cmds.menuItem(label='2013')
    cmds.menuItem(label='2014')
    cmds.menuItem(label='2016')
    cmds.optionMenu("FBXVersion", edit=True, v=settings.FBXVersion)

    #Build Button
    cmds.separator(height=10, style="none")
    cmds.separator(height=10, style="none")
    createButton = cmds.button(label="EXPORT",
                               w=385,
                               h=40,
                               p=mainLayout,
                               c=exportMain)

    #Show window
    cmds.showWindow(window)
Exemple #50
0
def __updateInspector():

    global CACHE
    CACHE = {"index": {}, "function": {}, "execute": {}}

    mc.button("b_execute_FRW", e=True, en=False)
    l = mc.scrollLayout("sl_inspector_FRW", q=True, ca=True) or []
    if len(l): mc.deleteUI(l)
    if mc.textScrollList("tsl_type_FRW", q=True, nsi=True):
        t = mc.textScrollList("tsl_type_FRW", q=True, si=True)[0]
        if mc.textScrollList("tsl_name_FRW", q=True, nsi=True):
            CACHE["name"] = mc.textScrollList("tsl_name_FRW", q=True,
                                              si=True)[0]
            CACHE["file"] = STAGING_DIR + t + "/" + CACHE[
                "name"] + "/" + CACHE["name"] + ".py"
            if os.path.isfile(CACHE["file"]):
                m = imp.load_source(CACHE["name"], CACHE["file"])
                for n, o in inspect.getmembers(m, inspect.isfunction):
                    CACHE["index"][o.__code__.co_firstlineno] = [
                        n, inspect.getargspec(o)
                    ]
                ids = sorted(CACHE["index"].viewkeys())
                c = len(ids)
                for i in range(c):
                    if i == 0: mc.button("b_execute_FRW", e=True, en=True)
                    fn = CACHE["index"][ids[i]][0]
                    CACHE["function"][fn] = {
                        "checkbox": None,
                        "arguments": {},
                        "presets": {}
                    }
                    mc.rowLayout(nc=10, adj=2, p="sl_inspector_FRW")
                    cb = mc.iconTextCheckBox(i="checkboxOff.png",
                                             si="checkboxOn.png",
                                             v=__loadStatePreset(fn),
                                             cc=partial(
                                                 __saveStatePreset, ids[i]))
                    CACHE["function"][fn]["checkbox"] = cb
                    mc.text(l=CACHE["index"][ids[i]][0],
                            w=250,
                            al="left",
                            fn="fixedWidthFont")
                    ab = mc.iconTextButton(st="iconOnly",
                                           i1="fileOpen.png",
                                           ann="load preset",
                                           vis=False,
                                           c=partial(__loadAllArgPresets,
                                                     ids[i]))
                    eb = mc.iconTextButton(st="iconOnly",
                                           i1="fileSave.png",
                                           ann="save preset",
                                           vis=False,
                                           c=partial(__saveAllArgPresets,
                                                     ids[i]))
                    db = mc.iconTextButton(st="iconOnly",
                                           i1="QR_delete.png",
                                           ann="delete preset",
                                           vis=False,
                                           c=partial(__deleteAllArgPresets,
                                                     ids[i]))
                    rv = mc.iconTextButton(st="iconOnly",
                                           i1="RS_disable.png",
                                           ann="reset value",
                                           vis=False,
                                           c=partial(__resetAllArgValues,
                                                     ids[i]))
                    mc.text(l="", w=5)
                    CACHE["function"][fn]["error"] = mc.image(
                        i="RS_WarningOldCollection", vis=False)
                    e = mc.iconTextButton(st="iconOnly",
                                          i1="timeplay.png",
                                          c=partial(__execute, ids[i]))
                    CACHE["execute"][e] = CACHE["index"][ids[i]][0]
                    mc.setParent("..")
                    arg_nms = CACHE["index"][ids[i]][1][0]
                    c_nms = len(arg_nms)
                    arg_val = CACHE["index"][ids[i]][1][3] or []
                    c_val = len(arg_val)
                    offset = c_nms - c_val
                    # arguments
                    for j in range(offset):
                        if j == 0:
                            for s in [ab, eb, db, rv]:
                                mc.iconTextButton(s, e=True, vis=True)
                        tfg, img = __argumentWidget(j, ids[i],
                                                    CACHE["index"][ids[i]][0],
                                                    arg_nms[j], None)
                        CACHE["function"][fn]["arguments"][arg_nms[j]] = tfg
                        CACHE["function"][fn]["presets"][arg_nms[j]] = img
                    # keyword arguments
                    for j in range(c_val):
                        if j == 0:
                            for s in [ab, eb, db, rv]:
                                mc.iconTextButton(s, e=True, vis=True)
                        jj = j + offset
                        tfg, img = __argumentWidget(jj, ids[i],
                                                    CACHE["index"][ids[i]][0],
                                                    arg_nms[jj], arg_val[j])
                        CACHE["function"][fn]["arguments"][arg_nms[jj]] = tfg
                        CACHE["function"][fn]["presets"][arg_nms[jj]] = img
                    if i < c - 1:
                        mc.separator(st="in",
                                     w=435,
                                     h=10,
                                     p="sl_inspector_FRW")
                    # Load at once any available presets for the arguments of the inspected function.
                    __loadArgPreset(ids[i], arg_nms)
Exemple #51
0
import maya.cmds as cmds
Exemple #52
0
def main(force=False):

    if force:
        if mc.dockControl("dc_FRW", ex=True) == True:
            mc.deleteUI("dc_FRW")
        if mc.window("w_FRW", ex=True):
            mc.deleteUI("w_FRW")

    if not mc.window("w_FRW", ex=True):
        a = mc.window("w_FRW", t="the Fastest Rig in the West")
        tl = mc.tabLayout()
        tab1 = mc.paneLayout(cn="horizontal3",
                             st=1,
                             shp=1,
                             ps=[(1, 1, 1), (2, 1, 99), (3, 1, 1)])
        mc.columnLayout(adj=True)
        mc.rowLayout(nc=5, adj=4)
        mc.iconTextButton(st="iconOnly",
                          i1="QR_add.png",
                          ann="create new asset",
                          c=__createAsset_ui)
        mc.iconTextButton(st="iconOnly",
                          i1="QR_delete.png",
                          ann="delete selected asset",
                          c=__deleteAsset)
        mc.iconTextButton(st="iconOnly",
                          i1="CN_refresh.png",
                          ann="update assets list",
                          c=__update)
        mc.text(l="")
        mc.iconTextButton(st="iconOnly",
                          i1="UVEditorSnapshot.png",
                          ann="update icon",
                          c=__icon)
        mc.setParent("..")
        mc.rowLayout(nc=3, adj=2)
        mc.textScrollList("tsl_type_FRW", w=100, h=200, sc=__updateNames)
        mc.textScrollList("tsl_name_FRW", w=170, h=200, sc=__updateIconAndPath)
        mc.image("img_FRW", w=200, h=200)
        mc.setParent("..")
        mc.rowLayout(nc=2, adj=1)
        mc.textField("tf_path_FRW", ed=False)
        mc.iconTextButton(st="iconOnly",
                          i1="passSetRelationEditor.png",
                          ann="edit",
                          c=__edit)
        mc.setParent("..")
        mc.setParent("..")
        mc.scrollLayout("sl_inspector_FRW", bv=True)
        mc.setParent("..")
        mc.button("b_execute_FRW", l="execute", c=__execute)
        mc.setParent("..")
        tab2 = mc.scrollLayout(bv=True)
        mc.columnLayout("cl_library_FRW", adj=True, rs=5)
        mc.setParent("..")
        mc.setParent("..")
        tab3 = mc.scrollLayout(bv=True)
        mc.columnLayout("cl_extensions_FRW", adj=True, rs=5)
        mc.setParent("..")
        mc.setParent("..")
        mc.tabLayout(tl,
                     e=True,
                     tl=[(tab1, "builder"), (tab2, "library"),
                         (tab3, "extensions")])

    if not mc.dockControl("dc_FRW", ex=True):
        mc.dockControl("dc_FRW",
                       l="the Fastest Rig in the West",
                       con="w_FRW",
                       aa=["left", "right"],
                       a="left",
                       w=1)
        mc.dockControl("dc_FRW", e=True, fl=True)
    else:
        mc.dockControl("dc_FRW", e=True, vis=True)

    __initialize()
    __update()
    __library()
    __extensions()
def createUI( windowname, pApplyCallback):
    '''Creates the user interface which will recieve various inputs from the user which will later be used to build the tree in the treegen function.
    The user can pick the treetype, the colour of the tree and leaves, the material, the length, the starting angle, the number of iterations, whether they want leaves and apples, 
    the type of leaf, the size of the leaf, and the thickness of the leaves.
    There are also 4 buttons,
    Apply will pass the control path names
    
       windowname	    : the name that will be displayed on the GUI
       pApplyCallback	: the function that the inputs will be passed to when the user clicks apply
    '''
    
    windowID = 'mainwindow'
    
    if cmds.window( windowID, exists=True):
        cmds.deleteUI(windowID)
    cmds.window( windowID, title= windowname , sizeable=False, resizeToFitChildren=True)
    
    cmds.columnLayout( adjustableColumn=True )
    
    #the user interface image that will appear at the top of the window
    submission_path = "/home/s5113911/PythonProgramming"
    cmds.image( w =10, h = 150, i= submission_path+"/Project/panarama4.jpg")
    cmds.separator(h =10, style = 'none')
       
    cmds.text( label ='Tree Type:',align='left')
    
    #controls to choose the treetype
    treetype =cmds.radioButtonGrp( label='', labelArray4=['Standard', 'Dispersed', 'Curved', 'Slant'], numberOfRadioButtons=4, select = 1 )
    treetype2 = cmds.radioButtonGrp( numberOfRadioButtons=2, shareCollection=treetype, label='', labelArray2=['Square', 'Curved2'] )
    
    cmds.separator(h =10, style = 'none')
    
    #control to choose the colour of the tree
    rgbs = cmds.colorSliderGrp( label='Tree Colour:',columnAlign=(1,'left'), rgb=(0.2, 0.08, 0.0) )
    
    cmds.separator(h =10, style = 'none')
    
    #control to choose the colour of the leaves
    rgbleaves = cmds.colorSliderGrp( label='Leaves Colour:',columnAlign=(1,'left'), rgb=(0.06, 0.2, 0.01) )
    
    cmds.separator(h =10, style = 'none')
    cmds.text( label ='Material:',align='left')
    
    #control to choose the material of the tree
    materiall =cmds.radioButtonGrp( label='', labelArray3=['Lambert', 'Blinn', 'Phong'], numberOfRadioButtons=3, select = 1 )
    
    cmds.separator(h =10, style = 'none')
    
    #slider controls to specify the length, angle and iterations of the tree, (iterations meaning th number of the types the chosen l-system will be iterated
    length = cmds.floatSliderGrp(label='Height:', minValue=0.05, maxValue=1.0, value=0.6, step=0.01, field=True, columnAlign=[1,'left'])
    angle = cmds.floatSliderGrp(label='Angle:', minValue=10, maxValue=60, value=25, step=0.01, field=True, columnAlign=[1,'left'])
    iterations = cmds.intSliderGrp( label='Iterations:', minValue=1, maxValue=5, value=4, step=1, field = True, columnAlign=[1,'left'] )
    
    cmds.separator(h =10, style = 'none')
    
    #control to enable or disable apples on the tree
    applecheck = cmds.checkBoxGrp( numberOfCheckBoxes=1, label='Fruit?:  ', columnAlign=[1,'left']  )
    
    cmds.separator(h =10, style = 'none')
    cmds.separator(h =10, style = 'none')
    
    cmds.text( label ='Leaf Type:',align='left')
    #control to enable or disable apples on the tree
    leaves =cmds.radioButtonGrp( label='', labelArray2=['Default', 'Maple'], numberOfRadioButtons=2, select = 1, enable = True )
    
    cmds.separator(h =10, style = 'none')
    cmds.separator(h =10, style = 'none')
    #control to enable or disable leaves on the tree
    leafcheck = cmds.checkBoxGrp( numberOfCheckBoxes=1, label='Leaves?:  ', columnAlign=[1,'left'], value1 =True, changeCommand1=functools.partial( toggleRadio, leaves )  )
    
    cmds.separator(h =10, style = 'none')
    cmds.separator(h =10, style = 'none')
    cmds.text( label ='Leaf Material:',align='left')
    #control to choose the material of the leaves
    materialleaves =cmds.radioButtonGrp( label='', labelArray3=['Lambert', 'Blinn', 'Phong'], numberOfRadioButtons=3, select = 1 )

    cmds.separator(h =10, style = 'none')
    cmds.separator(h =10, style = 'none')
    #control to specify a scaling factor for the leaves
    leafscale = cmds.floatSliderGrp( label='Leafscale:', minValue=0.1, maxValue=3, value=1.2, step=0.01, field = True, columnAlign=[1,'left'])
    
    cmds.separator(h =10, style = 'none')
    cmds.text( label ='Leaves Thickness:',align='left')
    
    #control to specify the 'thickness' of the leaves, e.g if thicker is selected the rule l = ll is added which on average will double the number of leaves created
    leavesamount =cmds.radioButtonGrp( label='', labelArray2=['Default', 'Thicker'], numberOfRadioButtons=2, select = 1)
     
    cmds.separator(h =10, style = 'none')
    cmds.separator(h =10, style = 'none')
    
    #creating and defining the flags of the progress bar, which will allow the user to track the programs progress for each tree generation
    progressControl = cmds.progressBar(maxValue=8000, width = 300, bgc =[0.23,0.16,0.0] )
    
    cmds.separator(h =10, style = 'none')
    
    #when the apply button is pressed, the path names of the various controls are passed to the pApplyCallback function( treegen function)
    cmds.button( label='Apply', backgroundColor=[0.9,0.9,0.9], command=functools.partial( pApplyCallback, length, iterations, treetype, materiall, rgbs, leafscale, leavesamount, rgbleaves, applecheck, leafcheck, angle, leaves, treetype2, progressControl, materialleaves) )
             
    cmds.separator(h =10, style = 'none')
    
    #the 'savemenu' fucntion is called
    cmds.button( label = 'Save', command=functools.partial(savemenu), backgroundColor=[0.101,0.338,0.017])
    cmds.separator(h =10, style = 'none') 
    
    #The 'previous' function is called
    cmds.button( label = 'Undo', command=functools.partial(previous), backgroundColor=[0.23,0.16,0.0])
    cmds.separator(h =10, style = 'none')
    
    cmds.separator(h =10, style = 'none')
    cmds.separator(h =10, style = 'none')
    cmds.separator(h =10, style = 'none')
   
    #the cancelCallback function is called
    cmds.button( label = 'Cancel', command=functools.partial( cancelCallback, windowID) )
    
    cmds.separator(h =10, style = 'none')
    
    cmds.showWindow()
    cmds.window(windowID, e=True, width=640)   
def editCharacter(*args):

    if cmds.window("artEditCharacterUI", exists=True):
        cmds.deleteUI("artEditCharacterUI")

    window = cmds.window("artEditCharacterUI",
                         w=300,
                         h=400,
                         title="Edit Character",
                         mxb=False,
                         mnb=False,
                         sizeable=True)
    mainLayout = cmds.columnLayout(w=300, h=400, rs=5, co=["both", 5])

    #banner image
    toolsPath = cmds.internalVar(usd=True) + "mayaTools.txt"
    if os.path.exists(toolsPath):

        f = open(toolsPath, 'r')
        mayaToolsDir = f.readline()
        f.close()

    cmds.image(w=300,
               h=50,
               image=mayaToolsDir + "/General/Icons/ART/artBanner300px.bmp",
               parent=mainLayout)

    cmds.text(label="", h=1, parent=mainLayout)
    optionMenu = cmds.optionMenu("artProjOptionMenu",
                                 label="Project:",
                                 w=290,
                                 h=40,
                                 cc=getProjCharacters,
                                 parent=mainLayout)
    textScrollList = cmds.textScrollList("artProjCharacterList",
                                         w=290,
                                         h=300,
                                         parent=mainLayout)
    button = cmds.button(
        w=290,
        h=40,
        label="Edit Export File",
        c=editSelectedCharacter,
        ann=
        "Edit the character's skeleton settings, joint positions, or skin weights.",
        parent=mainLayout)
    button2 = cmds.button(
        w=290,
        h=40,
        label="Edit Rig File",
        c=editSelectedCharacterRig,
        ann=
        "Edit the character's control rig that will be referenced in by animation.",
        parent=mainLayout)

    cmds.text(label="", h=1)

    cmds.showWindow(window)
    getProjects()

    # CRA NEW CODE - Adding the code snippet so that it starts in your favorite folder.
    #set favorite project if it exists
    settingsLocation = mayaToolsDir + "/General/Scripts/projectSettings.txt"
    if os.path.exists(settingsLocation):
        f = open(settingsLocation, 'r')
        settings = cPickle.load(f)
        favoriteProject = settings.get("FavoriteProject")

        try:
            cmds.optionMenu("artProjOptionMenu", edit=True, v=favoriteProject)
        except:
            pass
    # CRA END NEW CODE
    getProjCharacters()
Exemple #55
0
    def createMaterialsLayout(self):

        print("ML Log: createMaterialsLayout")
        # Create the tab and form layouts.
        self.materialsTab = cmds.tabLayout(borderStyle="full")
        self.materialsForm = cmds.formLayout(numberOfDivisions=100)

        # Add the icon size slider.
        iconSizeRow = cmds.rowLayout("RPRIconSize",
                                     numberOfColumns=2,
                                     columnWidth=(1, 22))
        cmds.image(image='material_browser/thumbnails.png')
        self.iconSizeSlider = cmds.intSlider(
            width=120,
            step=1,
            minValue=1,
            maxValue=4,
            value=self.getDefaultMaterialIconSize(),
            dragCommand=self.updateMaterialIconSize)
        cmds.setParent('..')

        # Add the search field.
        searchRow = cmds.rowLayout(numberOfColumns=2)
        cmds.image(image='material_browser/search.png')
        self.searchField = cmds.textField(
            placeholderText="Search...",
            width=250,
            height=22,
            textChangedCommand=self.searchMaterials)
        cmds.setParent('..')

        # Add help text.
        helpText = cmds.text(
            label=
            "To import a material, double click it, or select it and click the Import button."
        )

        # Add the background canvas.
        bg = cmds.canvas(rgbValue=self.backgroundColor)

        # Add the scroll layout that will contain the material icons.
        self.materialsContainer = cmds.scrollLayout(
            backgroundColor=self.backgroundColor,
            childResizable=True,
            resizeCommand=self.updateMaterialsLayout)
        cmds.setParent('..')

        # Assign the form to the tab.
        cmds.tabLayout(self.materialsTab,
                       edit=True,
                       tabLabel=((self.materialsForm, 'Materials')))

        # Lay out components within the form.
        cmds.formLayout(self.materialsForm,
                        edit=True,
                        attachForm=[(searchRow, 'top', 5),
                                    (searchRow, 'right', 5),
                                    (iconSizeRow, 'top', 10),
                                    (iconSizeRow, 'left', 6),
                                    (self.materialsContainer, 'left', 10),
                                    (self.materialsContainer, 'bottom', 10),
                                    (self.materialsContainer, 'right', 5),
                                    (bg, 'left', 5), (bg, 'bottom', 5),
                                    (bg, 'right', 5), (helpText, 'left', 10),
                                    (helpText, 'bottom', 8)],
                        attachNone=[(searchRow, 'bottom'), (searchRow, 'left'),
                                    (iconSizeRow, 'bottom'),
                                    (iconSizeRow, 'right'),
                                    (helpText, 'right'), (helpText, 'top')],
                        attachControl=[
                            (self.materialsContainer, 'top', 10, searchRow),
                            (self.materialsContainer, 'bottom', 10, helpText),
                            (bg, 'top', 5, searchRow),
                            (bg, 'bottom', 5, helpText)
                        ])

        cmds.setParent('..')
        cmds.setParent('..')

        # Initialize the currently selected category index.
        self.selectedCategoryIndex = 0
Exemple #56
0
    def create_ui(self, pWindowTitle, pApplyCallBack, pSavePreset, pLoadPreset):
        windowID = 'miniTree'
        if cmds.window(windowID, exists=True):
            cmds.deleteUI(windowID)

        cmds.window(windowID, title=pWindowTitle, sizeable=False, resizeToFitChildren=True, w = 100)

        cmds.rowColumnLayout(numberOfColumns=1)
        logopath = cmds.internalVar(upd=True) + "icons/mini_tree_logo.png"
        cmds.image(image=logopath)
        cmds.separator(h=10, style='none')
        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)))

        child1 = cmds.rowColumnLayout(numberOfColumns=1)

        cmds.separator(h=10, style='in')
        cmds.text(label='General', align='center')
        cmds.separator(h=10, style='in')

        polyNumberField = cmds.intSliderGrp("polyNumberField", label='Polygons:', min=3, max=20, value=4, step=1,
                                            field=True,
                                            annotation='Changes number of polygons in each tree segment')
        treeDepthField = cmds.intSliderGrp("treeDepthField", label='Levels (tree size):', min=1, max=8, value=3, step=1,
                                           field=True,
                                           annotation='Changes number of branching levels')
        treeFirstSegmentLength = cmds.floatSliderGrp("treeFirstSegmentLength", label='Base length:', min=0.1, max=5,
                                                     value=1, step=0.1,
                                                     field=True,
                                                     annotation='Increases/decreases the length of the first tree segment')
        cmds.separator(h=10, style='in')
        cmds.text(label='Branch length', align='center')
        cmds.separator(h=10, style='in')
        treeSegmentLength = cmds.floatSliderGrp("treeSegmentLength", label='Length:', min=0.2, max=20, value=5,
                                                step=0.1, field=True,
                                                annotation='Changes the initial length of each branch')

        treeLengthDecrease = cmds.floatSliderGrp("treeLengthDecrease", label='Decrease:', min=0.0, max=1, value=0.8,
                                                 step=0.01, field=True,
                                                 annotation='Affects how the length of each branch decreases as the tree grows')
        cmds.separator(h=10, style='in')
        cmds.text(label='Trunk/branch radius', align='center')
        cmds.separator(h=10, style='in')
        trunkRadius = cmds.floatSliderGrp("trunkRadius", label='Radius:', min=0.1, max=10, value=1, step=0.1,
                                          field=True,
                                          annotation='Changes the initial radius of the tree trunk')
        radiusDecrease = cmds.floatSliderGrp("radiusDecrease", label='Decrease:', min=0.0, max=1, value=0.45, step=0.01,
                                             field=True,
                                             annotation='Affects how the radius of the branches decreases as the tree grows')
        cmds.separator(h=10, style='in')
        cmds.text(label='Branching', align='center')
        cmds.separator(h=10, style='in')
        treeBranches = cmds.intSliderGrp("treeBranches", label='Max branches:', min=1, max=8, value=2, step=1,
                                         field=True,
                                         annotation='Changes the maximum number of branches that may occur when branching')
        treeBranches_a = cmds.floatSliderGrp("treeBranches_a", label='Branches angle:', min=0, max=math.pi, value=0.5,
                                             step=0.01,
                                             field=True, annotation='Manipulates the angle of braches')
        cmds.separator(h=10, style='in')
        cmds.text(label='Randomness', align='center')
        cmds.separator(h=10, style='in')
        branchingChance = cmds.floatSliderGrp("branchingChance", label='Branching chance:', min=0, max=1, value=0.9,
                                              step=0.01,
                                              field=True,
                                              annotation='Lower values increase a chance of a branch not appearing')
        cmds.separator(h=10, style='in')
        branchAngleChance = cmds.floatSliderGrp("branchAngleChance", label='Angle shift shance:', min=0, max=1,
                                                value=0.9,
                                                step=0.01,
                                                field=True,
                                                annotation='Chance of a branch angle deviating from the angle of all other branches')
        branchAngleRAmount = cmds.floatSliderGrp("branchAngleRAmount", label='Angle random amount:', min=0, max=math.pi,
                                                 value=math.pi / 6,
                                                 step=0.01,
                                                 field=True,
                                                 annotation='Angle of how much a branch angle can change randomly')
        cmds.separator(h=10, style='in')
        branchTurnChance = cmds.floatSliderGrp("branchTurnChance", label='Turn shift chance:', min=0, max=1, value=0.9,
                                               step=0.01,
                                               field=True,
                                               annotation='Chance of a branch turn deviating from the turn of all other branches')
        branchTurnRAmount = cmds.floatSliderGrp("branchTurnRAmount", label='Turn random amount:', min=0, max=math.pi,
                                                value=math.pi / 2,
                                                step=0.01,
                                                field=True, annotation='Angle of how much a branch can turn randomly')

        cmds.separator(h=10, style='in')
        cmds.text(label='Colour', align='center')
        cmds.separator(h=10, style='in')
        treeColor = cmds.colorSliderGrp("treeColor", label='Tree colour:', rgb=(0.4, 0.3, 0.3),
                                        annotation='Double click the colour to open the palette, changes tree colour')
        cmds.separator(h=10, style='none')

        cmds.setParent('..')

        child2 = cmds.rowColumnLayout(numberOfColumns=1)

        cmds.separator(h=10, style='in')
        cmds.text(label='General', align='center')
        cmds.separator(h=10, style='in')
        treeFoliageSze = cmds.floatSliderGrp("treeFoliageSze", label='Size:', min=0.1, max=6, value=1, step=0.01,
                                             field=True,
                                             annotation='Size of each foliage sphere')
        treeFoliageRes = cmds.intSliderGrp("treeFoliageRes", label='Resolution:', min=0, max=4, value=1, step=1,
                                           field=True,
                                           annotation='Subdivides each of the foliage spheres')
        cmds.separator(h=10, style='in')
        cmds.text(label='More foliage', align='center')
        cmds.separator(h=10, style='in')
        treeFoliageNumber = cmds.intSliderGrp("treeFoliageNumber", label='Spheres number:', min=1, max=20, value=1,
                                              step=1, field=True,
                                              annotation='Number of foliage spheres per branch')
        treeFoliageSpread = cmds.floatSliderGrp("treeFoliageSpread", label='Randomise positions:', min=0, max=5,
                                                value=0, step=0.01,
                                                field=True,
                                                annotation='Randomise the foliage spheres position (necessary when changing foliage number)')

        cmds.separator(h=10, style='in')
        cmds.text(label='Colour', align='center')
        cmds.separator(h=10, style='in')
        foliageColor = cmds.colorSliderGrp("foliageColor", label='Foliage colour:', rgb=(0.30, 0.7, 0.40),
                                           annotation='Double click the colour to open the palette, changes foliage colour')
        cmds.separator(h=10, style='none')

        cmds.setParent('..')

        cmds.tabLayout(tabs, edit=True, tabLabel=((child1, 'Tree'), (child2, 'Foliage')))
        cmds.setParent('..')
        cmds.setParent('..')

        cmds.rowColumnLayout(numberOfColumns=1)

        treeTypeSelect = cmds.radioButtonGrp("treeTypeSelect", label='Tree type', sl=1, labelArray2=['Normal', 'Pine'],
                                             numberOfRadioButtons=2)
        cmds.separator(h=10, style='none')

        def changeTextFld(*args):
            cmds.intFieldGrp("randomSeed", edit=True, v1=random.randint(0, 9999))

        cmds.separator(h=10, style='none')
        cmds.separator(h=10, style='none')

        cmds.rowColumnLayout(numberOfColumns=2)
        cmds.button(label='Randomize seed', command=changeTextFld, annotation='Changes seed value to a random value')
        randomSeed = cmds.intFieldGrp("randomSeed", label='Seed:', numberOfFields=1, value1=9981,
                                      annotation='Number affecting random generation of the tree')
        #cmds.separator(h=10, style='none')

        cmds.setParent('..')
        cmds.separator(h=10, style='none')
        cmds.separator(h=10, style='in')
        cmds.separator(h=10, style='none')

        cmds.rowColumnLayout(numberOfColumns=3, columnWidth=[(1, 300),(2, 20), (3, 100)])
        cmds.button(label='Create tree', h = 60, align='center', annotation='Create a tree using the above settings',
                    command=functools.partial(pApplyCallBack,
                                              polyNumberField,
                                              treeDepthField,
                                              treeSegmentLength,
                                              treeLengthDecrease,
                                              trunkRadius,
                                              radiusDecrease,
                                              treeBranches,
                                              treeBranches_a,
                                              treeFoliageSze,
                                              treeFoliageRes,
                                              randomSeed,
                                              foliageColor,
                                              treeColor,
                                              treeFoliageNumber,
                                              treeFoliageSpread,
                                              treeFirstSegmentLength,
                                              treeTypeSelect,
                                              branchingChance,
                                              branchAngleChance,
                                              branchTurnChance,
                                              branchTurnRAmount,
                                              branchAngleRAmount
                                              ))
        cmds.separator(h=10, style='none')
        cmds.rowColumnLayout(numberOfColumns=1, columnWidth=[(1, 90)])

        cmds.button(label='Save preset', annotation='Saves current settings as a preset',
                    command=functools.partial(pSavePreset,
                                              polyNumberField,
                                              treeDepthField,
                                              treeSegmentLength,
                                              treeLengthDecrease,
                                              trunkRadius,
                                              radiusDecrease,
                                              treeBranches,
                                              treeBranches_a,
                                              treeFoliageSze,
                                              treeFoliageRes,
                                              randomSeed,
                                              foliageColor,
                                              treeColor,
                                              treeFoliageNumber,
                                              treeFoliageSpread,
                                              treeFirstSegmentLength,
                                              treeTypeSelect,
                                              branchingChance,
                                              branchAngleChance,
                                              branchTurnChance,
                                              branchTurnRAmount,
                                              branchAngleRAmount
                                              ))
        cmds.separator(h=10, style='none')
        cmds.button(label='Load preset', annotation='Loads current settings as a preset',
                                 command=functools.partial(pLoadPreset))
        cmds.separator(h=10, style='in')
        cmds.text('preset_text', label='default', align='center')
        cmds.setParent('..')
        cmds.setParent('..')
        cmds.helpLine()

        def cancelCallBack(*pArgs):
            if cmds.window(windowID, exists=True):
                cmds.deleteUI(windowID)

        # cmds.button(label='Cancel', command=cancelCallBack)
        cmds.showWindow()
Exemple #57
0
def windowUI(*args):

    # create the window
    if cmds.window("windowUI", exists=True):
        cmds.deleteUI("windowUI")
    cmds.window("windowUI",
                title="Water Droplet Generator v1.2",
                resizeToFitChildren=True,
                sizeable=False)

    # header image
    cmds.rowColumnLayout(w=380)
    cmds.image(image="waterDropGenerator_header.png")
    cmds.setParent("..")

    # base object layout
    cmds.frameLayout(label="General", collapsable=False, mw=5, mh=5)
    cmds.rowColumnLayout(nc=3,
                         cal=[(1, "right")],
                         cw=[(1, 80), (2, 200), (3, 95)])
    cmds.text(l="Base Object: ")
    cmds.textField("baseObject")
    cmds.button("baseObjectButton", l="Select", c=selectBaseObjectButton)
    cmds.setParent("..")
    cmds.separator(h=10, st='in')

    # density
    cmds.rowColumnLayout(w=380)
    cmds.intSliderGrp("dropDensity",
                      l="Density: ",
                      v=1200,
                      cw3=[80, 40, 200],
                      min=1,
                      max=2500,
                      fmx=10000,
                      f=True)

    # minDropSize
    cmds.rowColumnLayout(w=380)
    cmds.floatSliderGrp("minDropSize",
                        l="Minimum Size: ",
                        v=0.02,
                        cw3=[80, 40, 200],
                        min=0.01,
                        max=0.1,
                        fmx=1,
                        f=True,
                        pre=2)

    # maxDropSize
    cmds.rowColumnLayout(w=380)
    cmds.floatSliderGrp("maxDropSize",
                        l="Maximum Size: ",
                        v=0.35,
                        cw3=[80, 40, 200],
                        min=0.1,
                        max=1,
                        fmx=10,
                        f=True,
                        pre=2)
    cmds.separator(h=10, st='in')

    # randomness
    cmds.rowColumnLayout(w=380)
    cmds.checkBox("optCheckBox",
                  l='Use an optimised randomness combination (recommended)',
                  value=True,
                  onc="cmds.intSliderGrp('randomness', e=True, en=False)",
                  ofc="cmds.intSliderGrp('randomness', e=True, en=True)")
    cmds.intSliderGrp("randomness",
                      l="Randomness: ",
                      v=8,
                      cw3=[80, 40, 230],
                      min=1,
                      max=8,
                      fmx=10,
                      f=True,
                      enable=False)
    cmds.separator(h=10, st='in')

    # extra options
    cmds.rowColumnLayout(w=380)
    cmds.frameLayout(label="Extra Options",
                     collapsable=True,
                     cl=True,
                     mw=5,
                     mh=5)
    cmds.checkBox("smoothCheckBox",
                  l='Smooth preview the waterdrops',
                  value=True)
    cmds.checkBox("shaderCheckBox",
                  l='Apply a simple blinn water material - NCCA purposes only',
                  value=False)
    cmds.setParent("..")
    cmds.separator(h=10, st='in')

    # check buttons
    cmds.rowColumnLayout(nc=2, cal=[(1, "right")], cw=[(1, 185), (2, 185)])
    cmds.button("checkMeshButton",
                l="Check Mesh",
                al="center",
                c=checkMeshButton,
                bgc=[0.15, 0.4, 0.15])
    cmds.button("subDMeshButton",
                l="Subdivide Mesh",
                al="center",
                c=subDMeshButton,
                bgc=[0.4, 0.15, 0.15])
    cmds.setParent("..")
    cmds.separator(h=10, st='in')

    # generate button
    cmds.button("generateButton",
                l="Make it rain baby",
                w=370,
                h=40,
                al="center",
                bgc=[0.4, 0.15, 0.15],
                c=waterDropsButton)

    # reset button
    cmds.button("resetButton",
                l="Reset to default values",
                w=370,
                al="center",
                c=windowUI)

    # add to shelf button
    cmds.button("shelfButton",
                l="Add this script to the shelf",
                w=370,
                al="center",
                c=shelfButton)

    # text
    cmds.text(l='', w=370, h=10, ww=True)
    cmds.text(
        l=
        'Please bear in mind that the default size values are physically accurate when your object is correctly scaled to real world units.',
        w=370,
        h=30,
        ww=True)
    cmds.text(
        l='The algorithm works best on objects with evenly spaced topology.',
        w=370,
        h=30,
        ww=True)
    cmds.text(l='Zeno Pelgrims - www.graffik.be - NCCA 2014',
              w=370,
              h=30,
              ww=True,
              fn="smallPlainLabelFont")

    cmds.showWindow("windowUI")
Exemple #58
0
def EternalCodeUiDef():
    if cmds.window('EternalCodeWin', exists=True):
        cmds.deleteUI('EternalCodeWin', window=True)

    if cmds.windowPref('EternalCodeWin', exists=True):
        cmds.windowPref('EternalCodeWin', r=True)

    cmds.window('EternalCodeWin',
                title=" ",
                iconName='Short Name',
                h=800,
                w=500,
                s=0)
    form = cmds.formLayout(numberOfDivisions=100, w=300)
    backG = cmds.image(
        i='B:/Eternal_Code_Directory/Backup/Default_Icons/Back.png')
    searchImg = cmds.image(
        i='B:/Eternal_Code_Directory/Backup/Default_Icons/searchResult.png')
    AddImg = cmds.image(
        i='B:/Eternal_Code_Directory/Backup/Default_Icons/Store.png')
    Heading = cmds.text(l='  ', align='center', fn='boldLabelFont', hl=True)
    search = cmds.textField('searchField', w=200, h=22)
    searchButton = cmds.symbolButton(
        i="B:/Eternal_Code_Directory/Backup/Default_Icons/Search box.png",
        c='Procs.searchScripts()')
    searchResult = cmds.textScrollList('searchResultList', h=350, w=210)

    AddToScript = cmds.symbolButton(
        ann='Add To Notepad',
        i="B:/Eternal_Code_Directory/Backup/Default_Icons/IDE.png",
        c='Procs.Notepad()')

    AuthorButton = cmds.symbolButton(i="UVTkBtnHead.png",
                                     ann='Author: "Siddarth Mehra"',
                                     c='Procs.Procs.Author() ')
    sepratorone = cmds.textField(height=2, w=280)

    name = cmds.textField('NameScriptTxF', w=180, h=25)

    Sendscript = cmds.scrollField('Codee', w=180, h=330)
    radiocoll = cmds.radioCollection()
    radioMel = cmds.radioButton('MelRadio', label='Mel', sl=True)

    radioPython = cmds.radioButton(label='Python')
    SendSButton = cmds.symbolButton(
        ann='Store in Database',
        i="B:/Eternal_Code_Directory/Backup/Default_Icons/add.png",
        c='Procs.StoreCode()')
    cmds.formLayout(form,
                    edit=True,
                    attachForm=[
                        (backG, 'top', 1),
                        (searchImg, 'top', 220),
                        (searchImg, 'left', 25),
                        (AddImg, 'top', 270),
                        (AddImg, 'left', 280),
                        (search, 'top', 240),
                        (search, 'left', 37),
                        (searchButton, 'left', 218),
                        (searchButton, 'top', 239),
                        (Heading, 'left', 250),
                        (Heading, 'top', 8),
                        (searchResult, 'left', 37),
                        (name, 'top', 305),
                        (name, 'left', 290),
                        (AddToScript, 'left', 50),
                        (AuthorButton, 'bottom', 10),
                        (AuthorButton, 'right', 10),
                        (Sendscript, 'left', 290),
                        (radioMel, 'top', 680),
                        (radioMel, 'left', 300),
                        (radioPython, 'top', 700),
                        (radioPython, 'left', 300),
                        (SendSButton, 'top', 685),
                        (SendSButton, 'left', 360),
                    ],
                    attachControl=[
                        (searchResult, 'top', 7, search),
                        (AddToScript, 'top', 15, searchResult),
                        (Sendscript, 'top', 8, name),
                    ])
    cmds.showWindow('EternalCodeWin')
def botonesUI(directorios='', nameSpace='', sizeButtons=100, parents='', controlAttributos='L_EYE_PUPILA_CNT',heightW=800):
    global uis
    uis=dict()#contenedor de gui para colapsar


    # Creo una fila con 3 columnos grandes
    cantButColumFila=8
    #Paletas de colores
    color1 = random.uniform(0.0, 1.0), random.uniform(
        0.0, 1.0), random.uniform(0.0, 1.0)
    color2 = [0.3, 0.3, 0.3]
    color3 = [0.29,0.58,0.96]

    columMaster=cmds.columnLayout(adjustableColumn=True,parent=parents)
    # Contengo todo en un solo scroll grande
    dir_path = os.path.dirname(os.path.realpath(__file__))
    if os.path.isfile(dir_path+'\cof_img.xpm'):
        cmds.symbolButton( image=dir_path+'\cof_img.xpm', width=122, height=35, backgroundColor=[0,0,0],
                          annotation=('www.cofcofstudios.com'), command="cmds.launch(web='http://cofcofstudios.com')",parent=columMaster)
    else:
        cmds.image(w = 122, h = 35,backgroundColor=[0,0,0],parent=columMaster)

    rowGeneral2 = cmds.rowLayout(numberOfColumns=2,height=heightW, adjustableColumn=True ,columnWidth2=(sizeButtons * cantButColumFila,470), columnAttach=[(1, 'both', 0),(2, 'both', 0)])
    fm1=cmds.frameLayout(label='CONTROLES', bgc=[0,0,0],parent=rowGeneral2)
    columna1=cmds.columnLayout(adjustableColumn=True,parent=fm1)
    cmds.channelBox(maxHeight=heightW/3,parent=columna1)

    f2=cmds.frameLayout(label='FACIALES',bgc=[0,0,0],parent=rowGeneral2)
    btnc=cmds.button(l='Colapsar Todas',command=colapsador)#colapsador de ui
    scroll = cmds.scrollLayout( height=heightW-50,minChildWidth=500,parent=f2)

    rowGeneral3 = cmds.rowLayout(numberOfColumns=3, columnWidth3=(150,150, 155),
                                adjustableColumn3=1, columnAttach=[(1, 'left', 2),(2, 'both', 2), (3, 'both', 2)])
    colRight = cmds.columnLayout(adjustableColumn=True,parent=rowGeneral3)
    colMid = cmds.columnLayout(adjustableColumn=True,parent=rowGeneral3)
    colLeft = cmds.columnLayout(adjustableColumn=True,columnOffset=['right',5],parent=rowGeneral3)


    directorios = sorted_x = OrderedDict(sorted(directorios.items(), key=itemgetter(1)))#Ordena los value del diccionario para que muestre ordenada la lista
    #directorios = ordenarLeftRighMidDiccionario(directorios)

    # creo los botones recoriendo el diccionario que creamos
    def columnForFolderUI(botonesArray=[],sideFace='l_ojo', controlAttributos='L_EYE_PUPILA_CNT',sideParent=None):
        # Creo una columna para los botones columnAttach=[(1, 'both', 0),(2, 'right', 0)],
        cl1 = cmds.columnLayout(adjustableColumn=True,columnAttach=['left', 0],parent=sideParent)
        frameIn = cmds.frameLayout(label=sideFace.upper(), collapsable=True, bgc=color3, parent=cl1)
        cl2 = cmds.columnLayout(cal='left', cat=['both', 0], columnOffset=[ 'left', 0],  adjustableColumn=True, parent=frameIn)
        cmds.button(label='DisplayLayer', command=partial( displayLayer, sideFace, controlAttributos))
        cmds.rowColumnLayout(numberOfRows=1,adjustableColumn=True)
        barraRotacion=cmds.floatSlider('barra-'+sideFace,min=-180, max=180, value=0, step=1)
        cmds.floatSlider(barraRotacion,edit=True,changeCommand=partial(rotLayer, sideFace, controlAttributos,barraRotacion),dragCommand=partial( rotLayer, sideFace, controlAttributos,barraRotacion))
        cmds.button( label ='R', bgc=[0.5,0.5,0.4],height=30,width=30,command=partial(resetSlide,sideFace,controlAttributos,0,barraRotacion),annotation='Resetea la rotacion de la capa.')
        cmds.setParent( '..' )
        f3=cmds.frameLayout(  label='Expresiones', collapsable=True, collapse=False)
        scroll2 = cmds.scrollLayout( childResizable=True,height=110)
        rcl1=cmds.rowColumnLayout(numberOfRows=3, bgc=color2)
        uis.setdefault('scrolles', []).append(frameIn)
        uis.setdefault('scrolles', []).append(f3)



        # Para diferenciar las carpeas o frames le pongo diferentes colores
        # r,g,b=random.uniform(0.0,1.0),random.uniform(0.0,1.0),random.uniform(0.0,1.0)
        # creo por cada file un boton
        for ctrl in botonesArray:
            # valFrame=[s.zfill(2) for s in re.findall(r'\b\d+\b', img)]
            val = [int(s) for s in re.findall(r'\b\d+\b', ctrl)][0]
            nameImg=ctrl
            # Solo si existe algo escrito en la variable nameSpace y si es asi
            # le agrego el nameSpace al control.
            if nameSpace is not '':
                ctrl = nameSpace + ctrl
            # Agrego el boton y la funcion, con el nombre del value del
            # diccionario
            cmds.symbolButton(ctrl, image=key + '\\' + nameImg, width=sizeButtons, height=sizeButtons, backgroundColor=color2,
                              annotation=('Frame Num: '+str(val)+'\n Shift + Click: Lado Opuesto.'), command=partial(getFrame, val, sideFace, controlAttributos))

    #por cada carpeta se creara un contenedor de botones
    for key in directorios:
        # Ordeno los frames dependiendo de la letra que contengan las carpetas
        sideFace = key.split('\\')[-1]
        if sideFace in ['l_parpado_sup','l_ojo','l_pupila','l_parpado_inf','l_cachete','l_extras']:
            columnForFolderUI(directorios[key], sideFace, controlAttributos, colLeft)
        elif sideFace in ['r_parpado_sup','r_ojo','r_pupila','r_parpado_inf','r_cachete','r_extras']:
            columnForFolderUI(directorios[key], sideFace, controlAttributos, colRight)
        elif sideFace in ['boca','a_diente','b_diente','lengua','extras']:
            columnForFolderUI(directorios[key], sideFace, controlAttributos, colMid)


    #cmds.button(btnc,e=True,command=colapsador(uis))
    return [columna1,uis,heightW,]
Exemple #60
0
def UI():
    #check to see if window exists
    if cmds.window("mkProjects", exists=True):
        cmds.deleteUI("mkProjects")

    #main window
    window = cmds.window("mkProjects",
                         title="Project Quick Load",
                         width=400,
                         height=300,
                         mnb=False,
                         mxb=False,
                         sizeable=False)

    #main layout
    mainLayout = cmds.columnLayout(width=400, height=300)

    #banner image
    imagePath = path.join(cmds.internalVar(upd=True), 'icons',
                          'mkProjects.jpg')
    #load image
    cmds.image(width=400, height=100, image=imagePath)

    cmds.separator(height=15)
    cmds.textField('location',
                   width=400,
                   editable=False,
                   text=getDefaultProject())

    #create projects option menu
    projectsOptionMenu = cmds.optionMenu("projectsOptionMenu",
                                         width=400,
                                         label="Choose a project: ",
                                         cc=populateScenes)

    #populate projects with maya default project location
    populateProjects()

    cmds.separator(height=15)
    rowLayout = cmds.rowLayout(nc=2)

    #List Control
    scenesList = cmds.textScrollList("scenesList",
                                     allowMultiSelection=False,
                                     width=300,
                                     dcc=loadFile)
    populateScenes()

    colLayout = cmds.columnLayout()
    cmds.button(label="Set Location", width=95, height=30, c=setLocation)
    cmds.separator(height=5)
    cmds.button(label="Create Project",
                width=95,
                height=30,
                c=cmds.ProjectWindow)
    cmds.separator(height=5)
    cmds.button(label="Open Project", width=95, height=30, c=openProject)
    cmds.separator(height=5)
    cmds.button(label="Open Scenes", width=95, height=30, c=openScenes)
    cmds.separator(height=5)
    cmds.button(label="Open Textures", width=95, height=30, c=openTextures)
    cmds.separator(height=5)
    cmds.button(label="Open Renders", width=95, height=30, c=openRenders)

    #open scene button
    cmds.separator(height=15, parent=mainLayout)
    cmds.button(label="Load File",
                width=400,
                height=50,
                parent=mainLayout,
                c=loadFile)

    #show window
    cmds.showWindow(window)