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