15#ifndef __vtkObserverManager_h
16#define __vtkObserverManager_h
27class vtkCallbackCommand;
30class vtkUnsignedLongArray;
32#ifndef vtkObjectPointer
33#define vtkObjectPointer(xx) (reinterpret_cast <vtkObject **>( (xx) ))
48 void PrintSelf(ostream& os, vtkIndent indent)
override;
51 void SetObject(vtkObject **nodePtr, vtkObject *node);
54 void SetAndObserveObject(vtkObject **nodePtr, vtkObject *node,
float priority=0.0,
bool logWarningIfSameObservationExists=
true);
57 void SetAndObserveObjectEvents(vtkObject **nodePtr, vtkObject *node, vtkIntArray *events, vtkFloatArray *priorities=
nullptr,
bool logWarningIfSameObservationExists=
true);
63 void GetObjectEvents(vtkObject *nodePtr, vtkIntArray *events, vtkFloatArray *priorities);
69 void AddObjectEvents(vtkObject *nodePtr, vtkIntArray *events, vtkFloatArray *priorities=
nullptr);
76 vtkGetObjectMacro (Owner, vtkObject);
81 vtkGetObjectMacro (CallbackCommand, vtkCallbackCommand);
Manages adding and deleting of observers with events.
vtkObserverManager(const vtkObserverManager &)
void SetAndObserveObjectEvents(vtkObject **nodePtr, vtkObject *node, vtkIntArray *events, vtkFloatArray *priorities=nullptr, bool logWarningIfSameObservationExists=true)
set vtkObject to a specified pointer, remove all observers for all events, add observers for specifie...
~vtkObserverManager() override
void GetObjectEvents(vtkObject *nodePtr, vtkIntArray *events, vtkFloatArray *priorities)
get a list of all observed events and priorities for the selected node
vtkCallbackCommand * CallbackCommand
Holder for callback.
vtkObject * Owner
The owner of the observer manager (e.g. the vtkMRMLNode)
void RemoveObjectEvents(vtkObject *nodePtr)
remove all observers for all events
void ObserveObject(vtkObject *node, float priority=0.0)
Observe ModifiedEvent on the object.
void AddObjectEvents(vtkObject *nodePtr, vtkIntArray *events, vtkFloatArray *priorities=nullptr)
add observers for specified events
void operator=(const vtkObserverManager &)
vtkObject * GetObserver()
Returns the owner if any, otherwise returns the manager itself.
void SetObject(vtkObject **nodePtr, vtkObject *node)
set vtkObject to a specified pointer and remove all observers for all events
static vtkObserverManager * New()
The Usual vtk class functions.
void AssignOwner(vtkObject *owner)
void SetAndObserveObject(vtkObject **nodePtr, vtkObject *node, float priority=0.0, bool logWarningIfSameObservationExists=true)
set vtkObject to a specified pointer, remove all observers for all events, add observer for Modify ev...
std::map< vtkObject *, vtkUnsignedLongArray * > ObserverTags
void PrintSelf(ostream &os, vtkIndent indent) override
int GetObservationsCount(vtkObject *nodePtr, unsigned long event=0)