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

QmitkNodeDescriptorManager Class Reference

QmitkNodeDescriptorManager manages a set of QmitkNodeDescriptors. More...

#include <QmitkNodeDescriptorManager.h>

Collaboration diagram for QmitkNodeDescriptorManager:
Collaboration graph
[legend]

List of all members.

Public Member Functions

virtual void Initialize ()
void AddDescriptor (QmitkNodeDescriptor *_Descriptor)
void RemoveDescriptor (QmitkNodeDescriptor *_Descriptor)
QmitkNodeDescriptorGetDescriptor (const mitk::DataNode *_Node) const
QmitkNodeDescriptorGetDescriptor (const QString &_ClassName) const
QmitkNodeDescriptorGetUnknownDataNodeDescriptor () 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 QmitkNodeDescriptorManagerGetInstance ()

Protected Member Functions

 QmitkNodeDescriptorManager ()

Protected Attributes

QmitkNodeDescriptorm_UnknownDataNodeDescriptor
QList< QmitkNodeDescriptor * > m_NodeDescriptors

Detailed Description

QmitkNodeDescriptorManager manages a set of QmitkNodeDescriptors.

See also:
QmitkNodeDescriptor

Definition at line 29 of file QmitkNodeDescriptorManager.h.


Constructor & Destructor Documentation

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

Member Function Documentation

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
Returns:
a list of actions associated with the given nodes

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"

Returns:
a QmitkNodeDescriptor for the given node or a QmitkNodeDescriptor describing unknown nodes (never 0)
See also:
AddDescriptor()

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

Returns:
a QmitkNodeDescriptor for the given class name or 0 if there is no QmitkNodeDescriptor for _ClassName

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]
QmitkNodeDescriptor * QmitkNodeDescriptorManager::GetUnknownDataNodeDescriptor (  ) const
Returns:
The UnknownDataNodeDescriptor, which is the default Descriptor for all Nodes.

Definition at line 172 of file QmitkNodeDescriptorManager.cpp.

References m_UnknownDataNodeDescriptor.

Referenced by QmitkDataManagerView::CreateQtPartControl().

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

Member Data Documentation

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


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