Public Slots | Signals | Public Member Functions | Protected Types | Protected Slots | Protected Member Functions | Protected Attributes

QmitkNDIConfigurationWidget Class Reference
[Functionalities]

Heidelberg Minimally Invasive Navigation Device. More...

#include <QmitkNDIConfigurationWidget.h>

Collaboration diagram for QmitkNDIConfigurationWidget:
Collaboration graph
[legend]

List of all members.

Public Slots

void SetDeviceName (const char *dev)
 set the device name (e.g. "COM1", "/dev/ttyS0") that will be used to connect to the tracking device

Signals

void ToolsAdded (QStringList tools)
void ToolsChanged ()
void Connected ()
void Disconnected ()

Public Member Functions

 QmitkNDIConfigurationWidget (QWidget *parent)
virtual ~QmitkNDIConfigurationWidget ()
std::string GetDeviceName () const
mitk::NDITrackingDeviceGetTracker () const
mitk::DataStorageGetDataStorage () const
mitk::NodePredicateBaseGetPredicate () const
const QStringList & GetToolTypes () const
void SetToolTypes (const QStringList &types)
 set types list for type editor combobox
void SetDataStorage (mitk::DataStorage *ds)
 set datastorage for organ node editor
void SetPredicate (mitk::NodePredicateBase::Pointer p)
 set predicate for organ node editor
void SetTagPropertyName (const std::string &name)
 set name of the property that is used to tag selected nodes
void SetTagProperty (mitk::BaseProperty::Pointer prop)
 set the property that is used to tag selected nodes
const QString GetToolType (unsigned int index) const
const QString GetToolName (unsigned int index) const
QMap< QString, unsigned int > GetToolAndTypes () const
QList< unsigned int > GetToolsByToolType (QString toolType) const
mitk::DataNodeGetNode (unsigned int index) const

Protected Types

typedef QMap< QString,
mitk::TrackingDeviceType
PortDeviceMap

Protected Slots

void OnConnect ()
void OnDisconnect ()
void OnDiscoverTools ()
void OnDiscoverDevices ()
void OnAddPassiveTool ()
void UpdateTrackerFromToolTable (const QModelIndex &topLeft, const QModelIndex &)

Protected Member Functions

void ScanPortsForNDITrackingDevices (PortDeviceMap &portsAndDevices)
 scans the ports provided as key in the portsAndDevices and fills the respective value of portsAndDevices with the tracking device type at that port
mitk::TrackingDeviceType ScanPort (QString port)
QStringList GetToolNamesList ()
 returns a string list with the names of all tools of the current tracking device
void CreateTracker ()
 creates new NDITrackingDevice object
void SetupTracker ()
 sets the parameters from the gui to the tracking device object
QString GetStatusText ()
 construct a status text depending on the current state of the tracking device object
void UpdateWidgets ()
void UpdateToolTable ()
 read all tools from the tracking device object and display them in the gui
virtual void CreateQtPartControl (QWidget *parent)
virtual void CreateConnections ()
 Creation of the connections of main and control widget.
void HidePolarisOptionsGroupbox (bool on)
 show or hide polaris options in the UI
void HideAuroraOptionsGroupbox (bool on)
 show or hide aurora options in the UI

Protected Attributes

Ui::QmitkNDIConfigurationWidgetm_Controls
 gui widgets
mitk::NDITrackingDevice::Pointer m_Tracker
 tracking device object
mitk::TrackingDeviceSource::Pointer m_Source
QmitkNDIToolDelegatem_Delegate

Detailed Description

Heidelberg Minimally Invasive Navigation Device.

Functionality for visualizing a tracking instrument in relation to a tracked patient.

See also:
QmitkFunctionality
IGT

Definition at line 43 of file QmitkNDIConfigurationWidget.h.


Member Typedef Documentation

Definition at line 83 of file QmitkNDIConfigurationWidget.h.


Constructor & Destructor Documentation

QmitkNDIConfigurationWidget::QmitkNDIConfigurationWidget ( QWidget *  parent )

Definition at line 32 of file QmitkNDIConfigurationWidget.cpp.

References CreateQtPartControl().

Referenced by CreateQtPartControl().

: QWidget(parent), m_Controls(NULL), m_Tracker(NULL), m_Source(NULL),
m_Delegate(NULL)
{
  this->CreateQtPartControl(this);
}
QmitkNDIConfigurationWidget::~QmitkNDIConfigurationWidget (  ) [virtual]

Definition at line 40 of file QmitkNDIConfigurationWidget.cpp.

