summaryrefslogtreecommitdiff
path: root/gtk2_ardour/mixer_strip.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/mixer_strip.cc')
-rw-r--r--gtk2_ardour/mixer_strip.cc56
1 files changed, 52 insertions, 4 deletions
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc
index 8a00eb88a2..5a8442dc44 100644
--- a/gtk2_ardour/mixer_strip.cc
+++ b/gtk2_ardour/mixer_strip.cc
@@ -67,6 +67,8 @@ using namespace Gtk;
using namespace Gtkmm2ext;
using namespace std;
+sigc::signal<void,boost::shared_ptr<Route> > MixerStrip::SwitchIO;
+
int MixerStrip::scrollbar_height = 0;
#ifdef VARISPEED_IN_MIXER_STRIP
@@ -88,8 +90,8 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, bool in_mixer)
, RouteUI (sess, _("Mute"), _("Solo"), _("Record"))
,_mixer(mx)
, _mixer_owned (in_mixer)
- , pre_processor_box (PreFader, sess, mx.plugin_selector(), mx.selection(), in_mixer)
- , post_processor_box (PostFader, sess, mx.plugin_selector(), mx.selection(), in_mixer)
+ , pre_processor_box (PreFader, sess, mx.plugin_selector(), mx.selection(), this, in_mixer)
+ , post_processor_box (PostFader, sess, mx.plugin_selector(), mx.selection(), this, in_mixer)
, gpm (sess)
, panners (sess)
, button_table (3, 2)
@@ -117,8 +119,8 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, boost::shared_ptr<Route> rt
, RouteUI (sess, _("Mute"), _("Solo"), _("Record"))
,_mixer(mx)
, _mixer_owned (in_mixer)
- , pre_processor_box (PreFader, sess, mx.plugin_selector(), mx.selection(), in_mixer)
- , post_processor_box (PostFader, sess, mx.plugin_selector(), mx.selection(), in_mixer)
+ , pre_processor_box (PreFader, sess, mx.plugin_selector(), mx.selection(), this, in_mixer)
+ , post_processor_box (PostFader, sess, mx.plugin_selector(), mx.selection(), this, in_mixer)
, gpm (sess)
, panners (sess)
, button_table (3, 2)
@@ -290,6 +292,12 @@ MixerStrip::init ()
rec_enable_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::rec_enable_press), false);
rec_enable_button->signal_button_release_event().connect (mem_fun(*this, &RouteUI::rec_enable_release));
+ /* ditto for this button and busses */
+
+ show_sends_button->set_name ("MixerRecordEnableButton");
+ show_sends_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::show_sends_press), false);
+ show_sends_button->signal_button_release_event().connect (mem_fun(*this, &RouteUI::show_sends_release));
+
name_button.signal_button_press_event().connect (mem_fun(*this, &MixerStrip::name_button_button_press), false);
group_button.signal_button_press_event().connect (mem_fun(*this, &MixerStrip::select_mix_group), false);
@@ -309,6 +317,9 @@ MixerStrip::init ()
set_name ("AudioTrackStripBase");
add_events (Gdk::BUTTON_RELEASE_MASK);
+
+ SwitchIO.connect (mem_fun (*this, &MixerStrip::switch_io));
+
}
MixerStrip::~MixerStrip ()
@@ -326,6 +337,10 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt)
button_table.remove (*rec_enable_button);
}
+ if (show_sends_button->get_parent()) {
+ button_table.remove (*show_sends_button);
+ }
+
#ifdef VARISPEED_IN_MIXER_STRIP
if (speed_frame->get_parent()) {
button_table.remove (*speed_frame);
@@ -384,6 +399,12 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt)
button_table.attach (*rec_enable_button, 0, 2, 2, 3);
rec_enable_button->show();
+
+ } else if (!is_track()) {
+ /* bus */
+
+ button_table.attach (*show_sends_button, 0, 2, 2, 3);
+ show_sends_button->show();
}
if (_route->phase_invert()) {
@@ -562,6 +583,9 @@ MixerStrip::set_width (Width w, void* owner)
if (rec_enable_button) {
((Gtk::Label*)rec_enable_button->get_child())->set_text (_("Record"));
}
+ if (show_sends_button) {
+ ((Gtk::Label*)show_sends_button->get_child())->set_text (_("Sends"));
+ }
((Gtk::Label*)mute_button->get_child())->set_text (_("Mute"));
((Gtk::Label*)solo_button->get_child())->set_text (_("Solo"));
@@ -593,6 +617,9 @@ MixerStrip::set_width (Width w, void* owner)
if (rec_enable_button) {
((Gtk::Label*)rec_enable_button->get_child())->set_text (_("Rec"));
}
+ if (show_sends_button) {
+ ((Gtk::Label*)show_sends_button->get_child())->set_text (_("Snd"));
+ }
((Gtk::Label*)mute_button->get_child())->set_text (_("M"));
((Gtk::Label*)solo_button->get_child())->set_text (_("S"));
@@ -1462,3 +1489,24 @@ MixerStrip::meter_changed (void *src)
set_width(_width, this);
}
+void
+MixerStrip::switch_io (boost::shared_ptr<Route> target)
+{
+ boost::shared_ptr<IO> to_display;
+
+ if (_route == target) {
+ /* don't change the display for the target */
+ return;
+ }
+
+ if (!target) {
+ to_display = _route;
+ } else {
+ to_display = _route->send_io_for (target);
+ }
+
+ gain_meter().set_io (to_display);
+ gain_meter().setup_meters ();
+ panner_ui().set_io (to_display);
+ panner_ui().setup_pan ();
+}