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

QmitkIGTLoggerWidget Class Reference

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>

Collaboration diagram for QmitkIGTLoggerWidget:
Collaboration graph
[legend]

List of all members.

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::QmitkIGTLoggerWidgetControlsm_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

Detailed Description

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.


Constructor & Destructor Documentation

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;
}

Member Function Documentation

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]
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]
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));
}

Member Data Documentation

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.

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().

Definition at line 84 of file QmitkIGTLoggerWidget.h.

Referenced by OnStartRecording(), and StopRecording().

QString QmitkIGTLoggerWidget::m_Samples [protected]
const std::string QmitkIGTLoggerWidget::VIEW_ID [static]

Definition at line 45 of file QmitkIGTLoggerWidget.h.


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