References m_Controls, m_Source, and m_Tracker.

{
  m_Controls = NULL;
  m_Tracker = NULL;
  m_Source = NULL;
}

Member Function Documentation

void QmitkNDIConfigurationWidget::Connected (  ) [signal]

Referenced by OnConnect().

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

Creation of the connections of main and control widget.

Definition at line 74 of file QmitkNDIConfigurationWidget.cpp.

References Ui_QmitkNDIConfigurationWidget::m_AddToolBtn, Ui_QmitkNDIConfigurationWidget::m_Connect, m_Controls, Ui_QmitkNDIConfigurationWidget::m_DiscoverToolsBtn, Ui_QmitkNDIConfigurationWidget::m_DisoverDevicesBtn, Ui_QmitkNDIConfigurationWidget::m_ToolTable, OnAddPassiveTool(), OnConnect(), OnDiscoverDevices(), OnDiscoverTools(), and UpdateTrackerFromToolTable().

Referenced by CreateQtPartControl().

{
  connect(m_Controls->m_Connect, SIGNAL(clicked()), this, SLOT(OnConnect()));
  connect(m_Controls->m_DiscoverToolsBtn, SIGNAL(clicked()), this, SLOT(OnDiscoverTools()));
  connect(m_Controls->m_AddToolBtn, SIGNAL(clicked()), this, SLOT(OnAddPassiveTool()));
  connect(m_Controls->m_DisoverDevicesBtn, SIGNAL(clicked()), this, SLOT(OnDiscoverDevices()));
  connect(m_Controls->m_ToolTable->model(), SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(UpdateTrackerFromToolTable(const QModelIndex &, const QModelIndex &)));
}
void QmitkNDIConfigurationWidget::CreateQtPartControl ( QWidget *  parent ) [protected, virtual]

Definition at line 48 of file QmitkNDIConfigurationWidget.cpp.

References CreateConnections(), HideAuroraOptionsGroupbox(), HidePolarisOptionsGroupbox(), Ui_QmitkNDIConfigurationWidget::m_ComPortSelector, m_Controls, m_Delegate, Ui_QmitkNDIConfigurationWidget::m_ToolTable, QmitkNDIConfigurationWidget(), QmitkNDIToolDelegate::SetDataStorage(), QmitkNDIToolDelegate::SetPredicate(), QmitkNDIToolDelegate::SetTypes(), and Ui_QmitkNDIConfigurationWidget::setupUi().

Referenced by QmitkNDIConfigurationWidget().

{
  if (!m_Controls)
  {
    // create GUI widgets
    m_Controls = new Ui::QmitkNDIConfigurationWidget;
    m_Controls->setupUi(parent);
    QStringList comPorts;
#ifdef WIN32
    comPorts << "COM1" << "COM2" << "COM3" << "COM4" << "COM5" << "COM6" << "COM7" << "COM8" << "COM9";
#else
    comPorts << "/dev/ttyS1" << "/dev/ttyS2" << "/dev/ttyS3" << "/dev/ttyS4" << "/dev/ttyS5" << "/dev/ttyUSB0" << "/dev/ttyUSB1" << "/dev/ttyUSB2" << "/dev/ttyUSB3";
#endif
    m_Controls->m_ComPortSelector->addItems(comPorts);
    m_Delegate = new QmitkNDIToolDelegate(m_Controls->m_ToolTable);
    m_Delegate->SetDataStorage(NULL);  //needs to be set later using the setter methods
    m_Delegate->SetPredicate(NULL);
    m_Delegate->SetTypes(QStringList());
    m_Controls->m_ToolTable->setItemDelegate(m_Delegate);
    this->CreateConnections();
    this->HidePolarisOptionsGroupbox(true);
    this->HideAuroraOptionsGroupbox(true);
  }
}
void QmitkNDIConfigurationWidget::CreateTracker (  ) [protected]

creates new NDITrackingDevice object

Definition at line 240 of file QmitkNDIConfigurationWidget.cpp.

References m_Tracker, and mitk::NDITrackingDevice::New().

Referenced by OnAddPassiveTool(), and OnConnect().

void QmitkNDIConfigurationWidget::Disconnected (  ) [signal]

Referenced by OnDisconnect().

mitk::DataStorage* QmitkNDIConfigurationWidget::GetDataStorage (  ) const
std::string QmitkNDIConfigurationWidget::GetDeviceName (  ) const

Definition at line 255 of file QmitkNDIConfigurationWidget.cpp.

References Ui_QmitkNDIConfigurationWidget::m_ComPortSelector, and m_Controls.

