platform_setup ();
}
-void
+/** @return true if a session was chosen and `apply' clicked, otherwise false if `cancel' was clicked */
+bool
ARDOUR_UI::run_startup (bool should_be_new)
{
if (_startup == 0) {
/* we don't return here until the startup assistant is finished */
_startup->hide ();
+
+ return _startup->applying ();
}
int
_startup->engine_control()->set_state (*audio_setup);
}
- if (get_session_parameters (ARDOUR_COMMAND_LINE::new_session)) {
+ if (get_session_parameters (true, ARDOUR_COMMAND_LINE::new_session)) {
exit (1);
}
flush_pending ();
}
+/** @param quit_on_cancel true if exit() should be called if the user clicks `cancel' in the new session dialog */
int
-ARDOUR_UI::get_session_parameters (bool should_be_new)
+ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new)
{
Glib::ustring session_name;
Glib::ustring session_path;
int ret = -1;
bool likely_new = false;
+ cout << "get_session_parameters\n";
+
while (ret != 0) {
if (!should_be_new && !ARDOUR_COMMAND_LINE::session_name.empty()) {
} else {
- run_startup (should_be_new);
+ bool const apply = run_startup (should_be_new);
+ if (!apply) {
+ if (quit_on_cancel) {
+ exit (1);
+ } else {
+ return ret;
+ }
+ }
/* if we run the startup dialog again, offer more than just "new session" */
_session_is_new = true;
}
-
if (session_name[0] == '/' ||
(session_name.length() > 2 && session_name[0] == '.' && session_name[1] == '/') ||
(session_name.length() > 3 && session_name[0] == '.' && session_name[1] == '.' && session_name[2] == '/')) {
unload_session (true);
ARDOUR_COMMAND_LINE::session_name = "";
- get_session_parameters (false);
+ get_session_parameters (true, false);
}
int
ARDOUR_UI (int *argcp, char **argvp[]);
~ARDOUR_UI();
- void run_startup (bool should_be_new);
+ bool run_startup (bool should_be_new);
void show ();
bool shown() { return shown_flag; }
_will_create_new_session_automatically = yn;
}
- int get_session_parameters (bool should_be_new = false);
+ int get_session_parameters (bool quit_on_cancel, bool should_be_new = false);
void parse_cmdline_path (const Glib::ustring& cmdline_path, Glib::ustring& session_name, Glib::ustring& session_path, bool& existing_session);
int load_cmdline_session (const Glib::ustring& session_name, const Glib::ustring& session_path, bool& existing_session);
int build_session_from_nsd (const Glib::ustring& session_name, const Glib::ustring& session_path);
/* the real actions */
- act = ActionManager::register_action (main_actions, X_("New"), _("New..."), hide_return (bind (mem_fun(*this, &ARDOUR_UI::get_session_parameters), true)));
+ act = ActionManager::register_action (main_actions, X_("New"), _("New..."), hide_return (bind (mem_fun(*this, &ARDOUR_UI::get_session_parameters), false, true)));
ActionManager::register_action (main_actions, X_("Open"), _("Open..."), mem_fun(*this, &ARDOUR_UI::open_session));
ActionManager::register_action (main_actions, X_("Recent"), _("Recent..."), mem_fun(*this, &ARDOUR_UI::open_recent_session));
ArdourStartup::ArdourStartup ()
- : applying (false)
+ : _applying (false)
, ic_new_session_button (_("Open a new session"))
, ic_existing_session_button (_("Open an existing session"))
, monitor_via_hardware_button (_("Use an external mixer or the hardware mixer of your audio interface.\n\
void
ArdourStartup::on_cancel ()
{
- exit (1);
+ gtk_main_quit ();
}
void
ArdourStartup::on_close ()
{
- if (!applying) {
- exit (1);
- }
+ gtk_main_quit ();
}
void
ArdourStartup::on_apply ()
{
- applying = true;
+ _applying = true;
// XXX do stuff and then ....
int output_limit_count() const;
bool connect_outs_to_master() const;
- bool connect_outs_to_physical() const ;
+ bool connect_outs_to_physical() const;
+
+ bool applying () const {
+ return _applying;
+ }
private:
- bool applying;
+ bool _applying;
bool config_modified;
bool new_user;
bool new_only;