00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date: 2009-03-21 19:27:37 +0100 (Sa, 21 Mrz 2009) $ 00006 Version: $Revision: 16719 $ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #ifndef _QmitkNDIConfigurationWidget_H_INCLUDED 00019 #define _QmitkNDIConfigurationWidget_H_INCLUDED 00020 00021 #include "ui_QmitkNDIConfigurationWidget.h" 00022 #include "mitkNDITrackingDevice.h" 00023 #include "mitkTrackingDeviceSource.h" 00024 #include "QStringList" 00025 #include "MitkIGTUIExports.h" 00026 #include "mitkNodePredicateBase.h" 00027 00028 class QmitkNDIToolDelegate; 00029 namespace mitk 00030 { 00031 class DataStorage; 00032 }; 00033 00043 class MitkIGTUI_EXPORT QmitkNDIConfigurationWidget : public QWidget 00044 { 00045 Q_OBJECT // this is needed for all Qt objects that should have a MOC object (everything that derives from QObject) 00046 public: 00047 QmitkNDIConfigurationWidget(QWidget* parent); 00048 virtual ~QmitkNDIConfigurationWidget(); 00049 00050 std::string GetDeviceName() const; 00051 mitk::NDITrackingDevice* GetTracker() const; 00052 mitk::DataStorage* GetDataStorage() const; 00053 mitk::NodePredicateBase* GetPredicate() const; 00054 const QStringList& GetToolTypes() const; 00055 void SetToolTypes(const QStringList& types); 00056 void SetDataStorage(mitk::DataStorage* ds); 00057 void SetPredicate(mitk::NodePredicateBase::Pointer p); 00058 void SetTagPropertyName(const std::string& name); 00059 void SetTagProperty(mitk::BaseProperty::Pointer prop); 00060 00061 const QString GetToolType(unsigned int index) const; 00062 const QString GetToolName(unsigned int index) const; 00063 QMap<QString, unsigned int> GetToolAndTypes() const; 00064 QList<unsigned int> GetToolsByToolType(QString toolType) const; 00065 mitk::DataNode* GetNode(unsigned int index) const; 00066 00067 signals: 00068 void ToolsAdded(QStringList tools); 00069 void ToolsChanged(); 00070 void Connected(); 00071 void Disconnected(); 00072 public slots: 00073 void SetDeviceName(const char* dev); 00074 protected slots: 00075 void OnConnect(); 00076 void OnDisconnect(); 00077 void OnDiscoverTools(); 00078 void OnDiscoverDevices(); 00079 void OnAddPassiveTool(); 00080 void UpdateTrackerFromToolTable(const QModelIndex & topLeft, const QModelIndex & /*bottomRight*/); 00081 00082 protected: 00083 typedef QMap<QString, mitk::TrackingDeviceType> PortDeviceMap; // key is port name (e.g. "COM1", "/dev/ttyS0"), value will be filled with the type of tracking device at this port 00091 void ScanPortsForNDITrackingDevices(PortDeviceMap& portsAndDevices); 00092 mitk::TrackingDeviceType ScanPort(QString port); 00093 00094 QStringList GetToolNamesList(); 00095 00096 void CreateTracker(); 00097 void SetupTracker(); 00098 QString GetStatusText(); 00099 00100 void UpdateWidgets(); 00101 void UpdateToolTable(); 00102 virtual void CreateQtPartControl(QWidget *parent); 00103 virtual void CreateConnections(); 00104 void HidePolarisOptionsGroupbox( bool on ); 00105 void HideAuroraOptionsGroupbox( bool on ); 00106 00107 Ui::QmitkNDIConfigurationWidget* m_Controls; 00108 mitk::NDITrackingDevice::Pointer m_Tracker; 00109 mitk::TrackingDeviceSource::Pointer m_Source; 00110 QmitkNDIToolDelegate* m_Delegate; 00111 }; 00112 #endif // _QmitkNDIConfigurationWidget_H_INCLUDED 00113