Referenced by SetupTracker().

{
  if (m_Controls == NULL)
    return NULL;
  return m_Controls->m_ComPortSelector->currentText().toStdString();
}
mitk::DataNode * QmitkNDIConfigurationWidget::GetNode ( unsigned int  index ) const

Definition at line 532 of file QmitkNDIConfigurationWidget.cpp.

References m_Controls, Ui_QmitkNDIConfigurationWidget::m_ToolTable, QmitkNDIToolDelegate::NodeCol, and QmitkNDIToolDelegate::OrganNodeRole.

{
  
  if (m_Controls == NULL)
    return NULL;
  QAbstractItemModel* model = m_Controls->m_ToolTable->model();
  QVariant data = model->data(model->index(index, QmitkNDIToolDelegate::NodeCol), QmitkNDIToolDelegate::OrganNodeRole);
  return data.value<mitk::DataNode*>();
}
mitk::NodePredicateBase* QmitkNDIConfigurationWidget::GetPredicate (  ) const
QString QmitkNDIConfigurationWidget::GetStatusText (  ) [protected]

construct a status text depending on the current state of the tracking device object

Definition at line 177 of file QmitkNDIConfigurationWidget.cpp.

References m_Tracker, mitk::NDIAurora, mitk::NDIPolaris, mitk::TrackingDevice::Ready, mitk::TrackingDevice::Tracking, and mitk::TrackingSystemNotSpecified.

Referenced by UpdateWidgets().

{
  if (m_Tracker.IsNull())
    return QString("Not connected");

  QString devName;
  switch (m_Tracker->GetType())
  {
  case mitk::NDIAurora:
    devName = "NDI Aurora";
    break;
  case mitk::NDIPolaris:
    devName = "NDI Polaris";
    break;
  case mitk::TrackingSystemNotSpecified:
  default:
    devName = "unknown tracking device";
    break;
  }
  if (m_Tracker->GetState() == mitk::TrackingDevice::Ready)
    return QString("Connected to %1 on %2. Device is ready.").arg(devName).arg(m_Tracker->GetDeviceName());
  if (m_Tracker->GetState() == mitk::TrackingDevice::Tracking)
    return QString("%1 is tracking.").arg(devName);
  return QString("");
}
QMap< QString, unsigned int > QmitkNDIConfigurationWidget::GetToolAndTypes (  ) const

Definition at line 495 of file QmitkNDIConfigurationWidget.cpp.

References QmitkNDIToolDelegate::IndexCol, m_Controls, Ui_QmitkNDIConfigurationWidget::m_ToolTable, and QmitkNDIToolDelegate::TypeCol.

{
  QMap<QString, unsigned int> map;
  if (m_Controls == NULL)
    return map;
  QAbstractItemModel* model = m_Controls->m_ToolTable->model();
  for (int i = 0; i < model->rowCount(); ++i)
  {
    QModelIndex indexIndex = model->index(i, QmitkNDIToolDelegate::IndexCol);
    QModelIndex typeIndex = model->index(i, QmitkNDIToolDelegate::TypeCol);
    if ((indexIndex.isValid() == false) || (typeIndex.isValid() == false))
      continue;
    map.insert(model->data(typeIndex).toString(), model->data(indexIndex).toUInt());
  }
  return map;
}
const QString QmitkNDIConfigurationWidget::GetToolName ( unsigned int  index ) const

Definition at line 481 of file QmitkNDIConfigurationWidget.cpp.

References m_Controls, Ui_QmitkNDIConfigurationWidget::m_ToolTable, and QmitkNDIToolDelegate::NameCol.

{
  if (m_Controls == NULL)
    return QString("");

  QAbstractItemModel* model = m_Controls->m_ToolTable->model();
  QModelIndex modelIndex = model->index(index, QmitkNDIToolDelegate::NameCol);
  if (modelIndex.isValid() == false)
    return QString("");

  return model->data(modelIndex).toString();
}
QStringList QmitkNDIConfigurationWidget::GetToolNamesList (  ) [protected]

returns a string list with the names of all tools of the current tracking device

Definition at line 370 of file QmitkNDIConfigurationWidget.cpp.

References mitk::TrackingTool::GetToolName(), m_Tracker, and QuadProgPP::t().

Referenced by OnAddPassiveTool(), OnConnect(), OnDisconnect(), and OnDiscoverTools().

