Salome HOME
Improvement of the Group Feature (Undo-Redo functionality inside the multiple selecti...
[modules/shaper.git] / src / ModuleBase / ModuleBase_WidgetDoubleValue.h
1 // Copyright (C) 2014-2017  CEA/DEN, EDF R&D
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or
18 // email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
19 //
20
21 #ifndef ModuleBase_WidgetDoubleValue_H
22 #define ModuleBase_WidgetDoubleValue_H
23
24 #include "ModuleBase.h"
25 #include "ModuleBase_ModelWidget.h"
26
27 class ModuleBase_ParamSpinBox;
28 class Config_WidgetAPI;
29 class QWidget;
30 class QLabel;
31 class QTimer;
32
33 /**
34 * \ingroup GUI
35 * A class of property panel widget for double value input
36 * It can be defined with "doublevalue" keyword. For example:
37 * \code
38 * <doublevalue id="x" label="X:" icon=":pictures/x_point.png" tooltip="X coordinate"/>
39 * \endcode
40 */
41 class MODULEBASE_EXPORT ModuleBase_WidgetDoubleValue : public ModuleBase_ModelWidget
42 {
43 Q_OBJECT
44  public:
45   /// Constructor
46   /// \param theParent the parent object
47   /// \param theData the widget configuation. The attribute of the model widget is obtained from
48   ModuleBase_WidgetDoubleValue(QWidget* theParent, const Config_WidgetAPI* theData);
49
50   virtual ~ModuleBase_WidgetDoubleValue();
51
52   /// The methiod called when widget is activated
53   virtual void activateCustom();
54
55   /// Select the internal content if it can be selected. It is empty in the default realization
56   virtual void selectContent();
57
58   /// Returns list of widget controls
59   /// \return a control list
60   virtual QList<QWidget*> getControls() const;
61
62  public slots:
63  // Delayed value chnged: when user starts typing something,
64  // it gives him a 0,5 second to finish typing, when sends valueChnaged() signal
65 //  void onValueChanged();
66
67 protected:
68   /// Returns true if the event is processed.
69   virtual bool processEnter();
70
71   /// Saves the internal parameters to the given feature
72   /// \return True in success
73   virtual bool storeValueCustom();
74
75   //! Read value of corresponded attribute from data model to the input control
76   // \return True in success
77   virtual bool restoreValueCustom();
78
79   /// Fills the widget with default values
80   /// \return true if the widget current value is reset
81   virtual bool resetCustom();
82
83 protected:
84   /// Label of the widget
85   QLabel* myLabel;
86
87   /// Input value control
88   ModuleBase_ParamSpinBox* mySpinBox;
89 };
90
91 #endif