Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-#include <gtkmm/comboboxtext.h>
+#include <vector>
+
+#include <gtkmm/combobox.h>
#include <gtkmm/box.h>
#include <gtkmm/spinbutton.h>
#include <gtkmm/table.h>
#include <gtkmm/scrolledwindow.h>
namespace Gtk {
-class CellRendererCombo;
+ class CellRendererCombo;
}
#include "button.h"
class MackieControlProtocol;
+namespace Mackie {
+ class Surface;
+}
+
class MackieControlProtocolGUI : public Gtk::Notebook
{
public:
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<Gtk::ComboBox*> PortCombos;
+ PortCombos input_combos;
+ PortCombos output_combos;
+
+ struct MidiPortColumns : public Gtk::TreeModel::ColumnRecord {
+ MidiPortColumns() {
+ add (short_name);
+ add (full_name);
+ }
+ Gtk::TreeModelColumn<std::string> short_name;
+ Gtk::TreeModelColumn<std::string> full_name;
+ };
struct AvailableActionColumns : public Gtk::TreeModel::ColumnRecord {
AvailableActionColumns() {
AvailableActionColumns available_action_columns;
FunctionKeyColumns function_key_columns;
+ MidiPortColumns midi_port_columns;
Gtk::ScrolledWindow function_key_scroller;
Gtk::TreeView function_key_editor;
Glib::RefPtr<Gtk::ListStore> function_key_model;
Glib::RefPtr<Gtk::TreeStore> available_action_model;
+ Glib::RefPtr<Gtk::ListStore> build_midi_port_list (bool for_input);
+
void build_available_action_menu ();
void refresh_function_key_editor ();
void build_function_key_editor ();
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<std::string> const&, std::vector<std::string> const&,
+ Gtk::ComboBox* input_combo,
+ Gtk::ComboBox* output_combo,
+ boost::shared_ptr<Mackie::Surface> surface);
+
+ PBD::ScopedConnection connection_change_connection;
+ void connection_handler ();
+
+ Glib::RefPtr<Gtk::ListStore> build_midi_port_list (std::vector<std::string> const & ports, bool for_input);
+ bool ignore_active_change;
+ void active_port_changed (Gtk::ComboBox* combo, boost::weak_ptr<Mackie::Surface> ws, bool for_input);
};
}