diff --git a/Modules/IGTUI/Qmitk/QmitkNavigationToolCreationWizardWidget.cpp b/Modules/IGTUI/Qmitk/QmitkNavigationToolCreationWizardWidget.cpp index 81f0c99468..fca65a4a79 100644 --- a/Modules/IGTUI/Qmitk/QmitkNavigationToolCreationWizardWidget.cpp +++ b/Modules/IGTUI/Qmitk/QmitkNavigationToolCreationWizardWidget.cpp @@ -1,192 +1,225 @@ /*========================================================================= Program: Medical Imaging & Interaction Toolkit Language: C++ Date: $Date: 2009-05-12 19:14:45 +0200 (Di, 12 Mai 2009) $ Version: $Revision: 1.12 $ Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #include "QmitkNavigationToolCreationWizardWidget.h" //mitk headers #include "mitkTrackingTypes.h" #include #include //qt headers #include #include //poco headers #include // vtk #include const std::string QmitkNavigationToolCreationWizardWidget::VIEW_ID = "org.mitk.views.navigationtoolcreationwizardwidget"; QmitkNavigationToolCreationWizardWidget::QmitkNavigationToolCreationWizardWidget(QWidget* parent, Qt::WindowFlags f) : QWidget(parent, f) { m_Controls = NULL; CreateQtPartControl(this); CreateConnections(); //initialize UI components m_Controls->m_SurfaceChooser->SetDataStorage(m_DataStorage); m_Controls->m_SurfaceChooser->SetAutoSelectNewItems(true); m_Controls->m_SurfaceChooser->SetPredicate(mitk::NodePredicateDataType::New("Surface")); } QmitkNavigationToolCreationWizardWidget::~QmitkNavigationToolCreationWizardWidget() { } void QmitkNavigationToolCreationWizardWidget::CreateQtPartControl(QWidget *parent) { if (!m_Controls) { // create GUI widgets m_Controls = new Ui::QmitkNavigationToolCreationWizardWidgetControls; m_Controls->setupUi(parent); } } void QmitkNavigationToolCreationWizardWidget::CreateConnections() { if ( m_Controls ) { connect( (QObject*)(m_Controls->m_cancel), SIGNAL(clicked()), this, SLOT(OnCancel()) ); connect( (QObject*)(m_Controls->m_finished), SIGNAL(clicked()), this, SLOT(OnFinished()) ); connect( (QObject*)(m_Controls->m_LoadSurface), SIGNAL(clicked()), this, SLOT(OnLoadSurface()) ); connect( (QObject*)(m_Controls->m_LoadCalibrationFile), SIGNAL(clicked()), this, SLOT(OnLoadCalibrationFile()) ); } } void QmitkNavigationToolCreationWizardWidget::Initialize(mitk::DataStorage* dataStorage, std::string supposedIdentifier) { m_DataStorage = dataStorage; m_Controls->m_IdentifierEdit->setText(QString(supposedIdentifier.c_str())); } void QmitkNavigationToolCreationWizardWidget::SetTrackingDeviceType(mitk::TrackingDeviceType type, bool changeable) { switch(type) { case mitk::NDIAurora: m_Controls->m_TrackingDeviceTypeChooser->setCurrentIndex(0);break; case mitk::NDIPolaris: m_Controls->m_TrackingDeviceTypeChooser->setCurrentIndex(1);break; case mitk::ClaronMicron: m_Controls->m_TrackingDeviceTypeChooser->setCurrentIndex(2);break; default: m_Controls->m_TrackingDeviceTypeChooser->setCurrentIndex(0); } m_Controls->m_TrackingDeviceTypeChooser->setEnabled(changeable); } //################################################################################## //############################## slots ############################ //################################################################################## void QmitkNavigationToolCreationWizardWidget::OnFinished() { //here we create a new tool m_CreatedTool = mitk::NavigationTool::New(); //create DataNode... mitk::DataNode::Pointer newNode = mitk::DataNode::New(); newNode->SetName(m_Controls->m_ToolNameEdit->text().toLatin1()); if(m_Controls->m_Surface_Use_Sphere->isChecked()) { //create small sphere and use it as surface mitk::Surface::Pointer mySphere = mitk::Surface::New(); vtkSphereSource *vtkData = vtkSphereSource::New(); vtkData->SetRadius(3.0f); vtkData->SetCenter(0.0, 0.0, 0.0); vtkData->Update(); mySphere->SetVtkPolyData(vtkData->GetOutput()); vtkData->Delete(); newNode->SetData(mySphere); } else {newNode->SetData(m_Controls->m_SurfaceChooser->GetSelectedNode()->GetData());} m_CreatedTool->SetDataNode(newNode); //fill NavigationTool object m_CreatedTool->SetCalibrationFile(m_Controls->m_CalibrationFileName->text().toAscii().data()); m_CreatedTool->SetIdentifier(m_Controls->m_IdentifierEdit->text().toAscii().data()); m_CreatedTool->SetSerialNumber(m_Controls->m_SerialNumberEdit->text().toAscii().data()); //Tracking Device if (m_Controls->m_TrackingDeviceTypeChooser->currentText()=="NDI Aurora") m_CreatedTool->SetTrackingDeviceType(mitk::NDIAurora); else if (m_Controls->m_TrackingDeviceTypeChooser->currentText()=="NDI Polaris") m_CreatedTool->SetTrackingDeviceType(mitk::NDIPolaris); else if (m_Controls->m_TrackingDeviceTypeChooser->currentText()=="Claron Technology Micron Tracker") m_CreatedTool->SetTrackingDeviceType(mitk::ClaronMicron); else m_CreatedTool->SetTrackingDeviceType(mitk::TrackingSystemNotSpecified); //ToolType if (m_Controls->m_ToolTypeChooser->currentText()=="Instrument") m_CreatedTool->SetType(mitk::NavigationTool::Instrument); else if (m_Controls->m_ToolTypeChooser->currentText()=="Fiducial") m_CreatedTool->SetType(mitk::NavigationTool::Fiducial); else if (m_Controls->m_ToolTypeChooser->currentText()=="Skinmarker") m_CreatedTool->SetType(mitk::NavigationTool::Skinmarker); else m_CreatedTool->SetType(mitk::NavigationTool::Unknown); emit NavigationToolFinished(); } void QmitkNavigationToolCreationWizardWidget::OnCancel() { m_CreatedTool = NULL; emit Canceled(); } void QmitkNavigationToolCreationWizardWidget::OnLoadSurface() { std::string filename = QFileDialog::getOpenFileName(NULL,tr("Open Surface"), "/", "*.stl").toLatin1().data(); mitk::STLFileReader::Pointer stlReader = mitk::STLFileReader::New(); try { stlReader->SetFileName( filename.c_str() ); stlReader->Update(); } catch (...) { } if ( stlReader->GetOutput() == NULL ); else { mitk::DataNode::Pointer newNode = mitk::DataNode::New(); newNode->SetName(filename); newNode->SetData(stlReader->GetOutput()); m_DataStorage->Add(newNode); } } void QmitkNavigationToolCreationWizardWidget::OnLoadCalibrationFile() { m_Controls->m_CalibrationFileName->setText(QFileDialog::getOpenFileName(NULL,tr("Open Calibration File"), "/", "*.*")); } +void QmitkNavigationToolCreationWizardWidget::SetDefaultData(mitk::NavigationTool::Pointer DefaultTool) + { + m_Controls->m_ToolNameEdit->setText(QString(DefaultTool->GetDataNode()->GetName().c_str())); + m_Controls->m_IdentifierEdit->setText(QString(DefaultTool->GetIdentifier().c_str())); + m_Controls->m_SerialNumberEdit->setText(QString(DefaultTool->GetSerialNumber().c_str())); + switch(DefaultTool->GetTrackingDeviceType()) + { + case mitk::NDIAurora: + m_Controls->m_TrackingDeviceTypeChooser->setCurrentIndex(0);break; + case mitk::NDIPolaris: + m_Controls->m_TrackingDeviceTypeChooser->setCurrentIndex(1);break; + case mitk::ClaronMicron: + m_Controls->m_TrackingDeviceTypeChooser->setCurrentIndex(2);break; + default: + m_Controls->m_TrackingDeviceTypeChooser->setCurrentIndex(0); + } + m_Controls->m_CalibrationFileName->setText(QString(DefaultTool->GetCalibrationFile().c_str())); + switch(DefaultTool->GetType()) + { + case mitk::NavigationTool::Instrument: + m_Controls->m_ToolTypeChooser->setCurrentIndex(0); break; + case mitk::NavigationTool::Fiducial: + m_Controls->m_ToolTypeChooser->setCurrentIndex(1); break; + case mitk::NavigationTool::Skinmarker: + m_Controls->m_ToolTypeChooser->setCurrentIndex(2); break; + case mitk::NavigationTool::Unknown: + m_Controls->m_ToolTypeChooser->setCurrentIndex(3); break; + } + + m_Controls->m_SurfaceChooser->SetSelectedNode(DefaultTool->GetDataNode()); + + } + //################################################################################## -//############################## private help methods ############################## +//############################## internal help methods ############################# //################################################################################## void QmitkNavigationToolCreationWizardWidget::MessageBox(std::string s) { QMessageBox msgBox; msgBox.setText(s.c_str()); msgBox.exec(); } \ No newline at end of file diff --git a/Modules/IGTUI/Qmitk/QmitkNavigationToolCreationWizardWidget.h b/Modules/IGTUI/Qmitk/QmitkNavigationToolCreationWizardWidget.h index 1c0324aea3..dd021f2383 100644 --- a/Modules/IGTUI/Qmitk/QmitkNavigationToolCreationWizardWidget.h +++ b/Modules/IGTUI/Qmitk/QmitkNavigationToolCreationWizardWidget.h @@ -1,98 +1,101 @@ /*========================================================================= Program: Medical Imaging & Interaction Toolkit Language: C++ Date: $Date: 2009-05-12 19:14:45 +0200 (Di, 12 Mai 2009) $ Version: $Revision: 1.12 $ Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #ifndef QmitkNavigationToolCreationWizardWidget_H #define QmitkNavigationToolCreationWizardWidget_H //QT headers #include //mitk headers #include "MitkIGTUIExports.h" #include #include #include //ui header #include "ui_QmitkNavigationToolCreationWizardWidget.h" /** Documentation: * \brief An object of this class offers an UI to create new NavigationTools * * Be sure to call the Initialize-methode before you start the widget * otherwise some errors might occure. * * \ingroup IGTUI */ class MitkIGTUI_EXPORT QmitkNavigationToolCreationWizardWidget : public QWidget { Q_OBJECT public: static const std::string VIEW_ID; /** @brief Initializes the widget. * @param dataStorage The data storage is needed to offer the possibility to choose surfaces from the data storage for tool visualization. * @param supposedIdentifier This Identifier is supposed for the user. It is needed because every identifier in a navigation tool storage must be unique and we don't know the others. */ void Initialize(mitk::DataStorage* dataStorage, std::string supposedIdentifier); /** @brief Sets the default tracking device type. You may also define if it is changeable or not.*/ void SetTrackingDeviceType(mitk::TrackingDeviceType type, bool changeable = true); + /** @brief Sets the default data of all input fields. The default data is used from the default tool which is given as parameter. */ + void SetDefaultData(mitk::NavigationTool::Pointer DefaultTool); + QmitkNavigationToolCreationWizardWidget(QWidget* parent = 0, Qt::WindowFlags f = 0); ~QmitkNavigationToolCreationWizardWidget(); /** @return Returns the created tool. Returns NULL if no tool was created yet. */ itkGetConstMacro(CreatedTool,mitk::NavigationTool::Pointer); signals: /** @brief This signal is emited if the user finished the creation of the tool. */ void NavigationToolFinished(); /** @brief This signal is emited if the user canceld the creation of the tool. */ void Canceled(); protected slots: void OnCancel(); void OnFinished(); void OnLoadSurface(); void OnLoadCalibrationFile(); protected: /// \brief Creation of the connections virtual void CreateConnections(); virtual void CreateQtPartControl(QWidget *parent); Ui::QmitkNavigationToolCreationWizardWidgetControls* m_Controls; /** @brief holds the DataStorage */ mitk::DataStorage* m_DataStorage; /** @brief this pointer holds the tool which is created */ mitk::NavigationTool::Pointer m_CreatedTool; //############## private help methods ####################### void MessageBox(std::string s); }; #endif \ No newline at end of file