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