def testUndo( self ) : # check our custom knob undoes in the same way as # standard knobs n = nuke.createNode( "ieObject" ) n2 = nuke.createNode( "Blur" ) self.assertEqual( n.knob( "object" ).getValue(), None ) self.assertEqual( n2.knob( "size" ).getValue(), 0 ) self.assertEqual( nuke.Undo.disabled(), True ) with IECoreNuke.UndoEnabled() : self.assertEqual( nuke.Undo.disabled(), False ) with IECoreNuke.UndoBlock() : n.knob( "object" ).setValue( IECore.IntData( 10 ) ) self.assertEqual( n.knob( "object" ).getValue(), IECore.IntData( 10 ) ) n2.knob( "size" ).setValue( 10 ) self.assertEqual( n2.knob( "size" ).getValue(), 10 ) self.assertEqual( nuke.Undo.disabled(), True ) self.assertEqual( n.knob( "object" ).getValue(), IECore.IntData( 10 ) ) self.assertEqual( n2.knob( "size" ).getValue(), 10 ) nuke.undo() self.assertEqual( n2.knob( "size" ).getValue(), 0 ) self.assertEqual( n.knob( "object" ).getValue(), None )
def testModifyParametersAndUndo(self): fnOH = IECoreNuke.FnOpHolder.create("mult", "maths/multiply", 2) self.assertEqual(fnOH.node().knob("parm_a").getValue(), 1) self.assertEqual(fnOH.node().knob("parm_b").getValue(), 2) with IECoreNuke.UndoEnabled(): with fnOH.parameterModificationContext() as parameters: parameters["a"].setNumericValue(10) parameters["b"].setNumericValue(20) self.assertEqual(fnOH.node().knob("parm_a").getValue(), 10) self.assertEqual(fnOH.node().knob("parm_b").getValue(), 20) nuke.undo() self.assertEqual(fnOH.node().knob("parm_a").getValue(), 1) self.assertEqual(fnOH.node().knob("parm_b").getValue(), 2)