def testMasterConnectionTracksChildConnections(self): c = Gaffer.CompoundPlug("c") c["f1"] = Gaffer.FloatPlug() c["f2"] = Gaffer.FloatPlug() n = Gaffer.Node() n["c"] = c c2 = Gaffer.CompoundPlug("c") c2["f1"] = Gaffer.FloatPlug() c2["f2"] = Gaffer.FloatPlug() n2 = Gaffer.Node() n2["c"] = c2 n2["c"]["f1"].setInput(n["c"]["f1"]) n2["c"]["f2"].setInput(n["c"]["f2"]) self.failUnless(n2["c"].getInput().isSame(n["c"])) n2["c"]["f2"].setInput(None) self.failUnless(n2["c"].getInput() is None) n2["c"]["f2"].setInput(n["c"]["f2"]) self.failUnless(n2["c"].getInput().isSame(n["c"])) c["f3"] = Gaffer.FloatPlug() c2["f3"] = Gaffer.FloatPlug() self.failUnless(n2["c"].getInput() is None) n2["c"]["f3"].setInput(n["c"]["f3"]) self.failUnless(n2["c"].getInput().isSame(n["c"]))
def testPlugFlagsOnReload( self ): s = Gaffer.ScriptNode() s["b"] = Gaffer.Box() s["b"]["s"] = GafferTest.SphereNode() s["b"]["a"] = GafferTest.AddNode() s["b"].exportForReference( self.temporaryDirectory() + "/test.grf" ) # import it into a script. s2 = Gaffer.ScriptNode() s2["r"] = Gaffer.Reference() s2["r"].load( self.temporaryDirectory() + "/test.grf" ) s2["r"]["__pluggy"] = Gaffer.CompoundPlug( flags = Gaffer.Plug.Flags.Dynamic | Gaffer.Plug.Flags.Default ) s2["r"]["__pluggy"]["int"] = Gaffer.IntPlug( flags = Gaffer.Plug.Flags.Dynamic | Gaffer.Plug.Flags.Default ) s2["r"]["__pluggy"]["compound"] = Gaffer.CompoundPlug( flags = Gaffer.Plug.Flags.Dynamic | Gaffer.Plug.Flags.Default ) s2["r"]["__pluggy"]["compound"]["int"] = Gaffer.IntPlug( flags = Gaffer.Plug.Flags.Dynamic | Gaffer.Plug.Flags.Default ) self.assertEqual( s2["r"]["__pluggy"].getFlags(), Gaffer.Plug.Flags.Dynamic | Gaffer.Plug.Flags.Default ) self.assertEqual( s2["r"]["__pluggy"]["int"].getFlags(), Gaffer.Plug.Flags.Dynamic | Gaffer.Plug.Flags.Default ) self.assertEqual( s2["r"]["__pluggy"]["compound"].getFlags(), Gaffer.Plug.Flags.Dynamic | Gaffer.Plug.Flags.Default ) self.assertEqual( s2["r"]["__pluggy"]["compound"]["int"].getFlags(), Gaffer.Plug.Flags.Dynamic | Gaffer.Plug.Flags.Default ) s2["r"].load( self.temporaryDirectory() + "/test.grf" ) self.assertEqual( s2["r"]["__pluggy"].getFlags(), Gaffer.Plug.Flags.Dynamic | Gaffer.Plug.Flags.Default ) self.assertEqual( s2["r"]["__pluggy"]["int"].getFlags(), Gaffer.Plug.Flags.Dynamic | Gaffer.Plug.Flags.Default ) self.assertEqual( s2["r"]["__pluggy"]["compound"].getFlags(), Gaffer.Plug.Flags.Dynamic | Gaffer.Plug.Flags.Default ) self.assertEqual( s2["r"]["__pluggy"]["compound"]["int"].getFlags(), Gaffer.Plug.Flags.Dynamic | Gaffer.Plug.Flags.Default )
def testConnectionsForNestedPlugs(self): script = Gaffer.ScriptNode() script["n"] = NestedPlugTestNode() script["n"]["c"] = Gaffer.CompoundPlug() script["n"]["c"]["i"] = Gaffer.IntPlug() script["n2"] = NestedPlugTestNode() script["n2"]["c"] = Gaffer.CompoundPlug( direction=Gaffer.Plug.Direction.Out) script["n2"]["c"]["o"] = Gaffer.IntPlug( direction=Gaffer.Plug.Direction.Out) script["n"]["c"]["i"].setInput(script["n2"]["c"]["o"]) s = Gaffer.StandardSet(script.children()) g = GafferUI.GraphGadget(script, s) c = g.connectionGadget(script["n"]["c"]["i"]) self.failUnless(c) self.failUnless(c.srcNodule().plug().isSame(script["n2"]["c"]["o"])) self.failUnless(c.dstNodule().plug().isSame(script["n"]["c"]["i"])) s.remove(script["n2"]) self.failUnless(g.nodeGadget(script["n2"]) is None) c = g.connectionGadget(script["n"]["c"]["i"]) self.failUnless(c) self.failUnless(c.srcNodule() is None) self.failUnless(c.dstNodule().plug().isSame(script["n"]["c"]["i"])) s.add(script["n2"]) self.failUnless(g.nodeGadget(script["n2"])) c = g.connectionGadget(script["n"]["c"]["i"]) self.failUnless(c) self.failUnless(c.srcNodule().plug().isSame(script["n2"]["c"]["o"])) self.failUnless(c.dstNodule().plug().isSame(script["n"]["c"]["i"])) s.remove(script["n"]) self.failUnless(g.nodeGadget(script["n"]) is None) self.failUnless(g.connectionGadget(script["n"]["c"]["i"]) is None) s.add(script["n"]) self.failUnless(g.nodeGadget(script["n"])) c = g.connectionGadget(script["n"]["c"]["i"]) self.failUnless(c) self.failUnless(c.srcNodule().plug().isSame(script["n2"]["c"]["o"])) self.failUnless(c.dstNodule().plug().isSame(script["n"]["c"]["i"]))
def testSetInputWithoutParent(self): c1 = Gaffer.CompoundPlug(direction=Gaffer.Plug.Direction.Out) c1["n"] = Gaffer.IntPlug(direction=Gaffer.Plug.Direction.Out) c2 = Gaffer.CompoundPlug() c2["n"] = Gaffer.IntPlug() c2.setInput(c1) self.assertEqual(c2.getInput(), c1)
def __init__(self, name="DeeplyNestedNode"): Gaffer.Node.__init__(self, name) self["c1"] = Gaffer.CompoundPlug() self["c1"]["i1"] = Gaffer.IntPlug() self["c1"]["c2"] = Gaffer.CompoundPlug() self["c1"]["c2"]["i2"] = Gaffer.IntPlug() self["c1"]["c2"]["c3"] = Gaffer.CompoundPlug() self["c1"]["c2"]["c3"]["i3"] = Gaffer.IntPlug()
def testAcceptsInput(self): i = Gaffer.CompoundPlug() o = Gaffer.CompoundPlug(direction=Gaffer.Plug.Direction.Out) s = Gaffer.StringPlug(direction=Gaffer.Plug.Direction.Out) i.addChild(Gaffer.IntPlug()) o.addChild(Gaffer.IntPlug(direction=Gaffer.Plug.Direction.Out)) self.failUnless(i.acceptsInput(o)) self.failIf(i.acceptsInput(s))
def __init__( self, name = "FanTest" ) : Gaffer.DependencyNode.__init__( self, name ) self["in"] = Gaffer.CompoundPlug() self["out"] = Gaffer.CompoundPlug( direction = Gaffer.Plug.Direction.Out ) for i in range( 0, 10 ) : self["in"].addChild( Gaffer.IntPlug( "i%d" % i ) ) self["out"].addChild( Gaffer.IntPlug( "o%d" % i, direction = Gaffer.Plug.Direction.Out ) )
def testChildAdditionEmitsPlugSet(self): n = Gaffer.Node() n["c"] = Gaffer.CompoundPlug() n["c"]["d"] = Gaffer.CompoundPlug() cs = GafferTest.CapturingSlot(n.plugSetSignal()) n["c"]["d"]["e"] = Gaffer.IntPlug() self.assertEqual(len(cs), 2) self.assertEqual(cs[0][0], n["c"]["d"]) self.assertEqual(cs[1][0], n["c"])
def testCanMakeSomeConnectionsWhenSizesDontMatch(self): n = Gaffer.Node() n["c1"] = Gaffer.CompoundPlug(direction=Gaffer.Plug.Direction.In) n["c1"]["i"] = Gaffer.IntPlug() n["c2"] = Gaffer.CompoundPlug(direction=Gaffer.Plug.Direction.Out) n["c2"]["i1"] = Gaffer.IntPlug(direction=Gaffer.Plug.Direction.Out) n["c2"]["i2"] = Gaffer.IntPlug(direction=Gaffer.Plug.Direction.Out) n["c1"]["i"].setInput(n["c2"]["i1"]) self.failUnless(n["c1"]["i"].getInput().isSame(n["c2"]["i1"])) self.failUnless(n["c1"].getInput().isSame(n["c2"]))
def testRemovePlugRemovesInputs(self): s = Gaffer.ScriptNode() s["n1"] = Gaffer.Node() s["n2"] = Gaffer.Node() s["n1"]["o"] = Gaffer.IntPlug(direction=Gaffer.Plug.Direction.Out) s["n2"]["i"] = Gaffer.IntPlug() s["n2"]["c"] = Gaffer.CompoundPlug() s["n2"]["c"]["i"] = Gaffer.IntPlug() s["n2"]["i"].setInput(s["n1"]["o"]) s["n2"]["c"]["i"].setInput(s["n1"]["o"]) self.failUnless(s["n2"]["i"].getInput().isSame(s["n1"]["o"])) self.failUnless(s["n2"]["c"]["i"].getInput().isSame(s["n1"]["o"])) self.assertEqual(len(s["n1"]["o"].outputs()), 2) with Gaffer.UndoContext(s): del s["n2"]["i"] del s["n2"]["c"]["i"] self.assertEqual(len(s["n1"]["o"].outputs()), 0) s.undo() self.failUnless(s["n2"]["i"].getInput().isSame(s["n1"]["o"])) self.failUnless(s["n2"]["c"]["i"].getInput().isSame(s["n1"]["o"])) self.assertEqual(len(s["n1"]["o"].outputs()), 2)
def __init__(self): Gaffer.Node.__init__(self) self.addChild(Gaffer.IntPlug("i")) self.addChild(Gaffer.CompoundPlug("c"))
def testRunTimeTyped(self): p = Gaffer.CompoundPlug("hello") self.failUnless(p.isInstanceOf(Gaffer.CompoundPlug.staticTypeId())) self.assertEqual(IECore.RunTimeTyped.baseTypeId(p.typeId()), Gaffer.ValuePlug.staticTypeId())
def testNonValuePlugChildren(self): c = Gaffer.CompoundPlug() p = Gaffer.Plug() self.assertTrue(c.acceptsChild(p)) c["p"] = p self.assertTrue(p.parent().isSame(c))
def testContructor(self): p = Gaffer.CompoundPlug() self.assertEqual(p.getName(), "CompoundPlug") self.assertEqual(p.direction(), Gaffer.Plug.Direction.In) p = Gaffer.V3fPlug(name="b", direction=Gaffer.Plug.Direction.Out) self.assertEqual(p.getName(), "b") self.assertEqual(p.direction(), Gaffer.Plug.Direction.Out)
def __init__( self, name="CompoundIn" ) : Gaffer.DependencyNode.__init__( self, name ) self["in"] = Gaffer.CompoundPlug() self["in"]["one"] = Gaffer.IntPlug() self["in"]["two"] = Gaffer.IntPlug() self["out"] = Gaffer.IntPlug( direction = Gaffer.Plug.Direction.Out )
def testPreferences( self ) : class testApp( Gaffer.Application ) : def __init__( self ) : Gaffer.Application.__init__( self ) application = testApp() applicationRoot = application.root() p = applicationRoot["preferences"] self.failUnless( isinstance( p, Gaffer.Preferences ) ) p["category1"] = Gaffer.CompoundPlug() p["category1"]["i"] = Gaffer.IntPlug( defaultValue = 2 ) p["category2"] = Gaffer.CompoundPlug() p["category2"]["s"] = Gaffer.StringPlug( defaultValue = "apples" ) p["category2"]["v"] = Gaffer.V3fPlug( defaultValue = IECore.V3f( 1, 0, 0 ) ) p["category1"]["i"].setValue( 10 ) p["category2"]["s"].setValue( "oranges" ) p["category2"]["v"].setValue( IECore.V3f( 2, 3, 4 ) ) self.failIf( os.path.exists( self.__defaultPreferencesFile ) ) applicationRoot.savePreferences() self.failUnless( os.path.exists( self.__defaultPreferencesFile ) ) self.failIf( os.path.exists( self.__preferencesFile ) ) applicationRoot.savePreferences( self.__preferencesFile ) self.failUnless( os.path.exists( self.__preferencesFile ) ) p["category1"]["i"].setValue( 1 ) p["category2"]["s"].setValue( "beef" ) p["category2"]["v"].setValue( IECore.V3f( -10 ) ) executionContext = { "application" : application } execfile( self.__preferencesFile, executionContext, executionContext ) self.assertEqual( p["category1"]["i"].getValue(), 10 ) self.assertEqual( p["category2"]["s"].getValue(), "oranges" ) self.assertEqual( p["category2"]["v"].getValue(), IECore.V3f( 2, 3, 4 ) )
def __init__( self, name="CompoundOut" ) : Gaffer.DependencyNode.__init__( self, name ) self["in"] = Gaffer.IntPlug() self["out"] = Gaffer.CompoundPlug( direction = Gaffer.Plug.Direction.Out ) self["out"]["one"] = Gaffer.IntPlug( direction = Gaffer.Plug.Direction.Out ) self["out"]["two"] = Gaffer.IntPlug( direction = Gaffer.Plug.Direction.Out ) self["behaveBadly"] = Gaffer.BoolPlug( defaultValue = False )
def __init__(self, name="SLONode", inputs={}, dynamicPlugs=()): Gaffer.Node.__init__(self, name) self.addChild(Gaffer.StringPlug("name")) self.addChild(Gaffer.StringPlug("type")) self.addChild(Gaffer.CompoundPlug("parameters")) self.addChild( Gaffer.ObjectPlug("out", direction=Gaffer.Plug.Direction.Out)) self._init(inputs, dynamicPlugs)
def _doSetupPlugs( self, parentPlug ) : if "local" not in parentPlug : localPlug = Gaffer.CompoundPlug( "local" ) parentPlug.addChild( localPlug ) parentPlug["local"].clearChildren() foregroundPlug = Gaffer.BoolPlug( "executeInForeground", defaultValue = False ) parentPlug["local"].addChild( foregroundPlug )
def testSetInputShortcut(self): n1 = Gaffer.Node() n1["c"] = Gaffer.CompoundPlug() n2 = Gaffer.Node() n2["c"] = Gaffer.CompoundPlug(direction=Gaffer.Plug.Direction.Out) cs = GafferTest.CapturingSlot(n1.plugInputChangedSignal()) self.assertEqual(len(cs), 0) n1["c"].setInput(n2["c"]) # we should get a signal the first time self.assertEqual(len(cs), 1) n1["c"].setInput(n2["c"]) # but the second time there should be no signal, # because it was the same. self.assertEqual(len(cs), 1)
def __init__(self, name="CompoundPlugNode"): Gaffer.DependencyNode.__init__(self, name) p = Gaffer.CompoundPlug(name="p") c1 = Gaffer.FloatPlug(name="f") c2 = Gaffer.StringPlug(name="s") p.addChild(c1) p.addChild(c2) self.addChild(p) po = Gaffer.CompoundPlug(name="o", direction=Gaffer.Plug.Direction.Out) co1 = Gaffer.FloatPlug(name="f", direction=Gaffer.Plug.Direction.Out) co2 = Gaffer.StringPlug(name="s", direction=Gaffer.Plug.Direction.Out) po.addChild(co1) po.addChild(co2) self.addChild(po) # for CompoundPlugTest.testSerialisationOfDynamicPlugsOnNondynamicParent(). self.addChild(Gaffer.CompoundPlug(name="nonDynamicParent"))
def testInputChangedCrash(self): ca = Gaffer.CompoundPlug("ca") ca["fa1"] = Gaffer.FloatPlug() ca["fa2"] = Gaffer.FloatPlug() na = Gaffer.Node() na["ca"] = ca cb = Gaffer.CompoundPlug("cb") cb["fb1"] = Gaffer.FloatPlug() cb["fb2"] = Gaffer.FloatPlug() nb = Gaffer.Node() nb["cb"] = cb nb["cb"]["fb1"].setInput(na["ca"]["fa1"]) del ca, na, cb, nb while gc.collect(): pass IECore.RefCounted.collectGarbage()
def testAdditionalChildrenRejected(self): p = Gaffer.CompoundDataPlug() self.assertRaises(RuntimeError, p.addChild, Gaffer.IntPlug()) self.assertRaises(RuntimeError, p.addChild, Gaffer.CompoundPlug()) m = p.addMember("a", IECore.IntData(10)) self.assertRaises(RuntimeError, m.addChild, Gaffer.IntPlug()) self.assertRaises(RuntimeError, m.addChild, Gaffer.StringPlug("name")) self.assertRaises(RuntimeError, m.addChild, Gaffer.IntPlug("name")) self.assertRaises(RuntimeError, m.addChild, Gaffer.IntPlug("value"))
def testMultipleLevelsOfPlugSetPropagation(self): c = Gaffer.CompoundPlug("c") c["c1"] = Gaffer.CompoundPlug() c["c1"]["f1"] = Gaffer.FloatPlug() n = Gaffer.Node() n["c"] = c def setCallback(plug): self.setPlugs.append(plug.getName()) cn = n.plugSetSignal().connect(setCallback) self.setPlugs = [] c["c1"]["f1"].setValue(10) self.failUnless(len(self.setPlugs) == 3) self.assertEqual(self.setPlugs, ["f1", "c1", "c"])
def __init__( self, name="Test", inputs={}, dynamicPlugs=() ) : Gaffer.Node.__init__( self, name ) p = Gaffer.CompoundPlug( name = "p" ) c1 = Gaffer.FloatPlug( name = "f" ) c2 = Gaffer.StringPlug( name = "s" ) p.addChild( c1 ) p.addChild( c2 ) self.addChild( p ) self._init( inputs, dynamicPlugs )
def testMultipleLevelsOfPlugSetPropagationWithDifferentParentingOrder( self ) : n = Gaffer.Node() n["c"] = Gaffer.CompoundPlug() n["c"]["c1"] = Gaffer.CompoundPlug() n["c"]["c1"]["f1"] = Gaffer.FloatPlug() def setCallback( plug ) : self.setPlugs.append( plug.getName() ) cn = n.plugSetSignal().connect( setCallback ) self.setPlugs = [] n["c"]["c1"]["f1"].setValue( 10 ) self.failUnless( len( self.setPlugs )==3 ) self.failUnless( "c" in self.setPlugs ) self.failUnless( "c1" in self.setPlugs ) self.failUnless( "f1" in self.setPlugs )
def testCreateCounterpart(self): c = Gaffer.CompoundPlug("a", Gaffer.Plug.Direction.Out) c["b"] = Gaffer.IntPlug(direction=Gaffer.Plug.Direction.Out) c["c"] = Gaffer.IntPlug(direction=Gaffer.Plug.Direction.Out) c2 = c.createCounterpart("aa", Gaffer.Plug.Direction.In) self.assertEqual(c2.getName(), "aa") self.assertEqual(c2.direction(), Gaffer.Plug.Direction.In) self.assertEqual(c2["b"].direction(), Gaffer.Plug.Direction.In) self.assertEqual(c2["c"].direction(), Gaffer.Plug.Direction.In)
def testDynamicSerialisation( self ) : s = Gaffer.ScriptNode() s["n1"] = Gaffer.Node() s["n1"]["p"] = Gaffer.CompoundPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) s["n1"]["p"]["f"] = Gaffer.FloatPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) s["n1"]["p"]["f"].setValue( 10 ) ss = s.serialise() s = Gaffer.ScriptNode() s.execute( ss ) self.assertEqual( s["n1"]["p"]["f"].getValue(), 10 )
def __init__( self, name="ObjectWriter" ) : GafferDispatch.TaskNode.__init__( self, name ) inPlug = Gaffer.ObjectPlug( "in", Gaffer.Plug.Direction.In, IECore.NullObject.defaultNullObject() ) self.addChild( inPlug ) fileNamePlug = Gaffer.StringPlug( "fileName", Gaffer.Plug.Direction.In ) self.addChild( fileNamePlug ) self.addChild( Gaffer.CompoundPlug( "parameters" ) ) self.__writer = None self.__writerExtension = "" self.__exposedParameters = IECore.CompoundParameter() self.__parameterHandler = GafferCortex.CompoundParameterHandler( self.__exposedParameters ) self.__parameterHandler.setupPlug( self ) self.__plugSetConnection = self.plugSetSignal().connect( Gaffer.WeakMethod( self.__plugSet ) )
def testPlugValueWidgetAccess(self): n = Gaffer.Node() n["c"] = Gaffer.CompoundPlug() n["c"]["i"] = Gaffer.IntPlug() n["c"]["s"] = Gaffer.StringPlug() u = GafferUI.StandardNodeUI(n) self.assertTrue( isinstance(u.plugValueWidget(n["c"]), GafferUI.PlugValueWidget)) self.assertTrue(u.plugValueWidget(n["c"]).getPlug().isSame(n["c"])) self.assertEqual(u.plugValueWidget(n["c"]["i"]), None) self.assertTrue( isinstance(u.plugValueWidget(n["c"]["i"], lazy=False), GafferUI.PlugValueWidget)) self.assertTrue( u.plugValueWidget(n["c"]["i"]).getPlug().isSame(n["c"]["i"]))