Salome HOME
Libraries for several kinds of controls (line edit, spinbox, combobox, ...). These...
[modules/gui.git] / src / QDS / QDS_Datum.h
1 #ifndef QDS_DATUM_H
2 #define QDS_DATUM_H
3
4 #include "QDS.h"
5
6 #include <qobject.h>
7 #include <qstring.h>
8 #include <qguardedptr.h>
9
10 #include <DDS_DicItem.h>
11
12 class QLabel;
13 class QWidget;
14 class QValidator;
15 class QVBoxLayout;
16 class QHBoxLayout;
17 class QGridLayout;
18
19 class Handle(DDS_Dictionary);
20
21 class QDS_EXPORT QDS_Datum : public QObject, public QDS
22 {
23   Q_OBJECT
24
25   class Wrapper;
26
27 public:
28   QDS_Datum( const QString&, QWidget* = 0, const int = All, const QString& = QString::null );
29   virtual ~QDS_Datum();
30
31   QString                   id() const;
32   int                       type() const;
33   QString                   label() const;
34   QString                   units() const;
35   QString                   filter() const;
36   QString                   format() const;
37   QString                   longDescription() const;
38   QString                   shortDescription() const;
39
40   QString                   defaultValue() const;
41   QString                   minimumValue() const;
42   QString                   maximumValue() const;
43
44   virtual QString           stringValue() const;
45   virtual double            doubleValue() const;
46   virtual int               integerValue() const;
47
48   QString                   text() const;
49
50   virtual bool              isEmpty() const;
51
52   virtual void              reset();
53   virtual void              clear();
54
55   virtual void              setStringValue( const QString& );
56   virtual void              setDoubleValue( const double );
57   virtual void              setIntegerValue( const int );
58
59   virtual bool              isEnabled( const int = Control ) const;
60   virtual void              setEnabled( const bool, const int );
61
62   void                      show( const int = -1 );
63   void                      hide( const int = -1 );
64   void                      setShown( const bool, const int = -1 );
65
66   QWidget*                  widget( const int ) const;
67   void                      setFocus();
68
69   virtual bool              isValid( const bool = true, 
70                                      const QString& = QString::null,
71                                      const QString& = QString::null ) const;
72   virtual QValidator*       validator( const bool = false ) const;
73
74   void                      addTo( QVBoxLayout* );
75   void                      addTo( QHBoxLayout* );
76   void                      addTo( QGridLayout*, const int, const int, const bool = false );
77
78   virtual void              setAlignment( const int, const int = Label );
79
80   static QString            unitsToText( const QString& );
81   static QString            textToUnits( const QString& );
82
83   static QString            format( const QString&, const QString&, const bool = false );
84   static QString            format( const int, const QString&, const bool = false );
85   static QString            format( const double, const QString&, const bool = false );
86   static QString            units( const QString& );
87
88   virtual bool              eventFilter( QObject*, QEvent* );
89
90 signals:
91   void                      paramChanged();
92   void                      paramChanged( QString& );
93
94 public slots:
95   void                      setEnabled( bool );
96
97 protected slots:
98   virtual void              onParamChanged();
99
100 private slots:
101   void                      onInitDatum();
102   void                      onDestroyed( QObject* );
103
104 protected:
105   QLabel*                   labelWidget() const;
106   QLabel*                   unitsWidget() const;
107   QWidget*                  controlWidget() const;
108
109   Handle(DDS_DicItem)       dicItem() const;
110   void                      setDicItem( Handle(DDS_DicItem)& );
111
112   int                       flags() const;
113
114   void                      invalidateCache();
115
116   virtual QLabel*           createLabel( QWidget* );
117   virtual QLabel*           createUnits( QWidget* );
118   virtual QWidget*          createControl( QWidget* ) = 0;
119
120   virtual QString           getString() const = 0;
121   virtual void              setString( const QString& ) = 0;
122
123   virtual bool              validate( const QString& ) const;
124
125   QString                   prefix() const;
126   QString                   suffix() const;
127   virtual QString           minValue() const;
128   virtual QString           maxValue() const;
129
130   static QString            format( const QString&, const int, const int );
131   static QString            format( const QString&, const int, const double );
132   static QString            format( const QString&, const int, const QString& );
133
134   static QString            sprintf( const QString&, const int );
135   static QString            sprintf( const QString&, const double );
136   static QString            sprintf( const QString&, const QString& );
137
138   virtual void              unitSystemChanged( const QString& );
139
140 private:
141   void                      initialize();
142   void                      initDatum() const;
143
144   Wrapper*                  wrapper( QWidget* ) const;
145   Wrapper*                  wrapper( const int ) const;
146   int                       wrapperType( Wrapper* ) const;
147
148   static QString            removeAccel( const QString& );
149   static bool               isDoubleFormat( const QString& );
150   static QString            canonicalFormat( const QString& );
151   static QString            canonicalFormat( const QString&, QString& );
152
153 private:
154   typedef QGuardedPtr<QLabel>  GuardedLabel;
155   typedef QGuardedPtr<QWidget> GuardedWidget;
156
157 private:
158   QString                   myId;
159   int                       myFlags;
160   Handle(DDS_DicItem)       myDicItem;
161   QMap<int, Wrapper*>       myWrapper;
162
163   GuardedLabel              myLabel;
164   GuardedLabel              myUnits;
165   GuardedWidget             myControl;
166
167   QString                   mySourceValue;
168   QString                   myTargetValue;
169
170   bool                      myInitialised;
171
172   friend class QDS;
173 };
174
175 #endif