using namespace PBD;
uint32_t RouteUI::_max_invert_buttons = 3;
+sigc::signal<void, boost::shared_ptr<Route> > RouteUI::BusSendDisplayChanged;
+boost::weak_ptr<Route> RouteUI::_showing_sends_to;
RouteUI::RouteUI (ARDOUR::Session* sess)
: AxisView(sess)
monitor_disk_button->signal_button_press_event().connect (sigc::mem_fun(*this, &RouteUI::monitor_disk_press));
monitor_disk_button->signal_button_release_event().connect (sigc::mem_fun(*this, &RouteUI::monitor_disk_release));
+
+ BusSendDisplayChanged.connect (sigc::mem_fun (*this, &RouteUI::bus_send_display_changed));
}
void
setup_invert_buttons ();
set_invert_button_state ();
+
+ boost::shared_ptr<Route> s = _showing_sends_to.lock ();
+ bus_send_display_changed (s);
}
void
if (Keyboard::is_context_menu_event (ev)) {
- if (!solo_isolated_led) {
+ if (! (solo_isolated_led && solo_isolated_led->is_visible()) ||
+ ! (solo_safe_led && solo_safe_led->is_visible())) {
if (solo_menu == 0) {
build_solo_menu ();
}
}
- cerr << name() << " re button press, i am " << _i_am_the_modifier << " active state = "
- << rec_enable_button->active_state()
- << endl;
-
if (!_i_am_the_modifier && is_track() && rec_enable_button) {
if (Keyboard::is_button2_event (ev)) {
} else {
- /* change button state */
-
- show_sends_button->set_active_state (Active);
-
- /* start blinking */
+ boost::shared_ptr<Route> s = _showing_sends_to.lock ();
- if (show_sends_button->active_state()) {
- /* show sends to this bus */
- MixerStrip::SwitchIO (_route);
- send_blink_connection = ARDOUR_UI::instance()->Blink.connect (sigc::mem_fun(*this, &RouteUI::send_blink));
+ if (s == _route) {
+ set_showing_sends_to (boost::shared_ptr<Route> ());
} else {
- /* everybody back to normal */
- send_blink_connection.disconnect ();
- MixerStrip::SwitchIO (boost::shared_ptr<Route>());
+ set_showing_sends_to (_route);
}
-
}
}
}
if (onoff) {
- show_sends_button->set_state (STATE_ACTIVE);
+ show_sends_button->set_active_state (Gtkmm2ext::Active);
} else {
- show_sends_button->set_state (STATE_NORMAL);
+ show_sends_button->unset_active_state ();
}
}
if (Config->get_solo_control_is_listen_control()) {
- if ((solo_button->active_state() == Active)!= (x = _route->listening_via_monitor())) {
+ if ((bool) solo_button->active_state() != (x = _route->listening_via_monitor())) {
++_i_am_the_modifier;
solo_button->set_active_state (Active);
--_i_am_the_modifier;
} else {
- if ((solo_button->active_state() == Active) != (x = _route->soloed())) {
+ if ((bool) solo_button->active_state() != (x = _route->soloed())) {
++_i_am_the_modifier;
if (x) {
solo_button->set_active_state (Active);
ActiveState
RouteUI::mute_active_state (Session* s, boost::shared_ptr<Route> r)
{
- if (r->is_master() || r->is_monitor()) {
+ if (r->is_monitor()) {
return ActiveState(0);
}
return _color;
}
+
+void
+RouteUI::set_showing_sends_to (boost::shared_ptr<Route> send_to)
+{
+ _showing_sends_to = send_to;
+ BusSendDisplayChanged (send_to); /* EMIT SIGNAL */
+}
+
+void
+RouteUI::bus_send_display_changed (boost::shared_ptr<Route> send_to)
+{
+ if (_route == send_to) {
+ show_sends_button->set_active_state (Gtkmm2ext::Active);
+ send_blink_connection = ARDOUR_UI::instance()->Blink.connect (sigc::mem_fun (*this, &RouteUI::send_blink));
+ } else {
+ show_sends_button->unset_active_state ();
+ send_blink_connection.disconnect ();
+ }
+}
+
+RouteGroup*
+RouteUI::route_group() const
+{
+ return _route->route_group();
+}