Public Member Functions | Static Public Attributes | Protected Slots | Protected Member Functions | Protected Attributes

QmitkNavigationToolManagementWidget Class Reference

An object of this class offers an UI to manage NavigationTools and NavigationToolStorages. This means a user may create, save and load single NavigationTools and/or NavigationToolStorages with this widget. More...

#include <QmitkNavigationToolManagementWidget.h>

Collaboration diagram for QmitkNavigationToolManagementWidget:
Collaboration graph
[legend]

List of all members.

Public Member Functions

void Initialize (mitk::DataStorage *dataStorage)
 QmitkNavigationToolManagementWidget (QWidget *parent=0, Qt::WindowFlags f=0)
 ~QmitkNavigationToolManagementWidget ()

Static Public Attributes

static const std::string VIEW_ID = "org.mitk.views.navigationtoolmanagementwidget"

Protected Slots

void OnAddTool ()
void OnDeleteTool ()
void OnEditTool ()
void OnLoadSingleTool ()
void OnSaveSingleTool ()
void OnLoadStorage ()
void OnSaveStorage ()
void OnAddToolCancel ()
void OnAddToolSave ()
void OnLoadSurface ()
void OnLoadCalibrationFile ()

Protected Member Functions

virtual void CreateConnections ()
 Creation of the connections.
virtual void CreateQtPartControl (QWidget *parent)
void MessageBox (std::string s)
void UpdateToolTable ()

Protected Attributes

Ui::QmitkNavigationToolManagementWidgetControlsm_Controls
mitk::DataStoragem_DataStorage
 holds the DataStorage
mitk::NavigationToolStorage::Pointer m_NavigationToolStorage
 holds the NavigationToolStorage we are working with.
bool m_edit
 shows if we are in edit mode, if not we create new navigation tool objects.

Detailed Description

An object of this class offers an UI to manage NavigationTools and NavigationToolStorages. This means a user may create, save and load single NavigationTools and/or NavigationToolStorages with this widget.

Documentation: Be sure to call the Initialize-methode before you start the widget otherwise some errors might occure.

Definition at line 42 of file QmitkNavigationToolManagementWidget.h.


Constructor & Destructor Documentation

QmitkNavigationToolManagementWidget::QmitkNavigationToolManagementWidget ( QWidget *  parent = 0,
Qt::WindowFlags  f = 0 
)
QmitkNavigationToolManagementWidget::~QmitkNavigationToolManagementWidget (  )

Definition at line 47 of file QmitkNavigationToolManagementWidget.cpp.

{
}

Member Function Documentation

void QmitkNavigationToolManagementWidget::CreateConnections (  ) [protected, virtual]

Creation of the connections.

Definition at line 61 of file QmitkNavigationToolManagementWidget.cpp.

References Ui_QmitkNavigationToolManagementWidgetControls::m_AddTool, Ui_QmitkNavigationToolManagementWidgetControls::m_AddToolCancel, Ui_QmitkNavigationToolManagementWidgetControls::m_AddToolSave, m_Controls, Ui_QmitkNavigationToolManagementWidgetControls::m_DeleteTool, Ui_QmitkNavigationToolManagementWidgetControls::m_EditTool, Ui_QmitkNavigationToolManagementWidgetControls::m_LoadCalibrationFile, Ui_QmitkNavigationToolManagementWidgetControls::m_LoadSingleTool, Ui_QmitkNavigationToolManagementWidgetControls::m_LoadStorage, Ui_QmitkNavigationToolManagementWidgetControls::m_LoadSurface, Ui_QmitkNavigationToolManagementWidgetControls::m_SaveSingleTool, Ui_QmitkNavigationToolManagementWidgetControls::m_SaveStorage, OnAddTool(), OnAddToolCancel(), OnAddToolSave(), OnDeleteTool(), OnEditTool(), OnLoadCalibrationFile(), OnLoadSingleTool(), OnLoadStorage(), OnLoadSurface(), OnSaveSingleTool(), and OnSaveStorage().

