*/
-#include "i18n.h"
-#include "new_session_dialog.h"
-
#include <pbd/error.h>
#include <ardour/recent_sessions.h>
#include "opts.h"
#include "utils.h"
+#include "i18n.h"
+#include "new_session_dialog.h"
NewSessionDialog::NewSessionDialog()
: ArdourDialog ("session control")
m_template = new Gtk::FileChooserButton();
m_create_control_bus = new Gtk::CheckButton(_("Create Monitor Bus"));
- Gtk::Adjustment *m_control_bus_channel_count_adj = Gtk::manage(new Gtk::Adjustment(2, 0, 100, 1, 10, 10));
+ Gtk::Adjustment *m_control_bus_channel_count_adj = Gtk::manage(new Gtk::Adjustment(2, 0, 100, 1, 10));
m_control_bus_channel_count = new Gtk::SpinButton(*m_control_bus_channel_count_adj, 1, 0);
- Gtk::Adjustment *m_master_bus_channel_count_adj = Gtk::manage(new Gtk::Adjustment(2, 0, 100, 1, 10, 10));
+ Gtk::Adjustment *m_master_bus_channel_count_adj = Gtk::manage(new Gtk::Adjustment(2, 0, 100, 1, 10));
m_master_bus_channel_count = new Gtk::SpinButton(*m_master_bus_channel_count_adj, 1, 0);
m_create_master_bus = new Gtk::CheckButton(_("Create Master Bus"));
advanced_table = new Gtk::Table(2, 2, true);
m_connect_inputs = new Gtk::CheckButton(_("Automatically Connect to Physical Inputs"));
m_limit_input_ports = new Gtk::CheckButton(_("Use only"));
- Gtk::Adjustment *m_input_limit_count_adj = Gtk::manage(new Gtk::Adjustment(1, 0, 100, 1, 10, 10));
+ Gtk::Adjustment *m_input_limit_count_adj = Gtk::manage(new Gtk::Adjustment(1, 0, 100, 1, 10));
m_input_limit_count = new Gtk::SpinButton(*m_input_limit_count_adj, 1, 0);
input_port_limit_hbox = new Gtk::HBox(false, 0);
input_port_vbox = new Gtk::VBox(false, 0);
m_connect_outputs = new Gtk::CheckButton(_("Automatically Connect Outputs"));
m_limit_output_ports = new Gtk::CheckButton(_("Use only"));
- Gtk::Adjustment *m_output_limit_count_adj = Gtk::manage(new Gtk::Adjustment(1, 0, 100, 1, 10, 10));
+ Gtk::Adjustment *m_output_limit_count_adj = Gtk::manage(new Gtk::Adjustment(1, 0, 100, 1, 10));
m_output_limit_count = new Gtk::SpinButton(*m_output_limit_count_adj, 1, 0);
output_port_limit_hbox = new Gtk::HBox(false, 0);
output_port_vbox = new Gtk::VBox(false, 0);
m_notebook->show();
m_notebook->show_all_children();
+ engine_page_session_folder = X_("");
+ engine_page_session_name = X_("");
set_default_response (Gtk::RESPONSE_OK);
if (!ARDOUR_COMMAND_LINE::session_name.length()) {
/* nothing to display */
return Gtk::RESPONSE_OK;
}
-
+ if (!(page_set & NewPage) && !(page_set & OpenPage)) {
+ set_response_sensitive (Gtk::RESPONSE_OK, true);
+ }
return ArdourDialog::run ();
}
NewSessionDialog::set_session_name (const Glib::ustring& name)
{
m_name->set_text (name);
+ engine_page_session_name = name;
}
void
NewSessionDialog::set_session_folder(const Glib::ustring& dir)
{
Glib::ustring realdir = dir;
- char* res;
/* this little tangled mess is a result of 4 things:
char buf[PATH_MAX];
- if((res = realpath (dir.c_str(), buf)) != 0) {
+ if(realpath (dir.c_str(), buf) != 0) {
if (!Glib::file_test (dir, Glib::FILE_TEST_IS_DIR)) {
realdir = Glib::path_get_dirname (realdir);
}
m_folder->set_current_folder (realdir);
+ engine_page_session_folder = realdir;
}
#else
+ 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;
case NewPage:
case EnginePage:
/* new or audio setup pages */
+ if (!(page_set & OpenPage) && !(page_set & NewPage)) {
+ return Glib::filename_from_utf8(engine_page_session_name);
+ }
return Glib::filename_from_utf8(m_name->get_text());
default:
break;
return Glib::filename_from_utf8(m_folder->get_filename());
case EnginePage:
+ if (!(page_set & OpenPage) && !(page_set & NewPage)) {
+ /* just engine page, nothing else */
+ return Glib::filename_from_utf8(engine_page_session_folder);
+ }
if (page_set == EnginePage) {
- /* just engine page, nothing else : use m_folder since it should be set */
+ /* use m_folder since it should be set */
return Glib::filename_from_utf8(m_folder->get_filename());
}
break;
} else if (page_set == EnginePage) {
return EnginePage;
- } else if (page_set == NewPage|OpenPage) {
+ } else if (page_set == (NewPage|OpenPage)) {
switch (num) {
case 0:
return NewPage;
return OpenPage;
}
- } else if (page_set == NewPage|EnginePage) {
+ } else if (page_set == (NewPage|EnginePage)) {
switch (num) {
case 0:
return NewPage;
return EnginePage;
}
- } else if (page_set == NewPage|EnginePage|OpenPage) {
+ } else if (page_set == (NewPage|EnginePage|OpenPage)) {
switch (num) {
case 0:
return NewPage;
return EnginePage;
}
- } else if (page_set == OpenPage|EnginePage) {
+ } else if (page_set == (OpenPage|EnginePage)) {
switch (num) {
case 0:
return OpenPage;
return EnginePage;
}
}
+
+ return NewPage; /* shouldn't get here */
}
void