guicommon/PreferencesManager.hpp

Go to the documentation of this file.
00001 /*
00002  This file is part of OpenFLUID software
00003  Copyright (c) 2007-2010 INRA-Montpellier SupAgro
00004 
00005 
00006  == GNU General Public License Usage ==
00007 
00008  OpenFLUID is free software: you can redistribute it and/or modify
00009  it under the terms of the GNU General Public License as published by
00010  the Free Software Foundation, either version 3 of the License, or
00011  (at your option) any later version.
00012 
00013  OpenFLUID is distributed in the hope that it will be useful,
00014  but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016  GNU General Public License for more details.
00017 
00018  You should have received a copy of the GNU General Public License
00019  along with OpenFLUID.  If not, see <http://www.gnu.org/licenses/>.
00020 
00021  In addition, as a special exception, INRA gives You the additional right
00022  to dynamically link the code of OpenFLUID with code not covered
00023  under the GNU General Public License ("Non-GPL Code") and to distribute
00024  linked combinations including the two, subject to the limitations in this
00025  paragraph. Non-GPL Code permitted under this exception must only link to
00026  the code of OpenFLUID dynamically through the OpenFLUID libraries
00027  interfaces, and only for building OpenFLUID plugins. The files of
00028  Non-GPL Code may be link to the OpenFLUID libraries without causing the
00029  resulting work to be covered by the GNU General Public License. You must
00030  obey the GNU General Public License in all respects for all of the
00031  OpenFLUID code and other code used in conjunction with OpenFLUID
00032  except the Non-GPL Code covered by this exception. If you modify
00033  this OpenFLUID, you may extend this exception to your version of the file,
00034  but you are not obligated to do so. If you do not wish to provide this
00035  exception without modification, you must delete this exception statement
00036  from your version and license this OpenFLUID solely under the GPL without
00037  exception.
00038 
00039 
00040  == Other Usage ==
00041 
00042  Other Usage means a use of OpenFLUID that is inconsistent with the GPL
00043  license, and requires a written agreement between You and INRA.
00044  Licensees for Other Usage of OpenFLUID may use this file in accordance
00045  with the terms contained in the written agreement between You and INRA.
00046  */
00047 
00055 #ifndef __PREFERENCESMANAGER_HPP__
00056 #define __PREFERENCESMANAGER_HPP__
00057 
00058 #include <openfluid/dllexport.hpp>
00059 
00060 #include <glibmm/keyfile.h>
00061 #include <map>
00062 #include <iostream>
00063 
00064 namespace openfluid { namespace guicommon {
00065 
00066 // =====================================================================
00067 // =====================================================================
00068 
00069 
00070 class DLLEXPORT PreferencesManager
00071 {
00072   private:
00073 
00074     static PreferencesManager* mp_Instance;
00075 
00076     static std::string m_FileName;
00077 
00078     Glib::KeyFile* mp_KFile;
00079 
00080     PreferencesManager();
00081 
00082     void setDefaultValues();
00083 
00084     void loadKeyFile();
00085 
00086   public:
00087 
00088     typedef std::map<std::string, std::string> MarketPlaces_t;
00089 
00090     static PreferencesManager* getInstance();
00091 
00092     ~PreferencesManager();
00093 
00094     bool save();
00095 
00096     /* Used only if we want to set another file name for the conf file
00097      * instead of the default one (for tests eg.)
00098      * To be set before the first call of getInstance().
00099      */
00100     static void setFileName(Glib::ustring AbsoluteFileName);
00101     std::string getFileName();
00102 
00103     bool isValidKey(std::string Group, std::string Key);
00104 
00105     void setLang(Glib::ustring Lang);
00106     Glib::ustring getLang();
00107 
00108     void setRecentMax(unsigned int RecentMax);
00109     int getRecentMax();
00110 
00111     bool
00112     addRecentProject(std::string ProjectPath, std::string ProjectName = "");
00113     void clearRecentProjects();
00114     std::vector<std::pair<std::string, std::string> > getRecentProjects();
00115 
00116     void setWorkdir(Glib::ustring Workdir);
00117     Glib::ustring getWorkdir();
00118 
00119     void setExtraPlugPaths(std::vector<Glib::ustring> ExtraPlugPaths);
00120     void addExtraPlugPath(Glib::ustring Path);
00121     void removeExtraPlugPath(Glib::ustring Path);
00122     std::vector<Glib::ustring> getExtraPlugPaths();
00123 
00124     void setDeltaT(unsigned int DeltaT);
00125     int getDeltaT();
00126 
00127     void setBegin(std::string Begin);
00128     std::string getBegin();
00129 
00130     void setEnd(std::string End);
00131     std::string getEnd();
00132 
00133     void setOutFilesBufferInKB(unsigned int Buffer);
00134     int getOutFilesBufferInKB();
00135 
00136     bool
00137     addMarketplace(Glib::ustring PlaceName, Glib::ustring PlaceUrl);
00138     void removeMarketplace(Glib::ustring PlaceName);
00139     MarketPlaces_t getMarketplaces();
00140 
00141     std::string getPluginValue(std::string PluginName, std::string Key);
00142     void setPluginValue(std::string PluginName, std::string Key,
00143         std::string Value);
00144 
00145 };
00146 
00147 } } //namespaces
00148 
00149 #endif /* __PREFERENCESMANAGER_HPP__ */

Generated using Doxygen 1.7.3
Creative Commons License Creative Commons By-NC-ND license