示例#1
0
    def testCompoundPlugUserDefaults(self):

        node = GafferTest.CompoundPlugNode()

        self.assertEqual(node["p"]["s"].getValue(), "")
        Gaffer.Metadata.registerValue(GafferTest.CompoundPlugNode, "p.s",
                                      "userDefault",
                                      IECore.StringData("from the metadata"))
        self.assertFalse(Gaffer.NodeAlgo.isSetToUserDefault(node["p"]["s"]))
        Gaffer.NodeAlgo.applyUserDefaults(node)
        self.assertEqual(node["p"]["s"].getValue(), "from the metadata")
        self.assertTrue(Gaffer.NodeAlgo.isSetToUserDefault(node["p"]["s"]))

        # override the metadata for this particular instance
        Gaffer.Metadata.registerValue(node["p"]["s"], "userDefault",
                                      IECore.StringData("i am special"))
        self.assertFalse(Gaffer.NodeAlgo.isSetToUserDefault(node["p"]["s"]))
        Gaffer.NodeAlgo.applyUserDefaults(node)
        self.assertEqual(node["p"]["s"].getValue(), "i am special")
        self.assertTrue(Gaffer.NodeAlgo.isSetToUserDefault(node["p"]["s"]))

        # this node still gets the original userDefault
        node2 = GafferTest.CompoundPlugNode()
        self.assertFalse(Gaffer.NodeAlgo.isSetToUserDefault(node2["p"]["s"]))
        Gaffer.NodeAlgo.applyUserDefaults(node2)
        self.assertEqual(node2["p"]["s"].getValue(), "from the metadata")
        self.assertTrue(Gaffer.NodeAlgo.isSetToUserDefault(node2["p"]["s"]))
示例#2
0
    def testConnectNode(self):

        s = Gaffer.ScriptNode()

        s["add1"] = GafferTest.AddNode()
        s["add2"] = GafferTest.AddNode()

        ge = GafferUI.GraphEditor(s)
        g = ge.graphGadget()

        # check we can connect to a top level plug
        g.getLayout().connectNode(g, s["add2"],
                                  Gaffer.StandardSet([s["add1"]]))
        self.assertTrue(s["add2"]["op1"].getInput().isSame(s["add1"]["sum"]))

        # check we can connect to a nested plug, but only provided it is represented
        # in the node graph by a nodule for that exact plug.

        s["compound"] = GafferTest.CompoundPlugNode()
        g.getLayout().connectNode(g, s["compound"],
                                  Gaffer.StandardSet([s["add2"]]))
        self.assertEqual(s["compound"]["p"]["f"].getInput(), None)

        Gaffer.Metadata.registerValue(GafferTest.CompoundPlugNode, "p",
                                      "nodule:type",
                                      "GafferUI::CompoundNodule")

        s["compound2"] = GafferTest.CompoundPlugNode()
        g.getLayout().connectNode(g, s["compound2"],
                                  Gaffer.StandardSet([s["add2"]]))
        self.assertTrue(s["compound2"]["p"]["f"].getInput().isSame(
            s["add2"]["sum"]))

        # check we can connect from a nested plug, but only provided it is represented
        # in the node graph by a nodule for that exact plug.

        s["add3"] = GafferTest.AddNode()

        g.getLayout().connectNode(g, s["add3"],
                                  Gaffer.StandardSet([s["compound2"]]))
        self.assertEqual(s["add3"]["op1"].getInput(), None)

        Gaffer.Metadata.registerValue(GafferTest.CompoundPlugNode, "o",
                                      "nodule:type",
                                      "GafferUI::CompoundNodule")

        s["compound3"] = GafferTest.CompoundPlugNode()

        g.getLayout().connectNode(g, s["add3"],
                                  Gaffer.StandardSet([s["compound3"]]))
        self.assertTrue(s["add3"]["op1"].getInput().isSame(
            s["compound3"]["o"]["f"]))
    def testConnectNode(self):

        s = Gaffer.ScriptNode()

        s["add1"] = GafferTest.AddNode()
        s["add2"] = GafferTest.AddNode()

        ng = GafferUI.NodeGraph(s)
        g = ng.graphGadget()

        # check we can connect to a top level plug
        g.getLayout().connectNode(g, s["add2"],
                                  Gaffer.StandardSet([s["add1"]]))
        self.assertTrue(s["add2"]["op1"].getInput().isSame(s["add1"]["sum"]))

        # check we can connect to a nested plug, but only provided it is represented
        # in the node graph by a nodule for that exact plug.

        s["compound"] = GafferTest.CompoundPlugNode()
        g.getLayout().connectNode(g, s["compound"],
                                  Gaffer.StandardSet([s["add2"]]))
        self.assertEqual(s["compound"]["p"]["f"].getInput(), None)

        GafferUI.Nodule.registerNodule(
            GafferTest.CompoundPlugNode.staticTypeId(), "p",
            GafferUI.CompoundNodule)

        s["compound2"] = GafferTest.CompoundPlugNode()
        g.getLayout().connectNode(g, s["compound2"],
                                  Gaffer.StandardSet([s["add2"]]))
        self.assertTrue(s["compound2"]["p"]["f"].getInput().isSame(
            s["add2"]["sum"]))

        # check we can connect from a nested plug, but only provided it is represented
        # in the node graph by a nodule for that exact plug.

        s["add3"] = GafferTest.AddNode()

        g.getLayout().connectNode(g, s["add3"],
                                  Gaffer.StandardSet([s["compound2"]]))
        self.assertEqual(s["add3"]["op1"].getInput(), None)

        GafferUI.Nodule.registerNodule(
            GafferTest.CompoundPlugNode.staticTypeId(), "o",
            GafferUI.CompoundNodule)

        s["compound3"] = GafferTest.CompoundPlugNode()

        g.getLayout().connectNode(g, s["add3"],
                                  Gaffer.StandardSet([s["compound3"]]))
        self.assertTrue(s["add3"]["op1"].getInput().isSame(
            s["compound3"]["o"]["f"]))