Referenced by QmitkNavigationToolManagementWidget().

  {
    if ( m_Controls )
    {
      //main widget page:
      connect( (QObject*)(m_Controls->m_AddTool), SIGNAL(clicked()), this, SLOT(OnAddTool()) );
      connect( (QObject*)(m_Controls->m_DeleteTool), SIGNAL(clicked()), this, SLOT(OnDeleteTool()) );
      connect( (QObject*)(m_Controls->m_EditTool), SIGNAL(clicked()), this, SLOT(OnEditTool()) );
      connect( (QObject*)(m_Controls->m_LoadSingleTool), SIGNAL(clicked()), this, SLOT(OnLoadSingleTool()) );
      connect( (QObject*)(m_Controls->m_SaveSingleTool), SIGNAL(clicked()), this, SLOT(OnSaveSingleTool()) );
      connect( (QObject*)(m_Controls->m_LoadStorage), SIGNAL(clicked()), this, SLOT(OnLoadStorage()) );
      connect( (QObject*)(m_Controls->m_SaveStorage), SIGNAL(clicked()), this, SLOT(OnSaveStorage()) );
          
      //widget page "add tool":
      connect( (QObject*)(m_Controls->m_AddToolCancel), SIGNAL(clicked()), this, SLOT(OnAddToolCancel()) );
      connect( (QObject*)(m_Controls->m_AddToolSave), SIGNAL(clicked()), this, SLOT(OnAddToolSave()) );
      connect( (QObject*)(m_Controls->m_LoadSurface), SIGNAL(clicked()), this, SLOT(OnLoadSurface()) );
      connect( (QObject*)(m_Controls->m_LoadCalibrationFile), SIGNAL(clicked()), this, SLOT(OnLoadCalibrationFile()) );
    }
  }
void QmitkNavigationToolManagementWidget::CreateQtPartControl ( QWidget *  parent ) [protected, virtual]
void QmitkNavigationToolManagementWidget::Initialize ( mitk::DataStorage dataStorage )

Definition at line 82 of file QmitkNavigationToolManagementWidget.cpp.

References m_DataStorage.

  {
  m_DataStorage = dataStorage;
  }
void QmitkNavigationToolManagementWidget::MessageBox ( std::string  s ) [protected]

Definition at line 331 of file QmitkNavigationToolManagementWidget.cpp.

Referenced by OnDeleteTool(), OnEditTool(), OnLoadSingleTool(), OnLoadStorage(), OnSaveSingleTool(), and OnSaveStorage().

  {
  QMessageBox msgBox;
  msgBox.setText(s.c_str());
  msgBox.exec();
  }
void QmitkNavigationToolManagementWidget::OnAddTool (  ) [protected, slot]
void QmitkNavigationToolManagementWidget::OnAddToolCancel (  ) [protected, slot]
void QmitkNavigationToolManagementWidget::OnAddToolSave (  ) [protected, slot]

Definition at line 214 of file QmitkNavigationToolManagementWidget.cpp.

References mitk::DataStorage::Add(), mitk::ClaronMicron, mitk::NavigationTool::Fiducial, QmitkDataStorageComboBox::GetSelectedNode(), mitk::NavigationTool::Instrument, Ui_QmitkNavigationToolManagementWidgetControls::m_CalibrationFileName, m_Controls, m_DataStorage, m_edit, Ui_QmitkNavigationToolManagementWidgetControls::m_IdentifierEdit, Ui_QmitkNavigationToolManagementWidgetControls::m_MainWidgets, m_NavigationToolStorage, Ui_QmitkNavigationToolManagementWidgetControls::m_SerialNumberEdit, Ui_QmitkNavigationToolManagementWidgetControls::m_SurfaceChooser, Ui_QmitkNavigationToolManagementWidgetControls::m_ToolList, Ui_QmitkNavigationToolManagementWidgetControls::m_ToolNameEdit, Ui_QmitkNavigationToolManagementWidgetControls::m_ToolTypeChooser, Ui_QmitkNavigationToolManagementWidgetControls::m_TrackingDeviceTypeChooser, mitk::NDIAurora, mitk::NDIPolaris, mitk::DataNode::New(), mitk::NavigationTool::New(), mitk::NavigationTool::Skinmarker, mitk::TrackingSystemNotSpecified, mitk::NavigationTool::Unknown, and UpdateToolTable().

