]> git.cworth.org Git - apitrace/blobdiff - gui/argumentseditor.h
Use skiplist-based FastCallSet within trace::CallSet
[apitrace] / gui / argumentseditor.h
index 7bfd1b3196dc54c5d49d68616328493c420f5b32..27aa491f595cfe1162a44bf642a7ceea170d01e4 100644 (file)
@@ -8,6 +8,11 @@
 #include <QDialog>
 #include <QItemEditorFactory>
 #include <QStandardItemModel>
+#include <QSpinBox>
+
+#include <limits.h>
+#include <float.h>
+
 
 class ApiTraceCall;
 
@@ -21,12 +26,114 @@ public:
     bool value() const;
 };
 
-class ArgumentsItemEditorFactory : public QItemEditorFactory
+
+class BooleanComboBoxEditorCreator : public BooleanComboBox
+{
+    Q_OBJECT
+    Q_PROPERTY(bool value READ value WRITE setValue USER true)
+public:
+    BooleanComboBoxEditorCreator(QWidget *widget = 0) : BooleanComboBox(widget)
+    {
+       this->setFrame(false);
+    };
+};
+
+class UIntEditorCreator : public QSpinBox
 {
+    Q_OBJECT
+    Q_PROPERTY(int value READ value WRITE setValue USER true)
+public:
+    UIntEditorCreator(QWidget *widget = 0) : QSpinBox(widget)
+    {
+       this->setFrame(false);
+        this->setMaximum(INT_MAX);
+    };
+};
+
+class IntEditorCreator : public QSpinBox
+{
+    Q_OBJECT
+    Q_PROPERTY(int value READ value WRITE setValue USER true)
+public:
+    IntEditorCreator(QWidget *widget = 0) : QSpinBox(widget)
+    {
+       this->setFrame(false);
+        this->setMinimum(INT_MIN);
+        this->setMaximum(INT_MAX);
+    };
+};
+
+class ULongLongEditorCreator : public QSpinBox
+{
+    Q_OBJECT
+    Q_PROPERTY(int value READ value WRITE setValue USER true)
+public:
+    ULongLongEditorCreator(QWidget *widget = 0) : QSpinBox(widget)
+    {
+       this->setFrame(false);
+        this->setMaximum(INT_MAX);
+    };
+};
+
+class LongLongEditorCreator : public QSpinBox
+{
+    Q_OBJECT
+    Q_PROPERTY(int value READ value WRITE setValue USER true)
+public:
+    LongLongEditorCreator(QWidget *widget = 0) : QSpinBox(widget)
+    {
+       this->setFrame(false);
+        this->setMinimum(INT_MIN);
+        this->setMaximum(INT_MAX);
+    };
+};
+
+class PixmapEditorCreator : public QLabel
+{
+    Q_OBJECT
+    Q_PROPERTY(QString text READ text WRITE setText USER true)
+public:
+    PixmapEditorCreator(QWidget *widget = 0) : QLabel (widget)
+    {
+    };
+};
+
+class FloatEditorCreator : public QDoubleSpinBox
+{
+    Q_OBJECT
+    Q_PROPERTY(double value READ value WRITE setValue USER true)
+public:
+    FloatEditorCreator(QWidget *widget = 0) : QDoubleSpinBox(widget)
+    {
+       this->setFrame(false);
+        this->setMinimum(-FLT_MAX);
+        this->setMaximum(FLT_MAX);
+        this->setDecimals(8);
+    };
+};
+
+class DoubleEditorCreator : public QDoubleSpinBox
+{
+    Q_OBJECT
+    Q_PROPERTY(double value READ value WRITE setValue USER true)
+public:
+    DoubleEditorCreator(QWidget *widget = 0) : QDoubleSpinBox(widget)
+    {
+       this->setFrame(false);
+        this->setMinimum(-DBL_MAX);
+        this->setMaximum(DBL_MAX);
+        this->setDecimals(8);
+    };
+};
+
+class InvalidEditorCreator : public QLabel
+{
+    Q_OBJECT
+    Q_PROPERTY(QString text READ text WRITE setText USER true)
 public:
-    ArgumentsItemEditorFactory();
-    QWidget *createEditor(QVariant::Type type, QWidget *parent) const;
-    QByteArray valuePropertyName(QVariant::Type) const;
+    InvalidEditorCreator(QWidget *widget = 0) :  QLabel(widget)
+    {
+    };
 };
 
 class ArgumentsEditor : public QDialog
@@ -45,15 +152,19 @@ public:
 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) const;
+                          const QVariant &orignalValue,
+                          bool *changed) const;
     QVariant arrayFromIndex(const QModelIndex &index,
-                            const ApiArray &array) const;
-    QVariant arrayFromEditor(const ApiArray &origArray) const;
+                            const ApiArray &array,
+                            bool *changed) const;
+    QVariant arrayFromEditor(const ApiArray &origArray,
+                             bool *changed) const;
 private:
     Ui_ArgumentsEditor m_ui;
     QStandardItemModel *m_model;