{
  QStringList toolNames;
  if (m_Tracker.IsNull())
    return toolNames;
  for (unsigned int i = 0; i < m_Tracker->GetToolCount(); ++i)
  {
    mitk::TrackingTool* t = m_Tracker->GetTool(i);
    if (t == NULL)
      continue;
    toolNames << t->GetToolName();
  }
  return toolNames;
}
QList< unsigned int > QmitkNDIConfigurationWidget::GetToolsByToolType ( QString  toolType ) const

Definition at line 513 of file QmitkNDIConfigurationWidget.cpp.

References QmitkNDIToolDelegate::IndexCol, m_Controls, Ui_QmitkNDIConfigurationWidget::m_ToolTable, and QmitkNDIToolDelegate::TypeCol.

Referenced by QmitkIGTRecorderView::SetupIGTPipeline().

{
  QList<unsigned int> list;
  if (m_Controls == NULL)
      return list;
  QAbstractItemModel* model = m_Controls->m_ToolTable->model();
  for (int i = 0; i < model->rowCount(); ++i)
  {
    QModelIndex indexIndex = model->index(i, QmitkNDIToolDelegate::IndexCol);
    QModelIndex typeIndex = model->index(i, QmitkNDIToolDelegate::TypeCol);
    if ((indexIndex.isValid() == false) || (typeIndex.isValid() == false))
      continue;
    if (model->data(typeIndex).toString() == toolType)
      list.append(model->data(indexIndex).toUInt());
  }
  return list;
}
const QString QmitkNDIConfigurationWidget::GetToolType ( unsigned int  index ) const

Definition at line 467 of file QmitkNDIConfigurationWidget.cpp.

References m_Controls, Ui_QmitkNDIConfigurationWidget::m_ToolTable, and QmitkNDIToolDelegate::TypeCol.

{
  if (m_Controls == NULL)
    return QString("");

  QAbstractItemModel* model = m_Controls->m_ToolTable->model();
  QModelIndex modelIndex = model->index(index, QmitkNDIToolDelegate::TypeCol);
  if (modelIndex.isValid() == false)
    return QString("");

  return model->data(modelIndex).toString();
}
const QStringList& QmitkNDIConfigurationWidget::GetToolTypes (  ) const
mitk::NDITrackingDevice * QmitkNDIConfigurationWidget::GetTracker (  ) const
void QmitkNDIConfigurationWidget::HideAuroraOptionsGroupbox ( bool  on ) [protected]

show or hide aurora options in the UI

Definition at line 547 of file QmitkNDIConfigurationWidget.cpp.

References m_Controls, and Ui_QmitkNDIConfigurationWidget::m_gbAuroraOptions.

Referenced by CreateQtPartControl(), OnConnect(), and OnDisconnect().

{
  m_Controls->m_gbAuroraOptions->setHidden(on);
}
void QmitkNDIConfigurationWidget::HidePolarisOptionsGroupbox ( bool  on ) [protected]

show or hide polaris options in the UI

Definition at line 542 of file QmitkNDIConfigurationWidget.cpp.

References m_Controls, and Ui_QmitkNDIConfigurationWidget::m_gbPolarisOptions.

Referenced by CreateQtPartControl(), OnConnect(), and OnDisconnect().

{
  m_Controls->m_gbPolarisOptions->setHidden(on);
}
void QmitkNDIConfigurationWidget::OnAddPassiveTool (  ) [protected, slot]

Definition at line 217 of file QmitkNDIConfigurationWidget.cpp.

References CreateTracker(), GetToolNamesList(), m_Tracker, ToolsAdded(), and UpdateToolTable().

Referenced by CreateConnections().

{
  if (m_Tracker.IsNull())
    this->CreateTracker();

  QStringList filenames = QFileDialog::getOpenFileNames(this, "Select NDI SROM file", QDir::currentPath(),"NDI SROM files (*.rom)");
  if (filenames.isEmpty())
  {
    this->m_Tracker = NULL;
    return;
  }
  foreach(QString fileName, filenames)
  {
    //QString toolName = QInputDialog::getText(this, "Enter a name for the tool", "Name of the tool: ", QLineEdit::Normal, QFileInfo(filename).baseName(), &ok);
    //if (ok == false || toolName.isEmpty())
    //  return;
    m_Tracker->AddTool(QFileInfo(fileName).baseName().toLatin1(), fileName.toLatin1());
  }
  emit ToolsAdded(this->GetToolNamesList());
  this->UpdateToolTable();
}
void QmitkNDIConfigurationWidget::OnConnect (  ) [protected, slot]

Definition at line 84 of file QmitkNDIConfigurationWidget.cpp.

