Salome HOME
6855f22b6aa585377352fa215ca0a742f98c4039
[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 #include <qfont.h>
19
20 class QTX_EXPORT QtxResourceEdit
21 {
22 public:
23   class Item;
24
25 public:
26   QtxResourceEdit( QtxResourceMgr* );
27   virtual ~QtxResourceEdit();
28
29   QtxResourceMgr*      resourceMgr() const;
30
31   virtual int          addItem( const QString& label, const int pId = -1, const int = -1,
32                                 const QString& section = QString::null,
33                                 const QString& param = QString::null );
34
35   QVariant             itemProperty( const int, const QString& ) const;
36   virtual void         setItemProperty( const int, const QString&, const QVariant& );
37
38   void                 resource( const int, QString&, QString& ) const;
39
40   virtual void         store();
41   virtual void         retrieve();
42
43   virtual void         update();
44
45   virtual void         toBackup();
46   virtual void         fromBackup();
47
48 protected:
49   Item*                item( const int ) const;
50   Item*                item( const QString& ) const;
51   Item*                item( const QString&, const int ) const;
52
53   virtual Item*        createItem( const QString&, const int ) = 0;
54
55   void                 resourceValues( QMap<int, QString>& ) const;
56   void                 resourceValues( QMap<Item*, QString>& ) const;
57
58   void                 setResourceValues( QMap<int, QString>& ) const;
59   void                 setResourceValues( QMap<Item*, QString>& ) const;
60   
61   void                 differentValues( const QMap<int, QString>&, const QMap<int, QString>&,
62                                         QMap<int, QString>&, const bool fromFirst = false ) const;
63   void                 differentValues( const QMap<Item*, QString>&, const QMap<Item*, QString>&,
64                                         QMap<Item*, QString>&, const bool fromFirst = false ) const;
65
66   virtual void         changedResources( const QMap<Item*, QString>& );
67
68   virtual void         itemAdded( Item* );
69   virtual void         itemRemoved( Item* );
70
71   void                 childItems( QPtrList<Item>& ) const;
72
73 private:
74   void                 removeItem( Item* );
75   Item*                createItem( const QString&, const int, const int );
76
77 private:
78   typedef QMap<int, Item*> ItemMap;
79
80 private:
81   ItemMap              myItems;
82   QtxResourceMgr*      myResMgr;
83   QMap<Item*, QString> myBackup;
84   QPtrList<Item>       myChildren;
85
86   friend class QtxResourceEdit::Item;
87 };
88
89 /*
90   Class: QtxResourceEditor::Item
91   Descr: Class for incapsulation of one preference item
92 */
93
94 class QTX_EXPORT QtxResourceEdit::Item
95 {
96 public:
97   Item( QtxResourceEdit*, Item* = 0 );
98   virtual ~Item();
99
100   int                  id() const;
101   virtual int          type() const = 0;
102
103   Item*                parentItem() const;
104   void                 childItems( QPtrList<Item>& ) const;
105
106   virtual bool         isEmpty() const;
107
108   QString              title() const;
109   void                 resource( QString&, QString& ) const;
110
111   virtual void         setTitle( const QString& );
112   virtual void         setResource( const QString&, const QString& );
113
114   virtual void         update();
115
116   QVariant             property( const QString& ) const;
117   virtual void         setProperty( const QString&, const QVariant& );
118
119   virtual void         store() = 0;
120   virtual void         retrieve() = 0;
121
122   virtual Item*        createItem( const QString&, const int ) = 0;
123
124   QString              resourceValue() const;
125   void                 setResourceValue( const QString& );
126
127   virtual void         insertChild( Item* );
128   virtual void         removeChild( Item* );
129
130 protected:
131   QtxResourceMgr*      resourceMgr() const;
132   QtxResourceEdit*     resourceEdit() const;
133
134   int                  getInteger( const int = 0 ) const;
135   double               getDouble( const double = 0.0 ) const;
136   bool                 getBoolean( const bool = false ) const;
137   QColor               getColor( const QColor& = QColor() ) const;
138   QFont                getFont( const QFont& = QFont() ) const;
139   QString              getString( const QString& = QString::null ) const;
140
141   void                 setInteger( const int );
142   void                 setDouble( const double );
143   void                 setBoolean( const bool );
144   void                 setColor( const QColor& );
145   void                 setFont( const QFont& );  
146   void                 setString( const QString& );
147
148   Item*                item( const int ) const;
149   Item*                item( const QString& ) const;
150   Item*                item( const QString&, const int ) const;
151
152 protected:
153   typedef QPtrList<Item>         ItemList;
154   typedef QPtrListIterator<Item> ItemListIterator;
155
156 private:
157   static int           generateId();
158
159 private:
160   int                  myId;
161   Item*                myParent;
162   ItemList             myChildren;
163
164   QString              myTitle;
165   QString              myResSection;
166   QString              myResParameter;
167
168   QtxResourceEdit*     myEdit;
169 };
170
171 #ifdef WIN32
172 #pragma warning( default:4251 )
173 #endif
174
175 #endif