]> SALOME platform Git repositories - modules/gui.git/blob - src/Qtx/QtxPagePrefMgr.h
Salome HOME
Update from BR_V5_DEV 13Feb2009
[modules/gui.git] / src / Qtx / QtxPagePrefMgr.h
1 //  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 //  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 //  This library is free software; you can redistribute it and/or
7 //  modify it under the terms of the GNU Lesser General Public
8 //  License as published by the Free Software Foundation; either
9 //  version 2.1 of the License.
10 //
11 //  This library is distributed in the hope that it will be useful,
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 //  Lesser General Public License for more details.
15 //
16 //  You should have received a copy of the GNU Lesser General Public
17 //  License along with this library; if not, write to the Free Software
18 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 // File:      QtxPagePrefMgr.h
23 // Author:    Sergey TELKOV
24 //
25 #ifndef QTXPAGEPREFMGR_H
26 #define QTXPAGEPREFMGR_H
27
28 #include "QtxPreferenceMgr.h"
29
30 #include "QtxPathEdit.h"
31 #include "QtxPathListEdit.h"
32
33 #include <QFrame>
34 #include <QLabel>
35 #include <QPointer>
36
37 class QtxGridBox;
38 class QtxFontEdit;
39 class QtxGroupBox;
40 class QtxComboBox;
41 class QtxColorButton;
42
43 class QToolBox;
44 class QLineEdit;
45 class QTextEdit;
46 class QCheckBox;
47 class QTabWidget;
48 class QToolButton;
49 class QListWidget;
50 class QFileDialog;
51 class QDateTimeEdit;
52 class QStackedWidget;
53
54 class QTX_EXPORT QtxPagePrefMgr : public QFrame, public QtxPreferenceMgr
55 {
56   Q_OBJECT
57
58 public:
59   QtxPagePrefMgr( QtxResourceMgr*, QWidget* = 0 );
60   virtual ~QtxPagePrefMgr();
61
62   virtual QSize    sizeHint() const;
63   virtual QSize    minimumSizeHint() const;
64
65   virtual void     updateContents();
66
67 signals:
68   void             resourceChanged( int );
69   void             resourceChanged( QString&, QString& );
70   void             resourcesChanged( const QMap<int, QString>& );
71
72 public slots:
73   virtual void     setVisible( bool );
74
75 protected:
76   virtual void     itemAdded( QtxPreferenceItem* );
77   virtual void     itemRemoved( QtxPreferenceItem* );
78   virtual void     itemChanged( QtxPreferenceItem* );
79
80   virtual QVariant optionValue( const QString& ) const;
81   virtual void     setOptionValue( const QString&, const QVariant& );
82
83 private:
84   void             initialize() const;
85   void             initialize( QtxPreferenceItem* );
86
87 private:
88   QtxGridBox*      myBox;
89   bool             myInit;
90 };
91
92 class QTX_EXPORT QtxPagePrefItem : public QtxPreferenceItem
93 {
94   class Listener;
95
96 public:
97   QtxPagePrefItem( const QString&, QtxPreferenceItem* = 0,
98                    const QString& = QString(), const QString& = QString() );
99   virtual ~QtxPagePrefItem();
100
101   QWidget*          widget() const;
102
103   virtual void      activate();
104
105 protected:
106   void              setWidget( QWidget* );
107
108   virtual void      itemAdded( QtxPreferenceItem* );
109   virtual void      itemRemoved( QtxPreferenceItem* );
110   virtual void      itemChanged( QtxPreferenceItem* );
111
112   void              pageChildItems( QList<QtxPagePrefItem*>&, const bool = false ) const;
113
114   virtual void      store();
115   virtual void      retrieve();
116
117   virtual void      widgetShown();
118   virtual void      widgetHided();
119
120   virtual void      ensureVisible( QtxPreferenceItem* );
121
122 private:
123   virtual void      contentChanged();
124
125 private:
126   QPointer<QWidget> myWidget;
127   Listener*         myListener;
128 };
129
130 class QTX_EXPORT QtxPageNamedPrefItem : public QtxPagePrefItem
131 {
132 public:
133   QtxPageNamedPrefItem( const QString&, QtxPreferenceItem* = 0,
134                         const QString& = QString(), const QString& = QString() );
135   virtual ~QtxPageNamedPrefItem();
136
137   virtual void      setTitle( const QString& );
138
139   static void       adjustLabels( QtxPagePrefItem* );
140
141 protected:
142   QLabel*           label() const;
143   QWidget*          control() const;
144
145   void              setControl( QWidget* );
146
147 private:
148   QPointer<QLabel>  myLabel;
149   QPointer<QWidget> myControl;
150 };
151
152 class QTX_EXPORT QtxPagePrefListItem : public QObject, public QtxPagePrefItem
153 {
154   Q_OBJECT
155
156 public:
157   QtxPagePrefListItem( const QString&, QtxPreferenceItem* = 0,
158                        const QString& = QString(), const QString& = QString() );
159   virtual ~QtxPagePrefListItem();
160
161   virtual void     updateContents();
162
163   QString          emptyInfo() const;
164   void             setEmptyInfo( const QString& );
165
166   bool             isFixedSize() const;
167   void             setFixedSize( const bool );
168
169 private slots:
170   void             onItemSelectionChanged();
171
172 protected:
173   virtual QVariant optionValue( const QString& ) const;
174   virtual void     setOptionValue( const QString&, const QVariant& );
175   virtual void     ensureVisible( QtxPreferenceItem* );
176
177   virtual void     widgetShown();
178
179 private:
180   void             updateInfo();
181   void             updateGeom();
182   void             updateState();
183   void             updateVisible();
184
185   int              selected() const;
186   QtxPagePrefItem* selectedItem() const;
187   void             setSelected( const int );
188
189 private:
190   bool             myFix;
191   QListWidget*     myList;
192   QStackedWidget*  myStack;
193
194   QString          myInfText;
195   QLabel*          myInfLabel;
196 };
197
198 class QTX_EXPORT QtxPagePrefToolBoxItem : public QtxPagePrefItem
199 {
200 public:
201   QtxPagePrefToolBoxItem( const QString&, QtxPreferenceItem* = 0,
202                           const QString& = QString(), const QString& = QString() );
203   virtual ~QtxPagePrefToolBoxItem();
204
205   virtual void     updateContents();
206
207 protected:
208   virtual void     ensureVisible( QtxPreferenceItem* );
209
210 private:
211   void             updateToolBox();
212
213 private:
214   QToolBox*        myToolBox;
215 };
216
217 class QTX_EXPORT QtxPagePrefTabsItem : public QtxPagePrefItem
218 {
219 public:
220   QtxPagePrefTabsItem( const QString&, QtxPreferenceItem* = 0,
221                        const QString& = QString(), const QString& = QString() );
222   virtual ~QtxPagePrefTabsItem();
223
224   virtual void     updateContents();
225
226   int              tabPosition() const;
227   void             setTabPosition( const int );
228
229   int              tabShape() const;
230   void             setTabShape( const int );
231
232   QSize            tabIconSize() const;
233   void             setTabIconSize( const QSize& );
234
235 protected:
236   virtual QVariant optionValue( const QString& ) const;
237   virtual void     setOptionValue( const QString&, const QVariant& );
238   virtual void     ensureVisible( QtxPreferenceItem* );
239
240 private:
241   void             updateTabs();
242
243 private:
244   QTabWidget*      myTabs;
245 };
246
247 class QTX_EXPORT QtxPagePrefFrameItem : public QtxPagePrefItem
248 {
249 public:
250   QtxPagePrefFrameItem( const QString&, QtxPreferenceItem* = 0,
251                         const QString& = QString(), const QString& = QString() );
252   virtual ~QtxPagePrefFrameItem();
253
254   virtual void     updateContents();
255
256   bool             stretch() const;
257   void             setStretch( const bool );
258
259   int              margin() const;
260   void             setMargin( const int );
261
262   int              spacing() const;
263   void             setSpacing( const int );
264
265   int              columns() const;
266   void             setColumns( const int );
267
268   Qt::Orientation  orientation() const;
269   void             setOrientation( const Qt::Orientation );
270
271 protected:
272   virtual QVariant optionValue( const QString& ) const;
273   virtual void     setOptionValue( const QString&, const QVariant& );
274
275   virtual void     widgetShown();
276
277 private:
278   void             updateFrame();
279
280 private:
281   QtxGridBox*      myBox;
282 };
283
284 class QTX_EXPORT QtxPagePrefGroupItem : public QtxPagePrefItem
285 {
286 public:
287   QtxPagePrefGroupItem( const QString&, QtxPreferenceItem* = 0,
288                         const QString& = QString(), const QString& = QString() );
289   QtxPagePrefGroupItem( const int, const QString&, QtxPreferenceItem* = 0,
290                         const QString& = QString(), const QString& = QString() );
291   virtual ~QtxPagePrefGroupItem();
292
293   virtual void     updateContents();
294
295   int              margin() const;
296   void             setMargin( const int );
297
298   int              spacing() const;
299   void             setSpacing( const int );
300
301   int              columns() const;
302   void             setColumns( const int );
303
304   Qt::Orientation  orientation() const;
305   void             setOrientation( const Qt::Orientation );
306
307   bool             isFlat() const;
308   void             setFlat( const bool );
309
310   virtual void     setResource( const QString&, const QString& );
311
312   virtual void     store();
313   virtual void     retrieve();
314
315   QtxGridBox*      gridBox() const;
316
317 protected:
318   virtual QVariant optionValue( const QString& ) const;
319   virtual void     setOptionValue( const QString&, const QVariant& );
320
321   virtual void     widgetShown();
322
323 private:
324   void             updateState();
325   void             updateGroup();
326
327 private:
328   QtxGridBox*      myBox;
329   QtxGroupBox*     myGroup;
330 };
331
332 class QTX_EXPORT QtxPagePrefLabelItem : public QtxPagePrefItem
333 {
334 public:
335   QtxPagePrefLabelItem( const QString&, QtxPreferenceItem* = 0 );
336   QtxPagePrefLabelItem( Qt::Alignment, const QString&, QtxPreferenceItem* = 0 );
337   virtual ~QtxPagePrefLabelItem();
338
339   virtual void      setTitle( const QString& );
340
341   Qt::Alignment     alignment() const;
342   void              setAlignment( Qt::Alignment );
343
344 protected:
345   virtual QVariant optionValue( const QString& ) const;
346   virtual void     setOptionValue( const QString&, const QVariant& );
347
348 private:
349   QPointer<QLabel>  myLabel;
350 };
351
352 class QTX_EXPORT QtxPagePrefSpaceItem : public QtxPagePrefItem
353 {
354 public:
355   QtxPagePrefSpaceItem( QtxPreferenceItem* = 0 );
356   QtxPagePrefSpaceItem( Qt::Orientation, QtxPreferenceItem* = 0 );
357   QtxPagePrefSpaceItem( const int, const int, QtxPreferenceItem* = 0 );
358   virtual ~QtxPagePrefSpaceItem();
359
360   int              size( Qt::Orientation ) const;
361   void             setSize( Qt::Orientation, const int );
362
363   int              stretch( Qt::Orientation ) const;
364   void             setStretch( Qt::Orientation, const int );
365
366 protected:
367   virtual QVariant optionValue( const QString& ) const;
368   virtual void     setOptionValue( const QString&, const QVariant& );
369
370 private:
371   void             initialize( const int, const int, const int, const int );
372 };
373
374 class QTX_EXPORT QtxPagePrefCheckItem : public QtxPagePrefItem
375 {
376 public:
377   QtxPagePrefCheckItem( const QString&, QtxPreferenceItem* = 0,
378                         const QString& = QString(), const QString& = QString() );
379   virtual ~QtxPagePrefCheckItem();
380
381   virtual void     setTitle( const QString& );
382
383   virtual void     store();
384   virtual void     retrieve();
385
386 private:
387   QCheckBox*       myCheck;
388 };
389
390 class QTX_EXPORT QtxPagePrefEditItem : public QtxPageNamedPrefItem
391 {
392 public:
393   typedef enum { String, Integer, Double } InputType;
394
395 public:
396   QtxPagePrefEditItem( const QString&, QtxPreferenceItem* = 0,
397                        const QString& = QString(), const QString& = QString() );
398   QtxPagePrefEditItem( const int, const QString&, QtxPreferenceItem* = 0,
399                        const QString& = QString(), const QString& = QString() );
400   virtual ~QtxPagePrefEditItem();
401
402   int              inputType() const;
403   void             setInputType( const int );
404
405   virtual void     store();
406   virtual void     retrieve();
407
408 protected:
409   virtual QVariant optionValue( const QString& ) const;
410   virtual void     setOptionValue( const QString&, const QVariant& );
411
412 private:
413   void             updateEditor();
414
415 private:
416   int              myType;
417   QLineEdit*       myEditor;
418 };
419
420 class QTX_EXPORT QtxPagePrefSelectItem : public QtxPageNamedPrefItem
421 {
422 public:
423   typedef enum { NoInput, String, Integer, Double } InputType;
424
425 public:
426   QtxPagePrefSelectItem( const QString&, QtxPreferenceItem* = 0,
427                          const QString& = QString(), const QString& = QString() );
428   QtxPagePrefSelectItem( const int, const QString&, QtxPreferenceItem* = 0,
429                          const QString& = QString(), const QString& = QString() );
430   virtual ~QtxPagePrefSelectItem();
431
432   int              inputType() const;
433   void             setInputType( const int );
434
435   QStringList      strings() const;
436   QList<int>       numbers() const;
437
438   void             setStrings( const QStringList& );
439   void             setNumbers( const QList<int>& );
440
441   virtual void     store();
442   virtual void     retrieve();
443
444 protected:
445   virtual QVariant optionValue( const QString& ) const;
446   virtual void     setOptionValue( const QString&, const QVariant& );
447
448 private:
449   void             updateSelector();
450   void             setStrings( const QVariant& );
451   void             setNumbers( const QVariant& );
452
453 private:
454   int              myType;
455   QtxComboBox*     mySelector;
456 };
457
458 class QTX_EXPORT QtxPagePrefSpinItem : public QtxPageNamedPrefItem
459 {
460 public:
461   typedef enum { Integer, Double } InputType;
462
463 public:
464   QtxPagePrefSpinItem( const QString&, QtxPreferenceItem* = 0,
465                        const QString& = QString(), const QString& = QString() );
466   QtxPagePrefSpinItem( const int, const QString&, QtxPreferenceItem* = 0,
467                        const QString& = QString(), const QString& = QString() );
468   virtual ~QtxPagePrefSpinItem();
469
470   QVariant         step() const;
471   QVariant         minimum() const;
472   QVariant         maximum() const;
473
474   QString          prefix() const;
475   QString          suffix() const;
476   QString          specialValueText() const;
477
478   void             setStep( const QVariant& );
479   void             setMinimum( const QVariant& );
480   void             setMaximum( const QVariant& );
481
482   void             setPrefix( const QString& );
483   void             setSuffix( const QString& );
484   void             setSpecialValueText( const QString& );
485
486   int              inputType() const;
487   void             setInputType( const int );
488
489   virtual void     store();
490   virtual void     retrieve();
491
492 protected:
493   virtual QVariant optionValue( const QString& ) const;
494   virtual void     setOptionValue( const QString&, const QVariant& );
495
496 private:
497   void             updateSpinBox();
498
499 private:
500   int              myType;
501 };
502
503 class QTX_EXPORT QtxPagePrefTextItem : public QtxPageNamedPrefItem
504 {
505 public:
506   QtxPagePrefTextItem( QtxPreferenceItem* = 0,
507                        const QString& = QString(), const QString& = QString() );
508   QtxPagePrefTextItem( const QString&, QtxPreferenceItem* = 0,
509                        const QString& = QString(), const QString& = QString() );
510   virtual ~QtxPagePrefTextItem();
511
512   virtual void     store();
513   virtual void     retrieve();
514
515 private:
516   QTextEdit*       myEditor;
517 };
518
519 class QTX_EXPORT QtxPagePrefColorItem : public QtxPageNamedPrefItem
520 {
521 public:
522   QtxPagePrefColorItem( const QString&, QtxPreferenceItem* = 0,
523                         const QString& = QString(), const QString& = QString() );
524   virtual ~QtxPagePrefColorItem();
525
526   virtual void     store();
527   virtual void     retrieve();
528
529 private:
530   QtxColorButton*  myColor;
531 };
532
533 class QTX_EXPORT QtxPagePrefFontItem : public QObject, public QtxPageNamedPrefItem
534 {
535   Q_OBJECT
536
537 public:
538   QtxPagePrefFontItem( const int, const QString&, QtxPreferenceItem* = 0,
539                        const QString& = QString(), const QString& = QString() );
540   QtxPagePrefFontItem( const QString&, QtxPreferenceItem* = 0,
541                        const QString& = QString(), const QString& = QString() );
542   virtual ~QtxPagePrefFontItem();
543
544   int              features() const;
545   void             setFeatures( const int );
546
547   void             setMode( const int );
548   int              mode() const;
549
550   void             setFonts( const QStringList& );
551   QStringList      fonts() const;
552
553   void             setSizes( const QList<int>& = QList<int>() );
554   QList<int>       sizes() const;
555
556   virtual void     store();
557   virtual void     retrieve();
558
559 protected:
560   virtual QVariant optionValue( const QString& ) const;
561   virtual void     setOptionValue( const QString&, const QVariant& );
562
563 private:
564   QtxFontEdit*     myFont;
565 };
566
567 class QTX_EXPORT QtxPagePrefPathItem : public QtxPageNamedPrefItem
568 {
569 public:
570   QtxPagePrefPathItem( const Qtx::PathType, const QString&, QtxPreferenceItem* = 0,
571                        const QString& = QString(), const QString& = QString() );
572   QtxPagePrefPathItem( const QString&, QtxPreferenceItem* = 0,
573                        const QString& = QString(), const QString& = QString() );
574   virtual ~QtxPagePrefPathItem();
575
576   Qtx::PathType    pathType() const;
577   void             setPathType( const Qtx::PathType );
578
579   QString          pathFilter() const;
580   void             setPathFilter( const QString& );
581
582   virtual void     store();
583   virtual void     retrieve();
584
585 protected:
586   virtual QVariant optionValue( const QString& ) const;
587   virtual void     setOptionValue( const QString&, const QVariant& );
588
589 private:
590   QtxPathEdit*     myPath;
591 };
592
593 class QTX_EXPORT QtxPagePrefPathListItem : public QtxPageNamedPrefItem
594 {
595 public:
596   QtxPagePrefPathListItem( QtxPreferenceItem* = 0,
597                            const QString& = QString(), const QString& = QString() );
598   QtxPagePrefPathListItem( const QString&, QtxPreferenceItem* = 0,
599                            const QString& = QString(), const QString& = QString() );
600   QtxPagePrefPathListItem( const Qtx::PathType, const QString&, QtxPreferenceItem* = 0,
601                            const QString& = QString(), const QString& = QString() );
602   virtual ~QtxPagePrefPathListItem();
603
604   Qtx::PathType    pathType() const;
605   void             setPathType( const Qtx::PathType );
606
607   virtual void     store();
608   virtual void     retrieve();
609
610 protected:
611   virtual QVariant optionValue( const QString& ) const;
612   virtual void     setOptionValue( const QString&, const QVariant& );
613
614 private:
615   QtxPathListEdit* myPaths;
616 };
617
618 class QTX_EXPORT QtxPagePrefDateTimeItem : public QtxPageNamedPrefItem
619 {
620 public:
621   typedef enum { Date, Time, DateTime } InputType;
622
623 public:
624   QtxPagePrefDateTimeItem( const QString&, QtxPreferenceItem* = 0,
625                            const QString& = QString(), const QString& = QString() );
626   QtxPagePrefDateTimeItem( const int, const QString&, QtxPreferenceItem* = 0,
627                            const QString& = QString(), const QString& = QString() );
628   virtual ~QtxPagePrefDateTimeItem();
629
630   int              inputType() const;
631   void             setInputType( const int );
632
633   bool             calendar() const;
634   void             setCalendar( const bool );
635
636   QDate            maximumDate() const;
637   QTime            maximumTime() const;
638   QDate            minimumDate() const;
639   QTime            minimumTime() const;
640
641   void             setMaximumDate( const QDate& );
642   void             setMaximumTime( const QTime& );
643   void             setMinimumDate( const QDate& );
644   void             setMinimumTime( const QTime& );
645
646   virtual void     store();
647   virtual void     retrieve();
648
649 protected:
650   virtual QVariant optionValue( const QString& ) const;
651   virtual void     setOptionValue( const QString&, const QVariant& );
652
653 private:
654   void             updateDateTime();
655
656 private:
657   int              myType;
658   QDateTimeEdit*   myDateTime;
659 };
660
661 #endif