Salome HOME
Updated copyright comment
[modules/gui.git] / src / Qtx / QtxPagePrefMgr.h
1 // Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
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, or (at your option) any later version.
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/ or email : webmaster.salome@opencascade.com
18 //
19
20 // File:      QtxPagePrefMgr.h
21 // Author:    Sergey TELKOV
22 //
23 #ifndef QTXPAGEPREFMGR_H
24 #define QTXPAGEPREFMGR_H
25
26 #include "QtxPreferenceMgr.h"
27
28 #include "QtxPathEdit.h"
29 #include "QtxPathListEdit.h"
30
31 #include <QFrame>
32 #include <QLabel>
33 #include <QPointer>
34 #include <QIcon>
35
36 class QtxGridBox;
37 class QtxFontEdit;
38 class QtxGroupBox;
39 class QtxComboBox;
40 class QtxColorButton;
41 class QtxBiColorTool;
42 class QtxShortcutEdit;
43 class QtxShortcutTree;
44 class QtxBackgroundTool;
45
46 class QToolBox;
47 class QLineEdit;
48 class QTextEdit;
49 class QCheckBox;
50 class QTabWidget;
51 class QToolButton;
52 class QListWidget;
53 class QFileDialog;
54 class QDateTimeEdit;
55 class QStackedWidget;
56 class QSlider;
57 class QTreeWidget;
58
59 class QTX_EXPORT QtxPagePrefMgr : public QFrame, public QtxPreferenceMgr
60 {
61   Q_OBJECT
62
63 public:
64   QtxPagePrefMgr( QtxResourceMgr*, QWidget* = 0 );
65   virtual ~QtxPagePrefMgr();
66
67   virtual QSize    sizeHint() const;
68   virtual QSize    minimumSizeHint() const;
69
70   virtual void     updateContents();
71
72 signals:
73   void             resourceChanged( int );
74   void             resourceChanged( QString&, QString& );
75   void             resourcesChanged( const QMap<int, QString>& );
76
77 public slots:
78   virtual void     setVisible( bool );
79
80 protected:
81   virtual void     itemAdded( QtxPreferenceItem* );
82   virtual void     itemRemoved( QtxPreferenceItem* );
83   virtual void     itemChanged( QtxPreferenceItem* );
84
85   virtual QVariant optionValue( const QString& ) const;
86   virtual void     setOptionValue( const QString&, const QVariant& );
87
88 private:
89   void             initialize() const;
90   void             initialize( QtxPreferenceItem* );
91
92 private:
93   QtxGridBox*      myBox;
94   bool             myInit;
95 };
96
97 class QTX_EXPORT QtxPagePrefItem : public QtxPreferenceItem
98 {
99   class Listener;
100
101 public:
102   QtxPagePrefItem( const QString&, QtxPreferenceItem* = 0,
103                    const QString& = QString(), const QString& = QString() );
104   virtual ~QtxPagePrefItem();
105
106   QWidget*          widget() const;
107
108   virtual void      activate();
109
110 protected:
111   void              setWidget( QWidget* );
112
113   virtual void      itemAdded( QtxPreferenceItem* );
114   virtual void      itemRemoved( QtxPreferenceItem* );
115   virtual void      itemChanged( QtxPreferenceItem* );
116
117   void              pageChildItems( QList<QtxPagePrefItem*>&, const bool = false ) const;
118
119   virtual void      store();
120   virtual void      retrieve();
121
122   virtual void      widgetShown();
123   virtual void      widgetHided();
124
125   virtual void      ensureVisible( QtxPreferenceItem* );
126
127 private:
128   virtual void      contentChanged();
129
130 private:
131   QPointer<QWidget> myWidget;
132   Listener*         myListener;
133 };
134
135 class QTX_EXPORT QtxPageNamedPrefItem : public QtxPagePrefItem
136 {
137 public:
138   QtxPageNamedPrefItem( const QString&, QtxPreferenceItem* = 0,
139                         const QString& = QString(), const QString& = QString() );
140   virtual ~QtxPageNamedPrefItem();
141
142   virtual void      setTitle( const QString& );
143
144   static void       adjustLabels( QtxPagePrefItem* );
145
146 protected:
147   QLabel*           label() const;
148   QWidget*          control() const;
149
150   void              setControl( QWidget* );
151
152 private:
153   QPointer<QLabel>  myLabel;
154   QPointer<QWidget> myControl;
155 };
156
157 class QTX_EXPORT QtxPagePrefListItem : public QObject, public QtxPagePrefItem
158 {
159   Q_OBJECT
160
161 public:
162   QtxPagePrefListItem( const QString&, QtxPreferenceItem* = 0,
163                        const QString& = QString(), const QString& = QString() );
164   virtual ~QtxPagePrefListItem();
165
166   virtual void     updateContents();
167
168   QString          emptyInfo() const;
169   void             setEmptyInfo( const QString& );
170
171   bool             isFixedSize() const;
172   void             setFixedSize( const bool );
173
174 private slots:
175   void             onItemSelectionChanged();
176
177 protected:
178   virtual QVariant optionValue( const QString& ) const;
179   virtual void     setOptionValue( const QString&, const QVariant& );
180   virtual void     ensureVisible( QtxPreferenceItem* );
181
182   virtual void     widgetShown();
183
184 private:
185   void             updateInfo();
186   void             updateGeom();
187   void             updateState();
188   void             updateVisible();
189
190   int              selected() const;
191   QtxPagePrefItem* selectedItem() const;
192   void             setSelected( const int );
193
194 private:
195   bool             myFix;
196   QListWidget*     myList;
197   QStackedWidget*  myStack;
198
199   QString          myInfText;
200   QLabel*          myInfLabel;
201 };
202
203 class QTX_EXPORT QtxPagePrefToolBoxItem : public QtxPagePrefItem
204 {
205 public:
206   QtxPagePrefToolBoxItem( const QString&, QtxPreferenceItem* = 0,
207                           const QString& = QString(), const QString& = QString() );
208   virtual ~QtxPagePrefToolBoxItem();
209
210   virtual void     updateContents();
211
212 protected:
213   virtual void     ensureVisible( QtxPreferenceItem* );
214
215 private:
216   void             updateToolBox();
217
218 private:
219   QToolBox*        myToolBox;
220 };
221
222 class QTX_EXPORT QtxPagePrefTabsItem : public QtxPagePrefItem
223 {
224 public:
225   QtxPagePrefTabsItem( const QString&, QtxPreferenceItem* = 0,
226                        const QString& = QString(), const QString& = QString() );
227   virtual ~QtxPagePrefTabsItem();
228
229   virtual void     updateContents();
230
231   int              tabPosition() const;
232   void             setTabPosition( const int );
233
234   int              tabShape() const;
235   void             setTabShape( const int );
236
237   QSize            tabIconSize() const;
238   void             setTabIconSize( const QSize& );
239
240 protected:
241   virtual QVariant optionValue( const QString& ) const;
242   virtual void     setOptionValue( const QString&, const QVariant& );
243   virtual void     ensureVisible( QtxPreferenceItem* );
244
245 private:
246   void             updateTabs();
247
248 private:
249   QTabWidget*      myTabs;
250 };
251
252 class QTX_EXPORT QtxPagePrefFrameItem : public QtxPagePrefItem
253 {
254 public:
255   QtxPagePrefFrameItem( const QString&, QtxPreferenceItem* = 0,
256                         const QString& = QString(), const QString& = QString(), const bool = false );
257   virtual ~QtxPagePrefFrameItem();
258
259   virtual void     updateContents();
260
261   bool             stretch() const;
262   void             setStretch( const bool );
263
264   int              margin() const;
265   void             setMargin( const int );
266
267   int              spacing() const;
268   void             setSpacing( const int );
269
270   int              columns() const;
271   void             setColumns( const int );
272
273   Qt::Orientation  orientation() const;
274   void             setOrientation( const Qt::Orientation );
275
276 protected:
277   virtual QVariant optionValue( const QString& ) const;
278   virtual void     setOptionValue( const QString&, const QVariant& );
279
280   virtual void     widgetShown();
281
282 private:
283   void             updateFrame();
284
285 private:
286   QtxGridBox*      myBox;
287 };
288
289 class QTX_EXPORT QtxPagePrefGroupItem : public QtxPagePrefItem
290 {
291 public:
292   QtxPagePrefGroupItem( const QString&, QtxPreferenceItem* = 0,
293                         const QString& = QString(), const QString& = QString() );
294   QtxPagePrefGroupItem( const int, const QString&, QtxPreferenceItem* = 0,
295                         const QString& = QString(), const QString& = QString() );
296   virtual ~QtxPagePrefGroupItem();
297
298   virtual void     updateContents();
299
300   int              margin() const;
301   void             setMargin( const int );
302
303   int              spacing() const;
304   void             setSpacing( const int );
305
306   int              columns() const;
307   void             setColumns( const int );
308
309   Qt::Orientation  orientation() const;
310   void             setOrientation( const Qt::Orientation );
311
312   bool             isFlat() const;
313   void             setFlat( const bool );
314
315   virtual void     setResource( const QString&, const QString& );
316
317   virtual void     store();
318   virtual void     retrieve();
319
320   QtxGridBox*      gridBox() const;
321
322 protected:
323   virtual QVariant optionValue( const QString& ) const;
324   virtual void     setOptionValue( const QString&, const QVariant& );
325
326   virtual void     widgetShown();
327
328 private:
329   void             updateState();
330   void             updateGroup();
331
332 private:
333   QtxGridBox*      myBox;
334   QtxGroupBox*     myGroup;
335 };
336
337 class QTX_EXPORT QtxPagePrefLabelItem : public QtxPagePrefItem
338 {
339 public:
340   QtxPagePrefLabelItem( const QString&, QtxPreferenceItem* = 0 );
341   QtxPagePrefLabelItem( Qt::Alignment, const QString&, QtxPreferenceItem* = 0 );
342   virtual ~QtxPagePrefLabelItem();
343
344   virtual void      setTitle( const QString& );
345
346   Qt::Alignment     alignment() const;
347   void              setAlignment( Qt::Alignment );
348
349 protected:
350   virtual QVariant optionValue( const QString& ) const;
351   virtual void     setOptionValue( const QString&, const QVariant& );
352
353 private:
354   QPointer<QLabel>  myLabel;
355 };
356
357 class QTX_EXPORT QtxPagePrefSpaceItem : public QtxPagePrefItem
358 {
359 public:
360   QtxPagePrefSpaceItem( QtxPreferenceItem* = 0 );
361   QtxPagePrefSpaceItem( Qt::Orientation, QtxPreferenceItem* = 0 );
362   QtxPagePrefSpaceItem( const int, const int, QtxPreferenceItem* = 0 );
363   virtual ~QtxPagePrefSpaceItem();
364
365   int              size( Qt::Orientation ) const;
366   void             setSize( Qt::Orientation, const int );
367
368   int              stretch( Qt::Orientation ) const;
369   void             setStretch( Qt::Orientation, const int );
370
371 protected:
372   virtual QVariant optionValue( const QString& ) const;
373   virtual void     setOptionValue( const QString&, const QVariant& );
374
375 private:
376   void             initialize( const int, const int, const int, const int );
377 };
378
379 class QTX_EXPORT QtxPagePrefCheckItem : public QtxPagePrefItem
380 {
381 public:
382   QtxPagePrefCheckItem( const QString&, QtxPreferenceItem* = 0,
383                         const QString& = QString(), const QString& = QString() );
384   virtual ~QtxPagePrefCheckItem();
385
386   virtual void     setTitle( const QString& );
387
388   virtual void     store();
389   virtual void     retrieve();
390
391 private:
392   QCheckBox*       myCheck;
393 };
394
395 class QTX_EXPORT QtxPagePrefEditItem : public QtxPageNamedPrefItem
396 {
397 public:
398   typedef enum { String, Integer, Double } InputType;
399
400 public:
401   QtxPagePrefEditItem( const QString&, QtxPreferenceItem* = 0,
402                        const QString& = QString(), const QString& = QString() );
403   QtxPagePrefEditItem( const int, const QString&, QtxPreferenceItem* = 0,
404                        const QString& = QString(), const QString& = QString() );
405   virtual ~QtxPagePrefEditItem();
406
407   int              inputType() const;
408   void             setInputType( const int );
409
410   int              decimals() const;
411   void             setDecimals( const int );
412   
413   int              echoMode() const;
414   void             setEchoMode( const int );
415
416   virtual void     store();
417   virtual void     retrieve();
418
419 protected:
420   virtual QVariant optionValue( const QString& ) const;
421   virtual void     setOptionValue( const QString&, const QVariant& );
422
423 private:
424   void             updateEditor();
425
426 private:
427   int              myType;
428   int              myDecimals;
429   int              myEchoMode;
430   QLineEdit*       myEditor;
431 };
432
433 class QTX_EXPORT QtxPagePrefSliderItem : public QObject,public QtxPageNamedPrefItem
434 {
435   Q_OBJECT
436
437 public:
438   QtxPagePrefSliderItem( const QString&, QtxPreferenceItem* = 0,
439                          const QString& = QString(), const QString& = QString() );
440   virtual ~QtxPagePrefSliderItem();
441
442   int              singleStep() const;
443   int              pageStep() const;
444   int              minimum() const;
445   int              maximum() const;
446   QList<QIcon>     icons() const; 
447
448   void             setSingleStep( const int& );
449   void             setPageStep( const int& );
450   void             setMinimum( const int& );
451   void             setMaximum( const int& );
452   void             setIcons( const QList<QIcon>& );
453
454   virtual void     store();
455   virtual void     retrieve();
456
457 protected:
458   virtual QVariant optionValue( const QString& ) const;
459   virtual void     setOptionValue( const QString&, const QVariant& );
460
461 private slots:
462   void             setIcon( int );
463
464 private:
465   void             updateSlider();
466   void             setIcons( const QVariant& );
467
468 private:
469   QSlider*         mySlider;
470   QLabel*          myLabel;
471   QList<QIcon>     myIcons;
472 };
473
474 class QTX_EXPORT QtxPagePrefSelectItem : public QtxPageNamedPrefItem
475 {
476 public:
477   typedef enum { NoInput, String, Integer, Double } InputType;
478
479 public:
480   QtxPagePrefSelectItem( const QString&, QtxPreferenceItem* = 0,
481                          const QString& = QString(), const QString& = QString() );
482   QtxPagePrefSelectItem( const int, const QString&, QtxPreferenceItem* = 0,
483                          const QString& = QString(), const QString& = QString() );
484   virtual ~QtxPagePrefSelectItem();
485
486   int              inputType() const;
487   void             setInputType( const int );
488
489   QStringList      strings() const;
490   QList<QVariant>  numbers() const;
491   QList<QIcon>     icons() const;
492
493   void             setStrings( const QStringList& );
494   void             setNumbers( const QList<QVariant>& );
495   void             setIcons( const QList<QIcon>& );
496
497   virtual void     store();
498   virtual void     retrieve();
499
500 protected:
501   virtual QVariant optionValue( const QString& ) const;
502   virtual void     setOptionValue( const QString&, const QVariant& );
503
504 private:
505   void             updateSelector();
506   void             setStrings( const QVariant& );
507   void             setNumbers( const QVariant& );
508   void             setIcons( const QVariant& );
509
510 private:
511   int              myType;
512   QtxComboBox*     mySelector;
513 };
514
515 class QTX_EXPORT QtxPagePrefSpinItem : public QtxPageNamedPrefItem
516 {
517 public:
518   typedef enum { Integer, Double } InputType;
519
520 public:
521   QtxPagePrefSpinItem( const QString&, QtxPreferenceItem* = 0,
522                        const QString& = QString(), const QString& = QString() );
523   QtxPagePrefSpinItem( const int, const QString&, QtxPreferenceItem* = 0,
524                        const QString& = QString(), const QString& = QString() );
525   virtual ~QtxPagePrefSpinItem();
526
527   QVariant         step() const;
528   QVariant         precision() const;
529   QVariant         minimum() const;
530   QVariant         maximum() const;
531
532   QString          prefix() const;
533   QString          suffix() const;
534   QString          specialValueText() const;
535
536   void             setStep( const QVariant& );
537   void             setPrecision( const QVariant& );
538   void             setMinimum( const QVariant& );
539   void             setMaximum( const QVariant& );
540
541   void             setPrefix( const QString& );
542   void             setSuffix( const QString& );
543   void             setSpecialValueText( const QString& );
544
545   int              inputType() const;
546   void             setInputType( const int );
547
548   virtual void     store();
549   virtual void     retrieve();
550
551 protected:
552   virtual QVariant optionValue( const QString& ) const;
553   virtual void     setOptionValue( const QString&, const QVariant& );
554
555 private:
556   void             updateSpinBox();
557
558 private:
559   int              myType;
560 };
561
562 class QTX_EXPORT QtxPagePrefTextItem : public QtxPageNamedPrefItem
563 {
564 public:
565   QtxPagePrefTextItem( QtxPreferenceItem* = 0,
566                        const QString& = QString(), const QString& = QString() );
567   QtxPagePrefTextItem( const QString&, QtxPreferenceItem* = 0,
568                        const QString& = QString(), const QString& = QString() );
569   virtual ~QtxPagePrefTextItem();
570
571   virtual void     store();
572   virtual void     retrieve();
573
574 private:
575   QTextEdit*       myEditor;
576 };
577
578 class QTX_EXPORT QtxPagePrefColorItem : public QtxPageNamedPrefItem
579 {
580 public:
581   QtxPagePrefColorItem( const QString&, QtxPreferenceItem* = 0,
582                         const QString& = QString(), const QString& = QString() );
583   virtual ~QtxPagePrefColorItem();
584
585   virtual void     store();
586   virtual void     retrieve();
587
588 private:
589   QtxColorButton*  myColor;
590 };
591
592 class QTX_EXPORT QtxPagePrefBiColorItem : public QtxPageNamedPrefItem
593 {
594 public:
595   QtxPagePrefBiColorItem( const QString&, QtxPreferenceItem* = 0,
596                            const QString& = QString(), const QString& = QString() );
597   virtual ~QtxPagePrefBiColorItem();
598
599   virtual QString  text() const;
600   virtual void     setText( const QString& );
601
602   virtual void     store();
603   virtual void     retrieve();
604
605 protected:
606   virtual QVariant optionValue( const QString& ) const;
607   virtual void     setOptionValue( const QString&, const QVariant& );
608
609 private:
610   QtxBiColorTool*  myColors;
611 };
612
613 class QTX_EXPORT QtxPagePrefFontItem : public QObject, public QtxPageNamedPrefItem
614 {
615   Q_OBJECT
616
617 public:
618   QtxPagePrefFontItem( const int, const QString&, QtxPreferenceItem* = 0,
619                        const QString& = QString(), const QString& = QString() );
620   QtxPagePrefFontItem( const QString&, QtxPreferenceItem* = 0,
621                        const QString& = QString(), const QString& = QString() );
622   virtual ~QtxPagePrefFontItem();
623
624   int              features() const;
625   void             setFeatures( const int );
626
627   void             setMode( const int );
628   int              mode() const;
629
630   void             setFonts( const QStringList& );
631   QStringList      fonts() const;
632
633   void             setSizes( const QList<int>& = QList<int>() );
634   QList<int>       sizes() const;
635
636   virtual void     store();
637   virtual void     retrieve();
638
639 protected:
640   virtual QVariant optionValue( const QString& ) const;
641   virtual void     setOptionValue( const QString&, const QVariant& );
642
643 private:
644   QtxFontEdit*     myFont;
645 };
646
647 class QTX_EXPORT QtxPagePrefPathItem : public QtxPageNamedPrefItem
648 {
649 public:
650   QtxPagePrefPathItem( const Qtx::PathType, const QString&, QtxPreferenceItem* = 0,
651                        const QString& = QString(), const QString& = QString() );
652   QtxPagePrefPathItem( const QString&, QtxPreferenceItem* = 0,
653                        const QString& = QString(), const QString& = QString() );
654   virtual ~QtxPagePrefPathItem();
655
656   Qtx::PathType    pathType() const;
657   void             setPathType( const Qtx::PathType );
658
659   QString          pathFilter() const;
660   void             setPathFilter( const QString& );
661
662   virtual void     store();
663   virtual void     retrieve();
664
665 protected:
666   virtual QVariant optionValue( const QString& ) const;
667   virtual void     setOptionValue( const QString&, const QVariant& );
668
669 private:
670   QtxPathEdit*     myPath;
671 };
672
673 class QTX_EXPORT QtxPagePrefPathListItem : public QtxPageNamedPrefItem
674 {
675 public:
676   QtxPagePrefPathListItem( QtxPreferenceItem* = 0,
677                            const QString& = QString(), const QString& = QString() );
678   QtxPagePrefPathListItem( const QString&, QtxPreferenceItem* = 0,
679                            const QString& = QString(), const QString& = QString() );
680   QtxPagePrefPathListItem( const Qtx::PathType, const QString&, QtxPreferenceItem* = 0,
681                            const QString& = QString(), const QString& = QString() );
682   virtual ~QtxPagePrefPathListItem();
683
684   Qtx::PathType    pathType() const;
685   void             setPathType( const Qtx::PathType );
686
687   virtual void     store();
688   virtual void     retrieve();
689
690 protected:
691   virtual QVariant optionValue( const QString& ) const;
692   virtual void     setOptionValue( const QString&, const QVariant& );
693
694 private:
695   QtxPathListEdit* myPaths;
696 };
697
698 class QTX_EXPORT QtxPagePrefDateTimeItem : public QtxPageNamedPrefItem
699 {
700 public:
701   typedef enum { Date, Time, DateTime } InputType;
702
703 public:
704   QtxPagePrefDateTimeItem( const QString&, QtxPreferenceItem* = 0,
705                            const QString& = QString(), const QString& = QString() );
706   QtxPagePrefDateTimeItem( const int, const QString&, QtxPreferenceItem* = 0,
707                            const QString& = QString(), const QString& = QString() );
708   virtual ~QtxPagePrefDateTimeItem();
709
710   int              inputType() const;
711   void             setInputType( const int );
712
713   bool             calendar() const;
714   void             setCalendar( const bool );
715
716   QDate            maximumDate() const;
717   QTime            maximumTime() const;
718   QDate            minimumDate() const;
719   QTime            minimumTime() const;
720
721   void             setMaximumDate( const QDate& );
722   void             setMaximumTime( const QTime& );
723   void             setMinimumDate( const QDate& );
724   void             setMinimumTime( const QTime& );
725
726   virtual void     store();
727   virtual void     retrieve();
728
729 protected:
730   virtual QVariant optionValue( const QString& ) const;
731   virtual void     setOptionValue( const QString&, const QVariant& );
732
733 private:
734   void             updateDateTime();
735
736 private:
737   int              myType;
738   QDateTimeEdit*   myDateTime;
739 };
740
741 class QTX_EXPORT QtxPagePrefShortcutBtnsItem : public QtxPageNamedPrefItem
742 {
743 public:
744   QtxPagePrefShortcutBtnsItem( const QString&, QtxPreferenceItem* = 0,
745                                const QString& = QString(), const QString& = QString() );
746   virtual ~QtxPagePrefShortcutBtnsItem();
747   virtual void     store();
748   virtual void     retrieve();
749
750 private:
751   QtxShortcutEdit* myShortcut;
752 };
753
754 class QTX_EXPORT QtxPagePrefShortcutTreeItem : public QtxPageNamedPrefItem
755 {
756 public:
757   QtxPagePrefShortcutTreeItem( const QString&, QtxPreferenceItem* = 0, 
758                                const QString& = QString(), const QString& = QString() );
759   virtual ~QtxPagePrefShortcutTreeItem();
760   virtual void     store();
761   virtual void     retrieve();
762                                                                    
763 private:
764   QtxShortcutTree* myShortcutTree;
765   QString          mySection;
766 };
767
768 class QTX_EXPORT QtxPagePrefBackgroundItem : public QObject, public QtxPageNamedPrefItem
769 {
770   Q_OBJECT
771
772 public:
773   QtxPagePrefBackgroundItem( const QString&, QtxPreferenceItem* = 0,
774                              const QString& = QString(), const QString& = QString() );
775   virtual ~QtxPagePrefBackgroundItem();
776
777   void               gradients( QStringList&, QIntList& ) const;
778   void               setGradients( const QStringList&, const QIntList& = QIntList() );
779
780   bool               isModeAllowed( Qtx::BackgroundMode ) const;
781   void               setModeAllowed( Qtx::BackgroundMode, bool );
782
783   bool               isTextureModeAllowed( Qtx::TextureMode ) const;
784   void               setTextureModeAllowed( Qtx::TextureMode, bool );
785
786   bool               isTextureAllowed() const;
787   void               setTextureAllowed( bool );
788
789   QString            imageFormats() const;
790   void               setImageFormats( const QString& );
791
792   Qt::Orientation    orientation() const;
793   void               setOrientation( Qt::Orientation );
794
795   virtual void       store();
796   virtual void       retrieve();
797
798 protected:
799   virtual QVariant   optionValue( const QString& ) const;
800   virtual void       setOptionValue( const QString&, const QVariant& );
801
802 private:
803   QtxBackgroundTool* myBgTool;
804 };
805
806 class QtxUserDefinedContent: public QWidget
807 {
808  public:
809   QtxUserDefinedContent(QWidget* parent = 0, Qt::WindowFlags f = 0 ):QWidget(parent, f) {};
810   virtual void store(QtxResourceMgr* theRes, QtxPreferenceMgr* thePref) = 0;
811   virtual void retrieve(QtxResourceMgr* theRes, QtxPreferenceMgr* thePref) = 0;
812 };
813
814
815 class QTX_EXPORT QtxUserDefinedItem : public QtxPageNamedPrefItem
816 {
817 public:
818   QtxUserDefinedItem( QtxPreferenceItem* parent );
819
820   void setContent( QtxUserDefinedContent* theContent );
821
822   virtual void store();
823   virtual void retrieve();
824
825 protected:
826   virtual QVariant optionValue( const QString& theName ) const;
827   virtual void     setOptionValue( const QString& theName, const QVariant& theVal );
828
829 private:
830   QtxUserDefinedContent* myContent;
831 };
832
833 #endif