vtkSlicerWidget.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00019
00020
00021
00022 #ifndef __vtkSlicerWidget_h
00023 #define __vtkSlicerWidget_h
00024
00025 #include "vtkCommand.h"
00026 #include "vtkCallbackCommand.h"
00027 #include "vtkUnsignedLongArray.h"
00028 #include "vtkKWObject.h"
00029 #include "vtkSlicerBaseGUIWin32Header.h"
00030 #include "vtkKWCompositeWidget.h"
00031
00032 #include "vtkMRMLScene.h"
00033 #include "vtkMRMLNode.h"
00034 #include "vtkObserverManager.h"
00035
00036 class vtkCallbackCommmand;
00037
00038
00039
00040 #ifndef vtkSetMRMLNodeMacro
00041 #define vtkSetMRMLNodeMacro(node,value) { \
00042 vtkObject *oldNode = (node); \
00043 this->MRMLObserverManager->SetObject ( vtkObjectPointer( &(node)), (value) ); \
00044 if ( oldNode != (node) ) \
00045 { \
00046 this->InvokeEvent (vtkCommand::ModifiedEvent); \
00047 } \
00048 };
00049 #endif
00050
00051 #ifndef vtkSetAndObserveMRMLNodeMacro
00052 #define vtkSetAndObserveMRMLNodeMacro(node,value) { \
00053 vtkObject *oldNode = (node); \
00054 this->MRMLObserverManager->SetAndObserveObject ( vtkObjectPointer( &(node) ), (value) ); \
00055 if ( oldNode != (node) ) \
00056 { \
00057 this->InvokeEvent (vtkCommand::ModifiedEvent); \
00058 } \
00059 };
00060 #endif
00061
00062 #ifndef vtkSetAndObserveMRMLNodeEventsMacro
00063 #define vtkSetAndObserveMRMLNodeEventsMacro(node,value,events) { \
00064 vtkObject *oldNode = (node); \
00065 this->MRMLObserverManager->SetAndObserveObjectEvents ( vtkObjectPointer( &(node)), (value), (events)); \
00066 if ( oldNode != (node) ) \
00067 { \
00068 this->InvokeEvent (vtkCommand::ModifiedEvent); \
00069 } \
00070 };
00071 #endif
00072
00073
00074
00075
00076 class VTK_SLICER_BASE_GUI_EXPORT vtkSlicerWidget : public vtkKWCompositeWidget
00077 {
00078
00079 public:
00080 static vtkSlicerWidget* New(){return NULL;};
00081 vtkTypeRevisionMacro(vtkSlicerWidget,vtkKWCompositeWidget);
00082 void PrintSelf(ostream& os, vtkIndent indent);
00083
00086 vtkGetObjectMacro ( MRMLScene, vtkMRMLScene );
00087
00090 void SetMRMLScene ( vtkMRMLScene *mrml )
00091 {
00092 vtkObject *oldValue = this->MRMLScene;
00093 this->MRMLObserverManager->SetObject ( vtkObjectPointer( &this->MRMLScene), mrml );
00094 if ( oldValue != this->MRMLScene )
00095 {
00096 this->InvokeEvent (vtkCommand::ModifiedEvent);
00097 }
00098 }
00099
00100 void SetAndObserveMRMLScene ( vtkMRMLScene *mrml )
00101 {
00102 vtkObject *oldValue = this->MRMLScene;
00103 this->MRMLObserverManager->SetAndObserveObject ( vtkObjectPointer( &this->MRMLScene), mrml );
00104 if ( oldValue != this->MRMLScene )
00105 {
00106 this->InvokeEvent (vtkCommand::ModifiedEvent);
00107 }
00108 }
00109
00110 void SetAndObserveMRMLSceneEvents ( vtkMRMLScene *mrml, vtkIntArray *events )
00111 {
00112 vtkObject *oldValue = this->MRMLScene;
00113 this->MRMLObserverManager->SetAndObserveObjectEvents ( vtkObjectPointer( &this->MRMLScene), mrml, events );
00114 if ( oldValue != this->MRMLScene )
00115 {
00116 this->InvokeEvent (vtkCommand::ModifiedEvent);
00117 }
00118 }
00119
00122 virtual void ProcessWidgetEvents ( vtkObject *vtkNotUsed(caller),
00123 unsigned long vtkNotUsed(event),
00124 void *vtkNotUsed(callData) ) { };
00125
00128 virtual void ProcessMRMLEvents ( vtkObject *vtkNotUsed(caller),
00129 unsigned long vtkNotUsed(event),
00130 void *vtkNotUsed(callData) ) { };
00131
00135 vtkGetMacro(InWidgetCallbackFlag, int);
00136 void SetInWidgetCallbackFlag (int flag) {
00137 this->InWidgetCallbackFlag = flag;
00138 }
00139 vtkGetMacro(InMRMLCallbackFlag, int);
00140 void SetInMRMLCallbackFlag (int flag) {
00141 this->InMRMLCallbackFlag = flag;
00142 }
00143
00144
00145 protected:
00146 vtkSlicerWidget();
00147 virtual ~vtkSlicerWidget();
00148
00151 virtual void CreateWidget() {this->Superclass::CreateWidget();};
00152
00153 vtkMRMLScene *MRMLScene;
00154
00155 vtkObserverManager *MRMLObserverManager;
00156
00157
00162 static void MRMLCallback( vtkObject *caller,
00163 unsigned long eid, void *clientData, void *callData );
00164 static void WidgetCallback( vtkObject *caller,
00165 unsigned long eid, void *clientData, void *callData );
00166
00167
00170 vtkCallbackCommand *MRMLCallbackCommand;
00171 vtkCallbackCommand *GUICallbackCommand;
00172
00175 int InWidgetCallbackFlag;
00176 int InMRMLCallbackFlag;
00177
00178 vtkSlicerWidget(const vtkSlicerWidget&);
00179 void operator=(const vtkSlicerWidget&);
00180 };
00181
00182 #endif
00183