From d85f44208948427346dcadb133c12bd7991b4d6d Mon Sep 17 00:00:00 2001 From: wmayer Date: Thu, 15 May 2014 18:10:26 +0200 Subject: [PATCH] + add InputField to widget plugin --- src/Tools/plugins/widget/customwidgets.cpp | 100 +++++++++++++++++++++ src/Tools/plugins/widget/customwidgets.h | 54 +++++++++++ src/Tools/plugins/widget/plugin.cpp | 81 +++++++++++++++++ 3 files changed, 235 insertions(+) diff --git a/src/Tools/plugins/widget/customwidgets.cpp b/src/Tools/plugins/widget/customwidgets.cpp index 9de8c0f82..4e98707e4 100644 --- a/src/Tools/plugins/widget/customwidgets.cpp +++ b/src/Tools/plugins/widget/customwidgets.cpp @@ -418,6 +418,106 @@ ActionSelector::~ActionSelector() // -------------------------------------------------------------------- +InputField::InputField (QWidget * parent) + : QLineEdit(parent), + Value(0), + Maximum(INT_MAX), + Minimum(-INT_MAX), + StepSize(1.0), + HistorySize(5) +{ +} + +InputField::~InputField() +{ +} + +/** Sets the preference path to \a path. */ +void InputField::setParamGrpPath( const QByteArray& path ) +{ + m_sPrefGrp = path; +} + +/** Returns the widget's preferences path. */ +QByteArray InputField::paramGrpPath() const +{ + return m_sPrefGrp; +} + +/// sets the field with a quantity +void InputField::setValue(double quant) +{ + Value = quant; + setText(QString("%1 %2").arg(Value).arg(UnitStr)); +} + +/// sets the field with a quantity +double InputField::getQuantity() const +{ + return Value; +} + +/// get the value of the singleStep property +double InputField::singleStep(void)const +{ + return StepSize; +} + +/// set the value of the singleStep property +void InputField::setSingleStep(double s) +{ + StepSize = s; +} + +/// get the value of the maximum property +double InputField::maximum(void)const +{ + return Maximum; +} + +/// set the value of the maximum property +void InputField::setMaximum(double m) +{ + Maximum = m; +} + +/// get the value of the minimum property +double InputField::minimum(void)const +{ + return Minimum; +} + +/// set the value of the minimum property +void InputField::setMinimum(double m) +{ + Minimum = m; +} + +void InputField::setUnitText(QString str) +{ + UnitStr = str; + setText(QString("%1 %2").arg(Value).arg(UnitStr)); +} + +QString InputField::getUnitText(void) +{ + return UnitStr; +} + +// get the value of the minimum property +int InputField::historySize(void)const +{ + return HistorySize; +} + +// set the value of the minimum property +void InputField::setHistorySize(int i) +{ + HistorySize = i; +} + +// -------------------------------------------------------------------- + CommandIconView::CommandIconView ( QWidget * parent ) : QListWidget(parent) { diff --git a/src/Tools/plugins/widget/customwidgets.h b/src/Tools/plugins/widget/customwidgets.h index 013f6ba4a..c13e1f8ff 100644 --- a/src/Tools/plugins/widget/customwidgets.h +++ b/src/Tools/plugins/widget/customwidgets.h @@ -39,6 +39,12 @@ #include #include +namespace Base { + class Quantity{}; +} + +Q_DECLARE_METATYPE(Base::Quantity) + namespace Gui { @@ -203,6 +209,54 @@ private: // ------------------------------------------------------------------------------ +class InputField : public QLineEdit +{ + Q_OBJECT + + Q_PROPERTY(QByteArray prefPath READ paramGrpPath WRITE setParamGrpPath ) + Q_PROPERTY(double singleStep READ singleStep WRITE setSingleStep ) + Q_PROPERTY(double maximum READ maximum WRITE setMaximum ) + Q_PROPERTY(double minimum READ minimum WRITE setMinimum ) + Q_PROPERTY(int historySize READ historySize WRITE setHistorySize ) + Q_PROPERTY(QString unit READ getUnitText WRITE setUnitText ) + Q_PROPERTY(double quantity READ getQuantity WRITE setValue ) + +public: + InputField (QWidget * parent = 0); + virtual ~InputField(); + + void setValue(double); + double getQuantity(void) const; + double singleStep(void) const; + void setSingleStep(double); + double maximum(void) const; + void setMaximum(double); + double minimum(void) const; + void setMinimum(double); + int historySize(void) const; + void setHistorySize(int); + void setUnitText(QString); + QString getUnitText(void); + QByteArray paramGrpPath () const; + void setParamGrpPath(const QByteArray& name); + +Q_SIGNALS: + void valueChanged(const Base::Quantity&); + void valueChanged(double); + void parseError(const QString& errorText); + +private: + QByteArray m_sPrefGrp; + QString UnitStr; + double Value; + double Maximum; + double Minimum; + double StepSize; + int HistorySize; +}; + +// ------------------------------------------------------------------------------ + class CommandIconView : public QListWidget { Q_OBJECT diff --git a/src/Tools/plugins/widget/plugin.cpp b/src/Tools/plugins/widget/plugin.cpp index e8f5a90f4..3c4c64db3 100644 --- a/src/Tools/plugins/widget/plugin.cpp +++ b/src/Tools/plugins/widget/plugin.cpp @@ -453,6 +453,86 @@ public: } }; +/* XPM */ +static const char *inputfield_pixmap[]={ +"22 22 6 1", +"a c #000000", +"# c #000080", +"b c #008080", +"c c #808080", +"d c #c0c0c0", +". c #ffffff", +"......................", +"......................", +"......................", +"...#aaaaaaaaaaaaaa#...", +".baccccccccccccccccab.", +".acccddddddddddddddca.", +"#ccd................d#", +"acc.................da", +"acd.......d....ca.ac.a", +"acd......db......a...a", +"acd.dbbb.dbbbd...a...a", +"acd.ccdbddb.db...a...a", +"acd.dbbbddb..b...a...a", +"acd.bd.bddb..b...a...a", +"acd.bbbbddbbbc...a...a", +"acd..d.....dd..ca.acda", +"#cd.................d#", +".ac................da.", +".badd............dda#.", +"...#aaaaaaaaaaaaaa#...", +"......................", +"......................"}; + +class InputFieldPlugin : public QDesignerCustomWidgetInterface +{ + Q_INTERFACES(QDesignerCustomWidgetInterface) +public: + InputFieldPlugin() + { + } + QWidget *createWidget(QWidget *parent) + { + return new Gui::InputField(parent); + } + QString group() const + { + return QLatin1String("Input Widgets"); + } + QIcon icon() const + { + return QIcon( QPixmap( inputfield_pixmap ) ); + } + QString includeFile() const + { + return QLatin1String("Gui/InputField.h"); + } + QString toolTip() const + { + return QLatin1String("Input Field"); + } + QString whatsThis() const + { + return QLatin1String("A widget to work qith quantities."); + } + bool isContainer() const + { + return false; + } + QString domXml() const + { + return "\n" + " \n" + " \n" + ""; + } + QString name() const + { + return QLatin1String("Gui::InputField"); + } +}; + /* XPM */ static const char *iconview_pixmap[]={ "22 22 10 1", @@ -1252,6 +1332,7 @@ QList CustomWidgetPlugin::customWidgets () con cw.append(new FileChooserPlugin); cw.append(new AccelLineEditPlugin); cw.append(new ActionSelectorPlugin); + cw.append(new InputFieldPlugin); cw.append(new CommandIconViewPlugin); cw.append(new UIntSpinBoxPlugin); cw.append(new ColorButtonPlugin);