vtkIGTLTrackingDataControllerWindow.h

Go to the documentation of this file.
00001 /*==========================================================================
00002 
00003   Portions (c) Copyright 2008-2009 Brigham and Women's Hospital (BWH) All Rights Reserved.
00004 
00005   See Doc/copyright/copyright.txt
00006   or http://www.slicer.org/copyright/copyright.txt for details.
00007 
00008   Program:   3D Slicer
00009   Module:    $HeadURL: http://svn.slicer.org/Slicer3/trunk/Modules/OpenIGTLinkIF/vtkOpenIGTLinkIFGUI.h $
00010   Date:      $Date: 2010-04-01 11:42:15 -0400 (Thu, 01 Apr 2010) $
00011   Version:   $Revision: 12582 $
00012 
00013 ==========================================================================*/
00014 
00015 #ifndef __vtkIGTLTrackingDataControllerWindow_h
00016 #define __vtkIGTLTrackingDataControllerWindow_h
00017 
00018 // for getting display device information
00019 #ifdef WIN32
00020 #include "Windows.h"
00021 #endif
00022 
00023 #include "vtkOpenIGTLinkIFWin32Header.h"
00024 
00025 #include "vtkSmartPointer.h"
00026 //#include "vtkSlicerFiducialListWidget.h"
00027 //#include "vtkSlicerROIViewerWidget.h"
00028 //#include "vtkSlicerSecondaryViewerWidget.h"
00029 #include "vtkSlicerViewerWidget.h"
00030 #include "vtkKWMultiColumnList.h"
00031 #include "vtkKWMultiColumnListWithScrollbars.h"
00032 #include "vtkKWPushButton.h"
00033 #include "vtkKWTopLevel.h"
00034 #include "vtkSmartPointer.h"
00035 #include "vtkMRMLIGTLConnectorNode.h"
00036 #include "vtkMRMLIGTLQueryNode.h"
00037 
00038 class vtkOpenIGTLinkIFGUI;
00039 
00040 class VTK_OPENIGTLINKIF_EXPORT vtkIGTLTrackingDataControllerWindow : public vtkKWTopLevel
00041 {
00042 public:
00043 
00044   vtkGetObjectMacro(MRMLScene, vtkMRMLScene);
00045   vtkSetObjectMacro(MRMLScene, vtkMRMLScene);
00046 
00047   vtkGetObjectMacro(Connector, vtkMRMLIGTLConnectorNode);
00048   vtkSetObjectMacro(Connector, vtkMRMLIGTLConnectorNode);
00049 
00050   static vtkIGTLTrackingDataControllerWindow *New();  
00051   vtkTypeRevisionMacro(vtkIGTLTrackingDataControllerWindow,vtkKWTopLevel);
00052   void PrintSelf(ostream& os, vtkIndent indent);
00053 
00054   void SetInGUICallbackFlag (int flag) {
00055     this->InGUICallbackFlag = flag;
00056     }
00057   vtkGetMacro(InGUICallbackFlag, int);
00058   void SetInMRMLCallbackFlag (int flag) {
00059     this->InMRMLCallbackFlag = flag;
00060   }
00061   vtkGetMacro(InMRMLCallbackFlag, int);
00062 
00063   void SetAndObserveMRMLScene ( vtkMRMLScene *mrml )
00064     {
00065     vtkMRMLScene *oldValue = this->MRMLScene;
00066     this->MRMLObserverManager->SetAndObserveObject ( vtkObjectPointer( &this->MRMLScene), (vtkObject*)mrml );
00067     if ( oldValue != this->MRMLScene )
00068       {
00069       this->InvokeEvent (vtkCommand::ModifiedEvent);
00070       }
00071     }
00072 
00073   void SetAndObserveMRMLSceneEvents ( vtkMRMLScene *mrml, vtkIntArray *events )
00074     {
00075     vtkObject *oldValue = this->MRMLScene;
00076     this->MRMLObserverManager->SetAndObserveObjectEvents ( vtkObjectPointer( &this->MRMLScene), mrml, events );
00077     if ( oldValue != this->MRMLScene )
00078       {
00079       this->InvokeEvent (vtkCommand::ModifiedEvent);
00080       }
00081     }
00082 
00083   void DisplayOnWindow();
00084   void SetOpenIGTLinkIFGUI(vtkOpenIGTLinkIFGUI* moduleGUI)
00085   {
00086     this->ModuleGUI = moduleGUI;
00087   }
00088 
00089 protected:
00090 
00091   vtkIGTLTrackingDataControllerWindow();
00092   ~vtkIGTLTrackingDataControllerWindow();  
00093 
00094   static void MRMLCallback(vtkObject *caller,
00095                            unsigned long eid, void *clientData, void *callData );
00096 
00097   static void GUICallback(vtkObject *caller,
00098                           unsigned long eid, void *clientData, void *callData );
00099   
00100   
00101   virtual void CreateWidget();
00102   virtual void ProcessGUIEvents(vtkObject *caller, unsigned long event, void *callData);
00103   virtual void ProcessMRMLEvents(vtkObject *caller, unsigned long event, void *callData);
00104   virtual void AddGUIObservers();
00105   virtual void RemoveGUIObservers();
00106   
00107  protected:
00108   
00109   //----------------------------------------------------------------
00110   // GUI widgets and Callbacks
00111   //----------------------------------------------------------------
00112   vtkKWFrame* MainFrame;
00113   vtkSlicerViewerWidget* ViewerWidget;
00114   
00115   vtkKWMultiColumnListWithScrollbars* RemoteDataList;
00116 
00117   vtkKWPushButton* StartTrackingButton;
00118   vtkKWPushButton* StopTrackingButton;
00119   vtkKWPushButton* CloseButton;
00120 
00121   vtkCallbackCommand *MRMLCallbackCommand;  
00122   vtkCallbackCommand *GUICallbackCommand;
00123   vtkObserverManager *MRMLObserverManager;
00124   int InGUICallbackFlag;
00125   int InMRMLCallbackFlag;
00126   int IsObserverAddedFlag;
00127   
00128   //----------------------------------------------------------------
00129   // Logic Values
00130   //----------------------------------------------------------------
00131   bool MultipleMonitorsAvailable; 
00132   int  WindowPosition[2]; // virtual screen position in pixels
00133   int  WindowSize[2]; // virtual screen size in pixels
00134   
00135   vtkOpenIGTLinkIFGUI* ModuleGUI;
00136   vtkMRMLScene* MRMLScene;
00137   
00138   vtkMRMLIGTLConnectorNode* Connector;
00139   
00140   vtkMRMLIGTLQueryNode* TrackingDataQueryNode;
00141   //BTX
00142   std::list<vtkMRMLIGTLQueryNode*> ImageQueryNodeList;
00143   //ETX
00144 
00145  private:
00146   vtkIGTLTrackingDataControllerWindow(const vtkIGTLTrackingDataControllerWindow&);
00147   void operator=(const vtkIGTLTrackingDataControllerWindow&);
00148 
00149 
00150 };
00151 
00152 #endif

Generated on 6 Apr 2011 for Slicer3 by  doxygen 1.6.1