References Connected(), CreateTracker(), GetToolNamesList(), HideAuroraOptionsGroupbox(), HidePolarisOptionsGroupbox(), m_Tracker, mitk::NDIAurora, mitk::NDIPolaris, SetupTracker(), ToolsAdded(), UpdateToolTable(), and UpdateWidgets().

Referenced by CreateConnections(), and UpdateWidgets().

{
  if (m_Tracker.IsNotNull())
  {
    m_Tracker->CloseConnection();
    m_Tracker = NULL;
  }
  this->CreateTracker();

  this->SetupTracker();
  bool okay = m_Tracker->OpenConnection();
  if (okay)
  {
    // show/hide options according to connected device
    if(m_Tracker->GetType() == mitk::NDIPolaris)
    {
      this->HideAuroraOptionsGroupbox(true);
      this->HidePolarisOptionsGroupbox(false);
    }
    else if(m_Tracker->GetType() == mitk::NDIAurora)
    {
      this->HidePolarisOptionsGroupbox(true);
      this->HideAuroraOptionsGroupbox(false);
    }

    this->UpdateWidgets();
    this->UpdateToolTable();
    emit ToolsAdded(this->GetToolNamesList());
    emit Connected();
  }
  else
  {
    QMessageBox::warning(NULL, "Error", QString("Connection failed. Tracking device error message is '%1'").arg(m_Tracker->GetErrorMessage()));
    m_Tracker->CloseConnection();
    this->m_Tracker = NULL;
  }
}
void QmitkNDIConfigurationWidget::OnDisconnect (  ) [protected, slot]
void QmitkNDIConfigurationWidget::OnDiscoverDevices (  ) [protected, slot]

Definition at line 315 of file QmitkNDIConfigurationWidget.cpp.

References m_Controls, Ui_QmitkNDIConfigurationWidget::m_DeviceStatus, mitk::NDIAurora, mitk::NDIPolaris, and ScanPortsForNDITrackingDevices().

Referenced by CreateConnections().

{
  PortDeviceMap portsAndDevices;
  QString status = "Scanning ";
  for (unsigned int i = 1; i < 10; ++i)
  {
    QString devName = QString("COM%1").arg(i);
    portsAndDevices[devName];
    status += devName + ", ";
  }
  status.chop(2); // remove last ", "
  status += " for NDI tracking devices...";
  m_Controls->m_DeviceStatus->setText(status);
  ScanPortsForNDITrackingDevices(portsAndDevices);
  QString result = "The following tracking devices were found:<BR/>\n";
  for (PortDeviceMap::const_iterator it = portsAndDevices.begin(); it != portsAndDevices.end(); ++it)
  {
    result += it.key() + ": ";
    switch (it.value())
    {
    case mitk::NDIPolaris:
      result += "NDI Polaris<BR/>\n";
      break;
    case mitk::NDIAurora:
      result += "NDI Aurora<BR/>\n";
      break;
    default:
      result += "No NDI tracking device found<BR/>\n";
    }
  }
  //QMessageBox::information(NULL, "Tracking Device Discovery", result);
  m_Controls->m_DeviceStatus->setText(result);
}
void QmitkNDIConfigurationWidget::OnDiscoverTools (  ) [protected, slot]

Definition at line 204 of file QmitkNDIConfigurationWidget.cpp.

References GetToolNamesList(), m_Tracker, ToolsAdded(), and UpdateToolTable().

Referenced by CreateConnections().

{
  if (m_Tracker.IsNull())
  {
    QMessageBox::warning(NULL, "Error", QString("Connection failed. No tracking device found."));
    return;
  }
  m_Tracker->DiscoverWiredTools();
  this->UpdateToolTable();
  emit ToolsAdded(this->GetToolNamesList());
}
mitk::TrackingDeviceType QmitkNDIConfigurationWidget::ScanPort ( QString  port ) [protected]

Definition at line 350 of file QmitkNDIConfigurationWidget.cpp.

References mitk::NDITrackingDevice::New().

Referenced by ScanPortsForNDITrackingDevices().

{
  mitk::NDITrackingDevice::Pointer tracker = mitk::NDITrackingDevice::New();
  tracker->SetDeviceName(port.toStdString());
  return tracker->TestConnection();
}
void QmitkNDIConfigurationWidget::ScanPortsForNDITrackingDevices ( PortDeviceMap portsAndDevices ) [protected]

scans the ports provided as key in the portsAndDevices and fills the respective value of portsAndDevices with the tracking device type at that port

Documentation

Parameters:
[in]portsAndDeviceskeys are used to query serial ports
[out]portsAndDevicesvalues of the existing keys will be filled with the tracking device type

