+
+void
+MixerStrip::revert_to_default_display ()
+{
+ show_sends_button->set_active (false);
+
+ boost::shared_ptr<Send> send;
+
+ if (_current_delivery && (send = boost::dynamic_pointer_cast<Send>(_current_delivery))) {
+ send->set_metering (false);
+ }
+
+ _current_delivery = _route->main_outs();
+
+ gain_meter().set_controls (_route, _route->shared_peak_meter(), _route->amp());
+ gain_meter().setup_meters ();
+ panner_ui().set_panner (_route->main_outs()->panner());
+ panner_ui().setup_pan ();
+}
+
+void
+MixerStrip::set_button_names ()
+{
+ switch (_width) {
+ case Wide:
+ rec_enable_button_label.set_text (_("Rec"));
+ mute_button_label.set_text (_("Mute"));
+ if (!Config->get_solo_control_is_listen_control()) {
+ solo_button_label.set_text (_("Solo"));
+ } else {
+ switch (Config->get_listen_position()) {
+ case AfterFaderListen:
+ solo_button_label.set_text (_("AFL"));
+ break;
+ case PreFaderListen:
+ solo_button_label.set_text (_("PFL"));
+ break;
+ }
+ }
+ break;
+
+ default:
+ rec_enable_button_label.set_text (_("R"));
+ mute_button_label.set_text (_("M"));
+ if (!Config->get_solo_control_is_listen_control()) {
+ solo_button_label.set_text (_("S"));
+ } else {
+ switch (Config->get_listen_position()) {
+ case AfterFaderListen:
+ solo_button_label.set_text (_("A"));
+ break;
+ case PreFaderListen:
+ solo_button_label.set_text (_("P"));
+ break;
+ }
+ }
+ break;
+
+ }
+}
+
+bool
+MixerStrip::on_key_press_event (GdkEventKey* ev)
+{
+ GdkEventButton fake;
+ fake.type = GDK_BUTTON_PRESS;
+ fake.button = 1;
+ fake.state = ev->state;
+
+ switch (ev->keyval) {
+ case GDK_m:
+ mute_press (&fake);
+ return true;
+ break;
+
+ case GDK_s:
+ solo_press (&fake);
+ return true;
+ break;
+
+ case GDK_r:
+ rec_enable_press (&fake);
+ return true;
+ break;
+
+ case GDK_e:
+ show_sends_press (&fake);
+ return true;
+ break;
+
+ case GDK_g:
+ if (ev->state & Keyboard::PrimaryModifier) {
+ step_gain_down ();
+ } else {
+ step_gain_up ();
+ }
+ return true;
+ break;
+
+ case GDK_0:
+ if (_route) {
+ _route->set_gain (1.0, this);
+ }
+ return true;
+
+ default:
+ break;
+ }
+
+ return false;
+}
+
+
+bool
+MixerStrip::on_key_release_event (GdkEventKey* ev)
+{
+ GdkEventButton fake;
+ fake.type = GDK_BUTTON_RELEASE;
+ fake.button = 1;
+ fake.state = ev->state;
+
+ switch (ev->keyval) {
+ case GDK_m:
+ mute_release (&fake);
+ return true;
+ break;
+
+ case GDK_s:
+ solo_release (&fake);
+ return true;
+ break;
+
+ case GDK_r:
+ rec_enable_release (&fake);
+ return true;
+ break;
+
+ case GDK_e:
+ show_sends_release (&fake);
+ return true;
+ break;
+
+ case GDK_g:
+ return true;
+ break;
+
+ default:
+ break;
+ }
+
+ return false;
+}
+
+bool
+MixerStrip::on_enter_notify_event (GdkEventCrossing*)
+{
+ Keyboard::magic_widget_grab_focus ();
+ grab_focus ();
+ return false;
+}
+
+bool
+MixerStrip::on_leave_notify_event (GdkEventCrossing* ev)
+{
+ switch (ev->detail) {
+ case GDK_NOTIFY_INFERIOR:
+ break;
+ default:
+ Keyboard::magic_widget_drop_focus ();
+ }
+
+ return false;
+}