summaryrefslogtreecommitdiff
path: root/gtk2_ardour/new_session_dialog.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-09-17 14:10:27 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-09-17 14:10:27 +0000
commit9bca2cd6f869c7651418b21d0523ed6ac19390cc (patch)
tree2f7234d65a63d4dbf78b07dadada16a2dc2cf8fe /gtk2_ardour/new_session_dialog.cc
parent58c2acc99ef442f1a7627d6746f10084889f478a (diff)
more NSD hacks, including a new exception thrown when loading a session at a different SR than JACK, and the user opts not to load it
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@5672 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/new_session_dialog.cc')
-rw-r--r--gtk2_ardour/new_session_dialog.cc36
1 files changed, 22 insertions, 14 deletions
diff --git a/gtk2_ardour/new_session_dialog.cc b/gtk2_ardour/new_session_dialog.cc
index af514fee05..7ee04b5b31 100644
--- a/gtk2_ardour/new_session_dialog.cc
+++ b/gtk2_ardour/new_session_dialog.cc
@@ -48,6 +48,7 @@ NewSessionDialog::NewSessionDialog()
{
in_destructor = false;
session_name_label = new Gtk::Label(_("Name :"));
+ last_name_page = NewPage;
m_name = new Gtk::Entry();
m_name->set_text(ARDOUR_COMMAND_LINE::session_name);
@@ -593,12 +594,11 @@ NewSessionDialog::set_session_folder(const Glib::ustring& dir)
char* res;
if (!Glib::file_test (dir, Glib::FILE_TEST_IS_DIR)) {
realdir = Glib::path_get_dirname (realdir);
- cerr << "didn't exist, use " << realdir << endl;
}
if ((res = canonicalize_file_name (realdir.c_str())) != 0) {
- cerr << "canonical, use " << res << endl;
m_folder->set_current_folder (res);
+ engine_page_session_folder = res;
free (res);
}
@@ -626,12 +626,18 @@ NewSessionDialog::session_name() const
switch (which_page()) {
case NewPage:
+ return Glib::filename_from_utf8(m_name->get_text());
+
case EnginePage:
- /* new or audio setup pages */
- if (!(page_set & OpenPage) && !(page_set & NewPage)) {
- return Glib::filename_from_utf8(engine_page_session_name);
+ if (!(page_set & (OpenPage|NewPage))) {
+ return engine_page_session_name;
+ } else if (last_name_page == NewPage) {
+ return Glib::filename_from_utf8(m_name->get_text());
+ } else {
+ /* relax and use the open page stuff at the end */
}
- return Glib::filename_from_utf8(m_name->get_text());
+ break;
+
default:
break;
}
@@ -639,6 +645,7 @@ NewSessionDialog::session_name() const
if (m_treeview->get_selection()->count_selected_rows() == 0) {
return Glib::filename_from_utf8(str);
}
+
Gtk::TreeModel::iterator i = m_treeview->get_selection()->get_selected();
return (*i)[recent_columns.visible_name];
}
@@ -651,13 +658,13 @@ NewSessionDialog::session_folder() const
return Glib::filename_from_utf8(m_folder->get_filename());
case EnginePage:
- if (!(page_set & OpenPage) && !(page_set & NewPage)) {
- /* just engine page, nothing else */
+ if (!(page_set & (OpenPage|NewPage))) {
return Glib::filename_from_utf8(engine_page_session_folder);
- }
- if (page_set == EnginePage) {
+ } else if (last_name_page == NewPage) {
/* use m_folder since it should be set */
return Glib::filename_from_utf8(m_folder->get_filename());
+ } else {
+ /* relax and use the open page stuff at the end */
}
break;
@@ -770,8 +777,6 @@ NewSessionDialog::which_page () const
{
int num = m_notebook->get_current_page();
- cerr << "current page set = " << std::hex << page_set << std::dec << endl;
-
if (page_set == NewPage) {
return NewPage;
@@ -891,6 +896,7 @@ NewSessionDialog::notebook_page_changed (GtkNotebookPage* np, uint pagenum)
} else {
set_response_sensitive (Gtk::RESPONSE_OK, true);
}
+ last_name_page = OpenPage;
break;
case EnginePage:
@@ -898,14 +904,14 @@ NewSessionDialog::notebook_page_changed (GtkNotebookPage* np, uint pagenum)
if (!engine_control.interface_chosen()) {
m_okbutton->set_label(_("Start Audio Engine"));
} else {
- m_okbutton->set_label(_("Open"));
+ m_okbutton->set_label(_("Start"));
}
m_okbutton->set_image (*(manage (new Gtk::Image (Gtk::Stock::OPEN, Gtk::ICON_SIZE_BUTTON))));
set_response_sensitive (Gtk::RESPONSE_NONE, false);
set_response_sensitive (Gtk::RESPONSE_OK, true);
break;
- default:
+ case NewPage:
on_new_session_page = true;
m_okbutton->set_label(_("New"));
m_okbutton->set_image (*(new Gtk::Image (Gtk::Stock::NEW, Gtk::ICON_SIZE_BUTTON)));
@@ -915,6 +921,8 @@ NewSessionDialog::notebook_page_changed (GtkNotebookPage* np, uint pagenum)
} else {
set_response_sensitive (Gtk::RESPONSE_OK, true);
}
+ last_name_page = NewPage;
+ break;
}
}