20#include "QmitkEnums.h"
21#include "QmitkDataStorageComboBox.h"
22#include "QmitkCustomVariants.h"
23#include "mitkDataStorage.h"
24#include "mitkNodePredicateBase.h"
25#include "QmitkDataStorageComboBox.h"
32m_Types(), m_DataStorage(
nullptr), m_Predicate(
nullptr), m_TagProperty(
nullptr), m_TagPropertyName()
39 if (index.isValid() ==
false)
40 return QStyledItemDelegate::createEditor(parent, option, index);
42 switch (index.column())
46 return new QLabel(
"", parent);
50 auto c =
new QComboBox(parent);
56 return new QmitkDataStorageComboBox(m_DataStorage, m_Predicate, parent);
62 return QStyledItemDelegate::createEditor(parent, option, index);
69 if (index.isValid() ==
false)
72 switch (index.column())
76 QLabel* l = qobject_cast<QLabel*>(editor);
77 if (l->text().isEmpty())
79 QString fileName = index.data().value<QString>();
80 fileName = QFileDialog::getOpenFileName(editor,
"Open SROM file", fileName,
"SROM files (*.rom)");
81 QLabel* l = qobject_cast<QLabel*>(editor);
88 QString type = index.data().value<QString>();
89 QComboBox* c = qobject_cast<QComboBox*>(editor);
90 c->setCurrentIndex(c->findText(type));
91 connect(c, SIGNAL(currentIndexChanged(
int)),
this, SLOT(ComboBoxCurrentIndexChanged(
int)));
96 mitk::DataNode::Pointer n = index.data().value<mitk::DataNode::Pointer>();
99 QmitkDataStorageComboBox* dsc = qobject_cast<QmitkDataStorageComboBox*>(editor);
100 dsc->setCurrentIndex(dsc->findText(QString::fromStdString(n->GetName())));
101 connect(dsc, SIGNAL(currentIndexChanged(
int)),
this, SLOT(ComboBoxCurrentIndexChanged(
int)));
109 QStyledItemDelegate::setEditorData(editor, index);
116 if (index.isValid() ==
false)
119 switch (index.column())
123 QLabel* l = qobject_cast<QLabel*>(editor);
126 model->setData(index, l->text());
131 QComboBox* c = qobject_cast<QComboBox*>(editor);
133 model->setData(index, c->currentText(), Qt::DisplayRole);
138 QmitkDataStorageComboBox* dsc = qobject_cast<QmitkDataStorageComboBox*>(editor);
139 if (dsc->GetSelectedNode().IsNotNull())
141 model->setData(index, QVariant::fromValue(dsc->GetSelectedNode()),
OrganNodeRole);
143 model->setData(index, QString::fromStdString(dsc->GetSelectedNode()->GetName()));
144 if ((m_TagProperty.IsNotNull()) && (m_TagPropertyName.empty() ==
false))
145 dsc->GetSelectedNode()->SetProperty(m_TagPropertyName.c_str(), m_TagProperty);
153 QStyledItemDelegate::setModelData(editor, model, index);
157void QmitkNDIToolDelegate::commitAndCloseEditor()
174void QmitkNDIToolDelegate::ComboBoxCurrentIndexChanged(
int )
176 if(QComboBox *comboBox = qobject_cast<QComboBox *>(sender()))
178 emit commitData(comboBox);
179 emit closeEditor(comboBox);
204 m_TagProperty = prop;
209 m_TagPropertyName = name;