def testParameterInvalidWhenParameterChangedRaises(self): class InvalidValueRaiser(IECore.Parameterised): def __init__(self): IECore.Parameterised.__init__(self, "") self.parameters().addParameters([ IECore.IntParameter( name="driver", description="", defaultValue=0, ), ], ) self.changes = [] def parameterChanged(self, parameter): # this puts the parameter in a state where its value # is not valid. parameter.setValue(IECore.StringData("oh dear")) # then when we raise here, a further exception will # occur when the invalid parameter value is discovered # during the application of parameter changes to the plugs. raise RuntimeError("Ooops!") c = InvalidValueRaiser() ph = Gaffer.ParameterisedHolderNode() ph.setParameterised(c) self.assertRaises(RuntimeError, ph["parameters"]["driver"].setValue, 1)
def testClassParameterSerialisation(self): s = Gaffer.ScriptNode() s["ph"] = Gaffer.ParameterisedHolderNode() s["ph"].setParameterised("classParameter", 1, "GAFFERTEST_CLASS_PATHS") p = s["ph"].getParameterised()[0] classSpec = self.classSpecification("files/sequenceLs", "IECORE_OP_PATHS") with s["ph"].parameterModificationContext(): p["class"].setClass(*classSpec) classPlugNames = s["ph"]["parameters"]["class"].keys() for k in p["class"].keys(): self.failUnless(k in classPlugNames) s["ph"]["parameters"]["class"]["recurse"].setValue(True) ss = s.serialise() s2 = Gaffer.ScriptNode() s2.execute(ss) self.assertEqual(s2["ph"]["parameters"]["class"].keys(), classPlugNames) p2 = s2["ph"].getParameterised()[0] self.assertEqual(p2["class"].getClass(True)[1:], classSpec) s2["ph"].parameterHandler().setParameterValue() self.assertEqual(p2["class"]["recurse"].getTypedValue(), True)
def testDateTimeParameter( self ) : p = IECore.Parameterised( "" ) now = datetime.datetime.now() p.parameters().addParameters( [ IECore.DateTimeParameter( "dt", "", now ) ] ) ph = Gaffer.ParameterisedHolderNode() ph.setParameterised( p ) self.failUnless( isinstance( ph["parameters"]["dt"], Gaffer.StringPlug ) ) ph.parameterHandler().setParameterValue() self.assertEqual( p["dt"].getValue(), IECore.DateTimeData( now ) ) tomorrow = now + datetime.timedelta( days=1 ) p["dt"].setValue( IECore.DateTimeData( tomorrow ) ) ph.parameterHandler().setPlugValue() ph.parameterHandler().setParameterValue() self.assertEqual( p["dt"].getValue(), IECore.DateTimeData( tomorrow ) )
def testRunTimeTyped( self ) : n = Gaffer.ParameterisedHolderNode() self.assertEqual( n.typeName(), "Gaffer::ParameterisedHolderNode" ) self.assertEqual( IECore.RunTimeTyped.typeNameFromTypeId( n.typeId() ), "Gaffer::ParameterisedHolderNode" ) self.assertEqual( IECore.RunTimeTyped.baseTypeId( n.typeId() ), Gaffer.Node.staticTypeId() )
def testClassVectorParameter(self): ph = Gaffer.ParameterisedHolderNode() ph.setParameterised("classVectorParameter", 1, "GAFFERTEST_CLASS_PATHS") p = ph.getParameterised()[0] seqLsClassSpec = self.classSpecification("files/sequenceLs", "IECORE_OP_PATHS")[:2] gradeClassSpec = self.classSpecification("image/grade", "IECORE_OP_PATHS")[:2] classes = [ ("p0", ) + seqLsClassSpec, ("p1", ) + gradeClassSpec, ] with ph.parameterModificationContext(): p["classes"].setClasses(classes) seqLsParameterNames = p["classes"]["p0"].keys() for n in seqLsParameterNames: self.failUnless(n in ph["parameters"]["classes"]["p0"]) gradeParameterNames = p["classes"]["p1"].keys() for n in gradeParameterNames: self.failUnless(n in ph["parameters"]["classes"]["p1"]) with ph.parameterModificationContext(): p["classes"].setClasses([]) for k in ph["parameters"]["classes"].keys(): self.failUnless(k.startswith("__"))
def testParameterChangingType( self ) : p = IECore.Parameterised( "" ) p.parameters().addParameter( IECore.IntParameter( "a", "", 1 ) ) ph = Gaffer.ParameterisedHolderNode() ph.setParameterised( p ) self.failUnless( isinstance( ph["parameters"], Gaffer.CompoundPlug ) ) self.failUnless( isinstance( ph["parameters"]["a"], Gaffer.IntPlug ) ) self.assertEqual( len( ph["parameters"] ), 1 ) with ph.parameterModificationContext() : p.parameters().removeParameter( p.parameters()["a"] ) p.parameters().addParameter( IECore.FloatParameter( "a", "", 2 ) ) self.failUnless( isinstance( ph["parameters"], Gaffer.CompoundPlug ) ) self.failUnless( isinstance( ph["parameters"]["a"], Gaffer.FloatPlug ) ) self.assertEqual( len( ph["parameters"] ), 1 )
def testClassVectorParameterMaintainsPlugValues(self): ph = Gaffer.ParameterisedHolderNode() ph.setParameterised("classVectorParameter", 1, "GAFFERTEST_CLASS_PATHS") p = ph.getParameterised()[0] seqLsClassSpec = self.classSpecification("files/sequenceLs", "IECORE_OP_PATHS")[:2] gradeClassSpec = self.classSpecification("image/grade", "IECORE_OP_PATHS")[:2] classes = [ ("p0", ) + gradeClassSpec, ] with ph.parameterModificationContext(): p["classes"].setClasses(classes) ph["parameters"]["classes"]["p0"]["multiply"].setValue( IECore.Color3f(0.5, 0.25, 0.125)) ph.setParameterisedValues() classes.append(("p1", ) + seqLsClassSpec) with ph.parameterModificationContext(): p["classes"].setClasses(classes) self.assertEqual( ph["parameters"]["classes"]["p0"]["multiply"].getValue(), IECore.Color3f(0.5, 0.25, 0.125))
def testCompoundNumericTypes( self ) : p = IECore.Parameterised( "" ) p.parameters().addParameters( [ IECore.V2iParameter( "v2i", "", IECore.V2i( 1, 2 ) ), IECore.V3fParameter( "v3f", "", IECore.V3f( 1, 2, 3 ) ), IECore.Color4fParameter( "color4f", "", IECore.Color4f( 0.25, 0.5, 0.75, 1 ) ), ] ) ph = Gaffer.ParameterisedHolderNode() ph.setParameterised( p ) self.assertEqual( ph["parameters"]["v2i"].defaultValue(), IECore.V2i( 1, 2 ) ) self.assertEqual( ph["parameters"]["v3f"].defaultValue(), IECore.V3f( 1, 2, 3 ) ) self.assertEqual( ph["parameters"]["color4f"].defaultValue(), IECore.Color4f( 0.25, 0.5, 0.75, 1 ) ) self.assertEqual( ph["parameters"]["v2i"].getValue(), IECore.V2i( 1, 2 ) ) self.assertEqual( ph["parameters"]["v3f"].getValue(), IECore.V3f( 1, 2, 3 ) ) self.assertEqual( ph["parameters"]["color4f"].getValue(), IECore.Color4f( 0.25, 0.5, 0.75, 1 ) ) ph["parameters"]["v2i"].setValue( IECore.V2i( 2, 3 ) ) ph["parameters"]["v3f"].setValue( IECore.V3f( 4, 5, 6 ) ) ph["parameters"]["color4f"].setValue( IECore.Color4f( 0.1, 0.2, 0.3, 0.5 ) ) ph.setParameterisedValues() self.assertEqual( p["v2i"].getTypedValue(), IECore.V2i( 2, 3 ) ) self.assertEqual( p["v3f"].getTypedValue(), IECore.V3f( 4, 5, 6 ) ) self.assertEqual( p["color4f"].getTypedValue(), IECore.Color4f( 0.1, 0.2, 0.3, 0.5 ) )
def testClassVectorParameterSerialisation(self): s = Gaffer.ScriptNode() s["ph"] = Gaffer.ParameterisedHolderNode() s["ph"].setParameterised("classVectorParameter", 1, "GAFFERTEST_CLASS_PATHS") p = s["ph"].getParameterised()[0] gradeClassSpec = self.classSpecification("image/grade", "IECORE_OP_PATHS")[:2] classes = [ ("p0", ) + gradeClassSpec, ] with s["ph"].parameterModificationContext(): p["classes"].setClasses(classes) s["ph"]["parameters"]["classes"]["p0"]["multiply"].setValue( IECore.Color3f(0.5, 0.25, 0.125)) ss = s.serialise() s2 = Gaffer.ScriptNode() s2.execute(ss) self.assertEqual( s2["ph"]["parameters"]["classes"]["p0"]["multiply"].getValue(), IECore.Color3f(0.5, 0.25, 0.125))
def testVectorTypedParameter( self ) : p = IECore.Parameterised( "" ) p.parameters().addParameters( [ IECore.BoolVectorParameter( "bv", "", IECore.BoolVectorData() ), IECore.IntVectorParameter( "iv", "", IECore.IntVectorData() ), IECore.FloatVectorParameter( "fv", "", IECore.FloatVectorData() ), IECore.StringVectorParameter( "sv", "", IECore.StringVectorData() ), IECore.V3fVectorParameter( "vv", "", IECore.V3fVectorData() ), ] ) ph = Gaffer.ParameterisedHolderNode() ph.setParameterised( p ) self.assertEqual( ph["parameters"]["bv"].defaultValue(), IECore.BoolVectorData() ) self.assertEqual( ph["parameters"]["iv"].defaultValue(), IECore.IntVectorData() ) self.assertEqual( ph["parameters"]["fv"].defaultValue(), IECore.FloatVectorData() ) self.assertEqual( ph["parameters"]["sv"].defaultValue(), IECore.StringVectorData() ) self.assertEqual( ph["parameters"]["vv"].defaultValue(), IECore.V3fVectorData() ) self.assertEqual( ph["parameters"]["bv"].getValue(), IECore.BoolVectorData() ) self.assertEqual( ph["parameters"]["iv"].getValue(), IECore.IntVectorData() ) self.assertEqual( ph["parameters"]["fv"].getValue(), IECore.FloatVectorData() ) self.assertEqual( ph["parameters"]["sv"].getValue(), IECore.StringVectorData() ) self.assertEqual( ph["parameters"]["vv"].getValue(), IECore.V3fVectorData() ) with ph.parameterModificationContext() as parameters : parameters["bv"].setValue( IECore.BoolVectorData( [ True, False ] ) ) parameters["iv"].setValue( IECore.IntVectorData( [ 1, 2, 3 ] ) ) parameters["fv"].setValue( IECore.FloatVectorData( [ 1 ] ) ) parameters["sv"].setValue( IECore.StringVectorData( [ "a" ] ) ) parameters["vv"].setValue( IECore.V3fVectorData( [ IECore.V3f( 1, 2, 3 ) ] ) ) self.assertEqual( ph["parameters"]["bv"].getValue(), IECore.BoolVectorData( [ True, False ] ) ) self.assertEqual( ph["parameters"]["iv"].getValue(), IECore.IntVectorData( [ 1, 2, 3 ] ) ) self.assertEqual( ph["parameters"]["fv"].getValue(), IECore.FloatVectorData( [ 1 ] ) ) self.assertEqual( ph["parameters"]["sv"].getValue(), IECore.StringVectorData( [ "a" ] ) ) self.assertEqual( ph["parameters"]["vv"].getValue(), IECore.V3fVectorData( [ IECore.V3f( 1, 2, 3 ) ] ) ) ph["parameters"]["bv"].setValue( IECore.BoolVectorData( [ True, True ] ) ) ph["parameters"]["iv"].setValue( IECore.IntVectorData( [ 2, 3, 4 ] ) ) ph["parameters"]["fv"].setValue( IECore.FloatVectorData( [ 2 ] ) ) ph["parameters"]["sv"].setValue( IECore.StringVectorData( [ "b" ] ) ) ph["parameters"]["vv"].setValue( IECore.V3fVectorData( [ IECore.V3f( 10, 20, 30 ) ] ) ) ph.setParameterisedValues() self.assertEqual( parameters["bv"].getValue(), IECore.BoolVectorData( [ True, True ] ) ) self.assertEqual( parameters["iv"].getValue(), IECore.IntVectorData( [ 2, 3, 4 ] ) ) self.assertEqual( parameters["fv"].getValue(), IECore.FloatVectorData( [ 2 ] ) ) self.assertEqual( parameters["sv"].getValue(), IECore.StringVectorData( [ "b" ] ) ) self.assertEqual( parameters["vv"].getValue(), IECore.V3fVectorData( [ IECore.V3f( 10, 20, 30 ) ] ) )
def testSetParameterisedWithoutClassLoader(self): n = Gaffer.ParameterisedHolderNode() op = IECore.SequenceRenumberOp() n.setParameterised(op) self.assertEqual(n.getParameterised(), (op, "", -1, ""))
def testReadOnly(self): p = IECore.Parameterised("") p.parameters().addParameters([IECore.IntParameter( "i", "", 1, )]) ph = Gaffer.ParameterisedHolderNode() ph.setParameterised(p) self.failUnless("parameters" in ph) self.failUnless("i" in ph["parameters"]) self.assertEqual(ph["parameters"]["i"].getValue(), 1) self.assertEqual( ph["parameters"]["i"].getFlags(Gaffer.Plug.Flags.ReadOnly), False) with ph.parameterModificationContext(): p.parameters()["i"].userData()["gaffer"] = IECore.CompoundObject({ "readOnly": IECore.BoolData(True), }) p.parameters()["i"].setNumericValue(2) self.assertEqual( ph["parameters"]["i"].getFlags(Gaffer.Plug.Flags.ReadOnly), True) # the plug was made read only, so should not have accepted the new parameter value self.assertEqual(ph["parameters"]["i"].getValue(), 1)
def __init__( self, opInstance, title=None, sizeMode=GafferUI.Window.SizeMode.Manual, **kw ) : if title is None : title = IECore.CamelCase.toSpaced( opInstance.typeName() ) GafferUI.Dialogue.__init__( self, title, sizeMode=sizeMode, **kw ) self.__node = Gaffer.ParameterisedHolderNode() self.__node.setParameterised( opInstance ) frame = GafferUI.Frame() frame.setChild( GafferUI.NodeUI.create( self.__node ) ) self._setWidget( frame ) self.__cancelButton = self._addButton( "Cancel" ) self.__cancelButtonConnection = self.__cancelButton.clickedSignal().connect( Gaffer.WeakMethod( self.__buttonClicked ) ) executeLabel = "OK" with IECore.IgnoredExceptions( KeyError ) : executeLabel = opInstance.userData()["UI"]["buttonLabel"].value self.__executeButton = self._addButton( executeLabel ) self.__executeButtonConnection = self.__executeButton.clickedSignal().connect( Gaffer.WeakMethod( self.__buttonClicked ) ) self.__opExecutedSignal = Gaffer.Signal1()
def testExceptionInParameterChanged(self): class ParameterChangedRaiser(IECore.Parameterised): def __init__(self): IECore.Parameterised.__init__(self, "") self.parameters().addParameters([ IECore.IntParameter( name="driver", description="", ), ], ) self.changes = [] def parameterChanged(self, parameter): raise RuntimeError("Ooops!") c = ParameterChangedRaiser() ph = Gaffer.ParameterisedHolderNode() ph.setParameterised(c) self.assertRaises(RuntimeError, ph["parameters"]["driver"].setValue, 10)
def testParameterChangedCanChangeValues( self ) : class ParameterChanger( IECore.Parameterised ) : def __init__( self ) : IECore.Parameterised.__init__( self, "" ) self.parameters().addParameters( [ IECore.IntParameter( name = "driver", description = "", ), IECore.IntParameter( name = "driven", description = "", ), ], ) self.changes = [] def parameterChanged( self, parameter ) : self.changes.append( ( parameter, parameter.getNumericValue() ) ) if parameter.isSame( self.parameters()["driver"] ) : self.parameters()["driven"].setNumericValue( parameter.getNumericValue() * 2 ) c = ParameterChanger() ph = Gaffer.ParameterisedHolderNode() ph.setParameterised( c ) self.assertEqual( ph["parameters"]["driver"].getValue(), 0 ) self.assertEqual( ph["parameters"]["driven"].getValue(), 0 ) self.assertEqual( len( c.changes ), 0 ) ph["parameters"]["driver"].setValue( 10 ) self.assertEqual( ph["parameters"]["driver"].getValue(), 10 ) self.assertEqual( ph["parameters"]["driven"].getValue(), 20 ) self.assertEqual( len( c.changes ), 1 ) self.failUnless( c.changes[0][0].isSame( c["driver"] ) ) self.assertEqual( c.changes[0][1], 10 ) ph["parameters"]["driven"].setValue( 30 ) self.assertEqual( ph["parameters"]["driver"].getValue(), 10 ) self.assertEqual( ph["parameters"]["driven"].getValue(), 30 ) self.assertEqual( len( c.changes ), 2 ) self.failUnless( c.changes[1][0].isSame( c["driven"] ) ) self.assertEqual( c.changes[1][1], 30 )
def _deferredUpdate( self, op ) : self.__node = Gaffer.ParameterisedHolderNode() self.__node.setParameterised( op ) GafferCortexUI.ParameterPresets.autoLoad( self.__node ) self.__column[0] = GafferUI.NodeUI.create( self.__node )
def __init__(self, path): self.__column = GafferUI.ListContainer(borderWidth=8) GafferUI.DeferredPathPreview.__init__(self, self.__column, path) self._updateFromPath() self.__classLoader = IECore.ClassLoader.defaultOpLoader() self.__node = Gaffer.ParameterisedHolderNode() self.__op = self.__classLoader.load('admin/jobs/mkjob')() self.__node.setParameterised(self.__op) self.jobs = populateJobs()
def testClassLoading( self ) : ph = Gaffer.ParameterisedHolderNode() classSpec = self.classSpecification( "files/sequenceLs", "IECORE_OP_PATHS" ) ph.setParameterised( *classSpec ) p = ph.getParameterised() self.assertEqual( p[0].typeName(), "SequenceLsOp" ) self.assertEqual( p[1], "files/sequenceLs" ) self.assertEqual( p[2], classSpec[1] ) self.assertEqual( p[3], "IECORE_OP_PATHS" )
def _deferredUpdate(self, op): del self.__column[:] self.__node = Gaffer.ParameterisedHolderNode() self.__node.setParameterised(op) with self.__column: pipeImage(op) GafferUI.NodeUI.create(self.__node) button = GafferUI.Button("Execute") self.__executeClickedConnection = button.clickedSignal().connect( self.__executeClicked)
def testCreateWithNonDefaultValues( self ) : p = IECore.Parameterised( "" ) p.parameters().addParameter( IECore.IntParameter( "i1", "", 1, ) ) p["i1"].setNumericValue( 10 ) ph = Gaffer.ParameterisedHolderNode() ph.setParameterised( p ) self.assertEqual( ph["parameters"]["i1"].defaultValue(), 1 ) self.assertEqual( ph["parameters"]["i1"].getValue(), 10 )
def testParameterHandlerMethod( self ) : p = IECore.Parameterised( "" ) p.parameters().addParameter( IECore.IntParameter( "i1", "", 1, ) ) ph = Gaffer.ParameterisedHolderNode() ph.setParameterised( p ) h = ph.parameterHandler() self.failUnless( isinstance( h, Gaffer.CompoundParameterHandler ) ) self.failUnless( h.parameter().isSame( p.parameters() ) ) self.failUnless( h.plug().isSame( ph["parameters"] ) )
def testKeepExistingValues( self ) : ph = Gaffer.ParameterisedHolderNode() ph.setParameterised( IECore.Grade() ) ph["parameters"]["lift"].setValue( IECore.Color3f( 1, 0, 0 ) ) ph.setParameterised( IECore.Grade() ) self.assertEqual( ph["parameters"]["lift"].getValue(), IECore.Color3f( 0 ) ) ph["parameters"]["lift"].setValue( IECore.Color3f( 1, 0, 0 ) ) ph.setParameterised( IECore.Grade(), keepExistingValues=True ) self.assertEqual( ph["parameters"]["lift"].getValue(), IECore.Color3f( 1, 0, 0 ) )
def __pathSelected( self, pathListing ) : selectedPaths = pathListing.getSelectedPaths() if not len( selectedPaths ) : return op = selectedPaths[0].classLoader().load( str( selectedPaths[0] )[1:] )() node = Gaffer.ParameterisedHolderNode() node.setParameterised( op ) GafferUI.ParameterPresets.autoLoad( node ) opDialogue = GafferUI.OpDialogue( node, executeInBackground = True ) pathListing.ancestor( GafferUI.Window ).addChildWindow( opDialogue ) opDialogue.setVisible( True )
def testParameterChangedWithCompoundParameters( self ) : class ParameterChanger( IECore.Parameterised ) : def __init__( self ) : IECore.Parameterised.__init__( self, "" ) self.parameters().addParameters( [ IECore.IntParameter( name = "driver", description = "", ), IECore.CompoundParameter( name = "c", members = [ IECore.IntParameter( "i", "" ), IECore.StringParameter( "s", "", "" ), ] ), ], ) self.changes = [] # the mere existence of this function caused the problem this # test is checking is fixed. def parameterChanged( self, parameter ) : pass c = ParameterChanger() ph = Gaffer.ParameterisedHolderNode() ph.setParameterised( c ) self.failUnless( "parameters" in ph ) self.failUnless( "c" in ph["parameters"] ) self.failUnless( "i" in ph["parameters"]["c"] ) self.failUnless( "s" in ph["parameters"]["c"] )
def _deferredUpdateOPA( self, op ) : # del self.__column[:] self.__node = Gaffer.ParameterisedHolderNode() self.__node.setParameterised( op ) with GafferUI.ErrorDialogue.ExceptionHandler( parentWindow=self.ancestor( GafferUI.Window ) ) : with self._previewCollum : with GafferUI.ListContainer( borderWidth = 0, spacing = 0 ) as frame: opaClasses.pipeImage(op) self.__nodeUI = GafferUI.NodeUI.create( self.__node ) button = GafferUI.Button( "Publish" ) self.__executeClickedConnection = button.clickedSignal().connect( self.__executeClicked ) frame._qtWidget().setMaximumSize(100,400) frame._qtWidget().setMaximumSize(200,400) self._previewCollum._qtWidget().setMaximumSize(100,400) self._previewCollum._qtWidget().setMaximumSize(200,400)
def testBoxTypes(self): p = IECore.Parameterised("") p.parameters().addParameters([ IECore.Box3iParameter( "b", "", IECore.Box3i( IECore.V3i(-1, -2, -3), IECore.V3i(2, 1, 3), ), ) ]) ph = Gaffer.ParameterisedHolderNode() ph.setParameterised(p) self.failUnless(isinstance(ph["parameters"]["b"], Gaffer.CompoundPlug)) self.failUnless( isinstance(ph["parameters"]["b"]["min"], Gaffer.V3iPlug)) self.failUnless( isinstance(ph["parameters"]["b"]["max"], Gaffer.V3iPlug)) self.assertEqual(ph["parameters"]["b"]["min"].getValue(), IECore.V3i(-1, -2, -3)) self.assertEqual(ph["parameters"]["b"]["max"].getValue(), IECore.V3i(2, 1, 3)) ph["parameters"]["b"]["min"].setValue(IECore.V3i(-10, -20, -30)) ph["parameters"]["b"]["max"].setValue(IECore.V3i(10, 20, 30)) ph.parameterHandler().setParameterValue() self.assertEqual( p["b"].getTypedValue(), IECore.Box3i(IECore.V3i(-10, -20, -30), IECore.V3i(10, 20, 30))) with ph.parameterModificationContext(): p["b"].setTypedValue( IECore.Box3i(IECore.V3i(-2, -4, -6), IECore.V3i(2, 4, 6))) self.assertEqual(ph["parameters"]["b"]["min"].getValue(), IECore.V3i(-2, -4, -6)) self.assertEqual(ph["parameters"]["b"]["max"].getValue(), IECore.V3i(2, 4, 6))
def testParameterHandlerIsConstant(self): # We need the ParameterisedHolder to keep using the same ParameterHandler, # as otherwise the ui code would become much more complex, having to track # the addition and removal of different parameter handlers. p = IECore.Parameterised("") phn = Gaffer.ParameterisedHolderNode() phn.setParameterised(p) ph = phn.parameterHandler() with phn.parameterModificationContext(): p.parameters().addParameter(IECore.FloatParameter("a", "", 2)) self.failUnless(ph.isSame(phn.parameterHandler()))
def testClassParameter( self ) : ph = Gaffer.ParameterisedHolderNode() ph.setParameterised( "classParameter", 1, "GAFFERTEST_CLASS_PATHS" ) p = ph.getParameterised()[0] with ph.parameterModificationContext() : p["class"].setClass( *self.classSpecification( "files/sequenceLs", "IECORE_OP_PATHS" ) ) seqLsParameterNames = p["class"].keys() for n in seqLsParameterNames : self.failUnless( n in ph["parameters"]["class"] ) with ph.parameterModificationContext() : p["class"].setClass( "", 0 ) for n in seqLsParameterNames : self.failIf( n in ph["parameters"]["class"] )
def testSimplePlugTypes(self): n = Gaffer.ParameterisedHolderNode() op = IECore.SequenceRenumberOp() n.setParameterised(op) self.failUnless(isinstance(n["parameters"]["src"], Gaffer.StringPlug)) self.failUnless(isinstance(n["parameters"]["dst"], Gaffer.StringPlug)) self.failUnless(isinstance(n["parameters"]["multiply"], Gaffer.IntPlug)) self.failUnless(isinstance(n["parameters"]["offset"], Gaffer.IntPlug)) self.assertEqual(n["parameters"]["src"].defaultValue(), "") self.assertEqual(n["parameters"]["dst"].defaultValue(), "") self.assertEqual(n["parameters"]["multiply"].defaultValue(), 1) self.assertEqual(n["parameters"]["offset"].defaultValue(), 0) self.assertEqual(n["parameters"]["src"].getValue(), "") self.assertEqual(n["parameters"]["dst"].getValue(), "") self.assertEqual(n["parameters"]["multiply"].getValue(), 1) self.assertEqual(n["parameters"]["offset"].getValue(), 0) for k in op.parameters().keys(): self.assertEqual(n["parameters"][k].defaultValue(), op.parameters()[k].defaultValue.value) with n.parameterModificationContext() as parameters: parameters["multiply"].setNumericValue(10) parameters["dst"].setTypedValue("/tmp/s.####.exr") self.assertEqual(n["parameters"]["multiply"].getValue(), 10) self.assertEqual(n["parameters"]["dst"].getValue(), "/tmp/s.####.exr") n["parameters"]["multiply"].setValue(20) n["parameters"]["dst"].setValue("lalalal.##.tif") n.setParameterisedValues() self.assertEqual(op["multiply"].getNumericValue(), 20) self.assertEqual(op["dst"].getTypedValue(), "lalalal.##.tif")
def testSerialisation( self ) : ph = Gaffer.ParameterisedHolderNode() classSpec = self.classSpecification( "files/sequenceRenumber", "IECORE_OP_PATHS" ) ph.setParameterised( *classSpec ) s = Gaffer.ScriptNode() s["n"] = ph s["n"]["parameters"]["offset"].setValue( 21 ) ss = s.serialise() s = Gaffer.ScriptNode() s.execute( ss ) self.failUnless( "n" in s ) parameterised = s["n"].getParameterised() self.assertEqual( parameterised[1:], classSpec ) self.assertEqual( parameterised[0].typeName(), "SequenceRenumberOp" ) self.assertEqual( s["n"]["parameters"]["offset"].getValue(), 21 )