Public Types | Public Member Functions

QmitkNDIToolDelegate Class Reference

An item delegate for rendering and editing mitk::Properties in a QTableView. More...

#include <QmitkNDIToolDelegate.h>

Collaboration diagram for QmitkNDIToolDelegate:
Collaboration graph
[legend]

List of all members.

Public Types

enum  ToolTableColumns {
  IndexCol = 0, NameCol, SROMCol, TypeCol,
  StatusCol, NodeCol
}
enum  NDIItemDataRole {
  NDIToolRole = 70, ToolIndexRole, FileNameRole, OrganNodeRole,
  TypeRole
}

Public Member Functions

 QmitkNDIToolDelegate (QObject *parent=0)
void SetTypes (const QStringList &types)
 set types list for type editor combobox
void SetDataStorage (mitk::DataStorage *ds)
 set datastorage for organ node editor
void SetPredicate (mitk::NodePredicateBase::Pointer p)
 set predicate for organ node editor
void SetTagPropertyName (const std::string &name)
 set name of the property that is used to tag selected nodes
void SetTagProperty (mitk::BaseProperty::Pointer prop)
 set the property that is used to tag selected nodes
QWidget * createEditor (QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
void setEditorData (QWidget *editor, const QModelIndex &index) const
void setModelData (QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const

Detailed Description

An item delegate for rendering and editing mitk::Properties in a QTableView.

See also:
QmitkPropertiesTableModel

Definition at line 41 of file QmitkNDIToolDelegate.h.


Member Enumeration Documentation

Enumerator:
NDIToolRole 
ToolIndexRole 
FileNameRole 
OrganNodeRole 
TypeRole 

Definition at line 60 of file QmitkNDIToolDelegate.h.

Enumerator:
IndexCol 
NameCol 
SROMCol 
TypeCol 
StatusCol 
NodeCol 

Definition at line 51 of file QmitkNDIToolDelegate.h.


Constructor & Destructor Documentation

QmitkNDIToolDelegate::QmitkNDIToolDelegate ( QObject *  parent = 0 )

Creates a new PropertyDelegate.

Definition at line 36 of file QmitkNDIToolDelegate.cpp.

                                                           : QStyledItemDelegate(parent), 
m_Types(), m_DataStorage(NULL), m_Predicate(NULL), m_TagProperty(NULL), m_TagPropertyName()
{
}

Member Function Documentation

QWidget * QmitkNDIToolDelegate::createEditor ( QWidget *  parent,
const QStyleOptionViewItem &  option,
const QModelIndex &  index 
) const

Renders a specific property (overwritten from QItemDelegate) Create an editor for a specific property (overwritten from QItemDelegate)

Definition at line 42 of file QmitkNDIToolDelegate.cpp.

References IndexCol, NameCol, NodeCol, SROMCol, StatusCol, and TypeCol.

{
  if (index.isValid() == false)
    return QStyledItemDelegate::createEditor(parent, option, index);

  switch (index.column())
  {
  case SROMCol:
    {   
      return new QLabel("", parent);
    }
  case TypeCol:
    {
      QComboBox* c = new QComboBox(parent);
      c->addItems(m_Types);
      return c;
    }
  case NodeCol:
    {
      return new QmitkDataStorageComboBox(m_DataStorage, m_Predicate, parent);
    }
  case IndexCol:
  case NameCol:
  case StatusCol:
  default:
    return QStyledItemDelegate::createEditor(parent, option, index);
  }
}
void QmitkNDIToolDelegate::SetDataStorage ( mitk::DataStorage ds )

set datastorage for organ node editor

Definition at line 195 of file QmitkNDIToolDelegate.cpp.

Referenced by QmitkNDIConfigurationWidget::CreateQtPartControl(), and QmitkNDIConfigurationWidget::SetDataStorage().

{
  m_DataStorage = ds;
}
void QmitkNDIToolDelegate::setEditorData ( QWidget *  editor,
const QModelIndex &  index 
) const

Create an editor for a specific property (overwritten from QItemDelegate)

Definition at line 72 of file QmitkNDIToolDelegate.cpp.

References IndexCol, NameCol, NodeCol, SROMCol, StatusCol, and TypeCol.

{
  if (index.isValid() == false)
    return;

  switch (index.column())
  {
  case SROMCol:
    {
      QLabel* l = qobject_cast<QLabel*>(editor);
      if (l->text().isEmpty())
      {
        QString fileName = qVariantValue<QString>(index.data(/*mitk::FileNameRole*/));
        fileName = QFileDialog::getOpenFileName(editor, "Open SROM file", fileName, "SROM files (*.rom)");
        QLabel* l = qobject_cast<QLabel*>(editor);
        l->setText(fileName);
      }
      return;
    }
  case TypeCol:
    {
      QString type = qVariantValue<QString>(index.data(/*mitk::TypeRole*/));
      QComboBox* c = qobject_cast<QComboBox*>(editor);   
      c->setCurrentIndex(c->findText(type));
      connect(c, SIGNAL(currentIndexChanged(int)), this, SLOT(ComboBoxCurrentIndexChanged(int)));
      return;
    }
  case NodeCol:
    {
      mitk::DataNode::Pointer n = qVariantValue<mitk::DataNode::Pointer>(index.data(/*mitk::OrganNodeRole*/));
      if (n.IsNotNull())
      {
        QmitkDataStorageComboBox* dsc = qobject_cast<QmitkDataStorageComboBox*>(editor);
        dsc->setCurrentIndex(dsc->findText(QString::fromStdString(n->GetName())));
        connect(dsc, SIGNAL(currentIndexChanged(int)), this, SLOT(ComboBoxCurrentIndexChanged(int)));
      }
      return;
    }
  case IndexCol:
  case NameCol:
  case StatusCol:
  default:
    QStyledItemDelegate::setEditorData(editor, index);
  }
}
void QmitkNDIToolDelegate::setModelData ( QWidget *  editor,
QAbstractItemModel *  model,
const QModelIndex &  index 
) const

When the user accepts input this func commits the data to the model (overwritten from QItemDelegate)

Definition at line 119 of file QmitkNDIToolDelegate.cpp.

References QmitkDataStorageComboBox::GetSelectedNode(), IndexCol, NameCol, NodeCol, OrganNodeRole, SROMCol, StatusCol, and TypeCol.

{
  if (index.isValid() == false)
    return;

  switch (index.column())
  {
  case SROMCol:
    {
      QLabel* l = qobject_cast<QLabel*>(editor);
      //model->setData(index, l->text(), mitk::FileNameRole);
      //model->setData(index, l->text(), Qt::DisplayRole);  // use for display too
      model->setData(index, l->text());  // use for display too
      return;
    }
  case TypeCol:
    {
      QComboBox* c = qobject_cast<QComboBox*>(editor);   
      //model->setData(index, c->currentText(), mitk::TypeRole);
      model->setData(index, c->currentText(), Qt::DisplayRole);
      return;
    }
  case NodeCol:
    {
      QmitkDataStorageComboBox* dsc = qobject_cast<QmitkDataStorageComboBox*>(editor);
      if (dsc->GetSelectedNode().IsNotNull())
      {
        model->setData(index, qVariantFromValue(dsc->GetSelectedNode()), OrganNodeRole);
        //model->setData(index, QString::fromStdString(dsc->GetSelectedNode()->GetName()), Qt::DisplayRole);  
        model->setData(index, QString::fromStdString(dsc->GetSelectedNode()->GetName()));
        if ((m_TagProperty.IsNotNull()) && (m_TagPropertyName.empty() == false))  // tag this node as selected
          dsc->GetSelectedNode()->SetProperty(m_TagPropertyName.c_str(), m_TagProperty);
      }
    }
    return;
  case IndexCol:
  case NameCol:
  case StatusCol:
  default:
    QStyledItemDelegate::setModelData(editor, model, index);
  }
}
void QmitkNDIToolDelegate::SetPredicate ( mitk::NodePredicateBase::Pointer  p )

set predicate for organ node editor

Definition at line 201 of file QmitkNDIToolDelegate.cpp.

Referenced by QmitkNDIConfigurationWidget::CreateQtPartControl(), and QmitkNDIConfigurationWidget::SetPredicate().

{
  m_Predicate = p;
}
void QmitkNDIToolDelegate::SetTagProperty ( mitk::BaseProperty::Pointer  prop )

set the property that is used to tag selected nodes

Definition at line 207 of file QmitkNDIToolDelegate.cpp.

Referenced by QmitkNDIConfigurationWidget::SetTagProperty().

{
  m_TagProperty = prop;
}
void QmitkNDIToolDelegate::SetTagPropertyName ( const std::string &  name )

set name of the property that is used to tag selected nodes

Definition at line 212 of file QmitkNDIToolDelegate.cpp.

Referenced by QmitkNDIConfigurationWidget::SetTagPropertyName().

{
  m_TagPropertyName = name;
}
void QmitkNDIToolDelegate::SetTypes ( const QStringList &  types )

set types list for type editor combobox

Definition at line 189 of file QmitkNDIToolDelegate.cpp.

Referenced by QmitkNDIConfigurationWidget::CreateQtPartControl(), and QmitkNDIConfigurationWidget::SetToolTypes().

{
  m_Types = types;
}

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