Documentation for OpenFLUID 2.2.2
Loading...
Searching...
No Matches
PreferencesManager.hpp
Go to the documentation of this file.
1/*
2
3 This file is part of OpenFLUID software
4 Copyright(c) 2021-2026, INRAE
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
52
53
54namespace 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
209
210 void setBuilderDockArea(int Area);
211
213
214 void setBuilderToolBarArea(int Area);
215
216
218
220
222
224
226
228
230
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
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)
void setWaresdevCurrentlineColor(const std::string &Color)
std::string getBuilderBeginDate() const
void setWaresdevAutomaticSaveBeforeBuild(bool AutoSave)
void setUILanguage(const std::string &Lang)
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
std::vector< std::string > getBuilderExtraExtensionsPaths() 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::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)
std::vector< std::string > getBuilderExtraObserversPaths() const
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)
static std::vector< std::string > getAvailableUILanguages()
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
std::vector< std::string > getBuilderExtraSimulatorsPaths() const
void setBuilderSkipGhostMigration(bool Skip)
void setWaresdevSyntaxHighlightingEnabled(bool Enabled)
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
std::vector< std::string > getWorkspacesPaths() 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
std::list< ExternalTool_t > getWaresdevExternalTools() const
void setWaresdevImportHubUsername(const std::string &Username)
bool isWaresdevShowCommandEnv(const std::string &Name) const
void addBuilderExtraObserversPath(const std::string &Path)
WindowGeometry_t getAppWindowGeometry(const std::string &AppSettings) const
void removeBuilderExtraExtensionsPath(const std::string &Path)
std::list< ExternalTool_t > getWaresdevExternalToolsInContext(const ExternalToolContext Context) const
#define OPENFLUID_API
Definition dllexport.hpp:86
std::uint64_t Duration_t
Definition TypeDefs.hpp:312
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