Confirmation on overwrite for track and session templates. -fixes #6587
[ardour.git] / gtk2_ardour / route_ui.cc
index 201ad5d2193843c7a33d745ce62589dc8f162b7b..2f45756c27f25e64197395cb2eed822a7df3eeb6 100644 (file)
@@ -54,6 +54,7 @@
 #include "ardour/filename_extensions.h"
 #include "ardour/midi_track.h"
 #include "ardour/internal_send.h"
+#include "ardour/profile.h"
 #include "ardour/send.h"
 #include "ardour/route.h"
 #include "ardour/session.h"
@@ -596,8 +597,7 @@ RouteUI::solo_press(GdkEventButton* ev)
                                boost::shared_ptr<RouteList> rl;
 
                                if (ev->button == 1) {
-
-                                       if (_route->route_group()) {
+                                       if (ARDOUR::Profile->get_mixbus() && _route->route_group()) {
 
                                                rl = _route->route_group()->route_list();
 
@@ -613,7 +613,7 @@ RouteUI::solo_press(GdkEventButton* ev)
                                        if (Config->get_solo_control_is_listen_control()) {
                                                _session->set_listen (rl, !_route->listening_via_monitor(),  Session::rt_cleanup, true);
                                        } else {
-                                               _session->set_solo (rl, !_route->self_soloed(),  Session::rt_cleanup, false);
+                                               _session->set_solo (rl, !_route->self_soloed(),  Session::rt_cleanup, true);
                                        }
                                }
 
@@ -1863,13 +1863,20 @@ RouteUI::save_as_template ()
                return;
        }
 
-       p.hide ();
        p.get_result (name, true);
 
        safe_name = legalize_for_path (name);
        safe_name += template_suffix;
 
        path = Glib::build_filename (path, safe_name);
+       if (Glib::file_test (path, Glib::FILE_TEST_EXISTS)) {
+               bool overwrite = overwrite_file_dialog (_("Confirm Template Overwrite"),
+                                                       _("A template already exists with that name. Do you want to overwrite it?"));
+
+               if (!overwrite) {
+                       return;
+               }
+       }
 
        _route->save_as_template (path, name);
 }
@@ -1961,7 +1968,7 @@ RouteUI::open_remote_control_id_dialog ()
                if (_route->is_master() || _route->is_monitor()) {
                        l->set_markup (string_compose (_("The remote control ID of %1 is: %2\n\n\n"
                                                         "The remote control ID of %3 cannot be changed."),
-                                                      Glib::Markup::escape_text (_route->name()),
+                                                      Gtkmm2ext::markup_escape_text (_route->name()),
                                                       _route->remote_control_id(),
                                                       (_route->is_master() ? _("the master bus") : _("the monitor bus"))));
                } else {
@@ -1972,7 +1979,7 @@ RouteUI::open_remote_control_id_dialog ()
                                                       _route->remote_control_id(),
                                                       "<span size=\"small\" style=\"italic\">",
                                                       "</span>",
-                                                      Glib::Markup::escape_text (_route->name()),
+                                                      Gtkmm2ext::markup_escape_text (_route->name()),
                                                       PROGRAM_NAME));
                }
                dialog.get_vbox()->pack_start (*l);