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