Пример #1
0
        def build_layoutWrapper(self, parent):
            uiColumn_main = zooUI.MelColumnLayout(parent)
            cgmUI.add_Header('Setup Hotkey')
            cgmUI.add_TextBlock(self.mi_cgmHotkeyer._d_kws['name'])

            #>>>Modifier row ------------------------------------------------------------------------------------
            self.uiRow_Modifier = zooUI.MelHSingleStretchLayout(
                uiColumn_main, ut='cgmUISubTemplate', padding=2)
            #zooUI.MelSpacer(self.uiRow_Modifier,w=5)
            #zooUI.MelLabel(self.uiRow_Modifier, label = 'Modifier: ',align='right')
            self.uiRow_Modifier.setStretchWidget(
                zooUI.MelSeparator(self.uiRow_Modifier))
            self.uiRow_Modifier.layout()

            self.uiRadioCollection_modifier = zooUI.MelRadioCollection()
            self.uiOptions_modifier = []

            for i, item in enumerate(cgmHotkeyer._l_modifierOptions):
                self.uiOptions_modifier.append(
                    self.uiRadioCollection_modifier.createButton(
                        self.uiRow_Modifier, label=item))
            self.uiRow_Modifier.layout()
            mc.radioCollection(self.uiRadioCollection_modifier,
                               edit=True,
                               sl=self.uiOptions_modifier[0])

            #>>>Text row ------------------------------------------------------------------------------------

            uiRow_key = zooUI.MelHLayout(uiColumn_main,
                                         ut='cgmUISubTemplate',
                                         padding=15)
            self.uiText_key = zooUI.MelTextField(
                uiRow_key,
                backgroundColor=[1, 1, 1],
                h=20,
                text=self.mi_cgmHotkeyer._defaultKey,
                ut='cgmUITemplate',
                #ec = lambda *a:self._UTILS.puppet_doChangeName(self),
                annotation="Hotkey to use")
            uiRow_key.layout()

            #>>> Button row
            mc.setParent(uiColumn_main)
            cgmUI.add_LineSubBreak()
            uiRow_buttons = zooUI.MelHLayout(uiColumn_main,
                                             ut='cgmUISubTemplate',
                                             padding=5)
            cgmUI.add_Button(uiRow_buttons,
                             'Go',
                             commandText=lambda *a: self.buttonPress_go(),
                             annotationText="Set it up")
            cgmUI.add_Button(
                uiRow_buttons,
                'Reset',
                commandText=lambda *a: self.buttonPress_reset(),
                en=False,
                annotationText="Reset given key to the default maya setting")
            uiRow_buttons.layout()
Пример #2
0
 def build_layoutWrapper(self,parent):
     MainForm = zooUI.MelColumnLayout(parent)
     SetHeader = cgmUI.add_Header('HI')
     #self.l_helpElements.extend(add_InstructionBlock(MainForm,"Purge all traces of cgmThinga tools from the object and so and so forth forever, amen.",vis = self.var_ShowHelp.value))        
     cgmUI.add_Button(MainForm)
     cgmUI.add_Button(MainForm,'Debug test', lambda *a: self.do_DebugEchoTest())
     cgmUI.add_MelLabel(MainForm,'asdfasdfasdf')
Пример #3
0
 def build_layoutWrapper(self,parent):
     MainForm = zooUI.MelColumnLayout(parent)
     SetHeader = cgmUI.add_Header('HI')
     #self.l_helpElements.extend(add_InstructionBlock(MainForm,"Purge all traces of cgmThinga tools from the object and so and so forth forever, amen.",vis = self.var_ShowHelp.value))        
     cgmUI.add_Button(MainForm)
     cgmUI.add_Button(MainForm,'Debug test', lambda *a: self.do_DebugEchoTest())
     cgmUI.add_MelLabel(MainForm,'asdfasdfasdf')
