diff libgui/src/resource-manager.cc @ 16593:e13051d7a472

allow GUI window layout to be restored * main-window.h, main-window.cc (main_window::set_window_layout): New function. (main_window::read_settings): Call set_window_layout for current settings. (main_window::reset_windows): Call set_window_layout for default settings. (main_window::construct_window_menu): Enable reset_windows_action. * resource-manager.h, resource-manager.cc (default_qt_settings_file): Return QString instead of std::string. Change all callers. (resource_manager::default_settings): New member variable. (resource_manager::resource_manager): Initialize default_settings. (resource_manager::~resource_manager): Delete default_settings. (resource_manager::get_default_settings, resource_manager::do_get_default_settings): New functions. (resource_manager::do_is_first_run, resource_manager::do_get_settings, resource_manager::do_get_home_path): Now const.
author John W. Eaton <jwe@octave.org>
date Mon, 29 Apr 2013 17:40:41 -0400
parents 4bb1b82076e5
children a1f613e5066d
line wrap: on
line diff
--- a/libgui/src/resource-manager.cc	Mon Apr 29 16:47:23 2013 -0400
+++ b/libgui/src/resource-manager.cc	Mon Apr 29 17:40:41 2013 -0400
@@ -42,15 +42,30 @@
 
 resource_manager *resource_manager::instance = 0;
 
+static QString
+default_qt_settings_file (void)
+{
+  std::string dsf = octave_env::getenv ("OCTAVE_DEFAULT_QT_SETTINGS");
+
+  if (dsf.empty ())
+    dsf = Voct_etc_dir + file_ops::dir_sep_str () + "default-qt-settings";
+
+  return QString::fromStdString (dsf);
+}
+
 resource_manager::resource_manager (void)
   : settings (0), home_path (), first_run (false)
 {
   do_reload_settings ();
+
+  default_settings = new QSettings (default_qt_settings_file (),
+                                    QSettings::IniFormat);
 }
 
 resource_manager::~resource_manager (void)
 {
   delete settings;
+  delete default_settings;
 }
 
 
@@ -104,26 +119,21 @@
 }
 
 QSettings *
-resource_manager::do_get_settings (void)
+resource_manager::do_get_settings (void) const
 {
   return settings;
 }
 
-QString
-resource_manager::do_get_home_path (void)
+QSettings *
+resource_manager::do_get_default_settings (void) const
 {
-  return home_path;
+  return default_settings;
 }
 
-static std::string
-default_qt_settings_file (void)
+QString
+resource_manager::do_get_home_path (void) const
 {
-  std::string dsf = octave_env::getenv ("OCTAVE_DEFAULT_QT_SETTINGS");
-
-  if (dsf.empty ())
-    dsf = Voct_etc_dir + file_ops::dir_sep_str () + "default-qt-settings";
-
-  return dsf;
+  return home_path;
 }
 
 void
@@ -137,8 +147,7 @@
   if (!QFile::exists (settings_file))
     {
       QDir("/").mkpath (settings_path);
-      QFile::copy (QString::fromStdString (default_qt_settings_file ()),
-                   settings_file);
+      QFile::copy (default_qt_settings_file (), settings_file);
       first_run = true;
     }
   else
@@ -155,7 +164,7 @@
 }
 
 bool
-resource_manager::do_is_first_run (void)
+resource_manager::do_is_first_run (void) const
 {
   return first_run;
 }