Documentation for OpenFLUID 2.2.0
PreferencesManager.hpp
Go to the documentation of this file.
1 /*
2 
3  This file is part of OpenFLUID software
4  Copyright(c) 2007, INRA - Montpellier SupAgro
5 
6 
7  == GNU General Public License Usage ==
8 
9  OpenFLUID is free software: you can redistribute it and/or modify
10  it under the terms of the GNU General Public License as published by
11  the Free Software Foundation, either version 3 of the License, or
12  (at your option) any later version.
13 
14  OpenFLUID is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU General Public License for more details.
18 
19  You should have received a copy of the GNU General Public License
20  along with OpenFLUID. If not, see <http://www.gnu.org/licenses/>.
21 
22 
23  == Other Usage ==
24 
25  Other Usage means a use of OpenFLUID that is inconsistent with the GPL
26  license, and requires a written agreement between You and INRA.
27  Licensees for Other Usage of OpenFLUID may use this file in accordance
28  with the terms contained in the written agreement between You and INRA.
29 
30 */
31 
32 /**
33  @file PreferencesManager.hpp
34 
35  @author Jean-Christophe Fabre <jean-christophe.fabre@inra.fr>
36  @author Aline LIBRES <libres@supagro.inra.fr>
37  @author Dorian GERARDIN <dorian.gerardin@inrae.fr>
38  */
39 
40 #ifndef __OPENFLUID_BASE_PREFERENCESMANAGER_HPP__
41 #define __OPENFLUID_BASE_PREFERENCESMANAGER_HPP__
42 
43 
44 #include <map>
45 #include <vector>
46 #include <string>
47 
51 #include <openfluid/dllexport.hpp>
52 
53 
54 namespace openfluid { namespace base {
55 
56 
57 // =====================================================================
58 // =====================================================================
59 
60 
62 {
63 
65 
66 
67  private:
68 
69  static std::string m_SettingsFile;
70 
71  std::unique_ptr<openfluid::tools::SettingsBackend> m_Settings;
72 
74 
76  { }
77 
78  void updateSettingsFile(const std::string& FilePath) const;
79 
80  void loadSettings();
81 
82  void setDefaultValues();
83 
84  void setBuilderExtraPaths(const std::string& Key, const std::vector<std::string>& Paths);
85 
86  void addBuilderExtraPath(const std::string& Key, const std::string& Path);
87 
88  void removeBuilderExtraPath(const std::string& Key, const std::string& Path);
89 
90  std::vector<std::string> getBuilderExtraPaths(const std::string& Key) const;
91 
92  static std::string guessLanguage();
93 
94 
95  public:
96 
98  {
99  std::string Color;
100  std::vector<std::string> Decoration;
101  };
102 
103  enum class ExternalToolContext { WORKSPACE, WARE, FILE };
104 
106  {
107  std::string Name;
108 
109  std::map<ExternalToolContext,std::string> Commands;
110 
111  std::string getCommand(ExternalToolContext Ctxt) const
112  {
113  auto it = Commands.find(Ctxt);
114  if (it != Commands.end())
115  {
116  return (*it).second;
117  }
118  return "";
119  }
120  };
121 
122  typedef std::map<std::string, SyntaxHighlightingRule_t> SyntaxHighlightingRules_t;
123 
125  {
126  int X = 0;
127  int Y = 0;
128 
129  int Width = 0;
130  int Height = 0;
131 
132  bool ValidPosition = false;
133  bool ValidSize = false;
134  };
135 
136 
137  /**
138  Used only if another file is used as the settings file
139  instead of the default one (e.g. for testing). To be set before the first call of instance().
140  */
141  static void setSettingsFile(const std::string& FilePath);
142 
143  std::string getSettingsFile() const;
144 
145 
146  void setUILanguage(const std::string& Lang);
147 
148  std::string getUILanguage() const;
149 
150  static std::vector<std::string> getAvailableUILanguages();
151 
152  static bool isUILanguageAvailable(const std::string& Lang);
153 
154 
155  void setWorkspacesPaths(const std::vector<std::string>& Paths);
156 
157  std::vector<std::string> getWorkspacesPaths() const;
158 
159  std::string getCurrentWorkspacePath() const;
160 
161 
162  void setAppWindowGeometry(const std::string& AppSettings, const WindowGeometry_t& Geometry);
163 
164  WindowGeometry_t getAppWindowGeometry(const std::string& AppSettings) const;
165 
166 
167  void setBuilderExtraSimulatorsPaths(const std::vector<std::string>& Paths);
168 
169  void addBuilderExtraSimulatorsPath(const std::string& Path);
170 
171  void removeBuilderExtraSimulatorsPath(const std::string& Path);
172 
173  std::vector<std::string> getBuilderExtraSimulatorsPaths() const;
174 
175 
176  void setBuilderExtraExtensionsPaths(const std::vector<std::string>& Paths);
177 
178  void addBuilderExtraExtensionsPath(const std::string& Path);
179 
180  void removeBuilderExtraExtensionsPath(const std::string& Path);
181 
182  std::vector<std::string> getBuilderExtraExtensionsPaths() const;
183 
184 
185  void setBuilderExtraObserversPaths(const std::vector<std::string>& Paths);
186 
187  void addBuilderExtraObserversPath(const std::string& Path);
188 
189  void removeBuilderExtraObserversPath(const std::string& Path);
190 
191  std::vector<std::string> getBuilderExtraObserversPaths() const;
192 
193 
195 
197 
198 
199  void setBuilderBeginDate(const std::string& Begin);
200 
201  std::string getBuilderBeginDate() const;
202 
203  void setBuilderEndDate(const std::string& End);
204 
205  std::string getBuilderEndDate() const;
206 
207 
208  int getBuilderDockArea() const;
209 
210  void setBuilderDockArea(int Area);
211 
213 
214  void setBuilderToolBarArea(int Area);
215 
216 
218 
219  void setBuilderWareRemovalConfirm(bool Confirm);
220 
222 
223  void setBuilderParamRemovalConfirm(bool Confirm);
224 
226 
227  void setBuilderWaresWatchersActive(bool Active);
228 
230 
231  void setBuilderAutomaticSaveBeforeRun(bool AutoSave);
232 
234 
236 
238 
240 
242 
244 
246 
248 
249 
251 
253 
254  std::list<ExternalTool_t> getWaresdevExternalTools() const;
255 
256  std::list<ExternalTool_t> getWaresdevExternalToolsInContext(const ExternalToolContext Context) const;
257 
258  void setWaresdevExternalTools(const std::list<ExternalTool_t>& Tools);
259 
260  void setWaresdevTextEditorDefaults(bool ForceReset);
261 
263 
265 
267 
269 
271 
273 
274  std::string getWaresdevCurrentlineColor() const;
275 
276  void setWaresdevCurrentlineColor(const std::string& Color);
277 
278  std::string getWaresdevFontName() const;
279 
280  void setWaresdevFontName(const std::string& FontName);
281 
283 
284  void setWaresdevLineWrappingEnabled(bool Enabled);
285 
287 
289 
291 
293 
295 
296  void setWaresdevIndentSpaceNb(int SpaceNumber);
297 
298  std::string getWaresdevConfigureEnv(const std::string& Name) const;
299 
300  void setWaresdevConfigureEnv(const std::string& Name, const std::string& Value);
301 
302  std::string getWaresdevConfigureOptions() const;
303 
304  void setWaresdevConfigureOptions(const std::string& Options);
305 
306  std::string getWaresdevConfigureGenerator() const;
307 
308  void setWaresdevConfigureGenerator(const std::string& Generator);
309 
310  std::string getWaresdevBuildEnv(const std::string& Name) const;
311 
312  void setWaresdevBuildEnv(const std::string& Name, const std::string& Value);
313 
314  bool isWaresdevShowCommandEnv(const std::string& Name) const;
315 
316  void setWaresdevShowCommandEnv(const std::string& Name, bool Enabled);
317 
319 
320  void setWaresdevGitSslNoVerify(bool NoVerify);
321 
323 
324  void setWaresdevCheckoutCurrentVersion(bool CheckoutCurrentVersion);
325 
326  std::string getWaresdevImportHubUrl() const;
327 
328  void setWaresdevImportHubUrl(const std::string& Url);
329 
330  std::string getWaresdevImportHubUsername() const;
331 
332  void setWaresdevImportHubUsername(const std::string& Username);
333 };
334 
335 
336 } } //namespaces
337 
338 
339 #endif /* __OPENFLUID_BASE_PREFERENCESMANAGER_HPP__ */
#define OPENFLUID_SINGLETON_DEFINITION(T)
Definition: SingletonMacros.hpp:55
Definition: PreferencesManager.hpp:62
void removeBuilderExtraObserversPath(const std::string &Path)
void addBuilderExtraSimulatorsPath(const std::string &Path)
std::list< ExternalTool_t > getWaresdevExternalToolsInContext(const ExternalToolContext Context) const
void setWaresdevCurrentlineColor(const std::string &Color)
std::string getBuilderBeginDate() const
void setWaresdevAutomaticSaveBeforeBuild(bool AutoSave)
void setUILanguage(const std::string &Lang)
std::vector< std::string > getBuilderExtraObserversPaths() const
void setBuilderParamRemovalConfirm(bool Confirm)
void setWaresdevLineWrappingEnabled(bool Enabled)
static bool isUILanguageAvailable(const std::string &Lang)
SyntaxHighlightingRules_t getWaresdevSyntaxHighlightingRules() const
void setWaresdevConfigureEnv(const std::string &Name, const std::string &Value)
void setBuilderSpatialAttrsRemovalConfirm(bool Confirm)
std::string getCurrentWorkspacePath() const
void setWaresdevIndentSpaceNb(int SpaceNumber)
void removeBuilderExtraSimulatorsPath(const std::string &Path)
std::string getWaresdevBuildEnv(const std::string &Name) const
void setBuilderBeginDate(const std::string &Begin)
void setWaresdevBuildEnv(const std::string &Name, const std::string &Value)
void setBuilderExtraObserversPaths(const std::vector< std::string > &Paths)
bool isBuilderSpatialUnitsRemovalConfirm() const
bool isWaresdevSyntaxHighlightingEnabled() const
void setBuilderAutomaticSaveBeforeRun(bool AutoSave)
bool isBuilderSpatialConnsRemovalConfirm() const
std::list< ExternalTool_t > getWaresdevExternalTools() const
std::string getBuilderEndDate() const
std::string getSettingsFile() const
void addBuilderExtraExtensionsPath(const std::string &Path)
void setWaresdevConfigureGenerator(const std::string &Generator)
ExternalToolContext
Definition: PreferencesManager.hpp:103
openfluid::core::Duration_t getBuilderDeltaT() const
void setWaresdevConfigureOptions(const std::string &Options)
void setBuilderSpatialUnitsRemovalConfirm(bool Confirm)
std::string getWaresdevConfigureGenerator() const
void setWorkspacesPaths(const std::vector< std::string > &Paths)
void setBuilderEndDate(const std::string &End)
std::string getWaresdevFontName() const
std::string getWaresdevCurrentlineColor() const
std::string getWaresdevConfigureOptions() const
void setBuilderDeltaT(openfluid::core::Duration_t DeltaT)
void setWaresdevCarriageReturnDisplayEnabled(bool Enabled)
void setWaresdevSpaceTabDisplayEnabled(bool Enabled)
void setWaresdevShowCommandEnv(const std::string &Name, bool Enabled)
void setWaresdevTextEditorDefaults(bool ForceReset)
bool isWaresdevCarriageReturnDisplayEnabled() const
void setWaresdevCheckoutCurrentVersion(bool CheckoutCurrentVersion)
bool isBuilderSpatialAttrsRemovalConfirm() const
std::string getWaresdevImportHubUsername() const
void setBuilderWareRemovalConfirm(bool Confirm)
void setWaresdevExternalTools(const std::list< ExternalTool_t > &Tools)
static void setSettingsFile(const std::string &FilePath)
void setWaresdevSyntaxHighlightingRules(const SyntaxHighlightingRules_t &Rules)
void setWaresdevFontName(const std::string &FontName)
std::map< std::string, SyntaxHighlightingRule_t > SyntaxHighlightingRules_t
Definition: PreferencesManager.hpp:122
void setBuilderSpatialConnsRemovalConfirm(bool Confirm)
void setWaresdevGitSslNoVerify(bool NoVerify)
bool isWaresdevCurrentlineHighlightingEnabled() const
void setBuilderSkipGhostMigration(bool Skip)
static std::vector< std::string > getAvailableUILanguages()
void setWaresdevSyntaxHighlightingEnabled(bool Enabled)
std::vector< std::string > getBuilderExtraExtensionsPaths() const
void setBuilderExtraExtensionsPaths(const std::vector< std::string > &Paths)
void setBuilderExtraSimulatorsPaths(const std::vector< std::string > &Paths)
void setBuilderWaresWatchersActive(bool Active)
void setWaresdevCurrentlineHighlightingEnabled(bool Enabled)
std::string getWaresdevImportHubUrl() const
void setWaresdevImportHubUrl(const std::string &Url)
void setAppWindowGeometry(const std::string &AppSettings, const WindowGeometry_t &Geometry)
std::string getWaresdevConfigureEnv(const std::string &Name) const
void setWaresdevImportHubUsername(const std::string &Username)
bool isWaresdevShowCommandEnv(const std::string &Name) const
void addBuilderExtraObserversPath(const std::string &Path)
std::vector< std::string > getBuilderExtraSimulatorsPaths() const
WindowGeometry_t getAppWindowGeometry(const std::string &AppSettings) const
std::vector< std::string > getWorkspacesPaths() const
void removeBuilderExtraExtensionsPath(const std::string &Path)
#define OPENFLUID_API
Definition: dllexport.hpp:86
std::uint64_t Duration_t
Definition: TypeDefs.hpp:312
FilesystemPath Path
Definition: FilesystemPath.hpp:308
Definition: ApplicationException.hpp:47
Definition: PreferencesManager.hpp:106
std::map< ExternalToolContext, std::string > Commands
Definition: PreferencesManager.hpp:109
std::string Name
Definition: PreferencesManager.hpp:107
std::string getCommand(ExternalToolContext Ctxt) const
Definition: PreferencesManager.hpp:111
std::vector< std::string > Decoration
Definition: PreferencesManager.hpp:100
std::string Color
Definition: PreferencesManager.hpp:99
Definition: PreferencesManager.hpp:125