RumPi Linux Client 1.0
A wxWidgets desktop dashboard that visualizes a RumPi robot's live sensor data as a condition-reactive scene
ClientConfig.h
Go to the documentation of this file.
1#pragma once
2
3#include <wx/string.h>
4#include <wx/colour.h>
5
6//Defaults - these are also written into the seeded config file so the user sees editable starting values.
7//static gives each including .cpp its own internal-linkage copy. The numeric consts get that automatically
8//(a const-qualified type has internal linkage), but a "const char*" is a non-const pointer to const char, so
9//without static those would have external linkage and collide when this header is included by more than one .cpp.
10static const char* CLIENTCONFIG_DEFAULT_LOCATION_NAME = "Greenview";
11static const char* CLIENTCONFIG_DEFAULT_IMAGES_FOLDER = "~/rumpi_images";
12static const long CLIENTCONFIG_DEFAULT_ANIMATION_FPS = 20;
13static const double CLIENTCONFIG_DEFAULT_CO2_FRESH_MAX = 800.0;
14static const double CLIENTCONFIG_DEFAULT_CO2_ELEVATED_MAX = 1200.0;
15static const double CLIENTCONFIG_DEFAULT_TEMP_WARM_ABOVE = 22.0;
16static const double CLIENTCONFIG_DEFAULT_TEMP_COOL_BELOW = 16.0;
17static const double CLIENTCONFIG_DEFAULT_DUSK_GLOW_OPACITY = 0.18;
18static const double CLIENTCONFIG_DEFAULT_TEMP_TINT_OPACITY = 0.30;
19static const double CLIENTCONFIG_DEFAULT_CLOUD_OPACITY = 0.85;
20static const double CLIENTCONFIG_DEFAULT_HAZE_OPACITY = 0.70;
21static const double CLIENTCONFIG_DEFAULT_MIST_OPACITY = 0.35;
22static const double CLIENTCONFIG_DEFAULT_WIND_OPACITY = 0.55;
23static const char* CLIENTCONFIG_DEFAULT_CO2_FRESH_COLOUR = "#4CAF50";
24static const char* CLIENTCONFIG_DEFAULT_CO2_ELEVATED_COLOUR = "#E0A93B";
25static const char* CLIENTCONFIG_DEFAULT_CO2_HIGH_COLOUR = "#D9534F";
26
37{
38private:
52
64 void Load();
65
78 wxString ConfigFilePath() const;
79
93 void SeedDefaultFileIfMissing(const wxString& path) const;
94
95 wxString myLocation;
96 wxString myImagesFolder;
111
112public:
125 static ClientConfig& GetInstance();
126
127 //[General]
140 const wxString& GetLocation() const;
141
142 //[Scene]
155 const wxString& GetImagesFolder() const;
156
169 int GetAnimationFps() const;
170
171 //[Thresholds]
184 double GetCo2FreshMax() const;
185
198 double GetCo2ElevatedMax() const;
199
212 double GetTempWarmAbove() const;
213
226 double GetTempCoolBelow() const;
227
228 //[Overlays] - maximum opacity of each atmospheric overlay (0.0 - 1.0).
241 double GetDuskGlowOpacity() const;
242
255 double GetTemperatureTintOpacity() const;
256
269 double GetCloudOpacity() const;
270
283 double GetHazeOpacity() const;
284
297 double GetMistOpacity() const;
298
311 double GetWindOpacity() const;
312
313 //[Colors] - status indicator colours, overridable for accessibility (colour blindness / contrast).
326 wxColour GetCo2FreshColour() const;
327
340 wxColour GetCo2ElevatedColour() const;
341
354 wxColour GetCo2HighColour() const;
355
356};
static const char * CLIENTCONFIG_DEFAULT_CO2_FRESH_COLOUR
Default "fresh" CO2 indicator colour.
Definition: ClientConfig.h:23
static const char * CLIENTCONFIG_DEFAULT_IMAGES_FOLDER
Default images folder.
Definition: ClientConfig.h:11
static const double CLIENTCONFIG_DEFAULT_CLOUD_OPACITY
Default cloud overlay opacity.
Definition: ClientConfig.h:19
static const double CLIENTCONFIG_DEFAULT_CO2_ELEVATED_MAX
Default upper CO2 bound for "elevated".
Definition: ClientConfig.h:14
static const double CLIENTCONFIG_DEFAULT_CO2_FRESH_MAX
Default upper CO2 bound for "fresh".
Definition: ClientConfig.h:13
static const double CLIENTCONFIG_DEFAULT_TEMP_TINT_OPACITY
Default temperature-tint overlay opacity.
Definition: ClientConfig.h:18
static const char * CLIENTCONFIG_DEFAULT_CO2_ELEVATED_COLOUR
Default "elevated" CO2 indicator colour.
Definition: ClientConfig.h:24
static const double CLIENTCONFIG_DEFAULT_MIST_OPACITY
Default mist overlay opacity.
Definition: ClientConfig.h:21
static const char * CLIENTCONFIG_DEFAULT_LOCATION_NAME
Default location name.
Definition: ClientConfig.h:10
static const double CLIENTCONFIG_DEFAULT_WIND_OPACITY
Default wind overlay opacity.
Definition: ClientConfig.h:22
static const char * CLIENTCONFIG_DEFAULT_CO2_HIGH_COLOUR
Default "high" CO2 indicator colour.
Definition: ClientConfig.h:25
static const double CLIENTCONFIG_DEFAULT_TEMP_COOL_BELOW
Default temperature below which it reads "cool".
Definition: ClientConfig.h:16
static const double CLIENTCONFIG_DEFAULT_HAZE_OPACITY
Default haze overlay opacity.
Definition: ClientConfig.h:20
static const double CLIENTCONFIG_DEFAULT_TEMP_WARM_ABOVE
Default temperature above which it reads "warm".
Definition: ClientConfig.h:15
static const double CLIENTCONFIG_DEFAULT_DUSK_GLOW_OPACITY
Default dusk-glow overlay opacity.
Definition: ClientConfig.h:17
static const long CLIENTCONFIG_DEFAULT_ANIMATION_FPS
Default scene animation frame rate.
Definition: ClientConfig.h:12
Loads the user-editable client settings from an INI file (via wxFileConfig) once at startup and expos...
Definition: ClientConfig.h:37
double myTempWarmAbove
Temperature above which it reads "warm".
Definition: ClientConfig.h:100
double myWindOpacity
Maximum wind overlay opacity.
Definition: ClientConfig.h:107
double GetCo2FreshMax() const
Gets the upper CO2 bound for the "fresh" band.
Definition: ClientConfig.cpp:231
double GetDuskGlowOpacity() const
Gets the maximum dusk-glow overlay opacity.
Definition: ClientConfig.cpp:299
wxString myLocation
The configured location name.
Definition: ClientConfig.h:95
double GetTemperatureTintOpacity() const
Gets the maximum temperature-tint overlay opacity.
Definition: ClientConfig.cpp:316
const wxString & GetLocation() const
Gets the configured location name.
Definition: ClientConfig.cpp:180
const wxString & GetImagesFolder() const
Gets the configured images folder (with a leading ~ already expanded to the home directory).
Definition: ClientConfig.cpp:197
wxString myImagesFolder
The configured images folder (a leading ~ is expanded to home).
Definition: ClientConfig.h:96
ClientConfig()
Builds the config, seeding every field with its built-in default, then loads any overrides from the I...
Definition: ClientConfig.cpp:37
wxColour GetCo2FreshColour() const
Gets the indicator colour for the "fresh" CO2 band.
Definition: ClientConfig.cpp:401
void SeedDefaultFileIfMissing(const wxString &path) const
Writes the commented default config file to the given path if it doesn't already exist.
Definition: ClientConfig.cpp:85
double GetTempWarmAbove() const
Gets the temperature above which it reads "warm".
Definition: ClientConfig.cpp:265
double myTemperatureTintOpacity
Maximum temperature-tint overlay opacity.
Definition: ClientConfig.h:103
ClientConfig & operator=(const ClientConfig &)
wxColour myCo2FreshColour
Indicator colour for the "fresh" CO2 band.
Definition: ClientConfig.h:108
double myHazeOpacity
Maximum haze overlay opacity.
Definition: ClientConfig.h:105
double GetTempCoolBelow() const
Gets the temperature below which it reads "cool".
Definition: ClientConfig.cpp:282
double myCo2FreshMax
Upper CO2 bound for the "fresh" band.
Definition: ClientConfig.h:98
double GetCloudOpacity() const
Gets the maximum cloud overlay opacity.
Definition: ClientConfig.cpp:333
double myMistOpacity
Maximum mist overlay opacity.
Definition: ClientConfig.h:106
double GetWindOpacity() const
Gets the maximum wind overlay opacity.
Definition: ClientConfig.cpp:384
double myDuskGlowOpacity
Maximum dusk-glow overlay opacity.
Definition: ClientConfig.h:102
double GetMistOpacity() const
Gets the maximum mist overlay opacity.
Definition: ClientConfig.cpp:367
double myCloudOpacity
Maximum cloud overlay opacity.
Definition: ClientConfig.h:104
double GetCo2ElevatedMax() const
Gets the upper CO2 bound for the "elevated" band.
Definition: ClientConfig.cpp:248
wxColour myCo2HighColour
Indicator colour for the "high" CO2 band.
Definition: ClientConfig.h:110
wxColour myCo2ElevatedColour
Indicator colour for the "elevated" CO2 band.
Definition: ClientConfig.h:109
static ClientConfig & GetInstance()
Gets the singleton instance, constructing (and loading) it on first call.
Definition: ClientConfig.cpp:21
wxColour GetCo2ElevatedColour() const
Gets the indicator colour for the "elevated" CO2 band.
Definition: ClientConfig.cpp:418
wxColour GetCo2HighColour() const
Gets the indicator colour for the "high" CO2 band.
Definition: ClientConfig.cpp:435
double myCo2ElevatedMax
Upper CO2 bound for the "elevated" band.
Definition: ClientConfig.h:99
wxString ConfigFilePath() const
Builds the path to the config file (~/rumpi_config.ini), alongside the ~/rumpi_logs and ~/rumpi_image...
Definition: ClientConfig.cpp:66
double myTempCoolBelow
Temperature below which it reads "cool".
Definition: ClientConfig.h:101
int GetAnimationFps() const
Gets the scene animation frame rate.
Definition: ClientConfig.cpp:214
ClientConfig(const ClientConfig &)
double GetHazeOpacity() const
Gets the maximum haze overlay opacity.
Definition: ClientConfig.cpp:350
void Load()
Seeds the config file if missing, then reads every setting from it, expanding a leading ~ in the imag...
Definition: ClientConfig.cpp:116
int myAnimationFps
The scene animation frame rate.
Definition: ClientConfig.h:97