from PySide import QtCore
from PySide import QtGui
parm = kwargs["parms"][0]
parmPath = parm.path()
if parm.parmTemplate().type().name() == "Ramp":
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Ramp Editor')
fbox = QtGui.QFormLayout()
##Lbox = QtGui.QVBoxLayout()
###Postion Scale###
label1Scale = QtGui.QLabel('Position Scale:', self)
PS_box = QtGui.QHBoxLayout()
scalePos = QtGui.QDoubleSpinBox(self)
scalePos.setValue(1)
scalePos.setSingleStep(0.1)
scalePos.setRange(-10.0,10.0)
PS_box.addWidget(scalePos)
PS_button = QtGui.QPushButton('ApplyPS', self)
PS_button.clicked.connect(lambda: self.pressPS_Button( scalePos.value() ) )
PS_box.addWidget(PS_button)
fbox.addRow(label1Scale,PS_box)
###Postion Offset###
label1Offset = QtGui.QLabel('Position Offset:', self)
PO_box = QtGui.QHBoxLayout()
offsetPos = QtGui.QDoubleSpinBox(self)
offsetPos.setValue(0)
offsetPos.setSingleStep(0.1)
offsetPos.setRange(-10.0,10.0)
PO_box.addWidget(offsetPos)
PO_button = QtGui.QPushButton('ApplyPO', self)
PO_button.clicked.connect(lambda: self.pressPO_Button( offsetPos.value() ) )
PO_box.addWidget(PO_button)
fbox.addRow(label1Offset,PO_box)
###Value Scale###
label2Scale = QtGui.QLabel('Value Scale:', self)
VS_box = QtGui.QHBoxLayout()
scaleVal = QtGui.QDoubleSpinBox(self)
scaleVal.setValue(1)
scaleVal.setSingleStep(0.1)
scaleVal.setRange(-10.0,10.0)
VS_box.addWidget(scaleVal)
VS_button = QtGui.QPushButton('ApplyVS', self)
VS_button.clicked.connect(lambda: self.pressVS_Button( scaleVal.value() ) )
VS_box.addWidget(VS_button)
fbox.addRow(label2Scale,VS_box)
###Value Offset###
label2Offset = QtGui.QLabel('Value Offset:', self)
VO_box = QtGui.QHBoxLayout()
offsetVal = QtGui.QDoubleSpinBox(self)
offsetVal.setValue(0)
offsetVal.setSingleStep(0.1)
offsetVal.setRange(-10.0,10.0)
VO_box.addWidget(offsetVal)
VO_button = QtGui.QPushButton('ApplyVO', self)
VO_button.clicked.connect(lambda: self.pressVO_Button( offsetVal.value() ) )
VO_box.addWidget(VO_button)
fbox.addRow(label2Offset,VO_box)
self.setLayout(fbox)
def pressPS_Button(self, scale):
posList = parm.evalAsRamp().keys()
with hou.undos.group("position scale"):
for i in range(0, len(posList)):
posPath = parmPath + str(i+1) + "pos"
value = posList[i] * scale
hou.parm(posPath).set(value)
def pressPO_Button(self, offset):
posList = parm.evalAsRamp().keys()
with hou.undos.group("position offset"):
for i in range(0, len(posList)):
posPath = parmPath + str(i+1) + "pos"
value = posList[i] + offset
hou.parm(posPath).set(value)
def pressVS_Button(self, scale):
posList = parm.evalAsRamp().values()
with hou.undos.group("position scale"):
for i in range(0, len(posList)):
posPath = parmPath + str(i+1) + "value"
value = posList[i] * scale
hou.parm(posPath).set(value)
def pressVO_Button(self, offset):
posList = parm.evalAsRamp().values()
with hou.undos.group("position offset"):
for i in range(0, len(posList)):
posPath = parmPath + str(i+1) + "value"
value = posList[i] + offset
hou.parm(posPath).set(value)
dialog = Example()
dialog.show()