]> SALOME platform Git repositories - modules/gui.git/blob - src/Qtx/QtxResourceEdit.h
Salome HOME
New item (FontItem), allowing to show information about font setting and to select...
[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             property( const int, const QString& ) const;
36   virtual void         setProperty( 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 private:
69   void                 removeItem( Item* );
70   Item*                createItem( const QString&, const int, const int );
71
72 private:
73   typedef QMap<int, Item*> ItemMap;
74
75 private:
76   ItemMap              myItems;
77   QtxResourceMgr*      myResMgr;
78   QMap<Item*, QString> myBackup;
79
80   friend class QtxResourceEdit::Item;
81 };
82
83 /*
84   Class: QtxResourceEditor::Item
85   Descr: Class for incapsulation of one preference item
86 */
87
88 class QtxResourceEdit::Item
89 {
90 public:
91   Item( QtxResourceEdit*, Item* = 0 );
92   virtual ~Item();
93
94   int                  id() const;
95   virtual int          type() const = 0;
96
97   Item*                parentItem() const;
98   void                 childItems( QPtrList<Item>& ) const;
99
100   QString              title() const;
101   void                 resource( QString&, QString& ) const;
102
103   virtual void         setTitle( const QString& );
104   virtual void         setResource( const QString&, const QString& );
105
106   virtual void         update();
107
108   QVariant             property( const QString& ) const;
109   virtual void         setProperty( const QString&, const QVariant& );
110
111   virtual void         store() = 0;
112   virtual void         retrieve() = 0;
113
114   virtual Item*        createItem( const QString&, const int ) = 0;
115
116   QString              resourceValue() const;
117   void                 setResourceValue( const QString& );
118
119 protected:
120   QtxResourceMgr*      resourceMgr() const;
121   QtxResourceEdit*     resourceEdit() const;
122
123   int                  getInteger( const int = 0 ) const;
124   double               getDouble( const double = 0.0 ) const;
125   bool                 getBoolean( const bool = false ) const;
126   QColor               getColor( const QColor& = QColor() ) const;
127   QFont                getFont( const QFont& = QFont() ) const;
128   QString              getString( const QString& = QString::null ) const;
129
130   void                 setInteger( const int );
131   void                 setDouble( const double );
132   void                 setBoolean( const bool );
133   void                 setColor( const QColor& );
134   void                 setFont( const QFont& );  
135   void                 setString( const QString& );
136
137   Item*                item( const int ) const;
138   Item*                item( const QString& ) const;
139   Item*                item( const QString&, const int ) const;
140
141 protected:
142   typedef QPtrList<Item>         ItemList;
143   typedef QPtrListIterator<Item> ItemListIterator;
144
145 private:
146   static int           generateId();
147
148 private:
149   int                  myId;
150   Item*                myParent;
151   ItemList             myChildren;
152
153   QString              myTitle;
154   QString              myResSection;
155   QString              myResParameter;
156
157   QtxResourceEdit*     myEdit;
158 };
159
160 #ifdef WIN32
161 #pragma warning( default:4251 )
162 #endif
163
164 #endif