rec_enable_button->set_sensitive (_session->writable());
}
-
+
controls_hbox.pack_start(gm.get_level_meter(), false, false);
_route->meter_change.connect (*this, invalidator (*this), bind (&RouteTimeAxisView::meter_changed, this), gui_context());
_route->input()->changed.connect (*this, invalidator (*this), ui_bind (&RouteTimeAxisView::io_changed, this, _1, _2), gui_context());
PROGRAM_NAME));
name_entry.set_text (_route->name());
} else {
- _route->set_name (x);
+
+ if (RouteUI::verify_new_route_name (x)) {
+ _route->set_name (x);
+ }
}
}
return false;
}
+bool
+RouteUI::verify_new_route_name (const std::string& name)
+{
+ if (name.find (':')) {
+ MessageDialog colon_msg (_("The use of colons (':') is discouraged in track and bus names.\nDo you insist on using this?"));
+ colon_msg.add_button (Stock::CANCEL, RESPONSE_CANCEL);
+ switch (colon_msg.run()) {
+ case Gtk::RESPONSE_ACCEPT:
+ return true;
+ break;
+ default:
+ return false;
+ break;
+ }
+ }
+
+ return true;
+}
+
void
RouteUI::route_rename ()
{
ArdourPrompter name_prompter (true);
string result;
+ bool done = false;
+
if (is_track()) {
name_prompter.set_title (_("Rename Track"));
} else {
name_prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
name_prompter.show_all ();
- switch (name_prompter.run ()) {
- case Gtk::RESPONSE_ACCEPT:
- name_prompter.get_result (result);
- if (result.length()) {
- _route->set_name (result);
+ while (!done) {
+ switch (name_prompter.run ()) {
+ case Gtk::RESPONSE_ACCEPT:
+ name_prompter.get_result (result);
+ name_prompter.hide ();
+ if (result.length()) {
+ if (verify_new_route_name (result)) {
+ _route->set_name (result);
+ done = true;
+ } else {
+ /* back to name prompter */
+ }
+
+ } else {
+ /* nothing entered, just get out of here */
+ done = true;
+ }
+ break;
}
- break;
}
return;
virtual void stop_step_editing() {}
void set_invert_sensitive (bool);
+ bool verify_new_route_name (const std::string& name);
private:
void check_rec_enable_sensitivity ();
char buf1[name_size+1];
char buf2[name_size+1];
- snprintf (buf1, name_size+1, ("%.*s/%s"), limit, _name.val().c_str(), suffix.c_str());
+ /* colons are illegal in port names, so fix that */
+
+ string nom = _name.val();
+ replace_all (nom, ":", ";");
+
+ snprintf (buf1, name_size+1, ("%.*s/%s"), limit, nom.c_str(), suffix.c_str());
int port_number = find_port_hole (buf1);
snprintf (buf2, name_size+1, "%s %d", buf1, port_number);
#include "ardour/file_source.h"
#include "ardour/filter.h"
#include "ardour/playlist.h"
+#include "ardour/playlist_source.h"
#include "ardour/profile.h"
#include "ardour/region.h"
#include "ardour/region_factory.h"
if (*i == source) {
return true;
}
+
+ boost::shared_ptr<PlaylistSource> ps = boost::dynamic_pointer_cast<PlaylistSource> (*i);
+
+ if (ps) {
+ if (ps->playlist()->uses_source (source)) {
+ return true;
+ }
+ }
}
+
return false;
}