An item delegate for rendering and editing mitk::Properties in a QTableView. More...
#include <QmitkNDIToolDelegate.h>
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 |
An item delegate for rendering and editing mitk::Properties in a QTableView.
Definition at line 41 of file QmitkNDIToolDelegate.h.
Definition at line 60 of file QmitkNDIToolDelegate.h.
{ NDIToolRole = 70, ToolIndexRole, FileNameRole, OrganNodeRole, TypeRole };
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() { }
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; }