summaryrefslogtreecommitdiff
path: root/gtk2_ardour/transport_masters_dialog.h
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2020-03-13 22:16:25 -0600
committerPaul Davis <paul@linuxaudiosystems.com>2020-03-13 22:16:37 -0600
commit91a87fbc5b10087e3a6012fa8ec7af78aa67adef (patch)
tree1df4aa92efd43a36cbf552e335b81aff9852841c /gtk2_ardour/transport_masters_dialog.h
parentd95f6039f88c085750ac9bf369cf14b410bfb271 (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.h35
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);