OSC: add /select/hide
authorLen Ovens <len@ovenwerks.net>
Sat, 13 Jan 2018 15:58:37 +0000 (07:58 -0800)
committerLen Ovens <len@ovenwerks.net>
Sat, 13 Jan 2018 15:58:37 +0000 (07:58 -0800)
libs/surfaces/osc/osc.cc
libs/surfaces/osc/osc.h

index f3f7421e8528afbefe325f212865309c74e520ce..41d1210281f69810df6922d828a4c11c8d8e71b9 100644 (file)
@@ -576,6 +576,7 @@ OSC::register_callbacks()
                REGISTER_CALLBACK (serv, "/select/fader", "f", sel_fader);
                REGISTER_CALLBACK (serv, "/select/db_delta", "f", sel_dB_delta);
                REGISTER_CALLBACK (serv, "/select/trimdB", "f", sel_trim);
+               REGISTER_CALLBACK (serv, "/select/hide", "i", sel_hide);
                REGISTER_CALLBACK (serv, "/select/pan_stereo_position", "f", sel_pan_position);
                REGISTER_CALLBACK (serv, "/select/pan_stereo_width", "f", sel_pan_width);
                REGISTER_CALLBACK (serv, "/select/send_gain", "if", sel_sendgain);
@@ -4123,6 +4124,24 @@ OSC::sel_trim (float val, lo_message msg)
        return float_message("/select/trimdB", 0, get_address (msg));
 }
 
+int
+OSC::sel_hide (uint32_t state, lo_message msg)
+{
+       OSCSurface *sur = get_surface(get_address (msg));
+       boost::shared_ptr<Stripable> s;
+       if (sur->expand_enable) {
+               s = get_strip (sur->expand, get_address (msg));
+       } else {
+               s = _select;
+       }
+       if (s) {
+               if (state != s->is_hidden ()) {
+                       s->presentation_info().set_hidden ((bool) state);
+               }
+       }
+       return 0;
+}
+
 int
 OSC::sel_pan_position (float val, lo_message msg)
 {
index a0dfb1216252f776961cfa780f7a045e8f5ed736..c5713e66d8838154e820a1280fb8d29f7f295e1f 100644 (file)
@@ -492,6 +492,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
        PATH_CALLBACK1_MSG(sel_fader,f);
        PATH_CALLBACK1_MSG(sel_dB_delta,f);
        PATH_CALLBACK1_MSG(sel_trim,f);
+       PATH_CALLBACK1_MSG(sel_hide,i);
        PATH_CALLBACK1_MSG(sel_pan_position,f);
        PATH_CALLBACK1_MSG(sel_pan_width,f);
        PATH_CALLBACK1_MSG(sel_pan_elevation,f);
@@ -706,6 +707,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
        int sel_fader (float state, lo_message msg);
        int sel_dB_delta (float delta, lo_message msg);
        int sel_trim (float val, lo_message msg);
+       int sel_hide (uint32_t state, lo_message msg);
        int sel_pan_position (float val, lo_message msg);
        int sel_pan_width (float val, lo_message msg);
        int sel_sendgain (int id, float dB, lo_message msg);