diff options
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/ardour3_ui_dark.rc.in | 15 | ||||
-rw-r--r-- | gtk2_ardour/monitor_section.cc | 50 | ||||
-rw-r--r-- | gtk2_ardour/monitor_section.h | 5 | ||||
-rw-r--r-- | gtk2_ardour/route_ui.cc | 14 |
4 files changed, 66 insertions, 18 deletions
diff --git a/gtk2_ardour/ardour3_ui_dark.rc.in b/gtk2_ardour/ardour3_ui_dark.rc.in index bfef1d0a65..da13db4e90 100644 --- a/gtk2_ardour/ardour3_ui_dark.rc.in +++ b/gtk2_ardour/ardour3_ui_dark.rc.in @@ -328,18 +328,15 @@ style "solo_button" = "small_button" style "solo_button_alternate" = "small_button" { # - # this is the "solo-safe" solo theme + # this is the "solo-isolated" solo theme # - bg[NORMAL] = { 0.19, 0.97, 0.69 } # solo-safe - bg[ACTIVE] = { 0.19, 0.97, 0.69 } # solo-safe - bg[SELECTED] = { 0.19, 0.97, 0.69 } # solo-safe - bg[PRELIGHT] = { 0.19, 0.97, 0.69 } # solo-safe + bg[ACTIVE] = { 0.66, 0.97, 0.19 } - fg[ACTIVE] = { 0, 0, 0 } - fg[SELECTED] = { 0, 0, 0 } - fg[NORMAL] = { 0, 0, 0 } - fg[PRELIGHT] = { 0, 0, 0 } + fg[ACTIVE] = { 1.0, 0, 0 } + fg[SELECTED] = { 1.0, 0, 0 } + fg[NORMAL] = { 1.0, 0, 0 } + fg[PRELIGHT] = { 1.0, 0, 0 } } style "solo_button_alternate2" = "small_button" diff --git a/gtk2_ardour/monitor_section.cc b/gtk2_ardour/monitor_section.cc index b9e4c1b8a5..95b9e5c6a5 100644 --- a/gtk2_ardour/monitor_section.cc +++ b/gtk2_ardour/monitor_section.cc @@ -51,7 +51,8 @@ MonitorSection::MonitorSection (Session* s) , dim_all_button (_("dim")) , mono_button (_("mono")) , rude_solo_button (_("soloing")) - + , rude_audition_button (_("auditioning")) + , exclusive_solo_button (_("Exclusive solo")) { Glib::RefPtr<Action> act; @@ -90,10 +91,16 @@ MonitorSection::MonitorSection (Session* s) rude_solo_button.set_name ("TransportSoloAlert"); rude_solo_button.show (); - ARDOUR_UI::Blink.connect (sigc::mem_fun (*this, &MonitorSection::solo_blink)); + rude_audition_button.set_name ("TransportAuditioningAlert"); + rude_audition_button.show (); + + ARDOUR_UI::Blink.connect (sigc::mem_fun (*this, &MonitorSection::do_blink)); + rude_solo_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MonitorSection::cancel_solo), false); UI::instance()->set_tip (rude_solo_button, _("When active, something is soloed.\nClick to de-solo everything")); + rude_audition_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MonitorSection::cancel_audition), false); + UI::instance()->set_tip (rude_audition_button, _("When active, auditioning is active.\nClick to stop the audition")); solo_model_box.set_spacing (6); solo_model_box.pack_start (solo_in_place_button, false, false); @@ -151,9 +158,13 @@ MonitorSection::MonitorSection (Session* s) solo_packer->pack_start (*spin_packer, true, true); + exclusive_solo_button.set_name (X_("MonitorCutButton")); + upper_packer.set_spacing (12); upper_packer.pack_start (rude_solo_button, false, false); + upper_packer.pack_start (rude_audition_button, false, false); upper_packer.pack_start (solo_model_box, false, false); + upper_packer.pack_start (exclusive_solo_button, false, false); upper_packer.pack_start (*solo_packer, false, false); act = ActionManager::get_action (X_("Monitor"), X_("monitor-cut-all")); @@ -808,6 +819,32 @@ MonitorSection::map_state () } void +MonitorSection::do_blink (bool onoff) +{ + solo_blink (onoff); + audition_blink (onoff); +} + +void +MonitorSection::audition_blink (bool onoff) +{ + if (_session == 0) { + return; + } + + if (_session->is_auditioning()) { + if (onoff) { + rude_audition_button.set_state (STATE_ACTIVE); + } else { + rude_audition_button.set_state (STATE_NORMAL); + } + } else { + rude_audition_button.set_active (false); + rude_audition_button.set_state (STATE_NORMAL); + } +} + +void MonitorSection::solo_blink (bool onoff) { if (_session == 0) { @@ -840,6 +877,15 @@ MonitorSection::cancel_solo (GdkEventButton* ev) return true; } +bool +MonitorSection::cancel_audition (GdkEventButton* ev) +{ + if (_session) { + _session->cancel_audition(); + } + return true; +} + void MonitorSection::solo_cut_changed () { diff --git a/gtk2_ardour/monitor_section.h b/gtk2_ardour/monitor_section.h index da20857aea..a77efdb82c 100644 --- a/gtk2_ardour/monitor_section.h +++ b/gtk2_ardour/monitor_section.h @@ -113,9 +113,14 @@ class MonitorSection : public RouteUI BindableToggleButton dim_all_button; BindableToggleButton mono_button; BindableToggleButton rude_solo_button; + BindableToggleButton rude_audition_button; + BindableToggleButton exclusive_solo_button; + void do_blink (bool); void solo_blink (bool); + void audition_blink (bool); bool cancel_solo (GdkEventButton*); + bool cancel_audition (GdkEventButton*); void solo_cut_changed (); void update_solo_model (); void parameter_changed (std::string); diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index f3430ccc4a..851a96da5a 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -294,7 +294,7 @@ RouteUI::mute_press (GdkEventButton* ev) return true; } - _mute_release = new SoloMuteRelease (_route->self_muted ()); + _mute_release = new SoloMuteRelease (_route->muted ()); } if (ev->button == 1 || Keyboard::is_button2_event (ev)) { @@ -305,7 +305,7 @@ RouteUI::mute_press (GdkEventButton* ev) _mute_release->routes = _session->get_routes (); } - _session->set_mute (_session->get_routes(), !_route->self_muted()); + _session->set_mute (_session->get_routes(), !_route->muted()); } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) { @@ -318,7 +318,7 @@ RouteUI::mute_press (GdkEventButton* ev) _mute_release->routes = _session->get_routes (); } - _session->set_mute (_session->get_routes(), !_route->self_muted(), Session::rt_cleanup, true); + _session->set_mute (_session->get_routes(), !_route->muted(), Session::rt_cleanup, true); } } else { @@ -332,7 +332,7 @@ RouteUI::mute_press (GdkEventButton* ev) _mute_release->routes = rl; } - _session->set_mute (rl, !_route->self_muted()); + _session->set_mute (rl, !_route->muted()); } } @@ -835,7 +835,7 @@ RouteUI::mute_visual_state (Session* s, boost::shared_ptr<Route> r) if (Config->get_show_solo_mutes()) { - if (r->self_muted ()) { + if (r->muted ()) { /* full mute */ return 2; } else if (s->soloing() && !r->soloed() && !r->solo_isolated()) { @@ -847,7 +847,7 @@ RouteUI::mute_visual_state (Session* s, boost::shared_ptr<Route> r) } else { - if (r->self_muted()) { + if (r->muted()) { /* full mute */ return 2; } else { @@ -866,7 +866,7 @@ RouteUI::update_mute_display () return; } - bool model = _route->self_muted(); + bool model = _route->muted(); bool view = mute_button->get_active(); /* first make sure the button's "depressed" visual |