diff options
Diffstat (limited to 'plugingui')
| -rw-r--r-- | plugingui/dgwindow.cc | 31 | ||||
| -rw-r--r-- | plugingui/dgwindow.h | 7 | ||||
| -rw-r--r-- | plugingui/plugingui.cc | 90 | ||||
| -rw-r--r-- | plugingui/plugingui.h | 24 | 
4 files changed, 131 insertions, 21 deletions
| diff --git a/plugingui/dgwindow.cc b/plugingui/dgwindow.cc index 8d9e789..e8dbcfc 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 07e23df..7adedc2 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 3375817..ff9ec58 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 af05478..d313f1b 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:: | 
