Salome HOME
Initial version
[modules/gui.git] / src / Qtx / QtxResourceEditor.h
1 // File:      QtxResourceEditor.h
2 // Created:   
3 // Author:    Sergey TELKOV
4 // Copyright: 
5
6 #ifndef QTXPREFERENCESEDITOR_H
7 #define QTXPREFERENCESEDITOR_H
8
9 #ifdef WIN32
10 #pragma warning( disable:4251 )
11 #endif
12
13
14 #include "Qtx.h"
15 #include "QtxResourceMgr.h"
16
17
18 class QString;
19
20 #include <qlist.h>
21 #include <qstringlist.h>
22
23 /*
24   Class: QtxResourceEditor
25   Descr: 
26 */
27
28 class QTX_EXPORT QtxResourceEditor
29 {
30 public:
31
32   class Tab;
33   class Item;
34   class Group;
35   class Category;
36
37   enum { Space, Bool, Color, String, List, RealSpin, IntegerSpin, RealEdit, IntegerEdit };
38
39 public:
40   QtxResourceEditor( QtxResourceMgr* );
41   virtual ~QtxResourceEditor();
42
43   int                  Add( const QString&, const QString&, const QString&,
44                             const QString&, const QString&, const int, const QString& );
45
46   void                 SetList( const int, const QValueList<int>&, const QStringList& );
47   void                 SetRange( const int, const double, const double, const double = 3, const double = -1 );
48   bool                 IsExist( const int, QString&, QString&, QString& ) const;
49
50   void                 SetColumns( const QString&, const QString&, const QString&, const int );
51
52   void                 SetTitle( const QString&, const QString& );
53   void                 SetTitle( const QString&, const QString&, const QString& );
54   void                 SetTitle( const QString&, const QString&, const QString&, const QString& );
55
56   void                 Store();
57   void                 Retrieve();
58
59   static int           GenerateId();
60
61   virtual void         Update();
62
63   QtxResourceMgr*      resMgr() const;
64
65 protected:
66   typedef QPtrList<Category> CategoryList;
67
68 protected:
69   virtual Category*    createCategory( const QString& ) = 0;
70   Category*            getCategory( const QString& ) const;
71   const CategoryList&  categories() const;
72
73   //typedef QPtrList<QtxResourceMgr>   ResMgrList;
74
75 private:
76   QtxResourceMgr*      myResMgr;
77   CategoryList         myCategories;
78 };
79
80 /*
81   Class: QtxResourceEditor::Item
82   Descr: Class for incapsulation of one preference item
83 */
84
85 class QtxResourceEditor::Item
86 {
87 public:
88   Item( QtxResourceEditor* );
89   virtual ~Item();
90
91   QString              Get( QString&, int&, QString& ) const;
92   virtual void         Set( const QString&, const QString&, const int, const QString& );
93   virtual void         Update();
94
95   int                  GetId() const;
96   int                  GetType() const;
97
98   virtual void         SetList( const QValueList<int>&, const QStringList& );
99   virtual void         SetRange( const double, const double, const double = 3, const double = -1 );
100
101   virtual void         Store() = 0;
102   virtual void         Retrieve() = 0;
103
104   bool                 GetInteger( const QString&, const QString&, int& ) const;
105   bool                 GetBoolean( const QString&, const QString&, bool& ) const;
106   bool                 GetDouble( const QString&, const QString&, double& ) const;
107   bool                 GetString( const QString&, const QString&, QString& ) const;
108   bool                 GetColor( const QString&, const QString&, QColor& ) const;
109   void                 SetInteger( const QString&, const QString&, const int );
110   void                 SetBoolean( const QString&, const QString&, const bool );
111   void                 SetDouble( const QString&, const QString&, const double );
112   void                 SetString( const QString&, const QString&, const QString& );
113   void                 SetColor( const QString&, const QString&, const QColor& );
114
115 private:
116   QtxResourceMgr*      resMgr() const;
117
118 private:
119   int                  myId, myType;
120   QString              myName, myLabel, mySection;
121   QtxResourceEditor*   myEditor;
122 };
123
124 /*
125   Class: QtxResourceEditor::Group
126   Descr: Class for incapsulation of one group of preferences (container of items)
127 */
128
129 class QtxResourceEditor::Group
130 {
131 public:
132   Group( const QString& );
133   virtual ~Group();
134
135   QString              GetName() const;
136   virtual void         SetName( const QString& );
137
138   virtual void         SetColumns( const int );
139   virtual void         SetTitle( const QString& );
140   virtual void         Update();
141
142   int                  Add( const QString&, const QString&, const int, const QString& );
143
144   void                 SetList( const int, const QValueList<int>&, const QStringList& );
145   void                 SetRange( const int, const double, const double, const double = 3, const double = -1 );
146
147   bool                 IsExist( const int ) const;
148
149   void                 Store();
150   void                 Retrieve();
151
152 protected:
153   virtual Item*        createItem( const int, const QString& = QString::null ) = 0;
154   Item*                getItem( const int ) const;
155
156 private:
157   QString              myName;
158   QPtrList<Item>       myItems;
159 };
160
161 /*
162   Class: QtxResourceEditor::Tab
163   Descr: Class for incapsulation of one set of preferences (container of groups)
164 */
165
166 class QtxResourceEditor::Tab
167 {
168 public:
169   Tab( const QString& );
170   virtual ~Tab();
171
172   QString              GetName() const;
173   int                  Add( const QString&, const QString&,
174                             const QString&, const int, const QString& );
175
176   virtual void         SetTitle( const QString& );
177   void                 SetTitle( const QString&, const QString& );
178
179   void                 SetColumns( const QString&, const int );
180
181   void                 SetList( const int, const QValueList<int>&, const QStringList& );
182   void                 SetRange( const int, const double, const double, const double = 3, const double = -1 );
183
184   bool                 IsExist( const int, QString& ) const;
185
186   void                 Store();
187   void                 Retrieve();
188
189   virtual void         Update();
190
191 protected:
192   virtual Group*       createGroup( const QString& ) = 0;
193   Group*               getGroup( const QString& ) const;
194
195 private:
196   QString              myName;
197   QPtrList<Group>      myGroups;
198 };
199
200 /*
201   Class: QtxResourceEditor::Category
202   Descr: Class for incapsulation of one set of tabs
203 */
204
205 class QtxResourceEditor::Category
206 {
207 public:
208   Category( const QString& );
209   virtual ~Category();
210
211   QString              GetName() const;
212   int                  Add( const QString&, const QString&, const QString&,
213                             const QString&, const int, const QString& );
214
215   virtual void         SetTitle( const QString& );
216   void                 SetTitle( const QString&, const QString& );
217   void                 SetTitle( const QString&, const QString&, const QString& );
218
219   void                 SetColumns( const QString&, const QString&, const int );
220
221   void                 SetList( const int, const QValueList<int>&, const QStringList& );
222   void                 SetRange( const int, const double, const double, const double = 3, const double = -1 );
223
224   bool                 IsExist( const int, QString&, QString& ) const;
225
226   void                 Store();
227   void                 Retrieve();
228
229   virtual void         Update();
230
231 protected:
232   virtual Tab*         createTab( const QString& ) = 0;
233   Tab*                 getTab( const QString& ) const;
234
235 private:
236   QString              myName;
237   QPtrList<Tab>        myTabs;
238 };
239
240 #ifdef WNT
241 #pragma warning( default:4251 )
242 #endif
243
244 #endif