Salome HOME
engineIOR() made pure virtual, to avoid serious logical errors
[modules/gui.git] / src / SalomeApp / SalomeApp_ResourceEditor.h
1 // File:      SalomeApp_ResourceEditor.h
2 // Created:   
3 // Author:    Alexander Sladkov
4 // Copyright: 
5
6 #ifndef SALOMEAPP_RESOURCEEDITOR_H
7 #define SALOMEAPP_RESOURCEEDITOR_H
8
9 #include <qmap.h>
10 #include <qframe.h>
11 #include <qgroupbox.h>
12 #include <qtabwidget.h>
13 #include <qpushbutton.h>
14
15 class QLabel;
16 class QListBox;
17 class QSpinBox;
18 class QLineEdit;
19 class QCheckBox;
20 class QComboBox;
21 class QWidgetStack;
22
23 class QtxDblSpinBox;
24
25 /*
26   Class: SalomeApp_ResourceEditor
27   Descr: GUI implementation of QtxResourceEditor - manager of resources
28 */
29
30 #include <SalomeApp.h>
31 #include <QtxDialog.h>
32 #include <QtxResourceEditor.h>
33
34 class SALOMEAPP_EXPORT SalomeApp_ResourceEditor :
35   public QtxDialog, public QtxResourceEditor
36 {
37   Q_OBJECT
38
39 public:
40   class PrefTab;
41   class PrefGroup;
42   class PrefCategory;
43
44   class Spacing;
45   class ListItem;
46   class ColorItem;
47   class StateItem;
48   class StringItem;
49   class DoubleSpinItem;
50   class DoubleEditItem;
51   class DataDoubleEditItem;
52   class IntegerSpinItem;
53   class IntegerEditItem;
54
55 public:
56   SalomeApp_ResourceEditor( QtxResourceMgr*, QWidget* = 0 );
57   virtual ~SalomeApp_ResourceEditor();
58
59   virtual void           show();
60   virtual void           accept();
61   virtual void           reject();
62
63 private slots:
64   void                   onHelp();
65   void                   onApply();
66   //void                   onDefault();
67   void                   onSelectionChanged();
68
69 protected:
70   virtual Category*      createCategory( const QString& );
71   virtual void           updateViewer();
72
73   void                   setTabOrder( QObject*, ... );
74   void                   setTabOrder( const QObjectList& );
75
76 private:
77   QListBox*              mypCatList;
78   QWidgetStack*          mypCatStack;
79 };
80
81 class SalomeApp_ResourceEditor::Spacing : public Item
82 {
83 public:
84   Spacing( SalomeApp_ResourceEditor*, QWidget* = 0 );
85   virtual ~Spacing();
86
87   virtual void           Store();
88   virtual void           Retrieve();
89 };
90
91 class SalomeApp_ResourceEditor::ListItem : public Item
92 {
93 public:
94   ListItem( SalomeApp_ResourceEditor*, QWidget* = 0 );
95   virtual ~ListItem();
96
97   virtual void           Set( const QString&, const QString&, const int, const QString& );
98   virtual void           SetList( const QValueList<int>&, const QStringList& );
99   virtual void           Store();
100   virtual void           Retrieve();
101
102 private:
103   QLabel*                mypName;
104   QComboBox*             mypList;
105   QMap<int, int>         myIndex;
106 };
107
108
109 class SalomeApp_ResourceEditor::ColorItem : public Item
110 {
111 public:
112   ColorItem( SalomeApp_ResourceEditor*, QWidget* = 0 );
113   virtual ~ColorItem();
114
115   virtual void           Set( const QString&, const QString&, const int, const QString& );
116   virtual void           Store();
117   virtual void           Retrieve();
118
119 private:
120   QLabel*                mypName;
121   QPushButton*           mypColor;
122 };
123
124
125 class SalomeApp_ResourceEditor::StateItem : public Item
126 {
127 public:
128   StateItem( SalomeApp_ResourceEditor*, QWidget* = 0 );
129   virtual ~StateItem();
130
131   virtual void           Set( const QString&, const QString&, const int, const QString& );
132   virtual void           Store();
133   virtual void           Retrieve();
134
135 private:
136   QLabel*                mypName;
137   QCheckBox*             mypState;
138 };
139
140
141 class SalomeApp_ResourceEditor::StringItem : public Item
142 {
143 public:
144   StringItem( SalomeApp_ResourceEditor*, QWidget* = 0 );
145   virtual ~StringItem();
146
147   virtual void           Set( const QString&, const QString&, const int, const QString& );
148   virtual void           Store();
149   virtual void           Retrieve();
150
151 private:
152   QLabel*                mypName;
153   QLineEdit*             mypString;
154 };
155
156
157 class SalomeApp_ResourceEditor::DoubleSpinItem : public Item
158 {
159 public:
160   DoubleSpinItem( SalomeApp_ResourceEditor*, QWidget* = 0 );
161   virtual ~DoubleSpinItem();
162
163   virtual void           Set( const QString&, const QString&, const int, const QString& );
164   virtual void           SetRange( const double, const double, const double = 3, const double = -1 );
165   virtual void           Store();
166   virtual void           Retrieve();
167
168 private:
169   QLabel*                mypName;
170   QtxDblSpinBox*         mypDouble;
171 };
172
173
174 class SalomeApp_ResourceEditor::DoubleEditItem : public Item
175 {
176 public:
177   DoubleEditItem( SalomeApp_ResourceEditor*, QWidget* = 0);
178   virtual ~DoubleEditItem();
179
180   virtual void           Set( const QString&, const QString&, const int, const QString& );
181   virtual void           Store();
182   virtual void           Retrieve();
183
184 private:
185   QLabel*                mypName;
186   QLineEdit*             mypDouble;
187 };
188
189
190 class SalomeApp_ResourceEditor::IntegerSpinItem : public Item
191 {
192 public:
193   IntegerSpinItem( SalomeApp_ResourceEditor*, QWidget* = 0 );
194   virtual ~IntegerSpinItem();
195
196   virtual void           Set( const QString&, const QString&, const int, const QString& );
197   virtual void           SetRange( const double, const double, const double = 3, const double = -1 );
198   virtual void           Store();
199   virtual void           Retrieve();
200
201 private:
202   QLabel*                mypName;
203   QSpinBox*              mypInteger;
204 };
205
206
207 class SalomeApp_ResourceEditor::IntegerEditItem : public Item
208 {
209 public:
210   IntegerEditItem( SalomeApp_ResourceEditor*, QWidget* = 0 );
211   virtual ~IntegerEditItem();
212
213   virtual void           Set( const QString&, const QString&, const int, const QString& );
214   virtual void           Store();
215   virtual void           Retrieve();
216
217 private:
218   QLabel*                mypName;
219   QLineEdit*             mypInteger;
220 };
221
222 class SalomeApp_ResourceEditor::PrefGroup : public QGroupBox, public Group
223 {
224 public:
225   PrefGroup( const QString&, SalomeApp_ResourceEditor*, QWidget* = 0 );
226   virtual ~PrefGroup();
227
228   virtual void           SetColumns( const int );
229   virtual void           SetTitle( const QString& );
230
231 protected:
232   virtual Item*          createItem( const int, const QString& = QString::null );
233
234 private:
235   SalomeApp_ResourceEditor* myEditor;
236 };
237
238
239 class SalomeApp_ResourceEditor::PrefTab : public QFrame, public Tab
240 {
241 public:
242   PrefTab( const QString&, SalomeApp_ResourceEditor*, QTabWidget* );
243   virtual ~PrefTab();
244
245   virtual void           SetTitle( const QString& );
246
247   void                   adjustLabels();
248
249 protected:
250   virtual Group*         createGroup( const QString& );
251
252 private:
253   QTabWidget*               mypTabWidget;
254   QGroupBox*                mypMainFrame;
255   SalomeApp_ResourceEditor* myEditor;
256 };
257
258
259 class SalomeApp_ResourceEditor::PrefCategory : public QTabWidget, public Category
260 {
261 public:
262   PrefCategory( const QString&, SalomeApp_ResourceEditor*, QListBox*, QWidgetStack* );
263   virtual ~PrefCategory();
264
265   virtual void           SetTitle( const QString& );
266
267   void                   adjustLabels();
268
269 protected:
270   virtual Tab*           createTab( const QString& );
271
272 private:
273   QListBox*                 mypListBox;
274   QWidgetStack*             mypWidgetStack;
275   SalomeApp_ResourceEditor* myEditor;
276 };
277
278
279 class ColorButton : public QPushButton
280 {
281   Q_OBJECT
282
283 public:
284   ColorButton( QWidget* = 0 );
285   virtual ~ColorButton();
286
287 private slots:
288   void            onColor();
289 };
290
291 #endif