Display the data selection of a ToolManager. More...
#include <QmitkToolReferenceDataSelectionBox.h>
Display the data selection of a ToolManager.
There is a separate page describing the general design of QmitkInteractiveSegmentation: QmitkInteractiveSegmentationTechnicalPage
Shows the reference data of a ToolManager in a segmentation setting.
The reference image can be selected from a combobox, where all images of the scene are listed.
Definition at line 47 of file QmitkToolReferenceDataSelectionBox.h.
What kind of items should be displayed.
Every mitk::Tool holds a NodePredicateBase object, telling the kind of data that this tool will successfully work with. There are two ways that this list box deals with these predicates.
DEFAULT is: list data if ANY one of the displayed tools' predicate matches. Other option: list data if ALL one of the displayed tools' predicate matches
Definition at line 63 of file QmitkToolReferenceDataSelectionBox.h.
QmitkToolReferenceDataSelectionBox::QmitkToolReferenceDataSelectionBox | ( | QWidget * | parent = 0 , |
mitk::DataStorage * | storage = 0 |
||
) |
Definition at line 31 of file QmitkToolReferenceDataSelectionBox.cpp.
References m_Layout, m_ReferenceDataSelectionBox, m_ToolManager, mitk::ToolManager::New(), OnReferenceDataSelected(), and OnToolManagerReferenceDataModified().
:QWidget(parent), m_SelfCall(false), m_DisplayMode(ListDataIfAnyToolMatches ), m_ToolGroupsForFiltering("default") { m_ToolManager = mitk::ToolManager::New( storage ); m_Layout = new QVBoxLayout( this ); this->setLayout( m_Layout ); m_ReferenceDataSelectionBox = new QmitkDataStorageComboBox( this ); m_Layout->addWidget(m_ReferenceDataSelectionBox); connect( m_ReferenceDataSelectionBox, SIGNAL(OnSelectionChanged(const mitk::DataNode*)), this, SLOT(OnReferenceDataSelected(const mitk::DataNode*)) ); m_ToolManager->ReferenceDataChanged += mitk::MessageDelegate<QmitkToolReferenceDataSelectionBox>( this, &QmitkToolReferenceDataSelectionBox::OnToolManagerReferenceDataModified ); }
QmitkToolReferenceDataSelectionBox::~QmitkToolReferenceDataSelectionBox | ( | ) | [virtual] |
Definition at line 51 of file QmitkToolReferenceDataSelectionBox.cpp.
References m_ToolManager, and OnToolManagerReferenceDataModified().
{ m_ToolManager->ReferenceDataChanged -= mitk::MessageDelegate<QmitkToolReferenceDataSelectionBox>( this, &QmitkToolReferenceDataSelectionBox::OnToolManagerReferenceDataModified ); }
void QmitkToolReferenceDataSelectionBox::EnsureOnlyReferenceImageIsVisibile | ( | ) | [protected, slot] |
Definition at line 107 of file QmitkToolReferenceDataSelectionBox.cpp.
References GetAllPossibleReferenceImages(), mitk::RenderingManager::GetInstance(), m_ToolManager, and mitk::DataNode::SetVisibility().
Referenced by OnReferenceDataSelected(), and UpdateDataDisplay().
{ mitk::DataNode* selectedNode = m_ToolManager->GetReferenceData(0); mitk::DataStorage::SetOfObjects::ConstPointer allImageNodes = GetAllPossibleReferenceImages(); for ( mitk::DataStorage::SetOfObjects::const_iterator nodeIter = allImageNodes->begin(); nodeIter != allImageNodes->end(); ++nodeIter ) { mitk::DataNode* currentNode = (*nodeIter).GetPointer(); currentNode->SetVisibility( currentNode == selectedNode ); // only the selected one is visible, everything else is invisible } mitk::RenderingManager::GetInstance()->RequestUpdateAll(); }
mitk::DataStorage::SetOfObjects::ConstPointer QmitkToolReferenceDataSelectionBox::GetAllPossibleReferenceImages | ( | ) | [protected] |
display everything matching the predicate
Definition at line 182 of file QmitkToolReferenceDataSelectionBox.cpp.
References mitk::DataStorage::GetAll(), GetAllPossibleReferenceImagesPredicate(), mitk::DataStorage::GetSubset(), and m_ToolManager.
Referenced by EnsureOnlyReferenceImageIsVisibile().
{ mitk::DataStorage* dataStorage = m_ToolManager->GetDataStorage(); if (!dataStorage) { return mitk::DataStorage::SetOfObjects::New().GetPointer(); } mitk::NodePredicateBase::ConstPointer completePredicate = GetAllPossibleReferenceImagesPredicate(); mitk::DataStorage::SetOfObjects::ConstPointer allObjects; if (completePredicate.IsNotNull()) { allObjects = dataStorage->GetSubset( completePredicate ); } else { allObjects = dataStorage->GetAll(); } mitk::ToolManager::DataVectorType resultVector; for ( mitk::DataStorage::SetOfObjects::const_iterator objectIter = allObjects->begin(); objectIter != allObjects->end(); ++objectIter ) { mitk::DataNode* node = (*objectIter).GetPointer(); resultVector.push_back( node ); } mitk::DataStorage::SetOfObjects::ConstPointer sceneImages = dataStorage->GetSubset( completePredicate ); return sceneImages; }
mitk::NodePredicateBase::ConstPointer QmitkToolReferenceDataSelectionBox::GetAllPossibleReferenceImagesPredicate | ( | ) | [protected] |
Build up predicate:
Definition at line 135 of file QmitkToolReferenceDataSelectionBox.cpp.
References mitk::Tool::GetGroup(), mitk::Tool::GetName(), mitk::Tool::GetReferenceDataPreference(), ListDataIfAnyToolMatches, m_DisplayMode, m_ToolGroupsForFiltering, m_ToolManager, mitk::NodePredicateAnd::New(), and mitk::NodePredicateOr::New().
Referenced by GetAllPossibleReferenceImages(), and UpdateDataDisplay().
{ std::vector< mitk::NodePredicateBase::ConstPointer > m_Predicates; m_Predicates.clear(); mitk::NodePredicateBase::ConstPointer completePredicate = NULL; const mitk::ToolManager::ToolVectorTypeConst allTools = m_ToolManager->GetTools(); for ( mitk::ToolManager::ToolVectorTypeConst::const_iterator iter = allTools.begin(); iter != allTools.end(); ++iter ) { const mitk::Tool* tool = *iter; if ( (m_ToolGroupsForFiltering.empty()) || ( m_ToolGroupsForFiltering.find( tool->GetGroup() ) != std::string::npos ) || ( m_ToolGroupsForFiltering.find( tool->GetName() ) != std::string::npos ) ) { if (completePredicate) { if ( m_DisplayMode == ListDataIfAnyToolMatches ) { m_Predicates.push_back( mitk::NodePredicateOr::New( completePredicate, tool->GetReferenceDataPreference() ).GetPointer() ); } else { m_Predicates.push_back( mitk::NodePredicateAnd::New( completePredicate, tool->GetReferenceDataPreference() ).GetPointer() ); } completePredicate = m_Predicates.back(); } else { completePredicate = tool->GetReferenceDataPreference(); } } } return completePredicate; }
mitk::DataStorage * QmitkToolReferenceDataSelectionBox::GetDataStorage | ( | ) |
Definition at line 56 of file QmitkToolReferenceDataSelectionBox.cpp.
References m_ToolManager.
{ return m_ToolManager->GetDataStorage(); }
mitk::ToolManager * QmitkToolReferenceDataSelectionBox::GetToolManager | ( | ) |
Definition at line 74 of file QmitkToolReferenceDataSelectionBox.cpp.
References m_ToolManager.
{ return m_ToolManager; }
void QmitkToolReferenceDataSelectionBox::Initialize | ( | mitk::DataStorage * | storage ) |
initialization with a data storage object
Definition at line 66 of file QmitkToolReferenceDataSelectionBox.cpp.
References m_ReferenceDataSelectionBox, QmitkDataStorageComboBox::SetDataStorage(), and UpdateDataDisplay().
{ m_ReferenceDataSelectionBox->SetDataStorage( storage ); UpdateDataDisplay(); }
void QmitkToolReferenceDataSelectionBox::OnReferenceDataSelected | ( | const mitk::DataNode * | node ) | [protected, slot] |
Definition at line 96 of file QmitkToolReferenceDataSelectionBox.cpp.
References EnsureOnlyReferenceImageIsVisibile(), m_SelfCall, m_ToolManager, and ReferenceNodeSelected().
Referenced by QmitkToolReferenceDataSelectionBox().
{ emit ReferenceNodeSelected(selectedNode); m_SelfCall = true; m_ToolManager->SetReferenceData( const_cast< mitk::DataNode*>(selectedNode)); // maybe NULL m_SelfCall = false; EnsureOnlyReferenceImageIsVisibile(); }
void QmitkToolReferenceDataSelectionBox::OnToolManagerReferenceDataModified | ( | ) |
Definition at line 125 of file QmitkToolReferenceDataSelectionBox.cpp.
References m_SelfCall, m_ToolManager, ReferenceNodeSelected(), and UpdateDataDisplay().
Referenced by QmitkToolReferenceDataSelectionBox(), SetToolManager(), and ~QmitkToolReferenceDataSelectionBox().
{ if (m_SelfCall) return; const mitk::DataNode* node = m_ToolManager->GetReferenceData(0); emit ReferenceNodeSelected(node); UpdateDataDisplay(); }
void QmitkToolReferenceDataSelectionBox::ReferenceNodeSelected | ( | const mitk::DataNode * | ) | [signal] |
Referenced by OnReferenceDataSelected(), and OnToolManagerReferenceDataModified().
void QmitkToolReferenceDataSelectionBox::SetDataStorage | ( | mitk::DataStorage & | storage ) |
Definition at line 61 of file QmitkToolReferenceDataSelectionBox.cpp.
References m_ToolManager.
{ m_ToolManager->SetDataStorage(storage); }
void QmitkToolReferenceDataSelectionBox::SetDisplayMode | ( | QmitkToolReferenceDataSelectionBox::DisplayMode | mode ) |
How the list contents is determined.
See also documentation of DisplayMode.
Definition at line 227 of file QmitkToolReferenceDataSelectionBox.cpp.
References m_DisplayMode, and UpdateDataDisplay().
{ if (m_DisplayMode != mode) { m_DisplayMode = mode; UpdateDataDisplay(); } }
void QmitkToolReferenceDataSelectionBox::SetToolGroupsForFiltering | ( | const std::string & | groups ) |
No brief description.
Should be called to restrict the number of tools that are evaluated to build up the list. Default is to ask all tools for their predicate, by setting the 'groups' string this can be restricted to certain groups of tools or single tools.
Definition at line 221 of file QmitkToolReferenceDataSelectionBox.cpp.
References m_ToolGroupsForFiltering, and UpdateDataDisplay().
{ m_ToolGroupsForFiltering = groups; UpdateDataDisplay(); }
void QmitkToolReferenceDataSelectionBox::SetToolManager | ( | mitk::ToolManager & | newManager ) |
Definition at line 79 of file QmitkToolReferenceDataSelectionBox.cpp.
References m_ToolManager, OnToolManagerReferenceDataModified(), and UpdateDataDisplay().
{ m_ToolManager->ReferenceDataChanged -= mitk::MessageDelegate<QmitkToolReferenceDataSelectionBox>( this, &QmitkToolReferenceDataSelectionBox::OnToolManagerReferenceDataModified ); m_ToolManager = &newManager; m_ToolManager->ReferenceDataChanged += mitk::MessageDelegate<QmitkToolReferenceDataSelectionBox>( this, &QmitkToolReferenceDataSelectionBox::OnToolManagerReferenceDataModified ); UpdateDataDisplay(); }
void QmitkToolReferenceDataSelectionBox::UpdateDataDisplay | ( | ) |
Definition at line 90 of file QmitkToolReferenceDataSelectionBox.cpp.
References EnsureOnlyReferenceImageIsVisibile(), GetAllPossibleReferenceImagesPredicate(), m_ReferenceDataSelectionBox, and QmitkDataStorageComboBox::SetPredicate().
Referenced by Initialize(), OnToolManagerReferenceDataModified(), SetDisplayMode(), SetToolGroupsForFiltering(), and SetToolManager().
{ m_ReferenceDataSelectionBox->SetPredicate( GetAllPossibleReferenceImagesPredicate().GetPointer() ); EnsureOnlyReferenceImageIsVisibile(); }
Definition at line 123 of file QmitkToolReferenceDataSelectionBox.h.
Referenced by GetAllPossibleReferenceImagesPredicate(), and SetDisplayMode().
QVBoxLayout* QmitkToolReferenceDataSelectionBox::m_Layout [protected] |
Definition at line 126 of file QmitkToolReferenceDataSelectionBox.h.
Referenced by QmitkToolReferenceDataSelectionBox().
QmitkDataStorageComboBox* QmitkToolReferenceDataSelectionBox::m_ReferenceDataSelectionBox [protected] |
Definition at line 119 of file QmitkToolReferenceDataSelectionBox.h.
Referenced by Initialize(), QmitkToolReferenceDataSelectionBox(), and UpdateDataDisplay().
bool QmitkToolReferenceDataSelectionBox::m_SelfCall [protected] |
Definition at line 121 of file QmitkToolReferenceDataSelectionBox.h.
Referenced by OnReferenceDataSelected(), and OnToolManagerReferenceDataModified().
std::string QmitkToolReferenceDataSelectionBox::m_ToolGroupsForFiltering [protected] |
Definition at line 124 of file QmitkToolReferenceDataSelectionBox.h.
Referenced by GetAllPossibleReferenceImagesPredicate(), and SetToolGroupsForFiltering().
Definition at line 117 of file QmitkToolReferenceDataSelectionBox.h.
Referenced by EnsureOnlyReferenceImageIsVisibile(), GetAllPossibleReferenceImages(), GetAllPossibleReferenceImagesPredicate(), GetDataStorage(), GetToolManager(), OnReferenceDataSelected(), OnToolManagerReferenceDataModified(), QmitkToolReferenceDataSelectionBox(), SetDataStorage(), SetToolManager(), and ~QmitkToolReferenceDataSelectionBox().