summaryrefslogtreecommitdiff
path: root/plugingui
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2016-03-23 22:38:44 +0100
committerBent Bisballe Nyeng <deva@aasimon.org>2016-03-31 21:05:35 +0200
commitc2997b9b1a5b831e76b1779aa957f2312a6e5089 (patch)
tree6b53afdabd50daed098891b8d2c3de0770ccae18 /plugingui
parent87e14b57d197a7e917ad55250f132fd50df3ccdc (diff)
Settings.
Diffstat (limited to 'plugingui')
-rw-r--r--plugingui/dgwindow.cc31
-rw-r--r--plugingui/dgwindow.h7
-rw-r--r--plugingui/plugingui.cc90
-rw-r--r--plugingui/plugingui.h24
4 files changed, 131 insertions, 21 deletions
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 <settings.h>
+
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 <iostream>
+
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 <settings.h>
#include "messagereceiver.h"
#include "notifier.h"
@@ -68,6 +66,21 @@ public:
Notifier<> closeNotifier;
+ // Setting notifiers:
+ Notifier<bool> enable_velocity_modifier_notifier;
+ Notifier<float> velocity_modifier_falloff_notifier;
+ Notifier<float> velocity_modifier_weight_notifier;
+
+ Notifier<bool> enable_velocity_randomiser_notifier;
+ Notifier<float> velocity_randomiser_weight_notifier;
+
+ Notifier<double> samplerate_notifier;
+
+ Notifier<bool> enable_resampling_notifier;
+
+ Notifier<float> drumkit_file_progress_notifier;
+ //Notifier<std::string> 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::