Referenced by CreateConnections().

  {
    mitk::NavigationTool::Pointer workTool;
   
    if (m_edit) //here we edit a existing tool
      {
      workTool = m_NavigationToolStorage->GetTool(m_Controls->m_ToolList->currentIndex().row());
      
      //edit existing DataNode...
      workTool->GetDataNode()->SetName(m_Controls->m_ToolNameEdit->text().toLatin1());
      workTool->GetDataNode()->SetData(m_Controls->m_SurfaceChooser->GetSelectedNode()->GetData());
      }
    else //here we create a new tool
      {
      workTool = mitk::NavigationTool::New();
    
      //create DataNode...
      mitk::DataNode::Pointer newNode = mitk::DataNode::New();
      newNode->SetName(m_Controls->m_ToolNameEdit->text().toLatin1());
      newNode->SetData(m_Controls->m_SurfaceChooser->GetSelectedNode()->GetData());
      m_DataStorage->Add(newNode);
      workTool->SetDataNode(newNode);
      }

    //fill NavigationTool object
    workTool->SetCalibrationFile(m_Controls->m_CalibrationFileName->text().toAscii().data());
    workTool->SetIdentifier(m_Controls->m_IdentifierEdit->text().toAscii().data());
    workTool->SetSerialNumber(m_Controls->m_SerialNumberEdit->text().toAscii().data());
    //Tracking Device
    if (m_Controls->m_TrackingDeviceTypeChooser->currentText()=="NDI Aurora") workTool->SetTrackingDeviceType(mitk::NDIAurora);
    else if (m_Controls->m_TrackingDeviceTypeChooser->currentText()=="NDI Polaris") workTool->SetTrackingDeviceType(mitk::NDIPolaris);
    else if (m_Controls->m_TrackingDeviceTypeChooser->currentText()=="Claron Technology Micron Tracker") workTool->SetTrackingDeviceType(mitk::ClaronMicron);
    else workTool->SetTrackingDeviceType(mitk::TrackingSystemNotSpecified);
    //ToolType
    if (m_Controls->m_ToolTypeChooser->currentText()=="Instrument") workTool->SetType(mitk::NavigationTool::Instrument);
    else if (m_Controls->m_ToolTypeChooser->currentText()=="Fiducial") workTool->SetType(mitk::NavigationTool::Fiducial);
    else if (m_Controls->m_ToolTypeChooser->currentText()=="Skinmarker") workTool->SetType(mitk::NavigationTool::Skinmarker);
    else workTool->SetType(mitk::NavigationTool::Unknown);

    if (!m_edit) m_NavigationToolStorage->AddTool(workTool);

    UpdateToolTable();

    m_Controls->m_MainWidgets->setCurrentIndex(0);
  }
void QmitkNavigationToolManagementWidget::OnDeleteTool (  ) [protected, slot]

Definition at line 107 of file QmitkNavigationToolManagementWidget.cpp.

References m_Controls, m_DataStorage, m_NavigationToolStorage, Ui_QmitkNavigationToolManagementWidgetControls::m_ToolList, MessageBox(), mitk::DataStorage::Remove(), and UpdateToolTable().

Referenced by CreateConnections().

  {
    //if no item is selected, show error message:
    if (m_Controls->m_ToolList->currentItem() == NULL) {MessageBox("Error: Please select tool first!");return;}

    m_DataStorage->Remove(m_NavigationToolStorage->GetTool(m_Controls->m_ToolList->currentIndex().row())->GetDataNode());
    m_NavigationToolStorage->DeleteTool(m_Controls->m_ToolList->currentIndex().row());
    UpdateToolTable();

  }
void QmitkNavigationToolManagementWidget::OnEditTool (  ) [protected, slot]

Definition at line 118 of file QmitkNavigationToolManagementWidget.cpp.

References Ui_QmitkNavigationToolManagementWidgetControls::AddToolLabel, mitk::ClaronMicron, mitk::NavigationTool::Fiducial, mitk::NavigationTool::Instrument, Ui_QmitkNavigationToolManagementWidgetControls::m_CalibrationFileName, m_Controls, m_DataStorage, m_edit, Ui_QmitkNavigationToolManagementWidgetControls::m_IdentifierEdit, Ui_QmitkNavigationToolManagementWidgetControls::m_MainWidgets, m_NavigationToolStorage, Ui_QmitkNavigationToolManagementWidgetControls::m_SerialNumberEdit, Ui_QmitkNavigationToolManagementWidgetControls::m_SurfaceChooser, Ui_QmitkNavigationToolManagementWidgetControls::m_ToolList, Ui_QmitkNavigationToolManagementWidgetControls::m_ToolNameEdit, Ui_QmitkNavigationToolManagementWidgetControls::m_ToolTypeChooser, Ui_QmitkNavigationToolManagementWidgetControls::m_TrackingDeviceTypeChooser, MessageBox(), mitk::NDIAurora, mitk::NDIPolaris, QmitkDataStorageComboBox::SetDataStorage(), QmitkDataStorageComboBox::SetSelectedNode(), mitk::NavigationTool::Skinmarker, and mitk::NavigationTool::Unknown.

