QmitkNodeDescriptorManager manages a set of QmitkNodeDescriptors. More...
#include <QmitkNodeDescriptorManager.h>
Public Member Functions | |
virtual void | Initialize () |
void | AddDescriptor (QmitkNodeDescriptor *_Descriptor) |
void | RemoveDescriptor (QmitkNodeDescriptor *_Descriptor) |
QmitkNodeDescriptor * | GetDescriptor (const mitk::DataNode *_Node) const |
QmitkNodeDescriptor * | GetDescriptor (const QString &_ClassName) const |
QmitkNodeDescriptor * | GetUnknownDataNodeDescriptor () const |
QList< QAction * > | GetActions (const mitk::DataNode *_Node) const |
QList< QAction * > | GetActions (const std::vector< mitk::DataNode * > &_Nodes) const |
virtual | ~QmitkNodeDescriptorManager () |
Static Public Member Functions | |
static QmitkNodeDescriptorManager * | GetInstance () |
Protected Member Functions | |
QmitkNodeDescriptorManager () | |
Protected Attributes | |
QmitkNodeDescriptor * | m_UnknownDataNodeDescriptor |
QList< QmitkNodeDescriptor * > | m_NodeDescriptors |
QmitkNodeDescriptorManager manages a set of QmitkNodeDescriptors.
Definition at line 29 of file QmitkNodeDescriptorManager.h.
QmitkNodeDescriptorManager::~QmitkNodeDescriptorManager | ( | ) | [virtual] |
Deletes all Descriptors in the list
Definition at line 166 of file QmitkNodeDescriptorManager.cpp.
{ //delete m_UnknownDataNodeDescriptor; //qDeleteAll(m_NodeDescriptors); }
QmitkNodeDescriptorManager::QmitkNodeDescriptorManager | ( | ) | [protected] |
Creates the m_UnknownDataNodeDescriptor Calls Initialize
Definition at line 160 of file QmitkNodeDescriptorManager.cpp.
References Initialize().
: m_UnknownDataNodeDescriptor(new QmitkNodeDescriptor("Unknown", QString(":/Qmitk/DataTypeUnknown_48.png"), 0, this)) { this->Initialize(); }
void QmitkNodeDescriptorManager::AddDescriptor | ( | QmitkNodeDescriptor * | _Descriptor ) |
Adds a new descriptor to the manager. The manager takes the ownership.
Definition at line 69 of file QmitkNodeDescriptorManager.cpp.
References m_NodeDescriptors.
Referenced by Initialize(), mitk::PlanarFigureActivator::Start(), and mitk::DiffusionImagingActivator::Start().
{ _Descriptor->setParent(this); m_NodeDescriptors.push_back(_Descriptor); }
QList< QAction * > QmitkNodeDescriptorManager::GetActions | ( | const mitk::DataNode * | _Node ) | const |
Returns a list of all actions that are associated with the given node. If there are more than one Descriptors for this node all actions will be merged together. E.g. all actions from the "unknown" DataNodes will be added to this list. Generic Actions like Save, Load, etc. are stored there.
Definition at line 113 of file QmitkNodeDescriptorManager.cpp.
References QmitkNodeDescriptor::GetActions(), QmitkNodeDescriptor::GetBatchActions(), QmitkNodeDescriptor::GetSeparator(), m_NodeDescriptors, and m_UnknownDataNodeDescriptor.
Referenced by QmitkDataManagerView::NodeTableViewContextMenuRequested().
{ QList<QAction*> actions = m_UnknownDataNodeDescriptor->GetBatchActions(); actions.append(m_UnknownDataNodeDescriptor->GetActions()); QmitkNodeDescriptor* lastDescriptor = m_UnknownDataNodeDescriptor; for(QList<QmitkNodeDescriptor*>::const_iterator it = m_NodeDescriptors.begin(); it != m_NodeDescriptors.end(); ++it) { if((*it)->CheckNode(_Node)) { actions.append(lastDescriptor->GetSeparator()); lastDescriptor = *it; actions.append(lastDescriptor->GetBatchActions()); actions.append(lastDescriptor->GetActions()); } } return actions; }
QList< QAction * > QmitkNodeDescriptorManager::GetActions | ( | const std::vector< mitk::DataNode * > & | _Nodes ) | const |
Definition at line 133 of file QmitkNodeDescriptorManager.cpp.
References QmitkNodeDescriptor::GetBatchActions(), GetDescriptor(), QmitkNodeDescriptor::GetSeparator(), and m_UnknownDataNodeDescriptor.
{ QList<QAction*> actions = m_UnknownDataNodeDescriptor->GetBatchActions(); std::vector<QmitkNodeDescriptor*> nodeDescriptors; QmitkNodeDescriptor* lastDescriptor; // find all descriptors for the nodes (unique) for( std::vector<mitk::DataNode*>::const_iterator it = _Nodes.begin() ; it != _Nodes.end(); ++it) { lastDescriptor = this->GetDescriptor(*it); if(std::find(nodeDescriptors.begin(), nodeDescriptors.end(), lastDescriptor) == nodeDescriptors.end()) nodeDescriptors.push_back(lastDescriptor); } // add all actions for the found descriptors lastDescriptor = m_UnknownDataNodeDescriptor; for( std::vector<QmitkNodeDescriptor*>::const_iterator it = nodeDescriptors.begin() ; it != nodeDescriptors.end(); ++it) { actions.append(lastDescriptor->GetSeparator()); lastDescriptor = *it; actions.append(lastDescriptor->GetBatchActions()); } return actions; }
QmitkNodeDescriptor * QmitkNodeDescriptorManager::GetDescriptor | ( | const mitk::DataNode * | _Node ) | const |
Get the last descriptor in the descriptors list that matches the given node. Attention*: More specialized Descriptors should therefore be appended at the end of the list, e.g. first add "Image", then add "Image Mask"
Definition at line 88 of file QmitkNodeDescriptorManager.cpp.
References m_NodeDescriptors, and m_UnknownDataNodeDescriptor.
Referenced by QmitkDataManagerView::CreateQtPartControl(), QmitkPlanarFiguresTableModel::data(), QmitkDataStorageTreeModel::data(), QmitkDataStorageTableModel::data(), GetActions(), QmitkSegmentationPostProcessing::QmitkSegmentationPostProcessing(), and QmitkSegmentationPostProcessing::~QmitkSegmentationPostProcessing().
{ QmitkNodeDescriptor* _Descriptor = m_UnknownDataNodeDescriptor; for(QList<QmitkNodeDescriptor*>::const_iterator it = m_NodeDescriptors.begin(); it != m_NodeDescriptors.end(); ++it) { if((*it)->CheckNode(_Node)) _Descriptor = *it; } return _Descriptor; }
QmitkNodeDescriptor * QmitkNodeDescriptorManager::GetDescriptor | ( | const QString & | _ClassName ) | const |
Get the last QmitkNodeDescriptor for the given class name
Definition at line 101 of file QmitkNodeDescriptorManager.cpp.
References m_NodeDescriptors.
{ QmitkNodeDescriptor* _Descriptor = 0; for(QList<QmitkNodeDescriptor*>::const_iterator it = m_NodeDescriptors.begin(); it != m_NodeDescriptors.end(); ++it) { if((*it)->GetClassName() == _ClassName) _Descriptor = *it; } return _Descriptor; }
QmitkNodeDescriptorManager * QmitkNodeDescriptorManager::GetInstance | ( | ) | [static] |
Definition at line 28 of file QmitkNodeDescriptorManager.cpp.
Referenced by QmitkDataManagerView::CreateQtPartControl(), QmitkPlanarFiguresTableModel::data(), QmitkDataStorageTreeModel::data(), QmitkDataStorageTableModel::data(), QmitkDataManagerView::NodeTableViewContextMenuRequested(), QmitkSegmentationPostProcessing::QmitkSegmentationPostProcessing(), mitk::PlanarFigureActivator::Start(), mitk::DiffusionImagingActivator::Start(), and QmitkSegmentationPostProcessing::~QmitkSegmentationPostProcessing().
{ static QmitkNodeDescriptorManager _Instance; return &_Instance; /* static std::auto_ptr<QmitkNodeDescriptorManager> instance; if(instance.get() == 0) { instance.reset(new QmitkNodeDescriptorManager()); instance->Initialize(); } return instance.get();*/ }
QmitkNodeDescriptor * QmitkNodeDescriptorManager::GetUnknownDataNodeDescriptor | ( | ) | const |
Definition at line 172 of file QmitkNodeDescriptorManager.cpp.
References m_UnknownDataNodeDescriptor.
Referenced by QmitkDataManagerView::CreateQtPartControl().
{ return m_UnknownDataNodeDescriptor; }
void QmitkNodeDescriptorManager::Initialize | ( | ) | [virtual] |
Initializes the QmitkNodeDescriptorManager. Adds a few standard Descriptors. This Descriptors are added:
Definition at line 43 of file QmitkNodeDescriptorManager.cpp.
References AddDescriptor(), mitk::NodePredicateNot::New(), mitk::NodePredicateAnd::New(), mitk::BoolProperty::New(), mitk::NodePredicateProperty::New(), and mitk::NodePredicateDataType::New().
Referenced by QmitkNodeDescriptorManager().
{ // Adding "Images" mitk::NodePredicateDataType::Pointer isImage = mitk::NodePredicateDataType::New("Image"); this->AddDescriptor(new QmitkNodeDescriptor(tr("Image"), QString(":/Qmitk/Images_48.png"), isImage, this)); // Adding "Image Masks" mitk::NodePredicateProperty::Pointer isBinary = mitk::NodePredicateProperty::New("binary", mitk::BoolProperty::New(true)); mitk::NodePredicateAnd::Pointer isBinaryImage = mitk::NodePredicateAnd::New(isBinary, isImage); this->AddDescriptor(new QmitkNodeDescriptor(tr("ImageMask"), QString(":/Qmitk/Binaerbilder_48.png"), isBinaryImage, this)); // Adding "PointSet" mitk::NodePredicateDataType::Pointer isPointSet = mitk::NodePredicateDataType::New("PointSet"); this->AddDescriptor(new QmitkNodeDescriptor(tr("PointSet"), QString(":/Qmitk/PointSet_48.png"), isPointSet, this)); // Adding "Surface" mitk::NodePredicateDataType::Pointer isSurface = mitk::NodePredicateDataType::New("Surface"); this->AddDescriptor(new QmitkNodeDescriptor(tr("Surface"), QString(":/Qmitk/Surface_48.png"), isSurface, this)); // Adding "NoneBinaryImages" mitk::NodePredicateNot::Pointer isNotBinary = mitk::NodePredicateNot::New(isBinary); mitk::NodePredicateAnd::Pointer isNoneBinaryImage = mitk::NodePredicateAnd::New(isImage, isNotBinary); this->AddDescriptor(new QmitkNodeDescriptor(tr("NoneBinaryImage"), QString(":/Qmitk/Images_48.png"), isNoneBinaryImage, this)); }
void QmitkNodeDescriptorManager::RemoveDescriptor | ( | QmitkNodeDescriptor * | _Descriptor ) |
Removes and deletes a descriptor from the manager
Definition at line 75 of file QmitkNodeDescriptorManager.cpp.
References m_NodeDescriptors.
{ int index = m_NodeDescriptors.indexOf(_Descriptor); if(index != -1) { m_NodeDescriptors.removeAt(index); _Descriptor->setParent(0); delete _Descriptor; } }
QList<QmitkNodeDescriptor*> QmitkNodeDescriptorManager::m_NodeDescriptors [protected] |
Holds all user defined descriptors
Definition at line 111 of file QmitkNodeDescriptorManager.h.
Referenced by AddDescriptor(), GetActions(), GetDescriptor(), and RemoveDescriptor().
This is the standard QmitkNodeDescriptor matching every node
Definition at line 107 of file QmitkNodeDescriptorManager.h.
Referenced by GetActions(), GetDescriptor(), and GetUnknownDataNodeDescriptor().