]> SALOME platform Git repositories - modules/gui.git/blob - src/Qtx/QtxPreferenceMgr.h
Salome HOME
[bos #42871] Clipping plane remains applied after being deleted
[modules/gui.git] / src / Qtx / QtxPreferenceMgr.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:      QtxPreferenceMgr.h
21 // Author:    Sergey TELKOV
22 //
23 #ifndef QTXPREFERENCEMGR_H
24 #define QTXPREFERENCEMGR_H
25
26 #ifdef WIN32
27 #pragma warning( disable:4251 )
28 #endif
29
30 #include "Qtx.h"
31
32 #include <QFont>
33 #include <QIcon>
34 #include <QColor>
35 #include <QVariant>
36
37 class QtxResourceMgr;
38 class QtxPreferenceMgr;
39
40 class QTX_EXPORT QtxPreferenceItem
41 {
42   class Updater;
43
44 public:
45   QtxPreferenceItem( QtxPreferenceItem* = 0 );
46   QtxPreferenceItem( const QString&, QtxPreferenceItem* );
47   QtxPreferenceItem( const QString&, const QString&, const QString&, QtxPreferenceItem* );
48   virtual ~QtxPreferenceItem();
49
50   int                       id() const;
51   virtual int               rtti() const;
52
53   QtxPreferenceItem*        rootItem() const;
54   QtxPreferenceItem*        parentItem() const;
55   QList<QtxPreferenceItem*> childItems( const bool = false ) const;
56
57   int                       depth() const;
58   int                       count() const;
59   virtual bool              isEmpty() const;
60
61   void                      appendItem( QtxPreferenceItem* );
62   void                      removeItem( QtxPreferenceItem* );
63   void                      insertItem( QtxPreferenceItem*, QtxPreferenceItem* = 0 );
64
65   QIcon                     icon() const;
66   QString                   title() const;
67   void                      resource( QString&, QString& ) const;
68
69   virtual void              setIcon( const QIcon& );
70   virtual void              setTitle( const QString& );
71   virtual void              setResource( const QString&, const QString& );
72
73   virtual void              updateContents();
74
75   QVariant                  option( const QString& ) const;
76   void                      setOption( const QString&, const QVariant& );
77
78   bool                      isEvaluateValues() const;
79   void                      setEvaluateValues( const bool );
80
81   bool                      isRestartRequired() const;
82   void                      setRestartRequired( const bool );
83
84   virtual void              store() = 0;
85   virtual void              retrieve() = 0;
86   virtual void              retrieveDefault();
87
88   QString                   resourceValue() const;
89   void                      setResourceValue( const QString& );
90
91   QtxPreferenceItem*        findItem( const int, const bool = false ) const;
92   QtxPreferenceItem*        findItem( const QString&, const bool = false ) const;
93   QtxPreferenceItem*        findItem( const QString&, const int, const bool = false ) const;
94
95   virtual QtxResourceMgr*   resourceMgr() const;
96   virtual QtxPreferenceMgr* preferenceMgr() const;
97
98   virtual void              activate();
99   void                      ensureVisible();
100
101   static int                RTTI();
102
103 protected:
104   int                       getInteger( const int = 0 ) const;
105   double                    getDouble( const double = 0.0 ) const;
106   bool                      getBoolean( const bool = false ) const;
107   QColor                    getColor( const QColor& = QColor() ) const;
108   QFont                     getFont( const QFont& = QFont() ) const;
109   QString                   getString( const QString& = QString() ) const;
110
111   void                      setInteger( const int );
112   void                      setDouble( const double );
113   void                      setBoolean( const bool );
114   void                      setColor( const QColor& );
115   void                      setFont( const QFont& );
116   void                      setString( const QString& );
117
118   virtual void              itemAdded( QtxPreferenceItem* );
119   virtual void              itemRemoved( QtxPreferenceItem* );
120   virtual void              itemChanged( QtxPreferenceItem* );
121
122   virtual void              ensureVisible( QtxPreferenceItem* );
123
124   void                      sendItemChanges();
125
126   virtual void              triggerUpdate();
127
128   virtual QVariant          optionValue( const QString& ) const;
129   virtual void              setOptionValue( const QString&, const QVariant& );
130
131 protected:
132   typedef QList<QtxPreferenceItem*> ItemList;
133
134 private:
135   static int                generateId();
136
137 private:
138   int                       myId;
139   QtxPreferenceItem*        myParent;
140   ItemList                  myChildren;
141
142   bool                      myEval;
143   bool                      myRestartNeeded;
144   QIcon                     myIcon;
145   QString                   myTitle;
146   QString                   mySection;
147   QString                   myParameter;
148 };
149
150 class QTX_EXPORT QtxPreferenceMgr : public QtxPreferenceItem
151 {
152 public:
153   QtxPreferenceMgr( QtxResourceMgr* );
154   virtual ~QtxPreferenceMgr();
155
156   virtual QtxResourceMgr*   resourceMgr() const;
157   virtual QtxPreferenceMgr* preferenceMgr() const;
158
159   QVariant                  option( const int, const QString& ) const;
160   void                      setOption( const int, const QString&, const QVariant& );
161
162   virtual void              store();
163   virtual void              retrieve();
164   virtual void              retrieveDefault();
165
166   virtual void              update();
167
168   virtual void              toBackup();
169   virtual void              fromBackup();
170
171 protected:
172   typedef QMap<QtxPreferenceItem*, QString> ResourceMap;
173
174   void                      resourceValues( QMap<int, QString>& ) const;
175   void                      resourceValues( ResourceMap& ) const;
176
177   void                      setResourceValues( QMap<int, QString>& ) const;
178   void                      setResourceValues( ResourceMap& ) const;
179
180   void                      differentValues( const QMap<int, QString>&, const QMap<int, QString>&,
181                                              QMap<int, QString>&, const bool fromFirst = false ) const;
182   void                      differentValues( const ResourceMap&, const ResourceMap&,
183                                              ResourceMap&, const bool fromFirst = false ) const;
184
185   virtual void              changedResources( const ResourceMap& );
186
187 private:
188   QtxResourceMgr*           myResMgr;
189   ResourceMap               myBackup;
190 };
191
192 #ifdef WIN32
193 #pragma warning( default:4251 )
194 #endif
195
196 #endif