]> git.cworth.org Git - apitrace/blobdiff - gui/argumentseditor.cpp
Rename static library from trace to common.
[apitrace] / gui / argumentseditor.cpp
index c6280ed3e816225d85c1dfc042fa62c68c5cdc09..0aeafeb4081e8cbe264c8237a05070f3e2399dd9 100644 (file)
@@ -143,6 +143,7 @@ ArgumentsEditor::ArgumentsEditor(QWidget *parent)
 
 ArgumentsEditor::~ArgumentsEditor()
 {
+    delete m_model;
 }
 
 void ArgumentsEditor::setCall(ApiTraceCall *call)
@@ -239,6 +240,15 @@ void ArgumentsEditor::setupCall()
             item->setIcon(icon);
             item->setToolTip(tr("Argument is read-only"));
             topRow.append(item);
+        } else if (val.canConvert<ApiEnum>()) {
+            ApiEnum en = val.value<ApiEnum>();
+            QStandardItem *item = new QStandardItem();
+            item->setFlags(item->flags() ^ Qt::ItemIsEditable);
+            item->setText(en.toString());
+            QIcon icon(":/resources/emblem-locked.png");
+            item->setIcon(icon);
+            item->setToolTip(tr("Argument is read-only"));
+            topRow.append(item);
         } else if (val.canConvert<ApiBitmask>()) {
             ApiBitmask mask = val.value<ApiBitmask>();
             QStandardItem *item = new QStandardItem();
@@ -322,17 +332,25 @@ void ArgumentsEditor::accept()
 {
     QStringList argNames = m_call->argNames();
     QList<QVariant> originalValues = m_call->arguments();
+    QList<QVariant> newValues;
+    bool changed = false;
     for (int i = 0; i < argNames.count(); ++i) {
-        bool changed = false;
+        bool valChanged = false;
         QString argName = argNames[i];
         QVariant argValue = originalValues[i];
-        QVariant editorValue = valueForName(argName, argValue, &changed);
+        QVariant editorValue = valueForName(argName, argValue, &valChanged);
+        newValues.append(editorValue);
+#if 0
         qDebug()<<"Arg = "<<argName;
         qDebug()<<"\toriginal = "<<argValue;
         qDebug()<<"\teditor   = "<<editorValue;
-        qDebug()<<"\tchanged  = "<<changed;
+        qDebug()<<"\tchanged  = "<<valChanged;
+#endif
+        if (valChanged)
+            changed = true;
     }
-
+    if (changed)
+        m_call->setEditedValues(newValues);
     QDialog::accept();
 }