示例#1
0
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 )
示例#2
0
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)
示例#3
0
    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)
示例#4
0
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)
示例#5
0
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 )
示例#6
0
 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()
示例#8
0
    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)
示例#9
0
    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