コード例 #1
0
    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"]))
コード例 #2
0
	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 )
コード例 #3
0
ファイル: GraphGadgetTest.py プロジェクト: stefanfeess/gaffer
    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"]))
コード例 #4
0
ファイル: ValuePlugTest.py プロジェクト: yarwelp/gaffer
    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)
コード例 #5
0
            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()
コード例 #6
0
    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))
コード例 #7
0
			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 ) )
コード例 #8
0
    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"])
コード例 #9
0
    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"]))
コード例 #10
0
    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)
コード例 #11
0
ファイル: NoduleTest.py プロジェクト: ljkart/gaffer
            def __init__(self):

                Gaffer.Node.__init__(self)

                self.addChild(Gaffer.IntPlug("i"))

                self.addChild(Gaffer.CompoundPlug("c"))
コード例 #12
0
    def testRunTimeTyped(self):

        p = Gaffer.CompoundPlug("hello")
        self.failUnless(p.isInstanceOf(Gaffer.CompoundPlug.staticTypeId()))

        self.assertEqual(IECore.RunTimeTyped.baseTypeId(p.typeId()),
                         Gaffer.ValuePlug.staticTypeId())
コード例 #13
0
    def testNonValuePlugChildren(self):

        c = Gaffer.CompoundPlug()
        p = Gaffer.Plug()

        self.assertTrue(c.acceptsChild(p))
        c["p"] = p
        self.assertTrue(p.parent().isSame(c))
コード例 #14
0
    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)
コード例 #15
0
			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 )
コード例 #16
0
	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 ) )
コード例 #17
0
			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 )
コード例 #18
0
ファイル: SLONode.py プロジェクト: lucienfostier/youngGaffer
    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)
コード例 #19
0
	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 )
コード例 #20
0
ファイル: ValuePlugTest.py プロジェクト: yarwelp/gaffer
    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)
コード例 #21
0
    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"))
コード例 #22
0
    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()
コード例 #23
0
    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"))
コード例 #24
0
    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"])
コード例 #25
0
	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 )
コード例 #26
0
	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 )
コード例 #27
0
    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)
コード例 #28
0
	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 )
コード例 #29
0
	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 ) )
コード例 #30
0
    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"]))