Пример #4
0
        def build_layoutWrapper(self,parent):
            uiColumn_main = zooUI.MelColumnLayout(parent)
            cgmUI.add_Header('Setup Hotkey')
            cgmUI.add_TextBlock(self.mi_cgmHotkeyer._d_kws['name'])
            
            #>>>Modifier row ------------------------------------------------------------------------------------
            self.uiRow_Modifier = zooUI.MelHSingleStretchLayout(uiColumn_main,ut='cgmUISubTemplate',padding = 2)
            #zooUI.MelSpacer(self.uiRow_Modifier,w=5)
            #zooUI.MelLabel(self.uiRow_Modifier, label = 'Modifier: ',align='right')
            self.uiRow_Modifier.setStretchWidget( zooUI.MelSeparator(self.uiRow_Modifier) )		
            self.uiRow_Modifier.layout()

            self.uiRadioCollection_modifier = zooUI.MelRadioCollection()
            self.uiOptions_modifier = []		

            for i,item in enumerate(cgmHotkeyer._l_modifierOptions):
                self.uiOptions_modifier.append(self.uiRadioCollection_modifier.createButton(self.uiRow_Modifier,label=item))
            self.uiRow_Modifier.layout()
            mc.radioCollection(self.uiRadioCollection_modifier,edit=True, sl=self.uiOptions_modifier[0])
            
            #>>>Text row ------------------------------------------------------------------------------------
            
            
            uiRow_key = zooUI.MelHLayout(uiColumn_main,ut='cgmUISubTemplate',padding = 15)            
            self.uiText_key = zooUI.MelTextField(uiRow_key,backgroundColor = [1,1,1],h=20,
                                                 text = self.mi_cgmHotkeyer._defaultKey,
                                                 ut = 'cgmUITemplate',
                                                 #ec = lambda *a:self._UTILS.puppet_doChangeName(self),
                                                 annotation = "Hotkey to use")   
            uiRow_key.layout()
            
            #>>> Button row
            mc.setParent(uiColumn_main)
            cgmUI.add_LineSubBreak()                                             
            uiRow_buttons = zooUI.MelHLayout(uiColumn_main,ut='cgmUISubTemplate',padding = 5)  
            cgmUI.add_Button(uiRow_buttons,'Go',commandText = lambda *a:self.buttonPress_go(),
                             annotationText="Set it up")
            cgmUI.add_Button(uiRow_buttons,'Reset',commandText = lambda *a:self.buttonPress_reset(),en = False,
                                         annotationText="Reset given key to the default maya setting")   
            uiRow_buttons.layout()
Пример #5
0
    def buildScrollForm(self, parent, hasHeader = False, buttonArgs = [], headerText = 'Header', allowMultiSelection=True, buttonCommand=None, doubleClickCommand=None, selectCommand=None):
        main_form = mUI.MelFormLayout(parent,ut='cgmUITemplate')

        header = None
        if(hasHeader):
            header = cgmUI.add_Header(headerText, overrideUpper = True)
        
        scroll_list = mUI.MelObjectScrollList( main_form, ut='cgmUITemplate',
                                                  allowMultiSelection=allowMultiSelection, doubleClickCommand=cgmGEN.Callback(doubleClickCommand,self), selectCommand=cgmGEN.Callback(selectCommand,self) )

        buttonLayout = None
        buttons = []
        hasButton = len(buttonArgs) > 0
        if(hasButton):
            #buttonLayout = mUI.MelColumnLayout(main_form,useTemplate = 'cgmUISubTemplate')
            buttonLayout = mUI.MelHLayout(main_form,ut='cgmUISubTemplate',padding = 1,bgc=_subLineBGC)
            for btn in buttonArgs:
                button = cgmUI.add_Button(buttonLayout,btn['label'],
                             cgmGEN.Callback(btn['command'],self),
                             btn['annotation'], bgc=_buttonBGC)
                buttons.append(button)
            buttonLayout.layout()


        af = [(scroll_list,"left",0), (scroll_list,"right",0)]
        ac = []
        attachNone = []

        if(hasHeader):
            af += [ (header,"top",0),
                    (header,"left",0),
                    (header,"right",0) ]
            ac += [(scroll_list,"top",0,header)]
            attachNone += [(header,"bottom")]
        else:
            af += [ (scroll_list,"top",0) ]

        if(hasButton):
            af += [ (buttonLayout,"bottom",0),
                    (buttonLayout,"left",0),
                    (buttonLayout,"right",0)]
            ac += [(scroll_list,"bottom",0,buttonLayout)]
            attachNone += [(buttonLayout,"top")]
        else:
            af += [ (scroll_list,"bottom",0) ]

        main_form(edit=True, af = af,
                                ac = ac,
                                attachNone = attachNone)
        
        return [main_form, scroll_list, header, buttons]
