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