10 #ifndef __vtkMRMLAbstractLogic_h 11 #define __vtkMRMLAbstractLogic_h 22 #include <vtkCommand.h> 23 #include <vtkObject.h> 27 #include "vtkMRMLLogicExport.h" 35 #ifndef vtkSetMRMLNodeMacro 36 #define vtkSetMRMLNodeMacro(node,value) { \ 37 vtkObject *_oldNode = (node); \ 38 this->GetMRMLNodesObserverManager()->SetObject( \ 39 vtkObjectPointer(&(node)), (value)); \ 40 vtkObject *_newNode = (node); \ 41 if (_oldNode != _newNode) \ 49 #ifndef vtkSetAndObserveMRMLNodeMacro 50 #define vtkSetAndObserveMRMLNodeMacro(node,value) { \ 67 vtkObject *_oldNode = (node); \ 68 this->GetMRMLNodesObserverManager()->SetAndObserveObject( \ 69 vtkObjectPointer(&(node)), (value)); \ 70 vtkObject *_newNode = (node); \ 71 if (_oldNode != _newNode) \ 79 #ifndef vtkSetAndObserveMRMLNodeEventsMacro 80 #define vtkSetAndObserveMRMLNodeEventsMacro(node,value,events) { \ 81 vtkObject *_oldNode = (node); \ 82 this->GetMRMLNodesObserverManager()->SetAndObserveObjectEvents( \ 83 vtkObjectPointer(&(node)), (value), (events)); \ 84 vtkObject *_newNode = (node); \ 85 if (_oldNode != _newNode) \ 92 #ifndef vtkObserveMRMLNodeMacro 93 #define vtkObserveMRMLNodeMacro(node) \ 95 this->GetMRMLNodesObserverManager()->ObserveObject( (node) ); \ 100 #ifndef vtkObserveMRMLNodeEventsMacro 101 #define vtkObserveMRMLNodeEventsMacro(node, events) \ 103 this->GetMRMLNodesObserverManager()->AddObjectEvents ( (node), (events) ); \ 107 #ifndef vtkUnObserveMRMLNodeMacro 108 #define vtkUnObserveMRMLNodeMacro(node) \ 110 this->GetMRMLNodesObserverManager()->RemoveObjectEvents ( (node) ); \ 114 #ifndef vtkIsObservedMRMLNodeEventMacro 115 #define vtkIsObservedMRMLNodeEventMacro(node, event) \ 117 this->GetMRMLNodesObserverManager()->GetObservationsCount(node, event) != 0 \ 141 void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
163 void SetAndObserveMRMLSceneEvents(
vtkMRMLScene * newScene, vtkIntArray * events, vtkFloatArray* priorities=0);
173 virtual void ProcessMRMLSceneEvents(vtkObject* caller,
186 virtual void ProcessMRMLNodesEvents(vtkObject* caller,
196 virtual void ProcessMRMLLogicsEvents(vtkObject* caller,
204 vtkCallbackCommand * GetMRMLSceneCallbackCommand();
210 vtkCallbackCommand * GetMRMLNodesCallbackCommand();
214 vtkCallbackCommand * GetMRMLLogicsCallbackCommand();
229 int GetProcessingMRMLSceneEvent()
const;
236 virtual void UnobserveMRMLScene();
244 virtual void ObserveMRMLScene();
251 virtual void UpdateFromMRMLScene();
264 virtual void OnMRMLSceneEndBatchProcess();
321 virtual void SetMRMLSceneInternal(
vtkMRMLScene* newScene);
326 void SetAndObserveMRMLSceneInternal(
vtkMRMLScene *newScene);
341 void SetAndObserveMRMLSceneEventsInternal(
vtkMRMLScene *newScene,
343 vtkFloatArray *priorities=0);
353 void SetInMRMLSceneCallbackFlag(
int flag);
359 int GetInMRMLSceneCallbackFlag()
const;
363 virtual bool EnterMRMLSceneCallback()
const;
367 void SetProcessingMRMLSceneEvent(
int event);
373 void SetInMRMLNodesCallbackFlag(
int flag);
379 int GetInMRMLNodesCallbackFlag()
const;
384 virtual bool EnterMRMLNodesCallback()
const;
390 void SetInMRMLLogicsCallbackFlag(
int flag);
396 int GetInMRMLLogicsCallbackFlag()
const;
400 virtual bool EnterMRMLLogicsCallback()
const;
404 static void MRMLSceneCallback(vtkObject *caller,
unsigned long eid,
void *clientData,
void *callData);
407 static void MRMLNodesCallback(vtkObject *caller,
unsigned long eid,
void *clientData,
void *callData);
410 static void MRMLLogicsCallback(vtkObject *caller,
unsigned long eid,
void *clientData,
void *callData);
415 inline bool StartModify() ;
420 inline int EndModify(
bool wasModifying);
422 bool GetDisableModifiedEvent()
const;
423 void SetDisableModifiedEvent(
bool onOff);
430 virtual void Modified() VTK_OVERRIDE;
434 int InvokePendingModifiedEvent();
436 int GetPendingModifiedEventCount()const;
444 vtkInternal * Internal;
451 bool disabledModify = this->GetDisableModifiedEvent();
452 this->SetDisableModifiedEvent(
true);
453 return disabledModify;
459 this->SetDisableModifiedEvent(previousDisableModifiedEventState);
460 if (!previousDisableModifiedEventState)
462 return this->InvokePendingModifiedEvent();
464 return this->GetPendingModifiedEventCount();
virtual void OnMRMLSceneStartClose()
Superclass for MRML logic classes.
virtual void OnMRMLSceneEndImport()
virtual void OnMRMLSceneEndClose()
Manages adding and deleting of obserevers with events.
virtual void OnMRMLSceneNew()
virtual void OnMRMLSceneStartImport()
int EndModify(bool wasModifying)
virtual void OnMRMLSceneStartBatchProcess()
virtual void OnMRMLNodeModified(vtkMRMLNode *)
A set of MRML Nodes that supports serialization and undo/redo.
virtual void OnMRMLSceneNodeAdded(vtkMRMLNode *)
virtual void RegisterNodes()
virtual void OnMRMLSceneNodeRemoved(vtkMRMLNode *)
virtual void OnMRMLSceneEndRestore()
virtual void OnMRMLSceneStartRestore()
Abstract Superclass for all specific types of MRML nodes.