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