Definition at line 358 of file QmitkNDIConfigurationWidget.cpp.

References ScanPort().

Referenced by OnDiscoverDevices().

{
  // Iterative scanning:
  for (PortDeviceMap::iterator it = portsAndDevices.begin(); it != portsAndDevices.end(); ++it)
    it.value() = this->ScanPort(it.key());
  
  // \Todo: use parallel scanning
  //QtConcurrent::blockingMap( portsAndDevices.begin(), portsAndDevices.end(), ScanPort );
  //MITK_INFO << portsAndDevices;
}
void QmitkNDIConfigurationWidget::SetDataStorage ( mitk::DataStorage ds )

set datastorage for organ node editor

Definition at line 398 of file QmitkNDIConfigurationWidget.cpp.

References m_Delegate, and QmitkNDIToolDelegate::SetDataStorage().

Referenced by QmitkIGTRecorderView::CreateQtPartControl().

void QmitkNDIConfigurationWidget::SetDeviceName ( const char *  dev ) [slot]

set the device name (e.g. "COM1", "/dev/ttyS0") that will be used to connect to the tracking device

Definition at line 263 of file QmitkNDIConfigurationWidget.cpp.

References Ui_QmitkNDIConfigurationWidget::m_ComPortSelector, and m_Controls.

{
  if (m_Controls == NULL)
    return;
  m_Controls->m_ComPortSelector->setCurrentIndex(m_Controls->m_ComPortSelector->findText(dev));
}
void QmitkNDIConfigurationWidget::SetPredicate ( mitk::NodePredicateBase::Pointer  p )

set predicate for organ node editor

Definition at line 404 of file QmitkNDIConfigurationWidget.cpp.

References m_Delegate, and QmitkNDIToolDelegate::SetPredicate().

Referenced by QmitkIGTRecorderView::CreateQtPartControl().

void QmitkNDIConfigurationWidget::SetTagProperty ( mitk::BaseProperty::Pointer  prop )

set the property that is used to tag selected nodes

Definition at line 416 of file QmitkNDIConfigurationWidget.cpp.

References m_Delegate, and QmitkNDIToolDelegate::SetTagProperty().

Referenced by QmitkIGTRecorderView::CreateQtPartControl().

void QmitkNDIConfigurationWidget::SetTagPropertyName ( const std::string &  name )

set name of the property that is used to tag selected nodes

Definition at line 410 of file QmitkNDIConfigurationWidget.cpp.

References m_Delegate, and QmitkNDIToolDelegate::SetTagPropertyName().

Referenced by QmitkIGTRecorderView::CreateQtPartControl().

void QmitkNDIConfigurationWidget::SetToolTypes ( const QStringList &  types )

set types list for type editor combobox

Definition at line 392 of file QmitkNDIConfigurationWidget.cpp.

References m_Delegate, and QmitkNDIToolDelegate::SetTypes().

Referenced by QmitkIGTRecorderView::CreateQtPartControl().

{
  m_Delegate->SetTypes(types);
}
void QmitkNDIConfigurationWidget::SetupTracker (  ) [protected]

sets the parameters from the gui to the tracking device object

Definition at line 246 of file QmitkNDIConfigurationWidget.cpp.

References mitk::SerialCommunication::BaudRate115200, GetDeviceName(), and m_Tracker.

Referenced by OnConnect().

{
  if (m_Tracker.IsNull())
    return;
  m_Tracker->SetDeviceName(this->GetDeviceName());
  m_Tracker->SetBaudRate(mitk::SerialCommunication::BaudRate115200);
}
void QmitkNDIConfigurationWidget::ToolsAdded ( QStringList  tools ) [signal]
void QmitkNDIConfigurationWidget::ToolsChanged (  ) [signal]
void QmitkNDIConfigurationWidget::UpdateToolTable (  ) [protected]

read all tools from the tracking device object and display them in the gui

Definition at line 271 of file QmitkNDIConfigurationWidget.cpp.

References mitk::TrackingTool::GetToolName(), QmitkNDIToolDelegate::IndexCol, mitk::TrackingTool::IsEnabled(), m_Controls, Ui_QmitkNDIConfigurationWidget::m_ToolTable, m_Tracker, QmitkNDIToolDelegate::NameCol, QmitkNDIToolDelegate::NodeCol, QmitkNDIToolDelegate::SROMCol, QmitkNDIToolDelegate::StatusCol, QuadProgPP::t(), QmitkNDIToolDelegate::TypeCol, and UpdateTrackerFromToolTable().

