vtkSlicerSliceControllerWidget.h

Go to the documentation of this file.
00001 #ifndef __vtkSlicerSliceControllerWidget_h
00002 #define __vtkSlicerSliceControllerWidget_h
00003 
00004 #include "vtkSlicerBaseGUIWin32Header.h"
00005 #include "vtkKWCompositeWidget.h"
00006 #include "vtkKWScaleWithEntry.h"
00007 #include "vtkKWSpinBoxWithLabel.h"
00008 #include "vtkKWEntryWithLabel.h"
00009 #include "vtkKWMenuButtonWithSpinButtonsWithLabel.h"
00010 #include "vtkKWMenuButton.h"
00011 #include "vtkKWPushButton.h"
00012 #include "vtkKWFrame.h"
00013 #include "vtkKWTopLevel.h"
00014 #include "vtkKWEntry.h"
00015 
00016 #include "vtkSlicerModuleCollapsibleFrame.h"
00017 #include "vtkSlicerWidget.h"
00018 #include "vtkSlicerNodeSelectorWidget.h"
00019 #include "vtkSlicerSlicesControlIcons.h"
00020 #include "vtkSlicerFoundationIcons.h"
00021 #include "vtkSlicerToolbarIcons.h"
00022 #include "vtkSlicerVisibilityIcons.h"
00023 
00024 #include "vtkMRMLSliceNode.h"
00025 #include "vtkMRMLSliceCompositeNode.h"
00026 
00027 #include "vtkSlicerSliceLogic.h"
00028 
00029 class VTK_SLICER_BASE_GUI_EXPORT vtkSlicerSliceControllerWidget : public vtkSlicerWidget
00030 {
00031     
00032 public:
00033   static vtkSlicerSliceControllerWidget* New ( );
00034   vtkTypeRevisionMacro ( vtkSlicerSliceControllerWidget, vtkKWCompositeWidget );
00035   void PrintSelf (ostream& os, vtkIndent indent);
00036     
00039   vtkGetObjectMacro ( OffsetScale, vtkKWScale );
00040   vtkGetMacro (OffsetScaleMin, double);
00041   vtkSetMacro (OffsetScaleMin, double);
00042   vtkGetMacro (OffsetScaleResolution, double);
00043   vtkSetMacro (OffsetScaleResolution, double);
00044   vtkGetObjectMacro ( OffsetEntry, vtkKWEntry );
00045   vtkGetObjectMacro ( SliceIndexEntry, vtkKWEntry );
00046   vtkGetObjectMacro ( OrientationSelector, vtkKWMenuButtonWithSpinButtonsWithLabel );
00047   vtkGetObjectMacro ( ForegroundSelector, vtkSlicerNodeSelectorWidget );
00048   vtkGetObjectMacro ( BackgroundSelector, vtkSlicerNodeSelectorWidget );
00049   vtkGetObjectMacro ( LabelSelector, vtkSlicerNodeSelectorWidget );
00050   vtkGetObjectMacro ( VisibilityToggle, vtkKWPushButton );
00051   vtkGetObjectMacro ( LoadDataButton, vtkKWPushButton );
00052   vtkGetObjectMacro ( LinkButton, vtkKWPushButton );
00053   vtkGetObjectMacro ( FoundationIcons, vtkSlicerFoundationIcons );
00054   vtkGetObjectMacro ( VisibilityIcons, vtkSlicerVisibilityIcons );
00055   vtkGetObjectMacro ( ViewConfigureIcons, vtkSlicerToolbarIcons );
00056   vtkGetObjectMacro ( SliceControlIcons, vtkSlicerSlicesControlIcons);
00057   vtkGetObjectMacro ( ScaleFrame, vtkKWFrame );
00058   vtkGetObjectMacro ( IconFrame, vtkKWFrame );
00059   vtkGetObjectMacro ( LabelOpacityButton, vtkKWPushButton );
00060   vtkGetObjectMacro ( LabelOpacityScale, vtkKWScaleWithEntry );
00061   vtkGetObjectMacro ( LabelOpacityToggleButton, vtkKWPushButton );
00062   vtkGetObjectMacro ( LabelOpacityTopLevel, vtkKWTopLevel );
00063   vtkGetObjectMacro ( LabelOutlineToggleButton, vtkKWPushButton );
00064   vtkGetObjectMacro ( LightboxTopLevel, vtkKWTopLevel );
00065   vtkGetObjectMacro ( FitToWindowButton, vtkKWPushButton );
00066   vtkGetObjectMacro ( VolumeDisplayMenuButton, vtkKWMenuButton );
00067   vtkGetObjectMacro ( LightboxButton, vtkKWMenuButton );
00068   vtkGetObjectMacro ( LightboxRowsEntry, vtkKWEntry );
00069   vtkGetObjectMacro ( LightboxColumnsEntry, vtkKWEntry );
00070   vtkGetObjectMacro ( LightboxApplyButton, vtkKWPushButton);
00071   vtkGetObjectMacro ( OrientationMenuButton, vtkKWMenuButton );
00072   vtkGetObjectMacro ( ForegroundMenuButton, vtkKWMenuButton );
00073   vtkGetObjectMacro ( BackgroundMenuButton, vtkKWMenuButton );
00074   vtkGetObjectMacro ( LabelMenuButton, vtkKWMenuButton );
00075   vtkGetObjectMacro ( MoreMenuButton, vtkKWMenuButton );
00076   vtkGetObjectMacro ( ColorCodeButton, vtkKWPushButton );
00077   vtkGetMacro ( LightboxRows, int );
00078   vtkSetMacro ( LightboxRows, int );
00079   vtkGetMacro ( LightboxColumns, int );  
00080   vtkSetMacro ( LightboxColumns, int );
00081 
00082   void RemoveWidgetObservers ( );
00083   void AddWidgetObservers ( );
00084   
00087   vtkGetObjectMacro ( SliceCompositeNode, vtkMRMLSliceCompositeNode );
00088   void SetSliceCompositeNode (vtkMRMLSliceCompositeNode *scnode)
00089     {
00090     vtkSetAndObserveMRMLNodeMacro(this->SliceCompositeNode, scnode );
00091     }
00092   vtkGetObjectMacro ( SliceNode, vtkMRMLSliceNode );
00093   void SetSliceNode (vtkMRMLSliceNode *snode)
00094     {
00095     vtkSetAndObserveMRMLNodeMacro(this->SliceNode, snode );
00096     }
00097 
00100   virtual void UpdateLayerMenus();
00101 
00104   vtkGetObjectMacro ( SliceLogic, vtkSlicerSliceLogic );
00105   void SetAndObserveSliceLogic (vtkSlicerSliceLogic *sLogic)
00106     {
00108     vtkSetAndObserveMRMLNodeMacro(this->SliceLogic, sLogic );
00109     }
00110 
00114   vtkGetMacro ( ControllerStyle, int );
00115   vtkSetMacro ( ControllerStyle, int );
00116   
00119   void ProcessWidgetEvents ( vtkObject *caller, unsigned long event, void *callData );
00120   
00123   void ProcessMRMLEvents ( vtkObject *caller, unsigned long event, void *callData );
00124 
00127   void ProcessLogicEvents ( vtkObject *caller, unsigned long event, void *callData );
00128 
00131   virtual void ApplyColorCode ( double *c );
00132   virtual void ToggleSlicesLink  ( );
00133   virtual void LinkAllSlices();
00134   virtual void UnlinkAllSlices();
00135   virtual int AllSlicesLinked ( );
00136   virtual void HideLabelOpacityScaleAndEntry ( );
00137   virtual void HideLabelOpacityScaleAndEntry ( int link );
00138   virtual void PopUpLabelOpacityScaleAndEntry ( int link );
00139   virtual void PopUpLabelOpacityScaleAndEntry ( );
00140   virtual void HideLightboxCustomLayoutFrame ( );
00141   virtual void PopUpLightboxCustomLayoutFrame ( );
00142   virtual void PopUpPrescribedSliceSpacingEntry();
00143   virtual void HidePrescribedSliceSpacingEntry();
00144   
00147   virtual void Shrink();
00148   virtual void Expand();
00149 
00150   virtual void UpdateOrientation ( int link );
00151   virtual void UpdateForegroundLayer ( int link );
00152   virtual void UpdateBackgroundLayer ( int link );
00153   virtual void UpdateLabelLayer ( int link );
00154   //virtual void RaiseVolumeDisplayPanel ( char *id );
00155   virtual void FitSliceToBackground ( int link );
00156   virtual void FitSliceToBackground ( );
00157   virtual void RotateSliceToBackground ( int link );
00158   virtual void RotateSliceToBackground ( );
00159   virtual void ToggleReformatWidget ( int link );
00160   virtual void ToggleReformatWidget ( );
00161   virtual void ToggleLabelOutline ( int link );
00162   virtual void ToggleLabelOutline ( );
00163 
00167   virtual void SliceViewerLayoutConfig(int nRows, int nColumns);
00168 
00172   virtual int UpdateCompareView(double value);
00173 
00177   virtual int UpdateLinkedView(double value);
00178 
00179   //BTX
00180   enum 
00181   {
00182     ExpandEvent = 15000,
00183     ShrinkEvent
00184   };
00185   //ETX
00186 
00187 protected:
00188   vtkSlicerSliceControllerWidget ( );
00189   virtual ~vtkSlicerSliceControllerWidget ( );
00190 
00193   virtual void CreateWidget( );
00194 
00201   void SetSliceIndexEntryValueFromOffset(double sliceOffset);
00202 
00204   int ControllerStyle;
00205 
00206   vtkKWFrame *ContainerFrame;
00207 
00208   //
00210   //
00214   vtkKWScale *OffsetScale;
00215   double OffsetScaleMin;
00216   double OffsetScaleResolution;
00217   vtkKWEntry *OffsetEntry;
00218   vtkKWEntry *SliceIndexEntry;
00219   vtkKWMenuButtonWithSpinButtonsWithLabel *OrientationSelector;
00220   vtkSlicerNodeSelectorWidget *ForegroundSelector;
00221   vtkSlicerNodeSelectorWidget *BackgroundSelector;
00222   vtkSlicerNodeSelectorWidget *LabelSelector;
00223   bool OffsetScaleActive;
00224   
00225   //
00228   vtkKWMenuButton *OrientationMenuButton;
00229   vtkKWMenuButton *ForegroundMenuButton;
00230   vtkKWMenuButton *BackgroundMenuButton;
00231   vtkKWMenuButton *LabelMenuButton;
00232 
00233   vtkKWPushButton *VisibilityToggle;
00234   vtkKWPushButton *LoadDataButton;
00235   vtkKWPushButton *LinkButton;
00236   vtkKWPushButton *LabelOpacityButton;
00237   vtkKWScaleWithEntry *LabelOpacityScale;
00238   vtkKWPushButton *LabelOpacityToggleButton;
00239   vtkKWTopLevel *LabelOpacityTopLevel;
00240   vtkKWPushButton *LabelOutlineToggleButton;
00241 
00242   vtkKWTopLevel *LightboxTopLevel;
00243   vtkSlicerFoundationIcons *FoundationIcons;
00244   vtkSlicerVisibilityIcons *VisibilityIcons;
00245   vtkSlicerToolbarIcons *ViewConfigureIcons;
00246   vtkSlicerSlicesControlIcons *SliceControlIcons;
00247   vtkKWFrame *ScaleFrame;
00248   vtkKWFrame *IconFrame;
00249   vtkKWPushButton *ColorCodeButton;
00250   vtkKWPushButton *FitToWindowButton;
00251   vtkKWMenuButton *VolumeDisplayMenuButton;
00252   vtkKWMenuButton *LightboxButton;
00253   vtkKWEntry *LightboxRowsEntry;
00254   vtkKWEntry *LightboxColumnsEntry;
00255   vtkKWPushButton *LightboxApplyButton;
00256   vtkKWMenuButton *MoreMenuButton;
00257   vtkKWSpinBoxWithLabel *PrescribedSliceSpacingEntry;
00258   vtkKWTopLevel *PrescribedSliceSpacingTopLevel;
00259   vtkKWPushButton *PrescribedSliceSpacingApplyButton;
00260   vtkKWPushButton *PrescribedSliceSpacingCancelButton;
00261   
00262   int LightboxRows;
00263   int LightboxColumns;
00264 
00265   float LastLabelOpacity;
00266   
00267   //
00269   //
00270   vtkMRMLSliceNode *SliceNode;
00271   vtkMRMLSliceCompositeNode *SliceCompositeNode;
00272 
00273   //
00275   //
00276   vtkSlicerSliceLogic *SliceLogic;
00277 
00278 
00279 private:
00280   vtkSlicerSliceControllerWidget (const vtkSlicerSliceControllerWidget &); //Not implemented
00281   void operator=(const vtkSlicerSliceControllerWidget &);         //Not implemented
00282 
00283 };
00284 
00285 #endif
00286 

Generated on 6 Apr 2011 for Slicer3 by  doxygen 1.6.1