summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-10-10 21:24:52 -0600
committerPaul Davis <paul@linuxaudiosystems.com>2019-10-10 21:24:52 -0600
commitaaecba211653376844053ff272c7e5b8a7c57b19 (patch)
treed3e4e5af38100256f4c7f24904daa832cf0e92ea
parentb3f2ed46b196d430e55d8f92e457efd287392b83 (diff)
move pre-release dialog into StartupFSM (and enlarge font sizing)
-rw-r--r--gtk2_ardour/ardour_ui.cc42
-rw-r--r--gtk2_ardour/ardour_ui.h1
-rw-r--r--gtk2_ardour/ardour_ui_startup.cc3
-rw-r--r--gtk2_ardour/startup_fsm.cc89
-rw-r--r--gtk2_ardour/startup_fsm.h9
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 (_("<b>Welcome to this pre-release build of %1 %2</b>\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 <b>NOT</b> 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) <b>Please do NOT use the forums at ardour.org to report issues</b>.\n\
-4) <b>Please do NOT file bugs for this alpha-development versions at this point in time</b>.\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 <b>DO</b> 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 <b>DO</b> 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 <gtkmm/dialog.h>
#include <gtkmm/liststore.h>
#include <gtkmm/messagedialog.h>
+#include <gtkmm/stock.h>
#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 (_("<span size=\"x-large\" weight=\"bold\">Welcome to this pre-release build of %1 %2</span>\n\n\
+<span size=\"large\">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 <b>NOT</b> 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) <b>Please do NOT use the forums at ardour.org to report issues</b>.\n\
+4) <b>Please do NOT file bugs for this alpha-development versions at this point in time</b>.\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 <b>DO</b> 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 <b>DO</b> 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</span>\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<void,Result> _signal_response;