]> git.cworth.org Git - apitrace/blobdiff - gui/argumentseditor.h
Trace via "apitrace trace" command.
[apitrace] / gui / argumentseditor.h
index bcaefcc9012786050995c71c847201e7676e6c1a..7671d71bcd0264f720e2fbeac506bf8b71293328 100644 (file)
@@ -1,13 +1,35 @@
 #ifndef ARGUMENTSEDITOR_H
 #define ARGUMENTSEDITOR_H
 
+#include "apitracecall.h"
 #include "ui_argumentseditor.h"
+
+#include <QComboBox>
+#include <QDialog>
+#include <QItemEditorFactory>
 #include <QStandardItemModel>
-#include <QWidget>
 
 class ApiTraceCall;
 
-class ArgumentsEditor : public QWidget
+class BooleanComboBox : public QComboBox
+{
+    Q_OBJECT
+    Q_PROPERTY(bool value READ value WRITE setValue USER true)
+public:
+    BooleanComboBox(QWidget *parent);
+    void setValue(bool);
+    bool value() const;
+};
+
+class ArgumentsItemEditorFactory : public QItemEditorFactory
+{
+public:
+    ArgumentsItemEditorFactory();
+    QWidget *createEditor(QVariant::Type type, QWidget *parent) const;
+    QByteArray valuePropertyName(QVariant::Type) const;
+};
+
+class ArgumentsEditor : public QDialog
 {
     Q_OBJECT
 public:
@@ -15,16 +37,27 @@ public:
     ~ArgumentsEditor();
 
 
+    virtual void accept();
+
     void setCall(ApiTraceCall *call);
     ApiTraceCall *call() const;
 
-signals:
-    void argumentsEdited(ApiTraceCall *call);
-
+private slots:
+    void currentSourceChanged(int idx);
+    void sourceChanged();
+    void revert();
 private:
     void init();
     void setupCall();
-    void setupShaderEditor(const QList<QVariant> &sources);
+    void setupShaderEditor(const QVector<QVariant> &sources);
+    QVariant valueForName(const QString &name,
+                          const QVariant &orignalValue,
+                          bool *changed) const;
+    QVariant arrayFromIndex(const QModelIndex &index,
+                            const ApiArray &array,
+                            bool *changed) const;
+    QVariant arrayFromEditor(const ApiArray &origArray,
+                             bool *changed) const;
 private:
     Ui_ArgumentsEditor m_ui;
     QStandardItemModel *m_model;