diff options
author | David Robillard <d@drobilla.net> | 2021-05-11 13:45:26 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2021-05-11 13:45:26 -0400 |
commit | df0fdf362347495531bc3a5d19233220721d846b (patch) | |
tree | e3631d08630d4d6651eb24aa53c9fc49157778ab /src/Configuration.hpp | |
parent | c6ae340c6222240dc45e9bba714c722cebece186 (diff) | |
download | patchage-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.hpp | 7 |
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 |