summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-10-03 13:13:52 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2015-10-03 13:13:58 -0400
commit4403ce4bd4de0868cede3473f66e4fe349410242 (patch)
tree69b3ebb39033c4abf2399ca9df556ae1997dd08b
parent29c484cd95afac615b9970b8392bc78db5928ff0 (diff)
make a start on providing direct choice of MIDI ports where an MCP device can be reached
-rw-r--r--libs/surfaces/mackie/gui.cc71
-rw-r--r--libs/surfaces/mackie/gui.h2
2 files changed, 59 insertions, 14 deletions
diff --git a/libs/surfaces/mackie/gui.cc b/libs/surfaces/mackie/gui.cc
index 1ba68a1f72..ac366efbd3 100644
--- a/libs/surfaces/mackie/gui.cc
+++ b/libs/surfaces/mackie/gui.cc
@@ -33,6 +33,7 @@
#include "gtkmm2ext/utils.h"
#include "gtkmm2ext/actions.h"
+#include "ardour/audioengine.h"
#include "ardour/rc_configuration.h"
#include "mackie_control_protocol.h"
@@ -91,14 +92,15 @@ MackieControlProtocolGUI::MackieControlProtocolGUI (MackieControlProtocol& p)
set_border_width (12);
- Gtk::Table* table = Gtk::manage (new Gtk::Table (2, 9));
+ Gtk::Table* table = Gtk::manage (new Gtk::Table (2, 12));
table->set_row_spacings (4);
table->set_col_spacings (6);
table->set_border_width (12);
+
l = manage (new Gtk::Label (_("Device Type:")));
l->set_alignment (1.0, 0.5);
table->attach (*l, 0, 1, row, row+1, AttachOptions(FILL|EXPAND), AttachOptions(0));
- table->attach (_surface_combo, 1, 2, row, row+1, AttachOptions(FILL|EXPAND), AttachOptions(0), 0, 20);
+ table->attach (_surface_combo, 1, 2, row, row+1, AttachOptions(FILL|EXPAND), AttachOptions(0), 0, 0);
row++;
vector<string> surfaces;
@@ -110,6 +112,50 @@ MackieControlProtocolGUI::MackieControlProtocolGUI (MackieControlProtocol& p)
_surface_combo.set_active_text (p.device_info().name());
_surface_combo.signal_changed().connect (sigc::mem_fun (*this, &MackieControlProtocolGUI::surface_combo_changed));
+ vector<string> midi_ports;
+
+ ARDOUR::AudioEngine::instance()->get_ports ("", ARDOUR::DataType::MIDI, ARDOUR::PortFlags (ARDOUR::IsOutput|ARDOUR::IsPhysical), midi_ports);
+ Gtkmm2ext::set_popdown_strings (_input_port_combo, midi_ports);
+
+ string send_string;
+ string receive_string;
+
+ if (_cp.device_info().extenders() > 0) {
+ send_string = _("Main surface sends via:");
+ receive_string = _("Main surface receives via:");
+ } else {
+ send_string = _("Surface sends via:");
+ receive_string = _("Surface receives via:");
+ }
+
+ l = manage (new Gtk::Label (send_string));
+ l->set_alignment (1.0, 0.5);
+ table->attach (*l, 0, 1, row, row+1, AttachOptions(FILL|EXPAND), AttachOptions(0));
+ table->attach (_input_port_combo, 1, 2, row, row+1, AttachOptions(FILL|EXPAND), AttachOptions(0), 0, 0);
+ row++;
+
+ midi_ports.clear ();
+ ARDOUR::AudioEngine::instance()->get_ports ("", ARDOUR::DataType::MIDI, ARDOUR::PortFlags (ARDOUR::IsInput|ARDOUR::IsPhysical), midi_ports);
+ Gtkmm2ext::set_popdown_strings (_output_port_combo, midi_ports);
+
+ l = manage (new Gtk::Label (receive_string));
+ l->set_alignment (1.0, 0.5);
+ table->attach (*l, 0, 1, row, row+1, AttachOptions(FILL|EXPAND), AttachOptions(0));
+ table->attach (_output_port_combo, 1, 2, row, row+1, AttachOptions(FILL|EXPAND), AttachOptions(0), 0, 0);
+ row++;
+
+ l = manage (new Gtk::Label (_("ipMIDI Port (lowest)")));
+ l->set_alignment (1.0, 0.5);
+ table->attach (*l, 0, 1, row, row+1, AttachOptions(FILL|EXPAND), AttachOptions (0));
+ table->attach (ipmidi_base_port_spinner, 1, 2, row, row+1, AttachOptions(FILL|EXPAND), AttachOptions (0));
+ row++;
+
+ ipmidi_base_port_spinner.set_sensitive (_cp.device_info().uses_ipmidi());
+ ipmidi_base_port_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &MackieControlProtocolGUI::ipmidi_spinner_changed));
+
+ /* leave an extra blank row */
+ row++;
+
RadioButtonGroup rb_group = absolute_touch_mode_button.get_group();
touch_move_mode_button.set_group (rb_group);
@@ -165,15 +211,6 @@ MackieControlProtocolGUI::MackieControlProtocolGUI (MackieControlProtocol& p)
row++;
- l = manage (new Gtk::Label (_("ipMIDI Port (lowest)")));
- l->set_alignment (1.0, 0.5);
- table->attach (*l, 0, 1, row, row+1, AttachOptions(FILL|EXPAND), AttachOptions (0));
- table->attach (ipmidi_base_port_spinner, 1, 2, row, row+1, AttachOptions(FILL|EXPAND), AttachOptions (0));
- row++;
-
- ipmidi_base_port_spinner.set_sensitive (_cp.device_info().uses_ipmidi());
- ipmidi_base_port_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &MackieControlProtocolGUI::ipmidi_spinner_changed));
-
table->attach (discover_button, 1, 2, row, row+1, AttachOptions(FILL|EXPAND), AttachOptions (0));
discover_button.signal_clicked().connect (sigc::mem_fun (*this, &MackieControlProtocolGUI::discover_clicked));
row++;
@@ -596,9 +633,15 @@ MackieControlProtocolGUI::surface_combo_changed ()
_cp.not_session_load();
_cp.set_device (_surface_combo.get_active_text());
- /* update ipMIDI field */
-
- ipmidi_base_port_spinner.set_sensitive (_cp.device_info().uses_ipmidi());
+ if (_cp.device_info().uses_ipmidi()) {
+ ipmidi_base_port_spinner.set_sensitive (true);
+ _input_port_combo.set_sensitive (false);
+ _output_port_combo.set_sensitive (false);
+ } else {
+ ipmidi_base_port_spinner.set_sensitive (false);
+ _input_port_combo.set_sensitive (true);
+ _output_port_combo.set_sensitive (true);
+ }
}
void
diff --git a/libs/surfaces/mackie/gui.h b/libs/surfaces/mackie/gui.h
index 3013550bf0..4c2acc6278 100644
--- a/libs/surfaces/mackie/gui.h
+++ b/libs/surfaces/mackie/gui.h
@@ -46,6 +46,8 @@ class MackieControlProtocolGUI : public Gtk::Notebook
MackieControlProtocol& _cp;
Gtk::ComboBoxText _surface_combo;
Gtk::ComboBoxText _profile_combo;
+ Gtk::ComboBoxText _input_port_combo;
+ Gtk::ComboBoxText _output_port_combo;
struct AvailableActionColumns : public Gtk::TreeModel::ColumnRecord {
AvailableActionColumns() {