vtkChangeTrackerGUI.h
Go to the documentation of this file.00001 #ifndef __vtkChangeTrackerGUI_h
00002 #define __vtkChangeTrackerGUI_h
00003
00004 #include "vtkSlicerModuleGUI.h"
00005 #include "vtkChangeTracker.h"
00006 #include "vtkSlicerSliceLogic.h"
00007 #include "vtkKWScale.h"
00008
00009 #define TUTORIAL_XNAT_SCENE "http://xnd.slicer.org:8000/data/20090803T130148Z/ChangetrackerTutorial2009.mrml"
00010
00011 class vtkChangeTrackerLogic;
00012 class vtkMRMLChangeTrackerNode;
00013 class vtkKWWizardWidget;
00014 class vtkChangeTrackerFirstScanStep;
00015 class vtkChangeTrackerROIStep;
00016 class vtkChangeTrackerSegmentationStep;
00017 class vtkChangeTrackerTypeStep;
00018 class vtkChangeTrackerAnalysisStep;
00019 class vtkImageData;
00020 class vtkMRMLROINode;
00021 class vtkKWPushButton;
00022
00023 class VTK_CHANGETRACKER_EXPORT vtkChangeTrackerGUI :
00024 public vtkSlicerModuleGUI
00025 {
00026 public:
00027 static vtkChangeTrackerGUI *New();
00028 vtkTypeMacro(vtkChangeTrackerGUI,vtkSlicerModuleGUI);
00029 void PrintSelf(ostream& os, vtkIndent indent);
00030
00031
00032 const char *GetCategory() const { return "Wizards"; }
00033
00034
00035
00036 vtkGetObjectMacro(Logic, vtkChangeTrackerLogic);
00037 virtual void SetLogic(vtkChangeTrackerLogic*);
00038
00039
00040
00041
00042
00043
00044 virtual void SetModuleLogic ( vtkSlicerLogic *logic )
00045 {
00046 this->SetLogic(reinterpret_cast<vtkChangeTrackerLogic*> (logic));
00047 }
00048
00049
00050
00051 vtkGetObjectMacro(Node, vtkMRMLChangeTrackerNode);
00052 virtual void SetNode(vtkMRMLChangeTrackerNode*);
00053
00054
00055
00056 vtkGetObjectMacro(WizardWidget, vtkKWWizardWidget);
00057
00058
00059
00060
00061 virtual vtkIntArray* NewObservableEvents();
00062
00063
00064
00065 virtual void BuildGUI();
00066
00067 using vtkSlicerComponentGUI::BuildGUI;
00068
00069
00070
00071
00072 virtual void TearDownGUI();
00073
00074
00075
00076 virtual void AddGUIObservers();
00077
00078
00079
00080 virtual void RemoveGUIObservers();
00081
00082
00083
00084 virtual void RemoveMRMLNodeObservers();
00085
00086
00087
00088 virtual void RemoveLogicObservers();
00089
00090
00091
00092 virtual void ProcessLogicEvents( vtkObject *caller, unsigned long event,
00093 void *callData);
00094
00095
00096
00097 virtual void ProcessGUIEvents( vtkObject *caller, unsigned long event,
00098 void *callData);
00099
00100
00101
00102
00103 virtual void ProcessMRMLEvents( vtkObject *caller, unsigned long event,
00104 void *callData);
00105
00106
00107 virtual void Enter();
00108
00109 using vtkSlicerComponentGUI::Enter;
00110
00111 virtual void Exit();
00112
00113
00114
00115 vtkGetStringMacro(ModuleName);
00116 vtkSetStringMacro(ModuleName);
00117
00118 bool GetModuleEntered() { return ModuleEntered;};
00119
00120
00121
00122 unsigned long AddObserverByNumber(vtkObject *observee, unsigned long event);
00123
00124
00125
00126 void UpdateMRML();
00127
00128 vtkChangeTrackerFirstScanStep* GetFirstScanStep() {return this->FirstScanStep;}
00129 void UpdateNode();
00130
00131 vtkGetObjectMacro(SegmentationStep,vtkChangeTrackerSegmentationStep);
00132
00133 void SliceLogicRemove();
00134 void SliceLogicDefine();
00135
00136
00137
00138 vtkGetObjectMacro(SliceLogic, vtkSlicerSliceLogic);
00139 vtkGetObjectMacro(SliceController_OffsetScale, vtkKWScale);
00140
00141 void PropagateVolumeSelection();
00142
00143 void ResetPipeline();
00144
00145 void ObserveMRMLROINode(vtkMRMLROINode* roi);
00146
00147 void LoadTutorialData();
00148
00149 void SetRedGreenYellowAllVolumes(const char*, const char*, const char*);
00150
00151 protected:
00152 static void SliceLogicCallback(vtkObject *caller, unsigned long event, void *clientData, void *callData );
00153 private:
00154 vtkChangeTrackerGUI();
00155 ~vtkChangeTrackerGUI();
00156 vtkChangeTrackerGUI(const vtkChangeTrackerGUI&);
00157 void operator=(const vtkChangeTrackerGUI&);
00158
00159
00160
00161 void UpdateGUI();
00162
00163
00164
00165 virtual void UpdateRegistrationProgress();
00166
00167 void SliceLogicRemoveGUIObserver();
00168
00169 vtkChangeTrackerLogic *Logic;
00170 vtkMRMLChangeTrackerNode *Node;
00171
00172 char *ModuleName;
00173
00174
00175
00176 vtkKWWizardWidget *WizardWidget;
00177 vtkChangeTrackerFirstScanStep *FirstScanStep;
00178 vtkChangeTrackerROIStep *ROIStep;
00179 vtkChangeTrackerSegmentationStep *SegmentationStep;
00180 vtkChangeTrackerTypeStep *TypeStep;
00181 vtkChangeTrackerAnalysisStep *AnalysisStep;
00182
00183 vtkSlicerSliceLogic *SliceLogic;
00184 vtkKWScale *SliceController_OffsetScale;
00185 vtkCallbackCommand *SliceLogicCallbackCommand;
00186
00187 vtkKWPushButton *TutorialButton;
00188
00189
00190 vtkMRMLROINode *roiNode;
00191
00192 bool ModuleEntered;
00193 };
00194
00195 #endif