00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef PARAMETERWIDGET_H_
00024 #define PARAMETERWIDGET_H_
00025
00026 #include <QtGui/QWidget>
00027 #include <QtGui/QSpinBox>
00028 #include <QtGui/QDoubleSpinBox>
00029 #include <QtGui/QComboBox>
00030 #include <QtGui/QGridLayout>
00031 #include <QtGui/QLabel>
00032 #include <QtGui/QCheckBox>
00033 #include <QtCore/QString>
00034 #include <QtCore/QHash>
00035 #include <QtCore/QSignalMapper>
00036
00037
00038 struct ParameterPair{
00039 QLabel *description;
00040 QWidget *parameter;
00041 };
00042
00043 class ParameterWidget: public QWidget {
00044 Q_OBJECT
00045
00046 public:
00047 ParameterWidget(const QString &name, QWidget *parent = 0);
00048
00049 virtual inline void activate()
00050 {show();}
00051
00052 virtual inline void deactivate()
00053 {hide();}
00054
00055 void addDoubleParameter(const QString& name, const QString& description, double initialValue = 0., double minValue = -10e16, double maxValue = 10e16, int decimals = 2, double step = 0.1);
00056 void addIntParameter(const QString& name, const QString& description, int initialValue = 0, int minValue = -10e7, int maxValue = 10e7, int step = 1);
00057 void addBoolParameter(const QString& name, const QString& description, bool initialValue = false);
00058 void addEnumParameter(const QString& name, const QString& description, QStringList& values, int initialValue = 0);
00059 inline void addEnumParameter(const QString& name, const QString& description, int initialValue = 0)
00060 {QStringList values; addEnumParameter(name, description, values, initialValue);}
00061
00062 void removeParameter(QString& name);
00063 void clearParameterMap();
00064
00065 bool getDoubleValue(const QString& name, double& result) const;
00066 bool getIntValue(const QString& name, int& result) const;
00067 bool getBoolValue(const QString& name, bool& result) const;
00068 bool getEnumValue(const QString& name, int& result) const;
00069
00070 inline double getDoubleValue(const QString& name) const
00071 {double result; getDoubleValue(name, result); return result;}
00072 inline int getIntValue(const QString& name) const
00073 {int result; getIntValue(name, result); return result;}
00074 inline bool getBoolValue(const QString& name) const
00075 {bool result; getBoolValue(name, result); return result;}
00076 inline int getEnumValue(const QString& name) const
00077 {int result; getEnumValue(name, result); return result;}
00078
00079 signals:
00080 void parameterChanged(const QString& name);
00081
00082 public slots:
00083 void setDoubleValue(const QString& name, double result);
00084 void setIntValue(const QString& name, int result);
00085 void setBoolValue(const QString& name, bool result);
00086 void setEnumValue(const QString& name, int result);
00087 void insertEnumValue(const QString& name, const QString& value);
00088 void removeEnumValue(const QString& name, const QString& value);
00089 void clearEnumParameter(const QString& name);
00090
00091 protected:
00092 QString m_name;
00093 QHash<QString, ParameterPair> m_parameterMap;
00094 QGridLayout *m_layout;
00095 QSignalMapper m_mapper;
00096
00097
00098 };
00099
00100 #endif