/* Object Viewer Qt Copyright (C) 2010 Dzmitry Kamiahin This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef CONFIGURATION_H #define CONFIGURATION_H #include // STL includes #include // NeL includes #include #include #include // Project includes #include "callback.h" #define NLQT_CONFIG_FILE "object_viewer.cfg" namespace NLQT { typedef CCallback CConfigCallback; /** @class CConfiguration @date 2010-02-05 15:44GMT @author Jan Boon (Kaetemi) @brief Read / write settings from the configuration file @details Load the configuration file, and then read/write settings. As well as automatic reading of the search paths and their sets. */ class CConfiguration { public: CConfiguration(); virtual ~CConfiguration(); void init(); void release(); void updateUtilities(); void configSearchPaths(); void configRemapExtensions(); void setAndCallback(const std::string &varName, CConfigCallback configCallback); void setCallback(const std::string &varName, CConfigCallback configCallback); void dropCallback(const std::string &varName); float getValue(const std::string &varName, float defaultValue); double getValue(const std::string &varName, double defaultValue); int getValue(const std::string &varName, int defaultValue); std::string getValue(const std::string &varName, const std::string &defaultValue); ucstring getValue(const std::string &varName, const ucstring &defaultValue); bool getValue(const std::string &varName, bool defaultValue); NLMISC::CRGBA getValue(const std::string &varName, const NLMISC::CRGBA &defaultValue); NLMISC::CRGBA getValue(const NLMISC::CConfigFile::CVar &var, const NLMISC::CRGBA &defaultValue); inline NLMISC::CConfigFile &getConfigFile() { return ConfigFile; } private: static void cbConfigCallback(NLMISC::CConfigFile::CVar &var); void cfcbSearchPaths(NLMISC::CConfigFile::CVar &var); CConfiguration(const CConfiguration &); CConfiguration &operator=(const CConfiguration &); NLMISC::CConfigFile ConfigFile; std::map ConfigCallbacks; };/* class CConfiguration */ } /* namespace NLQT */ #endif // CONFIGURATION_H