Referenced by OnAddPassiveTool(), OnConnect(), OnDisconnect(), and OnDiscoverTools().

{
  disconnect(m_Controls->m_ToolTable, SIGNAL(itemChanged(QTableWidgetItem*)), this, SLOT(OnTableItemChanged(QTableWidgetItem*))); // stop listening to table changes
  disconnect(m_Controls->m_ToolTable->model(), SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(UpdateTrackerFromToolTable(const QModelIndex &, const QModelIndex &)));
  m_Controls->m_ToolTable->clearContents();
  m_Controls->m_ToolTable->setRowCount(0);
  if (m_Tracker.IsNull() || (m_Controls == NULL))
    return;

  m_Controls->m_ToolTable->setRowCount(m_Tracker->GetToolCount());
  for (unsigned int i = 0; i < m_Tracker->GetToolCount(); ++i)
  {
    mitk::TrackingTool* t = m_Tracker->GetTool(i);
    if (t == NULL)
    {
      m_Controls->m_ToolTable->setItem(i, QmitkNDIToolDelegate::IndexCol, new QTableWidgetItem("INVALID"));                   // Index
      continue;
    }
    m_Controls->m_ToolTable->setItem(i, QmitkNDIToolDelegate::IndexCol, new QTableWidgetItem(QString::number(i)));            // Index
    m_Controls->m_ToolTable->setItem(i, QmitkNDIToolDelegate::NameCol, new QTableWidgetItem(t->GetToolName()));               // Name    
    if (dynamic_cast<mitk::NDIPassiveTool*>(t)->GetSROMDataLength() > 0)
      m_Controls->m_ToolTable->setItem(i, QmitkNDIToolDelegate::SROMCol, new QTableWidgetItem("SROM file loaded"));           // SROM file
    else
      m_Controls->m_ToolTable->setItem(i, QmitkNDIToolDelegate::SROMCol, new QTableWidgetItem("<click to load SROM file>"));  // SROM file
    m_Controls->m_ToolTable->setItem(i, QmitkNDIToolDelegate::TypeCol, new QTableWidgetItem("<click to set type>"));          // Type
    if (t->IsEnabled())
      m_Controls->m_ToolTable->setItem(i, QmitkNDIToolDelegate::StatusCol, new QTableWidgetItem("Enabled"));                  // Status
    else
      m_Controls->m_ToolTable->setItem(i, QmitkNDIToolDelegate::StatusCol, new QTableWidgetItem("Disabled"));                 // Status
    m_Controls->m_ToolTable->setItem(i, QmitkNDIToolDelegate::NodeCol, new QTableWidgetItem("<click to select node>"));       // Node
    /* set read-only/editable flags */
    m_Controls->m_ToolTable->item(i, QmitkNDIToolDelegate::IndexCol)->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled);                        // Index
    m_Controls->m_ToolTable->item(i, QmitkNDIToolDelegate::NodeCol)->setFlags(Qt::ItemIsEnabled | Qt::ItemIsEditable   | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled);  // Name
    m_Controls->m_ToolTable->item(i, QmitkNDIToolDelegate::SROMCol)->setFlags(Qt::ItemIsEnabled | Qt::ItemIsEditable   | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled);  // SROM file
    m_Controls->m_ToolTable->item(i, QmitkNDIToolDelegate::TypeCol)->setFlags(Qt::ItemIsEnabled | Qt::ItemIsEditable   | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled);  // Type
    m_Controls->m_ToolTable->item(i, QmitkNDIToolDelegate::StatusCol)->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled);                       // Status
    m_Controls->m_ToolTable->item(i, QmitkNDIToolDelegate::NodeCol)->setFlags(Qt::ItemIsEnabled | Qt::ItemIsEditable   | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled);  // Node
  }
  m_Controls->m_ToolTable->resizeColumnsToContents();
  connect(m_Controls->m_ToolTable, SIGNAL(itemChanged(QTableWidgetItem*)), this, SLOT(OnTableItemChanged(QTableWidgetItem*))); // listen to table changes again
  connect(m_Controls->m_ToolTable->model(), SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(UpdateTrackerFromToolTable(const QModelIndex &, const QModelIndex &)));
}
void QmitkNDIConfigurationWidget::UpdateTrackerFromToolTable ( const QModelIndex &  topLeft,
const QModelIndex &   
) [protected, slot]

Definition at line 422 of file QmitkNDIConfigurationWidget.cpp.

