From: Zack Rusin Date: Sat, 16 Apr 2011 19:49:39 +0000 (-0400) Subject: Collect the edited shaders from the shader editor. X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=8c832b707f0daade8e2bef0315bd08eb457552dd;p=apitrace Collect the edited shaders from the shader editor. --- diff --git a/gui/argumentseditor.cpp b/gui/argumentseditor.cpp index 4648f1c..8c0f14e 100644 --- a/gui/argumentseditor.cpp +++ b/gui/argumentseditor.cpp @@ -27,6 +27,20 @@ isVariantEditable(const QVariant &var) } } +static bool +isVariantStringArray(const QVariant &var) +{ + if (var.isNull() || var.userType() != QMetaType::type("ApiArray")) + return false; + + ApiArray array = var.value(); + QList origValues = array.values(); + if (origValues.isEmpty() || + origValues.first().userType() != QVariant::String) + return false; + + return true; +} ArgumentsItemEditorFactory::ArgumentsItemEditorFactory() : QItemEditorFactory() @@ -298,6 +312,10 @@ void ArgumentsEditor::sourceChanged() QString str = m_ui.glslEdit->toPlainText(); m_ui.lengthLabel->setText( tr("%1").arg(str.length())); + + m_ui.selectStringCB->setItemData( + m_ui.selectStringCB->currentIndex(), + str); } void ArgumentsEditor::accept() @@ -320,6 +338,13 @@ QVariant ArgumentsEditor::valueForName(const QString &name, const QVariant &originalValue) const { QVariant val; + + //Handle string arrays specially + if (isVariantStringArray(originalValue)) { + ApiArray array = originalValue.value(); + return arrayFromEditor(array); + } + for (int topRow = 0; topRow < m_model->rowCount(); ++topRow) { QModelIndex nameIdx = m_model->index(topRow, 0, QModelIndex()); QString argName = nameIdx.data().toString(); @@ -342,24 +367,31 @@ QVariant ArgumentsEditor::arrayFromIndex(const QModelIndex &parentIndex, const ApiArray &origArray) const { QList origValues = origArray.values(); - QVariant newValue; if (origValues.isEmpty()) return QVariant::fromValue(ApiArray()); - if (origValues.first().userType() == QVariant::String) { - //shaders + QList lst; + for (int i = 0; i < origValues.count(); ++i) { + QModelIndex valIdx = m_model->index(i, 1, parentIndex); + QVariant var = valIdx.data(); + //qDebug()<<"\t\tarray "< vals; + QList origValues = origArray.values(); - } else { - QList lst; - for (int i = 0; i < origValues.count(); ++i) { - QModelIndex valIdx = m_model->index(i, 1, parentIndex); - QVariant var = valIdx.data(); - //qDebug()<<"\t\tarray "<count(); ++i) { + QVariant val = m_ui.selectStringCB->itemData(i); + vals.append(val); } - return newValue; + return QVariant::fromValue(ApiArray(vals)); } #include "argumentseditor.moc" diff --git a/gui/argumentseditor.h b/gui/argumentseditor.h index 286dfde..7bfd1b3 100644 --- a/gui/argumentseditor.h +++ b/gui/argumentseditor.h @@ -53,6 +53,7 @@ private: const QVariant &orignalValue) const; QVariant arrayFromIndex(const QModelIndex &index, const ApiArray &array) const; + QVariant arrayFromEditor(const ApiArray &origArray) const; private: Ui_ArgumentsEditor m_ui; QStandardItemModel *m_model;