{
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);
const char * const template_dir_name = X_("templates");
- if (!path.empty()) {
- string user_template_path = path + template_dir_name;
+ //if SYSTEM template folder exists, add it to the file chooser
+ const std::string sys_templates_path = ARDOUR::get_system_data_path() + template_dir_name;
+printf("system template path = %s\n", sys_templates_path.c_str());
+ if (Glib::file_test(sys_templates_path, Glib::FILE_TEST_IS_DIR))
+ {
+ m_template->add_shortcut_folder(sys_templates_path);
+ m_template->set_current_folder (sys_templates_path);
+ }
- if (Glib::file_test(user_template_path, Glib::FILE_TEST_IS_DIR))
- {
- m_template->set_current_folder (user_template_path);
+ //if USER template folder exists, add it to the file chooser
+ const std::string user_template_path = ARDOUR::get_user_ardour_path() + template_dir_name;
+ bool utp_exists = true;
+
+ if (!Glib::file_test(user_template_path, Glib::FILE_TEST_IS_DIR)) {
+ if (g_mkdir_with_parents (user_template_path.c_str(), 0755)) {
+ utp_exists = false;
}
}
- const std::string sys_templates_dir = ARDOUR::get_system_data_path() + template_dir_name;
-
- if (Glib::file_test(sys_templates_dir, Glib::FILE_TEST_IS_DIR))
- {
- m_template->add_shortcut_folder(sys_templates_dir);
+ if (utp_exists) {
+ m_template->add_shortcut_folder(user_template_path);
+ m_template->set_current_folder (user_template_path);
}
m_template->set_title(_("select template"));
void
NewSessionDialog::set_have_engine (bool yn)
{
- if (yn) {
- m_notebook->remove_page (engine_control);
- page_set = Pages (page_set & ~EnginePage);
- } else {
- if (!(page_set & EnginePage)) {
+
+ m_notebook->remove_page (engine_control);
+ page_set = Pages (page_set & ~EnginePage);
+
+ if (!yn) {
+
+ engine_control.discover_servers ();
+
+ if (engine_control.interface_chosen()) {
m_notebook->append_page (engine_control, _("Audio Setup"));
m_notebook->show_all_children();
page_set = Pages (page_set | EnginePage);
+ } else {
+ m_notebook->prepend_page (engine_control, _("Audio Setup"));
+ page_set = Pages (page_set | EnginePage);
+
+ /* no interface ever selected - make it the first and only page */
+ if (page_set & NewPage) {
+ m_notebook->remove_page (*new_session_table);
+ page_set = Pages (page_set & ~NewPage);
+ }
+ if (page_set & OpenPage) {
+ m_notebook->remove_page (*open_session_vbox);
+ page_set = Pages (page_set & ~OpenPage);
+ }
+ m_notebook->show_all_children();
}
}
}
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);
}
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;
}
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];
}
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;
}
} else if (page_set == (NewPage|EnginePage)) {
- switch (num) {
- case 0:
- return NewPage;
- default:
- return EnginePage;
+ if (engine_control.interface_chosen()) {
+ switch (num) {
+ case 0:
+ return NewPage;
+ default:
+ return EnginePage;
+ }
+ } else {
+ switch (num) {
+ case 0:
+ return EnginePage;
+ default:
+ return NewPage;
+ }
}
} else if (page_set == (NewPage|EnginePage|OpenPage)) {
- switch (num) {
- case 0:
- return NewPage;
- case 1:
- return OpenPage;
- default:
- return EnginePage;
+ if (engine_control.interface_chosen()) {
+ switch (num) {
+ case 0:
+ return NewPage;
+ case 1:
+ return OpenPage;
+ default:
+ return EnginePage;
+ }
+ } else {
+ switch (num) {
+ case 0:
+ return EnginePage;
+ case 1:
+ return NewPage;
+ default:
+ return OpenPage;
+ }
}
} else if (page_set == (OpenPage|EnginePage)) {
- switch (num) {
- case 0:
- return OpenPage;
- default:
- return EnginePage;
+ if (engine_control.interface_chosen()) {
+ switch (num) {
+ case 0:
+ return OpenPage;
+ default:
+ return EnginePage;
+ }
+ } else {
+ switch (num) {
+ case 0:
+ return EnginePage;
+ default:
+ return OpenPage;
+ }
}
}
} else {
set_response_sensitive (Gtk::RESPONSE_OK, true);
}
+ last_name_page = OpenPage;
break;
case EnginePage:
on_new_session_page = false;
- m_okbutton->set_label(_("Open"));
+ if (!engine_control.interface_chosen()) {
+ m_okbutton->set_label(_("Start Audio Engine"));
+ } else {
+ 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)));
} else {
set_response_sensitive (Gtk::RESPONSE_OK, true);
}
+ last_name_page = NewPage;
+ break;
}
}