diff --git a/Op.py b/Op.py new file mode 100644 --- /dev/null +++ b/Op.py @@ -0,0 +1,32 @@ +"""each node type has an Op within it""" + +class Op: + """nodes can have several versions of their operation function. + + ops don't return anything! + """ + def __init__(self): + """This should not be overridden without being called.""" + pass + + def inputschanged(self, input, output, stateaccess): + """If you only define one op function body, make it this one. """ + pass + + def created(self, input, output, stateaccess): + """This is called one time when the node is newly created. It's + not called when the node instance is pickled/unpickled. Use this + version to initialize state.""" + # an extra call to changed() should help the outputs get set + # correctly before any real inputs-changed events come around + # (assuming this method doesn't get overridden with a + # specialized version) + self.inputschanged(input, output, stateaccess) + + def statechanged(self, input, output, stateaccess): + '''State might have been changed by a user dragging a parameter or by + a state being hcanged otherwise.''' + self.inputschanged(input, output, stateaccess) + + def clocked(self, input, output, stateaccess): + self.inputschanged(input, output, stateaccess)