Salome HOME
Base class for resource editor and one completed implementation.
[modules/gui.git] / src / Qtx / QtxResourceEdit.h
1 // File:      QtxResourceEdit.h
2 // Author:    Sergey TELKOV
3
4 #ifndef QTXRESOURCEEDIT_H
5 #define QTXRESOURCEEDIT_H
6
7 #ifdef WIN32
8 #pragma warning( disable:4251 )
9 #endif
10
11 #include "Qtx.h"
12
13 class QString;
14 class QtxResourceMgr;
15
16 #include <qcolor.h>
17 #include <qvariant.h>
18
19 class QTX_EXPORT QtxResourceEdit
20 {
21 public:
22   class Item;
23
24   enum { Space, Bool, Color, String, List, RealSpin, IntegerSpin, RealEdit, IntegerEdit };
25
26 public:
27   QtxResourceEdit( QtxResourceMgr* );
28   virtual ~QtxResourceEdit();
29
30   QtxResourceMgr*      resourceMgr() const;
31
32   int                  addItem( const QString& label, const int pId = -1, const int = -1,
33                                 const QString& section = QString::null,
34                                 const QString& param = QString::null );
35
36   QVariant             property( const int, const QString& ) const;
37   void                 setProperty( const int, const QString&, const QVariant& );
38
39   virtual void         store();
40   virtual void         retrieve();
41
42   virtual void         update();
43
44   virtual void         toBackup();
45   virtual void         fromBackup();
46
47 protected:
48   Item*                item( const int ) const;
49   Item*                item( const QString& ) const;
50   Item*                item( const QString&, const int ) const;
51
52   virtual Item*        createItem( const QString&, const int ) = 0;
53
54   void                 resourceValues( QMap<int, QString>& ) const;
55   void                 resourceValues( QMap<Item*, QString>& ) const;
56
57   void                 setResourceValues( QMap<int, QString>& ) const;
58   void                 setResourceValues( QMap<Item*, QString>& ) const;
59   
60   void                 differentValues( const QMap<int, QString>&, const QMap<int, QString>&,
61                                         QMap<int, QString>&, const bool fromFirst = false ) const;
62   void                 differentValues( const QMap<Item*, QString>&, const QMap<Item*, QString>&,
63                                         QMap<Item*, QString>&, const bool fromFirst = false ) const;
64
65   virtual void         changedResources( const QMap<Item*, QString>& );
66
67 private:
68   void                 removeItem( Item* );
69   Item*                createItem( const QString&, const int, const int );
70
71 private:
72   typedef QMap<int, Item*> ItemMap;
73
74 private:
75   ItemMap              myItems;
76   QtxResourceMgr*      myResMgr;
77   QMap<Item*, QString> myBackup;
78
79   friend class QtxResourceEdit::Item;
80 };
81
82 /*
83   Class: QtxResourceEditor::Item
84   Descr: Class for incapsulation of one preference item
85 */
86
87 class QtxResourceEdit::Item
88 {
89 public:
90   Item( QtxResourceEdit*, Item* = 0 );
91   virtual ~Item();
92
93   int                  id() const;
94   virtual int          type() const = 0;
95
96   Item*                parentItem() const;
97   void                 childItems( QPtrList<Item>& ) const;
98
99   QString              title() const;
100   void                 resource( QString&, QString& ) const;
101
102   virtual void         setTitle( const QString& );
103   virtual void         setResource( const QString&, const QString& );
104
105   virtual void         update();
106
107   QVariant             property( const QString& ) const;
108   virtual void         setProperty( const QString&, const QVariant& );
109
110   virtual void         store() = 0;
111   virtual void         retrieve() = 0;
112
113   virtual Item*        createItem( const QString&, const int ) = 0;
114
115   QString              resourceValue() const;
116   void                 setResourceValue( const QString& );
117
118 protected:
119   QtxResourceMgr*      resourceMgr() const;
120   QtxResourceEdit*     resourceEdit() const;
121
122   int                  getInteger( const int = 0 ) const;
123   double               getDouble( const double = 0.0 ) const;
124   bool                 getBoolean( const bool = false ) const;
125   QColor               getColor( const QColor& = QColor() ) const;
126   QString              getString( const QString& = QString::null ) const;
127
128   void                 setInteger( const int );
129   void                 setDouble( const double );
130   void                 setBoolean( const bool );
131   void                 setColor( const QColor& );
132   void                 setString( const QString& );
133
134   Item*                item( const int ) const;
135   Item*                item( const QString& ) const;
136   Item*                item( const QString&, const int ) const;
137
138 protected:
139   typedef QPtrList<Item>         ItemList;
140   typedef QPtrListIterator<Item> ItemListIterator;
141
142 private:
143   static int           generateId();
144
145 private:
146   int                  myId;
147   Item*                myParent;
148   ItemList             myChildren;
149
150   QString              myTitle;
151   QString              myResSection;
152   QString              myResParameter;
153
154   QtxResourceEdit*     myEdit;
155 };
156
157 #ifdef WIN32
158 #pragma warning( default:4251 )
159 #endif
160
161 #endif