diff libgui/src/octave-gui.cc @ 17930:ffdbb82a0c78

allow welcome wizard dialog to be canceled * resource-manager.h, resource-manager.cc (class resource_manager): Cache settings directory and file, but not first_run. (resource_manager::get_gui_translation_dir, resource_manager::do_update_network_settings): Only access settings if it is valid. (resource_manager::do_reload_settings): Don't set first_run. (resource_manager::do_get_home_path): Delete. * welcome-wizard.cc (welcome_wizard::welcome_wizard): Provide cancel button. * octave-gui.cc (octave_start_gui): Don't loop over welcome wizard. Run welcome wizard once if settings file is missing and exit Octave if welcome wizard returns a rejected status. Otherwise, load resources and start Octave.
author John W. Eaton <jwe@octave.org>
date Thu, 14 Nov 2013 16:52:21 -0500
parents 345a8027dc8b
children 1ed269bdea58
line wrap: on
line diff
--- a/libgui/src/octave-gui.cc	Thu Nov 14 19:17:01 2013 +0100
+++ b/libgui/src/octave-gui.cc	Thu Nov 14 16:52:21 2013 -0500
@@ -132,52 +132,58 @@
       // Set the codec for all strings
       QTextCodec::setCodecForCStrings (QTextCodec::codecForName ("UTF-8"));
 
+      if (resource_manager::is_first_run ())
+        {
+          welcome_wizard welcomeWizard;
+
+          if (welcomeWizard.exec () == QDialog::Rejected)
+            exit (1);
+        }
+
+      resource_manager::reload_settings ();
+
       // install translators for the gui and qt text
       QTranslator gui_tr, qt_tr, qsci_tr;
-      resource_manager::config_translators (&qt_tr,&qsci_tr,&gui_tr);
+
+      resource_manager::config_translators (&qt_tr, &qsci_tr, &gui_tr);
+
       application.installTranslator (&qt_tr);
       application.installTranslator (&qsci_tr);
       application.installTranslator (&gui_tr);
 
-      while (true)
-        {
-          if (resource_manager::is_first_run ())
-            {
-              welcome_wizard welcomeWizard;
-              welcomeWizard.exec ();
-              resource_manager::reload_settings ();
-            }
-          else
-            {
-              // update network-settings
-              resource_manager::update_network_settings ();
+      // update network-settings
+      resource_manager::update_network_settings ();
 
 #if ! defined (__WIN32__) || defined (__CYGWIN__)
-              // If we were started from a launcher, TERM might not be
-              // defined, but we provide a terminal with xterm
-              // capabilities.
+      // If we were started from a launcher, TERM might not be
+      // defined, but we provide a terminal with xterm
+      // capabilities.
 
-              std::string term = octave_env::getenv ("TERM");
+      std::string term = octave_env::getenv ("TERM");
 
-              if (term.empty ())
-                octave_env::putenv ("TERM", "xterm");
+      if (term.empty ())
+        octave_env::putenv ("TERM", "xterm");
 #else
-              std::string term = octave_env::getenv ("TERM");
+      std::string term = octave_env::getenv ("TERM");
 
-              if (term.empty ())
-                octave_env::putenv ("TERM", "cygwin");
+      if (term.empty ())
+        octave_env::putenv ("TERM", "cygwin");
 #endif
 
-              // create main window, read settings, and show window
-              main_window w;
-              w.read_settings ();  // get widget settings and window layout
-              w.focus_command_window ();
-              w.connect_visibility_changed (); // connect signals for changes
-                                               // in visibility not before w
-                                               // is shown
-              return application.exec ();
-            }
-        }
+      // Create and show main window.
+
+      main_window w;
+
+      w.read_settings ();
+
+      w.focus_command_window ();
+
+      // Connect signals for changes in visibility not before w
+      // is shown.
+
+      w.connect_visibility_changed ();
+
+      return application.exec ();
     }
   else
     {