Referenced by CreateConnections().

  {
    //if no item is selected, show error message:
    if (m_Controls->m_ToolList->currentItem() == NULL) {MessageBox("Error: Please select tool first!");return;}

    //initialize UI components
    m_Controls->m_SurfaceChooser->SetDataStorage(m_DataStorage);
    m_Controls->AddToolLabel->setText("<b>Edit Tool:</b>");
    m_Controls->m_MainWidgets->setCurrentIndex(1);

    //fill forms
    mitk::NavigationTool::Pointer selectedTool = m_NavigationToolStorage->GetTool(m_Controls->m_ToolList->currentIndex().row());
    m_Controls->m_ToolNameEdit->setText(QString(selectedTool->GetDataNode()->GetName().c_str()));
    m_Controls->m_IdentifierEdit->setText(QString(selectedTool->GetIdentifier().c_str()));
    m_Controls->m_SerialNumberEdit->setText(QString(selectedTool->GetSerialNumber().c_str()));
    switch(selectedTool->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(selectedTool->GetCalibrationFile().c_str()));
    switch(selectedTool->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(selectedTool->GetDataNode());
    m_edit = true;
  }
void QmitkNavigationToolManagementWidget::OnLoadCalibrationFile (  ) [protected, slot]

Definition at line 288 of file QmitkNavigationToolManagementWidget.cpp.

References Ui_QmitkNavigationToolManagementWidgetControls::m_CalibrationFileName, and m_Controls.

Referenced by CreateConnections().

  {
    m_Controls->m_CalibrationFileName->setText(QFileDialog::getOpenFileName(NULL,tr("Open Calibration File"), "/", "*.*"));
  }
void QmitkNavigationToolManagementWidget::OnLoadSingleTool (  ) [protected, slot]

Definition at line 161 of file QmitkNavigationToolManagementWidget.cpp.

References m_DataStorage, m_NavigationToolStorage, MessageBox(), mitk::NavigationToolReader::New(), mitk::DataStorage::Remove(), and UpdateToolTable().

Referenced by CreateConnections().

  {
    mitk::NavigationToolReader::Pointer myReader = mitk::NavigationToolReader::New(m_DataStorage);
    mitk::NavigationTool::Pointer readTool = myReader->DoRead(QFileDialog::getOpenFileName(NULL,tr("Open Navigation Tool"), "/", "*.*").toAscii().data());
    if (readTool.IsNull()) MessageBox("Error: " + myReader->GetErrorMessage());
    else 
      { 
      if (!m_NavigationToolStorage->AddTool(readTool))
        {
        MessageBox("Error: Can't add tool!");
        m_DataStorage->Remove(readTool->GetDataNode());
        }
      UpdateToolTable();
      }
  }
void QmitkNavigationToolManagementWidget::OnLoadStorage (  ) [protected, slot]

Definition at line 187 of file QmitkNavigationToolManagementWidget.cpp.

References m_Controls, m_DataStorage, m_NavigationToolStorage, Ui_QmitkNavigationToolManagementWidgetControls::m_StorageName, MessageBox(), mitk::NavigationToolStorageDeserializer::New(), and UpdateToolTable().

Referenced by CreateConnections().

  {
    mitk::NavigationToolStorageDeserializer::Pointer myDeserializer = mitk::NavigationToolStorageDeserializer::New(m_DataStorage);
    std::string filename = QFileDialog::getOpenFileName(NULL,tr("Open Navigation Tool"), "/", "*.*").toAscii().data();
    mitk::NavigationToolStorage::Pointer tempStorage = myDeserializer->Deserialize(filename);
    if (tempStorage.IsNull()) MessageBox("Error" + myDeserializer->GetErrorMessage());
    else 
      {
      m_NavigationToolStorage = tempStorage;
      m_Controls->m_StorageName->setText(filename.c_str());
      }
    UpdateToolTable();
  }
void QmitkNavigationToolManagementWidget::OnLoadSurface (  ) [protected, slot]

Definition at line 265 of file QmitkNavigationToolManagementWidget.cpp.

References mitk::DataStorage::Add(), m_DataStorage, mitk::DataNode::New(), and mitk::STLFileReader::New().

Referenced by CreateConnections().

  {
    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 QmitkNavigationToolManagementWidget::OnSaveSingleTool (  ) [protected, slot]

Definition at line 177 of file QmitkNavigationToolManagementWidget.cpp.

References m_Controls, m_NavigationToolStorage, Ui_QmitkNavigationToolManagementWidgetControls::m_ToolList, MessageBox(), and mitk::NavigationToolWriter::New().

Referenced by CreateConnections().

  {
    //if no item is selected, show error message:
    if (m_Controls->m_ToolList->currentItem() == NULL) {MessageBox("Error: Please select tool first!");return;}

    mitk::NavigationToolWriter::Pointer myWriter = mitk::NavigationToolWriter::New();
    if (!myWriter->DoWrite(QFileDialog::getSaveFileName(NULL,tr("Save Navigation Tool"), "/", "*.*").toAscii().data(),m_NavigationToolStorage->GetTool(m_Controls->m_ToolList->currentIndex().row()))) 
      MessageBox("Error: "+ myWriter->GetErrorMessage());
  }
void QmitkNavigationToolManagementWidget::OnSaveStorage (  ) [protected, slot]

Definition at line 201 of file QmitkNavigationToolManagementWidget.cpp.

References m_Controls, m_NavigationToolStorage, Ui_QmitkNavigationToolManagementWidgetControls::m_StorageName, MessageBox(), and mitk::NavigationToolStorageSerializer::New().

Referenced by CreateConnections().

  {
    mitk::NavigationToolStorageSerializer::Pointer mySerializer = mitk::NavigationToolStorageSerializer::New();
    std::string filename = QFileDialog::getSaveFileName(NULL,tr("Save Navigation Tool"), "/", "*.*").toAscii().data();
    if (!mySerializer->Serialize(filename,m_NavigationToolStorage)) MessageBox("Error: " + mySerializer->GetErrorMessage());
    else m_Controls->m_StorageName->setText(QString(filename.c_str()));
  }
void QmitkNavigationToolManagementWidget::UpdateToolTable (  ) [protected]

Definition at line 298 of file QmitkNavigationToolManagementWidget.cpp.

References mitk::ClaronMicron, mitk::NavigationTool::Fiducial, mitk::NavigationTool::Instrument, m_Controls, m_NavigationToolStorage, Ui_QmitkNavigationToolManagementWidgetControls::m_ToolList, mitk::NDIAurora, mitk::NDIPolaris, and mitk::NavigationTool::Skinmarker.

Referenced by OnAddToolSave(), OnDeleteTool(), OnLoadSingleTool(), and OnLoadStorage().

  {
  m_Controls->m_ToolList->clear();
  for(int i=0; i<m_NavigationToolStorage->GetToolCount(); i++)
    {
      QString currentTool = "Tool" + QString::number(i) + ": " + QString(m_NavigationToolStorage->GetTool(i)->GetDataNode()->GetName().c_str())+ " ";
      switch (m_NavigationToolStorage->GetTool(i)->GetTrackingDeviceType())
        {
        case mitk::ClaronMicron:
              currentTool += "(MicronTracker/"; break;
        case mitk::NDIAurora:
              currentTool += "(NDI Aurora/"; break;
        case mitk::NDIPolaris:
              currentTool += "(NDI Polaris/"; break;
        default:
              currentTool += "(unknown tracking system/"; break;
        }
      switch (m_NavigationToolStorage->GetTool(i)->GetType())
        {
        case mitk::NavigationTool::Instrument:
              currentTool += "Instrument)"; break;
        case mitk::NavigationTool::Fiducial:
              currentTool += "Fiducial)"; break;
        case mitk::NavigationTool::Skinmarker:
              currentTool += "Skinmarker)"; break;
        default:
              currentTool += "Unknown)";
        }
      m_Controls->m_ToolList->addItem(currentTool);
    }

  }

Member Data Documentation

shows if we are in edit mode, if not we create new navigation tool objects.

Definition at line 88 of file QmitkNavigationToolManagementWidget.h.

Referenced by OnAddTool(), OnAddToolSave(), and OnEditTool().

const std::string QmitkNavigationToolManagementWidget::VIEW_ID = "org.mitk.views.navigationtoolmanagementwidget" [static]

Definition at line 47 of file QmitkNavigationToolManagementWidget.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines