From aaecba211653376844053ff272c7e5b8a7c57b19 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 10 Oct 2019 21:24:52 -0600 Subject: move pre-release dialog into StartupFSM (and enlarge font sizing) --- gtk2_ardour/ardour_ui.cc | 42 ------------------- gtk2_ardour/ardour_ui.h | 1 - gtk2_ardour/ardour_ui_startup.cc | 3 -- gtk2_ardour/startup_fsm.cc | 89 ++++++++++++++++++++++++++++++++++++---- gtk2_ardour/startup_fsm.h | 9 ++-- 5 files changed, 86 insertions(+), 58 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 39f023d479..e3abe4d028 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -370,13 +370,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) } - if (string (VERSIONSTRING).find (".pre") != string::npos) { - string fn = Glib::build_filename (user_config_directory(), ".i_swear_that_i_will_heed_the_guidelines_stated_in_the_pre_release_dialog"); - if (!Glib::file_test (fn, Glib::FILE_TEST_EXISTS)) { - pre_release_dialog (); - } - } - if (theArdourUI == 0) { theArdourUI = this; } @@ -549,41 +542,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) attach_to_engine (); } -void -ARDOUR_UI::pre_release_dialog () -{ - ArdourDialog d (_("Pre-Release Warning"), true, false); - d.add_button (Gtk::Stock::OK, Gtk::RESPONSE_OK); - - Label* label = manage (new Label); - label->set_markup (string_compose (_("Welcome to this pre-release build of %1 %2\n\n\ -There are still several issues and bugs to be worked on,\n\ -as well as general workflow improvements, before this can be considered\n\ -release software. So, a few guidelines:\n\ -\n\ -1) Please do NOT use this software with the expectation that it is stable or reliable\n\ - though it may be so, depending on your workflow.\n\ -2) Please wait for a helpful writeup of new features.\n\ -3) Please do NOT use the forums at ardour.org to report issues.\n\ -4) Please do NOT file bugs for this alpha-development versions at this point in time.\n\ - There is no bug triaging before the initial development concludes and\n\ - reporting issue for incomplete, ongoing work-in-progress is mostly useless.\n\ -5) Please DO join us on IRC for real time discussions about %1 %2. You\n\ - can get there directly from within the program via the Help->Chat menu option.\n\ -6) Please DO submit patches for issues after discussing them on IRC.\n\ -\n\ -Full information on all the above can be found on the support page at\n\ -\n\ - http://ardour.org/support\n\ -"), PROGRAM_NAME, VERSIONSTRING)); - - d.get_vbox()->set_border_width (12); - d.get_vbox()->pack_start (*label, false, false, 12); - d.get_vbox()->show_all (); - d.set_position (WIN_POS_CENTER); - d.run (); -} - GlobalPortMatrixWindow* ARDOUR_UI::create_global_port_matrix (ARDOUR::DataType type) { diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 78cad3506b..d11fb023de 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -899,7 +899,6 @@ private: void escape (); void close_current_dialog (); - void pre_release_dialog (); bool bind_lua_action_script (GdkEventButton*, int); void update_action_script_btn (int i, const std::string&); diff --git a/gtk2_ardour/ardour_ui_startup.cc b/gtk2_ardour/ardour_ui_startup.cc index 2b0eadc405..38a0225f78 100644 --- a/gtk2_ardour/ardour_ui_startup.cc +++ b/gtk2_ardour/ardour_ui_startup.cc @@ -497,9 +497,6 @@ ARDOUR_UI::sfsm_response (StartupFSM::Result r) startup_done (); } break; - case StartupFSM::DoNothing: - cerr << "DoNothing\n"; - break; } } diff --git a/gtk2_ardour/startup_fsm.cc b/gtk2_ardour/startup_fsm.cc index b82850187e..ecc69da8d0 100644 --- a/gtk2_ardour/startup_fsm.cc +++ b/gtk2_ardour/startup_fsm.cc @@ -21,6 +21,7 @@ #include #include #include +#include #include "pbd/basename.h" #include "pbd/file_archive.h" @@ -47,6 +48,10 @@ #include "session_dialog.h" #include "startup_fsm.h" +#ifdef WAF_BUILD +#include "gtk2ardour-version.h" +#endif + using namespace ARDOUR; using namespace Gtk; using namespace Gtkmm2ext; @@ -64,7 +69,15 @@ StartupFSM::StartupFSM (EngineControl& amd) , new_user_wizard (0) , audiomidi_dialog (amd) , session_dialog (0) + , pre_release_dialog (0) { + if (string (VERSIONSTRING).find (".pre") != string::npos) { + string fn = Glib::build_filename (user_config_directory(), ".i_swear_that_i_will_heed_the_guidelines_stated_in_the_pre_release_dialog"); + if (!Glib::file_test (fn, Glib::FILE_TEST_EXISTS)) { + _state = NeedPreRelease; + } + } + Application* app = Application::instance (); app->ShouldQuit.connect (sigc::mem_fun (*this, &StartupFSM::queue_finish)); @@ -91,9 +104,9 @@ StartupFSM::queue_finish () void StartupFSM::start () { - if (new_user) { - /* show new user wizard */ - _state = NeedSessionPath; + if (_state == NeedPreRelease) { + show_pre_release_dialog (); + } else if (new_user) { show_new_user_wizard (); } else { /* pretend we just showed the new user wizard and we're done @@ -116,6 +129,25 @@ StartupFSM::dialog_response_handler (int response, StartupFSM::DialogID dialog_i const bool new_session_required = (ARDOUR_COMMAND_LINE::new_session || (!ARDOUR::Profile->get_mixbus() && new_user)); switch (_state) { + case NeedPreRelease: + switch (dialog_id) { + case PreReleaseDialog: + default: + /* any response value from the pre-release dialog means + "move along now" + */ + delete_when_idle (pre_release_dialog); + pre_release_dialog = 0; + _state = NeedSessionPath; + if (NewUserWizard::required()) { + show_new_user_wizard (); + } else { + show_session_dialog (new_session_required); + } + break; + } + break; + case NeedSessionPath: switch (dialog_id) { case NewUserDialog: @@ -145,8 +177,7 @@ StartupFSM::dialog_response_handler (int response, StartupFSM::DialogID dialog_i session_template = string(); _state = NeedSessionPath; - session_dialog = new SessionDialog (new_session_required, string(), string(), string(), false); - show_session_dialog (); + show_session_dialog (new_session_required); } else { @@ -171,8 +202,7 @@ StartupFSM::dialog_response_handler (int response, StartupFSM::DialogID dialog_i */ _state = NeedSessionPath; - session_dialog = new SessionDialog (new_session_required, session_name, session_path, session_template, false); - show_session_dialog (); + show_session_dialog (new_session_required); } } break; @@ -240,9 +270,11 @@ StartupFSM::dialog_response_handler (int response, StartupFSM::DialogID dialog_i /* ERROR */ break; } + break; case NeedWizard: - /* ERROR */ + show_new_user_wizard (); + _state = NeedSessionPath; break; } } @@ -257,8 +289,9 @@ StartupFSM::show_new_user_wizard () } void -StartupFSM::show_session_dialog () +StartupFSM::show_session_dialog (bool new_session_required) { + session_dialog = new SessionDialog (new_session_required, session_name, session_path, session_template, false); current_dialog_connection = session_dialog->signal_response().connect (sigc::bind (sigc::mem_fun (*this, &StartupFSM::dialog_response_handler), NewSessionDialog)); session_dialog->set_position (WIN_POS_CENTER); session_dialog->present (); @@ -683,3 +716,41 @@ StartupFSM::ask_about_loading_existing_session (const std::string& session_path) } return false; } + +void +StartupFSM::show_pre_release_dialog () +{ + pre_release_dialog = new ArdourDialog (_("Pre-Release Warning"), true, false); + pre_release_dialog->add_button (Gtk::Stock::OK, Gtk::RESPONSE_OK); + + Label* label = manage (new Label); + label->set_markup (string_compose (_("Welcome to this pre-release build of %1 %2\n\n\ +There are still several issues and bugs to be worked on,\n\ +as well as general workflow improvements, before this can be considered\n\ +release software. So, a few guidelines:\n\ +\n\ +1) Please do NOT use this software with the expectation that it is stable or reliable\n\ + though it may be so, depending on your workflow.\n\ +2) Please wait for a helpful writeup of new features.\n\ +3) Please do NOT use the forums at ardour.org to report issues.\n\ +4) Please do NOT file bugs for this alpha-development versions at this point in time.\n\ + There is no bug triaging before the initial development concludes and\n\ + reporting issue for incomplete, ongoing work-in-progress is mostly useless.\n\ +5) Please DO join us on IRC for real time discussions about %1 %2. You\n\ + can get there directly from within the program via the Help->Chat menu option.\n\ +6) Please DO submit patches for issues after discussing them on IRC.\n\ +\n\ +Full information on all the above can be found on the support page at\n\ +\n\ + http://ardour.org/support\n\ +"), PROGRAM_NAME, VERSIONSTRING)); + + + pre_release_dialog->signal_response().connect (sigc::bind (sigc::mem_fun (this, &StartupFSM::dialog_response_handler), PreReleaseDialog)); + + pre_release_dialog->get_vbox()->set_border_width (12); + pre_release_dialog->get_vbox()->pack_start (*label, false, false, 12); + pre_release_dialog->get_vbox()->show_all (); + pre_release_dialog->set_position (WIN_POS_CENTER); + pre_release_dialog->present (); +} diff --git a/gtk2_ardour/startup_fsm.h b/gtk2_ardour/startup_fsm.h index 14ba7faa8b..bc61cbc70e 100644 --- a/gtk2_ardour/startup_fsm.h +++ b/gtk2_ardour/startup_fsm.h @@ -33,6 +33,7 @@ class StartupFSM : public sigc::trackable { public: enum DialogID { + PreReleaseDialog, NewUserDialog, NewSessionDialog, AudioMIDISetup @@ -41,7 +42,6 @@ class StartupFSM : public sigc::trackable enum Result { LoadSession, ExitProgram, - DoNothing, /* seriously? how can this be an option */ }; StartupFSM (EngineControl&); @@ -67,6 +67,7 @@ class StartupFSM : public sigc::trackable private: enum MainState { + NeedPreRelease, NeedWizard, NeedSessionPath, NeedEngineParams, @@ -80,8 +81,10 @@ class StartupFSM : public sigc::trackable void dialog_response_handler (int response, DialogID); void show_new_user_wizard (); - void show_session_dialog (); + void show_session_dialog (bool new_session_required); void show_audiomidi_dialog (); + void show_pre_release_dialog (); + void copy_demo_sessions (); void load_from_application_api (std::string const &); bool get_session_parameters_from_command_line (bool new_session_required); @@ -93,7 +96,7 @@ class StartupFSM : public sigc::trackable NewUserWizard* new_user_wizard; EngineControl& audiomidi_dialog; SessionDialog* session_dialog; - + ArdourDialog* pre_release_dialog; sigc::connection current_dialog_connection; sigc::signal1 _signal_response; -- cgit v1.2.3