diff --git a/gtk2_ardour/macosx/tracks.xcodeproj/project.pbxproj b/gtk2_ardour/macosx/tracks.xcodeproj/project.pbxproj index 9cfaf498c6..c3703e8b9e 100644 --- a/gtk2_ardour/macosx/tracks.xcodeproj/project.pbxproj +++ b/gtk2_ardour/macosx/tracks.xcodeproj/project.pbxproj @@ -273,6 +273,16 @@ CEAFC771195445560016ACF0 /* time.cc in Sources */ = {isa = PBXBuildFile; fileRef = CEAFC76F195445560016ACF0 /* time.cc */; }; CEB0A9F219583F96006D269A /* session_close_dialog.cc in Sources */ = {isa = PBXBuildFile; fileRef = CEB0A9F119583F96006D269A /* session_close_dialog.cc */; }; CEB0A9F41958447C006D269A /* session_close_dialog.xml in Resources */ = {isa = PBXBuildFile; fileRef = CEB0A9F31958447C006D269A /* session_close_dialog.xml */; }; + CEB9D791197516BE00B21780 /* audio_time_axis.xml in Resources */ = {isa = PBXBuildFile; fileRef = CEB9D787197516BE00B21780 /* audio_time_axis.xml */; }; + CEB9D792197516BE00B21780 /* automation_time_axis.xml in Resources */ = {isa = PBXBuildFile; fileRef = CEB9D788197516BE00B21780 /* automation_time_axis.xml */; }; + CEB9D793197516BE00B21780 /* editor_mixer.xml in Resources */ = {isa = PBXBuildFile; fileRef = CEB9D789197516BE00B21780 /* editor_mixer.xml */; }; + CEB9D794197516BE00B21780 /* inspector_gain_meter.xml in Resources */ = {isa = PBXBuildFile; fileRef = CEB9D78A197516BE00B21780 /* inspector_gain_meter.xml */; }; + CEB9D795197516BE00B21780 /* master_ui_gain_meter.xml in Resources */ = {isa = PBXBuildFile; fileRef = CEB9D78B197516BE00B21780 /* master_ui_gain_meter.xml */; }; + CEB9D796197516BE00B21780 /* master_ui.xml in Resources */ = {isa = PBXBuildFile; fileRef = CEB9D78C197516BE00B21780 /* master_ui.xml */; }; + CEB9D797197516BE00B21780 /* meter_strip.xml in Resources */ = {isa = PBXBuildFile; fileRef = CEB9D78D197516BE00B21780 /* meter_strip.xml */; }; + CEB9D798197516BE00B21780 /* mixer_gain_meter.xml in Resources */ = {isa = PBXBuildFile; fileRef = CEB9D78E197516BE00B21780 /* mixer_gain_meter.xml */; }; + CEB9D799197516BE00B21780 /* mixer_strip.xml in Resources */ = {isa = PBXBuildFile; fileRef = CEB9D78F197516BE00B21780 /* mixer_strip.xml */; }; + CEB9D79A197516BE00B21780 /* track_header_gain_meter.xml in Resources */ = {isa = PBXBuildFile; fileRef = CEB9D790197516BE00B21780 /* track_header_gain_meter.xml */; }; CEDB41321951C668006E6F77 /* buildlog.txt in Resources */ = {isa = PBXBuildFile; fileRef = CEDB41311951C668006E6F77 /* buildlog.txt */; }; /* End PBXBuildFile section */ @@ -1088,6 +1098,16 @@ CEB0A45A19583F3F006D269A /* session_close_dialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = session_close_dialog.h; path = ../session_close_dialog.h; sourceTree = ""; }; CEB0A9F119583F96006D269A /* session_close_dialog.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = session_close_dialog.cc; path = ../session_close_dialog.cc; sourceTree = ""; }; CEB0A9F31958447C006D269A /* session_close_dialog.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = session_close_dialog.xml; sourceTree = ""; }; + CEB9D787197516BE00B21780 /* audio_time_axis.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = audio_time_axis.xml; sourceTree = ""; }; + CEB9D788197516BE00B21780 /* automation_time_axis.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = automation_time_axis.xml; sourceTree = ""; }; + CEB9D789197516BE00B21780 /* editor_mixer.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = editor_mixer.xml; sourceTree = ""; }; + CEB9D78A197516BE00B21780 /* inspector_gain_meter.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = inspector_gain_meter.xml; sourceTree = ""; }; + CEB9D78B197516BE00B21780 /* master_ui_gain_meter.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = master_ui_gain_meter.xml; sourceTree = ""; }; + CEB9D78C197516BE00B21780 /* master_ui.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = master_ui.xml; sourceTree = ""; }; + CEB9D78D197516BE00B21780 /* meter_strip.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = meter_strip.xml; sourceTree = ""; }; + CEB9D78E197516BE00B21780 /* mixer_gain_meter.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = mixer_gain_meter.xml; sourceTree = ""; }; + CEB9D78F197516BE00B21780 /* mixer_strip.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = mixer_strip.xml; sourceTree = ""; }; + CEB9D790197516BE00B21780 /* track_header_gain_meter.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = track_header_gain_meter.xml; sourceTree = ""; }; CEDB41311951C668006E6F77 /* buildlog.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = buildlog.txt; path = ../../../buildlog.txt; sourceTree = ""; }; /* End PBXFileReference section */ @@ -1713,6 +1733,16 @@ 43279429194F0062003C9FEA /* ui */ = { isa = PBXGroup; children = ( + CEB9D787197516BE00B21780 /* audio_time_axis.xml */, + CEB9D788197516BE00B21780 /* automation_time_axis.xml */, + CEB9D789197516BE00B21780 /* editor_mixer.xml */, + CEB9D78A197516BE00B21780 /* inspector_gain_meter.xml */, + CEB9D78B197516BE00B21780 /* master_ui_gain_meter.xml */, + CEB9D78C197516BE00B21780 /* master_ui.xml */, + CEB9D78D197516BE00B21780 /* meter_strip.xml */, + CEB9D78E197516BE00B21780 /* mixer_gain_meter.xml */, + CEB9D78F197516BE00B21780 /* mixer_strip.xml */, + CEB9D790197516BE00B21780 /* track_header_gain_meter.xml */, CEB0A9F31958447C006D269A /* session_close_dialog.xml */, 4327942A194F0062003C9FEA /* device_capture_control.xml */, 4327942B194F0062003C9FEA /* device_playback_control.xml */, @@ -2370,6 +2400,16 @@ 43B351ED194F04E00038C140 /* step_editing.bindings in Resources */, CEDB41321951C668006E6F77 /* buildlog.txt in Resources */, CEB0A9F41958447C006D269A /* session_close_dialog.xml in Resources */, + CEB9D791197516BE00B21780 /* audio_time_axis.xml in Resources */, + CEB9D792197516BE00B21780 /* automation_time_axis.xml in Resources */, + CEB9D793197516BE00B21780 /* editor_mixer.xml in Resources */, + CEB9D794197516BE00B21780 /* inspector_gain_meter.xml in Resources */, + CEB9D795197516BE00B21780 /* master_ui_gain_meter.xml in Resources */, + CEB9D796197516BE00B21780 /* master_ui.xml in Resources */, + CEB9D797197516BE00B21780 /* meter_strip.xml in Resources */, + CEB9D798197516BE00B21780 /* mixer_gain_meter.xml in Resources */, + CEB9D799197516BE00B21780 /* mixer_strip.xml in Resources */, + CEB9D79A197516BE00B21780 /* track_header_gain_meter.xml in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 9fdb616790..1fd0fac92d 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -52,6 +52,9 @@ #include "ardour/session.h" #include "ardour/types.h" #include "ardour/user_bundle.h" +#include "ardour/data_type.h" +#include "ardour/audio_backend.h" +#include "ardour/engine_state_controller.h" #include "ardour_ui.h" #include "ardour_window.h" @@ -105,7 +108,7 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session* sess, const std::string& layout_s , info_panel_button (get_waves_button ("info_panel_button")) , info_panel_home (get_container ("info_panel_home")) , input_info_label (get_label ("input_info_label")) - , output_info_label (get_label ("input_info_label")) + , output_info_label (get_label ("output_info_label")) { init (); @@ -139,7 +142,7 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session* sess, boost::shared_ptr rt , info_panel_button (get_waves_button ("info_panel_button")) , info_panel_home (get_container ("info_panel_home")) , input_info_label (get_label ("input_info_label")) - , output_info_label (get_label ("input_info_label")) + , output_info_label (get_label ("output_info_label")) { init (); set_route (rt); @@ -240,6 +243,10 @@ MixerStrip::init () Config->ParameterChanged.connect (_config_connection, MISSING_INVALIDATOR, boost::bind (&MixerStrip::parameter_changed, this, _1), gui_context()); gpm.LevelMeterButtonPress.connect_same_thread (_level_meter_connection, boost::bind (&MixerStrip::level_meter_button_press, this, _1)); + + Session* session = ARDOUR_UI::instance()->the_session(); + if( session ) + session->session_routes_reconnected.connect(_input_output_channels_update, invalidator (*this), boost::bind (&MixerStrip::update_inspector_info_panel, this), gui_context()); } MixerStrip::~MixerStrip () @@ -1632,6 +1639,7 @@ MixerStrip::parameter_changed (string p) our VisibilityGroup to reflect these changes in our widgets. */ _visibility.set_state (Config->get_mixer_strip_visibility ()); + update_inspector_info_panel(); } } @@ -1843,6 +1851,57 @@ MixerStrip::color_button_clicked (WavesButton *button) } } +void +MixerStrip::update_inspector_info_panel () +{ + if( !_route ) + return; + + // Input label + string input_text; + PortSet& in_ports (_route->input()->ports() ); + + for (PortSet::iterator i = in_ports.begin(); i != in_ports.end(); ++i) + { + vector connections_string; + i->get_connections(connections_string); + + for(unsigned int j = 0; j < connections_string.size(); ++j) + { + if( connections_string[j].find("system:capture:") != string::npos ) + connections_string[j].erase(0, 15); + + input_text += connections_string[j] + " "; + } + } + + input_text = "In " + input_text; + input_info_label.set_text (input_text); + input_info_label.set_tooltip_text (input_text); + + // Output label + string output_text; + PortSet& out_ports (_route->output()->ports() ); + + for (PortSet::iterator i = out_ports.begin(); i != out_ports.end(); ++i) + { + vector connections_string; + i->get_connections(connections_string); + + for(unsigned int j = 0; j < connections_string.size(); ++j) + { + if( connections_string[j].find("system:playback:") != string::npos ) + connections_string[j].erase(0, 16); + + output_text += connections_string[j] + " "; + } + } + + output_text = "Out " + output_text; + output_info_label.set_text(output_text); + output_info_label.set_tooltip_text(output_text); +} + void MixerStrip::info_panel_button_clicked (WavesButton *button) { diff --git a/gtk2_ardour/mixer_strip.h b/gtk2_ardour/mixer_strip.h index b46adfc8cc..c40cd53f44 100644 --- a/gtk2_ardour/mixer_strip.h +++ b/gtk2_ardour/mixer_strip.h @@ -169,6 +169,9 @@ class MixerStrip : public RouteUI Gtk::Container& info_panel_home; Gtk::Label& input_info_label; Gtk::Label& output_info_label; + + void update_inspector_info_panel (); + PBD::ScopedConnectionList _input_output_channels_update; ArdourWindow* comment_window; Gtk::TextView* comment_area; diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 4d63f32076..aa5754cd68 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -634,6 +634,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop PBD::Signal1 SoloActive; PBD::Signal0 SoloChanged; PBD::Signal0 IsolatedChanged; + PBD::Signal0 session_routes_reconnected; /* monitor/master out */ diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 927ff8a055..0c9ce38ef7 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -2281,6 +2281,9 @@ Session::reconnect_existing_routes (bool withLock, bool reconnect_master) } graph_reordered (); + + //emit signal + session_routes_reconnected (); }