vtkPETCTFusionGUI.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006 #ifndef __vtkPETCTFusionGUI_h
00007 #define __vtkPETCTFusionGUI_h
00008
00009 #include "vtkPETCTFusionWin32Header.h"
00010 #include "vtkSlicerModuleGUI.h"
00011 #include "vtkMRMLPETCTFusionNode.h"
00012 #include "vtkMRMLColorNode.h"
00013 #include "vtkPETCTFusionLogic.h"
00014 #include "vtkSlicerModuleCollapsibleFrame.h"
00015 #include <string>
00016
00017 class vtkKWFrame;
00018 class vtkKWCheckButton;
00019 class vtkSlicerNodeSelectorWidget;
00020 class vtkKWRadioButton;
00021 class vtkKWRadioButtonSet;
00022 class vtkKWEntry;
00023 class vtkKWPushButton;
00024 class vtkKWLabel;
00025 class vtkKWRange;
00026 class vtkKWMenuButton;
00027 class vtkSlicerPopUpHelpWidget;
00028 class vtkKWMultiColumnList;
00029 class vtkKWMultiColumnListWithScrollbars;
00030 class vtkKWRadioButtonSetWithLabel;
00031
00032 class VTK_PETCTFUSION_EXPORT vtkPETCTFusionGUI : public vtkSlicerModuleGUI
00033 {
00034 public:
00035 static vtkPETCTFusionGUI *New();
00036 vtkTypeRevisionMacro(vtkPETCTFusionGUI,vtkSlicerModuleGUI);
00037 void PrintSelf(ostream& os, vtkIndent indent);
00038
00039
00040
00041
00042
00043 virtual void SetModuleLogic ( vtkSlicerLogic *logic )
00044 {
00045 this->SetLogic(reinterpret_cast<vtkPETCTFusionLogic*> (logic));
00046 };
00047
00048
00049
00050 const char *GetCategory() const
00051 { return "Quantification"; }
00052
00053
00054
00055 vtkGetObjectMacro (Logic, vtkPETCTFusionLogic);
00056 vtkSetObjectMacro (Logic, vtkPETCTFusionLogic);
00057
00058
00059
00060 vtkGetObjectMacro (PETCTFusionNode, vtkMRMLPETCTFusionNode );
00061 vtkSetObjectMacro (PETCTFusionNode, vtkMRMLPETCTFusionNode );
00062
00063
00064
00065 vtkGetObjectMacro(CTSelector, vtkSlicerNodeSelectorWidget);
00066 vtkGetObjectMacro(PETSelector, vtkSlicerNodeSelectorWidget);
00067 vtkGetObjectMacro(MaskSelector, vtkSlicerNodeSelectorWidget);
00068 vtkGetObjectMacro(VolumeRenderCheckbox, vtkKWCheckButton);
00069 vtkGetObjectMacro(TissueConcentrationEntry, vtkKWEntry);
00070 vtkGetObjectMacro(InjectedDoseEntry, vtkKWEntry);
00071 vtkGetObjectMacro(PatientWeightEntry, vtkKWEntry);
00072 vtkGetObjectMacro(ComputeButton, vtkKWPushButton);
00073 vtkGetObjectMacro(SaveButton, vtkKWPushButton);
00074 vtkGetObjectMacro (GetFromDICOMButton, vtkKWPushButton );
00075 vtkGetObjectMacro(HelpButton, vtkSlicerPopUpHelpWidget);
00076 vtkGetObjectMacro (PETRange, vtkKWRange );
00077 vtkGetObjectMacro (CTRange, vtkKWRange );
00078 vtkGetObjectMacro (DoseUnitsMenuButton, vtkKWMenuButton );
00079 vtkGetObjectMacro (TissueUnitsMenuButton, vtkKWMenuButton );
00080 vtkGetObjectMacro (WeightUnitsMenuButton, vtkKWMenuButton );
00081 vtkGetObjectMacro ( ColorSet, vtkKWRadioButtonSetWithLabel );
00082
00083 vtkGetObjectMacro ( ClearPlotArrayButton, vtkKWPushButton );
00084 vtkGetObjectMacro ( AddToPlotArrayButton, vtkKWPushButton );
00085 vtkGetObjectMacro ( ShowPlotButton, vtkKWPushButton );
00086 vtkGetObjectMacro ( SavePlotArrayButton, vtkKWPushButton );
00087
00088
00089
00090
00091 virtual void BuildGUI ( );
00092
00093 using vtkSlicerComponentGUI::BuildGUI;
00094
00095 virtual void BuildDisplayFrame(vtkKWWidget *parent);
00096 virtual void BuildFusionFrame(vtkKWWidget *parent);
00097 virtual void BuildAnalysisFrame(vtkKWWidget *parent);
00098 virtual void BuildReportFrame( vtkKWWidget *parent);
00099
00100
00101
00102
00103 virtual void InitializeGUI ( );
00104
00105
00106
00107
00108
00109
00110 virtual void UpdateGUIFromMRML ( int updateDICOMevent );
00111
00112
00113
00114
00115
00116 virtual void UpdateColorRadioButtonsFromMRML ();
00117
00118
00119
00120 virtual void TearDownGUI ( );
00121
00122
00123
00124 vtkIntArray *NewObservableEvents();
00125
00126
00127
00128 virtual void ColorizePETVolume(int type);
00129
00130
00131
00132
00133
00134 virtual void ProcessPETRangeCommand (double min, double max);
00135 virtual void ProcessPETRangeStartCommand(double min, double max);
00136 virtual void ProcessPETRangeStopCommand ( double min, double max);
00137
00138
00139
00140
00141
00142
00143 virtual void ProcessCTRangeCommand (double min, double max);
00144 virtual void ProcessCTRangeStartCommand(double min, double max);
00145 virtual void ProcessCTRangeStopCommand ( double min, double max);
00146
00147
00148
00149 virtual void AddGUIObservers ( );
00150
00151
00152
00153 virtual void RemoveGUIObservers ( );
00154
00155
00156
00157
00158 virtual void EnablePETCTVolumeRendering();
00159 virtual void DisablePETCTVolumeRendering();
00160
00161
00162
00163 virtual void ProcessGUIEvents ( vtkObject *caller, unsigned long event,
00164 void *callData );
00165
00166
00167 virtual void ProcessMRMLEvents ( vtkObject *caller, unsigned long event,
00168 void *callData );
00169
00170
00171
00172 virtual void Enter ( );
00173
00174 using vtkSlicerComponentGUI::Enter;
00175
00176 virtual void Exit ( );
00177 virtual void Init ( );
00178
00179
00180
00181
00182
00183 virtual void ClearDICOMInformation ( );
00184
00185
00186
00187
00188 virtual void ResetManualEntryGUI ( );
00189
00190
00191
00192
00193 virtual void UpdateDICOMPanel ( );
00194
00195
00196
00197
00198
00199 virtual void UpdatePETDisplayFromMRML ( );
00200
00201
00202
00203
00204
00205 virtual void UpdateCTDisplayFromMRML ( );
00206
00207
00208
00209
00210
00211
00212 virtual void ApplyDefaultCTLUT();
00213
00214
00215
00216
00217
00218
00219 virtual void ApplyDefaultPETLUT();
00220
00221
00222
00223
00224 virtual void ClearResultsTable();
00225
00226
00227
00228
00229 virtual void UpdateResultsTableFromMRML();
00230
00231
00232
00233 virtual void RaisePlot();
00234
00235
00236
00237
00238 const char *GetCTColorTableNodeIDByType (int type);
00239
00240
00241
00242 const char *GetPETColorNodeIDByType(int type);
00243
00244
00245
00246
00247
00248
00249 virtual void InitializePETMinAndMax();
00250
00251
00252
00253 virtual void InitializeCTMinAndMax();
00254
00255
00256
00257
00258
00259
00260
00261 virtual void UpdatePETRangeFromMRML();
00262
00263
00264
00265 virtual void UpdateCTRangeFromMRML();
00266
00267
00268
00269
00270
00271
00272
00273 virtual void UpdateNodePETColorRange ( );
00274
00275
00276
00277
00278 virtual void UpdateNodeCTColorRange ( );
00279
00280
00281
00282
00283
00284
00285
00286
00287 virtual void UpdateFusionDisplayFromMRML();
00288
00289
00290
00291
00292
00293
00294 virtual void ScalePETColormap(double min, double max);
00295
00296
00297
00298 virtual void ScaleCTColormap(double min, double max);
00299
00300
00301 protected:
00302 vtkPETCTFusionGUI();
00303 ~vtkPETCTFusionGUI();
00304 vtkPETCTFusionGUI(const vtkPETCTFusionGUI&);
00305 void operator=(const vtkPETCTFusionGUI&);
00306
00307
00308
00309 void SetStatusText( const char *txt);
00310
00311 vtkPETCTFusionLogic *Logic;
00312 vtkMRMLPETCTFusionNode *PETCTFusionNode;
00313
00314
00315
00316
00317
00318
00319
00320 vtkSlicerNodeSelectorWidget* CTSelector;
00321 vtkSlicerNodeSelectorWidget* PETSelector;
00322 vtkSlicerNodeSelectorWidget* MaskSelector;
00323 vtkKWCheckButton *VolumeRenderCheckbox;
00324 vtkKWEntry *TissueConcentrationEntry;
00325 vtkKWEntry *InjectedDoseEntry;
00326 vtkKWEntry *PatientWeightEntry;
00327 vtkKWPushButton *ComputeButton;
00328 vtkKWPushButton *GetFromDICOMButton;
00329 vtkKWPushButton *SaveButton;
00330 vtkSlicerPopUpHelpWidget *HelpButton;
00331 vtkKWMenuButton *DoseUnitsMenuButton;
00332 vtkKWMenuButton *WeightUnitsMenuButton;
00333 vtkKWMenuButton *TissueUnitsMenuButton;
00334 vtkKWRange *PETRange;
00335 vtkKWRange *CTRange;
00336 vtkKWRadioButtonSetWithLabel *ColorSet;
00337 vtkSlicerNodeSelectorWidget *PlotSelector;
00338
00339 vtkKWPushButton *AddToPlotArrayButton;
00340 vtkKWPushButton *ShowPlotButton;
00341 vtkKWPushButton *SavePlotArrayButton;
00342 vtkKWPushButton *ClearPlotArrayButton;
00343
00344 vtkMRMLDoubleArrayNode *SUVmaxArray;
00345 vtkMRMLDoubleArrayNode *SUVmeanArray;
00346
00347 bool Raised;
00348
00349
00350 vtkKWLabel *PatientWeightLabel;
00351 vtkKWLabel *InjectedDoseLabel;
00352 vtkKWLabel *PatientNameLabel;
00353 vtkKWLabel *StudyDateLabel;
00354 vtkKWMultiColumnList *ResultList;
00355 vtkKWMultiColumnListWithScrollbars *ResultListWithScrollbars;
00356
00357
00358 double PETMin;
00359 double PETMax;
00360 int UpdatingLUT;
00361 int UpdatingGUI;
00362
00363 };
00364
00365 #endif
00366