GUI to access the IGT recorder. User can specify the file name where the output shall be stored and how long the recording shall be performed. More...
#include <QmitkIGTLoggerWidget.h>
Public Member Functions | |
QmitkIGTLoggerWidget (QWidget *parent=0, Qt::WindowFlags f=0) | |
~QmitkIGTLoggerWidget () | |
void | SetDataStorage (mitk::DataStorage *dataStorage) |
void | SetRecorder (mitk::NavigationDataRecorder::Pointer recorder) |
Static Public Attributes | |
static const std::string | VIEW_ID |
Protected Slots | |
void | OnChangePressed () |
void | OnStartRecording () |
void | OnRecording () |
void | UpdateRecordingTime () |
void | StopRecording () |
void | UpdateOutputFileName () |
Protected Member Functions | |
virtual void | CreateConnections () |
Creation of the connections. | |
virtual void | CreateQtPartControl (QWidget *parent) |
void | SetDefaultRecordingSettings () |
void | SetOutputFileName () |
Protected Attributes | |
Ui::QmitkIGTLoggerWidgetControls * | m_Controls |
mitk::DataStorage::Pointer | m_DataStorage |
holds the DataStorage | |
mitk::NavigationDataRecorder::Pointer | m_Recorder |
records NDs to a XML file | |
QString | m_CmpFilename |
QString | m_Dir |
QTimer * | m_RecordingTimer |
QString | m_MilliSeconds |
QString | m_Samples |
bool | m_RecordingActivated |
GUI to access the IGT recorder. User can specify the file name where the output shall be stored and how long the recording shall be performed.
Documentation:
Definition at line 40 of file QmitkIGTLoggerWidget.h.
QmitkIGTLoggerWidget::QmitkIGTLoggerWidget | ( | QWidget * | parent = 0 , |
Qt::WindowFlags | f = 0 |
||
) |
Definition at line 39 of file QmitkIGTLoggerWidget.cpp.
References CreateConnections(), CreateQtPartControl(), m_Controls, SetDefaultRecordingSettings(), and SetOutputFileName().
: QWidget(parent, f), m_Recorder(NULL), m_RecordingActivated(false) { m_Controls = NULL; CreateQtPartControl(this); CreateConnections(); //set output file this->SetOutputFileName(); //update milliseconds and samples this->SetDefaultRecordingSettings(); }
QmitkIGTLoggerWidget::~QmitkIGTLoggerWidget | ( | ) |
Definition at line 54 of file QmitkIGTLoggerWidget.cpp.
References m_Recorder, and m_RecordingTimer.
{ m_RecordingTimer->stop(); m_Recorder = NULL; m_RecordingTimer = NULL; }
void QmitkIGTLoggerWidget::CreateConnections | ( | ) | [protected, virtual] |
Creation of the connections.
Definition at line 73 of file QmitkIGTLoggerWidget.cpp.
References Ui_QmitkIGTLoggerWidgetControls::m_cbRecordingType, m_Controls, Ui_QmitkIGTLoggerWidgetControls::m_leOutputFile, Ui_QmitkIGTLoggerWidgetControls::m_leRecordingValue, Ui_QmitkIGTLoggerWidgetControls::m_pbLoadDir, Ui_QmitkIGTLoggerWidgetControls::m_pbStartRecording, m_RecordingTimer, OnChangePressed(), OnRecording(), OnStartRecording(), UpdateOutputFileName(), and UpdateRecordingTime().
Referenced by QmitkIGTLoggerWidget().
{ if ( m_Controls ) { connect( (QObject*)(m_Controls->m_pbLoadDir), SIGNAL(clicked()), this, SLOT(OnChangePressed()) ); connect( (QObject*)(m_Controls->m_pbStartRecording), SIGNAL(clicked()), this, SLOT(OnStartRecording()) ); connect( m_RecordingTimer, SIGNAL(timeout()), this, SLOT(OnRecording()) ); connect( (QObject*)(m_Controls->m_leRecordingValue), SIGNAL(editingFinished()), this, SLOT(UpdateRecordingTime()) ); connect( (QObject*)(m_Controls->m_cbRecordingType), SIGNAL(activated(int)), this, SLOT(UpdateRecordingTime()) ); connect( (QObject*)(m_Controls->m_leOutputFile), SIGNAL(editingFinished()), this, SLOT(UpdateOutputFileName()) ); } }
void QmitkIGTLoggerWidget::CreateQtPartControl | ( | QWidget * | parent ) | [protected, virtual] |
Definition at line 61 of file QmitkIGTLoggerWidget.cpp.
References m_Controls, m_RecordingTimer, and Ui_QmitkIGTLoggerWidgetControls::setupUi().
Referenced by QmitkIGTLoggerWidget().
{ if (!m_Controls) { // create GUI widgets m_Controls = new Ui::QmitkIGTLoggerWidgetControls; m_Controls->setupUi(parent); m_RecordingTimer = new QTimer(this); } }
void QmitkIGTLoggerWidget::OnChangePressed | ( | ) | [protected, slot] |
Definition at line 170 of file QmitkIGTLoggerWidget.cpp.
References m_CmpFilename, m_Controls, and Ui_QmitkIGTLoggerWidgetControls::m_leOutputFile.
Referenced by CreateConnections().
{ QString oldName = m_CmpFilename; m_CmpFilename.clear(); m_CmpFilename = QFileDialog::getSaveFileName( QApplication::activeWindow() , "Save tracking data", "IGT_Tracking_Data.xml", "XML files (*.xml)" ); if (m_CmpFilename.isEmpty())//if something went wrong or user pressed cancel in the save dialog { m_CmpFilename=oldName; } m_Controls->m_leOutputFile->setText(m_CmpFilename); }
void QmitkIGTLoggerWidget::OnRecording | ( | ) | [protected, slot] |
Definition at line 154 of file QmitkIGTLoggerWidget.cpp.
References Ui_QmitkIGTLoggerWidgetControls::m_cbRecordingType, m_Controls, m_Recorder, m_Samples, and StopRecording().
Referenced by CreateConnections().
{ static unsigned int sampleCounter = 0; unsigned int int_samples = m_Samples.toInt(); if(sampleCounter >= int_samples) { this->StopRecording(); sampleCounter=0; return; } m_Recorder->Update(); if (m_Controls->m_cbRecordingType->currentIndex()==1) sampleCounter++; }
void QmitkIGTLoggerWidget::OnStartRecording | ( | ) | [protected, slot] |
Definition at line 92 of file QmitkIGTLoggerWidget.cpp.
References mitk::StatusBar::GetInstance(), Ui_QmitkIGTLoggerWidgetControls::m_cbRecordingType, m_CmpFilename, m_Controls, Ui_QmitkIGTLoggerWidgetControls::m_leRecordingValue, Ui_QmitkIGTLoggerWidgetControls::m_pbStartRecording, m_Recorder, m_RecordingActivated, m_RecordingTimer, and StopRecording().
Referenced by CreateConnections().
{ if (m_Recorder.IsNull()) { QMessageBox::warning(NULL, "Warning", QString("Please start tracking before recording!")); return; } if (m_CmpFilename.isEmpty()) { QMessageBox::warning(NULL, "Warning", QString("Please specify filename without extension!")); return; } if (!m_RecordingActivated) { m_Recorder->SetFileName(m_CmpFilename.toStdString()); try { /*start the recording mechanism */ m_Recorder->StartRecording(); m_RecordingTimer->start(50); //now every update of the recorder stores one line into the file for each added NavigationData mitk::StatusBar::GetInstance()->DisplayText("Recording tracking data now"); // Display recording message for 75ms in status bar } catch (std::exception& e) { QMessageBox::warning(NULL, "IGT-Tracking Logger: Error", QString("Error while recording tracking data: %1").arg(e.what())); mitk::StatusBar::GetInstance()->DisplayText(""); // Display recording message for 75ms in status bar } m_Controls->m_pbStartRecording->setText("Stop recording"); m_Controls->m_leRecordingValue->setEnabled(false); m_Controls->m_cbRecordingType->setEnabled(false); m_RecordingActivated = true; if(m_Controls->m_cbRecordingType->currentIndex()==0) { bool success = false; QString str_ms = m_Controls->m_leRecordingValue->text(); int int_ms = str_ms.toInt(&success); if (success) QTimer::singleShot(int_ms, this, SLOT(StopRecording())); } } else { this->StopRecording(); } }
void QmitkIGTLoggerWidget::SetDataStorage | ( | mitk::DataStorage * | dataStorage ) |
Definition at line 87 of file QmitkIGTLoggerWidget.cpp.
References m_DataStorage.
{ m_DataStorage = dataStorage; }
void QmitkIGTLoggerWidget::SetDefaultRecordingSettings | ( | ) | [protected] |
Definition at line 252 of file QmitkIGTLoggerWidget.cpp.
References Ui_QmitkIGTLoggerWidgetControls::m_cbRecordingType, m_Controls, Ui_QmitkIGTLoggerWidgetControls::m_leRecordingValue, m_MilliSeconds, and m_Samples.
Referenced by QmitkIGTLoggerWidget(), and UpdateRecordingTime().
{ m_Controls->m_leRecordingValue->setText("2000"); m_Controls->m_cbRecordingType->setCurrentIndex(0); m_Samples="100"; m_MilliSeconds="2000"; }
void QmitkIGTLoggerWidget::SetOutputFileName | ( | ) | [protected] |
Definition at line 260 of file QmitkIGTLoggerWidget.cpp.
References m_CmpFilename, m_Controls, and Ui_QmitkIGTLoggerWidgetControls::m_leOutputFile.
Referenced by QmitkIGTLoggerWidget().
{ std::string tmpDir = itksys::SystemTools::GetCurrentWorkingDirectory(); QString dir = QString(tmpDir.c_str()); QString filename = "IGT_Tracking_Data.xml"; m_CmpFilename.append(dir); if(dir.isEmpty()) { QMessageBox::warning(NULL, "Warning", QString("Could not load current working directory")); return; } if(dir.endsWith("/")||dir.endsWith("\\")) { m_CmpFilename.append(filename); } else { m_CmpFilename.append("/"); m_CmpFilename.append(filename); } m_Controls->m_leOutputFile->setText(m_CmpFilename); }
void QmitkIGTLoggerWidget::SetRecorder | ( | mitk::NavigationDataRecorder::Pointer | recorder ) |
Definition at line 197 of file QmitkIGTLoggerWidget.cpp.
References m_Recorder.
{ m_Recorder = recorder; }
void QmitkIGTLoggerWidget::StopRecording | ( | ) | [protected, slot] |
Definition at line 143 of file QmitkIGTLoggerWidget.cpp.
References mitk::StatusBar::GetInstance(), Ui_QmitkIGTLoggerWidgetControls::m_cbRecordingType, m_Controls, Ui_QmitkIGTLoggerWidgetControls::m_leRecordingValue, Ui_QmitkIGTLoggerWidgetControls::m_pbStartRecording, m_Recorder, m_RecordingActivated, and m_RecordingTimer.
Referenced by OnRecording(), and OnStartRecording().
{ m_RecordingTimer->stop(); m_Recorder->StopRecording(); mitk::StatusBar::GetInstance()->DisplayText("Recording STOPPED", 2000); // Display message for 2s in status bar m_Controls->m_pbStartRecording->setText("Start recording"); m_Controls->m_leRecordingValue->setEnabled(true); m_Controls->m_cbRecordingType->setEnabled(true); m_RecordingActivated = false; }
void QmitkIGTLoggerWidget::UpdateOutputFileName | ( | ) | [protected, slot] |
Definition at line 184 of file QmitkIGTLoggerWidget.cpp.
References m_CmpFilename, m_Controls, and Ui_QmitkIGTLoggerWidgetControls::m_leOutputFile.
Referenced by CreateConnections().
{ QString oldName = m_CmpFilename; m_CmpFilename.clear(); m_CmpFilename = m_Controls->m_leOutputFile->text(); if (m_CmpFilename.isEmpty()) { QMessageBox::warning(NULL, "Warning", QString("Please enter valid path! Using previous path again.")); m_CmpFilename=oldName; m_Controls->m_leOutputFile->setText(m_CmpFilename); } }
void QmitkIGTLoggerWidget::UpdateRecordingTime | ( | ) | [protected, slot] |
Definition at line 203 of file QmitkIGTLoggerWidget.cpp.
References Ui_QmitkIGTLoggerWidgetControls::m_cbRecordingType, m_Controls, Ui_QmitkIGTLoggerWidgetControls::m_leRecordingValue, m_MilliSeconds, m_Samples, and SetDefaultRecordingSettings().
Referenced by CreateConnections().
{ // milliseconds selected in the combobox if (m_Controls->m_cbRecordingType->currentIndex()==0) { m_MilliSeconds = m_Controls->m_leRecordingValue->text(); if(m_MilliSeconds.compare("infinite")==0) { this->SetDefaultRecordingSettings(); } bool success = false; m_MilliSeconds.toInt(&success); if (!success) { QMessageBox::warning(NULL, "Warning", QString("Please enter a number!")); this->SetDefaultRecordingSettings(); return; } } else if(m_Controls->m_cbRecordingType->currentIndex()==1) // #samples selected in the combobox { m_Samples = m_Controls->m_leRecordingValue->text(); if(m_Samples.compare("infinite")==0) { this->SetDefaultRecordingSettings(); } bool success = false; m_Samples.toInt(&success); if (!success) { QMessageBox::warning(NULL, "Warning", QString("Please enter a number!")); this->SetDefaultRecordingSettings(); return; } } else if (m_Controls->m_cbRecordingType->currentIndex()==2)// infinite selected in the combobox { // U+221E unicode symbole for infinite QString infinite("infinite"); m_Controls->m_leRecordingValue->setText(infinite); } // m_Controls->m_leSamples->setText(QString::number(samples)); }
QString QmitkIGTLoggerWidget::m_CmpFilename [protected] |
Definition at line 79 of file QmitkIGTLoggerWidget.h.
Referenced by OnChangePressed(), OnStartRecording(), SetOutputFileName(), and UpdateOutputFileName().
Definition at line 72 of file QmitkIGTLoggerWidget.h.
Referenced by CreateConnections(), CreateQtPartControl(), OnChangePressed(), OnRecording(), OnStartRecording(), QmitkIGTLoggerWidget(), SetDefaultRecordingSettings(), SetOutputFileName(), StopRecording(), UpdateOutputFileName(), and UpdateRecordingTime().
holds the DataStorage
Definition at line 75 of file QmitkIGTLoggerWidget.h.
Referenced by SetDataStorage().
QString QmitkIGTLoggerWidget::m_Dir [protected] |
Definition at line 80 of file QmitkIGTLoggerWidget.h.
QString QmitkIGTLoggerWidget::m_MilliSeconds [protected] |
Definition at line 82 of file QmitkIGTLoggerWidget.h.
Referenced by SetDefaultRecordingSettings(), and UpdateRecordingTime().
records NDs to a XML file
Definition at line 77 of file QmitkIGTLoggerWidget.h.
Referenced by OnRecording(), OnStartRecording(), SetRecorder(), StopRecording(), and ~QmitkIGTLoggerWidget().
bool QmitkIGTLoggerWidget::m_RecordingActivated [protected] |
Definition at line 84 of file QmitkIGTLoggerWidget.h.
Referenced by OnStartRecording(), and StopRecording().
QTimer* QmitkIGTLoggerWidget::m_RecordingTimer [protected] |
Definition at line 81 of file QmitkIGTLoggerWidget.h.
Referenced by CreateConnections(), CreateQtPartControl(), OnStartRecording(), StopRecording(), and ~QmitkIGTLoggerWidget().
QString QmitkIGTLoggerWidget::m_Samples [protected] |
Definition at line 83 of file QmitkIGTLoggerWidget.h.
Referenced by OnRecording(), SetDefaultRecordingSettings(), and UpdateRecordingTime().
const std::string QmitkIGTLoggerWidget::VIEW_ID [static] |
Definition at line 45 of file QmitkIGTLoggerWidget.h.