X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fsurfaces%2Fmackie%2Fgui.h;h=15d266634cc3dcdc56e99c7eef875911ca04b3ac;hb=febd1d5c8834384f43e5a5319ebfa1c933ca5c6c;hp=7927d106b006aedc7a6aea905218f9cb1bd3dc55;hpb=4dc63966f0872efe768dad61eb9b8785d06b92d1;p=ardour.git diff --git a/libs/surfaces/mackie/gui.h b/libs/surfaces/mackie/gui.h index 7927d106b0..15d266634c 100644 --- a/libs/surfaces/mackie/gui.h +++ b/libs/surfaces/mackie/gui.h @@ -16,7 +16,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include +#include + +#include #include #include #include @@ -26,29 +28,45 @@ #include namespace Gtk { -class CellRendererCombo; + class CellRendererCombo; } #include "button.h" -#include "i18n.h" +#include "pbd/i18n.h" namespace ArdourSurface { class MackieControlProtocol; +namespace Mackie { + class Surface; +} + class MackieControlProtocolGUI : public Gtk::Notebook { public: MackieControlProtocolGUI (MackieControlProtocol &); - + private: MackieControlProtocol& _cp; + Gtk::Table table; Gtk::ComboBoxText _surface_combo; Gtk::ComboBoxText _profile_combo; - Gtk::ComboBoxText _input_port_combo; - Gtk::ComboBoxText _output_port_combo; - + + typedef std::vector PortCombos; + PortCombos input_combos; + PortCombos output_combos; + + struct MidiPortColumns : public Gtk::TreeModel::ColumnRecord { + MidiPortColumns() { + add (short_name); + add (full_name); + } + Gtk::TreeModelColumn short_name; + Gtk::TreeModelColumn full_name; + }; + struct AvailableActionColumns : public Gtk::TreeModel::ColumnRecord { AvailableActionColumns() { add (name); @@ -81,12 +99,15 @@ class MackieControlProtocolGUI : public Gtk::Notebook AvailableActionColumns available_action_columns; FunctionKeyColumns function_key_columns; + MidiPortColumns midi_port_columns; Gtk::ScrolledWindow function_key_scroller; Gtk::TreeView function_key_editor; Glib::RefPtr function_key_model; Glib::RefPtr available_action_model; + Glib::RefPtr build_midi_port_list (bool for_input); + void build_available_action_menu (); void refresh_function_key_editor (); void build_function_key_editor (); @@ -107,13 +128,31 @@ class MackieControlProtocolGUI : public Gtk::Notebook Gtk::HScale touch_sensitivity_scale; Gtk::Button recalibrate_fader_button; Gtk::Adjustment ipmidi_base_port_adjustment; - Gtk::SpinButton ipmidi_base_port_spinner; Gtk::Button discover_button; void discover_clicked (); void recalibrate_faders (); void toggle_backlight (); void touch_sensitive_change (); + + Gtk::Widget* device_dependent_widget (); + Gtk::Widget* _device_dependent_widget; + int device_dependent_row; + + PBD::ScopedConnection device_change_connection; + void device_changed (); + + void update_port_combos (std::vector const&, std::vector const&, + Gtk::ComboBox* input_combo, + Gtk::ComboBox* output_combo, + boost::shared_ptr surface); + + PBD::ScopedConnection connection_change_connection; + void connection_handler (); + + Glib::RefPtr build_midi_port_list (std::vector const & ports, bool for_input); + bool ignore_active_change; + void active_port_changed (Gtk::ComboBox* combo, boost::weak_ptr ws, bool for_input); }; }