-#ifndef QTX_RESOURCEMGR_H
-#define QTX_RESOURCEMGR_H
+// Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// File: QtxResourceMgr.h
+// Author: Alexander SOLOVYOV, Sergey TELKOV
+//
+#ifndef QTXRESOURCEMGR_H
+#define QTXRESOURCEMGR_H
#include "Qtx.h"
-#include <qmap.h>
-#include <qcolor.h>
-#include <qpixmap.h>
-#include <qstringlist.h>
-#include <qtranslator.h>
+#ifndef QTX_NO_INDEXED_MAP
+#include "QtxMap.h"
+#endif
+
+#include <QMap>
+#include <QList>
+#include <QFont>
+#include <QColor>
+#include <QPixmap>
+#include <QByteArray>
+#include <QStringList>
+#include <QLinearGradient>
+#include <QRadialGradient>
+#include <QConicalGradient>
-class QPixmap;
+class QTranslator;
#ifdef WIN32
#pragma warning( disable:4251 )
class Resources;
public:
-
class Format;
- typedef QMap<QString, QString> Section;
+#ifdef QTX_NO_INDEXED_MAP
+ typedef QMap<QString, QString> Section; //!< resource section
+#else
+ typedef IMap<QString, QString> Section; //!< resource section
+#endif
+
+ //! Working mode; defines a way how resource manager handles user preferences
+ typedef enum {
+ AllowUserValues, //!< User values are processed by the resource manager
+ IgnoreUserValues //!< User values are ignored by the resource manager
+ } WorkingMode;
public:
- QtxResourceMgr( const QString&, const QString& = QString::null );
+ QtxResourceMgr( const QString&, const QString& = QString() );
virtual ~QtxResourceMgr();
- QString appName() const;
- QStringList dirList() const;
-
- void clear();
-
- QString currentSection() const;
- void setCurrentSection( const QString& );
-
- bool value( const QString&, int& ) const;
- bool value( const QString&, double& ) const;
- bool value( const QString&, bool& ) const;
- bool value( const QString&, QColor& ) const;
- bool value( const QString&, QString&, const bool = true ) const;
-
- bool value( const QString&, const QString&, int& ) const;
- bool value( const QString&, const QString&, double& ) const;
- bool value( const QString&, const QString&, bool& ) const;
- bool value( const QString&, const QString&, QColor& ) const;
- bool value( const QString&, const QString&, QString&, const bool = true ) const;
-
- int integerValue( const QString&, const int = 0 ) const;
- double doubleValue( const QString&, const double = 0 ) const;
- bool booleanValue( const QString&, const bool = false ) const;
- QColor colorValue( const QString&, const QColor& = QColor() ) const;
- QString stringValue( const QString&, const char* = 0 ) const;
-
- int integerValue( const QString&, const QString&, const int = 0 ) const;
- double doubleValue( const QString&, const QString&, const double = 0 ) const;
- bool booleanValue( const QString&, const QString&, const bool = false ) const;
- QColor colorValue( const QString&, const QString&, const QColor& = QColor() ) const;
- QString stringValue( const QString&, const QString&, const char* = 0 ) const;
-
- bool hasSection( const QString& ) const;
- bool hasValue( const QString& ) const;
- bool hasValue( const QString&, const QString& ) const;
-
- void setValue( const QString&, const int );
- void setValue( const QString&, const double );
- void setValue( const QString&, const bool );
- void setValue( const QString&, const QColor& );
- void setValue( const QString&, const QString& );
+ QString appName() const;
+ QStringList dirList() const;
+
+ bool checkExisting() const;
+ virtual void setCheckExisting( const bool );
+
+ bool isPixmapCached() const;
+ void setIsPixmapCached( const bool );
+
+ void clear();
+
+ WorkingMode workingMode() const;
+ WorkingMode setWorkingMode( WorkingMode );
+
+ bool value( const QString&, const QString&, int& ) const;
+ bool value( const QString&, const QString&, double& ) const;
+ bool value( const QString&, const QString&, bool& ) const;
+ bool value( const QString&, const QString&, QColor& ) const;
+ bool value( const QString&, const QString&, QFont& ) const;
+ bool value( const QString&, const QString&, QByteArray& ) const;
+ bool value( const QString&, const QString&, QLinearGradient& ) const;
+ bool value( const QString&, const QString&, QRadialGradient& ) const;
+ bool value( const QString&, const QString&, QConicalGradient& ) const;
+ bool value( const QString&, const QString&, Qtx::BackgroundData& ) const;
+ bool value( const QString&, const QString&, QString&, const bool = true ) const;
+
+ int integerValue( const QString&, const QString&, const int = 0 ) const;
+ double doubleValue( const QString&, const QString&, const double = 0 ) const;
+ bool booleanValue( const QString&, const QString&, const bool = false ) const;
+ QFont fontValue( const QString&, const QString&, const QFont& = QFont() ) const;
+ QColor colorValue( const QString&, const QString&, const QColor& = QColor() ) const;
+ QString stringValue( const QString&, const QString&, const QString& = QString(), const bool = true ) const;
+ QByteArray byteArrayValue( const QString&, const QString&, const QByteArray& = QByteArray() ) const;
+ QLinearGradient linearGradientValue( const QString&, const QString&, const QLinearGradient& = QLinearGradient() ) const;
+ QRadialGradient radialGradientValue( const QString&, const QString&, const QRadialGradient& = QRadialGradient() ) const;
+ QConicalGradient conicalGradientValue( const QString&, const QString&, const QConicalGradient& = QConicalGradient() ) const;
+ Qtx::BackgroundData backgroundValue( const QString&, const QString&, const Qtx::BackgroundData& = Qtx::BackgroundData() ) const;
+
+ bool hasSection( const QString& ) const;
+ bool hasValue( const QString&, const QString& ) const;
+
+ void setValue( const QString&, const QString&, const int );
+ void setValue( const QString&, const QString&, const double );
+ void setValue( const QString&, const QString&, const bool );
+ void setValue( const QString&, const QString&, const QFont& );
+ void setValue( const QString&, const QString&, const QColor& );
+ void setValue( const QString&, const QString&, const QString& );
+ void setValue( const QString&, const QString&, const QByteArray& );
+ void setValue( const QString&, const QString&, const QLinearGradient& );
+ void setValue( const QString&, const QString&, const QRadialGradient& );
+ void setValue( const QString&, const QString&, const QConicalGradient& );
+ void setValue( const QString&, const QString&, const Qtx::BackgroundData& );
+
+ void remove( const QString& );
+ void remove( const QString&, const QString& );
+
+ QString currentFormat() const;
+ void setCurrentFormat( const QString& );
+
+ Format* format( const QString& ) const;
+ void installFormat( Format* );
+ void removeFormat( Format* );
+
+ QStringList options() const;
+ QString option( const QString& ) const;
+ void setOption( const QString&, const QString& );
+
+ QStringList constants() const;
+ QString constant( const QString& ) const;
+ void setConstant( const QString&, const QString& );
+
+ QPixmap defaultPixmap() const;
+ virtual void setDefaultPixmap( const QPixmap& );
+
+ QString resSection() const;
+ QString langSection() const;
+ QString sectionsToken() const;
+
+ QPixmap loadPixmap( const QString&, const QString& ) const;
+ QPixmap loadPixmap( const QString&, const QString&, const bool ) const;
+ QPixmap loadPixmap( const QString&, const QString&, const QPixmap& ) const;
+ void loadLanguage( const QString& = QString(), const QString& = QString() );
+
+ void raiseTranslators( const QString& );
+ void removeTranslators( const QString& );
+ void loadTranslator( const QString&, const QString& );
+ void loadTranslators( const QString&, const QStringList& );
+ void addTranslator( const QString&, QTranslator* );
+
+ QString path( const QString&, const QString&, const QString& ) const;
+
+ bool load();
+ bool import( const QString& );
+ bool save();
+
+ QStringList sections() const;
+ QStringList sections(const QRegExp&) const;
+ QStringList sections(const QStringList&) const;
+ QStringList subSections(const QString&, const bool = true) const;
+ QStringList parameters( const QString& ) const;
+ QStringList parameters( const QStringList& ) const;
+
+ void refresh();
+
+ QString language( const QString& = QString() ) const;
- void setValue( const QString&, const QString&, const int );
- void setValue( const QString&, const QString&, const double );
- void setValue( const QString&, const QString&, const bool );
- void setValue( const QString&, const QString&, const QColor& );
- void setValue( const QString&, const QString&, const QString& );
-
- void remove( const QString& );
- void remove( const QString&, const QString& );
- void removeSection( const QString& );
-
- QString currentFormat() const;
- void setCurrentFormat( const QString& );
-
- Format* format( const QString& ) const;
- void installFormat( Format* );
- void removeFormat( Format* );
-
- QStringList options() const;
- QString option( const QString& ) const;
- void setOption( const QString&, const QString& );
-
- QPixmap defaultPixmap() const;
- virtual void setDefaultPixmap( const QPixmap& );
-
- QString resSection() const;
- QString langSection() const;
-
- QPixmap loadPixmap( const QString&, const QString& ) const;
- QPixmap loadPixmap( const QString&, const QString&, const bool ) const;
- QPixmap loadPixmap( const QString&, const QString&, const QPixmap& ) const;
- void loadLanguage( const QString& = QString::null, const QString& = QString::null );
-
- void raiseTranslators( const QString& );
- void removeTranslators( const QString& );
- void loadTranslator( const QString&, const QString& );
-
- QString path( const QString&, const QString&, const QString& ) const;
-
- bool load();
- bool save();
-
- QStringList sections() const;
- QStringList parameters( const QString& ) const;
+protected:
+ virtual QString defaultLanguage() const;
- void refresh();
+ virtual void setDirList( const QStringList& );
+ virtual void setResource( const QString&, const QString&, const QString& );
-protected:
- void setDirList( const QStringList& );
+ virtual QString userFileName( const QString&, const bool = true ) const;
+ virtual QString globalFileName( const QString& ) const;
- virtual QString userFileName( const QString& ) const;
- virtual QString globalFileName( const QString& ) const;
+ virtual void saved();
private:
- void initialize( const bool = true ) const;
- QString substMacro( const QString&, const QMap<QChar, QString>& ) const;
+ void initialize( const bool = true ) const;
+ QString substMacro( const QString&, const QMap<QChar, QString>& ) const;
private:
- typedef QPtrList<Resources> ResList;
- typedef QPtrList<Format> FormatList;
- typedef QMap<QString, QString> OptionsMap;
- typedef QPtrListIterator<Resources> ResListIterator;
- typedef QPtrListIterator<Format> FormatListIterator;
-
- typedef QPtrList<QTranslator> TransList;
- typedef QMap<QString, TransList> TransListMap;
- typedef QPtrListIterator<QTranslator> TransListIterator;
+ typedef QList<Resources*> ResList;
+ typedef QList<QTranslator*> TransList;
+ typedef QList<Format*> FormatList;
+ typedef QMap<QString, QString> OptionsMap;
+ typedef QMap<QString, TransList> TransListMap;
private:
- QString myAppName;
- QStringList myDirList;
- FormatList myFormats;
- OptionsMap myOptions;
- ResList myResources;
- TransListMap myTranslator;
- QString myCurSection;
- QPixmap myDefaultPix;
+ QString myAppName; //!< application name
+ QStringList myDirList; //!< list of resources directories
+ FormatList myFormats; //!< list of formats
+ OptionsMap myOptions; //!< options map
+ OptionsMap myConstants; //!< constants map
+ ResList myResources; //!< resources list
+ bool myCheckExist; //!< "check existance" flag
+ TransListMap myTranslator; //!< map of loaded translators
+ QPixmap* myDefaultPix; //!< default icon
+ bool myIsPixmapCached; //!< "cached pixmaps" flag
+
+ bool myHasUserValues; //!< \c true if user preferences has been read
+ WorkingMode myWorkingMode; //!< working mode
+
+ friend class QtxResourceMgr::Format;
};
class QTX_EXPORT QtxResourceMgr::Format
{
public:
Format( const QString& );
- ~Format();
+ virtual ~Format();
QString format() const;
virtual bool save( const QString&, const QMap<QString, Section>& ) = 0;
private:
- QString myFmt;
- QMap<QString, QString> myOpt;
+ QString myFmt; //!< format name
+ QMap<QString, QString> myOpt; //!< options map
};
-class QtxResourceMgr::Resources
-{
-public:
- Resources( const QString& );
- virtual ~Resources();
-
- QString file() const;
- void setFile( const QString& );
-
- QString value( const QString&, const QString&, const bool ) const;
- void setValue( const QString&, const QString&, const QString& );
-
- bool hasSection( const QString& ) const;
- bool hasValue( const QString&, const QString& ) const;
-
- void removeSection( const QString& );
- void removeValue( const QString&, const QString& );
-
- QPixmap loadPixmap( const QString&, const QString&, const QString& ) const;
- QTranslator* loadTranslator( const QString&, const QString&, const QString& ) const;
-
- QString environmentVariable( const QString&, int&, int& ) const;
- QString makeSubstitution( const QString&, const QString&, const QString& ) const;
-
- void clear();
-
- QStringList sections() const;
- QStringList parameters( const QString& ) const;
-
- QString path( const QString&, const QString&, const QString& ) const;
-
-private:
- Section& section( const QString& );
- const Section& section( const QString& ) const;
-
- QString fileName( const QString&, const QString&, const QString& ) const;
-
-private:
- QMap<QString, Section> mySections;
- QString myFileName;
-
- friend class QtxResourceMgr::Format;
-};
-
-#endif
+#endif // QTXRESOURCEMGR_H