Пример #6
0
    def buildOptions(self,parent, asScroll = False):
 
        if asScroll:
            _inside = mUI.MelScrollLayout(parent,useTemplate = 'cgmUISubTemplate') 
        else:
            _inside = mUI.MelColumnLayout(parent,useTemplate = 'cgmUISubTemplate') 
        
        #>>>Objects Load Row ---------------------------------------------------------------------------------------
        
        mc.setParent(_inside)
        cgmUI.add_LineSubBreak()

        _row = mUI.MelHSingleStretchLayout(_inside,ut='cgmUISubTemplate',padding = 5,bgc=_subLineBGC)
        mUI.MelSpacer(_row,w=5)
        mUI.MelLabel(_row,l='Auto Link by')
        _row.setStretchWidget( mUI.MelSeparator(_row) )
    
        cgmUI.add_Button(_row,'Name',
                 cgmGEN.Callback(self.uiFunc_link_by_name,self),
                 _d_annotations.get('linkName','fix'), bgc=_buttonBGC) 
        cgmUI.add_Button(_row,'Distance',
                 cgmGEN.Callback(self.uiFunc_link_by_distance,self),
                 _d_annotations.get('linkDistance','fix'), bgc=_buttonBGC) 
        mUI.MelSpacer(_row,w=5)
        _row.layout()

        _row = mUI.MelHSingleStretchLayout(_inside,ut='cgmUISubTemplate',padding = 1,bgc=_subLineBGC)
        mUI.MelSpacer(_row,w=9)
        mUI.MelLabel(_row,l='Set Target Constraint to')
        _row.setStretchWidget( mUI.MelSeparator(_row) )

        cgmUI.add_Button(_row,'Point/Orient',
                 cgmGEN.Callback(self.uiFunc_set_constraint_type,1,True,self),
                 _d_annotations.get('setPointOrient','fix'), bgc=_buttonBGC) 
        cgmUI.add_Button(_row,'A',
                 cgmGEN.Callback(self.uiFunc_set_constraint_type,1,False,self),
                 _d_annotations.get('setPointOrientAll','fix'), bgc=_buttonBGC) 
        mUI.MelSpacer(_row,w=4)
        cgmUI.add_Button(_row,'Orient',
                 cgmGEN.Callback(self.uiFunc_set_constraint_type,0,True,self),
                 _d_annotations.get('setOrient','fix'), bgc=_buttonBGC) 
        cgmUI.add_Button(_row,'A',
                 cgmGEN.Callback(self.uiFunc_set_constraint_type,1,False,self),
                 _d_annotations.get('setOrientAll','fix'), bgc=_buttonBGC) 
        mUI.MelSpacer(_row,w=9)

        _row.layout()


        _row = mUI.MelHSingleStretchLayout(_inside,ut='cgmUISubTemplate',padding = 5,bgc=_subLineBGC)
        mUI.MelSpacer(_row,w=5)
        mUI.MelLabel(_row,l='Set Connection Pose')
        _row.setStretchWidget( mUI.MelSeparator(_row) )
        self.cb_set_connection_at_bake = mUI.MelCheckBox(_row,
                           v = self.var_mocap_set_connection_at_bake.value,
                           onCommand = lambda *a: self.var_mocap_set_connection_at_bake.setValue(1),
                           offCommand = lambda *a: self.var_mocap_set_connection_at_bake.setValue(0),
                           label="Set On Bake")
        cgmUI.add_Button(_row,'Manual Set',
                 cgmGEN.Callback(self.uiFunc_set_connection_pose,1,self),
                 _d_annotations.get('setConnectionPose','fix'), bgc = [.5,.2,0.2]) 
        mUI.MelSpacer(_row,w=5)

        _row.layout()

        # Bake Options

        timelineInfo = SEARCH.get_time('slider')

        mc.setParent(_inside)
        cgmUI.add_Header("Bake Options", overrideUpper = True)

        cgmUI.add_LineSubBreak()


        _row = mUI.MelHSingleStretchLayout(_inside,ut='cgmUISubTemplate',padding = 5,bgc=_subLineBGC)
        #self.timeSubMenu.append( _row )
        mUI.MelSpacer(_row,w=5)
        mUI.MelLabel(_row,l='Set Timeline Range')
        _row.setStretchWidget( mUI.MelSeparator(_row) )

        cgmUI.add_Button(_row,'Slider',
                 cgmGEN.Callback(self.uiFunc_updateTimeRange,'slider'),
                 _d_annotations.get('sliderRange','fix'), bgc=_buttonBGC) 
        cgmUI.add_Button(_row,'Sel',
                 cgmGEN.Callback(self.uiFunc_updateTimeRange,'selected'),
                 _d_annotations.get('selectedRange','fix'), bgc=_buttonBGC) 
        cgmUI.add_Button(_row,'Scene',
                 cgmGEN.Callback(self.uiFunc_updateTimeRange,'scene'),
                 _d_annotations.get('sceneRange','fix'), bgc=_buttonBGC) 
        mUI.MelSpacer(_row,w=5)
        _row.layout()


        _row = mUI.MelHSingleStretchLayout(_inside,ut='cgmUISubTemplate', padding=5,bgc=_subLineBGC)
        mUI.MelSpacer(_row,w=5)
        mUI.MelLabel(_row,l='Bake Range')
        _row.setStretchWidget( mUI.MelSeparator(_row) )

        mUI.MelLabel(_row,l='start')

        self.startFrameField = mUI.MelIntField(_row,'cgmLocWinStartFrameField',
                                           width = 40,
                                           value= timelineInfo[0])

        mUI.MelLabel(_row,l='end')

        self.endFrameField = mUI.MelIntField(_row,'cgmLocWinEndFrameField',
                                         width = 40,
                                         value= timelineInfo[1])

        cgmUI.add_Button(_row,' <<',
                         cgmGEN.Callback(self.uiFunc_bake,'back'),                         
                         #lambda *a: attrToolsLib.doAddAttributesToSelected(self),
                         _d_annotations.get('<<<','fix'), bgc=_buttonBGC)
    
        cgmUI.add_Button(_row,'Bake',
                         cgmGEN.Callback(self.uiFunc_bake,'all'),                         
                         _d_annotations.get('All','fix'), bgc=_buttonBGC)
        
        
        cgmUI.add_Button(_row,'>>',
                         cgmGEN.Callback(self.uiFunc_bake,'forward'),                         
                         _d_annotations.get('>>>','fix'), bgc=_buttonBGC)

        mUI.MelSpacer(_row,w=5)
        _row.layout()

        mc.setParent(_inside)
        cgmUI.add_LineSubBreak()

        return _inside
