Example #1
0
class SoftSelectionRow:
    def __init__(self, uiName):
        self.name = uiName

    def checkUiEnabled(self):
        '''
        update UI enabled/disabled values
        '''
        self.nativeSoftSelect.editUI(enable=self.useSoftSelect.getValue())
        self.softSelectRadius.editUI(enable=self.useSoftSelect.getValue()
                                     and not self.nativeSoftSelect.getValue())

    def uiChanged(self):
        '''
        called when controls change value
        '''
        self.checkUiEnabled()

    def create(self, parent):
        cmds.rowLayout(parent=parent,
                       nc=2,
                       adjustableColumn=2,
                       columnWidth2=[Constants.MARGIN_COLUMN2, 50])
        self.useSoftSelect = CheckBoxField(
            self.name + 'On',
            label='Use soft selection',
            defaultValue=0,
            annotation=
            'extend effect outside selection with a fade out by defined distance'
        )
        self.useSoftSelect.changeCommand.addHandler(self.uiChanged)

        self.nativeSoftSelect = CheckBoxField(
            self.name + 'Native',
            label='Native soft selection',
            defaultValue=0,
            annotation=
            'use maya\'s soft selection instead of soft selection radius')
        self.nativeSoftSelect.changeCommand.addHandler(self.uiChanged)

        BaseTab.createFixedTitledRow(parent, "Selection radius")
        self.softSelectRadius = FloatField(
            self.name + 'Radius',
            minValue=0,
            defaultValue=1,
            step=0.1,
            annotation='soft selection radius is defined in world units')

        self.checkUiEnabled()

    def addToArgs(self, args):
        if self.useSoftSelect.getValue():
            args['softSelectionRadius'] = self.softSelectRadius.getValue()

        if self.nativeSoftSelect.getValue():
            args['nativeSoftSelection'] = 1
Example #2
0
class SoftSelectionRow:

    
    def __init__(self,uiName):
        self.name = uiName
        
    def checkUiEnabled(self):
        '''
        update UI enabled/disabled values
        '''
        self.nativeSoftSelect.editUI(enable=self.useSoftSelect.getValue())
        self.softSelectRadius.editUI(enable=self.useSoftSelect.getValue() and not self.nativeSoftSelect.getValue())

    def uiChanged(self):
        '''
        called when controls change value
        '''
        self.checkUiEnabled()
        
    def create(self,parent):
        cmds.rowLayout(parent=parent,nc=2,adjustableColumn=2,columnWidth2=[Constants.MARGIN_COLUMN2,50])
        self.useSoftSelect = CheckBoxField(self.name+'On',label='Use soft selection',defaultValue=0,annotation='extend effect outside selection with a fade out by defined distance') 
        self.useSoftSelect.changeCommand.addHandler(self.uiChanged)

        self.nativeSoftSelect = CheckBoxField(self.name+'Native',label='Native soft selection',defaultValue=0,annotation='use maya\'s soft selection instead of soft selection radius') 
        self.nativeSoftSelect.changeCommand.addHandler(self.uiChanged)
        
        BaseTab.createFixedTitledRow(parent, "Selection radius")
        self.softSelectRadius = FloatField(self.name+'Radius', minValue=0,defaultValue=1,step=0.1,annotation='soft selection radius is defined in world units') 
        
        self.checkUiEnabled()
        
    
    def addToArgs(self,args):
        if self.useSoftSelect.getValue():
            args['softSelectionRadius'] = self.softSelectRadius.getValue()
            
        if self.nativeSoftSelect.getValue():
            args['nativeSoftSelection'] = 1;
