//----------------------------------------------------------------------------- // Function: RemapConditionDelegate::createEditor() //----------------------------------------------------------------------------- QWidget* RemapConditionDelegate::createEditor(QWidget* parent, QStyleOptionViewItem const& option, QModelIndex const& index) const { if (index.column() == RemapConditionColumns::NAME_COLUMN) { ReferenceSelector* referenceSelector = new ReferenceSelector(parent); QStringList visiblePortNames = availablePortNames_; QString selectedName = index.model()->data(index, Qt::DisplayRole).toString(); if (componentPortNames_.contains(selectedName)) { visiblePortNames.append(selectedName); } referenceSelector->refresh(visiblePortNames); return referenceSelector; } else if (index.column() == RemapConditionColumns::VALUE_COLUMN && valueIsArray(index)) { ArrayView* editor = new ArrayView(parent); QScrollArea* scrollingWidget = new QScrollArea(parent); scrollingWidget->setWidgetResizable(true); scrollingWidget->setWidget(editor); scrollingWidget->parent()->installEventFilter(editor); return scrollingWidget; } else { return ExpressionDelegate::createEditor(parent, option, index); } }
//----------------------------------------------------------------------------- // Function: ParameterDelegate::createEditor() //----------------------------------------------------------------------------- QWidget* ParameterDelegate::createEditor(QWidget* parent, QStyleOptionViewItem const& option, QModelIndex const& index ) const { if (index.column() == nameColumn()) { QWidget* editor = QStyledItemDelegate::createEditor(parent, option, index); QLineEdit* lineEditor = qobject_cast<QLineEdit*>(editor); if (lineEditor) { lineEditor->setValidator(new NameValidator(lineEditor)); } return editor; } if (index.column() == choiceColumn()) { return createChoiceSelector(parent); } else if (index.column() == formatColumn()) { return createFormatSelector(parent); } else if (index.column() == resolveColumn()) { return createResolveSelector(parent); } else if (index.column() == usageCountColumn()) { QModelIndex valueIdIndex = index.sibling(index.row(), idColumn()); QString targetId = valueIdIndex.data(Qt::DisplayRole).toString(); emit(openReferenceTree(targetId)); return 0; } else if (index.column() == valueColumn() && valueIsArray(index)) { ArrayView* editor = new ArrayView(parent); QScrollArea* scrollingWidget = new QScrollArea(parent); scrollingWidget->setWidgetResizable(true); scrollingWidget->setWidget(editor); scrollingWidget->parent()->installEventFilter(editor); return scrollingWidget; } else if (isIndexForValueUsingChoice(index)) { return createEnumerationSelector(parent, index); } else if (index.column() == descriptionColumn()) { QTextEdit* editor = new QTextEdit(parent); editor->setMinimumHeight(120); return editor; } else { return ChoiceCreatorDelegate::createEditor(parent, option, index); } }