diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2020-03-13 22:16:25 -0600 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2020-03-13 22:16:37 -0600 |
commit | 91a87fbc5b10087e3a6012fa8ec7af78aa67adef (patch) | |
tree | 1df4aa92efd43a36cbf552e335b81aff9852841c /gtk2_ardour/transport_masters_dialog.h | |
parent | d95f6039f88c085750ac9bf369cf14b410bfb271 (diff) |
somewhat convoluted reworking to get TransportMastersWidget's per-row port combos to update for hotplug
This approach should extended to other things, notably control surfaces
Diffstat (limited to 'gtk2_ardour/transport_masters_dialog.h')
-rw-r--r-- | gtk2_ardour/transport_masters_dialog.h | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/gtk2_ardour/transport_masters_dialog.h b/gtk2_ardour/transport_masters_dialog.h index 94d54fc6c0..aa4d2c3265 100644 --- a/gtk2_ardour/transport_masters_dialog.h +++ b/gtk2_ardour/transport_masters_dialog.h @@ -103,19 +103,8 @@ class TransportMastersWidget : public Gtk::VBox, public ARDOUR::SessionHandlePtr Row (TransportMastersWidget& parent); ~Row (); - struct PortColumns : public Gtk::TreeModel::ColumnRecord { - PortColumns() { - add (short_name); - add (full_name); - } - Gtk::TreeModelColumn<std::string> short_name; - Gtk::TreeModelColumn<std::string> full_name; - }; - - PortColumns port_columns; - void populate_port_combo (); - Glib::RefPtr<Gtk::ListStore> build_port_list (std::vector<std::string> const & ports); + void build_port_list (ARDOUR::DataType); void use_button_toggled (); void collect_button_toggled (); @@ -132,6 +121,8 @@ class TransportMastersWidget : public Gtk::VBox, public ARDOUR::SessionHandlePtr PBD::ScopedConnection property_change_connection; bool ignore_active_change; + + bool port_combo_proxy (GdkEventButton*); }; std::vector<Row*> rows; @@ -146,6 +137,26 @@ class TransportMastersWidget : public Gtk::VBox, public ARDOUR::SessionHandlePtr PBD::ScopedConnection remove_connection; PBD::ScopedConnection engine_running_connection; + struct PortColumns : public Gtk::TreeModel::ColumnRecord { + PortColumns() { + add (short_name); + add (full_name); + } + Gtk::TreeModelColumn<std::string> short_name; + Gtk::TreeModelColumn<std::string> full_name; + }; + + PortColumns port_columns; + + friend class Row; + Glib::RefPtr<Gtk::ListStore> midi_port_store; + Glib::RefPtr<Gtk::ListStore> audio_port_store; + + PBD::ScopedConnection port_reg_connection; + void update_ports (); + bool ignore_active_change; + void build_port_model (Glib::RefPtr<Gtk::ListStore>, std::vector<std::string> const &); + void rebuild (); void clear (); void current_changed (boost::shared_ptr<ARDOUR::TransportMaster> old_master, boost::shared_ptr<ARDOUR::TransportMaster> new_master); |