]> git.cworth.org Git - apitrace/blob - gui/argumentseditor.h
Fix GUI visualization of floating point values.
[apitrace] / gui / argumentseditor.h
1 #ifndef ARGUMENTSEDITOR_H
2 #define ARGUMENTSEDITOR_H
3
4 #include "apitracecall.h"
5 #include "ui_argumentseditor.h"
6
7 #include <QComboBox>
8 #include <QDialog>
9 #include <QItemEditorFactory>
10 #include <QStandardItemModel>
11
12 class ApiTraceCall;
13
14 class BooleanComboBox : public QComboBox
15 {
16     Q_OBJECT
17     Q_PROPERTY(bool value READ value WRITE setValue USER true)
18 public:
19     BooleanComboBox(QWidget *parent);
20     void setValue(bool);
21     bool value() const;
22 };
23
24 class ArgumentsItemEditorFactory : public QItemEditorFactory
25 {
26 public:
27     ArgumentsItemEditorFactory();
28     QWidget *createEditor(QMetaType::Type type, QWidget *parent) const;
29     QByteArray valuePropertyName(QMetaType::Type) const;
30 };
31
32 class ArgumentsEditor : public QDialog
33 {
34     Q_OBJECT
35 public:
36     ArgumentsEditor(QWidget *parent=0);
37     ~ArgumentsEditor();
38
39
40     virtual void accept();
41
42     void setCall(ApiTraceCall *call);
43     ApiTraceCall *call() const;
44
45 private slots:
46     void currentSourceChanged(int idx);
47     void sourceChanged();
48     void revert();
49 private:
50     void init();
51     void setupCall();
52     void setupShaderEditor(const QVector<QVariant> &sources);
53     QVariant valueForName(const QString &name,
54                           const QVariant &orignalValue,
55                           bool *changed) const;
56     QVariant arrayFromIndex(const QModelIndex &index,
57                             const ApiArray &array,
58                             bool *changed) const;
59     QVariant arrayFromEditor(const ApiArray &origArray,
60                              bool *changed) const;
61 private:
62     Ui_ArgumentsEditor m_ui;
63     QStandardItemModel *m_model;
64
65     ApiTraceCall *m_call;
66 };
67
68 #endif