using namespace Gtk;
using namespace Gtkmm2ext;
using namespace ARDOUR;
+using namespace ARDOUR_UI_UTILS;
using namespace PBD;
uint32_t RouteUI::_max_invert_buttons = 3;
-sigc::signal<void, boost::shared_ptr<Route> > RouteUI::BusSendDisplayChanged;
+PBD::Signal1<void, boost::shared_ptr<Route> > RouteUI::BusSendDisplayChanged;
boost::weak_ptr<Route> RouteUI::_showing_sends_to;
RouteUI::RouteUI (ARDOUR::Session* sess)
rec_enable_button = manage (new ArdourButton);
rec_enable_button->set_name ("record enable button");
- rec_enable_button->set_tweaks (ArdourButton::ImplicitUsesSolidColor);
+// rec_enable_button->set_tweaks (ArdourButton::ImplicitUsesSolidColor);
UI::instance()->set_tip (rec_enable_button, _("Enable recording on this track"), "");
show_sends_button = manage (new ArdourButton);
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));
+ BusSendDisplayChanged.connect_same_thread (*this, boost::bind(&RouteUI::bus_send_display_changed, this, _1));
}
void
_mute_release->routes = copy;
}
+ DisplaySuspender ds;
_session->set_mute (copy, !_route->muted());
} else if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
rl->push_back (_route);
}
+ DisplaySuspender ds;
_session->set_mute (rl, !_route->muted(), Session::rt_cleanup, true);
}
{
if (!_i_am_the_modifier) {
if (_mute_release){
+ DisplaySuspender ds;
_session->set_mute (_mute_release->routes, _mute_release->active, Session::rt_cleanup, true);
delete _mute_release;
_mute_release = 0;
_solo_release->routes = _session->get_routes ();
}
+ DisplaySuspender ds;
if (Config->get_solo_control_is_listen_control()) {
_session->set_listen (_session->get_routes(), !_route->listening_via_monitor(), Session::rt_cleanup, true);
} else {
if (Config->get_solo_control_is_listen_control()) {
/* ??? we need a just_one_listen() method */
} else {
+ DisplaySuspender ds;
_session->set_just_one_solo (_route, true);
}
rl->push_back (_route);
}
+ DisplaySuspender ds;
if (Config->get_solo_control_is_listen_control()) {
_session->set_listen (rl, !_route->listening_via_monitor(), Session::rt_cleanup, true);
} else {
_solo_release->routes = rl;
}
+ DisplaySuspender ds;
if (Config->get_solo_control_is_listen_control()) {
_session->set_listen (rl, !_route->listening_via_monitor());
} else {
if (_solo_release->exclusive) {
} else {
- if (Config->get_solo_control_is_listen_control()) {
- _session->set_listen (_solo_release->routes, _solo_release->active, Session::rt_cleanup, true);
- } else {
- _session->set_solo (_solo_release->routes, _solo_release->active, Session::rt_cleanup, true);
- }
+ DisplaySuspender ds;
+ if (Config->get_solo_control_is_listen_control()) {
+ _session->set_listen (_solo_release->routes, _solo_release->active, Session::rt_cleanup, true);
+ } else {
+ _session->set_solo (_solo_release->routes, _solo_release->active, Session::rt_cleanup, true);
+ }
}
delete _solo_release;
}
if (!_session->engine().connected()) {
- MessageDialog msg (_("Not connected to JACK - cannot engage record"));
+ MessageDialog msg (_("Not connected to AudioEngine - cannot engage record"));
msg.run ();
return true;
}
} else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier))) {
+ DisplaySuspender ds;
_session->set_record_enabled (_session->get_routes(), !rec_enable_button->active_state());
} else if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
rl.reset (new RouteList);
rl->push_back (_route);
}
-
+
+ DisplaySuspender ds;
_session->set_record_enabled (rl, !rec_enable_button->active_state(), Session::rt_cleanup, true);
}
boost::shared_ptr<RouteList> rl (new RouteList);
rl->push_back (route());
+ DisplaySuspender ds;
_session->set_record_enabled (rl, !rec_enable_button->active_state());
}
}
rl->push_back (route());
}
+ DisplaySuspender ds;
_session->set_monitoring (rl, mc, Session::rt_cleanup, true);
return true;
MenuList& items = record_menu->items();
items.push_back (CheckMenuElem (_("Step Entry"), sigc::mem_fun (*this, &RouteUI::toggle_step_edit)));
- step_edit_item = dynamic_cast<CheckMenuItem*> (&items.back());
+ step_edit_item = dynamic_cast<Gtk::CheckMenuItem*> (&items.back());
if (_route->record_enabled()) {
step_edit_item->set_sensitive (false);
solo_menu = new Menu;
solo_menu->set_name ("ArdourContextMenu");
MenuList& items = solo_menu->items();
- CheckMenuItem* check;
+ Gtk::CheckMenuItem* check;
- check = new CheckMenuItem(_("Solo Isolate"));
+ check = new Gtk::CheckMenuItem(_("Solo Isolate"));
check->set_active (_route->solo_isolated());
check->signal_toggled().connect (sigc::bind (sigc::mem_fun (*this, &RouteUI::toggle_solo_isolated), check));
items.push_back (CheckMenuElem(*check));
- solo_isolated_check = dynamic_cast<CheckMenuItem*>(&items.back());
+ solo_isolated_check = dynamic_cast<Gtk::CheckMenuItem*>(&items.back());
check->show_all();
- check = new CheckMenuItem(_("Solo Safe"));
+ check = new Gtk::CheckMenuItem(_("Solo Safe"));
check->set_active (_route->solo_safe());
check->signal_toggled().connect (sigc::bind (sigc::mem_fun (*this, &RouteUI::toggle_solo_safe), check));
items.push_back (CheckMenuElem(*check));
- solo_safe_check = dynamic_cast<CheckMenuItem*>(&items.back());
+ solo_safe_check = dynamic_cast<Gtk::CheckMenuItem*>(&items.back());
check->show_all();
//items.push_back (SeparatorElem());
MenuList& items = mute_menu->items();
- pre_fader_mute_check = manage (new CheckMenuItem(_("Pre Fader")));
+ pre_fader_mute_check = manage (new Gtk::CheckMenuItem(_("Pre Fader Sends")));
init_mute_menu(MuteMaster::PreFader, pre_fader_mute_check);
pre_fader_mute_check->signal_toggled().connect(sigc::bind (sigc::mem_fun (*this, &RouteUI::toggle_mute_menu), MuteMaster::PreFader, pre_fader_mute_check));
items.push_back (CheckMenuElem(*pre_fader_mute_check));
pre_fader_mute_check->show_all();
- post_fader_mute_check = manage (new CheckMenuItem(_("Post Fader")));
+ post_fader_mute_check = manage (new Gtk::CheckMenuItem(_("Post Fader Sends")));
init_mute_menu(MuteMaster::PostFader, post_fader_mute_check);
post_fader_mute_check->signal_toggled().connect(sigc::bind (sigc::mem_fun (*this, &RouteUI::toggle_mute_menu), MuteMaster::PostFader, post_fader_mute_check));
items.push_back (CheckMenuElem(*post_fader_mute_check));
post_fader_mute_check->show_all();
- listen_mute_check = manage (new CheckMenuItem(_("Control Outs")));
+ listen_mute_check = manage (new Gtk::CheckMenuItem(_("Control Outs")));
init_mute_menu(MuteMaster::Listen, listen_mute_check);
listen_mute_check->signal_toggled().connect(sigc::bind (sigc::mem_fun (*this, &RouteUI::toggle_mute_menu), MuteMaster::Listen, listen_mute_check));
items.push_back (CheckMenuElem(*listen_mute_check));
listen_mute_check->show_all();
- main_mute_check = manage (new CheckMenuItem(_("Main Outs")));
+ main_mute_check = manage (new Gtk::CheckMenuItem(_("Main Outs")));
init_mute_menu(MuteMaster::Main, main_mute_check);
main_mute_check->signal_toggled().connect(sigc::bind (sigc::mem_fun (*this, &RouteUI::toggle_mute_menu), MuteMaster::Main, main_mute_check));
items.push_back (CheckMenuElem(*main_mute_check));
}
void
-RouteUI::init_mute_menu(MuteMaster::MutePoint mp, CheckMenuItem* check)
+RouteUI::init_mute_menu(MuteMaster::MutePoint mp, Gtk::CheckMenuItem* check)
{
check->set_active (_route->mute_points() & mp);
}
bool
RouteUI::solo_isolate_button_release (GdkEventButton* ev)
{
- if (ev->type == GDK_2BUTTON_PRESS || ev->type == GDK_3BUTTON_PRESS) {
- return true;
- }
+ if (ev->type == GDK_2BUTTON_PRESS || ev->type == GDK_3BUTTON_PRESS) {
+ return true;
+ }
- bool view = solo_isolated_led->active_state();
- bool model = _route->solo_isolated();
+ bool view = solo_isolated_led->active_state();
+ bool model = _route->solo_isolated();
- /* called BEFORE the view has changed */
+ /* called BEFORE the view has changed */
- if (ev->button == 1) {
- if (Keyboard::modifier_state_equals (ev->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier))) {
+ if (ev->button == 1) {
+ if (Keyboard::modifier_state_equals (ev->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier))) {
- if (model) {
- /* disable isolate for all routes */
- _session->set_solo_isolated (_session->get_routes(), false, Session::rt_cleanup, true);
- }
+ if (model) {
+ /* disable isolate for all routes */
+ DisplaySuspender ds;
+ _session->set_solo_isolated (_session->get_routes(), false, Session::rt_cleanup, true);
+ }
- } else {
- if (model == view) {
+ } else {
+ if (model == view) {
- /* flip just this route */
+ /* flip just this route */
- boost::shared_ptr<RouteList> rl (new RouteList);
- rl->push_back (_route);
- _session->set_solo_isolated (rl, !view, Session::rt_cleanup, true);
- }
- }
- }
+ boost::shared_ptr<RouteList> rl (new RouteList);
+ rl->push_back (_route);
+ DisplaySuspender ds;
+ _session->set_solo_isolated (rl, !view, Session::rt_cleanup, true);
+ }
+ }
+ }
- return true;
+ return true;
}
bool
void
RouteUI::adjust_latency ()
{
- LatencyDialog dialog (_route->name() + _(" latency"), *(_route->output()), _session->frame_rate(), _session->engine().frames_per_cycle());
+ LatencyDialog dialog (_route->name() + _(" latency"), *(_route->output()), _session->frame_rate(), AudioEngine::instance()->samples_per_cycle());
}
void
_route->remote_control_id(),
(_route->is_master() ? _("the master bus") : _("the monitor bus"))));
} else {
- l->set_markup (string_compose (_("The remote control ID of %6 is: %3\n\n\n"
- "Remote Control IDs are currently determined by track/bus ordering in %1\n\n"
- "%4Use the User Interaction tab of the Preferences window if you want to change this%5"),
- (Config->get_remote_model() == MixerOrdered ? _("the mixer") : _("the editor")),
+ l->set_markup (string_compose (_("The remote control ID of %5 is: %2\n\n\n"
+ "Remote Control IDs are currently determined by track/bus ordering in %6.\n\n"
+ "%3Use the User Interaction tab of the Preferences window if you want to change this%4"),
(is_track() ? _("track") : _("bus")),
_route->remote_control_id(),
"<span size=\"small\" style=\"italic\">",
"</span>",
- Glib::Markup::escape_text (_route->name())));
+ Glib::Markup::escape_text (_route->name()),
+ PROGRAM_NAME));
}
dialog.get_vbox()->pack_start (*l);
dialog.add_button (Stock::OK, RESPONSE_CANCEL);
for (uint32_t i = 0; i < N; ++i) {
items.push_back (CheckMenuElem (string_compose (X_("Ø%1"), i + 1), sigc::bind (sigc::mem_fun (*this, &RouteUI::invert_menu_toggled), i)));
- CheckMenuItem* e = dynamic_cast<CheckMenuItem*> (&items.back ());
+ Gtk::CheckMenuItem* e = dynamic_cast<Gtk::CheckMenuItem*> (&items.back ());
++_i_am_the_modifier;
e->set_active (_route->phase_invert (i));
--_i_am_the_modifier;
RouteGroup* g = _route->route_group ();
if (g && g->is_color()) {
- return GroupTabs::group_color (g);
+ Gdk::Color c;
+ set_color_from_rgba (c, GroupTabs::group_color (g));
+ return c;
}
return _color;