Example #3
0
class FloatSliderField:
    """
    Similar to float slider group, only without caption
    """

    def __init__(self, range=[0.0, 1.0]):
        assert len(range) == 2

        self.model = None
        self.floatField = None
        self.slider = None
        self.onChange = Signal()
        self.onChanging = Signal()
        self.range = range
        self.flexibleRange = False

    def updateModel(self):
        if self.model is not None:
            self.model.set(self.getValue())

    def sliderChanging(self, *args):
        """
        handler for when float slider value is dragged
        """
        self.floatField.setValue(cmds.floatSlider(self.slider, q=True, value=True))
        self.updateModel()
        self.onChanging.emit()

    def sliderChanged(self, *args):
        self.updateModel()
        self.onChange.emit()

    def __updateSliderValue(self):
        value = self.floatField.getValue()
        minValue = cmds.floatSlider(self.slider, q=True, minValue=True)
        maxValue = cmds.floatSlider(self.slider, q=True, maxValue=True)
        if self.flexibleRange:
            # change min/max, if needed
            cmds.floatSlider(self.slider, e=True, minValue=min(value, minValue), maxValue=max(value, maxValue))
        else:
            # change value, if needed
            value = min(maxValue, max(value, minValue))

        cmds.floatSlider(self.slider, e=True, value=self.floatField.getValue())

    def fieldChanged(self):
        """
        handler for when float field value changes
        """
        self.__updateSliderValue()
        self.updateModel()
        self.onChange.emit()

    def create(self):
        result = self.mainLayout = cmds.rowLayout(nc=2, adjustableColumn=2)
        step = (self.range[1] - self.range[0]) / 100.0

        self.floatField = FloatField(self.model, step=step)
        if not self.flexibleRange:
            self.floatField.editUI(minValue=self.range[0], maxValue=self.range[1])

        self.floatField.changeCommand.addHandler(self.fieldChanged)
        self.slider = cmds.floatSlider(
            value=self.floatField.getValue(),
            dragCommand=self.sliderChanging,
            changeCommand=self.sliderChanged,
            step=step,
            minValue=self.range[0],
            maxValue=self.range[1],
        )

        self.__updateSliderValue()
        return result

    def setModel(self, model):
        self.floatField.setModel(model)
        self.__updateSliderValue()

    def setValue(self, value):
        self.floatField.setValue(value)
        self.__updateSliderValue()

    def getValue(self):
        return self.floatField.getValue()

    def setEnabled(self, enabled):
        cmds.layout(self.mainLayout, e=True, enable=enabled)
Example #4
0
class FloatSliderField:
    '''
    Similar to float slider group, only without caption
    '''
    def __init__(self, range=(0.0, 1.0)):
        assert (len(range) == 2)

        self.model = None
        self.floatField = None
        self.slider = None
        self.onChange = Signal("floatSliderChange")
        self.onChanging = Signal("floatSliderChanging")
        self.range = range
        self.flexibleRange = False

    def updateModel(self):
        if self.model is not None:
            self.model.set(self.getValue())

    def sliderChanging(self, *args):
        '''
        handler for when float slider value is dragged
        '''
        self.floatField.setValue(
            cmds.floatSlider(self.slider, q=True, value=True))
        self.updateModel()
        self.onChanging.emit()

    def sliderChanged(self, *args):
        self.updateModel()
        self.onChange.emit()

    def __updateSliderValue(self):
        value = self.floatField.getValue()
        minValue = cmds.floatSlider(self.slider, q=True, minValue=True)
        maxValue = cmds.floatSlider(self.slider, q=True, maxValue=True)
        if self.flexibleRange:
            #change min/max, if needed
            cmds.floatSlider(self.slider,
                             e=True,
                             minValue=min(value, minValue),
                             maxValue=max(value, maxValue))
        else:
            #change value, if needed
            value = min(maxValue, max(value, minValue))

        cmds.floatSlider(self.slider, e=True, value=self.floatField.getValue())

    def fieldChanged(self):
        '''
        handler for when float field value changes
        '''
        self.__updateSliderValue()
        self.updateModel()
        self.onChange.emit()

    def create(self):
        result = self.mainLayout = cmds.rowLayout(nc=2, adjustableColumn=2)
        step = (self.range[1] - self.range[0]) / 100.0

        self.floatField = FloatField(self.model, step=step)
        if not self.flexibleRange:
            self.floatField.editUI(minValue=self.range[0],
                                   maxValue=self.range[1])

        self.floatField.changeCommand.addHandler(self.fieldChanged)
        self.slider = cmds.floatSlider(value=self.floatField.getValue(),
                                       dragCommand=self.sliderChanging,
                                       changeCommand=self.sliderChanged,
                                       step=step,
                                       minValue=self.range[0],
                                       maxValue=self.range[1])

        self.__updateSliderValue()
        return result

    def setModel(self, model):
        self.floatField.setModel(model)
        self.__updateSliderValue()

    def setValue(self, value):
        self.floatField.setValue(value)
        self.__updateSliderValue()

    def getValue(self):
        return self.floatField.getValue()

    def setEnabled(self, enabled):
        cmds.layout(self.mainLayout, e=True, enable=enabled)