OSC: simplify GUI and make less error-prone

This commit is contained in:
Len Ovens
2017-06-24 13:13:53 -07:00
parent 33bfe681c9
commit 86ee4de7a9
2 changed files with 8 additions and 81 deletions

View 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;

View 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 ();
}