Salome HOME
Modify default icon for the module
[modules/gui.git] / src / Qtx / QtxResourceMgr.h
1 #ifndef QTX_RESOURCEMGR_H
2 #define QTX_RESOURCEMGR_H
3
4 #include "Qtx.h"
5
6 #include <qmap.h>
7 #include <qcolor.h>
8 #include <qstringlist.h>
9 #include <qtranslator.h>
10
11 class QPixmap;
12
13 #ifdef WIN32
14 #pragma warning( disable:4251 )
15 #endif
16
17 class QTX_EXPORT QtxResourceMgr
18 {
19   class IniFormat;
20   class XmlFormat;
21   class Resources;
22
23 public:
24
25   class Format;
26
27   typedef QMap<QString, QString> Section;
28
29 public:
30   QtxResourceMgr( const QString&, const QString& = QString::null );
31   virtual ~QtxResourceMgr();
32
33   QString         appName() const;
34   QStringList     dirList() const;
35
36   void            clear();
37
38   QString         currentSection() const;
39   void            setCurrentSection( const QString& );
40
41   bool            value( const QString&, int& ) const;
42   bool            value( const QString&, double& ) const;
43   bool            value( const QString&, bool& ) const;
44   bool            value( const QString&, QColor& ) const;
45   bool            value( const QString&, QString&, const bool = true ) const;
46
47   bool            value( const QString&, const QString&, int& ) const;
48   bool            value( const QString&, const QString&, double& ) const;
49   bool            value( const QString&, const QString&, bool& ) const;
50   bool            value( const QString&, const QString&, QColor& ) const;
51   bool            value( const QString&, const QString&, QString&, const bool = true ) const;
52
53   int             integerValue( const QString&, const int = 0 ) const;
54   double          doubleValue( const QString&, const double = 0 ) const;
55   bool            booleanValue( const QString&, const bool = false ) const;
56   QColor          colorValue( const QString&, const QColor& = QColor() ) const;
57   QString         stringValue( const QString&, const char* = 0 ) const;
58
59   int             integerValue( const QString&, const QString&, const int = 0 ) const;
60   double          doubleValue( const QString&, const QString&, const double = 0 ) const;
61   bool            booleanValue( const QString&, const QString&, const bool = false ) const;
62   QColor          colorValue( const QString&, const QString&, const QColor& = QColor() ) const;
63   QString         stringValue( const QString&, const QString&, const char* = 0 ) const;
64
65   bool            hasSection( const QString& ) const;
66   bool            hasValue( const QString& ) const;
67   bool            hasValue( const QString&, const QString& ) const;
68
69   void            setValue( const QString&, const int );
70   void            setValue( const QString&, const double );
71   void            setValue( const QString&, const bool );
72   void            setValue( const QString&, const QColor& );
73   void            setValue( const QString&, const QString& );
74
75   void            setValue( const QString&, const QString&, const int );
76   void            setValue( const QString&, const QString&, const double );
77   void            setValue( const QString&, const QString&, const bool );
78   void            setValue( const QString&, const QString&, const QColor& );
79   void            setValue( const QString&, const QString&, const QString& );
80
81   void            remove( const QString& );
82   void            remove( const QString&, const QString& );
83   void            removeSection( const QString& );
84
85   QString         currentFormat() const;
86   void            setCurrentFormat( const QString& );
87
88   Format*         format( const QString& ) const;
89   void            installFormat( Format* );
90   void            removeFormat( Format* );
91
92   QStringList     options() const;
93   QString         option( const QString& ) const;
94   void            setOption( const QString&, const QString& );
95
96   QString         resSection() const;
97   QString         langSection() const;
98
99   QPixmap         loadPixmap( const QString&, const QString&, const bool = true ) const;
100   void            loadLanguage( const QString& = QString::null, const QString& = QString::null );
101
102   void            raiseTranslators( const QString& );
103   void            removeTranslators( const QString& );
104   void            loadTranslator( const QString&, const QString& );
105
106   QString         path( const QString&, const QString&, const QString& ) const;
107
108   bool            load();
109   bool            save();
110
111   QStringList     sections() const;
112   QStringList     parameters( const QString& ) const;
113
114   void            refresh();
115
116 protected:
117   void            setDirList( const QStringList& );
118
119   virtual QString userFileName( const QString& ) const;
120   virtual QString globalFileName( const QString& ) const;
121
122 private:
123   void            initialize( const bool = true ) const;
124   QString         substMacro( const QString&, const QMap<QChar, QString>& ) const;
125
126 private:
127   typedef QPtrList<Resources>           ResList;
128   typedef QPtrList<Format>              FormatList;
129   typedef QMap<QString, QString>        OptionsMap;
130   typedef QPtrListIterator<Resources>   ResListIterator;
131   typedef QPtrListIterator<Format>      FormatListIterator;
132
133   typedef QPtrList<QTranslator>         TransList;
134   typedef QMap<QString, TransList>      TransListMap;
135   typedef QPtrListIterator<QTranslator> TransListIterator;
136
137 private:
138   QString         myAppName;
139   QStringList     myDirList;
140   FormatList      myFormats;
141   OptionsMap      myOptions;
142   ResList         myResources;
143   TransListMap    myTranslator;
144   QString         myCurSection;
145 };
146
147 class QTX_EXPORT QtxResourceMgr::Format
148 {
149 public:
150   Format( const QString& );
151   ~Format();
152
153   QString                format() const;
154
155   QStringList            options() const;
156   QString                option( const QString& ) const;
157   void                   setOption( const QString&, const QString& );
158
159   bool                   load( Resources* );
160   bool                   save( Resources* );
161
162 protected:
163   virtual bool           load( const QString&, QMap<QString, Section>& ) = 0;
164   virtual bool           save( const QString&, const QMap<QString, Section>& ) = 0;
165
166 private:
167   QString                myFmt;
168   QMap<QString, QString> myOpt;
169 };
170
171 class QtxResourceMgr::Resources
172 {
173 public:
174   Resources( const QString& );
175   virtual ~Resources();
176
177   QString                file() const;
178   void                   setFile( const QString& );
179
180   QString                value( const QString&, const QString&, const bool ) const;
181   void                   setValue( const QString&, const QString&, const QString& );
182
183   bool                   hasSection( const QString& ) const;
184   bool                   hasValue( const QString&, const QString& ) const;
185
186   void                   removeSection( const QString& );
187   void                   removeValue( const QString&, const QString& );
188
189   QPixmap                loadPixmap( const QString&, const QString&, const QString& ) const;
190   QTranslator*           loadTranslator( const QString&, const QString&, const QString& ) const;
191
192   QString                environmentVariable( const QString&, int&, int& ) const;
193   QString                makeSubstitution( const QString&, const QString&, const QString& ) const;
194
195   void                   clear();
196
197   QStringList            sections() const;
198   QStringList            parameters( const QString& ) const;
199
200   QString                path( const QString&, const QString&, const QString& ) const;
201
202 private:
203   Section&               section( const QString& );
204   const Section&         section( const QString& ) const;
205
206   QString                fileName( const QString&, const QString&, const QString& ) const;
207
208 private:
209   QMap<QString, Section> mySections;
210   QString                myFileName;
211
212   friend class QtxResourceMgr::Format;
213 };
214
215 #endif