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.cc108
1 files changed, 57 insertions, 51 deletions
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc
index 5ce4caa3af..7866cef0d8 100644
--- a/gtk2_ardour/mixer_strip.cc
+++ b/gtk2_ardour/mixer_strip.cc
@@ -56,7 +56,7 @@
#include "mixer_strip.h"
#include "mixer_ui.h"
#include "keyboard.h"
-#include "led.h"
+#include "ardour_button.h"
#include "public_editor.h"
#include "send_ui.h"
#include "io_selector.h"
@@ -86,7 +86,7 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session* sess, bool in_mixer)
, gpm (sess, 250)
, panners (sess)
, button_table (3, 1)
- , solo_led_table (2, 2)
+ , rec_solo_table (2, 2)
, top_button_table (1, 2)
, middle_button_table (1, 2)
, bottom_button_table (1, 2)
@@ -185,54 +185,42 @@ MixerStrip::init ()
mute_button->set_name ("MixerMuteButton");
solo_button->set_name ("MixerSoloButton");
- monitor_input_button->set_name ("MixerMonitorInputButton");
- monitor_disk_button->set_name ("MixerMonitorInputButton");
+ monitor_input_button->set_diameter (3);
+ monitor_disk_button->set_diameter (3);
- solo_isolated_led = manage (new LED);
+ solo_isolated_led = manage (new ArdourButton);
solo_isolated_led->show ();
- solo_isolated_led->set_diameter (6);
+ solo_isolated_led->set_diameter (3);
solo_isolated_led->set_no_show_all (true);
- solo_isolated_led->set_name (X_("SoloIsolatedLED"));
+ solo_isolated_led->set_name (X_("solo isolate"));
solo_isolated_led->add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
solo_isolated_led->signal_button_release_event().connect (sigc::mem_fun (*this, &RouteUI::solo_isolate_button_release));
UI::instance()->set_tip (solo_isolated_led, _("Isolate Solo"), "");
- solo_safe_led = manage (new LED);
+ solo_safe_led = manage (new ArdourButton);
solo_safe_led->show ();
- solo_safe_led->set_diameter (6);
+ solo_safe_led->set_diameter (3);
solo_safe_led->set_no_show_all (true);
- solo_safe_led->set_name (X_("SoloSafeLED"));
+ solo_safe_led->set_name (X_("solo safe"));
solo_safe_led->add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
solo_safe_led->signal_button_release_event().connect (sigc::mem_fun (*this, &RouteUI::solo_safe_button_release));
UI::instance()->set_tip (solo_safe_led, _("Lock Solo Status"), "");
- _iso_label = manage (new Label (_("iso")));
- _safe_label = manage (new Label (_("lock")));
-
- _iso_label->set_name (X_("SoloLEDLabel"));
- _safe_label->set_name (X_("SoloLEDLabel"));
-
- _iso_label->show ();
- _safe_label->show ();
-
- solo_led_table.set_spacings (0);
- solo_led_table.set_border_width (1);
- solo_led_table.attach (*_iso_label, 0, 1, 0, 1, Gtk::FILL, Gtk::FILL);
- solo_led_table.attach (*solo_isolated_led, 1, 2, 0, 1, Gtk::FILL, Gtk::FILL);
- solo_led_table.attach (*_safe_label, 0, 1, 1, 2, Gtk::FILL, Gtk::FILL);
- solo_led_table.attach (*solo_safe_led, 1, 2, 1, 2, Gtk::FILL, Gtk::FILL);
- solo_led_table.show ();
+ solo_safe_led->set_text (_("lock"));
+ solo_isolated_led->set_text (_("iso"));
top_button_table.set_homogeneous (true);
- top_button_table.set_spacings (0);
+ top_button_table.set_spacings (2);
top_button_table.attach (*monitor_input_button, 0, 1, 0, 1);
top_button_table.attach (*monitor_disk_button, 1, 2, 0, 1);
top_button_table.show ();
- below_panner_box.set_border_width (2);
- below_panner_box.set_spacing (2);
- below_panner_box.pack_end (solo_led_table, false, false);
- below_panner_box.show ();
+ rec_solo_table.set_homogeneous (true);
+ rec_solo_table.set_row_spacings (2);
+ rec_solo_table.set_col_spacings (2);
+ rec_solo_table.attach (*solo_isolated_led, 1, 2, 0, 1);
+ rec_solo_table.attach (*solo_safe_led, 1, 2, 1, 2);
+ rec_solo_table.show ();
button_table.set_homogeneous (true);
button_table.set_spacings (0);
@@ -281,9 +269,9 @@ MixerStrip::init ()
global_vpacker.pack_start (button_table, Gtk::PACK_SHRINK);
global_vpacker.pack_start (processor_box, true, true);
global_vpacker.pack_start (panners, Gtk::PACK_SHRINK);
- global_vpacker.pack_start (top_button_table, Gtk::PACK_SHRINK);
- global_vpacker.pack_start (below_panner_box, Gtk::PACK_SHRINK);
- global_vpacker.pack_start (middle_button_table, Gtk::PACK_SHRINK);
+ global_vpacker.pack_start (top_button_table, Gtk::PACK_SHRINK, 2);
+ global_vpacker.pack_start (rec_solo_table, Gtk::PACK_SHRINK, 2);
+ global_vpacker.pack_start (middle_button_table, Gtk::PACK_SHRINK, 2);
global_vpacker.pack_start (gpm, Gtk::PACK_SHRINK);
global_vpacker.pack_start (bottom_button_table, Gtk::PACK_SHRINK);
global_vpacker.pack_start (output_button, Gtk::PACK_SHRINK);
@@ -362,11 +350,11 @@ void
MixerStrip::set_route (boost::shared_ptr<Route> rt)
{
if (rec_enable_button->get_parent()) {
- below_panner_box.remove (*rec_enable_button);
+ rec_solo_table.remove (*rec_enable_button);
}
if (show_sends_button->get_parent()) {
- below_panner_box.remove (*show_sends_button);
+ rec_solo_table.remove (*show_sends_button);
}
processor_box.set_route (rt);
@@ -388,10 +376,10 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt)
if (route()->is_master()) {
solo_button->hide ();
- below_panner_box.hide ();
+ rec_solo_table.hide ();
} else {
solo_button->show ();
- below_panner_box.show ();
+ rec_solo_table.show ();
}
if (_mixer_owned && (route()->is_master() || route()->is_monitor())) {
@@ -453,7 +441,7 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt)
if (is_track ()) {
- below_panner_box.pack_start (*rec_enable_button);
+ rec_solo_table.attach (*rec_enable_button, 0, 1, 0, 2);
rec_enable_button->set_sensitive (_session->writable());
rec_enable_button->show();
@@ -462,7 +450,7 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt)
/* non-master bus */
if (!_route->is_master()) {
- below_panner_box.pack_start (*show_sends_button);
+ rec_solo_table.attach (*show_sends_button, 0, 1, 0, 2);
show_sends_button->show();
}
}
@@ -586,8 +574,8 @@ MixerStrip::set_width_enum (Width w, void* owner)
panners.astate_string(_route->panner()->automation_state()));
}
- _iso_label->show ();
- _safe_label->show ();
+ solo_isolated_led->set_text (_("iso"));
+ solo_safe_led->set_text (_("lock"));
Gtkmm2ext::set_size_request_to_display_given_text (name_button, "long", 2, 2);
set_size_request (-1, -1);
@@ -609,9 +597,9 @@ MixerStrip::set_width_enum (Width w, void* owner)
((Gtk::Label*)panners.pan_automation_state_button.get_child())->set_text (
panners.short_astate_string(_route->panner()->automation_state()));
}
-
- _iso_label->hide ();
- _safe_label->hide ();
+
+ solo_isolated_led->set_text ("");
+ solo_safe_led->set_text ("");
Gtkmm2ext::set_size_request_to_display_given_text (name_button, longest_label.c_str(), 2, 2);
set_size_request (max (50, gpm.get_gm_width()), -1);
@@ -1737,11 +1725,20 @@ MixerStrip::set_button_names ()
case Wide:
rec_enable_button_label.set_text (_("Rec"));
mute_button_label.set_text (_("Mute"));
- monitor_input_button_label.set_text (_("In"));
- monitor_disk_button_label.set_text (_("Disk"));
+ monitor_input_button->set_text (_("In"));
+ monitor_disk_button->set_text (_("Disk"));
+
if (_route && _route->solo_safe()) {
- solo_button_label.set_text (X_("!"));
+ solo_button->remove ();
+ if (solo_safe_image == 0) {
+ solo_safe_image = new Gtk::Image (::get_icon("solo-safe-enabled"));
+ solo_safe_image->show ();
+ }
+ solo_button->add (*solo_safe_image);
} else {
+ solo_button->remove ();
+ solo_button->add (solo_button_label);
+ solo_button_label.show ();
if (!Config->get_solo_control_is_listen_control()) {
solo_button_label.set_text (_("Solo"));
} else {
@@ -1760,10 +1757,19 @@ MixerStrip::set_button_names ()
default:
rec_enable_button_label.set_text (_("R"));
mute_button_label.set_text (_("M"));
- monitor_input_button_label.set_text (_("I"));
- monitor_disk_button_label.set_text (_("D"));
+ monitor_input_button->set_text (_("I"));
+ monitor_disk_button->set_text (_("D"));
if (_route && _route->solo_safe()) {
- solo_button_label.set_text (X_("!"));
+ solo_button->remove ();
+ if (solo_safe_image == 0) {
+ solo_safe_image = new Gtk::Image (::get_icon("solo-safe-enabled"));
+ solo_safe_image->show ();
+ }
+ solo_button->add (*solo_safe_image);
+ } else {
+ solo_button->remove ();
+ solo_button->add (solo_button_label);
+ solo_button_label.show ();
if (!Config->get_solo_control_is_listen_control()) {
solo_button_label.set_text (_("S"));
} else {