X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fargumentseditor.h;h=7671d71bcd0264f720e2fbeac506bf8b71293328;hb=f72e593d5dd779efc3b9f3d2578917daf31d7968;hp=bcaefcc9012786050995c71c847201e7676e6c1a;hpb=963102f78ba207fe9a8ca30f9f76e44832e7e569;p=apitrace diff --git a/gui/argumentseditor.h b/gui/argumentseditor.h index bcaefcc..7671d71 100644 --- a/gui/argumentseditor.h +++ b/gui/argumentseditor.h @@ -1,13 +1,35 @@ #ifndef ARGUMENTSEDITOR_H #define ARGUMENTSEDITOR_H +#include "apitracecall.h" #include "ui_argumentseditor.h" + +#include +#include +#include #include -#include 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 &sources); + void setupShaderEditor(const QVector &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;