Salome HOME
Double value control improved, the improvement is currently commented.
[modules/shaper.git] / src / ModuleBase / ModuleBase_ParamSpinBox.h
index 8d9811db054de42f0c70aea73fa73725c418cf73..6f2252ec81bdeb3cdbb6c4ed6b46450e9368a331 100644 (file)
@@ -8,6 +8,13 @@
 
 #include <QValidator>
 
+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
 {
   Q_OBJECT
@@ -15,12 +22,27 @@ class MODULEBASE_EXPORT ModuleBase_ParamSpinBox : public ModuleBase_DoubleSpinBo
   enum State { Invalid = 0, NoVariable, Incompatible, Acceptable };
 
 public:
-  explicit ModuleBase_ParamSpinBox(QWidget* theParent = 0, int thePrecision = 6);
+  /*!
+   \brief Constructor.
+
+   Constructs a spin box with 0.0 as minimum value and 99.99 as maximum value,
+   a step value of 1.0 and a precision of 2 decimal places.
+   The value is initially set to 0.00.
+
+   \param theParent a parent object
+   \param thePrecision a precision of values display
+   */
+  explicit ModuleBase_ParamSpinBox( QWidget* theParent = 0, int thePrecision = -12 );
+
+  /// Set list of completion strings
+  void setCompletionList(QStringList&);
+
   virtual ~ModuleBase_ParamSpinBox();
 
   virtual void stepBy(int);
 
   virtual double valueFromText(const QString&) const;
+  virtual QString textFromValue (double value) const;
 
   virtual QValidator::State validate(QString&, int&) const;
 
@@ -28,37 +50,48 @@ public:
 
   virtual void setText(const QString&);
 
+  /// Set a flag about accepted variable
   void setAcceptVariables(const bool);
+
+  /// Returns accepted variables flag
   bool isAcceptVariables() const;
-  bool hasVariable() const;
 
-signals:
-  void textChanged(const QString&);
+  /// Returns True if the input value contains variable
+  bool hasVariable() const;
 
- protected:
+protected:
+   /// 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;
 
-  bool findVariable(const QString&, 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;
 
  protected:
-  virtual void keyPressEvent(QKeyEvent*);
   virtual void showEvent(QShowEvent*);
 
  protected slots:
-  void onEditingFinished();
+   /// A slot called on text change
   void onTextChanged(const QString&);
 
  private:
   void connectSignalsAndSlots();
 
  private:
-  QString myCorrectValue;
   QString myTextValue;
 
   bool myAcceptVariables;
+
+  QStringListModel* myCompleterModel;
+  QCompleter* myCompleter;
 };
 
 #endif