]> SALOME platform Git repositories - modules/gui.git/blob - src/Qtx/QtxListResourceEdit.h
Salome HOME
Join modifications from branch BR_3_1_0deb
[modules/gui.git] / src / Qtx / QtxListResourceEdit.h
1 // Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
2 // 
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either 
6 // version 2.1 of the License.
7 // 
8 // This library is distributed in the hope that it will be useful 
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public  
14 // License along with this library; if not, write to the Free Software 
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/
18 //
19 // File:      QtxListResourceEdit.h
20 // Author:    Sergey TELKOV
21
22 #ifndef QTXLISTRESOURCEEDIT_H
23 #define QTXLISTRESOURCEEDIT_H
24
25 #include "QtxResourceEdit.h"
26
27 #include <qmap.h>
28 #include <qhbox.h>
29 #include <qframe.h>
30 #include <qgroupbox.h>
31 #include <qvalidator.h>
32
33 class QLabel;
34 class QListBox;
35 class QLineEdit;
36 class QCheckBox;
37 class QComboBox;
38 class QTabWidget;
39 class QWidgetStack;
40
41 class QtxIntSpinBox;
42 class QtxDblSpinBox;
43
44 class QtxDirListEditor;
45
46 /*
47   Class: QtxListResourceEdit
48   Descr: GUI implementation of QtxResourceEdit - manager of resources
49 */
50
51 class QTX_EXPORT QtxListResourceEdit : public QFrame, public QtxResourceEdit
52 {
53   Q_OBJECT
54
55 public:
56   class Tab;
57   class Group;
58   class Category;
59   class PrefItem;
60
61   class Spacer;
62   class ColorItem;
63   class StateItem;
64   class SelectItem;
65   class StringItem;
66   class DoubleSpinItem;
67   class DoubleEditItem;
68   class IntegerSpinItem;
69   class IntegerEditItem;
70   class FontItem;
71   class FileItem;
72   class DirListItem;
73
74   enum { Space, Bool, Color, String, Selector, DblSpin, IntSpin, Double, Integer, GroupBox, Font, DirList, File, User };
75
76 public:
77   QtxListResourceEdit( QtxResourceMgr*, QWidget* = 0 );
78   virtual ~QtxListResourceEdit();
79
80   virtual void  setItemProperty( const int, const QString&, const QVariant& );
81
82 signals:
83   void          resourceChanged( int );
84   void          resourceChanged( QString&, QString& );
85   void          resourcesChanged( const QMap<int, QString>& );
86
87 private slots:
88   void          onSelectionChanged();
89
90 protected:
91   virtual void  itemAdded( Item* );
92   virtual Item* createItem( const QString&, const int );
93   virtual void  changedResources( const QMap<Item*, QString>& );
94
95 private:
96   void          updateState();
97   void          updateVisible();
98
99 private:
100   QListBox*     myList;
101   QWidgetStack* myStack;
102 };
103
104 /*
105   Class: QtxListResourceEdit::Category
106   Descr: GUI implementation of 'Category' frame
107 */
108
109 class QtxListResourceEdit::Category : public QFrame, public Item
110 {
111 public:
112   Category( QtxListResourceEdit*, QWidget* = 0 );
113   virtual ~Category();
114
115   virtual bool     isEmpty() const;
116
117   virtual int      type() const;
118   virtual void     store();
119   virtual void     retrieve();
120
121   virtual QVariant property( const QString& ) const;
122   virtual void     setProperty( const QString&, const QVariant& );
123
124 protected:
125   virtual Item*    createItem( const QString&, const int );
126
127 private:
128   void             updateState();
129
130 private:
131   QLabel*          myInfo;
132   QTabWidget*      myTabs;
133 };
134
135 /*
136   Class: QtxListResourceEdit::Tab
137   Descr: GUI implementation of resources tab.
138 */
139
140 class QtxListResourceEdit::Tab : public QFrame, public Item
141 {
142 public:
143   Tab( QtxResourceEdit*, Item*, QWidget* = 0 );
144   virtual ~Tab();
145
146   virtual int   type() const;
147   virtual void  store();
148   virtual void  retrieve();
149
150 public:
151   virtual void  polish();
152
153 protected:
154   virtual Item* createItem( const QString&, const int );
155
156 private:
157   void          adjustLabels();
158
159 private:
160   QWidget*      myMainFrame;
161 };
162
163 /*
164   Class: QtxListResourceEdit::Group
165   Descr: GUI implementation of resources group.
166 */
167
168 class QtxListResourceEdit::Group : public QGroupBox, public Item
169 {
170 public:
171   Group( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
172   virtual ~Group();
173
174   virtual int      type() const;
175   virtual void     store();
176   virtual void     retrieve();
177
178   virtual QVariant property( const QString& ) const;
179   virtual void     setProperty( const QString&, const QVariant& );
180
181   virtual void     setTitle( const QString& );
182
183 protected:
184   virtual Item*    createItem( const QString&, const int );
185 };
186
187 /*
188   Class: QtxListResourceEdit::PrefItem
189   Descr: Base class for preferences items.
190 */
191
192 class QtxListResourceEdit::PrefItem : public QHBox, public Item
193 {
194 public:
195   PrefItem( const int, QtxResourceEdit*, Item* = 0, QWidget* = 0 );
196   virtual ~PrefItem();
197
198   virtual int   type() const;
199
200 protected:
201   virtual Item* createItem( const QString&, const int );
202
203 private:
204   int           myType;
205 };
206
207 /*
208   Class: QtxListResourceEdit::Spacer
209   Descr: GUI implementation of resources spacer.
210 */
211
212 class QtxListResourceEdit::Spacer : public PrefItem
213 {
214 public:
215   Spacer( QtxResourceEdit*, Item*, QWidget* = 0 );
216   virtual ~Spacer();
217
218   virtual void store();
219   virtual void retrieve();
220 };
221
222 /*
223   Class: QtxListResourceEdit::SelectItem
224   Descr: GUI implementation of resources selector item.
225 */
226
227 class QtxListResourceEdit::SelectItem : public PrefItem
228 {
229 public:
230   SelectItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
231   virtual ~SelectItem();
232
233   virtual void     store();
234   virtual void     retrieve();
235
236   virtual QVariant property( const QString& ) const;
237   virtual void     setProperty( const QString&, const QVariant& );
238
239 private:
240   void             setStrings( const QVariant& );
241   void             setIndexes( const QVariant& );
242
243   void             setStrings( const QStringList& );
244   void             setIndexes( const QValueList<int>& );
245
246 private:
247   QComboBox*       myList;
248   QMap<int, int>   myIndex;
249 };
250
251 /*
252   Class: QtxListResourceEdit::StateItem
253   Descr: GUI implementation of resources bool item.
254 */
255
256 class QtxListResourceEdit::StateItem : public PrefItem
257 {
258 public:
259   StateItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
260   virtual ~StateItem();
261
262   virtual void     store();
263   virtual void     retrieve();
264
265 private:
266   QCheckBox*       myState;
267 };
268
269 /*
270   Class: QtxListResourceEdit::StringItem
271   Descr: GUI implementation of resources string item.
272 */
273
274 class QtxListResourceEdit::StringItem : public PrefItem
275 {
276 public:
277   StringItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
278   virtual ~StringItem();
279
280   virtual void     store();
281   virtual void     retrieve();
282
283 private:
284   QLineEdit*       myString;
285 };
286
287 /*
288   Class: QtxListResourceEdit::IntegerEditItem
289   Descr: GUI implementation of resources integer item.
290 */
291
292 class QtxListResourceEdit::IntegerEditItem : public PrefItem
293 {
294 public:
295   IntegerEditItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
296   virtual ~IntegerEditItem();
297
298   virtual void     store();
299   virtual void     retrieve();
300
301 private:
302   QLineEdit*       myInteger;
303 };
304
305 /*
306   Class: QtxListResourceEdit::IntegerSpinItem
307   Descr: GUI implementation of resources integer item.
308 */
309
310 class QtxListResourceEdit::IntegerSpinItem : public PrefItem
311 {
312 public:
313   IntegerSpinItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
314   virtual ~IntegerSpinItem();
315
316   virtual void     store();
317   virtual void     retrieve();
318
319   virtual QVariant property( const QString& ) const;
320   virtual void     setProperty( const QString&, const QVariant& );
321
322 private:
323   QtxIntSpinBox*  myInteger;
324 };
325
326 /*
327   Class: QtxListResourceEdit::DoubleEditItem
328   Descr: GUI implementation of resources double item.
329 */
330
331 class QtxListResourceEdit::DoubleEditItem : public PrefItem
332 {
333 public:
334   DoubleEditItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
335   virtual ~DoubleEditItem();
336
337   virtual void     store();
338   virtual void     retrieve();
339
340 private:
341   QLineEdit*       myDouble;
342 };
343
344 /*
345   Class: QtxListResourceEdit::DoubleSpinItem
346   Descr: GUI implementation of resources double item.
347 */
348
349 class QtxListResourceEdit::DoubleSpinItem : public PrefItem
350 {
351 public:
352   DoubleSpinItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
353   virtual ~DoubleSpinItem();
354
355   virtual void     store();
356   virtual void     retrieve();
357
358   virtual QVariant property( const QString& ) const;
359   virtual void     setProperty( const QString&, const QVariant& );
360
361 private:
362   QtxDblSpinBox*   myDouble;
363 };
364
365 /*
366   Class: QtxListResourceEdit::ColorItem
367   Descr: GUI implementation of resources color item.
368 */
369
370 class QtxListResourceEdit::ColorItem : public PrefItem
371 {
372 public:
373   ColorItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
374   virtual ~ColorItem();
375
376   virtual void     store();
377   virtual void     retrieve();
378
379 private:
380   QWidget*         myColor;
381 };
382
383 /*
384   Class: QtxListResourceEdit::FontItem
385   Descr: GUI implementation of resources font item.
386 */
387
388 class QtxComboBox;
389 class QToolButton;
390
391 class QtxListResourceEdit::FontItem : public PrefItem
392 {
393   Q_OBJECT
394
395 public:
396   typedef enum
397   {
398     Family    = 0x01,
399     Size      = 0x02,
400     UserSize  = 0x04,
401     Bold      = 0x08,
402     Italic    = 0x10,
403     Underline = 0x20,
404     Preview   = 0x40,
405
406     All = Family | Size | UserSize | Bold | Italic | Underline | Preview
407     
408   } WidgetFlags;
409   
410 public:
411   FontItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
412   virtual ~FontItem();
413
414   virtual void store();
415   virtual void retrieve();
416
417   virtual QVariant property( const QString& ) const;
418   virtual void     setProperty( const QString&, const QVariant& );
419
420 private slots:
421   void onActivateFamily( int );
422   void onPreview();
423   
424 private:
425   void       setFamily( const QString& );
426   QString    family() const;
427   void       setSize( const int );
428   int        size() const;
429   void       setParams( const bool, const bool, const bool );
430   void       params( bool&, bool&, bool& );
431   void       internalUpdate();
432   
433 private:
434   int            myFlags;
435   bool           myIsSystem;
436   QtxComboBox   *myFamilies, *mySizes;
437   QCheckBox     *myBold, *myItalic, *myUnderline;
438   QToolButton   *myPreview;
439   QMap<QString, QVariant>   myProperties;
440 };
441
442
443 /*!
444  * \brief GUI implementation of resources directory list item.
445  *
446  * 
447  */
448 class QtxListResourceEdit::DirListItem : public PrefItem
449 {
450   Q_OBJECT
451   
452 public:
453
454   /*!
455    * \brief Constructor
456    */
457   DirListItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
458   /*!
459    * \brief Destructor
460    */
461   virtual ~DirListItem();
462
463   /*!
464    * \brief Stores the data
465    */
466   virtual void     store();
467
468   /*!
469    * \brief Retrieves the data
470    */
471   virtual void     retrieve();
472
473 private:
474   QtxDirListEditor* myDirListEditor; //!< The widget wich implements in GUI the list of directories
475 };
476
477 /*
478   Class: QtxListResourceEdit::FontItem
479   Descr: GUI implementation of resources font item.
480 */
481
482 class QtxComboBox;
483 class QToolButton;
484 class QFileDialog;
485
486 class QtxListResourceEdit::FileItem : public PrefItem
487 {
488   Q_OBJECT
489
490 private:
491   class FileValidator : public QValidator
492   {
493   public:
494     FileValidator( FileItem*, QObject* );
495     ~FileValidator();
496
497     virtual QValidator::State validate( QString&, int& ) const;
498
499   private:
500     FileItem* myItem;
501   };
502
503 public:
504   FileItem( const QString&, QtxResourceEdit*, Item*, QWidget* = 0 );
505   virtual ~FileItem();
506
507   virtual void store();
508   virtual void retrieve();
509   
510   virtual QVariant property( const QString& ) const;
511   virtual void     setProperty( const QString&, const QVariant& );
512
513   virtual bool isFileCorrect( const QString& ) const;
514
515 private slots:
516   void onOpenFile();
517   void onFileSelected( const QString& );
518
519 private:
520   uint          myFlags;
521   bool          myIsReadOnly;
522   QStringList   myFilter;
523   bool          myIsExisting;
524   QLineEdit*    myFile;
525   QToolButton*  myOpenFile;
526   QFileDialog*  myFileDlg;
527 };
528
529
530 #endif