Пример #7
0
def buildColumn_main(self, parent, asScroll=False):
    """
    Trying to put all this in here so it's insertable in other uis
    
    """
    if asScroll:
        _inside = mUI.MelScrollLayout(parent, useTemplate='cgmUISubTemplate')
    else:
        _inside = mUI.MelColumnLayout(parent, useTemplate='cgmUISubTemplate')

    self.var_contextTD = cgmMeta.cgmOptionVar('cgmVar_contextTD',
                                              defaultValue='selection')
    self.var_jointAimAxis = cgmMeta.cgmOptionVar('cgmVar_jointDefaultAimAxis',
                                                 defaultValue=2)
    self.var_jointUpAxis = cgmMeta.cgmOptionVar('cgmVar_jointDefaultUpAxis',
                                                defaultValue=1)

    self.uiPB_cgmJointTools = mc.progressBar(vis=False)

    mc.setParent(_inside)
    cgmUI.add_Header('Orient')
    mc.setParent(_inside)
    cgmUI.add_LineSubBreak()
    #Orient ==================================================================================================

    #>>>Tweak -------------------------------------------------------------------------------------
    _row = mUI.MelHSingleStretchLayout(_inside,
                                       ut='cgmUISubTemplate',
                                       padding=5)
    mUI.MelSpacer(_row, w=5)

    mUI.MelLabel(_row, l='Tweak:')
    _row.setStretchWidget(mUI.MelSeparator(_row))
    _base_str = 'uiFF_orientTweak'

    #self._d_transformAttrFields[label] = {}
    #self._d_transformRows[label] = _row

    for a in list('xyz'):
        mUI.MelLabel(_row, l=a)
        _field = mUI.MelFloatField(_row, ut='cgmUISubTemplate', w=50)
        self.__dict__['{0}{1}'.format(_base_str, a.capitalize())] = _field

    mc.button(parent=_row,
              ut='cgmUITemplate',
              l=' + ',
              c=cgmGEN.Callback(uiFunc_tweak, self, '+'),
              ann="Adds value relatively to current")
    mc.button(parent=_row,
              ut='cgmUITemplate',
              l=' - ',
              c=cgmGEN.Callback(uiFunc_tweak, self, '-'),
              ann="Subracts value relatively to current")
    mc.button(parent=_row,
              ut='cgmUITemplate',
              l='Zero',
              c=cgmGEN.Callback(uiFunc_tweak, self, 'zero'),
              ann="Zero out the fields.")

    mUI.MelSpacer(_row, w=5)
    _row.layout()

    mc.setParent(_inside)
    cgmUI.add_LineSubBreak()
    #mUI.MelSeparator(_inside)

    buildRow_worldUp(self, _inside)
    mc.setParent(_inside)
    cgmUI.add_LineSubBreak()
    buildRow_getVector(self, _inside)

    #>>>Aim mode -------------------------------------------------------------------------------------
    _d = {'aim': self.var_jointAimAxis, 'up': self.var_jointUpAxis}

    for k in _d.keys():
        _var = _d[k]

        _row = mUI.MelHSingleStretchLayout(_inside,
                                           ut='cgmUISubTemplate',
                                           padding=5)

        mUI.MelSpacer(_row, w=5)
        mUI.MelLabel(_row, l='{0}:'.format(k))
        _row.setStretchWidget(mUI.MelSeparator(_row))

        uiRC = mUI.MelRadioCollection()
        _on = _var.value

        for i, item in enumerate(SHARED._l_axis_by_string):
            if i == _on:
                _rb = True
            else:
                _rb = False

            uiRC.createButton(_row,
                              label=item,
                              sl=_rb,
                              onCommand=cgmGEN.Callback(_var.setValue, i))

            mUI.MelSpacer(_row, w=2)
        _row.layout()

    #mUI.MelSeparator(_inside)

    #>>Orient Row -------------------------------------------------------------------------------
    _row_orient = mUI.MelHLayout(_inside, ut='cgmUISubTemplate', padding=5)
    mc.button(parent=_row_orient,
              ut='cgmUITemplate',
              l='Orient Selected',
              c=cgmGEN.Callback(orientJoints, self),
              ann="Orient selected joints")

    mc.button(
        parent=_row_orient,
        ut='cgmUITemplate',
        l='Plane Up',
        c=cgmGEN.Callback(orientPlane, self, 'up'),
        ann=
        "Orient selected joints along up plane of joints. Most useful for fingers and things like that"
    )
    mc.button(
        parent=_row_orient,
        ut='cgmUITemplate',
        l='Plane Out',
        c=cgmGEN.Callback(orientPlane, self, 'out'),
        ann=
        "Orient selected joints along out plane of joints. Most useful for fingers and things like that"
    )

    mc.button(
        parent=_row_orient,
        ut='cgmUITemplate',
        l='Freeze',
        ann=
        "Freeze selected joint's orientation - our method as we don't like Maya's",
        c=cgmGEN.Callback(MMCONTEXT.func_process, JOINTS.freezeOrientation,
                          None, 'each', 'freezeOrientation', False, **{}),
    )
    _row_orient.layout()
    mc.setParent(_inside)
    cgmUI.add_LineSubBreak()

    #Create ==================================================================================================
    mc.setParent(_inside)
    cgmUI.add_Header('Create')

    #>>>Options Row ---------------------------------------------------------------------------------------
    _row_createOptions = mUI.MelHSingleStretchLayout(_inside,
                                                     ut='cgmUISubTemplate',
                                                     padding=5)
    mUI.MelSpacer(_row_createOptions, w=2)
    mUI.MelLabel(_row_createOptions, l='Resplit:')

    self.create_guiOptionVar('splitMode', defaultValue=0)

    uiRC = mUI.MelRadioCollection()
    _on = self.var_splitMode.value

    for i, item in enumerate(['none', 'linear', 'curve', 'sub']):
        if i == _on:
            _rb = True
        else:
            _rb = False

        uiRC.createButton(_row_createOptions,
                          label=item,
                          sl=_rb,
                          onCommand=cgmGEN.Callback(
                              self.var_splitMode.setValue, i))

        #mUI.MelSpacer(_row_createOptions,w=2)
    _row_createOptions.setStretchWidget(mUI.MelSeparator(_row_createOptions))

    self.uiIF_cnt = mUI.MelIntField(_row_createOptions,
                                    value=3,
                                    ut='cgmUISubTemplate',
                                    w=30)
    mUI.MelLabel(_row_createOptions, l='#')

    mUI.MelSpacer(_row_createOptions, w=2)

    _row_createOptions.layout()

    #>>>Create Buttons Row ---------------------------------------------------------------------------------------
    mc.setParent(_inside)
    cgmUI.add_LineSubBreak()
    _row_create = mUI.MelHSingleStretchLayout(_inside,
                                              ut='cgmUISubTemplate',
                                              padding=5)
    mUI.MelSpacer(_row_create, w=2)

    self.uiCB_orient = mUI.MelCheckBox(_row_create,
                                       en=True,
                                       l='Orient',
                                       value=True,
                                       ann='Orient created joints')

    self.uiCB_chain = mUI.MelCheckBox(_row_create,
                                      en=True,
                                      l='Chain',
                                      value=True,
                                      ann='Parent created joints as a chain')

    self.uiCB_relative = mUI.MelCheckBox(
        _row_create,
        en=True,
        l='Relative',
        value=False,
        ann=
        'Relative orient where the chain orientation is relative to the parent'
    )

    _row_create.setStretchWidget(mUI.MelSeparator(_row_create))

    #mUI.MelLabel(_row_create,l='From Selected:')
    mc.button(
        parent=_row_create,
        ut='cgmUITemplate',
        l='From Selected',
        c=cgmGEN.Callback(createJoints, self, 'each'),
        #ann = "Show the joint axis by current context",
        #c= lambda *a:MMCONTEXT.set_attrs(self,'displayLocalAxis',1,self.var_contextTD.value,'joint',select=False),
    )
    mc.button(
        parent=_row_create,
        ut='cgmUITemplate',
        l='Mid',
        c=cgmGEN.Callback(MMCONTEXT.func_process, RIGGING.create_at, None,
                          'all', 'Create Joint at mid', **{
                              'create': 'joint',
                              'midPoint': 'True'
                          }),
        ann='Create a joint at the mid point of selected',
    )
    mc.button(
        parent=_row_create,
        ut='cgmUITemplate',
        l='Curve',
        c=cgmGEN.Callback(createJoints, self, 'curve'),
        #ann = "Show the joint axis by current context",
        #c= lambda *a:MMCONTEXT.set_attrs(self,'displayLocalAxis',1,self.var_contextTD.value,'joint',select=False),
    )

    mUI.MelSpacer(_row_create, w=2)
    _row_create.layout()

    if asScroll:
        #Axis ==================================================================================================
        mc.setParent(_inside)
        cgmUI.add_Header('Raycast')
        mc.setParent(_inside)
        cgmUI.add_LineSubBreak()

        UICHUNKS.uiChunk_rayCast(self, _inside)

    #Axis ==================================================================================================
    mc.setParent(_inside)
    cgmUI.add_Header('Axis')
    mc.setParent(_inside)
    cgmUI.add_LineSubBreak()

    #>>>Axis Show Row ---------------------------------------------------------------------------------------
    _row_axis = mUI.MelHLayout(_inside, ut='cgmUISubTemplate', padding=5)
    mc.button(
        parent=_row_axis,
        ut='cgmUITemplate',
        l='* Show',
        ann="Show the joint axis by current context",
        c=lambda *a: MMCONTEXT.set_attrs(self,
                                         'displayLocalAxis',
                                         1,
                                         self.var_contextTD.value,
                                         'joint',
                                         select=False),
    )

    mc.button(
        parent=_row_axis,
        ut='cgmUITemplate',
        l='* Hide',
        ann="Hide the joint axis by current context",
        c=lambda *a: MMCONTEXT.set_attrs(self,
                                         'displayLocalAxis',
                                         0,
                                         self.var_contextTD.value,
                                         'joint',
                                         select=False),
    )

    _row_axis.layout()

    #Axis ==================================================================================================
    mc.setParent(_inside)
    cgmUI.add_Header('Radius')
    mc.setParent(_inside)
    cgmUI.add_LineSubBreak()
    _row_radius = mUI.MelHLayout(_inside, ut='cgmUISubTemplate', padding=5)
    mc.button(parent=_row_radius,
              ut='cgmUITemplate',
              l=' / 2 ',
              c=lambda *a: radius_modify(self, '/', 2),
              ann="Contextual radius editing")
    mc.button(parent=_row_radius,
              ut='cgmUITemplate',
              l=' - 10',
              c=lambda *a: radius_modify(self, '-', 10),
              ann="Contextual radius editing")
    mc.button(parent=_row_radius,
              ut='cgmUITemplate',
              l='- 1',
              c=lambda *a: radius_modify(self, '-', 1),
              ann="Contextual radius editing")
    mc.button(parent=_row_radius,
              ut='cgmUITemplate',
              l='+ 1',
              c=lambda *a: radius_modify(self, '+', 1),
              ann="Contextual radius editing")
    mc.button(parent=_row_radius,
              ut='cgmUITemplate',
              l='+10',
              c=lambda *a: radius_modify(self, '+', 10),
              ann="Contextual radius editing")
    mc.button(parent=_row_radius,
              ut='cgmUITemplate',
              l='*2',
              c=lambda *a: radius_modify(self, '*', 2),
              ann="Contextual radius editing")
    _row_radius.layout()

    #Utilities ==================================================================================================
    mc.setParent(_inside)
    cgmUI.add_Header('Utilities')
    mc.setParent(_inside)
    cgmUI.add_LineSubBreak()

    #Buttons ----------------------------------------------------------------------------------------------
    _row_utils = mUI.MelHLayout(_inside, ut='cgmUISubTemplate', padding=5)

    mc.button(parent=_row_utils,
              ut='cgmUITemplate',
              l='cometJO',
              c=lambda *a: mel.eval('cometJointOrient'),
              ann="General Joint orientation tool  by Michael Comet")
    mc.button(parent=_row_utils,
              ut='cgmUITemplate',
              l='* Select',
              c=lambda *a: contextual_select(self),
              ann="Contextual joint selection")
    mc.button(
        parent=_row_utils,
        ut='cgmUITemplate',
        l='seShapeTaper',
        ann=
        "Fantastic blendtaper like tool for sdk poses by our pal - Scott Englert",
        c=lambda *a: mel.eval('seShapeTaper'),
    )
    _row_utils.layout()

    return _inside