X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Froute_ui.cc;h=9ad84290b54b21e0ae7c9538fd23032ff3a4358d;hb=82c794db70b4581c289f7fa72fe4753756016eca;hp=b0338ff1216019d4a1626bc32e73999a2396ebf5;hpb=458925dba520d6eb795daef755016f29cf77d015;p=ardour.git diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index b0338ff121..9ad84290b5 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -109,7 +109,6 @@ RouteUI::init () solo_safe_led = 0; _solo_release = 0; _mute_release = 0; - route_active_menu_item = 0; denormal_menu_item = 0; step_edit_item = 0; multiple_mute_change = false; @@ -179,7 +178,6 @@ RouteUI::reset () xml_node = 0; } - route_active_menu_item = 0; denormal_menu_item = 0; } @@ -1257,19 +1255,20 @@ RouteUI::toggle_solo_safe (Gtk::CheckMenuItem* check) _route->set_solo_safe (check->get_active(), this); } -bool -RouteUI::choose_color() +/** Ask the user to choose a colour, and then set all selected tracks + * to that colour. + */ +void +RouteUI::choose_color () { bool picked; - Gdk::Color color; - - color = Gtkmm2ext::UI::instance()->get_color (_("Color Selection"), picked, &_color); + Gdk::Color const color = Gtkmm2ext::UI::instance()->get_color (_("Color Selection"), picked, &_color); if (picked) { - set_color (color); + ARDOUR_UI::instance()->the_editor().get_selection().tracks.foreach_route_ui ( + boost::bind (&RouteUI::set_color, _1, color) + ); } - - return picked; } void @@ -1374,15 +1373,18 @@ RouteUI::set_color_from_route () } void -RouteUI::remove_this_route () +RouteUI::remove_this_route (bool apply_to_selection) { - if ((route()->is_master() || route()->is_monitor()) && - !Config->get_allow_special_bus_removal()) { - MessageDialog msg (_("That would be bad news ...."), - false, - Gtk::MESSAGE_INFO, + if (apply_to_selection) { + ARDOUR_UI::instance()->the_editor().get_selection().tracks.foreach_route_ui (boost::bind (&RouteUI::remove_this_route, _1, false)); + } else { + if ((route()->is_master() || route()->is_monitor()) && + !Config->get_allow_special_bus_removal()) { + MessageDialog msg (_("That would be bad news ...."), + false, + Gtk::MESSAGE_INFO, Gtk::BUTTONS_OK); - msg.set_secondary_text (string_compose (_( + msg.set_secondary_text (string_compose (_( "Removing the master or monitor bus is such a bad idea\n\ that %1 is not going to allow it.\n\ \n\ @@ -1390,34 +1392,35 @@ If you really want to do this sort of thing\n\ edit your ardour.rc file to set the\n\ \"allow-special-bus-removal\" option to be \"yes\""), PROGRAM_NAME)); - msg.present (); - msg.run (); - return; - } - - vector choices; - string prompt; - - if (is_track()) { - prompt = string_compose (_("Do you really want to remove track \"%1\" ?\n\nYou may also lose the playlist used by this track.\n\n(This action cannot be undone, and the session file will be overwritten)"), _route->name()); - } else { - prompt = string_compose (_("Do you really want to remove bus \"%1\" ?\n\nYou may also lose the playlist used by this track.\n\n(This action cannot be undone, and the session file will be overwritten)"), _route->name()); - } - - choices.push_back (_("No, do nothing.")); - choices.push_back (_("Yes, remove it.")); - - string title; - if (is_track()) { - title = _("Remove track"); - } else { - title = _("Remove bus"); - } - - Choice prompter (title, prompt, choices); - - if (prompter.run () == 1) { - Glib::signal_idle().connect (sigc::bind (sigc::ptr_fun (&RouteUI::idle_remove_this_route), this)); + msg.present (); + msg.run (); + return; + } + + vector choices; + string prompt; + + if (is_track()) { + prompt = string_compose (_("Do you really want to remove track \"%1\" ?\n\nYou may also lose the playlist used by this track.\n\n(This action cannot be undone, and the session file will be overwritten)"), _route->name()); + } else { + prompt = string_compose (_("Do you really want to remove bus \"%1\" ?\n\nYou may also lose the playlist used by this track.\n\n(This action cannot be undone, and the session file will be overwritten)"), _route->name()); + } + + choices.push_back (_("No, do nothing.")); + choices.push_back (_("Yes, remove it.")); + + string title; + if (is_track()) { + title = _("Remove track"); + } else { + title = _("Remove bus"); + } + + Choice prompter (title, prompt, choices); + + if (prompter.run () == 1) { + Glib::signal_idle().connect (sigc::bind (sigc::ptr_fun (&RouteUI::idle_remove_this_route), this)); + } } } @@ -1466,26 +1469,15 @@ RouteUI::property_changed (const PropertyChange& what_changed) } void -RouteUI::toggle_route_active () +RouteUI::set_route_active (bool a, bool apply_to_selection) { - bool yn; - - if (route_active_menu_item) { - if (route_active_menu_item->get_active() != (yn = _route->active())) { - _route->set_active (!yn, this); - } - } -} - -void -RouteUI::route_active_changed () -{ - if (route_active_menu_item) { - Gtkmm2ext::UI::instance()->call_slot (invalidator (*this), boost::bind (&CheckMenuItem::set_active, route_active_menu_item, _route->active())); + if (apply_to_selection) { + ARDOUR_UI::instance()->the_editor().get_selection().tracks.foreach_route_ui (boost::bind (&RouteTimeAxisView::set_route_active, _1, a, false)); + } else { + _route->set_active (a, this); } } - void RouteUI::toggle_denormal_protection () {