summaryrefslogtreecommitdiff
path: root/gtk2_ardour/ardour_ui.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-03-15 12:04:00 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-03-15 12:04:00 +0000
commit9593d6e9cf88eabe12a299e567d8b8c4fbdddf6f (patch)
treeeef57e8cc4584a3715e179588286f89de05f0628 /gtk2_ardour/ardour_ui.cc
parent78abd0538b5879ffa386491f5032dbc8e3979b64 (diff)
patch from colinf to handle default session dir a little better
git-svn-id: svn://localhost/ardour2/branches/3.0@11694 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/ardour_ui.cc')
-rw-r--r--gtk2_ardour/ardour_ui.cc28
1 files changed, 15 insertions, 13 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 058c239e26..9b58397877 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -1349,6 +1349,17 @@ ARDOUR_UI::open_session ()
open_session_selector->add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
open_session_selector->add_button (Gtk::Stock::OPEN, Gtk::RESPONSE_ACCEPT);
open_session_selector->set_default_response(Gtk::RESPONSE_ACCEPT);
+
+ if (_session) {
+ string session_parent_dir = Glib::path_get_dirname(_session->path());
+ string::size_type last_dir_sep = session_parent_dir.rfind(G_DIR_SEPARATOR);
+ session_parent_dir = session_parent_dir.substr(0, last_dir_sep);
+ open_session_selector->set_current_folder(session_parent_dir);
+ } else {
+ open_session_selector->set_current_folder(Config->get_default_session_parent_dir());
+ }
+
+ open_session_selector->add_shortcut_folder (Config->get_default_session_parent_dir());
FileFilter session_filter;
session_filter.add_pattern ("*.ardour");
@@ -2577,19 +2588,10 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri
continue;
}
- if (session_name.find ('/') != std::string::npos) {
- MessageDialog msg (*_startup,
- _("To ensure compatibility with various systems\n"
- "session names may not contain a '/' character"));
- msg.run ();
- ARDOUR_COMMAND_LINE::session_name = ""; // cancel that
- continue;
- }
-
- if (session_name.find ('\\') != std::string::npos) {
- MessageDialog msg (*_startup,
- _("To ensure compatibility with various systems\n"
- "session names may not contain a '\\' character"));
+ char illegal = Session::session_name_is_legal(session_name);
+ if (illegal) {
+ MessageDialog msg (*_startup, string_compose(_("To ensure compatibility with various systems\n"
+ "session names may not contain a '%1' character"), illegal));
msg.run ();
ARDOUR_COMMAND_LINE::session_name = ""; // cancel that
continue;