diff --git a/Modules/IGTUI/Qmitk/QmitkNavigationDataSequentialPlayerControlWidget.ui b/Modules/IGTUI/Qmitk/QmitkNavigationDataSequentialPlayerControlWidget.ui
index 6c560e01fc..5b8a04d4bb 100644
--- a/Modules/IGTUI/Qmitk/QmitkNavigationDataSequentialPlayerControlWidget.ui
+++ b/Modules/IGTUI/Qmitk/QmitkNavigationDataSequentialPlayerControlWidget.ui
@@ -1,261 +1,266 @@
QmitkNavigationDataSequentialPlayerControlWidget
0
0
407
- 95
+ 106
Form
-
-
Sample
-
0
0
false
background-color: rgb(60,60,60)
10
QLCDNumber::Outline
-
Qt::Horizontal
40
20
-
Update Inverval
-
+
+ ms
+
1
-
-
- -
-
-
- ms
+
+ 10000
+
+
+ 20
+
+
+ 40
-
false
Qt::Horizontal
-
-
1
0
Restart from beginning
Restart
:/IGTUI/firstframe.png:/IGTUI/firstframe.png
-
1
0
Play at normal speed
Play
:/IGTUI/play.png
:/IGTUI/pause.png:/IGTUI/play.png
16
16
true
false
-
1
0
Stop playing
Stop
:/IGTUI/stop.png:/IGTUI/stop.png
-
Qt::Vertical
20
40
updateIntervalSpinBox
valueChanged(int)
QmitkNavigationDataSequentialPlayerControlWidget
OnUpdateIntervalChanged(int)
349
16
203
47
restartPushButton
clicked()
QmitkNavigationDataSequentialPlayerControlWidget
OnRestart()
69
73
203
47
playPushButton
clicked()
QmitkNavigationDataSequentialPlayerControlWidget
OnPlayPause()
203
73
203
47
stopPushButton
clicked()
QmitkNavigationDataSequentialPlayerControlWidget
OnStop()
336
73
203
47
OnUpdateIntervalChanged(int)
OnRestart()
OnPlayPause()
OnStop()
diff --git a/Plugins/org.mitk.gui.qt.igttracking/src/internal/QmitkNavigationDataPlayerView.cpp b/Plugins/org.mitk.gui.qt.igttracking/src/internal/QmitkNavigationDataPlayerView.cpp
index cc59e58ec9..0a6a37193c 100644
--- a/Plugins/org.mitk.gui.qt.igttracking/src/internal/QmitkNavigationDataPlayerView.cpp
+++ b/Plugins/org.mitk.gui.qt.igttracking/src/internal/QmitkNavigationDataPlayerView.cpp
@@ -1,225 +1,230 @@
/*===================================================================
The Medical Imaging Interaction Toolkit (MITK)
Copyright (c) German Cancer Research Center,
Division of Medical and Biological Informatics.
All rights reserved.
This software is distributed WITHOUT ANY WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE.
See LICENSE.txt or http://www.mitk.org for details.
===================================================================*/
// Blueberry
#include
#include
// Qmitk
#include "QmitkNavigationDataPlayerView.h"
#include "QmitkStdMultiWidget.h"
// QT
#include
//mitk
#include
#include
#include
#include
#include
// VTK
#include
const std::string QmitkNavigationDataPlayerView::VIEW_ID = "org.mitk.views.navigationdataplayer";
QmitkNavigationDataPlayerView::QmitkNavigationDataPlayerView()
: QmitkFunctionality()
, m_Controls( 0 )
, m_MultiWidget( NULL )
{
}
QmitkNavigationDataPlayerView::~QmitkNavigationDataPlayerView()
{
}
void QmitkNavigationDataPlayerView::CreateQtPartControl( QWidget *parent )
{
// build up qt view, unless already done
if ( !m_Controls )
{
// create GUI widgets from the Qt Designer's .ui file
m_Controls = new Ui::QmitkNavigationDataPlayerViewControls;
m_Controls->setupUi( parent );
this->CreateBundleWidgets( parent );
this->CreateConnections();
// make deselected Player invisible
m_Controls->m_TimedWidget->setVisible(false);
}
}
void QmitkNavigationDataPlayerView::CreateBundleWidgets(QWidget* parent)
{
//m_PlayerWidget = new QmitkIGTPlayerWidget( parent ); // this bundle's ND player widget
}
void QmitkNavigationDataPlayerView::CreateConnections()
{
connect( m_Controls->m_RdbSequential, SIGNAL(released()), this, SLOT(OnSelectPlayer()) );
connect( m_Controls->m_RdbTimeBased, SIGNAL(released()), this, SLOT(OnSelectPlayer()) );
connect( m_Controls->m_BtnOpenFile, SIGNAL(released()), this, SLOT(OnOpenFile()) );
connect( m_Controls->m_ChkDisplay, SIGNAL(released()), this, SLOT(OnSetDisplay()) );
connect( m_Controls->m_chkRepeat, SIGNAL(stateChanged(int)), this, SLOT(OnSetRepeat(int)) );
connect( m_Controls->m_ChkMicroservice, SIGNAL(released()), this, SLOT(OnSetMicroservice()) );
connect( m_Controls->m_SequentialWidget, SIGNAL(SignalUpdate()), this, SLOT(OnUpdate()) );
connect( m_Controls->m_TimedWidget, SIGNAL(SignalUpdate()), this, SLOT(OnUpdate()) );
this->SetInteractionComponentsEnabledState(false);
-
}
void QmitkNavigationDataPlayerView::OnPlayingStarted()
{
}
void QmitkNavigationDataPlayerView::OnOpenFile(){
mitk::NavigationDataReaderXML::Pointer reader = mitk::NavigationDataReaderXML::New();
// FIXME Filter for correct Files and use correct Reader
QString fileName = QFileDialog::getOpenFileName(NULL, "Open Navigation Data Set", "", "XML files (*.xml)"); //"XML files (*.xml);; Csv files (*.csv)" for additional csv files. Not supported yet.
- m_Data = reader->Read(fileName.toStdString());
+ if ( (fileName == 0) || (fileName.isEmpty()) ) return;
+ try
+ {
+ m_Data = reader->Read(fileName.toStdString());
+ } catch (...) {
+ MITK_WARN("NavigationDataPlayerView") << "could not open file " << fileName.toStdString();
+ }
// Update Labels
m_Controls->m_LblFilePath->setText(fileName);
m_Controls->m_LblFrames->setText(QString::number(m_Data->Size()));
m_Controls->m_LblTools->setText(QString::number(m_Data->GetNumberOfTools()));
// Initialize Widgets and create Player
this->OnSelectPlayer();
this->SetInteractionComponentsEnabledState(true);
}
void QmitkNavigationDataPlayerView::OnSelectPlayer()
{
if (m_Controls->m_RdbSequential->isChecked())
{
m_Controls->m_SequentialWidget->setVisible(true);
m_Controls->m_TimedWidget->setVisible(false);
mitk::NavigationDataSequentialPlayer::Pointer seqPlayer = mitk::NavigationDataSequentialPlayer::New();
seqPlayer->SetNavigationDataSet(m_Data);
m_Controls->m_SequentialWidget->SetPlayer(seqPlayer);
m_Player = seqPlayer;
} else {
m_Controls->m_SequentialWidget->setVisible(false);
m_Controls->m_TimedWidget->setVisible(true);
mitk::NavigationDataPlayer::Pointer timedPlayer = mitk::NavigationDataPlayer::New();
timedPlayer->SetNavigationDataSet(m_Data);
m_Controls->m_TimedWidget->SetPlayer(timedPlayer);
m_Player = timedPlayer;
}
this->ConfigurePlayer();
// SetupRenderingPipeline
this->OnSetDisplay();
}
void QmitkNavigationDataPlayerView::ConfigurePlayer()
{
// set repeat mode according to the checkbox
m_Player->SetRepeat( m_Controls->m_chkRepeat->isChecked() );
// TODO finish method
}
void QmitkNavigationDataPlayerView::OnSetRepeat(int checkState)
{
m_Player->SetRepeat(checkState != 0);
}
void QmitkNavigationDataPlayerView::OnSetMicroservice(){
if(m_Controls->m_ChkMicroservice->isChecked())
{
m_ToolStorage = mitk::NavigationToolStorage::New();
for (int i = 0; i < m_Player->GetNumberOfIndexedOutputs(); i++)
{
mitk::NavigationTool::Pointer currentDummyTool = mitk::NavigationTool::New();
mitk::VirtualTrackingTool::Pointer dummyTool = mitk::VirtualTrackingTool::New();
std::stringstream name;
name << "Virtual Tool " << i;
dummyTool->SetToolName(name.str());
currentDummyTool->SetTrackingTool(dummyTool.GetPointer());
currentDummyTool->SetDataNode(m_RenderingNodes.at(i));
currentDummyTool->SetIdentifier(name.str());
m_ToolStorage->AddTool(currentDummyTool);
}
m_Player->RegisterAsMicroservice();
m_ToolStorage->SetName("NavigationDataPlayer Tool Storage");
m_ToolStorage->RegisterAsMicroservice(m_Player->GetMicroserviceID());
} else {
if (m_ToolStorage.IsNotNull()) m_ToolStorage->UnRegisterMicroservice();
m_ToolStorage = NULL;
m_Player->UnRegisterMicroservice();
}
}
void QmitkNavigationDataPlayerView::OnUpdate(){
m_VisFilter->Update();
mitk::RenderingManager::GetInstance()->RequestUpdateAll();
}
void QmitkNavigationDataPlayerView::OnSetDisplay(){
DestroyPipeline();
if ( (m_Controls->m_ChkDisplay->isChecked()) && ( m_Player.IsNotNull() ))
{
CreatePipeline();
}
}
void QmitkNavigationDataPlayerView::CreatePipeline(){
m_VisFilter = mitk::NavigationDataObjectVisualizationFilter::New();
m_VisFilter->ConnectTo(m_Player);
for (unsigned int i = 0 ; i < m_Player->GetNumberOfIndexedOutputs(); i++ ) {
mitk::DataNode::Pointer node = mitk::DataNode::New();
- QString name = "Recorded Tool " + QString::number(i);
+ QString name = "Recorded Tool " + QString::number(i + 1);
node->SetName(name.toStdString());
//create small sphere and use it as surface
mitk::Surface::Pointer mySphere = mitk::Surface::New();
vtkSphereSource *vtkData = vtkSphereSource::New();
vtkData->SetRadius(5.0f);
vtkData->SetCenter(0.0, 0.0, 0.0);
vtkData->Update();
mySphere->SetVtkPolyData(vtkData->GetOutput());
vtkData->Delete();
node->SetData(mySphere);
m_VisFilter->SetRepresentationObject(i, mySphere);
// Add Node to DataStorageand to local list of Nodes
GetDataStorage()->Add(node);
m_RenderingNodes.push_back(node);
}
m_VisFilter->Update();
}
void QmitkNavigationDataPlayerView::DestroyPipeline(){
m_VisFilter = NULL;
for (unsigned int i = 0; i < m_RenderingNodes.size(); i++){
this->GetDataStorage()->Remove(m_RenderingNodes[i]);
}
m_RenderingNodes.clear();
}
void QmitkNavigationDataPlayerView::SetInteractionComponentsEnabledState(bool isActive){
m_Controls->m_grpbxSettings->setEnabled(isActive);
m_Controls->m_grpbxControls->setEnabled(isActive);
-}
+}
\ No newline at end of file