summaryrefslogtreecommitdiff
path: root/plugingui/plugingui.cc
diff options
context:
space:
mode:
Diffstat (limited to 'plugingui/plugingui.cc')
-rw-r--r--plugingui/plugingui.cc379
1 files changed, 184 insertions, 195 deletions
diff --git a/plugingui/plugingui.cc b/plugingui/plugingui.cc
index 170f4f9..5de74fb 100644
--- a/plugingui/plugingui.cc
+++ b/plugingui/plugingui.cc
@@ -36,129 +36,7 @@
#include "pluginconfig.h"
#include "messagehandler.h"
-static void checkClick(void *ptr)
-{
- PluginGUI *gui = (PluginGUI*)ptr;
-
- ChangeSettingMessage *msg =
- new ChangeSettingMessage(ChangeSettingMessage::enable_velocity_modifier,
- gui->check->checked());
- msghandler.sendMessage(MSGRCV_ENGINE, msg);
-}
-
-static void knobChange(void *ptr)
-{
- PluginGUI *gui = (PluginGUI*)ptr;
-
- ChangeSettingMessage *msg =
- new ChangeSettingMessage(ChangeSettingMessage::velocity_modifier_weight,
- gui->knob->value());
-
- msghandler.sendMessage(MSGRCV_ENGINE, msg);
-
-#ifdef STANDALONE
- int i = gui->knob->value() * 4;
- switch(i) {
- case 0: gui->progress->setState(GUI::ProgressBar::off); break;
- case 1: gui->progress->setState(GUI::ProgressBar::blue); break;
- case 2: gui->progress->setState(GUI::ProgressBar::green); break;
- case 3: gui->progress->setState(GUI::ProgressBar::red); break;
- default: break;
- }
-#endif
-}
-
-static void knobChange2(void *ptr)
-{
- PluginGUI *gui = (PluginGUI*)ptr;
-
- ChangeSettingMessage *msg =
- new ChangeSettingMessage(ChangeSettingMessage::velocity_modifier_falloff,
- gui->knob2->value());
- msghandler.sendMessage(MSGRCV_ENGINE, msg);
-
-#ifdef STANDALONE
- gui->progress->setProgress(gui->knob2->value());
-#endif
-}
-
-//static void quit(void *ptr) {
-// PluginGUI *gui = (PluginGUI*)ptr;
-//
-// gui->stopThread();
-//}
-
-GUI::FileBrowser *fb;
-static void selectKitFile(void *ptr, std::string filename)
-{
- PluginGUI *gui = (PluginGUI*)ptr;
-
- gui->lineedit->setText(filename);
-
- fb->hide();
-
- std::string drumkit = gui->lineedit->text();
-
- gui->config->lastkit = drumkit;
- gui->config->save();
-
- gui->progress->setProgress(0);
- gui->progress->setState(GUI::ProgressBar::blue);
-
- LoadDrumKitMessage *msg = new LoadDrumKitMessage();
- msg->drumkitfile = drumkit;
-
- msghandler.sendMessage(MSGRCV_ENGINE, msg);
-}
-
-static void kitBrowseClick(void *ptr)
-{
- PluginGUI *gui = (PluginGUI*)ptr;
-
- std::string path = gui->lineedit->text();
- if(path == "") path = gui->config->lastkit;
- if(path == "") path = gui->lineedit2->text();
-
- fb->setPath(path);
- fb->registerFileSelectHandler(selectKitFile, gui);
- fb->show();
-}
-
-static void selectMapFile(void *ptr, std::string filename)
-{
- PluginGUI *gui = (PluginGUI*)ptr;
-
- gui->lineedit2->setText(filename);
- fb->hide();
-
- std::string midimap = gui->lineedit2->text();
-
- gui->config->lastmidimap = midimap;
- gui->config->save();
-
- LoadMidimapMessage *msg = new LoadMidimapMessage();
- msg->midimapfile = midimap;
- msghandler.sendMessage(MSGRCV_ENGINE, msg);
-
- /*
- if(gui->changeMidimapHandler)
- gui->changeMidimapHandler(gui->changeMidimapPtr, midimap.c_str());
- gui->progress2->setState(GUI::ProgressBar::green);
- */
-}
-
-static void midimapBrowseClick(void *ptr)
-{
- PluginGUI *gui = (PluginGUI*)ptr;
-
- std::string path = gui->lineedit2->text();
- if(path == "") path = gui->config->lastmidimap;
- if(path == "") path = gui->lineedit->text();
-
- fb->setPath(path);
- fb->registerFileSelectHandler(selectMapFile, gui);
- fb->show();
-}
+namespace GUI {
/*
void closeClick(void *ptr)
@@ -206,7 +84,7 @@ void PluginGUI::stopThread()
void PluginGUI::handleMessage(Message *msg)
{
- GUI::Painter p(window);// Make sure we only redraw buffer one time.
+ Painter p(*window);// Make sure we only redraw buffer one time.
switch(msg->type()) {
case Message::LoadStatus:
@@ -215,7 +93,7 @@ void PluginGUI::handleMessage(Message *msg)
progress->setProgress((float)ls->numer_of_files_loaded /
(float)ls->number_of_files);
if(ls->numer_of_files_loaded == ls->number_of_files) {
- progress->setState(GUI::ProgressBar::green);
+ progress->setState(ProgressBarState::Green);
}
}
break;
@@ -224,9 +102,9 @@ void PluginGUI::handleMessage(Message *msg)
LoadStatusMessageMidimap *ls = (LoadStatusMessageMidimap*)msg;
progress2->setProgress(1);
if(ls->success) {
- progress2->setState(GUI::ProgressBar::green);
+ progress2->setState(ProgressBarState::Green);
} else {
- progress2->setState(GUI::ProgressBar::red);
+ progress2->setState(ProgressBarState::Red);
}
}
break;
@@ -236,22 +114,22 @@ void PluginGUI::handleMessage(Message *msg)
lineedit->setText(settings->drumkitfile);
if(settings->drumkit_loaded) {
progress->setProgress(1);
- progress->setState(GUI::ProgressBar::green);
+ progress->setState(ProgressBarState::Green);
} else {
progress->setProgress(0);
- progress->setState(GUI::ProgressBar::blue);
+ progress->setState(ProgressBarState::Blue);
}
lineedit2->setText(settings->midimapfile);
if(settings->midimap_loaded) {
progress2->setProgress(1);
- progress2->setState(GUI::ProgressBar::green);
+ progress2->setState(ProgressBarState::Green);
} else {
progress2->setProgress(0);
- progress2->setState(GUI::ProgressBar::blue);
+ progress2->setState(ProgressBarState::Blue);
}
- check->setChecked(settings->enable_velocity_modifier);
- knob->setValue(settings->velocity_modifier_weight);
- knob2->setValue(settings->velocity_modifier_falloff);
+ velocityCheck->setChecked(settings->enable_velocity_modifier);
+ attackKnob->setValue(settings->velocity_modifier_weight);
+ falloffKnob->setValue(settings->velocity_modifier_falloff);
}
default:
@@ -279,6 +157,13 @@ void PluginGUI::thread_main()
window->eventHandler()->processEvents();
handleMessages();
+
+#ifdef STANDALONE
+ if(closing) {
+ if(windowClosedHandler) windowClosedHandler(windowClosedPtr);
+ break;
+ }
+#endif
}
deinit();
@@ -293,10 +178,50 @@ void PluginGUI::deinit()
if(window) delete window;
}
-void closeEventHandler(void *ptr)
+void PluginGUI::closeEventHandler()
{
- volatile bool *closing = (volatile bool*)ptr;
- *closing = true;
+ closing = true;
+}
+
+void PluginGUI::selectKitFile(const std::string& filename)
+{
+ lineedit->setText(filename);
+
+ fileBrowser->hide();
+
+ std::string drumkit = lineedit->text();
+
+ config->lastkit = drumkit;
+ config->save();
+
+ progress->setProgress(0);
+ progress->setState(ProgressBarState::Blue);
+
+ LoadDrumKitMessage *msg = new LoadDrumKitMessage();
+ msg->drumkitfile = drumkit;
+
+ msghandler.sendMessage(MSGRCV_ENGINE, msg);
+}
+
+void PluginGUI::selectMapFile(const std::string& filename)
+{
+ lineedit2->setText(filename);
+ fileBrowser->hide();
+
+ std::string midimap = lineedit2->text();
+
+ config->lastmidimap = midimap;
+ config->save();
+
+ LoadMidimapMessage *msg = new LoadMidimapMessage();
+ msg->midimapfile = midimap;
+ msghandler.sendMessage(MSGRCV_ENGINE, msg);
+
+ /*
+ if(gui->changeMidimapHandler)
+ gui->changeMidimapHandler(gui->changeMidimapPtr, midimap.c_str());
+ gui->progress2->setState(ProgressBarState::Green);
+ */
}
void PluginGUI::init()
@@ -306,19 +231,19 @@ void PluginGUI::init()
config = new Config();
config->load();
- window = new GUI::Window();
- window->eventHandler()->registerCloseHandler(closeEventHandler,
- (void*)&closing);
+ window = new Window();
+ auto eventHandler = window->eventHandler();
+ CONNECT(eventHandler, closeNotifier, this, &PluginGUI::closeEventHandler);
window->setFixedSize(370, 330);
window->setCaption("DrumGizmo v" VERSION);
- GUI::Label *lbl_title = new GUI::Label(window);
+ Label *lbl_title = new Label(window);
lbl_title->setText("DrumGizmo");
lbl_title->move(127, 7);
lbl_title->resize(200, 20);
- GUI::VerticalLine *l1 = new GUI::VerticalLine(window);
+ VerticalLine *l1 = new VerticalLine(window);
l1->move(20, 30);
l1->resize(window->width() - 40, 2);
@@ -330,30 +255,31 @@ void PluginGUI::init()
// Drumkit file
{
int y = 37;
- GUI::Label *lbl = new GUI::Label(window);
+ Label *lbl = new Label(window);
lbl->setText("Drumkit file:");
lbl->move(XOFFSET - 4, y);
lbl->resize(100, 20);
y += OFFSET1;
- lineedit = new GUI::LineEdit(window);
+ lineedit = new LineEdit(window);
lineedit->move(XOFFSET, y);
lineedit->resize(243, 29);
lineedit->setReadOnly(true);
- GUI::Button *btn_brw = new GUI::Button(window);
+ Button *btn_brw = new Button(window);
btn_brw->setText("Browse...");
btn_brw->move(266, y - 6 + 4);
btn_brw->resize(85, 35 + 6 - 4);
- btn_brw->registerClickHandler(kitBrowseClick, this);
+// btn_brw->registerClickHandler(kitBrowseClick, this);
+ CONNECT(btn_brw, clickNotifier, this, &PluginGUI::kitBrowseClick);
y += OFFSET2;
- progress = new GUI::ProgressBar(window);
+ progress = new ProgressBar(window);
progress->move(XOFFSET, y);
progress->resize(window->width() - 2*XOFFSET, 11);
y += OFFSET3;
- GUI::VerticalLine *l = new GUI::VerticalLine(window);
+ VerticalLine *l = new VerticalLine(window);
l->move(XOFFSET, y);
l->resize(window->width() - 2*XOFFSET, 2);
}
@@ -361,30 +287,30 @@ void PluginGUI::init()
// Midimap file
{
int y = 120;
- lbl2 = new GUI::Label(window);
+ lbl2 = new Label(window);
lbl2->setText("Midimap file:");
lbl2->move(XOFFSET - 4, y);
lbl2->resize(100, 20);
y += OFFSET1;
- lineedit2 = new GUI::LineEdit(window);
+ lineedit2 = new LineEdit(window);
lineedit2->move(XOFFSET, y);
lineedit2->resize(243, 29);
lineedit2->setReadOnly(true);
- GUI::Button *btn_brw = new GUI::Button(window);
+ Button *btn_brw = new Button(window);
btn_brw->setText("Browse...");
btn_brw->move(266, y - 6 + 4);
btn_brw->resize(85, 35 + 6 - 4);
- btn_brw->registerClickHandler(midimapBrowseClick, this);
+ CONNECT(btn_brw, clickNotifier, this, &PluginGUI::midimapBrowseClick);
y += OFFSET2;
- progress2 = new GUI::ProgressBar(window);
+ progress2 = new ProgressBar(window);
progress2->move(XOFFSET, y);
progress2->resize(window->width() - 2*XOFFSET, 11);
y += OFFSET3;
- GUI::VerticalLine *l = new GUI::VerticalLine(window);
+ VerticalLine *l = new VerticalLine(window);
l->move(XOFFSET, y);
l->resize(window->width() - 2*XOFFSET, 2);
}
@@ -394,70 +320,69 @@ void PluginGUI::init()
#define OFFSET4 21
// Enable Velocity
- GUI::Label *lbl_velocity = new GUI::Label(window);
+ Label *lbl_velocity = new Label(window);
lbl_velocity->resize(78 ,20);
lbl_velocity->move(16, y);
lbl_velocity->setText("Humanizer");
- check = new GUI::CheckBox(window);
- //check->setText("Enable Velocity Modifier");
- check->move(26, y + OFFSET4);
- check->resize(59,38);
- check->registerClickHandler(checkClick, this);
+ velocityCheck = new CheckBox(window);
+ //velocityCheck->setText("Enable Velocity Modifier");
+ velocityCheck->move(26, y + OFFSET4);
+ velocityCheck->resize(59,38);
+ CONNECT(velocityCheck, stateChangedNotifier, this, &PluginGUI::velocityCheckClick);
// Velocity Weight Modifier:
{
- GUI::Label *lbl_weight = new GUI::Label(window);
+ Label *lbl_weight = new Label(window);
lbl_weight->setText("Attack");
lbl_weight->move(107, y);
lbl_weight->resize(100, 20);
- knob = new GUI::Knob(window);
- knob->move(109, y + OFFSET4 - 4);
- knob->resize(57, 57);
- knob->registerClickHandler(knobChange, this);
+ attackKnob = new Knob(window);
+ attackKnob->move(109, y + OFFSET4 - 4);
+ attackKnob->resize(57, 57);
+ CONNECT(attackKnob, valueChangedNotifier, this, &PluginGUI::attackValueChanged);
}
// Velocity Falloff Modifier:
{
- GUI::Label *lbl_falloff = new GUI::Label(window);
+ Label *lbl_falloff = new Label(window);
lbl_falloff->setText("Release");
lbl_falloff->move(202 - 17 - 7, y);
lbl_falloff->resize(100, 20);
- knob2 = new GUI::Knob(window);
- knob2->move(202 - 13 - 5, y + OFFSET4 - 4);
- knob2->resize(57, 57);
- knob2->registerClickHandler(knobChange2, this);
+ falloffKnob = new Knob(window);
+ falloffKnob->move(202 - 13 - 5, y + OFFSET4 - 4);
+ falloffKnob->resize(57, 57);
+ CONNECT(falloffKnob, valueChangedNotifier, this, &PluginGUI::falloffValueChanged);
}
}
- GUI::VerticalLine *l2 = new GUI::VerticalLine(window);
+ VerticalLine *l2 = new VerticalLine(window);
l2->move(20, 310 - 15 - 9);
l2->resize(window->width() - 40, 2);
- GUI::Label *lbl_version = new GUI::Label(window);
+ Label *lbl_version = new Label(window);
lbl_version->setText(".::. v" VERSION " .::. http://www.drumgizmo.org .::. GPLv3 .::.");
lbl_version->move(16, 300);
lbl_version->resize(window->width(), 20);
/*
{
- GUI::ComboBox *cmb = new GUI::ComboBox(window);
+ ComboBox *cmb = new ComboBox(window);
cmb->addItem("Foo", "Bar");
cmb->addItem("Hello", "World");
cmb->move(10,10);
cmb->resize(70, 30);
}
*/
- // Create filebrowser
- filebrowser = new GUI::FileBrowser(window);
- filebrowser->move(0, 0);
- filebrowser->resize(window->width() - 1, window->height() - 1);
- filebrowser->hide();
- fb = filebrowser;
+ // Create file browser
+ fileBrowser = new FileBrowser(window);
+ fileBrowser->move(0, 0);
+ fileBrowser->resize(window->width() - 1, window->height() - 1);
+ fileBrowser->hide();
// Enable quit button
-// GUI::Button *btn_quit = new GUI::Button(window);
+// Button *btn_quit = new Button(window);
// btn_quit->setText("Quit");
// btn_quit->move(50,280);
// btn_quit->resize(80,80);
@@ -506,6 +431,84 @@ void PluginGUI::setWindowClosedCallback(void (*handler)(void *), void *ptr)
windowClosedPtr = ptr;
}
+void PluginGUI::attackValueChanged(float value)
+{
+ ChangeSettingMessage *msg =
+ new ChangeSettingMessage(ChangeSettingMessage::velocity_modifier_weight,
+ value);
+
+ msghandler.sendMessage(MSGRCV_ENGINE, msg);
+
+#ifdef STANDALONE
+ int i = value * 4;
+ switch(i) {
+ case 0: progress->setState(ProgressBarState::Off); break;
+ case 1: progress->setState(ProgressBarState::Blue); break;
+ case 2: progress->setState(ProgressBarState::Green); break;
+ case 3: progress->setState(ProgressBarState::Red); break;
+ default: break;
+ }
+#endif
+}
+
+void PluginGUI::falloffValueChanged(float value)
+{
+ ChangeSettingMessage *msg =
+ new ChangeSettingMessage(ChangeSettingMessage::velocity_modifier_falloff,
+ value);
+ msghandler.sendMessage(MSGRCV_ENGINE, msg);
+
+#ifdef STANDALONE
+ progress->setProgress(value);
+#endif
+}
+
+void PluginGUI::velocityCheckClick(bool checked)
+{
+ ChangeSettingMessage *msg =
+ new ChangeSettingMessage(ChangeSettingMessage::enable_velocity_modifier,
+ checked);
+ msghandler.sendMessage(MSGRCV_ENGINE, msg);
+}
+
+void PluginGUI::kitBrowseClick()
+{
+ std::string path = lineedit->text();
+ if(path == "")
+ {
+ path = config->lastkit;
+ }
+
+ if(path == "")
+ {
+ path = lineedit2->text();
+ }
+
+ fileBrowser->setPath(path);
+ CONNECT(fileBrowser, fileSelectNotifier, this, &PluginGUI::selectKitFile);
+ fileBrowser->show();
+}
+
+void PluginGUI::midimapBrowseClick()
+{
+ std::string path = lineedit2->text();
+ if(path == "")
+ {
+ path = config->lastmidimap;
+ }
+
+ if(path == "")
+ {
+ path = lineedit->text();
+ }
+
+ fileBrowser->setPath(path);
+ CONNECT(fileBrowser, fileSelectNotifier, this, &PluginGUI::selectMapFile);
+ fileBrowser->show();
+}
+
+} // GUI::
+
#ifdef STANDALONE
class Engine : public MessageHandler {
@@ -513,7 +516,6 @@ public:
void handleMessage(Message *msg) {}
};
-
void stop(void *ptr)
{
DEBUG(stop, "Stopping...\n");
@@ -523,32 +525,19 @@ void stop(void *ptr)
int main()
{
-/*
- hug_status_t status = hug_init(HUG_FLAG_OUTPUT_TO_SYSLOG,
- HUG_OPTION_SYSLOG_HOST, "192.168.0.10",
- HUG_OPTION_SYSLOG_PORT, 514,
- HUG_OPTION_END);
-
- if(status != HUG_STATUS_OK) {
- printf("Error: %d\n", status);
- return 1;
- }
-*/
INFO(example, "We are up and running");
bool running = true;
- PluginGUI gui;
+ GUI::PluginGUI gui;
gui.setWindowClosedCallback(stop, &running);
// gui.show();
while(running) {
- // gui.processEvents();
#ifdef WIN32
SleepEx(1000, FALSE);
#else
- // usleep(10000);
sleep(1);
#endif
}