summaryrefslogtreecommitdiffstats
path: root/src/Configuration.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2021-05-11 13:45:26 -0400
committerDavid Robillard <d@drobilla.net>2021-05-11 13:45:26 -0400
commitdf0fdf362347495531bc3a5d19233220721d846b (patch)
treee3631d08630d4d6651eb24aa53c9fc49157778ab /src/Configuration.hpp
parentc6ae340c6222240dc45e9bba714c722cebece186 (diff)
downloadpatchage-df0fdf362347495531bc3a5d19233220721d846b.tar.gz
patchage-df0fdf362347495531bc3a5d19233220721d846b.tar.bz2
patchage-df0fdf362347495531bc3a5d19233220721d846b.zip
Refactor most functionality around actions and settings
This moves more code into general places, and completely eliminates dependencies on the Patchage "god object".
Diffstat (limited to 'src/Configuration.hpp')
-rw-r--r--src/Configuration.hpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/Configuration.hpp b/src/Configuration.hpp
index 110a4fb..fd6b71d 100644
--- a/src/Configuration.hpp
+++ b/src/Configuration.hpp
@@ -25,6 +25,7 @@
#include <boost/optional/optional.hpp>
#include <cstdint>
+#include <functional>
#include <map>
#include <string>
#include <tuple>
@@ -36,7 +37,7 @@ namespace patchage {
class Configuration
{
public:
- explicit Configuration();
+ explicit Configuration(std::function<void(const Setting&)> on_change);
void load();
void save();
@@ -60,6 +61,7 @@ public:
void set_port_color(PortType type, uint32_t rgba)
{
_port_colors[static_cast<unsigned>(type)] = rgba;
+ _on_change(setting::PortColor{type, rgba});
}
// Set a global configuration setting
@@ -70,6 +72,7 @@ public:
if (setting.value != value) {
setting.value = std::move(value);
+ _on_change(setting);
}
}
@@ -131,6 +134,8 @@ private:
setting::Zoom>;
Settings _settings;
+
+ std::function<void(const Setting&)> _on_change;
};
} // namespace patchage