summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-05-04 16:39:03 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-05-04 16:39:03 +0000
commitbf6de6da77ca8fdeda6e92ae5adffd0a9f14da1c (patch)
treec6547d77a1f70fc725611f8fc668dd176e1919a5 /gtk2_ardour
parent823bad30497b67508ed4031232049ba2f9920941 (diff)
remove muted-by-others, a concept that turns out to have been a red herring; add auditioning alert button to monitor section; start adding exclusive solo button to monitor section
git-svn-id: svn://localhost/ardour2/branches/3.0@7052 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour3_ui_dark.rc.in15
-rw-r--r--gtk2_ardour/monitor_section.cc50
-rw-r--r--gtk2_ardour/monitor_section.h5
-rw-r--r--gtk2_ardour/route_ui.cc14
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