References int(), mitk::NDIPassiveTool::LoadSROMFile(), m_Controls, Ui_QmitkNDIConfigurationWidget::m_ToolTable, m_Tracker, mitk::InternalTrackingTool::SetToolName(), QmitkNDIToolDelegate::SROMCol, and ToolsChanged().

Referenced by CreateConnections(), and UpdateToolTable().

{
  //Colums ID doesn't have to be processed.
  if (topLeft.column()<1)
    return;

  if (m_Tracker.IsNull())
    return;

  if (topLeft.row() >= (int) m_Tracker->GetToolCount())
    return;

  QAbstractItemModel* model = m_Controls->m_ToolTable->model();

  //define topleft contains row and column; row 0 is tool 0; column is index =0, Name =1, SROMFileName = 2; Type = 3; Status = 4; Node (?) = 5
  //only update the changed item
  mitk::NDIPassiveTool* tool = dynamic_cast<mitk::NDIPassiveTool*> (m_Tracker->GetTool(topLeft.row()));
    if (tool == NULL)
      return;

  switch (topLeft.column())
  {
  case 0: //index
    break;
  case 1: //name
    tool->SetToolName(model->data(model->index(topLeft.row(), 1)).toString().toLatin1());
    emit ToolsChanged();
    break;
  case QmitkNDIToolDelegate::SROMCol: //SROM File Name
    {
      QString romfile = model->data(model->index(topLeft.row(), QmitkNDIToolDelegate::SROMCol)).toString();
      if (QFileInfo(romfile).exists())
        tool->LoadSROMFile(romfile.toLatin1());
      m_Tracker->InitializeWiredTools();
      break;
    }

    //TODO: Add Node Status and Type here as well
  default:
    break;
  }

}
void QmitkNDIConfigurationWidget::UpdateWidgets (  ) [protected]

Definition at line 140 of file QmitkNDIConfigurationWidget.cpp.

References GetStatusText(), Ui_QmitkNDIConfigurationWidget::m_AddToolBtn, Ui_QmitkNDIConfigurationWidget::m_Connect, m_Controls, Ui_QmitkNDIConfigurationWidget::m_DeviceStatus, Ui_QmitkNDIConfigurationWidget::m_DiscoverToolsBtn, Ui_QmitkNDIConfigurationWidget::m_lConnection, m_Tracker, OnConnect(), OnDisconnect(), mitk::TrackingDevice::Ready, mitk::TrackingDevice::Setup, and mitk::TrackingDevice::Tracking.

Referenced by OnConnect(), and OnDisconnect().

{
  m_Controls->m_DeviceStatus->setText(this->GetStatusText());
  if (m_Tracker.IsNull())  // not connected to tracker
  {
    m_Controls->m_Connect->setText("Connect");
    m_Controls->m_lConnection->setText("III. Enable connection to  device  ");

    disconnect(m_Controls->m_Connect, SIGNAL(clicked()), this, SLOT(OnDisconnect()));
    connect(m_Controls->m_Connect, SIGNAL(clicked()), this, SLOT(OnConnect()));
    m_Controls->m_DiscoverToolsBtn->setDisabled(true);
    m_Controls->m_AddToolBtn->setDisabled(true);
    return;
  }

  if (m_Tracker->GetState() == mitk::TrackingDevice::Setup)
  {
    m_Controls->m_Connect->setText("Connect");
    m_Controls->m_lConnection->setText("III. Enable connection to  device  ");
    disconnect(m_Controls->m_Connect, SIGNAL(clicked()), this, SLOT(OnDisconnect()));
    connect(m_Controls->m_Connect, SIGNAL(clicked()), this, SLOT(OnConnect()));
    m_Controls->m_DiscoverToolsBtn->setDisabled(true);
    m_Controls->m_AddToolBtn->setDisabled(true);
    return;
  }
  if ((m_Tracker->GetState() == mitk::TrackingDevice::Ready) || (m_Tracker->GetState() == mitk::TrackingDevice::Tracking))
  {
    m_Controls->m_Connect->setText("Disconnect");
    m_Controls->m_lConnection->setText("III. Disable connection to  device ");
    disconnect(m_Controls->m_Connect, SIGNAL(clicked()), this, SLOT(OnConnect()));
    connect(m_Controls->m_Connect, SIGNAL(clicked()), this, SLOT(OnDisconnect()));
    m_Controls->m_DiscoverToolsBtn->setEnabled(true);
    m_Controls->m_AddToolBtn->setEnabled(true);    
  }  
}

Member Data Documentation

Definition at line 109 of file QmitkNDIConfigurationWidget.h.

Referenced by ~QmitkNDIConfigurationWidget().


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