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(layout): print 'Creating shelves' container = pm.verticalLayout(p=layout) scroll_layout = pm.scrollLayout(p=container) top_layout = pm.verticalLayout(p=scroll_layout) bottom_layout = pm.verticalLayout(p=container) shelf_frames = __load_shelves(top_layout) pm.button(label='Refresh Shelves', c=lambda x: __load_shelves(top_layout), p=bottom_layout) pm.button(label='Edit Shelves', c=lambda x: pm.mel.eval('ShelfPreferencesWindow'), p=bottom_layout) bottom_layout.redistribute() container.redistribute(12, 1)
def create( layout ) : print 'Creating shelves' container = pm.verticalLayout( p=layout ) scroll_layout = pm.scrollLayout( p=container ) top_layout = pm.verticalLayout( p=scroll_layout ) bottom_layout = pm.verticalLayout( p=container ) shelf_frames = __load_shelves( top_layout ) pm.button( label='Refresh Shelves', c=lambda x : __load_shelves( top_layout ), p=bottom_layout ) pm.button( label='Edit Shelves', c=lambda x : pm.mel.eval( 'ShelfPreferencesWindow' ), p=bottom_layout ) bottom_layout.redistribute() container.redistribute( 12, 1 )
def setupCmds(self): self.title = "MmmmQM" wids = self.widgets = Duck() win = wids.win = pm.window( title=self.title ) win.show() win.setWidth( 210 ) ## "with" puts the tabbed stuff in the window! with win: scr = wids.scr = pm.scrollLayout(verticalScrollBarAlwaysVisible=True) with scr: #lay = wids.lay = pm.formLayout() col = wids.col = pm.columnLayout() with col: n = {} ## we will collect all new widgets here! try: pm.text( "pop up windows" ) rowA = wids.rowA = pm.rowLayout( numberOfColumns=10 ) with rowA: self.makeAndAddButton( n, self.entries.a1 ) self.makeAndAddButton( n, self.entries.a2 ) self.makeAndAddButton( n, self.entries.a3 ) self.makeAndAddButton( n, self.entries.a4 ) except: print( traceback.format_exc() ) try: pm.text( "more..." ) rowB = wids.rowB = pm.rowLayout( numberOfColumns=10 ) with rowB: self.makeAndAddButton( n, self.entries.b1 ) self.makeAndAddButton( n, self.entries.b2 ) self.makeAndAddButton( n, self.entries.b3 ) self.makeAndAddButton( n, self.entries.b4 ) except: print( traceback.format_exc() ) try: rowC = wids.rowC = pm.rowLayout( numberOfColumns=10 ) with rowC: self.makeAndAddButton( n, self.entries.c1 ) self.makeAndAddButton( n, self.entries.c2 ) self.makeAndAddButton( n, self.entries.c3 ) self.makeAndAddButton( n, self.entries.c4 ) except: print( traceback.format_exc() ) try: rowD = wids.rowD = pm.rowLayout( numberOfColumns=10 ) with rowD: self.makeAndAddButton( n, self.entries.d1 ) self.makeAndAddButton( n, self.entries.d2 ) self.makeAndAddButton( n, self.entries.d3 ) self.makeAndAddButton( n, self.entries.d4 ) except: print( traceback.format_exc() ) for k in sorted( n.keys() ): v = n[k] k = k.lower().replace( " ", "_" ).replace(">","_") setattr( wids, k, v )
def __init__(self): self.winTitle = "Gad29Tools" #try: # pm.deleteUI( self.winTitle ) #except: # print( traceback.format_exc() ) if pm.window( self.winTitle, query=True, exists=True ): pm.deleteUI( self.winTitle ) self.win = pm.window( "Gad29Tools" ) #self.win = pm.window( "Gad29Tools" + '_' + str( datetime.datetime.today().strftime('y%Ym%md%dh%Hn%Ms%S') ) ) self.scroll = pm.scrollLayout(parent=self.win) self.col = pm.columnLayout(parent=self.scroll) with self.col: self.jointsSectionLabel = pm.text( "Joints:" ) self.autoOrientXKeepZBtn = pm.button( "auto orient x while keeping z", command = lambda x: self.autoOrientXKeepZForSelected() ) self.autoOrientTipJointsBtn = pm.button( "auto orient tip joints", command = lambda x: self.autoOrientTipJointsForSelected() ) self.autoOrientTipJointsBtn = pm.button( "fix joint complex xforms", command = lambda x: self.fixJointComplexXformsForSelected() ) self.checkJointsBtn = pm.button( "check joints (currently only rot and scale)", command = lambda x: self.checkJoints() ) self.ctrlSectionLabel = pm.text( "\n" + "Controls:" ) self.ctrlSizeFloatField = pm.floatField( value=8.0 ) self.makeAnimCtrlAndZeroBtn = pm.button( "Make Anim Ctrl And Zero (at size given above)", command = lambda x: self.makeAnimCtrlAndZero() ) self.clearSelectedCtrlsPosSlaveBtn = pm.button( "Clear Selected Ctrls Pos Slave", command = lambda x: self.clearSelectedCtrlsPosSlave() ) self.clearSelectedCtrlsRotSlaveBtn = pm.button( "Clear Selted Ctrls Rot Slave", command = lambda x: self.clearSelectedCtrlsRotSlave() ) self.constrainSlavesToSelectedBtn = pm.button( "Constrain Slaves To Selected", command = lambda x: self.constrainSlavesToSelected() ) self.parentingSectionLabel = pm.text( "\n" + "Parenting:" ) self.chainParentBtn = pm.button( "chain parent", command = lambda x: self.chainParent() ) self.chainParentWithZeroesBtn = pm.button( "chain parent with zeroes", command = lambda x: self.chainParentWithZeroes() ) self.parentWithZeroesBtn = pm.button( "parent with zeroes", command = lambda x: self.parentWithZeroes() ) #self.fromBtn = pm.button( "parent without compensation", # command = lambda x: self.parentWithoutCompensation() #) self.connectionsSectionLabel = pm.text( "\n" + "Connections:" ) self.fromBtn = pm.button( "from", command = lambda x: self.setFromAttrsViaChannelBoxAndSelection() ) self.toBtn = pm.button( "to (connect)", command = lambda x: self.connectToAttrsViaChannelBoxAndSelection() ) self.toBtn = pm.button( "to (drive)", command = lambda x: self.driveToAttrsViaChannelBoxAndSelectionOneToOne() ) self.linearizeBtn = pm.button( "linearize", command = lambda x: self.linearizeViaChannelBoxAndSelection() ) self.linearizeBtn = pm.button( "cycle", command = lambda x: self.cycleViaChannelBoxAndSelection() ) self.parentingSectionLabel = pm.text( "\n" + "Misc:" ) self.fromBtn = pm.button( "makeCamPlaneForDrawing", command = lambda x: self.makeCamPlaneForDrawing() ) self.checkForUnfoldNodesBtn = pm.button( "check for unfold nodes", command = lambda x: self.checkForUnfoldNodes() ) self.win.show()
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_control_ui(self): btns = self.read_shapes() WINDOW = "create_control" chk_win = pm.window(WINDOW, query=True, exists=True) if chk_win: pm.deleteUI(WINDOW) pm.window(WINDOW, title="Create_Control", iconName="CC") main_split_col = pm.rowColumnLayout(parent=WINDOW, numberOfColumns=3) left_main_col = pm.columnLayout(parent=main_split_col, adjustableColumn=True) hlp_btn_col = pm.columnLayout(parent=left_main_col, columnOffset=("left", 110)) pm.button("?", parent=hlp_btn_col, width=50, command=lambda x: self.open_help()) pm.separator(parent=left_main_col, style="in", height=10) con_obj_col = pm.columnLayout(parent=left_main_col, columnOffset=("left", 70)) self.connect_chk_bx = pm.checkBox("Skinning/Constraint", parent=con_obj_col, value=True) pm.separator(parent=left_main_col, style="none") ctrl_typ_col = pm.rowColumnLayout(parent=left_main_col, numberOfColumns=3, columnOffset=(1, "left", 20), columnSpacing=(2, 10)) pm.text("Control type", parent=ctrl_typ_col) rad_col = pm.columnLayout(parent=ctrl_typ_col) self.ctr_typ_rad_collection = pm.radioCollection(parent=rad_col) self.skin_rad_btn = pm.radioButton( label='Skin', parent=rad_col, select=True, onCommand=lambda x: self.set_ui_edit_mode(flag="Skin")) self.con_rad_btn = pm.radioButton( label='Constraint', parent=rad_col, onCommand=lambda x: self.set_ui_edit_mode(flag="Constraint")) con_typ_col = pm.columnLayout(parent=ctrl_typ_col) self.pr_chk_bx = pm.checkBox("Parent", parent=con_typ_col, value=True, editable=False) self.sc_chk_bx = pm.checkBox("Scale", parent=con_typ_col, editable=False) jnt_opn_col = pm.columnLayout(parent=left_main_col, columnOffset=("left", 100)) self.jnt_cr_chk_bx = pm.checkBox( label="Create Joint", value=True, parent=jnt_opn_col, offCommand=lambda x: self.set_ui_edit_mode(flag="no_joint")) pm.separator(parent=left_main_col, height=10, style="in") pm.text("Control name", parent=left_main_col) re_name_col = pm.gridLayout(parent=left_main_col, numberOfRowsColumns=(2, 2), cellWidthHeight=(138, 20), allowEmptyCells=False) self.msh_nm_lbl = pm.text("Text from Mesh Name", parent=re_name_col) self.ctrl_nm_lbl = pm.text("Rename to Control", parent=re_name_col) self.msh_nm = pm.textField(text="_MSH", parent=re_name_col) self.ctrl_nm = pm.textField(text="_CTRL", parent=re_name_col) pm.separator(parent=left_main_col, height=10, style="none") new_name_col = pm.rowColumnLayout(parent=left_main_col, numberOfColumns=2, columnOffset=(1, "left", 10)) self.new_nm_chk_bx = pm.checkBox( label="Control Name: ", parent=new_name_col, changeCommand=lambda x: self.set_ui_edit_mode(flag="rename_field")) self.ctr_new_nm = pm.textField(text="Control", parent=new_name_col, width=150, editable=False) suf_name_col = pm.rowColumnLayout(parent=left_main_col, numberOfColumns=2, columnOffset=(1, "left", 10)) self.suf_lbl = pm.text("Control Suffix Text: ", parent=suf_name_col) self.suf_nm = pm.textField(text="_CTRL", parent=suf_name_col, width=163, editable=False) pm.separator(parent=left_main_col, height=10, style="none") zero_gp_col = pm.rowColumnLayout(parent=left_main_col, numberOfColumns=2, columnOffset=(1, "left", 50)) self.zero_gp_chk_bx = pm.checkBox( "Zero Node", parent=zero_gp_col, value=True, changeCommand=lambda x: self.set_ui_edit_mode(flag="zero_node")) self.zero_nd_txt = pm.textField(text="_CTRLT", parent=zero_gp_col) scl_lk_col = pm.columnLayout(parent=left_main_col, columnOffset=("left", 50)) self.scl_lk_chk_bx = pm.checkBox("Lock Scale/Visibility/Radius(Joint)", parent=scl_lk_col, value=True) scl_chk_col = pm.columnLayout(parent=left_main_col, columnOffset=("left", 50)) self.scl_ctr_chk_bx = pm.checkBox( "Scale Control to match object", value=True, parent=scl_chk_col, changeCommand=lambda x: self.set_ui_edit_mode(flag="no_scale")) scl_offset_col = pm.rowColumnLayout(parent=left_main_col, numberOfColumns=2, columnOffset=(1, "left", 30)) self.ctrl_off_sz_lbl = pm.text("Control size offset value", parent=scl_offset_col) self.scl_offset_val_txt = pm.textField(text="1", parent=scl_offset_col) pm.separator(parent=left_main_col, height=10, style="in") ctrl_pvt_col = pm.rowColumnLayout(parent=left_main_col, numberOfColumns=2, columnOffset=(1, "left", 80)) self.ctrl_pos_chk_bx = pm.checkBox( "Control at object pivot", parent=ctrl_pvt_col, value=True, changeCommand=lambda x: self.set_ui_edit_mode(flag="position")) pos_rad_col = pm.gridLayout(parent=left_main_col, numberOfRowsColumns=(3, 2), cellWidthHeight=(140, 20), allowEmptyCells=False) self.pos_rad_collection = pm.radioCollection(parent=pos_rad_col) self.top_rad_btn = pm.radioButton(label="Top(Y Axis)", parent=pos_rad_col, editable=False) self.bot_rad_btn = pm.radioButton(label="Bottom(Y Axis)", parent=pos_rad_col, select=True, editable=False) self.left_rad_btn = pm.radioButton(label="Left(X Axis)", parent=pos_rad_col, editable=False) self.right_rad_btn = pm.radioButton(label="Right(X Axis)", parent=pos_rad_col, editable=False) self.front_rad_btn = pm.radioButton(label="Front(Z Axis)", parent=pos_rad_col, editable=False) self.back_rad_btn = pm.radioButton(label="Back(Z Axis)", parent=pos_rad_col, editable=False) pm.separator(parent=main_split_col, height=10, style="in", horizontal=False) scr_lay = pm.scrollLayout(parent=main_split_col) grid_col = pm.gridLayout(parent=scr_lay, numberOfRowsColumns=(1, 5), autoGrow=True, cellWidthHeight=(50, 50), allowEmptyCells=False) for btn in btns: btn = btn.replace("\r", "") btn = btn.replace("\n", "") img = self.icon_path + btn + ".png" if os.path.exists(img): pm.iconTextButton(parent=grid_col, label=btn, style='iconOnly', image=img, command=partial(self.create_shape, nm=btn)) else: rgb = [ random.uniform(.5, 1), random.uniform(.5, 1), random.uniform(.5, 1) ] pm.iconTextButton(parent=grid_col, label=btn, style='iconAndTextVertical', backgroundColor=rgb, command=partial(self.create_shape, nm=btn)) pm.checkBox( self.connect_chk_bx, edit=True, changeCommand=lambda x: self.set_ui_edit_mode(flag="connect")) pm.showWindow(WINDOW) pm.window(WINDOW, edit=True, widthHeight=(540, 420)) return None