Salome HOME
IPAL9182: linking to libSPlot2d.so added
[modules/gui.git] / src / Qtx / QtxListResourceEdit.h
1 // File:      QtxListResourceEdit.h
2 // Author:    Sergey TELKOV
3
4 #ifndef QTXLISTRESOURCEEDIT_H
5 #define QTXLISTRESOURCEEDIT_H
6
7 #include "QtxResourceEdit.h"
8
9 #include <qmap.h>
10 #include <qhbox.h>
11 #include <qframe.h>
12 #include <qgroupbox.h>
13
14 class QLabel;
15 class QListBox;
16 class QLineEdit;
17 class QCheckBox;
18 class QComboBox;
19 class QTabWidget;
20 class QWidgetStack;
21
22 class QtxIntSpinBox;
23 class QtxDblSpinBox;
24
25 /*
26   Class: QtxListResourceEdit
27   Descr: GUI implementation of QtxResourceEdit - manager of resources
28 */
29
30 class QTX_EXPORT QtxListResourceEdit : public QFrame, public QtxResourceEdit
31 {
32   Q_OBJECT
33
34 public:
35   class Tab;
36   class Group;
37   class Category;
38   class PrefItem;
39
40   class Spacer;
41   class ListItem;
42   class ColorItem;
43   class StateItem;
44   class StringItem;
45   class DoubleSpinItem;
46   class DoubleEditItem;
47   class IntegerSpinItem;
48   class IntegerEditItem;
49
50   enum { Space, Bool, Color, String, Selector, DblSpin, IntSpin, Double, Integer };
51
52 public:
53   QtxListResourceEdit( QtxResourceMgr*, QWidget* = 0 );
54   virtual ~QtxListResourceEdit();
55
56 signals:
57   void          resourceChanged( int );
58   void          resourceChanged( QString&, QString& );
59   void          resourcesChanged( const QMap<int, QString>& );
60
61 private slots:
62   void          onSelectionChanged();
63
64 protected:
65   virtual Item* createItem( const QString&, const int );
66   virtual void  changedResources( const QMap<Item*, QString>& );
67
68 private:
69   void          updateState();
70
71 private:
72   QListBox*     myList;
73   QWidgetStack* myStack;
74 };
75
76 /*
77   Class: QtxListResourceEdit::Category
78   Descr: GUI implementation of 'Category' frame
79 */
80
81 class QtxListResourceEdit::Category : public QFrame, public Item
82 {
83 public:
84   Category( QtxListResourceEdit*, QWidget* = 0 );
85   virtual ~Category();
86
87   virtual int      type() const;
88   virtual void     store();
89   virtual void     retrieve();
90
91   virtual QVariant property( const QString& ) const;
92   virtual void     setProperty( const QString&, const QVariant& );
93
94 protected:
95   virtual Item*    createItem( const QString&, const int );
96
97 private:
98   void             updateState();
99
100 private:
101   QLabel*          myInfo;
102   QTabWidget*      myTabs;
103 };
104
105 /*
106   Class: QtxListResourceEdit::Tab
107   Descr: GUI implementation of resources tab.
108 */
109
110 class QtxListResourceEdit::Tab : public QFrame, public Item
111 {
112 public:
113   Tab( QtxResourceEdit*, Item*, QWidget* = 0 );
114   virtual ~Tab();
115
116   virtual int   type() const;
117   virtual void  store();
118   virtual void  retrieve();
119
120 public:
121   virtual void  polish();
122
123 protected:
124   virtual Item* createItem( const QString&, const int );
125
126 private:
127   void          adjustLabels();
128
129 private:
130   QWidget*      myMainFrame;
131 };
132
133 /*
134   Class: QtxListResourceEdit::Group
135   Descr: GUI implementation of resources group.
136 */
137
138 class QtxListResourceEdit::Group : public QGroupBox, public Item
139 {
140 public:
141   Group( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
142   virtual ~Group();
143
144   virtual int      type() const;
145   virtual void     store();
146   virtual void     retrieve();
147
148   virtual QVariant property( const QString& ) const;
149   virtual void     setProperty( const QString&, const QVariant& );
150
151   virtual void     setTitle( const QString& );
152
153 protected:
154   virtual Item*    createItem( const QString&, const int );
155 };
156
157 /*
158   Class: QtxListResourceEdit::PrefItem
159   Descr: Base class for preferences items.
160 */
161
162 class QtxListResourceEdit::PrefItem : public QHBox, public Item
163 {
164 public:
165   PrefItem( const int, QtxResourceEdit*, Item* = 0, QWidget* = 0 );
166   virtual ~PrefItem();
167
168   virtual int   type() const;
169
170 protected:
171   virtual Item* createItem( const QString&, const int );
172
173 private:
174   int           myType;
175 };
176
177 /*
178   Class: QtxListResourceEdit::Spacer
179   Descr: GUI implementation of resources spacer.
180 */
181
182 class QtxListResourceEdit::Spacer : public PrefItem
183 {
184 public:
185   Spacer( QtxResourceEdit*, Item*, QWidget* = 0 );
186   virtual ~Spacer();
187
188   virtual void store();
189   virtual void retrieve();
190 };
191
192 /*
193   Class: QtxListResourceEdit::ListItem
194   Descr: GUI implementation of resources list item.
195 */
196
197 class QtxListResourceEdit::ListItem : public PrefItem
198 {
199 public:
200   ListItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
201   virtual ~ListItem();
202
203   virtual void     store();
204   virtual void     retrieve();
205
206   virtual QVariant property( const QString& ) const;
207   virtual void     setProperty( const QString&, const QVariant& );
208
209 private:
210   void             setStrings( const QVariant& );
211   void             setIndexes( const QVariant& );
212
213   void             setStrings( const QStringList& );
214   void             setIndexes( const QValueList<int>& );
215
216 private:
217   QComboBox*       myList;
218   QMap<int, int>   myIndex;
219 };
220
221 /*
222   Class: QtxListResourceEdit::StateItem
223   Descr: GUI implementation of resources bool item.
224 */
225
226 class QtxListResourceEdit::StateItem : public PrefItem
227 {
228 public:
229   StateItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
230   virtual ~StateItem();
231
232   virtual void     store();
233   virtual void     retrieve();
234
235 private:
236   QCheckBox*       myState;
237 };
238
239 /*
240   Class: QtxListResourceEdit::StringItem
241   Descr: GUI implementation of resources string item.
242 */
243
244 class QtxListResourceEdit::StringItem : public PrefItem
245 {
246 public:
247   StringItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
248   virtual ~StringItem();
249
250   virtual void     store();
251   virtual void     retrieve();
252
253 private:
254   QLineEdit*       myString;
255 };
256
257 /*
258   Class: QtxListResourceEdit::IntegerEditItem
259   Descr: GUI implementation of resources integer item.
260 */
261
262 class QtxListResourceEdit::IntegerEditItem : public PrefItem
263 {
264 public:
265   IntegerEditItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
266   virtual ~IntegerEditItem();
267
268   virtual void     store();
269   virtual void     retrieve();
270
271 private:
272   QLineEdit*       myInteger;
273 };
274
275 /*
276   Class: QtxListResourceEdit::IntegerSpinItem
277   Descr: GUI implementation of resources integer item.
278 */
279
280 class QtxListResourceEdit::IntegerSpinItem : public PrefItem
281 {
282 public:
283   IntegerSpinItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
284   virtual ~IntegerSpinItem();
285
286   virtual void     store();
287   virtual void     retrieve();
288
289   virtual QVariant property( const QString& ) const;
290   virtual void     setProperty( const QString&, const QVariant& );
291
292 private:
293   QtxIntSpinBox*  myInteger;
294 };
295
296 /*
297   Class: QtxListResourceEdit::DoubleEditItem
298   Descr: GUI implementation of resources double item.
299 */
300
301 class QtxListResourceEdit::DoubleEditItem : public PrefItem
302 {
303 public:
304   DoubleEditItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
305   virtual ~DoubleEditItem();
306
307   virtual void     store();
308   virtual void     retrieve();
309
310 private:
311   QLineEdit*       myDouble;
312 };
313
314 /*
315   Class: QtxListResourceEdit::DoubleSpinItem
316   Descr: GUI implementation of resources double item.
317 */
318
319 class QtxListResourceEdit::DoubleSpinItem : public PrefItem
320 {
321 public:
322   DoubleSpinItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
323   virtual ~DoubleSpinItem();
324
325   virtual void     store();
326   virtual void     retrieve();
327
328   virtual QVariant property( const QString& ) const;
329   virtual void     setProperty( const QString&, const QVariant& );
330
331 private:
332   QtxDblSpinBox*   myDouble;
333 };
334
335 /*
336   Class: QtxListResourceEdit::ColorItem
337   Descr: GUI implementation of resources color item.
338 */
339
340 class QtxListResourceEdit::ColorItem : public PrefItem
341 {
342 public:
343   ColorItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
344   virtual ~ColorItem();
345
346   virtual void     store();
347   virtual void     retrieve();
348
349 private:
350   QWidget*         myColor;
351 };
352
353 #endif