OSC: add /strip/hide
[ardour.git] / libs / surfaces / osc / osc.cc
index 41d1210281f69810df6922d828a4c11c8d8e71b9..a026e0283a5a2e16c027d8870fd6026274be2f42 100644 (file)
@@ -618,6 +618,7 @@ OSC::register_callbacks()
                REGISTER_CALLBACK (serv, "/strip/monitor_input", "ii", route_monitor_input);
                REGISTER_CALLBACK (serv, "/strip/monitor_disk", "ii", route_monitor_disk);
                REGISTER_CALLBACK (serv, "/strip/expand", "ii", strip_expand);
+               REGISTER_CALLBACK (serv, "/strip/hide", "ii", strip_hide);
                REGISTER_CALLBACK (serv, "/strip/select", "ii", strip_gui_select);
                REGISTER_CALLBACK (serv, "/strip/polarity", "ii", strip_phase);
                REGISTER_CALLBACK (serv, "/strip/gain", "if", route_set_gain_dB);
@@ -963,6 +964,10 @@ OSC::catchall (const char *path, const char* types, lo_arg **argv, int argc, lo_
                int ssid = atoi (&path[14]);
                ret = strip_expand (ssid, argv[0]->i, msg);
        }
+       else if (!strncmp (path, "/strip/hide/", 12) && strlen (path) > 12) {
+               int ssid = atoi (&path[12]);
+               ret = strip_hide (ssid, argv[0]->i, msg);
+       }
        else if (!strncmp (path, "/strip/select/", 14) && strlen (path) > 14) {
                int ssid = atoi (&path[14]);
                ret = strip_gui_select (ssid, argv[0]->i, msg);
@@ -3789,6 +3794,19 @@ OSC::strip_expand (int ssid, int yn, lo_message msg)
        return _strip_select (s, get_address (msg));
 }
 
+int
+OSC::strip_hide (int ssid, int state, lo_message msg)
+{
+       boost::shared_ptr<Stripable> s = get_strip (ssid, get_address (msg));
+
+       if (s) {
+               if (state != s->is_hidden ()) {
+                       s->presentation_info().set_hidden ((bool) state);
+               }
+       }
+       return 0;
+}
+
 int
 OSC::_strip_select (boost::shared_ptr<Stripable> s, lo_address addr)
 {