#include <list>
#include <string>
#include <vector>
-//#include <glibmm/miscutils.h>
#include <errno.h>
int n = 0; // table row
Table* table = manage (new Table);
Label* label;
- Button* button;
- table->set_row_spacings (10);
+ table->set_row_spacings (16);
table->set_col_spacings (6);
table->set_border_width (12);
get_session ();
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());
++n;
+ // default send page setting
+ label = manage (new Gtk::Label(_("Send Page Size:")));
+ 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());
+
+ ++n;
+
+ // default plugin page setting
+ label = manage (new Gtk::Label(_("Plugin Page Size:")));
+ 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());
+
+ ++n;
+
// Gain Mode
label = manage (new Gtk::Label(_("Gain Mode:")));
label->set_alignment(1, .5);
table->attach (*label, 0, 1, n, n+1, AttachOptions(FILL|EXPAND), AttachOptions(0));
table->attach (gainmode_combo, 1, 2, n, n+1, AttachOptions(FILL|EXPAND), AttachOptions(0), 0, 0);
std::vector<std::string> gainmode_options;
- gainmode_options.push_back (_("dB"));
- gainmode_options.push_back (_("Position"));
+ gainmode_options.push_back (_("/strip/gain (dB)"));
+ gainmode_options.push_back (_("/strip/fader (Position)"));
set_popdown_strings (gainmode_combo, gainmode_options);
gainmode_combo.set_active ((int)cp.get_gainmode());
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));
+ 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
fbtable->attach (select_fb, 1, 2, fn, fn+1, AttachOptions(FILL|EXPAND), AttachOptions(0), 0, 0);
++fn;
+ label = manage (new Gtk::Label(_("Use /reply instead of #reply:")));
+ label->set_alignment(1, .5);
+ fbtable->attach (*label, 0, 1, fn, fn+1, AttachOptions(FILL|EXPAND), AttachOptions(0));
+ fbtable->attach (use_osc10, 1, 2, fn, fn+1, AttachOptions(FILL|EXPAND), AttachOptions(0), 0, 0);
+ ++fn;
+
fbtable->show_all ();
append_page (*fbtable, _("Default Feedback"));
// set strips and feedback from loaded default values
hp_min_sec.signal_clicked().connect (sigc::mem_fun (*this, &OSC_GUI::set_bitsets));
hp_gui.signal_clicked().connect (sigc::mem_fun (*this, &OSC_GUI::set_bitsets));
select_fb.signal_clicked().connect (sigc::mem_fun (*this, &OSC_GUI::set_bitsets));
+ use_osc10.signal_clicked().connect (sigc::mem_fun (*this, &OSC_GUI::set_bitsets));
preset_busy = false;
}
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 ();
}
OSC_GUI::port_changed ()
{
std::string str = port_entry.get_text ();
- if (port_entry.get_value() == 3819) {
- str = "8000";
- port_entry.set_value (8000);
+ int prt = atoi (str.c_str());
+ if (prt == 3819 || prt < 1024) {
+ // indicate non-valid text
+ port_entry.set_progress_fraction (1.0);
+ } else {
+ port_entry.set_progress_fraction (0.0);
+ cp.set_remote_port (string_compose ("%1", prt));
+ save_user ();
}
- cp.set_remote_port (str);
- save_user ();
+}
+
+bool
+OSC_GUI::port_focus_out (GdkEventFocus* )
+{
+ std::string str = port_entry.get_text ();
+ int prt = atoi (str.c_str());
+ if (prt == 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 ();
}
+void
+OSC_GUI::send_page_changed ()
+{
+ 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 ();
+
+}
+
+void
+OSC_GUI::plugin_page_changed ()
+{
+ 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 ();
+
+}
+
void
OSC_GUI::gainmode_changed ()
{
std::string str = gainmode_combo.get_active_text ();
- if (str == _("dB")) {
+ if (str == _("/strip/gain (dB)")) {
cp.set_gainmode (0);
}
- else if (str == _("Position")) {
+ else if (str == _("/strip/fader (Position)")) {
cp.set_gainmode (1);
}
else {
else {
load_preset (str);
}
+ cp.clear_devices ();
preset_busy = false;
}
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_text ("0");
+ cp.set_plugin_size (0);
+ plugin_page_entry.set_text ("0");
cp.set_defaultstrip (159);
cp.set_defaultfeedback (0);
reshow_values ();
cp.set_gainmode (0);
gainmode_combo.set_active (0);
- cp.set_portmode (0);
- portmode_combo.set_active (0);
+ cp.set_portmode (1);
+ portmode_combo.set_active (1);
cp.set_remote_port ("8000");
- port_entry.set_value (8000);
+ port_entry.set_text ("8000");
cp.clear_devices ();
cp.gui_changed ();
}
hp_min_sec.set_active (def_feedback & 2048);
//hp_gui.set_active (false); // we don't have this yet (Mixbus wants)
select_fb.set_active(def_feedback & 8192);
+ use_osc10.set_active(def_feedback & 16384);
calculate_strip_types ();
calculate_feedback ();
if (select_fb.get_active()) {
fbvalue += 8192;
}
+ if (use_osc10.get_active()) {
+ fbvalue += 16384;
+ }
current_feedback.set_text(string_compose("%1", fbvalue));
}
std::string fullpath = user_preset_directory();
if (g_mkdir_with_parents (fullpath.c_str(), 0755) < 0) {
- error << string_compose(_("Session: cannot create user MCP profile folder \"%1\" (%2)"), fullpath, strerror (errno)) << endmsg;
+ error << string_compose(_("Session: cannot create user OSC profile folder \"%1\" (%2)"), fullpath, strerror (errno)) << endmsg;
return;
}
child->set_property ("value", cp.get_banksize());
node->add_child_nocopy (*child);
+ child = new XMLNode ("Send-Size");
+ child->set_property ("value", cp.get_send_size());
+ node->add_child_nocopy (*child);
+
+ child = new XMLNode ("Plugin-Size");
+ child->set_property ("value", cp.get_plugin_size());
+ node->add_child_nocopy (*child);
+
child = new XMLNode ("Strip-Types");
child->set_property ("value", cp.get_defaultstrip());
node->add_child_nocopy (*child);
tree.set_root (node);
if (!tree.write (fullpath)) {
- error << string_compose ("MCP profile not saved to %1", fullpath) << endmsg;
+ error << string_compose ("OSC profile not saved to %1", fullpath) << endmsg;
}
preset_combo.set_active (2);
cp.gui_changed();
+ clear_device ();
}
}
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_text (string_compose("%1", sesn_send));
+ } else {
+ cp.set_send_size (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_text (string_compose("%1", sesn_plugin));
+ } else {
+ cp.set_plugin_size (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);
sesn_portmode = cp.get_portmode ();
sesn_port = cp.get_remote_port ();
sesn_bank = cp.get_banksize ();
+ sesn_send = cp.get_send_size ();
+ sesn_plugin = cp.get_plugin_size ();
sesn_strips = cp.get_defaultstrip ();
sesn_feedback = cp.get_defaultfeedback ();
sesn_gainmode = cp.get_gainmode ();
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_text (string_compose ("%1", sesn_send));
+ cp.set_plugin_size (sesn_plugin);
+ plugin_page_entry.set_text (string_compose ("%1", sesn_plugin));
cp.set_defaultstrip (sesn_strips);
cp.set_defaultfeedback (sesn_feedback);
reshow_values ();