Fraxinus  18.10
An IGT application
cxTrackingSystemIGSTKService.h
Go to the documentation of this file.
1 /*=========================================================================
2 This file is part of CustusX, an Image Guided Therapy Application.
3 
4 Copyright (c) SINTEF Department of Medical Technology.
5 All rights reserved.
6 
7 CustusX is released under a BSD 3-Clause license.
8 
9 See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details.
10 =========================================================================*/
11 
12 #ifndef CXTRACKINGSYSTEMIGSTKSERVICE_H
13 #define CXTRACKINGSYSTEMIGSTKSERVICE_H
14 
15 #include "org_custusx_core_tracking_system_igstk_Export.h"
16 
18 #include "vtkForwardDeclarations.h"
19 
20 class QDomNode;
21 class QDomDocument;
22 class QDomNodeList;
23 class QFileInfo;
24 
25 namespace cx
26 {
33 typedef boost::shared_ptr<class ManualToolAdapter> ManualToolAdapterPtr;
34 typedef boost::shared_ptr<class IgstkTrackerThread> IgstkTrackerThreadPtr;
35 typedef boost::shared_ptr<class PlaybackTime> PlaybackTimePtr;
36 
61 class org_custusx_core_tracking_system_igstk_EXPORT TrackingSystemIGSTKService : public TrackingSystemService
62 {
63 Q_OBJECT
64 
65 public:
67  virtual ~TrackingSystemIGSTKService();
68 
69  virtual QString getUid() const { return "org.custusx.core.tracking.system.igstk"; }
70  virtual std::vector<ToolPtr> getTools();
71  virtual ToolPtr getReference() { return mReference; }
72 
73  virtual void setState(const Tool::State val);
74 
75  virtual void setLoggingFolder(QString loggingFolder);
76 
77  virtual TrackerConfigurationPtr getConfiguration();
78 
79 signals:
80 
81  // internal use only
82  void configured();
83  void deconfigured();
84  void initialized();
85  void uninitialized();
86  void trackingStarted();
87  void trackingStopped();
88 
89 private slots:
90  virtual void configure();
91  virtual void deconfigure();
92  virtual void initialize();
93  virtual void uninitialize();
94  virtual void startTracking();
95  virtual void stopTracking();
96 
97  void trackerConfiguredSlot(bool on);
98  void initializedSlot(bool);
99  void trackerTrackingSlot(bool);
100 
101  void startTrackingAfterInitSlot();
102  void initializeAfterConfigSlot();
103  void uninitializeAfterTrackingStoppedSlot();
104  void deconfigureAfterUninitializedSlot();
105  void configureAfterDeconfigureSlot();
106  void globalConfigurationFileChangedSlot(QString key);
107 
108 private:
109  void setConfigurationFile(QString configurationFile);
110  void destroyTrackerThread();
111 
112  std::vector<ToolPtr> mTools;
113  ToolPtr mReference;
114 
115  IgstkTrackerThreadPtr mTrackerThread;
116 
117 #ifndef WIN32
118  bool createSymlink();
119  QFileInfo getSymlink() const;
120  void cleanupSymlink();
121 #endif //WIN32
122 };
123 
124 bool toolTypeSort(const ToolPtr tool1, const ToolPtr tool2);
125 
130 } // namespace cx
131 
132 #endif // CXTRACKINGSYSTEMIGSTKSERVICE_H
virtual ToolPtr getReference()
reference tool used by entire tracking service - NOTE: system fails if several TrackingSystemServices...
boost::shared_ptr< IgstkTrackerThread > IgstkTrackerThreadPtr
bool toolTypeSort(const ToolPtr tool1, const ToolPtr tool2)
function for sorting tools by type
boost::shared_ptr< class PlaybackTime > PlaybackTimePtr
boost::shared_ptr< class TrackerConfiguration > TrackerConfigurationPtr
Tracking System Service.
boost::shared_ptr< class ManualToolAdapter > ManualToolAdapterPtr
Interface towards one tracking system.
Namespace for all CustusX production code.
boost::shared_ptr< class Tool > ToolPtr