示例#4
0
	def testDirtyPropagationScopingForCompoundPlugInputChange( self ) :

		n1 = GafferTest.CompoundPlugNode()
		n2 = GafferTest.CompoundPlugNode()
		n3 = GafferTest.CompoundPlugNode()

		# We never want to be signalled at a point
		# when the child connections are not in
		# a consistent state.

		InputState = collections.namedtuple( "InputState", ( "p", "s", "f" ) )

		inputStates = []
		def plugDirtied( p ) :

			# We can't use self.assert*() in here,
			# because exceptions are caught in plugDirtiedSignal()
			# handling. So we just record the state to check later
			# in assertStatesValid().
			inputStates.append(
				InputState(
					n3["p"].getInput(),
					n3["p"]["s"].getInput(),
					n3["p"]["f"].getInput()
				)
			)

		def assertStatesValid() :

			for state in inputStates :
				if state.p is not None :
					self.assertTrue( state.s is not None )
					self.assertTrue( state.f is not None )
					self.assertTrue( state.p.isSame( state.f.parent() ) )
				else :
					self.assertTrue( state.s is None )
					self.assertTrue( state.f is None )

		c = n3.plugDirtiedSignal().connect( plugDirtied )

		n3["p"].setInput( n1["o"] )
		assertStatesValid()

		n3["p"].setInput( n2["o"] )
		assertStatesValid()

		n3["p"].setInput( None )
		assertStatesValid()
示例#5
0
    def testSerialisation(self):

        s = Gaffer.ScriptNode()
        s["n1"] = GafferTest.CompoundPlugNode()
        s["n2"] = GafferTest.CompoundPlugNode()

        s["n1"]["p"]["f"].setValue(10)
        s["n1"]["p"]["s"].setInput(s["n2"]["p"]["s"])

        ss = s.serialise()

        s = Gaffer.ScriptNode()
        s.execute(ss)

        self.assertEqual(s["n1"]["p"]["f"].getValue(), 10)
        self.failUnless(s["n1"]["p"]["s"].getInput().isSame(s["n2"]["p"]["s"]))
示例#6
0
    def testSerialisationOfMasterConnection(self):

        s = Gaffer.ScriptNode()
        s["n1"] = GafferTest.CompoundPlugNode()
        s["n2"] = GafferTest.CompoundPlugNode()

        s["n1"]["p"].setInput(s["n2"]["p"])
        self.failUnless(s["n1"]["p"].getInput().isSame(s["n2"]["p"]))
        self.failUnless(s["n1"]["p"]["f"].getInput().isSame(s["n2"]["p"]["f"]))
        self.failUnless(s["n1"]["p"]["s"].getInput().isSame(s["n2"]["p"]["s"]))

        ss = s.serialise()

        s = Gaffer.ScriptNode()
        s.execute(ss)

        self.failUnless(s["n1"]["p"].getInput().isSame(s["n2"]["p"]))
        self.failUnless(s["n1"]["p"]["f"].getInput().isSame(s["n2"]["p"]["f"]))
        self.failUnless(s["n1"]["p"]["s"].getInput().isSame(s["n2"]["p"]["s"]))
