X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fargumentseditor.h;h=27aa491f595cfe1162a44bf642a7ceea170d01e4;hb=HEAD;hp=bcaefcc9012786050995c71c847201e7676e6c1a;hpb=963102f78ba207fe9a8ca30f9f76e44832e7e569;p=apitrace diff --git a/gui/argumentseditor.h b/gui/argumentseditor.h index bcaefcc..27aa491 100644 --- a/gui/argumentseditor.h +++ b/gui/argumentseditor.h @@ -1,13 +1,142 @@ #ifndef ARGUMENTSEDITOR_H #define ARGUMENTSEDITOR_H +#include "apitracecall.h" #include "ui_argumentseditor.h" + +#include +#include +#include #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 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: + InvalidEditorCreator(QWidget *widget = 0) : QLabel(widget) + { + }; +}; + +class ArgumentsEditor : public QDialog { Q_OBJECT public: @@ -15,16 +144,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;