39 #include <QFileDialog>
40 #include <QToolButton>
42 #include <QResizeEvent>
43 #include <QDoubleSpinBox>
49 QStyledItemDelegate(p), _fileDialogFlag(false) {
51 SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)),
56 const QStyleOptionViewItem& opt,
const QModelIndex& ind)
const {
61 *
const_cast<QString*
>(&
_workingDir) = QDir::currentPath();
62 QDir::setCurrent(QFileInfo(model->
fileName()).path());
65 qDebug(
"InspectorDelegate::setModelData: no parameter file model");
70 QString param = model->
data(ind.sibling(ind.row(),0)).toString();
71 if (!model->
prefix().isEmpty())
72 param = model->
prefix() +
"." + param;
77 if (type.compare(
"OpenFile",Qt::CaseInsensitive)==0 ||
78 type.compare(
"FileOpen",Qt::CaseInsensitive)==0) {
82 editor, SIGNAL(dialogOpen(
bool)),
86 if (type.compare(
"WriteFile",Qt::CaseInsensitive)==0 ||
87 type.compare(
"FileWrite",Qt::CaseInsensitive)==0 ||
88 type.compare(
"FileName",Qt::CaseInsensitive)==0) {
92 editor, SIGNAL(dialogOpen(
bool)),
96 if (type.compare(
"Path",Qt::CaseInsensitive)==0) {
99 editor, SIGNAL(dialogOpen(
bool)),
103 if (type.contains(QRegExp(
"^\\{\\s*\\w.*\\}\\s*$"))) {
104 QComboBox* editor =
new QComboBox(p);
105 editor->setObjectName(
"selectBox");
106 QStringList options = type.trimmed().mid(
107 1,type.length()-2).trimmed().split(
108 ";",QString::SkipEmptyParts);
109 editor->addItems(options);
110 QString cur = ind.model()->data(ind).toString();
111 int curInd = options.indexOf(cur);
113 editor->setCurrentIndex(curInd);
118 if (ind.model()->data(ind).type() == QVariant::Double) {
119 QLineEdit* editor =
new QLineEdit(p) ;
120 QDoubleValidator* validator =
new QDoubleValidator(editor) ;
121 validator->setNotation(QDoubleValidator::ScientificNotation) ;
122 editor->setValidator(validator) ;
123 editor->setObjectName(
"doubleLineEdit") ;
124 editor->setText(QString(
"%1").arg(ind.model()->data(ind).toDouble(),0,
'G',16)) ;
129 return QStyledItemDelegate::createEditor(p,opt,ind);
133 QAbstractItemModel* model,
const QModelIndex & index )
const {
135 if(editor && (editor->objectName() ==
"selectBox")) {
136 QComboBox* box = qobject_cast<QComboBox*>(editor);
137 model->setData(index,box->currentText());
140 else if(editor && (editor->objectName() ==
"doubleLineEdit")) {
141 QLineEdit* line = qobject_cast<QLineEdit*>(editor);
142 model->setData(index,line->text().toDouble());
145 else if ( (dirEdit = qobject_cast<QDirEdit*>(editor)) ) {
149 if (s.value(
"relativePaths",
true).toBool()) {
150 QStringList eData = dirEdit->text().split(
";"), rData;
151 QDir wDir = QFileInfo(pmodel->
fileName()).dir();
152 foreach(QString cur, eData) {
153 rData << wDir.relativeFilePath(cur);
155 model->setData(index,rData.join(
";"));
160 qDebug(
"InspectorDelegate::setModelData: no parameter file model");
163 QStyledItemDelegate::setModelData(editor, model, index);
173 return QStyledItemDelegate::eventFilter(
object, ev);
Declaration of class DirEdit.
void _handleCloseEditor(QWidget *, QAbstractItemDelegate::EndEditHint)
reset working dir
Declaration of class ParameterFileModel.
Declaration of class InspectorDelegate.
Line edit with completer for directories and dialog option.
QString prefix() const
Get property _prefix.
This model serves to provide a model frontend to access a ParameterFile instance. ...
virtual QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const
Access to item content.
bool eventFilter(QObject *object, QEvent *event)
filter editor events
InspectorDelegate(QObject *parent=0)
standart constructor
void _setFileDialogFlag(bool flag)
set _fileDialogFlag
QString fileName() const
Get property _fileName.
void acceptFiles(bool files=true, bool write=true)
allow files instead of directories
charon_core_DLL_PUBLIC std::string type(const std::string &typeInfo)
bool onlyParams() const
Get property _onlyparams.
QString getType(QString parName, bool applyTmplType=true) const
Get type of some parameter or slot.
virtual void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
Sets the data for the item at the given index in the model to the contents of the given editor...
virtual QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
create own editors, if necessary
bool _fileDialogFlag
file dialog opened