Salome HOME
New item (FontItem), allowing to show information about font setting and to select...
[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   void            clear();
39
40   QString         currentSection() const;
41   void            setCurrentSection( const QString& );
42
43   bool            value( const QString&, int& ) const;
44   bool            value( const QString&, double& ) const;
45   bool            value( const QString&, bool& ) const;
46   bool            value( const QString&, QColor& ) const;
47   bool            value( const QString&, QFont& ) const;
48   bool            value( const QString&, QString&, const bool = true ) const;
49
50   bool            value( const QString&, const QString&, int& ) const;
51   bool            value( const QString&, const QString&, double& ) const;
52   bool            value( const QString&, const QString&, bool& ) const;
53   bool            value( const QString&, const QString&, QColor& ) const;
54   bool            value( const QString&, const QString&, QFont& ) const;  
55   bool            value( const QString&, const QString&, QString&, const bool = true ) const;
56
57   int             integerValue( const QString&, const int = 0 ) const;
58   double          doubleValue ( const QString&, const double = 0 ) const;
59   bool            booleanValue( const QString&, const bool = false ) const;
60   QColor          colorValue  ( const QString&, const QColor& = QColor() ) const;
61   QFont           fontValue   ( const QString&, const QFont& = QFont() ) const;
62   QString         stringValue ( const QString&, const char* = 0 ) const;
63
64   int             integerValue( const QString&, const QString&, const int = 0 ) const;
65   double          doubleValue ( const QString&, const QString&, const double = 0 ) const;
66   bool            booleanValue( const QString&, const QString&, const bool = false ) const;
67   QColor          colorValue  ( const QString&, const QString&, const QColor& = QColor() ) const;
68   QFont           fontValue   ( const QString&, const QString&, const QFont& = QFont() ) const;  
69   QString         stringValue ( const QString&, const QString&, const char* = 0 ) const;
70
71   bool            hasSection( const QString& ) const;
72   bool            hasValue( const QString& ) const;
73   bool            hasValue( const QString&, const QString& ) const;
74
75   void            setValue( const QString&, const int );
76   void            setValue( const QString&, const double );
77   void            setValue( const QString&, const bool );
78   void            setValue( const QString&, const QColor& );
79   void            setValue( const QString&, const QFont& );
80   void            setValue( const QString&, const QString& );
81
82   void            setValue( const QString&, const QString&, const int );
83   void            setValue( const QString&, const QString&, const double );
84   void            setValue( const QString&, const QString&, const bool );
85   void            setValue( const QString&, const QString&, const QColor& );
86   void            setValue( const QString&, const QString&, const QFont& );
87   void            setValue( const QString&, const QString&, const QString& );
88
89   void            remove( const QString& );
90   void            remove( const QString&, const QString& );
91   void            removeSection( const QString& );
92
93   QString         currentFormat() const;
94   void            setCurrentFormat( const QString& );
95
96   Format*         format( const QString& ) const;
97   void            installFormat( Format* );
98   void            removeFormat( Format* );
99
100   QStringList     options() const;
101   QString         option( const QString& ) const;
102   void            setOption( const QString&, const QString& );
103
104   QPixmap         defaultPixmap() const;
105   virtual void    setDefaultPixmap( const QPixmap& );
106
107   QString         resSection() const;
108   QString         langSection() const;
109
110   QPixmap         loadPixmap( const QString&, const QString& ) const;
111   QPixmap         loadPixmap( const QString&, const QString&, const bool ) const;
112   QPixmap         loadPixmap( const QString&, const QString&, const QPixmap& ) const;
113   void            loadLanguage( const QString& = QString::null, const QString& = QString::null );
114
115   void            raiseTranslators( const QString& );
116   void            removeTranslators( const QString& );
117   void            loadTranslator( const QString&, const QString& );
118
119   QString         path( const QString&, const QString&, const QString& ) const;
120
121   bool            load();
122   bool            save();
123
124   QStringList     sections() const;
125   QStringList     parameters( const QString& ) const;
126
127   void            refresh();
128
129 protected:
130   void            setDirList( const QStringList& );
131
132   virtual QString userFileName( const QString& ) const;
133   virtual QString globalFileName( const QString& ) const;
134
135 private:
136   void            initialize( const bool = true ) const;
137   QString         substMacro( const QString&, const QMap<QChar, QString>& ) const;
138
139 private:
140   typedef QPtrList<Resources>           ResList;
141   typedef QPtrList<Format>              FormatList;
142   typedef QMap<QString, QString>        OptionsMap;
143   typedef QPtrListIterator<Resources>   ResListIterator;
144   typedef QPtrListIterator<Format>      FormatListIterator;
145
146   typedef QPtrList<QTranslator>         TransList;
147   typedef QMap<QString, TransList>      TransListMap;
148   typedef QPtrListIterator<QTranslator> TransListIterator;
149
150 private:
151   QString         myAppName;
152   QStringList     myDirList;
153   FormatList      myFormats;
154   OptionsMap      myOptions;
155   ResList         myResources;
156   TransListMap    myTranslator;
157   QString         myCurSection;
158   QPixmap         myDefaultPix;
159 };
160
161 class QTX_EXPORT QtxResourceMgr::Format
162 {
163 public:
164   Format( const QString& );
165   ~Format();
166
167   QString                format() const;
168
169   QStringList            options() const;
170   QString                option( const QString& ) const;
171   void                   setOption( const QString&, const QString& );
172
173   bool                   load( Resources* );
174   bool                   save( Resources* );
175
176 protected:
177   virtual bool           load( const QString&, QMap<QString, Section>& ) = 0;
178   virtual bool           save( const QString&, const QMap<QString, Section>& ) = 0;
179
180 private:
181   QString                myFmt;
182   QMap<QString, QString> myOpt;
183 };
184
185 class QtxResourceMgr::Resources
186 {
187 public:
188   Resources( const QString& );
189   virtual ~Resources();
190
191   QString                file() const;
192   void                   setFile( const QString& );
193
194   QString                value( const QString&, const QString&, const bool ) const;
195   void                   setValue( const QString&, const QString&, const QString& );
196
197   bool                   hasSection( const QString& ) const;
198   bool                   hasValue( const QString&, const QString& ) const;
199
200   void                   removeSection( const QString& );
201   void                   removeValue( const QString&, const QString& );
202
203   QPixmap                loadPixmap( const QString&, const QString&, const QString& ) const;
204   QTranslator*           loadTranslator( const QString&, const QString&, const QString& ) const;
205
206   QString                environmentVariable( const QString&, int&, int& ) const;
207   QString                makeSubstitution( const QString&, const QString&, const QString& ) const;
208
209   void                   clear();
210
211   QStringList            sections() const;
212   QStringList            parameters( const QString& ) const;
213
214   QString                path( const QString&, const QString&, const QString& ) const;
215
216 private:
217   Section&               section( const QString& );
218   const Section&         section( const QString& ) const;
219
220   QString                fileName( const QString&, const QString&, const QString& ) const;
221
222 private:
223   QMap<QString, Section> mySections;
224   QString                myFileName;
225
226   friend class QtxResourceMgr::Format;
227 };
228
229 #endif