#include <QmitkVolumetryView.h>
Public Member Functions | |
QmitkVolumetryView () | |
virtual | ~QmitkVolumetryView () |
virtual void | CreateQtPartControl (QWidget *parent) |
virtual void | CreateConnections () |
Creation of the connections of main and control widget. | |
virtual void | Activated () |
Called when the functionality is activated. | |
virtual void | Deactivated () |
virtual void | StdMultiWidgetAvailable (QmitkStdMultiWidget &stdMultiWidget) |
virtual void | StdMultiWidgetNotAvailable () |
Static Public Attributes | |
static const std::string | VIEW_ID = "org.mitk.views.volumetry" |
Protected Slots | |
void | OnCalculateVolume () |
void | OnTimeSeriesButtonClicked () |
void | OnThresholdSliderChanged (int value) |
void | OnSaveCsvButtonClicked () |
void | OnImageSelected (const mitk::DataNode *item) |
Protected Member Functions | |
mitk::Image * | GetImage () |
mitk::DataNode * | GetOverlayNode () |
void | CreateOverlayChild () |
void | UpdateSliderLabel () |
void | UpdateSlider () |
const mitk::DataNode * | GetImageNode () |
Protected Attributes | |
Ui::QmitkVolumetryViewControls * | m_Controls |
QmitkStdMultiWidget * | m_MultiWidget |
mitk::WeakPointer< mitk::DataNode > | m_SelectedDataNode |
store weak pointer of the DataNode | |
mitk::DataNode::Pointer | m_OverlayNode |
mitk::DataStorage::Pointer | m_DataStorage |
Document your class here.
Definition at line 38 of file QmitkVolumetryView.h.
QmitkVolumetryView::QmitkVolumetryView | ( | ) |
Definition at line 42 of file QmitkVolumetryView.cpp.
: QmitkFunctionality(), m_Controls(NULL), m_MultiWidget(NULL) { //m_DataStorage = this->GetDefaultDataStorage(); }
QmitkVolumetryView::~QmitkVolumetryView | ( | ) | [virtual] |
Definition at line 50 of file QmitkVolumetryView.cpp.
{ }
void QmitkVolumetryView::Activated | ( | ) | [virtual] |
Called when the functionality is activated.
Reimplemented from QmitkFunctionality.
Definition at line 96 of file QmitkVolumetryView.cpp.
void QmitkVolumetryView::CreateConnections | ( | ) | [virtual] |
Creation of the connections of main and control widget.
Definition at line 79 of file QmitkVolumetryView.cpp.
References m_Controls, OnCalculateVolume(), OnImageSelected(), OnSaveCsvButtonClicked(), QmitkFunctionality::OnSelectionChanged(), OnThresholdSliderChanged(), and OnTimeSeriesButtonClicked().
Referenced by CreateQtPartControl().
{ if ( m_Controls ) { connect( m_Controls->m_ImageSelector, SIGNAL(OnSelectionChanged(const mitk::DataNode*)), this, SLOT(OnImageSelected(const mitk::DataNode*)) ); //connect( (QObject*)(m_Controls->m_Button), SIGNAL(clicked()), this, SLOT(DoSomething()) ); connect( (QObject*)(m_Controls->m_ThresholdSlider), SIGNAL(valueChanged(int)), this, SLOT(OnThresholdSliderChanged(int)) ); //connect( (QObject*)(m_Controls->m_ThresholdLineEdit), SIGNAL(valueChanged(int)), this, SLOT(OnThresholdLineEdit(int)) ); //connect( (QObject*)(m_Controls->m_TextEdit), SIGNAL(valueChanged(int)), this, SLOT(OnTextEditChanged(int)) ); connect( (QObject*)(m_Controls->m_CalcButton), SIGNAL(clicked()), this, SLOT(OnCalculateVolume()) ); connect( (QObject*)(m_Controls->m_TimeSeriesButton), SIGNAL(clicked()), this, SLOT(OnTimeSeriesButtonClicked()) ); connect( (QObject*)(m_Controls->m_SaveCsvButton), SIGNAL(clicked()), this, SLOT(OnSaveCsvButtonClicked()) ); } }
void QmitkVolumetryView::CreateOverlayChild | ( | ) | [protected] |
Definition at line 345 of file QmitkVolumetryView.cpp.
References QmitkFunctionality::GetDefaultDataStorage(), mitk::WeakPointer< TObjectType >::IsNotNull(), m_Controls, m_OverlayNode, m_SelectedDataNode, mitk::StringProperty::New(), and mitk::DataNode::New().
Referenced by OnImageSelected().
{ if (m_SelectedDataNode.IsNotNull()) { m_OverlayNode = mitk::DataNode::New(); mitk::StringProperty::Pointer nameProp = mitk::StringProperty::New("volume threshold overlay image" ); m_OverlayNode->SetProperty( "reslice interpolation", m_SelectedDataNode->GetProperty("reslice interpolation") ); m_OverlayNode->SetProperty( "name", nameProp ); m_OverlayNode->SetData(m_SelectedDataNode->GetData()); m_OverlayNode->SetColor(0.0,1.0,0.0); m_OverlayNode->SetOpacity(.25); int layer = 0; m_SelectedDataNode->GetIntProperty("layer", layer); m_OverlayNode->SetIntProperty("layer", layer+1); m_OverlayNode->SetLevelWindow(mitk::LevelWindow(m_Controls->m_ThresholdSlider->value(),1)); this->GetDefaultDataStorage()->Add(m_OverlayNode); //mitk::DataTreeIteratorClone iteratorClone = m_DataTreeIteratorClone; //while ( !iteratorClone->IsAtEnd() ) //{ // mitk::DataNode::Pointer node = iteratorClone->Get(); // if ( node == m_SelectedDataNode ) // { // iteratorClone->Add(m_OverlayNode); // break; // } // ++iteratorClone; //} } }
void QmitkVolumetryView::CreateQtPartControl | ( | QWidget * | parent ) | [virtual] |
Implements berry::QtViewPart.
Definition at line 54 of file QmitkVolumetryView.cpp.
References CreateConnections(), QmitkFunctionality::GetDefaultDataStorage(), m_Controls, and mitk::NodePredicateDataType::New().
{ if (!m_Controls) { // create GUI widgets m_Controls = new Ui::QmitkVolumetryViewControls; m_Controls->setupUi(parent); this->CreateConnections(); // define data type for combobox m_Controls->m_ImageSelector->SetDataStorage( this->GetDefaultDataStorage() ); m_Controls->m_ImageSelector->SetPredicate( mitk::NodePredicateDataType::New("Image") ); } }
void QmitkVolumetryView::Deactivated | ( | ) | [virtual] |
Only called when IsExclusiveFunctionality() returns true.
Reimplemented from QmitkFunctionality.
Definition at line 101 of file QmitkVolumetryView.cpp.
mitk::Image * QmitkVolumetryView::GetImage | ( | ) | [protected] |
Definition at line 388 of file QmitkVolumetryView.cpp.
References m_SelectedDataNode.
{ return dynamic_cast<mitk::Image*>(m_SelectedDataNode->GetData()); }
const mitk::DataNode * QmitkVolumetryView::GetImageNode | ( | ) | [protected] |
Definition at line 309 of file QmitkVolumetryView.cpp.
References m_SelectedDataNode.
{ return m_SelectedDataNode; }
mitk::DataNode * QmitkVolumetryView::GetOverlayNode | ( | ) | [protected] |
Definition at line 380 of file QmitkVolumetryView.cpp.
References m_OverlayNode.
{ return m_OverlayNode; }
void QmitkVolumetryView::OnCalculateVolume | ( | ) | [protected, slot] |
Definition at line 264 of file QmitkVolumetryView.cpp.
References mitk::Image::GetDimension(), mitk::WeakPointer< TObjectType >::IsNotNull(), m_Controls, m_SelectedDataNode, and mitk::VolumeCalculator::New().
Referenced by CreateConnections().
{ if (m_SelectedDataNode.IsNotNull() ) { mitk::Image* image = dynamic_cast<mitk::Image*>(m_SelectedDataNode->GetData()); if (image) { std::cout << "Dimension:" << image->GetDimension() << std::endl; std::cout << "Dimension[3]:" << image->GetDimension(3) << std::endl; mitk::VolumeCalculator::Pointer volCalc = mitk::VolumeCalculator::New(); volCalc->SetImage(image); volCalc->SetThreshold(m_Controls->m_ThresholdSlider->value()); volCalc->ComputeVolume(); std::stringstream vs; vs << volCalc->GetVolume() << " ml"; m_Controls->m_Result->setText(vs.str().c_str() ); } } }
void QmitkVolumetryView::OnImageSelected | ( | const mitk::DataNode * | item ) | [protected, slot] |
Definition at line 107 of file QmitkVolumetryView.cpp.
References CreateOverlayChild(), mitk::DataNode::GetData(), QmitkFunctionality::GetDefaultDataStorage(), mitk::Image::GetDimension(), mitk::RenderingManager::GetInstance(), mitk::Image::GetScalarValue2ndMin(), mitk::Image::GetScalarValueMaxNoRecompute(), int(), mitk::BaseData::IsInitialized(), mitk::WeakPointer< TObjectType >::IsNotNull(), m_Controls, m_OverlayNode, m_SelectedDataNode, and UpdateSlider().
Referenced by CreateConnections().
{ // nothing selected (NULL selection) if( item == NULL || item->GetData() == NULL ) return; if( item->GetData()->GetSource() == NULL ) { m_SelectedDataNode = 0; return; } m_SelectedDataNode = const_cast<mitk::DataNode*>(item); std::cout << "Selected mitk::Image at address " << m_SelectedDataNode->GetData() << std::endl; if(item == m_OverlayNode.GetPointer()) return; if (m_OverlayNode) { this->GetDefaultDataStorage()->Remove(m_OverlayNode); // remove it from the tree //mitk::DataTreeIteratorClone overlayIt = mitk::DataTreeHelper::FindIteratorToNode(m_DataTreeIteratorClone->GetTree(),m_OverlayNode); //if (overlayIt.IsNotNull()) { overlayIt->Remove(); } m_OverlayNode = NULL; } this->CreateOverlayChild(); //std::string name; //if (node->GetName(name)) //{ // // m_TreeNodeNameLabel->setText( name.c_str() ); //} m_Controls->m_CalcButton->setEnabled(false); m_Controls->m_TimeSeriesButton->setEnabled(false); m_Controls->m_SaveCsvButton->setEnabled(false); m_Controls->m_TextEdit->clear(); if (m_SelectedDataNode.IsNotNull() ) { mitk::Image* image = dynamic_cast<mitk::Image*>(m_SelectedDataNode->GetData()); image->Update(); if (image && image->IsInitialized()) { if (image->GetDimension() == 4) { m_Controls->m_TimeSeriesButton->setEnabled(true); } else { m_Controls->m_CalcButton->setEnabled(true); } int minVal = (int)image->GetScalarValue2ndMin(); int maxVal = (int)image->GetScalarValueMaxNoRecompute(); if (minVal == maxVal) --minVal; m_Controls->m_ThresholdSlider->setMinimum(minVal); m_Controls->m_ThresholdSlider->setMaximum(maxVal); m_Controls->m_ThresholdSlider->setEnabled(true); this->UpdateSlider(); mitk::RenderingManager::GetInstance()->RequestUpdateAll(); } } }
void QmitkVolumetryView::OnSaveCsvButtonClicked | ( | ) | [protected, slot] |
Definition at line 392 of file QmitkVolumetryView.cpp.
References m_Controls, and QmitkFunctionality::m_Parent.
Referenced by CreateConnections().
{ static QString lastSavePath = QDir::homePath(); QString s = QFileDialog::getSaveFileName( this->m_Parent, "Save as..", lastSavePath, "CSV Files (*.csv)"); /*"Save file dialog" "Choose a filename to save under" );*/ if (! s.isEmpty()) { lastSavePath = s; QFile saveFile(s); if ( saveFile.open(QIODevice::WriteOnly)) { QTextStream stream( &saveFile ); stream << m_Controls->m_TextEdit->toPlainText().replace('\t',';'); saveFile.close(); } else { // QMessageBox::critical(NULL,"Save Error!",QString("Saving of CSV failed! Couldn't open output file \"") + saveFile + QString("\""),QMessageBox:Ok,QMessageBox::NoButton); //QMessageBox::critical(NULL,"Save Error!","Saving of CSV failed! Couldn't open output file \"" + saveFile.name() +"\"",QMessageBox::Ok,QMessageBox::NoButton); } } }
void QmitkVolumetryView::OnThresholdSliderChanged | ( | int | value ) | [protected, slot] |
Definition at line 334 of file QmitkVolumetryView.cpp.
References mitk::RenderingManager::GetInstance(), m_OverlayNode, and UpdateSlider().
Referenced by CreateConnections().
{ if (m_OverlayNode) { m_OverlayNode->SetLevelWindow(mitk::LevelWindow(value,1)); mitk::RenderingManager::GetInstance()->RequestUpdateAll(); this->UpdateSlider(); } }
void QmitkVolumetryView::OnTimeSeriesButtonClicked | ( | ) | [protected, slot] |
Definition at line 284 of file QmitkVolumetryView.cpp.
References mitk::WeakPointer< TObjectType >::IsNotNull(), m_Controls, m_SelectedDataNode, and mitk::VolumeCalculator::New().
Referenced by CreateConnections().
{ if (m_SelectedDataNode.IsNotNull() ) { mitk::Image* image = dynamic_cast<mitk::Image*>(m_SelectedDataNode->GetData()); if (image) { mitk::VolumeCalculator::Pointer volCalc = mitk::VolumeCalculator::New(); volCalc->SetImage(image); volCalc->SetThreshold(m_Controls->m_ThresholdSlider->value()); volCalc->ComputeVolume(); std::vector<float> volumes = volCalc->GetVolumes(); std::stringstream vs; int timeStep = 0; for (std::vector<float>::iterator it = volumes.begin(); it != volumes.end(); it++) { vs << timeStep++ << "\t" << *it << std::endl; } m_Controls->m_TextEdit->setText(vs.str().c_str()); m_Controls->m_TextEdit->setTabStopWidth(20); m_Controls->m_SaveCsvButton->setEnabled(true); } } }
void QmitkVolumetryView::StdMultiWidgetAvailable | ( | QmitkStdMultiWidget & | stdMultiWidget ) | [virtual] |
Called when a StdMultiWidget is available. Should not be used anymore, see GetActiveStdMultiWidget()
Reimplemented from QmitkFunctionality.
Definition at line 69 of file QmitkVolumetryView.cpp.
References m_MultiWidget.
{ m_MultiWidget = &stdMultiWidget; }
void QmitkVolumetryView::StdMultiWidgetNotAvailable | ( | ) | [virtual] |
Called when no StdMultiWidget is available anymore. Should not be used anymore, see GetActiveStdMultiWidget()
Reimplemented from QmitkFunctionality.
Definition at line 74 of file QmitkVolumetryView.cpp.
References m_MultiWidget.
{ m_MultiWidget = NULL; }
void QmitkVolumetryView::UpdateSlider | ( | ) | [protected] |
Definition at line 314 of file QmitkVolumetryView.cpp.
References int(), mitk::WeakPointer< TObjectType >::IsNotNull(), m_Controls, and m_SelectedDataNode.
Referenced by OnImageSelected(), OnThresholdSliderChanged(), and UpdateSliderLabel().
{ if (m_SelectedDataNode.IsNotNull() && dynamic_cast<mitk::Image*>(m_SelectedDataNode->GetData())) { int intSliderValue = (int)m_Controls->m_ThresholdSlider->value(); QString stringSliderValue; stringSliderValue.setNum(intSliderValue); m_Controls->m_ThresholdLineEdit->setText(stringSliderValue); } }
void QmitkVolumetryView::UpdateSliderLabel | ( | ) | [protected] |
Definition at line 326 of file QmitkVolumetryView.cpp.
References m_Controls, and UpdateSlider().
{ int sliderValue = atoi(m_Controls->m_ThresholdLineEdit->text().toLatin1()); m_Controls->m_ThresholdSlider->setValue(sliderValue); this->UpdateSlider(); }
Ui::QmitkVolumetryViewControls* QmitkVolumetryView::m_Controls [protected] |
Definition at line 96 of file QmitkVolumetryView.h.
Referenced by CreateConnections(), CreateOverlayChild(), CreateQtPartControl(), OnCalculateVolume(), OnImageSelected(), OnSaveCsvButtonClicked(), OnTimeSeriesButtonClicked(), UpdateSlider(), and UpdateSliderLabel().
Definition at line 106 of file QmitkVolumetryView.h.
QmitkStdMultiWidget* QmitkVolumetryView::m_MultiWidget [protected] |
Definition at line 98 of file QmitkVolumetryView.h.
Referenced by StdMultiWidgetAvailable(), and StdMultiWidgetNotAvailable().
Definition at line 104 of file QmitkVolumetryView.h.
Referenced by CreateOverlayChild(), GetOverlayNode(), OnImageSelected(), and OnThresholdSliderChanged().
store weak pointer of the DataNode
Definition at line 101 of file QmitkVolumetryView.h.
Referenced by CreateOverlayChild(), GetImage(), GetImageNode(), OnCalculateVolume(), OnImageSelected(), OnTimeSeriesButtonClicked(), and UpdateSlider().
const std::string QmitkVolumetryView::VIEW_ID = "org.mitk.views.volumetry" [static] |
Definition at line 46 of file QmitkVolumetryView.h.