From ec76d7ce039c84dcd41419207f824fe2ae4a1488 Mon Sep 17 00:00:00 2001 From: Len Ovens Date: Sun, 2 Jul 2017 08:27:50 -0700 Subject: [PATCH] OSC: GUI indicate invalid port and set to old port on defocus if not valid --- libs/surfaces/osc/osc_gui.cc | 89 +++++++++++++++++++++--------------- libs/surfaces/osc/osc_gui.h | 9 ++-- 2 files changed, 56 insertions(+), 42 deletions(-) diff --git a/libs/surfaces/osc/osc_gui.cc b/libs/surfaces/osc/osc_gui.cc index f1dc04d067..9fe6b6e798 100644 --- a/libs/surfaces/osc/osc_gui.cc +++ b/libs/surfaces/osc/osc_gui.cc @@ -33,7 +33,6 @@ #include #include #include -#include #include #include "gtkmm2ext/gtk_ui.h" @@ -59,7 +58,7 @@ OSC_GUI::OSC_GUI (OSC& p) int n = 0; // table row Table* table = manage (new Table); Label* label; - table->set_row_spacings (10); + table->set_row_spacings (16); table->set_col_spacings (6); table->set_border_width (12); get_session (); @@ -91,8 +90,6 @@ OSC_GUI::OSC_GUI (OSC& p) label->set_alignment(1, .5); table->attach (*label, 0, 1, n, n+1, AttachOptions(FILL|EXPAND), AttachOptions(0)); table->attach (port_entry, 1, 2, n, n+1, AttachOptions(FILL|EXPAND), AttachOptions(0), 0, 0); - port_entry.set_range(1024, 0xffff); - port_entry.set_increments (1, 100); port_entry.set_text(cp.get_remote_port().c_str()); if (!cp.get_portmode()) { port_entry.set_sensitive (false); @@ -104,9 +101,7 @@ OSC_GUI::OSC_GUI (OSC& p) label->set_alignment(1, .5); table->attach (*label, 0, 1, n, n+1, AttachOptions(FILL|EXPAND), AttachOptions(0)); table->attach (bank_entry, 1, 2, n, n+1, AttachOptions(FILL|EXPAND), AttachOptions(0), 0, 0); - bank_entry.set_range (0, 0xffff); - bank_entry.set_increments (1, 8); - bank_entry.set_value (cp.get_banksize()); + bank_entry.set_text (string_compose ("%1", cp.get_banksize()).c_str()); ++n; @@ -115,9 +110,7 @@ OSC_GUI::OSC_GUI (OSC& p) label->set_alignment(1, .5); table->attach (*label, 0, 1, n, n+1, AttachOptions(FILL|EXPAND), AttachOptions(0)); table->attach (send_page_entry, 1, 2, n, n+1, AttachOptions(FILL|EXPAND), AttachOptions(0), 0, 0); - send_page_entry.set_range (0, 0xffff); - send_page_entry.set_increments (1, 8); - send_page_entry.set_value (cp.get_send_size()); + send_page_entry.set_text (string_compose ("%1", cp.get_send_size()).c_str()); ++n; @@ -126,9 +119,7 @@ OSC_GUI::OSC_GUI (OSC& p) label->set_alignment(1, .5); table->attach (*label, 0, 1, n, n+1, AttachOptions(FILL|EXPAND), AttachOptions(0)); table->attach (plugin_page_entry, 1, 2, n, n+1, AttachOptions(FILL|EXPAND), AttachOptions(0), 0, 0); - plugin_page_entry.set_range (0, 0xffff); - plugin_page_entry.set_increments (1, 8); - plugin_page_entry.set_value (cp.get_send_size()); + plugin_page_entry.set_text (string_compose ("%1", cp.get_plugin_size()).c_str()); ++n; @@ -187,10 +178,11 @@ OSC_GUI::OSC_GUI (OSC& p) 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)); - 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)); - plugin_page_entry.signal_activate().connect (sigc::mem_fun (*this, &OSC_GUI::plugin_page_changed)); + port_entry.signal_changed().connect (sigc::mem_fun (*this, &OSC_GUI::port_changed)); + port_entry.signal_focus_out_event().connect (sigc::mem_fun (*this, &OSC_GUI::port_focus_out)); + bank_entry.signal_changed().connect (sigc::mem_fun (*this, &OSC_GUI::bank_changed)); + send_page_entry.signal_changed().connect (sigc::mem_fun (*this, &OSC_GUI::send_page_changed)); + plugin_page_entry.signal_changed().connect (sigc::mem_fun (*this, &OSC_GUI::plugin_page_changed)); // Strip Types Calculate Page int stn = 0; // table row @@ -511,18 +503,37 @@ void OSC_GUI::port_changed () { std::string str = port_entry.get_text (); - if (port_entry.get_value() == 3819) { - str = "8000"; - port_entry.set_value (8000); + uint32_t prt = atoi (str.c_str()); + if (str == "3819" || prt < 1024) { + + port_entry.set_progress_fraction (1.0); + //str = "8000"; + } else { + + port_entry.set_progress_fraction (0.0); + cp.set_remote_port (str); + save_user (); } - cp.set_remote_port (str); - save_user (); +} + +bool +OSC_GUI::port_focus_out (GdkEventFocus* ) +{ + std::string str = port_entry.get_text (); + uint32_t prt = atoi (str.c_str()); + if (str == "3819" || prt < 1024) { + port_entry.set_text(cp.get_remote_port().c_str()); + + port_entry.set_progress_fraction (0.0); + } + return false; } void OSC_GUI::bank_changed () { - uint32_t bsize = bank_entry.get_value (); + uint32_t bsize = atoi(bank_entry.get_text ()); + bank_entry.set_text (string_compose ("%1", bsize)); cp.set_banksize (bsize); save_user (); @@ -531,7 +542,8 @@ OSC_GUI::bank_changed () void OSC_GUI::send_page_changed () { - uint32_t ssize = send_page_entry.get_value (); + uint32_t ssize = atoi (send_page_entry.get_text ()); + send_page_entry.set_text (string_compose ("%1", ssize)); cp.set_send_size (ssize); save_user (); @@ -540,7 +552,8 @@ OSC_GUI::send_page_changed () void OSC_GUI::plugin_page_changed () { - uint32_t psize = plugin_page_entry.get_value (); + uint32_t psize = atoi (plugin_page_entry.get_text ()); + plugin_page_entry.set_text (string_compose ("%1", psize)); cp.set_plugin_size (psize); save_user (); @@ -594,11 +607,11 @@ void OSC_GUI::factory_reset () { cp.set_banksize (0); - bank_entry.set_value (0); + bank_entry.set_text ("0"); cp.set_send_size (0); - send_page_entry.set_value (0); + send_page_entry.set_text ("0"); cp.set_plugin_size (0); - plugin_page_entry.set_value (0); + plugin_page_entry.set_text ("0"); cp.set_defaultstrip (159); cp.set_defaultfeedback (0); reshow_values (); @@ -607,7 +620,7 @@ OSC_GUI::factory_reset () cp.set_portmode (0); portmode_combo.set_active (0); cp.set_remote_port ("8000"); - port_entry.set_value (8000); + port_entry.set_text ("8000"); cp.clear_devices (); cp.gui_changed (); } @@ -912,24 +925,24 @@ OSC_GUI::load_preset (std::string preset) } if ((child = root->child ("Bank-Size")) == 0 || (prop = child->property ("value")) == 0) { cp.set_banksize (sesn_bank); - bank_entry.set_value (sesn_bank); + bank_entry.set_text (string_compose("%1", sesn_bank)); } else { cp.set_banksize (atoi (prop->value().c_str())); - bank_entry.set_value (atoi (prop->value().c_str())); + bank_entry.set_text (prop->value().c_str()); } if ((child = root->child ("Send-Size")) == 0 || (prop = child->property ("value")) == 0) { cp.set_send_size (sesn_send); - send_page_entry.set_value (sesn_send); + send_page_entry.set_text (string_compose("%1", sesn_send)); } else { cp.set_send_size (atoi (prop->value().c_str())); - send_page_entry.set_value (atoi (prop->value().c_str())); + send_page_entry.set_text (prop->value().c_str()); } if ((child = root->child ("Plugin-Size")) == 0 || (prop = child->property ("value")) == 0) { cp.set_plugin_size (sesn_plugin); - plugin_page_entry.set_value (sesn_plugin); + plugin_page_entry.set_text (string_compose("%1", sesn_plugin)); } else { cp.set_plugin_size (atoi (prop->value().c_str())); - plugin_page_entry.set_value (atoi (prop->value().c_str())); + plugin_page_entry.set_text (prop->value().c_str()); } if ((child = root->child ("Strip-Types")) == 0 || (prop = child->property ("value")) == 0) { cp.set_defaultstrip (sesn_strips); @@ -976,11 +989,11 @@ OSC_GUI::restore_sesn_values () cp.set_remote_port (sesn_port); port_entry.set_text (sesn_port); cp.set_banksize (sesn_bank); - bank_entry.set_value (sesn_bank); + bank_entry.set_text (string_compose ("%1", sesn_bank)); cp.set_send_size (sesn_send); - send_page_entry.set_value (sesn_send); + send_page_entry.set_text (string_compose ("%1", sesn_send)); cp.set_plugin_size (sesn_plugin); - plugin_page_entry.set_value (sesn_plugin); + plugin_page_entry.set_text (string_compose ("%1", sesn_plugin)); cp.set_defaultstrip (sesn_strips); cp.set_defaultfeedback (sesn_feedback); reshow_values (); diff --git a/libs/surfaces/osc/osc_gui.h b/libs/surfaces/osc/osc_gui.h index c1ab20d630..567a1b7d2b 100644 --- a/libs/surfaces/osc/osc_gui.h +++ b/libs/surfaces/osc/osc_gui.h @@ -43,10 +43,10 @@ private: // settings page Gtk::ComboBoxText debug_combo; Gtk::ComboBoxText portmode_combo; - Gtk::SpinButton port_entry; - Gtk::SpinButton bank_entry; - Gtk::SpinButton send_page_entry; - Gtk::SpinButton plugin_page_entry; + Gtk::Entry port_entry; + Gtk::Entry bank_entry; + Gtk::Entry send_page_entry; + Gtk::Entry plugin_page_entry; Gtk::ComboBoxText gainmode_combo; Gtk::ComboBoxText preset_combo; std::vector preset_options; @@ -73,6 +73,7 @@ private: void factory_reset (); void reshow_values (); void port_changed (); + bool port_focus_out (GdkEventFocus*); void bank_changed (); void send_page_changed (); void plugin_page_changed (); -- 2.30.2