#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"
DisplaySuspender ds;
if (Config->get_solo_control_is_listen_control()) {
- _session->set_listen (_session->get_routes(), !_route->listening_via_monitor(), Session::rt_cleanup, true);
+ _session->set_listen (_session->get_routes(), !_route->listening_via_monitor(), Session::rt_cleanup, false);
} else {
- _session->set_solo (_session->get_routes(), !_route->self_soloed(), Session::rt_cleanup, true);
+ _session->set_solo (_session->get_routes(), !_route->self_soloed(), Session::rt_cleanup, false);
}
} else if (Keyboard::modifier_state_contains (ev->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::SecondaryModifier))) {
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();
} else {
DisplaySuspender ds;
if (Config->get_solo_control_is_listen_control()) {
- _session->set_listen (_solo_release->routes, _solo_release->active, Session::rt_cleanup, true);
+ _session->set_listen (_solo_release->routes, _solo_release->active, Session::rt_cleanup, false);
} else {
- _session->set_solo (_solo_release->routes, _solo_release->active, Session::rt_cleanup, true);
+ _session->set_solo (_solo_release->routes, _solo_release->active, Session::rt_cleanup, false);
}
}
}
}
+void
+RouteUI::duplicate_selected_routes ()
+{
+ ARDOUR_UI::instance()->start_duplicate_routes();
+}
+
void
RouteUI::toggle_denormal_protection ()
{
LatencyDialog dialog (_route->name() + _(" latency"), *(_route->output()), _session->frame_rate(), AudioEngine::instance()->samples_per_cycle());
}
-void
-RouteUI::save_as_template ()
+bool
+RouteUI::process_save_template_prompter (ArdourPrompter& prompter, const std::string& dir)
{
std::string path;
std::string safe_name;
- string name;
+ std::string name;
- path = ARDOUR::user_route_template_directory ();
+ prompter.get_result (name, true);
- if (g_mkdir_with_parents (path.c_str(), 0755)) {
- error << string_compose (_("Cannot create route template directory %1"), path) << endmsg;
- return;
+ safe_name = legalize_for_path (name);
+ safe_name += template_suffix;
+
+ path = Glib::build_filename (dir, safe_name);
+
+ if (Glib::file_test (path, Glib::FILE_TEST_EXISTS)) {
+ bool overwrite = overwrite_file_dialog (prompter,
+ _("Confirm Template Overwrite"),
+ _("A template already exists with that name. Do you want to overwrite it?"));
+
+ if (!overwrite) {
+ return false;
+ }
}
- Prompter p (true); // modal
+ _route->save_as_template (path, name);
- p.set_title (_("Save As Template"));
- p.set_prompt (_("Template name:"));
- p.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
- switch (p.run()) {
- case RESPONSE_ACCEPT:
- break;
- default:
+ return true;
+}
+
+void
+RouteUI::save_as_template ()
+{
+ std::string dir;
+
+ dir = ARDOUR::user_route_template_directory ();
+
+ if (g_mkdir_with_parents (dir.c_str(), 0755)) {
+ error << string_compose (_("Cannot create route template directory %1"), dir) << endmsg;
return;
}
- p.hide ();
- p.get_result (name, true);
+ ArdourPrompter prompter (true); // modal
- safe_name = legalize_for_path (name);
- safe_name += template_suffix;
-
- path = Glib::build_filename (path, safe_name);
+ prompter.set_title (_("Save As Template"));
+ prompter.set_prompt (_("Template name:"));
+ prompter.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
- _route->save_as_template (path, name);
+ bool finished = false;
+ while (!finished) {
+ switch (prompter.run()) {
+ case RESPONSE_ACCEPT:
+ finished = process_save_template_prompter (prompter, dir);
+ break;
+ default:
+ finished = true;
+ break;
+ }
+ }
}
void
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 {
_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);