示例#7
0
	def testSerialisationOfDynamicPlugsOnNondynamicParent( self ) :
	
		s = Gaffer.ScriptNode()
		s["n"] = GafferTest.CompoundPlugNode()
		
		s["n"]["nonDynamicParent"]["dynamicPlug"] = Gaffer.IntPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic )
		s["n"]["nonDynamicParent"]["dynamicPlug"].setValue( 10 )
				
		s2 = Gaffer.ScriptNode()
		s2.execute( s.serialise() )
		
		self.assertEqual( s2["n"]["nonDynamicParent"]["dynamicPlug"].getValue(), 10 )
	def testAffected( self ) :

		n = GafferTest.CompoundPlugNode()

		affected = []
		ancestorAffected = []
		childAffected = []
		def plugValueChanged( nodeTypeId, plugPath, key, plug ) :
			affected.append( Gaffer.MetadataAlgo.affectedByChange( n["p"]["s"], nodeTypeId, plugPath, plug ) )
			ancestorAffected.append( Gaffer.MetadataAlgo.ancestorAffectedByChange( n["p"]["s"], nodeTypeId, plugPath, plug ) )
			childAffected.append( Gaffer.MetadataAlgo.childAffectedByChange( n["p"], nodeTypeId, plugPath, plug ) )

		c = Gaffer.Metadata.plugValueChangedSignal().connect( plugValueChanged )

		Gaffer.Metadata.registerValue( Gaffer.Node, "user", "test", 1 )
		self.assertEqual( affected, [ False ] )
		self.assertEqual( ancestorAffected, [ False ] )
		self.assertEqual( childAffected, [ False ] )

		Gaffer.Metadata.registerValue( GafferTest.SphereNode, "p.s", "test", 1 )
		self.assertEqual( affected, [ False, False ] )
		self.assertEqual( ancestorAffected, [ False, False ] )
		self.assertEqual( childAffected, [ False, False ] )

		Gaffer.Metadata.registerValue( GafferTest.CompoundPlugNode, "p.s", "test", 1 )
		self.assertEqual( affected, [ False, False, True ] )
		self.assertEqual( ancestorAffected, [ False, False, False ] )
		self.assertEqual( childAffected, [ False, False, True ] )

		Gaffer.Metadata.registerValue( GafferTest.CompoundPlugNode, "p", "test", 2 )
		self.assertEqual( affected, [ False, False, True, False ] )
		self.assertEqual( ancestorAffected, [ False, False, False, True ] )
		self.assertEqual( childAffected, [ False, False, True, False ] )

		del affected[:]
		del ancestorAffected[:]
		del childAffected[:]

		Gaffer.Metadata.registerValue( n["user"], "test", 3 )
		self.assertEqual( affected, [ False ] )
		self.assertEqual( ancestorAffected, [ False ] )
		self.assertEqual( childAffected, [ False ] )

		Gaffer.Metadata.registerValue( n["p"]["s"], "test", 4 )
		self.assertEqual( affected, [ False, True ] )
		self.assertEqual( ancestorAffected, [ False, False ] )
		self.assertEqual( childAffected, [ False, True ] )

		Gaffer.Metadata.registerValue( n["p"], "test", 5 )
		self.assertEqual( affected, [ False, True, False ] )
		self.assertEqual( ancestorAffected, [ False, False, True ] )
		self.assertEqual( childAffected, [ False, True, False ] )
示例#9
0
    def testDirtyPropagation(self):

        n = GafferTest.CompoundPlugNode()

        dirtyPlugs = GafferTest.CapturingSlot(n.plugDirtiedSignal())

        n["p"]["f"].setValue(100)

        self.assertEqual(len(dirtyPlugs), 4)

        self.failUnless(dirtyPlugs[0][0].isSame(n["p"]["f"]))
        self.failUnless(dirtyPlugs[1][0].isSame(n["p"]))
        self.failUnless(dirtyPlugs[2][0].isSame(n["o"]["f"]))
        self.failUnless(dirtyPlugs[3][0].isSame(n["o"]))
示例#10
0
文件: BoxTest.py 项目: tws0002/gaffer
	def testPromoteStaticPlugsWithChildren( self ) :

		s = Gaffer.ScriptNode()

		s["b"] = Gaffer.Box()
		s["b"]["n"] = GafferTest.CompoundPlugNode()
		s["b"]["n"]["valuePlug"]["i"].setValue( 10 )

		p = s["b"].promotePlug( s["b"]["n"]["valuePlug"] )
		p.setName( "p" )

		s2 = Gaffer.ScriptNode()
		s2.execute( s.serialise() )

		self.assertEqual( s2["b"]["n"]["valuePlug"]["i"].getValue(), 10 )
		self.assertTrue( s2["b"]["n"]["valuePlug"]["i"].getInput().isSame( s2["b"]["p"]["i"] ) )
