]> SALOME platform Git repositories - modules/gui.git/blob - src/Qtx/QtxListResourceEdit.h
Salome HOME
new variant of font item
[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 class QtxDirListEditor;
26
27 /*
28   Class: QtxListResourceEdit
29   Descr: GUI implementation of QtxResourceEdit - manager of resources
30 */
31
32 class QTX_EXPORT QtxListResourceEdit : public QFrame, public QtxResourceEdit
33 {
34   Q_OBJECT
35
36 public:
37   class Tab;
38   class Group;
39   class Category;
40   class PrefItem;
41
42   class Spacer;
43   class ColorItem;
44   class StateItem;
45   class SelectItem;
46   class StringItem;
47   class DoubleSpinItem;
48   class DoubleEditItem;
49   class IntegerSpinItem;
50   class IntegerEditItem;
51   class FontItem;
52   class DirListItem;
53
54   enum { Space, Bool, Color, String, Selector, DblSpin, IntSpin, Double, Integer, GroupBox, Font, DirList, User };
55
56 public:
57   QtxListResourceEdit( QtxResourceMgr*, QWidget* = 0 );
58   virtual ~QtxListResourceEdit();
59
60   virtual void  setItemProperty( const int, const QString&, const QVariant& );
61
62 signals:
63   void          resourceChanged( int );
64   void          resourceChanged( QString&, QString& );
65   void          resourcesChanged( const QMap<int, QString>& );
66
67 private slots:
68   void          onSelectionChanged();
69
70 protected:
71   virtual void  itemAdded( Item* );
72   virtual Item* createItem( const QString&, const int );
73   virtual void  changedResources( const QMap<Item*, QString>& );
74
75 private:
76   void          updateState();
77   void          updateVisible();
78
79 private:
80   QListBox*     myList;
81   QWidgetStack* myStack;
82 };
83
84 /*
85   Class: QtxListResourceEdit::Category
86   Descr: GUI implementation of 'Category' frame
87 */
88
89 class QtxListResourceEdit::Category : public QFrame, public Item
90 {
91 public:
92   Category( QtxListResourceEdit*, QWidget* = 0 );
93   virtual ~Category();
94
95   virtual bool     isEmpty() const;
96
97   virtual int      type() const;
98   virtual void     store();
99   virtual void     retrieve();
100
101   virtual QVariant property( const QString& ) const;
102   virtual void     setProperty( const QString&, const QVariant& );
103
104 protected:
105   virtual Item*    createItem( const QString&, const int );
106
107 private:
108   void             updateState();
109
110 private:
111   QLabel*          myInfo;
112   QTabWidget*      myTabs;
113 };
114
115 /*
116   Class: QtxListResourceEdit::Tab
117   Descr: GUI implementation of resources tab.
118 */
119
120 class QtxListResourceEdit::Tab : public QFrame, public Item
121 {
122 public:
123   Tab( QtxResourceEdit*, Item*, QWidget* = 0 );
124   virtual ~Tab();
125
126   virtual int   type() const;
127   virtual void  store();
128   virtual void  retrieve();
129
130 public:
131   virtual void  polish();
132
133 protected:
134   virtual Item* createItem( const QString&, const int );
135
136 private:
137   void          adjustLabels();
138
139 private:
140   QWidget*      myMainFrame;
141 };
142
143 /*
144   Class: QtxListResourceEdit::Group
145   Descr: GUI implementation of resources group.
146 */
147
148 class QtxListResourceEdit::Group : public QGroupBox, public Item
149 {
150 public:
151   Group( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
152   virtual ~Group();
153
154   virtual int      type() const;
155   virtual void     store();
156   virtual void     retrieve();
157
158   virtual QVariant property( const QString& ) const;
159   virtual void     setProperty( const QString&, const QVariant& );
160
161   virtual void     setTitle( const QString& );
162
163 protected:
164   virtual Item*    createItem( const QString&, const int );
165 };
166
167 /*
168   Class: QtxListResourceEdit::PrefItem
169   Descr: Base class for preferences items.
170 */
171
172 class QtxListResourceEdit::PrefItem : public QHBox, public Item
173 {
174 public:
175   PrefItem( const int, QtxResourceEdit*, Item* = 0, QWidget* = 0 );
176   virtual ~PrefItem();
177
178   virtual int   type() const;
179
180 protected:
181   virtual Item* createItem( const QString&, const int );
182
183 private:
184   int           myType;
185 };
186
187 /*
188   Class: QtxListResourceEdit::Spacer
189   Descr: GUI implementation of resources spacer.
190 */
191
192 class QtxListResourceEdit::Spacer : public PrefItem
193 {
194 public:
195   Spacer( QtxResourceEdit*, Item*, QWidget* = 0 );
196   virtual ~Spacer();
197
198   virtual void store();
199   virtual void retrieve();
200 };
201
202 /*
203   Class: QtxListResourceEdit::SelectItem
204   Descr: GUI implementation of resources selector item.
205 */
206
207 class QtxListResourceEdit::SelectItem : public PrefItem
208 {
209 public:
210   SelectItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
211   virtual ~SelectItem();
212
213   virtual void     store();
214   virtual void     retrieve();
215
216   virtual QVariant property( const QString& ) const;
217   virtual void     setProperty( const QString&, const QVariant& );
218
219 private:
220   void             setStrings( const QVariant& );
221   void             setIndexes( const QVariant& );
222
223   void             setStrings( const QStringList& );
224   void             setIndexes( const QValueList<int>& );
225
226 private:
227   QComboBox*       myList;
228   QMap<int, int>   myIndex;
229 };
230
231 /*
232   Class: QtxListResourceEdit::StateItem
233   Descr: GUI implementation of resources bool item.
234 */
235
236 class QtxListResourceEdit::StateItem : public PrefItem
237 {
238 public:
239   StateItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
240   virtual ~StateItem();
241
242   virtual void     store();
243   virtual void     retrieve();
244
245 private:
246   QCheckBox*       myState;
247 };
248
249 /*
250   Class: QtxListResourceEdit::StringItem
251   Descr: GUI implementation of resources string item.
252 */
253
254 class QtxListResourceEdit::StringItem : public PrefItem
255 {
256 public:
257   StringItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
258   virtual ~StringItem();
259
260   virtual void     store();
261   virtual void     retrieve();
262
263 private:
264   QLineEdit*       myString;
265 };
266
267 /*
268   Class: QtxListResourceEdit::IntegerEditItem
269   Descr: GUI implementation of resources integer item.
270 */
271
272 class QtxListResourceEdit::IntegerEditItem : public PrefItem
273 {
274 public:
275   IntegerEditItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
276   virtual ~IntegerEditItem();
277
278   virtual void     store();
279   virtual void     retrieve();
280
281 private:
282   QLineEdit*       myInteger;
283 };
284
285 /*
286   Class: QtxListResourceEdit::IntegerSpinItem
287   Descr: GUI implementation of resources integer item.
288 */
289
290 class QtxListResourceEdit::IntegerSpinItem : public PrefItem
291 {
292 public:
293   IntegerSpinItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
294   virtual ~IntegerSpinItem();
295
296   virtual void     store();
297   virtual void     retrieve();
298
299   virtual QVariant property( const QString& ) const;
300   virtual void     setProperty( const QString&, const QVariant& );
301
302 private:
303   QtxIntSpinBox*  myInteger;
304 };
305
306 /*
307   Class: QtxListResourceEdit::DoubleEditItem
308   Descr: GUI implementation of resources double item.
309 */
310
311 class QtxListResourceEdit::DoubleEditItem : public PrefItem
312 {
313 public:
314   DoubleEditItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
315   virtual ~DoubleEditItem();
316
317   virtual void     store();
318   virtual void     retrieve();
319
320 private:
321   QLineEdit*       myDouble;
322 };
323
324 /*
325   Class: QtxListResourceEdit::DoubleSpinItem
326   Descr: GUI implementation of resources double item.
327 */
328
329 class QtxListResourceEdit::DoubleSpinItem : public PrefItem
330 {
331 public:
332   DoubleSpinItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
333   virtual ~DoubleSpinItem();
334
335   virtual void     store();
336   virtual void     retrieve();
337
338   virtual QVariant property( const QString& ) const;
339   virtual void     setProperty( const QString&, const QVariant& );
340
341 private:
342   QtxDblSpinBox*   myDouble;
343 };
344
345 /*
346   Class: QtxListResourceEdit::ColorItem
347   Descr: GUI implementation of resources color item.
348 */
349
350 class QtxListResourceEdit::ColorItem : public PrefItem
351 {
352 public:
353   ColorItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
354   virtual ~ColorItem();
355
356   virtual void     store();
357   virtual void     retrieve();
358
359 private:
360   QWidget*         myColor;
361 };
362
363 /*
364   Class: QtxListResourceEdit::FontItem
365   Descr: GUI implementation of resources font item.
366 */
367
368 class QtxComboBox;
369
370 class QtxListResourceEdit::FontItem : public PrefItem
371 {
372   Q_OBJECT
373
374 public:
375   typedef enum
376   {
377     Family    = 0x01,
378     Size      = 0x02,
379     UserSize  = 0x04,
380     Bold      = 0x08,
381     Italic    = 0x10,
382     Underline = 0x20,
383
384     All = Family | Size | UserSize | Bold | Italic | Underline
385     
386   } WidgetFlags;
387   
388 public:
389   FontItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
390   virtual ~FontItem();
391
392   void        setWidgetFlags( const WidgetFlags );
393   WidgetFlags widgetFlags() const;
394
395   void        setIsSystem( const bool );
396   bool        isSystem() const;
397   
398   virtual void store();
399   virtual void retrieve();
400
401   virtual QVariant property( const QString& ) const;
402   virtual void     setProperty( const QString&, const QVariant& );
403
404 private slots:
405   void onActivateFamily( int );
406   
407 private:
408   void       setFamily( const QString& );
409   QString    family() const;
410   void       setSize( const int );
411   int        size() const;
412   void       setParams( const bool, const bool, const bool );
413   void       params( bool&, bool&, bool& );
414   void       internalUpdate();
415   
416 private:
417   WidgetFlags    myFlags;
418   bool           myIsSystem;
419   QtxComboBox   *myFamilies, *mySizes;
420   QCheckBox     *myBold, *myItalic, *myUnderline;
421   QMap<QString, QVariant>   myProperties;
422 };
423
424
425 /*!
426  * \brief GUI implementation of resources directory list item.
427  *
428  * 
429  */
430 class QtxListResourceEdit::DirListItem : public PrefItem
431 {
432   Q_OBJECT
433   
434 public:
435
436   /*!
437    * \brief Constructor
438    */
439   DirListItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
440   /*!
441    * \brief Destructor
442    */
443   virtual ~DirListItem();
444
445   /*!
446    * \brief Stores the data
447    */
448   virtual void     store();
449
450   /*!
451    * \brief Retrieves the data
452    */
453   virtual void     retrieve();
454
455 private:
456   QtxDirListEditor* myDirListEditor; //!< The widget wich implements in GUI the list of directories
457 };
458
459 #endif