def endMenu(self): with self.menu: if sysutils.inDevMode(): pm.menuItem(divider=True) with pm.subMenuItem(label="Log Level", to=True): pm.radioMenuItemCollection() pm.menuItem(label='Callback', radioButton=(logutils.logSeverity == -1), c=partial(self.setLogLevel, -1)) pm.menuItem(label='Silent', radioButton=(logutils.logSeverity == 0), c=partial(self.setLogLevel, 0)) pm.menuItem(label='Info', radioButton=(logutils.logSeverity == 1), c=partial(self.setLogLevel, 1)) pm.menuItem(label='Debug', radioButton=(logutils.logSeverity == 2), c=partial(self.setLogLevel, 2)) pm.menuItem(label='All', radioButton=(logutils.logSeverity == 3), c=partial(self.setLogLevel, 3)) pm.menuItem(label="Urllib3 Logging", c=setUrllib3LoggingEnabled, cb=False) pm.menuItem(divider=True) pm.menuItem(label="Reload Tools", c=self.reload)
def _buildTransformMenu(self, menu, parent): transformMenu = pm.menuItem(p=menu, l='Transform', rp='S', subMenu=1) rotateAxis = pm.radioMenuItemCollection(p=transformMenu) self.rotateX = pm.menuItem(p=transformMenu, l='Rotate Around X', rb=self.rotate_axis[0], cl=rotateAxis, c=self.set_rotate_axis) self.rotateY = pm.menuItem(p=transformMenu, l='Rotate Around Y', rb=self.rotate_axis[1], cl=rotateAxis, c=self.set_rotate_axis) self.rotateZ = pm.menuItem(p=transformMenu, l='Rotate Around Z', rb=self.rotate_axis[2], cl=rotateAxis, c=self.set_rotate_axis) self.negativeRotate = pm.menuItem(p=transformMenu, l='Negative Rotate', cb=self.negative_rotate, c=self.set_negative_rotate) self.maintainChildren = pm.menuItem(p=transformMenu, l='Maintain Children Transforms', cb=self.maintain_children, c=self.set_maintain_children) self.maintainShape = pm.menuItem(p=transformMenu, l='Maintain Shape', cb=self.maintain_shape, c=self.set_maintain_shape) pm.menuItem(p=transformMenu, d=True) pm.menuItem(p=transformMenu, l='Show/Hide Pivot', c=pm.Callback(self.showPivot)) pm.menuItem(p=transformMenu, l='Show/Hide Transform Attributes', c=pm.Callback(self.showTransformAttributes)) pm.menuItem(p=transformMenu, l='Freeze Scale', c=pm.Callback(self.freezeScale)) pm.menuItem(p=transformMenu, l='Locate Center Point', c=pm.Callback(self.locateCenterPoint)) pm.menuItem(p=transformMenu, l='Match Transforms', rp='E', c=pm.Callback(self.matchTransform)) pm.menuItem(p=transformMenu, l='Match Position', rp='NE', c=pm.Callback(self.matchTransform, rotate=False)) pm.menuItem(p=transformMenu, l='Match Rotation', rp='SE', c=pm.Callback(self.matchTransform, translate=False)) pm.menuItem(p=transformMenu, l='Zero Transforms', rp='W', c=pm.Callback(self.zeroTransform)) pm.menuItem(p=transformMenu, l='Zero Position', rp='NW', c=pm.Callback(self.zeroTransform, rotate=False)) pm.menuItem(p=transformMenu, l='Zero Rotation', rp='SW', c=pm.Callback(self.zeroTransform, translate=False)) pm.menuItem(p=transformMenu, l='Rotate Transform 90', rp='N', c=pm.Callback(self.rotateNinety))
def populateSelectCamera(): # clear camera menu pm.menu('ArnoldSelectCamera', edit=True, deleteAllItems=True) coll = pm.radioMenuItemCollection(parent='ArnoldSelectCamera') # populate camera menu cameras = cmds.ls(type='camera') if cameras != None: activeCamera = core.ACTIVE_CAMERA if not activeCamera in cameras: activeCamera = None if activeCamera == None: if 'perspShape' in cameras: activeCamera = 'perspShape' elif len(cameras): activeCamera = cameras[0] core.ACTIVE_CAMERA = activeCamera for cam in cameras: pm.menuItem( 'SelectCameraItem%s' % cam, label=cam, parent='ArnoldSelectCamera', radioButton=cam == activeCamera, cl=coll, c='from mtoa.ui.arnoldmenu import selectCamera; selectCamera("%s")' % cam)
def _updateNamespacePopupList( self ): self._updateNamespaceList() pm.menu( self.namespacePM, edit=True, deleteAllItems=True ) pm.setParent( self.namespacePM, menu=True ) pm.radioMenuItemCollection() rbState = self.namespace == 'Default' pm.menuItem( 'Default', radioButton=rbState, command=pm.Callback( self._setSelectedNS, 'Default' ) ) rbState = self.namespace == '' pm.menuItem( 'None', radioButton=rbState, command=pm.Callback( self._setSelectedNS, '' ) ) pm.menuItem( divider=True ) for ns in self.charNS: rbState = self.namespace == ns pm.menuItem( ns, radioButton=rbState, command=pm.Callback( self._setSelectedNS, ns ) ) pm.menuItem( divider=True ) for ns in self.refNS: rbState = self.namespace == ns pm.menuItem( ns, radioButton=rbState, command=pm.Callback( self._setSelectedNS, ns ) )
def commonMenu(self): self.editMenu = pm.menu(label='Edit') self.editMenuSave = pm.menuItem(label='Save Settings', command=self.editMenuSaveCmd) self.editMenuReset = pm.menuItem(label='Reset Settings', command=self.editMenuResetCmd) self.editMenuDiv = pm.menuItem(divider=True) self.editMenuRadio = pm.radioMenuItemCollection() self.editMenuTool = pm.menuItem(label='As Tool', radioButton=True, enable=self.supportsToolAction, command=self.editMenuToolCmd) self.editMenuAction = pm.menuItem(label='As Action', radioButton=True, enable=self.supportsToolAction, command=self.editMenuActionCmd) self.helpMenu = pm.menu(label='Help') self.helpMenuItem = pm.menuItem(label='Help on %s' % self.title, command=self.helpMenuCmd)
def buildMenuItems(self): # find camera try: camUnderPointer = pm.PyNode( pm.modelPanel(self.panel, q=True, cam=True)) if isinstance(camUnderPointer, pm.nt.Camera): camera = camUnderPointer else: camera = camUnderPointer.getShape() except: LOG.warning('could not find camera for panel: {0}'.format( self.panel)) return menuItemCol = pm.radioMenuItemCollection() isOrtho = camera.isOrtho() # list same type camera in radial positions similar = sorted( [c for c in pm.ls(typ='camera') if c.isOrtho() == isOrtho]) rps = quickmenus.getRadialMenuPositions(len(similar)) for cam, rp in zip(similar, rps): kw = {} if rp is not None: kw['rp'] = rp if cam == camera: kw['rb'] = True kw['cl'] = menuItemCol pm.menuItem(l=cam.getParent(), c=pm.Callback(pm.mel.lookThroughModelPanel, str(cam), str(self.panel)), **kw) if len(rps) > 8: pm.menuItem(d=True) # list other cameras dissimilar = sorted( [c for c in pm.ls(typ='camera') if c.isOrtho() != isOrtho]) for cam in dissimilar: pm.menuItem(l=cam.getParent(), c=pm.Callback(pm.mel.lookThroughModelPanel, str(cam), str(self.panel)))
def populateSelectCamera(): # clear camera menu pm.menu('ArnoldSelectCamera', edit=True, deleteAllItems=True) coll = pm.radioMenuItemCollection(parent='ArnoldSelectCamera') # populate camera menu cameras = cmds.ls(type='camera') if cameras != None: activeCamera = core.ACTIVE_CAMERA if not activeCamera in cameras: activeCamera = None if activeCamera == None: if 'perspShape' in cameras: activeCamera = 'perspShape' elif len(cameras): activeCamera = cameras[0] core.ACTIVE_CAMERA = activeCamera for cam in cameras: pm.menuItem('SelectCameraItem%s' % cam, label=cam, parent='ArnoldSelectCamera', radioButton=cam == activeCamera, cl=coll, c='from mtoa.ui.arnoldmenu import selectCamera; selectCamera("%s")' % cam)
def __init__(self, operation=0, setTargetFromSelection=True, menuBarVisible=True, space=om.MSpace.kObject, minDeltaLength=0.00001, templateDuplicate=True, visibleDuplicate=True): """ :param operation: (int) 0=Smooth delta, 1=Copy vertex, 2=Closest point, 3=Closest vertex, 4=Average vertex :param setTargetFromSelection: (bool) if there is no previous target stored (=first time running the UI in the maya instance) use the current selection :param space: (int) om.MSpace.k___ :param menuBarVisible: (bool) settings menuBar visibility :param minDeltaLength: (float) deltas shorter than this are ignored :param templateDuplicate: (bool) duplicate.template=___ :param visibleDuplicate: (bool) duplicate.visibility=___ """ initializeMaya() self.minDeltaLengthDefault = minDeltaLength with pm.verticalLayout() as mainLayout: with pm.menuBarLayout() as self.menuBar: self.space = pm.menu(label='Space', tearOff=True) pm.radioMenuItemCollection() self.spaces = [] for name, value in self.getSpaceStrings(space): self.spaces.append( pm.menuItem(label=name, radioButton=value, command=pm.Callback( self.syncMelVariablesWithUi))) pm.menu(label='Settings') self.templateDuplicate = pm.menuItem( label='template DUPLICATE', checkBox=templateDuplicate) self.visibleDuplicate = pm.menuItem(label='visible DUPLICATE', checkBox=visibleDuplicate) self.minDeltaLength = pm.menuItem( label='minDeltaLength: {}'.format(minDeltaLength), command=pm.Callback(self.setMinDeltaLengthDialog)) pm.menu(label='Help') # pm.menuItem(label='TODO: demo video (vimeo)') # pm.menuItem(label='TODO: latest installer (...)') pm.menuItem(label='latest version (github)', command=pm.Callback(self.getLatestVersion)) self.menuBar.setMenuBarVisible(menuBarVisible) with pm.horizontalLayout() as targetLayout: pm.button(l='Target:', c=pm.Callback(self.setTargetFromSelection)) self.target = pm.textField(en=False) variableTest = mm.eval('whatIs "$prDP_operation"') if variableTest != 'Unknown': self.target.setText(mm.eval('$tempMelVar=$prDP_driver')) targetLayout.redistribute(0, 1) pm.popupMenu(parent=targetLayout, button=3) pm.menuItem(label='intermediate of selection', c=pm.Callback(self.setTargetFromSelectionIntermediate)) pm.menuItem(label='DUPLICATE of selection', c=pm.Callback(self.setTargetFromDuplicateOfSelection)) with pm.verticalLayout() as operationLayout: self.operation1 = pm.radioButtonGrp( labelArray2=['Smooth delta', 'Copy vertex'], numberOfRadioButtons=2, columnWidth2=[110, 110], columnAlign2=['left', 'left'], changeCommand=pm.Callback(self.syncMelVariablesWithUi)) self.operation1.setSelect(operation + 1) self.operation2 = pm.radioButtonGrp( shareCollection=self.operation1, labelArray2=['Closest point', 'Closest vertex'], numberOfRadioButtons=2, columnWidth2=[110, 110], columnAlign2=['left', 'left'], changeCommand=pm.Callback(self.syncMelVariablesWithUi)) pm.separator() self.operation3 = pm.radioButtonGrp( shareCollection=self.operation1, label1='Average vertex', numberOfRadioButtons=1, columnWidth=[1, 110], columnAlign=[1, 'left'], changeCommand=pm.Callback(self.syncMelVariablesWithUi)) operationLayout.redistribute(5, 5, 1, 5) pm.popupMenu(parent=operationLayout, button=3) pm.menuItem(label='toggle menuBar', c=pm.Callback(self.toggleMenuBar)) with pm.horizontalLayout() as toolLayout: pm.button(label='Enter Tool', command=pm.Callback(self.enterTool)) pm.button(label='Close', command=pm.Callback(self.close)) toolLayout.redistribute() mainLayout.redistribute(0, 0, 0, 1) if setTargetFromSelection and not self.target.getText(): self.setTargetFromSelection() self.show() self.syncMelVariablesWithUi()
def __init__(self): ui_labelWidth = 140 ui_inputWidth = 240 if pm.window(WIN_NAME, exists=True): pm.deleteUI(WIN_NAME, window=True) with pm.window( WIN_NAME, title=WIN_TITLE, maximizeButton=False, menuBar=True, menuBarVisible=True ) as self.window: pm.setUITemplate('DefaultTemplate', pushTemplate=True) pm.menu(label='Edit', tearOff=False) pm.menuItem(label='Reset Settings', command=self.ui_resetSettings) pm.menu(label='Options', tearOff=False) pm.radioMenuItemCollection() self.ui_RADBTN_spaceLocal = pm.menuItem(label='Use Local Space', radioButton=True) self.ui_RADBTN_spaceLocal.space = SPACE_LOCAL self.ui_RADBTN_spaceObject = pm.menuItem(label='Use Object Space', radioButton=False) self.ui_RADBTN_spaceObject.space = SPACE_OBJECT self.ui_RADBTN_spaceWorld = pm.menuItem(label='Use World Space', radioButton=False) self.ui_RADBTN_spaceWorld.space = SPACE_WORLD self.spaceRadioList = [self.ui_RADBTN_spaceLocal, self.ui_RADBTN_spaceObject, self.ui_RADBTN_spaceWorld] self.ui_setSpace(SPACE_OBJECT) pm.menu(label='Help', tearOff=False) pm.menuItem(label='Help on ' + WIN_TITLE, command=self.ui_showHelp) with pm.formLayout() as self.ui_LAY_mainForm: with pm.tabLayout(tabsVisible=False) as self.ui_TAB_top: pm.tabLayout(self.ui_TAB_top, e=True, height=1) with pm.formLayout() as self.ui_LAY_attachForm: with pm.tabLayout(tabsVisible=False, scrollable=True, innerMarginWidth=4) as self.ui_TAB_inner: with pm.columnLayout(adjustableColumn=True) as self.ui_LAY_mainColumn: with pm.frameLayout( label='Control Panel', collapsable=True, collapse=False, marginHeight=3 ) as self.ui_LAY_frameControlPanel: with pm.rowColumnLayout( numberOfColumns=12, columnSpacing=([3, 2], [4, 2], [5, 2], [6, 2]), rowSpacing=[1, 5], # Label X Y Z XYZ Mag Sep Reset Bias Sep Min Max columnWidth=[(1, 60), (2, 20), (3, 20), (4, 20), (5, 80), (6, 60), (7, 20), (8, 20), (9, 120), (10, 20), (11, 60), (12, 60)] ) as self.ui_LAY_mainRowColumn: # ----- Header Row ----- pm.text(label='') pm.text(label='') pm.text(label='') pm.text(label='') pm.text(label='') pm.text(label='Magnitude', ) pm.text(label='') pm.text(label='') pm.text(label='Bias', ) pm.text(label='') pm.text(label='Min', ) pm.text(label='Max', ) # ----- Translate Row ----- pm.text(label='Translate ', align='right') pm.button(label='X', command=pm.Callback(self.randomizeTranslate, ['tx'])) pm.button(label='Y', command=pm.Callback(self.randomizeTranslate, ['ty'])) pm.button(label='Z', command=pm.Callback(self.randomizeTranslate, ['tz'])) pm.button(label='XYZ', command=pm.Callback(self.randomizeTranslate, ['tx', 'ty', 'tz'])) self.ui_FLTFLD_translateMagnitude = pm.floatField('ui_FLTFLD_translateMagnitude', changeCommand=self.ui_refresh, value=10) pm.text(label='') self.ui_BTN_translateBiasReset = pm.button(label='0') pm.setUITemplate('DefaultTemplate', popTemplate=True) # strange slider group visual with default template self.ui_INTSLGRP_translateBias = pm.intSliderGrp( 'ui_INTSLGRP_translateBias', columnWidth=[1, 30], field=True, minValue=-100, maxValue=100, fieldMinValue=-100, fieldMaxValue=100, value=0, step=1, fieldStep=1, sliderStep=1, changeCommand=self.ui_refresh, dragCommand=self.ui_refresh ) pm.setUITemplate('DefaultTemplate', pushTemplate=True) pm.button(self.ui_BTN_translateBiasReset, edit=True, command=pm.Callback(self.ui_resetBias, self.ui_INTSLGRP_translateBias)) pm.text(label='=') self.ui_FLTFLD_translateMin = pm.floatField(enable=False, value=-5) self.ui_FLTFLD_translateMax = pm.floatField(enable=False, value=95) # ----- Rotate Row ----- pm.text(label='Rotate ', align='right') pm.button(label='X', command=pm.Callback(self.randomizeRotate, ['rx'])) pm.button(label='Y', command=pm.Callback(self.randomizeRotate, ['ry'])) pm.button(label='Z', command=pm.Callback(self.randomizeRotate, ['rz'])) pm.button(label='XYZ', command=pm.Callback(self.randomizeRotate, ['rx', 'ry', 'rz'])) self.ui_FLTFLD_rotateMagnitude = pm.floatField('ui_FLTFLD_rotateMagnitude', changeCommand=self.ui_refresh, value=90) pm.text(label='') self.ui_BTN_rotateBiasReset = pm.button(label='0') pm.setUITemplate('DefaultTemplate', popTemplate=True) # strange slider group visual with default template self.ui_INTSLGRP_rotateBias = pm.intSliderGrp( 'ui_INTSLGRP_rotateBias', columnWidth=[1, 30], field=True, minValue=-100, maxValue=100, fieldMinValue=-100, fieldMaxValue=100, value=0, step=1, fieldStep=1, sliderStep=1, changeCommand=self.ui_refresh, dragCommand=self.ui_refresh ) pm.setUITemplate('DefaultTemplate', pushTemplate=True) pm.button(self.ui_BTN_rotateBiasReset, edit=True, command=pm.Callback(self.ui_resetBias, self.ui_INTSLGRP_rotateBias)) pm.text(label='=') self.ui_FLTFLD_rotateMin = pm.floatField(enable=False, value=-5) self.ui_FLTFLD_rotateMax = pm.floatField(enable=False, value=95) # ----- Scale Row ----- pm.text(label='Scale ', align='right') pm.button(label='X', command=pm.Callback(self.randomizeScale, ['sx'])) pm.button(label='Y', command=pm.Callback(self.randomizeScale, ['sy'])) pm.button(label='Z', command=pm.Callback(self.randomizeScale, ['sz'])) pm.flowLayout(columnSpacing=2) pm.button(label='XYZ', command=pm.Callback(self.randomizeScale, ['sx', 'sy', 'sz'])) pm.button(label='Uniform', command=pm.Callback(self.randomizeScale, ['uniform'])) pm.setParent('..') self.ui_FLTFLD_scaleMagnitude = pm.floatField('ui_FLTFLD_scaleMagnitude', changeCommand=self.ui_refresh, value=2) pm.text(label='') self.ui_BTN_scaleBiasReset = pm.button(label='0') pm.setUITemplate('DefaultTemplate', popTemplate=True) # strange slider group visual with default template self.ui_INTSLGRP_scaleBias = pm.intSliderGrp( 'ui_INTSLGRP_scaleBias', columnWidth=[1, 30], field=True, minValue=-100, maxValue=100, fieldMinValue=-100, fieldMaxValue=100, value=0, step=1, fieldStep=1, sliderStep=1, changeCommand=self.ui_refresh, dragCommand=self.ui_refresh ) pm.setUITemplate('DefaultTemplate', pushTemplate=True) pm.button(self.ui_BTN_scaleBiasReset, edit=True, command=pm.Callback(self.ui_resetBias, self.ui_INTSLGRP_scaleBias)) pm.text(label='=') self.ui_FLTFLD_scaleMin = pm.floatField(enable=False, value=-5) self.ui_FLTFLD_scaleMax = pm.floatField(enable=False, value=95) with pm.frameLayout( label='Seed Control', collapsable=True, collapse=False, marginHeight=3 ) as self.ui_LAY_frameSeedControl: with pm.columnLayout(adjustableColumn=False): with pm.rowLayout( numberOfColumns=2, columnWidth2=[ui_labelWidth, ui_inputWidth], columnAttach=[1, 'right', 5] ): pm.text(label='Use Seed') self.ui_CHK_useSeed = pm.checkBox( 'ui_CHK_useSeed', value=True, label='', changeCommand=self.ui_refresh ) with pm.rowLayout( numberOfColumns=2, columnWidth2=[ui_labelWidth, ui_inputWidth], columnAttach=[1, 'right', 5] ): pm.text(label='Seed') pm.setUITemplate('DefaultTemplate', popTemplate=True) # strange slider group visual with default template self.ui_INTSLGRP_seedValue = pm.intSliderGrp( 'ui_INTSLGRP_seedValue', field=True, minValue=1, maxValue=10000, fieldMinValue=1, fieldMaxValue=10000, value=1234, step=1, fieldStep=1, sliderStep=1 ) pm.setUITemplate('DefaultTemplate', pushTemplate=True) # pm.setParent(self.ui_mainForm) self.ui_BTN_close = pm.button( label='Close', command=self.ui_close ) pm.setUITemplate('DefaultTemplate', popTemplate=True) self.ui_LAY_attachForm.attachForm(self.ui_TAB_inner, 'top', 0) self.ui_LAY_attachForm.attachForm(self.ui_TAB_inner, 'left', 0) self.ui_LAY_attachForm.attachForm(self.ui_TAB_inner, 'right', 0) self.ui_LAY_attachForm.attachForm(self.ui_TAB_inner, 'bottom', 0) self.ui_LAY_mainForm.attachForm(self.ui_TAB_top, 'top', 0) self.ui_LAY_mainForm.attachForm(self.ui_TAB_top, 'left', 0) self.ui_LAY_mainForm.attachForm(self.ui_TAB_top, 'right', 0) self.ui_LAY_mainForm.attachControl(self.ui_TAB_top, 'bottom', 5, self.ui_BTN_close) self.ui_LAY_mainForm.attachNone(self.ui_BTN_close, 'top') self.ui_LAY_mainForm.attachForm(self.ui_BTN_close, 'left', 5) self.ui_LAY_mainForm.attachForm(self.ui_BTN_close, 'bottom', 5) self.ui_LAY_mainForm.attachForm(self.ui_BTN_close, 'right', 5) self.prefSaver = prefsaver.PrefSaver(serializers.SerializerOptVar(OPT_VAR_NAME)) self.ui_initSettings() self.ui_loadSettings() self.window.show() pm.refresh()
def __init__(self): ui_labelWidth = 140 ui_inputWidth = 240 if pm.window(WIN_NAME, exists=True): pm.deleteUI(WIN_NAME, window=True) with pm.window(WIN_NAME, title=WIN_TITLE, maximizeButton=False, menuBar=True, menuBarVisible=True) as self.window: pm.setUITemplate('DefaultTemplate', pushTemplate=True) pm.menu(label='Edit', tearOff=False) pm.menuItem(label='Reset Settings', command=self.ui_resetSettings) pm.menu(label='Options', tearOff=False) pm.radioMenuItemCollection() self.ui_RADBTN_spaceLocal = pm.menuItem(label='Use Local Space', radioButton=True) self.ui_RADBTN_spaceLocal.space = SPACE_LOCAL self.ui_RADBTN_spaceObject = pm.menuItem(label='Use Object Space', radioButton=False) self.ui_RADBTN_spaceObject.space = SPACE_OBJECT self.ui_RADBTN_spaceWorld = pm.menuItem(label='Use World Space', radioButton=False) self.ui_RADBTN_spaceWorld.space = SPACE_WORLD self.spaceRadioList = [ self.ui_RADBTN_spaceLocal, self.ui_RADBTN_spaceObject, self.ui_RADBTN_spaceWorld ] self.ui_setSpace(SPACE_OBJECT) pm.menu(label='Help', tearOff=False) pm.menuItem(label='Help on ' + WIN_TITLE, command=self.ui_showHelp) with pm.formLayout() as self.ui_LAY_mainForm: with pm.tabLayout(tabsVisible=False) as self.ui_TAB_top: pm.tabLayout(self.ui_TAB_top, e=True, height=1) with pm.formLayout() as self.ui_LAY_attachForm: with pm.tabLayout( tabsVisible=False, scrollable=True, innerMarginWidth=4) as self.ui_TAB_inner: with pm.columnLayout(adjustableColumn=True ) as self.ui_LAY_mainColumn: with pm.frameLayout( label='Control Panel', collapsable=True, collapse=False, marginHeight=3 ) as self.ui_LAY_frameControlPanel: with pm.rowColumnLayout( numberOfColumns=12, columnSpacing=([3, 2], [4, 2], [5, 2], [6, 2]), rowSpacing=[1, 5], # Label X Y Z XYZ Mag Sep Reset Bias Sep Min Max columnWidth=[ (1, 60), (2, 20), (3, 20), (4, 20), (5, 80), (6, 60), (7, 20), (8, 20), (9, 120), (10, 20), (11, 60), (12, 60) ]) as self.ui_LAY_mainRowColumn: # ----- Header Row ----- pm.text(label='') pm.text(label='') pm.text(label='') pm.text(label='') pm.text(label='') pm.text(label='Magnitude', ) pm.text(label='') pm.text(label='') pm.text(label='Bias', ) pm.text(label='') pm.text(label='Min', ) pm.text(label='Max', ) # ----- Translate Row ----- pm.text(label='Translate ', align='right') pm.button(label='X', command=pm.Callback( self.randomizeTranslate, ['tx'])) pm.button(label='Y', command=pm.Callback( self.randomizeTranslate, ['ty'])) pm.button(label='Z', command=pm.Callback( self.randomizeTranslate, ['tz'])) pm.button(label='XYZ', command=pm.Callback( self.randomizeTranslate, ['tx', 'ty', 'tz'])) self.ui_FLTFLD_translateMagnitude = pm.floatField( 'ui_FLTFLD_translateMagnitude', changeCommand=self.ui_refresh, value=10) pm.text(label='') self.ui_BTN_translateBiasReset = pm.button( label='0') pm.setUITemplate( 'DefaultTemplate', popTemplate=True ) # strange slider group visual with default template self.ui_INTSLGRP_translateBias = pm.intSliderGrp( 'ui_INTSLGRP_translateBias', columnWidth=[1, 30], field=True, minValue=-100, maxValue=100, fieldMinValue=-100, fieldMaxValue=100, value=0, step=1, fieldStep=1, sliderStep=1, changeCommand=self.ui_refresh, dragCommand=self.ui_refresh) pm.setUITemplate('DefaultTemplate', pushTemplate=True) pm.button( self.ui_BTN_translateBiasReset, edit=True, command=pm.Callback( self.ui_resetBias, self. ui_INTSLGRP_translateBias)) pm.text(label='=') self.ui_FLTFLD_translateMin = pm.floatField( enable=False, value=-5) self.ui_FLTFLD_translateMax = pm.floatField( enable=False, value=95) # ----- Rotate Row ----- pm.text(label='Rotate ', align='right') pm.button(label='X', command=pm.Callback( self.randomizeRotate, ['rx'])) pm.button(label='Y', command=pm.Callback( self.randomizeRotate, ['ry'])) pm.button(label='Z', command=pm.Callback( self.randomizeRotate, ['rz'])) pm.button(label='XYZ', command=pm.Callback( self.randomizeRotate, ['rx', 'ry', 'rz'])) self.ui_FLTFLD_rotateMagnitude = pm.floatField( 'ui_FLTFLD_rotateMagnitude', changeCommand=self.ui_refresh, value=90) pm.text(label='') self.ui_BTN_rotateBiasReset = pm.button( label='0') pm.setUITemplate( 'DefaultTemplate', popTemplate=True ) # strange slider group visual with default template self.ui_INTSLGRP_rotateBias = pm.intSliderGrp( 'ui_INTSLGRP_rotateBias', columnWidth=[1, 30], field=True, minValue=-100, maxValue=100, fieldMinValue=-100, fieldMaxValue=100, value=0, step=1, fieldStep=1, sliderStep=1, changeCommand=self.ui_refresh, dragCommand=self.ui_refresh) pm.setUITemplate('DefaultTemplate', pushTemplate=True) pm.button( self.ui_BTN_rotateBiasReset, edit=True, command=pm.Callback( self.ui_resetBias, self.ui_INTSLGRP_rotateBias)) pm.text(label='=') self.ui_FLTFLD_rotateMin = pm.floatField( enable=False, value=-5) self.ui_FLTFLD_rotateMax = pm.floatField( enable=False, value=95) # ----- Scale Row ----- pm.text(label='Scale ', align='right') pm.button(label='X', command=pm.Callback( self.randomizeScale, ['sx'])) pm.button(label='Y', command=pm.Callback( self.randomizeScale, ['sy'])) pm.button(label='Z', command=pm.Callback( self.randomizeScale, ['sz'])) pm.flowLayout(columnSpacing=2) pm.button(label='XYZ', command=pm.Callback( self.randomizeScale, ['sx', 'sy', 'sz'])) pm.button(label='Uniform', command=pm.Callback( self.randomizeScale, ['uniform'])) pm.setParent('..') self.ui_FLTFLD_scaleMagnitude = pm.floatField( 'ui_FLTFLD_scaleMagnitude', changeCommand=self.ui_refresh, value=2) pm.text(label='') self.ui_BTN_scaleBiasReset = pm.button( label='0') pm.setUITemplate( 'DefaultTemplate', popTemplate=True ) # strange slider group visual with default template self.ui_INTSLGRP_scaleBias = pm.intSliderGrp( 'ui_INTSLGRP_scaleBias', columnWidth=[1, 30], field=True, minValue=-100, maxValue=100, fieldMinValue=-100, fieldMaxValue=100, value=0, step=1, fieldStep=1, sliderStep=1, changeCommand=self.ui_refresh, dragCommand=self.ui_refresh) pm.setUITemplate('DefaultTemplate', pushTemplate=True) pm.button( self.ui_BTN_scaleBiasReset, edit=True, command=pm.Callback( self.ui_resetBias, self.ui_INTSLGRP_scaleBias)) pm.text(label='=') self.ui_FLTFLD_scaleMin = pm.floatField( enable=False, value=-5) self.ui_FLTFLD_scaleMax = pm.floatField( enable=False, value=95) with pm.frameLayout( label='Seed Control', collapsable=True, collapse=False, marginHeight=3 ) as self.ui_LAY_frameSeedControl: with pm.columnLayout( adjustableColumn=False): with pm.rowLayout( numberOfColumns=2, columnWidth2=[ ui_labelWidth, ui_inputWidth ], columnAttach=[1, 'right', 5]): pm.text(label='Use Seed') self.ui_CHK_useSeed = pm.checkBox( 'ui_CHK_useSeed', value=True, label='', changeCommand=self.ui_refresh) with pm.rowLayout( numberOfColumns=2, columnWidth2=[ ui_labelWidth, ui_inputWidth ], columnAttach=[1, 'right', 5]): pm.text(label='Seed') pm.setUITemplate( 'DefaultTemplate', popTemplate=True ) # strange slider group visual with default template self.ui_INTSLGRP_seedValue = pm.intSliderGrp( 'ui_INTSLGRP_seedValue', field=True, minValue=1, maxValue=10000, fieldMinValue=1, fieldMaxValue=10000, value=1234, step=1, fieldStep=1, sliderStep=1) pm.setUITemplate('DefaultTemplate', pushTemplate=True) # pm.setParent(self.ui_mainForm) self.ui_BTN_close = pm.button(label='Close', command=self.ui_close) pm.setUITemplate('DefaultTemplate', popTemplate=True) self.ui_LAY_attachForm.attachForm(self.ui_TAB_inner, 'top', 0) self.ui_LAY_attachForm.attachForm(self.ui_TAB_inner, 'left', 0) self.ui_LAY_attachForm.attachForm(self.ui_TAB_inner, 'right', 0) self.ui_LAY_attachForm.attachForm(self.ui_TAB_inner, 'bottom', 0) self.ui_LAY_mainForm.attachForm(self.ui_TAB_top, 'top', 0) self.ui_LAY_mainForm.attachForm(self.ui_TAB_top, 'left', 0) self.ui_LAY_mainForm.attachForm(self.ui_TAB_top, 'right', 0) self.ui_LAY_mainForm.attachControl(self.ui_TAB_top, 'bottom', 5, self.ui_BTN_close) self.ui_LAY_mainForm.attachNone(self.ui_BTN_close, 'top') self.ui_LAY_mainForm.attachForm(self.ui_BTN_close, 'left', 5) self.ui_LAY_mainForm.attachForm(self.ui_BTN_close, 'bottom', 5) self.ui_LAY_mainForm.attachForm(self.ui_BTN_close, 'right', 5) self.prefSaver = prefsaver.PrefSaver( serializers.SerializerOptVar(OPT_VAR_NAME)) self.ui_initSettings() self.ui_loadSettings() self.window.show() pm.refresh()