X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fsurfaces%2Fmackie%2Fgui.h;h=15d266634cc3dcdc56e99c7eef875911ca04b3ac;hb=cf52d6e4b40111eb04b244ec054055a4ec15dbe0;hp=4c2acc62782e486ddfe3c246eb22cdb2a748fd1c;hpb=4403ce4bd4de0868cede3473f66e4fe349410242;p=ardour.git diff --git a/libs/surfaces/mackie/gui.h b/libs/surfaces/mackie/gui.h index 4c2acc6278..15d266634c 100644 --- a/libs/surfaces/mackie/gui.h +++ b/libs/surfaces/mackie/gui.h @@ -1,22 +1,24 @@ /* Copyright (C) 2010-2012 Paul Davis - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software 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); @@ -57,7 +75,7 @@ class MackieControlProtocolGUI : public Gtk::Notebook Gtk::TreeModelColumn name; Gtk::TreeModelColumn path; }; - + struct FunctionKeyColumns : public Gtk::TreeModel::ColumnRecord { FunctionKeyColumns() { 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); }; }