From 2471295dd8777239deefe08455872bdedc9c50a5 Mon Sep 17 00:00:00 2001 From: Zack Rusin Date: Fri, 15 Apr 2011 02:18:08 -0400 Subject: [PATCH] Make sure that only numericals can be edited right now. --- gui/apitracecall.cpp | 2 -- gui/argumentseditor.cpp | 32 ++++++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/gui/apitracecall.cpp b/gui/apitracecall.cpp index a975728..3c58542 100644 --- a/gui/apitracecall.cpp +++ b/gui/apitracecall.cpp @@ -536,5 +536,3 @@ QList ApiArray::values() const { return m_array; } - - diff --git a/gui/argumentseditor.cpp b/gui/argumentseditor.cpp index 7e0974a..bc5563c 100644 --- a/gui/argumentseditor.cpp +++ b/gui/argumentseditor.cpp @@ -10,6 +10,23 @@ #include "apitracecall.h" + +static bool +isVariantEditable(const QVariant &var) +{ + switch (var.userType()) { + case QVariant::Bool: + case QVariant::Int: + case QVariant::UInt: + case QVariant::LongLong: + case QVariant::ULongLong: + case QVariant::Double: + return true; + default: + return false; + } +} + ArgumentsEditor::ArgumentsEditor(QWidget *parent) : QWidget(parent), m_model(new QStandardItemModel()), @@ -77,6 +94,9 @@ void ArgumentsEditor::setupCall() QList vals = array.values(); QVariant firstVal = vals.value(0); + QVariant x = val; + x.convert(QVariant::String); + qDebug()<<"aaaaa = "<addTab( m_ui.shaderTab, argName); @@ -140,7 +160,15 @@ void ArgumentsEditor::setupCall() } else { QStandardItem *item = new QStandardItem(); - item->setFlags(item->flags() | Qt::ItemIsEditable); + + if (isVariantEditable(val)) { + item->setFlags(item->flags() | Qt::ItemIsEditable); + } else { + QIcon icon(":/resources/emblem-locked.png"); + item->setIcon(icon); + item->setFlags(item->flags() ^ Qt::ItemIsEditable); + item->setToolTip(tr("Argument is read-only")); + } item->setData(val, Qt::DisplayRole); topRow.append(item); } @@ -197,7 +225,7 @@ QWidget * ArgumentsItemEditorFactory::createEditor(QVariant::Type type, sb->setFrame(false); sb->setMinimum(-DBL_MAX); sb->setMaximum(DBL_MAX); - sb->setDecimals(10); + sb->setDecimals(8); return sb; } default: -- 2.43.0