From c2997b9b1a5b831e76b1779aa957f2312a6e5089 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Wed, 23 Mar 2016 22:38:44 +0100 Subject: Settings. --- plugingui/dgwindow.cc | 31 +++++++++-------- plugingui/dgwindow.h | 7 +++- plugingui/plugingui.cc | 90 ++++++++++++++++++++++++++++++++++++++++++++++++-- plugingui/plugingui.h | 24 +++++++++++--- 4 files changed, 131 insertions(+), 21 deletions(-) (limited to 'plugingui') diff --git a/plugingui/dgwindow.cc b/plugingui/dgwindow.cc index 86a985d..25cbdf0 100644 --- a/plugingui/dgwindow.cc +++ b/plugingui/dgwindow.cc @@ -120,10 +120,11 @@ public: }; DGWindow::DGWindow(void* native_window, MessageHandler& messageHandler, - Config& config) + Config& config, Settings& settings) : Window(native_window) , messageHandler(messageHandler) , config(config) + , settings(settings) { int vlineSpacing = 16; @@ -233,11 +234,12 @@ void DGWindow::repaintEvent(RepaintEvent* repaintEvent) void DGWindow::attackValueChanged(float value) { - ChangeSettingMessage *msg = - new ChangeSettingMessage(ChangeSettingMessage::velocity_modifier_weight, - value); + //ChangeSettingMessage *msg = + // new ChangeSettingMessage(ChangeSettingMessage::velocity_modifier_weight, + // value); + //messageHandler.sendMessage(MSGRCV_ENGINE, msg); - messageHandler.sendMessage(MSGRCV_ENGINE, msg); + settings.velocity_modifier_weight.store(value); #ifdef STANDALONE int i = value * 4; @@ -253,10 +255,12 @@ void DGWindow::attackValueChanged(float value) void DGWindow::falloffValueChanged(float value) { - ChangeSettingMessage *msg = - new ChangeSettingMessage(ChangeSettingMessage::velocity_modifier_falloff, - value); - messageHandler.sendMessage(MSGRCV_ENGINE, msg); + //ChangeSettingMessage *msg = + // new ChangeSettingMessage(ChangeSettingMessage::velocity_modifier_falloff, + // value); + //messageHandler.sendMessage(MSGRCV_ENGINE, msg); + + settings.velocity_modifier_falloff.store(value); #ifdef STANDALONE drumkitFileProgress->setProgress(value); @@ -265,10 +269,11 @@ void DGWindow::falloffValueChanged(float value) void DGWindow::velocityCheckClick(bool checked) { - ChangeSettingMessage *msg = - new ChangeSettingMessage(ChangeSettingMessage::enable_velocity_modifier, - checked); - messageHandler.sendMessage(MSGRCV_ENGINE, msg); +// ChangeSettingMessage *msg = +// new ChangeSettingMessage(ChangeSettingMessage::enable_velocity_modifier, +// checked); +// messageHandler.sendMessage(MSGRCV_ENGINE, msg); + settings.enable_velocity_modifier.store(checked); } void DGWindow::kitBrowseClick() diff --git a/plugingui/dgwindow.h b/plugingui/dgwindow.h index 605e87a..c4fbeab 100644 --- a/plugingui/dgwindow.h +++ b/plugingui/dgwindow.h @@ -37,6 +37,8 @@ #include "filebrowser.h" #include "layout.h" +#include + class MessageHandler; namespace GUI { @@ -47,7 +49,8 @@ class File; class DGWindow : public Window { public: - DGWindow(void* native_window, MessageHandler& messageHandler, Config& config); + DGWindow(void* native_window, MessageHandler& messageHandler, Config& config, + Settings& settings); Header* header; @@ -85,6 +88,8 @@ private: Image back{":bg.png"}; Image logo{":logo.png"}; + + Settings& settings; }; } // GUI:: diff --git a/plugingui/plugingui.cc b/plugingui/plugingui.cc index e34c471..9bac007 100644 --- a/plugingui/plugingui.cc +++ b/plugingui/plugingui.cc @@ -31,6 +31,8 @@ #include "pluginconfig.h" #include "messagehandler.h" +#include + namespace GUI { PluginGUI::PluginGUI(void* native_window) @@ -116,7 +118,68 @@ bool PluginGUI::processEvents() } window->eventHandler()->processEvents(); - handleMessages(); + //handleMessages(); + + static bool foo = false; + static int t = 0; + if(t != time(nullptr)) + { + t = time(nullptr); + foo = !foo; + float v = settings.velocity_modifier_falloff.load(); + v += 0.1f; + settings.velocity_modifier_falloff.store(v); + } + + Painter p(*window); + + // Run through all settings one at a time propagate changes to the UI. + if(getter.enable_velocity_modifier.hasChanged()) + { + enable_velocity_modifier_notifier(getter.enable_velocity_modifier.getValue()); + } + + if(getter.velocity_modifier_falloff.hasChanged()) + { + velocity_modifier_falloff_notifier(getter.velocity_modifier_falloff.getValue()); + } + + if(getter.velocity_modifier_weight.hasChanged()) + { + velocity_modifier_weight_notifier(getter.velocity_modifier_weight.getValue()); + } + + if(getter.enable_velocity_randomiser.hasChanged()) + { + enable_velocity_randomiser_notifier(getter.enable_velocity_randomiser.getValue()); + } + + if(getter.velocity_randomiser_weight.hasChanged()) + { + velocity_randomiser_weight_notifier(getter.velocity_randomiser_weight.getValue()); + } + + if(getter.samplerate.hasChanged()) + { + samplerate_notifier(getter.samplerate.getValue()); + } + + if(getter.enable_resampling.hasChanged()) + { + enable_resampling_notifier(getter.enable_resampling.getValue()); + } + + if(getter.number_of_files.hasChanged() || + getter.number_of_files_loaded.hasChanged()) + { + drumkit_file_progress_notifier((float)getter.number_of_files_loaded.getValue() / + (float)getter.number_of_files.getValue()); + } + + //if(getter.current_file.hasChanged()) + //{ + // current_file_notifier(getter.current_file.getValue()); + //} if(closing) { @@ -135,7 +198,30 @@ void PluginGUI::init() config = new Config(); config->load(); - window = new DGWindow(native_window, msghandler, *config); + window = new DGWindow(native_window, msghandler, *config, settings); + + CONNECT(this, enable_velocity_modifier_notifier, + window->velocityCheck, &CheckBox::setChecked); + + CONNECT(this, velocity_modifier_falloff_notifier, + window->falloffKnob, &Knob::setValue); + CONNECT(this, velocity_modifier_weight_notifier, + window->attackKnob, &Knob::setValue); + + + //CONNECT(this, enable_velocity_randomiser_notifier, + // window->velocityCheck, &CheckBox::setChecked); + //CONNECT(this, velocity_randomiser_weight_notifier, + // window->velocityCheck, &CheckBox::setChecked); + + //CONNECT(this, samplerate_notifier, + // window->velocityCheck, &CheckBox::setChecked); + + //CONNECT(this, enable_resampling_notifier, + // window->velocityCheck, &CheckBox::setChecked); + + CONNECT(this, drumkit_file_progress_notifier, + window->drumkitFileProgress, &ProgressBar::setProgress); auto eventHandler = window->eventHandler(); CONNECT(eventHandler, closeNotifier, this, &PluginGUI::closeEventHandler); diff --git a/plugingui/plugingui.h b/plugingui/plugingui.h index f441696..ca31c41 100644 --- a/plugingui/plugingui.h +++ b/plugingui/plugingui.h @@ -31,9 +31,7 @@ #include "pluginconfig.h" - -#include "thread.h" -#include "semaphore.h" +#include #include "messagereceiver.h" #include "notifier.h" @@ -68,6 +66,21 @@ public: Notifier<> closeNotifier; + // Setting notifiers: + Notifier enable_velocity_modifier_notifier; + Notifier velocity_modifier_falloff_notifier; + Notifier velocity_modifier_weight_notifier; + + Notifier enable_velocity_randomiser_notifier; + Notifier velocity_randomiser_weight_notifier; + + Notifier samplerate_notifier; + + Notifier enable_resampling_notifier; + + Notifier drumkit_file_progress_notifier; + //Notifier current_file_notifier; + // Support old interface a little while longer.. void setWindowClosedCallback(void (*handler)(void*), void* ptr); @@ -80,11 +93,12 @@ private: volatile bool closing{false}; volatile bool initialised{false}; - Semaphore sem{"plugingui"}; - // For the old-style notifier. void (*windowClosedHandler)(void *){nullptr}; void *windowClosedPtr{nullptr}; + + Settings settings; + SettingsGetter getter{settings}; }; } // GUI:: -- cgit v1.2.3