commit 88ba4923bf2f148eb89755a581dc06b24cf6c8c4
parent ef5a57606fd5671601f57f0a1e7f8ab5b76c1317
Author: fundamental <mark.d.mccurry@gmail.com>
Date: Sun, 22 Feb 2015 15:32:51 -0500
UI: Add Middle Mouse MIDI Learn To Fl_Osc_Dial
Diffstat:
2 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/src/UI/Fl_Osc_Dial.H b/src/UI/Fl_Osc_Dial.H
@@ -26,6 +26,9 @@ class Fl_Osc_Dial:public WidgetPDial, public Fl_Osc_Widget
void update(void);
void callback(Fl_Callback *cb, void *p = NULL);
+ //Midi learn handler
+ int handle(int);
+
void mark_dead(void);
virtual void rebase(std::string new_base) override;
diff --git a/src/UI/Fl_Osc_Dial.cpp b/src/UI/Fl_Osc_Dial.cpp
@@ -1,3 +1,4 @@
+#include <FL/Fl.H>
#include "Fl_Osc_Dial.H"
#include "Fl_Osc_Interface.h"
#include "Fl_Osc_Pane.H"
@@ -37,7 +38,7 @@ void Fl_Osc_Dial::init(std::string path_)
ext = path_;
oscRegister(path_.c_str());
};
-
+
void Fl_Osc_Dial::alt_init(std::string base, std::string path_)
{
Fl_Osc_Pane *pane = fetch_osc_pane(this);
@@ -59,6 +60,16 @@ void Fl_Osc_Dial::callback(Fl_Callback *cb, void *p)
cb_data.second = p;
}
+int Fl_Osc_Dial::handle(int ev)
+{
+ if(ev == FL_PUSH && Fl::event_state(FL_BUTTON2)) {
+ printf("Trying to learn...\n");
+ osc->write("/learn", "s", (loc+ext).c_str());
+ return 1;
+ }
+ return WidgetPDial::handle(ev);
+}
+
void Fl_Osc_Dial::OSC_value(int v)
{
value(v+minimum());
@@ -68,7 +79,7 @@ void Fl_Osc_Dial::OSC_value(char v)
{
value(v+minimum());
}
-
+
void Fl_Osc_Dial::update(void)
{
osc->requestValue(loc+ext);
@@ -83,7 +94,7 @@ void Fl_Osc_Dial::cb(void)
}
else*/
oscWrite(ext, "i", (int)(value()-minimum()));
-
+
if(cb_data.first)
cb_data.first(this, cb_data.second);
}
@@ -93,7 +104,7 @@ void Fl_Osc_Dial::mark_dead(void)
dead = true;
}
-
+
void Fl_Osc_Dial::rebase(std::string new_base)
{
if(dead || loc == "/")
@@ -122,7 +133,7 @@ void Fl_Osc_Dial::rebase(std::string new_base)
//well, that didn't work
assert(!"good enough hack");
}
-
+
std::string new_loc = new_base.substr(0, match_pos+1);
printf("Moving '%s' to\n", (loc+ext).c_str());
printf(" '%s'\n", (new_loc+ext).c_str());