示例#11
0
文件: BoxTest.py 项目: tws0002/gaffer
	def testPromoteCompoundPlugAndSerialise( self ) :

		s = Gaffer.ScriptNode()

		s["n"] = GafferTest.CompoundPlugNode()
		s["n"]["p"]["s"].setValue( "hello" )

		b = Gaffer.Box.create( s, Gaffer.StandardSet( [ s["n"] ] ) )
		b.promotePlug( b["n"]["p"] )

		ss = s.serialise()

		s = Gaffer.ScriptNode()
		s.execute( ss )

		self.assertEqual( s["Box"]["n"]["p"]["s"].getValue(), "hello" )
示例#12
0
    def testPromoteCompoundPlugAndSerialise(self):

        s = Gaffer.ScriptNode()

        s["b"] = Gaffer.Box()
        s["b"]["n"] = GafferTest.CompoundPlugNode()
        s["b"]["n"]["p"]["s"].setValue("hello")

        Gaffer.PlugAlgo.promote(s["b"]["n"]["p"])

        ss = s.serialise()

        s = Gaffer.ScriptNode()
        s.execute(ss)

        self.assertEqual(s["b"]["n"]["p"]["s"].getValue(), "hello")
	def testNodeAffected( self ) :

		n = GafferTest.CompoundPlugNode()

		affected = []
		def nodeValueChanged( nodeTypeId, key, node ) :
			affected.append( Gaffer.MetadataAlgo.affectedByChange( n, nodeTypeId, node ) )

		c = Gaffer.Metadata.nodeValueChangedSignal().connect( nodeValueChanged )

		Gaffer.Metadata.registerValue( Gaffer.Node, "metadataAlgoTest", 1 )
		self.assertEqual( affected, [ True ] )

		Gaffer.Metadata.registerValue( GafferTest.AddNode, "metadataAlgoTest", 2 )
		self.assertEqual( affected, [ True, False ] )

		Gaffer.Metadata.registerValue( n, "metadataAlgoTest", 3 )
		self.assertEqual( affected, [ True, False, True ] )

		a = GafferTest.AddNode()
		Gaffer.Metadata.registerValue( a, "metadataAlgoTest", 4 )
		self.assertEqual( affected, [ True, False, True, False ] )
示例#14
0
    def testAffectsRejectsCompoundPlugs(self):

        n = GafferTest.CompoundPlugNode()

        self.assertRaises(RuntimeError, n.affects, n["p"])
示例#15
0
    def testAffectedByPlugTypeRegistration(self):

        n = GafferTest.CompoundPlugNode()

        self.assertTrue(
            Gaffer.MetadataAlgo.affectedByChange(n["p"]["s"],
                                                 Gaffer.StringPlug,
                                                 changedPlugPath="",
                                                 changedPlug=None))
        self.assertFalse(
            Gaffer.MetadataAlgo.affectedByChange(n["p"]["s"],
                                                 Gaffer.IntPlug,
                                                 changedPlugPath="",
                                                 changedPlug=None))
        self.assertTrue(
            Gaffer.MetadataAlgo.affectedByChange(n["p"],
                                                 Gaffer.Plug,
                                                 changedPlugPath="",
                                                 changedPlug=None))

        self.assertTrue(
            Gaffer.MetadataAlgo.childAffectedByChange(n["p"],
                                                      Gaffer.StringPlug,
                                                      changedPlugPath="",
                                                      changedPlug=None))
        self.assertTrue(
            Gaffer.MetadataAlgo.childAffectedByChange(n["p"],
                                                      Gaffer.FloatPlug,
                                                      changedPlugPath="",
                                                      changedPlug=None))
        self.assertFalse(
            Gaffer.MetadataAlgo.childAffectedByChange(n["p"],
                                                      Gaffer.IntPlug,
                                                      changedPlugPath="",
                                                      changedPlug=None))
        self.assertFalse(
            Gaffer.MetadataAlgo.childAffectedByChange(n["p"]["s"],
                                                      Gaffer.StringPlug,
                                                      changedPlugPath="",
                                                      changedPlug=None))

        self.assertFalse(
            Gaffer.MetadataAlgo.ancestorAffectedByChange(n["p"],
                                                         Gaffer.CompoundPlug,
                                                         changedPlugPath="",
                                                         changedPlug=None))
        self.assertTrue(
            Gaffer.MetadataAlgo.ancestorAffectedByChange(n["p"]["s"],
                                                         Gaffer.CompoundPlug,
                                                         changedPlugPath="",
                                                         changedPlug=None))
        self.assertTrue(
            Gaffer.MetadataAlgo.ancestorAffectedByChange(n["p"]["s"],
                                                         Gaffer.Plug,
                                                         changedPlugPath="",
                                                         changedPlug=None))
        self.assertFalse(
            Gaffer.MetadataAlgo.ancestorAffectedByChange(n["p"]["s"],
                                                         Gaffer.StringPlug,
                                                         changedPlugPath="",
                                                         changedPlug=None))