OSC: simplify GUI and make less error-prone
authorLen Ovens <len@ovenwerks.net>
Sat, 24 Jun 2017 20:13:53 +0000 (13:13 -0700)
committerLen Ovens <len@ovenwerks.net>
Sat, 24 Jun 2017 20:13:53 +0000 (13:13 -0700)
libs/surfaces/osc/osc.cc
libs/surfaces/osc/osc_gui.cc

index 9818514e3683b30f787c32dc189e6b915f9569df..1d38889d265c1384d510820bfa0c9f97c70417a2 100644 (file)
@@ -1333,11 +1333,6 @@ OSC::get_address (lo_message msg)
 int
 OSC::refresh_surface (lo_message msg)
 {
-       if (address_only) {
-               // get rid of all surfaces and observers.
-               // needs change to only clear those for this address on all ports
-               clear_devices();
-       }
        OSCSurface *s = get_surface(get_address (msg));
        // restart all observers
        set_surface (s->bank_size, (uint32_t) s->strip_types.to_ulong(), (uint32_t) s->feedback.to_ulong(), \
@@ -4757,25 +4752,6 @@ OSC::get_state ()
        node.set_property ("gainmode", default_gainmode);
        node.set_property ("send-page-size", default_send_size);
        node.set_property ("plug-page-size", default_plugin_size);
-       if (_surface.size()) {
-               XMLNode* config = new XMLNode (X_("Configurations"));
-               for (uint32_t it = 0; it < _surface.size(); ++it) {
-                       OSCSurface* sur = &_surface[it];
-                       XMLNode* devnode = new XMLNode (X_("Configuration"));
-                       devnode->set_property (X_("url"), sur->remote_url);
-                       devnode->set_property (X_("bank-size"), sur->bank_size);
-                       devnode->set_property (X_("strip-types"), (uint64_t)sur->strip_types.to_ulong());
-                       devnode->set_property (X_("feedback"), (uint64_t)sur->feedback.to_ulong());
-                       devnode->set_property (X_("gainmode"), sur->gainmode);
-                       devnode->set_property (X_("send-page-size"), sur->send_page_size);
-                       devnode->set_property (X_("plug-page-size"), sur->plug_page_size);
-                       devnode->set_property (X_("no-clear"), sur->no_clear);
-                       devnode->set_property (X_("cue"), sur->cue);
-                       devnode->set_property (X_("aux"), sur->aux);
-                       config->add_child_nocopy (*devnode);
-               }
-               node.add_child_nocopy (*config);
-       }
        return node;
 }
 
@@ -4799,44 +4775,6 @@ OSC::set_state (const XMLNode& node, int version)
        node.get_property (X_("send-page-size"), default_send_size);
        node.get_property (X_("plugin-page-size"), default_plugin_size);
 
-       XMLNode* cnode = node.child (X_("Configurations"));
-
-       if (cnode) {
-               XMLNodeList const& devices = cnode->children();
-               for (XMLNodeList::const_iterator d = devices.begin(); d != devices.end(); ++d) {
-                       OSCSurface s;
-                       if (!(*d)->get_property (X_("url"), s.remote_url)) {
-                               continue;
-                       }
-
-                       bank_dirty = true;
-
-                       (*d)->get_property (X_("bank-size"), s.bank_size);
-
-                       uint64_t bits;
-                       if ((*d)->get_property (X_ ("strip-types"), bits)) {
-                               s.strip_types = bits;
-                       }
-                       if ((*d)->get_property (X_("feedback"), bits)) {
-                               s.feedback = bits;
-                       }
-                       (*d)->get_property (X_("gainmode"), s.gainmode);
-
-                       (*d)->get_property (X_("send-page-size"), s.send_page_size);
-                       (*d)->get_property (X_("plug-page-size"), s.plug_page_size);
-                       (*d)->get_property (X_("no-clear"), s.no_clear);
-                       (*d)->get_property (X_("cue"), s.cue);
-                       (*d)->get_property (X_("aux"), s.aux);
-                       s.bank = 1;
-                       s.sel_obs = 0;
-                       s.expand = 0;
-                       s.expand_enable = false;
-                       s.strips = get_sorted_stripables (s.strip_types, s.cue);
-                       s.nstrips = s.strips.size ();
-                       s.jogmode = JOG;
-                       _surface.push_back (s);
-               }
-       }
        global_init = true;
        tick = false;
 
index 7a64aa27bf9737b7541ff0e903a245043e926f8f..f1dc04d067bce6ce91b80dc4961f17f176796d6f 100644 (file)
@@ -59,7 +59,6 @@ OSC_GUI::OSC_GUI (OSC& p)
        int n = 0; // table row
        Table* table = manage (new Table);
        Label* label;
-       Button* button;
        table->set_row_spacings (10);
        table->set_col_spacings (6);
        table->set_border_width (12);
@@ -80,8 +79,8 @@ OSC_GUI::OSC_GUI (OSC& p)
        table->attach (*label, 0, 1, n, n+1, AttachOptions(FILL|EXPAND), AttachOptions(0));
        table->attach (portmode_combo, 1, 2, n, n+1, AttachOptions(FILL|EXPAND), AttachOptions(0), 0, 0);
        std::vector<std::string> portmode_options;
-       portmode_options.push_back (_("Auto"));
-       portmode_options.push_back (_("Manual"));
+       portmode_options.push_back (_("Auto - Reply to Originating Port"));
+       portmode_options.push_back (_("Manual - Specify Below"));
 
        set_popdown_strings (portmode_combo, portmode_options);
        portmode_combo.set_active ((int)cp.get_portmode());
@@ -182,17 +181,12 @@ OSC_GUI::OSC_GUI (OSC& p)
        preset_combo.signal_changed().connect (sigc::mem_fun (*this, &OSC_GUI::preset_changed));
        ++n;
 
-       // refresh button
-       button = manage (new Gtk::Button(_("Clear OSC Devices")));
-       table->attach (*button, 0, 2, n, n+1, AttachOptions(FILL|EXPAND), AttachOptions(0), 0, 10);
-
        table->show_all ();
        append_page (*table, _("OSC Setup"));
 
        debug_combo.signal_changed().connect (sigc::mem_fun (*this, &OSC_GUI::debug_changed));
        portmode_combo.signal_changed().connect (sigc::mem_fun (*this, &OSC_GUI::portmode_changed));
        gainmode_combo.signal_changed().connect (sigc::mem_fun (*this, &OSC_GUI::gainmode_changed));
-       button->signal_clicked().connect (sigc::mem_fun (*this, &OSC_GUI::clear_device));
        port_entry.signal_activate().connect (sigc::mem_fun (*this, &OSC_GUI::port_changed));
        bank_entry.signal_activate().connect (sigc::mem_fun (*this, &OSC_GUI::bank_changed));
        send_page_entry.signal_activate().connect (sigc::mem_fun (*this, &OSC_GUI::send_page_changed));
@@ -503,18 +497,12 @@ OSC_GUI::debug_changed ()
 void
 OSC_GUI::portmode_changed ()
 {
-       std::string str = portmode_combo.get_active_text ();
-       if (str == _("Auto")) {
-               cp.set_portmode (0);
-               port_entry.set_sensitive (false);
-       }
-       else if (str == _("Manual")) {
-               cp.set_portmode (1);
+       int pm = portmode_combo.get_active_row_number ();
+       cp.set_portmode (pm);
+       if (pm) {
                port_entry.set_sensitive (true);
-       }
-       else {
-               std::cerr << "Invalid OSC Port Mode\n";
-               assert (0);
+       } else {
+               port_entry.set_sensitive (false);
        }
        save_user ();
 }
@@ -874,6 +862,7 @@ OSC_GUI::save_user ()
        }
        preset_combo.set_active (2);
        cp.gui_changed();
+       clear_device ();
 
 }