def ui() : global FFU_E_SETTINGS, FFU_E_WINDOW init() WINDOW_NAME = 'w_ff_utils_export' if( pm.window( WINDOW_NAME, q=True, exists=True ) ) : pm.deleteUI( WINDOW_NAME ) FFU_E_WINDOW = pm.window( WINDOW_NAME, title='Export to Fiction Factory', sizeable=True ) vl = pm.verticalLayout() hl = pm.horizontalLayout( parent=vl ) l1 = pm.frameLayout( parent=hl, label="Scene options" ) for setting in FFU_E_SETTINGS : uiobject = __create_uiobject_from_setting( setting ) l2 = pm.frameLayout( parent=hl, label="FFEXport options" ) for setting in FFU_E_FFEXPORT_SETTINGS : uiobject = __create_uiobject_from_setting( setting ) pm.button( label='Export!', parent=vl, command=lambda *args : ui_do_export() ) FFU_E_WINDOW.setHeight(600) FFU_E_WINDOW.setWidth(200) hl.redistribute( 2.5, 1 ) vl.redistribute( 5, 1 ) FFU_E_WINDOW.show()
def create( layout ) : container = pm.verticalLayout( p=layout ) top_layout = pm.columnLayout( p=container, adj=True ) # top_layout = pm.verticalLayout( bgc=(1,0,0), p=container ) bottom_layout = pm.scrollLayout( p=container, cr=True ) bottom_horiz = pm.horizontalLayout( p=bottom_layout ) left = pm.frameLayout( label='Old Name', mh=4, mw=4, p=bottom_horiz ) right = pm.frameLayout( label='New Name', mh=4, mw=4, p=bottom_horiz ) list_left = pm.columnLayout( 'th_rename_preview_left', p=left, rs=4 ) list_right = pm.columnLayout( 'th_rename_preview_right', p=right, rs=4 ) bottom_horiz.redistribute() # regex rename_frame = pm.frameLayout( label='Regex', mh=4, mw=4, p=top_layout ) rename_layout = pm.columnLayout( p=rename_frame, adj=True, rs=4 ) rename_search = pm.textField( 'th_rename_search', pht='Search', p=rename_layout, cc=lambda *args : __update_rename_preview() ) rename_replace = pm.textField( 'th_rename_replace', pht='Replace', p=rename_layout, cc=lambda *args : __update_rename_preview() ) rename_prefix = pm.textField( 'th_rename_prefix', pht='Prefix', p=rename_layout, cc=lambda *args : __update_rename_preview() ) rename_suffix = pm.textField( 'th_rename_suffix', pht='Suffix', p=rename_layout, cc=lambda *args : __update_rename_preview() ) renumber_layout = pm.rowLayout( p=rename_layout, nc=2, adj=True ) rename_from = pm.textField( 'th_rename_from', pht='Renumber From', p=renumber_layout, cc=lambda *args : __update_rename_preview() ) rename_by = pm.textField( 'th_rename_by', pht='Renumber By', p=renumber_layout, cc=lambda *args : __update_rename_preview() ) pm.button( label='Rename', p=rename_layout, c=lambda *args : __rename_from_ui() ) # setup a script job to update preview grids pm.scriptJob( p=container, e=( 'SelectionChanged', lambda *args : __populate_preview_grids( list_left, list_right ) ) ) __populate_preview_grids( list_left, list_right ) container.redistribute( 1, 3 )
def create(layout): container = pm.verticalLayout(p=layout) top_layout = pm.columnLayout(p=container, adj=True) # top_layout = pm.verticalLayout( bgc=(1,0,0), p=container ) bottom_layout = pm.scrollLayout(p=container, cr=True) bottom_horiz = pm.horizontalLayout(p=bottom_layout) left = pm.frameLayout(label='Old Name', mh=4, mw=4, p=bottom_horiz) right = pm.frameLayout(label='New Name', mh=4, mw=4, p=bottom_horiz) list_left = pm.columnLayout('th_rename_preview_left', p=left, rs=4) list_right = pm.columnLayout('th_rename_preview_right', p=right, rs=4) bottom_horiz.redistribute() # regex rename_frame = pm.frameLayout(label='Regex', mh=4, mw=4, p=top_layout) rename_layout = pm.columnLayout(p=rename_frame, adj=True, rs=4) rename_search = pm.textField('th_rename_search', pht='Search', p=rename_layout, cc=lambda *args: __update_rename_preview()) rename_replace = pm.textField('th_rename_replace', pht='Replace', p=rename_layout, cc=lambda *args: __update_rename_preview()) rename_prefix = pm.textField('th_rename_prefix', pht='Prefix', p=rename_layout, cc=lambda *args: __update_rename_preview()) rename_suffix = pm.textField('th_rename_suffix', pht='Suffix', p=rename_layout, cc=lambda *args: __update_rename_preview()) renumber_layout = pm.rowLayout(p=rename_layout, nc=2, adj=True) rename_from = pm.textField('th_rename_from', pht='Renumber From', p=renumber_layout, cc=lambda *args: __update_rename_preview()) rename_by = pm.textField('th_rename_by', pht='Renumber By', p=renumber_layout, cc=lambda *args: __update_rename_preview()) pm.button(label='Rename', p=rename_layout, c=lambda *args: __rename_from_ui()) # setup a script job to update preview grids pm.scriptJob( p=container, e=('SelectionChanged', lambda *args: __populate_preview_grids(list_left, list_right))) __populate_preview_grids(list_left, list_right) container.redistribute(1, 3)
def createNew(self, floating=False): if self.mmmm == None: self.mmmm = MmmmToolsMod.Dynamic.GetInstance() mmmm = self.mmmm self.widgets = {} self.subs = {} ## Create Main Widgets win = self.widgets["win"] = pm.window() ## scroll = self.widgets["scroll"] = pm.scrollLayout(parent=win, horizontalScrollBarThickness=0) ## The dock must be created after the window's layout dock = self.widgets["dock"] = pm.dockControl( "MmmmTools Dock", floating=floating, area="left", content=win, allowedArea=["right", "left"] ) col = self.widgets["col"] = pm.columnLayout(parent=scroll) # self.mainFrame = MmmmMainDockableWindowSub( ) # self.mainFrame # self.mainFrame = # self.makeMainFrame( parentLayout=col ) modellerFrame = pm.frameLayout(label="Modeler", collapsable=True, parent=col, marginWidth=10) modellerCol = pm.columnLayout(parent=modellerFrame) f0 = pm.frameLayout(label="Modeler Actions", marginWidth=10, collapsable=True, parent=modellerCol) commander = self.mmmm.commander cmdEntries = commander.entries prefix = "Modeler/" for name, entry in cmdEntries.items(): if name.startswith(prefix): uiLabel = entry.get("uiLabel") if uiLabel == None: ## Trim modeler from name uiLabel = name[len(prefix) :] pm.button(label=uiLabel, parent=f0, command=commander.commandsMelNames[name]) f1 = pm.frameLayout(label="Grid Tools", marginWidth=10, collapsable=True, parent=modellerCol) mmmm.modeler.runGridTools(makeUi=True, parentWidget=f1) f2 = pm.frameLayout(label="Retopo Tools", marginWidth=10, collapsable=True, parent=modellerCol) mmmm.modeler.runRetoper(makeUi=True, parentWidget=f2) f3 = pm.frameLayout(label="Mirror Tools", marginWidth=10, collapsable=True, parent=modellerCol) mmmm.modeler.runMirrorer(makeUi=True, parentWidget=f3) pm.windowPref(win, width=500, height=500) win.setWidth(500) win.setHeight(800)
def __create_shelf_frame( shelf_file, shelf_name, layout ) : shelf_function = os.path.basename( shelf_file ).replace( '.mel', '' ) shelf_frame = pm.frameLayout( label=shelf_name, collapsable=True, p=layout ) shelf_layout = pm.gridLayout( ag=True, nc=8 ) pm.mel.eval( 'source "%s"' % ( shelf_file ) ) pm.mel.eval( '%s()' % ( shelf_function ) ) return shelf_frame
def __create_shelf_frame(shelf_file, shelf_name, layout): shelf_function = os.path.basename(shelf_file).replace('.mel', '') shelf_frame = pm.frameLayout(label=shelf_name, collapsable=True, p=layout) shelf_layout = pm.gridLayout(ag=True, nc=8) if ('Script found' in pm.mel.whatIs(shelf_file)): pm.mel.eval('source "%s"' % (shelf_file)) if ('Mel procedure found' in pm.mel.whatIs(shelf_function)): pm.mel.eval('%s()' % (shelf_function)) else: pm.warning('Could not find shelf function : %s' % (shelf_function)) else: pm.warning('Could not find shelf file : %s' % (shelf_file)) return shelf_frame
def ckFidgetWin(): """ ckFidgetWin() description: creates interface for ckFidget tool. the list is built dynamically from the list of active fidgets on load, so the more fidgets you add. the longer the tool window will become. inputs: outputs: the main fidget window. CK - I should add some menus to this that have basic falloffs for common tasks, like cloth, sss, or lighting. """ if pm.mel.eval('window -ex "fidgetMainWin" ;'): pm.mel.eval('deleteUI "fidgetMainWin";' ) fidgetWin = pm.mel.eval('window -title "Carl Keifer attribute fidgeter" -width 150 fidgetMainWin;') pm.columnLayout( adjustableColumn=True ) pm.frameLayout( label = "Build Fidget", borderStyle='in', collapsable=True ) pm.rowLayout( numberOfColumns=5, columnWidth=(75,75) ) pm.button( label = 'Add Fidget', command = 'ckAddFidget()' ) pm.button( label = 'refresh UI', command = 'ckFidget()' ) pm.button( label = 'Save All', command = 'ckSavRstZerAll( "save" )') pm.button( label = 'Zero All', command = 'ckSavRstZerAll( "zero" )') pm.button( label = 'Restore All', command = 'ckSavRstZerAll( "restore" )') pm.setParent( '..' ) pm.setParent( '..' ) pm.frameLayout( label = "Master Fidget", borderStyle='in', collapsable=True ) pm.rowLayout( numberOfColumns=6, columnWidth=(75,75) ) pm.mel.eval( 'floatField -value $gckFidgetBump -min 0 -changeCommand "$gckFidgetBump = `floatField -q -v masterBump`" masterBump;' ) pm.button( label = '<', command = 'ckFidgetBumpAll("Down")') pm.button( label = '>', command = 'ckFidgetBumpAll("Up")') pm.radioButtonGrp( label='Bump by:', labelArray2=['0.0', '%'], numberOfRadioButtons=2, sl=1, on1= 'pm.setAttr("ckFidget_GRP.bumpBy", False)', on2= 'pm.setAttr("ckFidget_GRP.bumpBy", True)') pm.setParent( '..' ) pm.setParent( '..' ) pm.frameLayout( label = "Fidget Attributes", borderStyle='in', collapsable=True ) e = 0 # this iterates the list of fidgets we have ckList = ckGetList("ckFidget_GRP.ckFidgetList") for i in ckList: print "i, ",i pm.rowLayout( numberOfColumns=6, columnWidth=(75,75) ) pm.attrFieldSliderGrp( l=str(i), min=-10.0, max=10.0, at = i ) pm.button( label = '<', command = 'ckFidgetBump(\"'+i+'\", "Down")' ) pm.button( label = '>', command = 'ckFidgetBump( \"'+i+'\","Up")' ) pm.button( label = 'save', command = 'ckSavRst( \"'+i+'\", "save")') pm.button( label = 'zero', command = 'pm.setAttr( \"'+i+'\", 0)' ) pm.button( label = 'restore', command = 'ckSavRst( \"'+i+'\", "restore")') pm.setParent( '..' ) pm.setParent( '..' ) pm.setParent( '..' ) pm.showWindow(fidgetWin) # I should now connect the master fidget value to the fidget group
def createNew(self, floating=False): if self.mmmm == None: self.mmmm = MmmmToolsMod.Dynamic.GetInstance() mmmm = self.mmmm self.widgets = {} self.subs = {} ## Create Main Widgets win = self.widgets['win'] = pm.window() ## scroll = self.widgets['scroll'] = pm.scrollLayout( parent=win, horizontalScrollBarThickness=0) ## The dock must be created after the window's layout dock = self.widgets['dock'] = pm.dockControl( 'MmmmTools Dock', floating=floating, area='left', content=win, allowedArea=['right', 'left']) col = self.widgets['col'] = pm.columnLayout(parent=scroll) #self.mainFrame = MmmmMainDockableWindowSub( ) #self.mainFrame #self.mainFrame = #self.makeMainFrame( parentLayout=col ) modellerFrame = pm.frameLayout( label="Modeler", collapsable=True, parent=col, marginWidth=10, ) modellerCol = pm.columnLayout(parent=modellerFrame) f0 = pm.frameLayout(label="Modeler Actions", marginWidth=10, collapsable=True, parent=modellerCol) commander = self.mmmm.commander cmdEntries = commander.entries prefix = 'Modeler/' for name, entry in cmdEntries.items(): if name.startswith(prefix): uiLabel = entry.get('uiLabel') if uiLabel == None: ## Trim modeler from name uiLabel = name[len(prefix):] pm.button(label=uiLabel, parent=f0, command=commander.commandsMelNames[name]) f1 = pm.frameLayout(label="Grid Tools", marginWidth=10, collapsable=True, parent=modellerCol) mmmm.modeler.runGridTools(makeUi=True, parentWidget=f1) f2 = pm.frameLayout(label="Retopo Tools", marginWidth=10, collapsable=True, parent=modellerCol) mmmm.modeler.runRetoper(makeUi=True, parentWidget=f2) f3 = pm.frameLayout(label="Mirror Tools", marginWidth=10, collapsable=True, parent=modellerCol) mmmm.modeler.runMirrorer(makeUi=True, parentWidget=f3) pm.windowPref(win, width=500, height=500) win.setWidth(500) win.setHeight(800)