// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+// See http://www.salome-platform.org/ or
+// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
//
#ifndef ModuleBase_ParamSpinBox_H
#include "ModuleBase.h"
-#include <ModuleBase_DoubleSpinBox.h>
-
+#include <QAbstractSpinBox>
#include <QValidator>
+#include <QLineEdit>
class QStringListModel;
class QCompleter;
* \ingroup GUI
* An extension of a double spin box which let to use parameters and expressions for value definition
*/
-class MODULEBASE_EXPORT ModuleBase_ParamSpinBox : public ModuleBase_DoubleSpinBox
+class MODULEBASE_EXPORT ModuleBase_ParamSpinBox : public QAbstractSpinBox
{
Q_OBJECT
\param theParent a parent object
\param thePrecision a precision of values display
*/
- explicit ModuleBase_ParamSpinBox( QWidget* theParent = 0, int thePrecision = -12 );
+ ModuleBase_ParamSpinBox( QWidget* theParent = 0, int thePrecision = 12 );
/// Set list of completion strings
void setCompletionList(QStringList&);
virtual void stepBy(int);
- virtual double valueFromText(const QString&) const;
- virtual QString textFromValue (double value) const;
+// virtual double valueFromText(const QString&) const;
+// virtual QString textFromValue (double value) const;
virtual QValidator::State validate(QString&, int&) const;
virtual void setValue(double);
+ double value() const;
+
virtual void setText(const QString&);
+ QString text() const { return lineEdit()->text(); }
+
/// Set a flag about accepted variable
void setAcceptVariables(const bool);
/// Returns True if the input value contains variable
bool hasVariable() const;
+ double minimum() const { return myMinimum; }
+ double maximum() const { return myMaximum; }
+
+ void setMinimum(double theMin) { myMinimum = theMin; myValidator->setBottom(theMin); }
+ void setMaximum(double theMax) { myMaximum = theMax; myValidator->setTop(theMax); }
+
+ int decimals() const { return myValidator->decimals(); }
+ void setDecimals(int thePrecision) { myValidator->setDecimals(thePrecision); }
+
+ double singleStep() const { return mySingleStep; }
+ void setSingleStep(double theStep) { mySingleStep = theStep; }
+
+ void setValueEnabled(bool theEnable);
+
protected:
+ /*!
+ \brief This function is called when the spinbox receives key release event.
+ */
+ virtual void keyReleaseEvent(QKeyEvent *event);
+
+ virtual bool eventFilter(QObject* theObj, QEvent* theEvent);
+
+ /// The virtual function is reimplemented in order to avoid extra increasing of value by StepBy
+ /// method
+ virtual void timerEvent(QTimerEvent *event) {}
+
+ virtual StepEnabled stepEnabled() const { return StepUpEnabled | StepDownEnabled; }
+
/// Returns True if the given text contains variable
/// \param theText a text string
bool hasVariable(const QString& theText) const;
- /// Returns state of the control
- State isValid(const QString&, double&) const;
-
- /// Returns True if the given value is within min and max of the control
- bool checkRange(const double) const;
-
- /// Finds a variable by its name. Returns true in success
- /// \param theName a name of variable
- /// \param outValue an output value of the variable
- bool findVariable(const QString& theName, double& outValue) const;
+// /// Returns state of the control
+// State isValid(const QString&, double&) const;
+//
+// /// Returns True if the given value is within min and max of the control
+// bool checkRange(const double) const;
+//
+// /// Finds a variable by its name. Returns true in success
+// /// \param theName a name of variable
+// /// \param outValue an output value of the variable
+// bool findVariable(const QString& theName, double& outValue) const;
signals:
- void textChanged(const QString& theText);
+ void textChanged(const QString&);
- protected:
- virtual void showEvent(QShowEvent*);
+// protected:
+// virtual void showEvent(QShowEvent*);
+//
+// protected slots:
+// /// A slot called on text change
+// void onTextChanged(const QString&);
+//
+// private:
+// void connectSignalsAndSlots();
- protected slots:
- /// A slot called on text change
- void onTextChanged(const QString&);
+private slots:
+ void insertCompletion(const QString&);
- private:
- void connectSignalsAndSlots();
+ void onTextChanged(const QString&);
- private:
- QString myTextValue;
+private:
+ QString getPrefix(int& theStart, int& theEnd) const;
+ void showCompletion(bool checkPrefix);
+ bool myIsEquation;
bool myAcceptVariables;
QStringListModel* myCompleterModel;
QCompleter* myCompleter;
+
+ double myMinimum;
+ double myMaximum;
+
+ int myCompletePos;
+
+ double mySingleStep;
+
+ /// Cashed color of active base palette
+ QColor myEnabledBaseColor;
+
+ QDoubleValidator* myValidator;
};
#endif