From 5549dcf5e3a49b5b5915cf26bc66ae27c539d7d3 Mon Sep 17 00:00:00 2001
From: Jacques Grelet <jacques.grelet@ird.fr>
Date: Mon, 10 Mar 2008 15:35:21 +0000
Subject: [PATCH] move tsg_initialisation in new config and and waitbar when
 preference file is loading

---
 tsg_util/tsg_preferences.m | 82 +++++++++++++++++++++++++-------------
 1 file changed, 54 insertions(+), 28 deletions(-)

diff --git a/tsg_util/tsg_preferences.m b/tsg_util/tsg_preferences.m
index f7931a8..513a795 100644
--- a/tsg_util/tsg_preferences.m
+++ b/tsg_util/tsg_preferences.m
@@ -29,45 +29,73 @@ config_file = [prefdir, filesep, app_name, '.mat'];
 % Open config file
 % ----------------
 config = fopen( config_file, 'r' );
-%config = -1;
 
 % test fopen return value
 % -----------------------
 if config == -1
 
-  % config file dosn't exist, call default tsg_initialisation
-  % ---------------------------------------------------------
-  tsg = tsg_initialisation;
-
-  % ccall new config private function
+  % call new config private function
   % ---------------------------------
   new_config;
 
 else
   
-  try    
+  % Pointer set to watch during loading preference file 
+  % ---------------------------------------------------
+  set( hTsgGUI, 'Pointer', 'watch' );
     
+  % Initialize loading preference file waitbar
+  % ------------------------------------------
+  wb = waitbar(0, 'Loading préference file. Please  wait...');
+  
+  % display waitbar
+  % ---------------
+  waitbar( 1/10, wb, 'loading structure root' );
+
+  try
+
     % if file exist, load in workspace
-    % -----------------------------
+    % --------------------------------
     load( config_file, 'root', 'tsg' );
-  
+
   catch
+
+    % display warning
+    % ---------------
     warning('tsgqc_GUI:tsg_preferences', ...
-      'Can''t load preference file ''%s''', config_file);  
+      'Can''t load preference file ''%s''', config_file);
+
+    % quit program
+    % ------------
     quitProgram(hTsgGUI, DEFAULT_PATH_FILE);
-  end  
-    
-  try  
+
+  end
+
+  % display waitbar
+  % ---------------
+  waitbar( 1/2, wb, 'loading structure tsg' );
+
+  % Close waitbar
+  % -------------
+  close(wb)
+  
+  % cursor back to normal
+  % ---------------------
+  set(hTsgGUI,'Pointer','arrow');
+
+  try
+
     % set current preference autoload in submenu option/preference
     % ------------------------------------------------------------
     set(findobj('tag', 'TAG_UIMENU_OPTION_PREFERENCES', ...
-                'checked', root.preference.autoload));
-    
+      'checked', root.preference.autoload));
+
   catch
     warning('tsgqc_GUI:tsg_preferences', ...
       ['Preference file ''%s''\nis malformed\n' ...
-       'delete it.'], config_file);
-     quitProgram(hTsgGUI, DEFAULT_PATH_FILE);
+      'delete it.'], config_file);
+    quitProgram(hTsgGUI, DEFAULT_PATH_FILE);
+
   end
 
   % If there no field version or wrong version, initialize
@@ -88,27 +116,25 @@ setappdata( hTsgGUI, 'tsg_data', tsg);
 
 % save root in userdata property
 % ------------------------------
-set(0,'userdata', root);
+set(0, 'userdata', root);
 
-% cas d'erreur si l'utilisation change de disque (cle USB -> disque dur
-% par ex, self.path ne sera pas a jour et la lecture fichier genere une
-% erreur
-% if ~exist( root.path, 'dir' )
-%   root.path = [pwd filesep];
-% end
 
 % ----------------------------------------------------------------------
-% private function new_config
+% nested function new_config
 % ----------------------------------------------------------------------
   function new_config
-
+ 
+    % call default tsg_initialisation
+    % -------------------------------
+    tsg = tsg_initialisation;
+  
     % init root structure to default values
     % -------------------------------------
     root.preference.autoload = 'off';
     root.version             = VERSION;
 
-    % save root and tsg to prefdir mat file
-    % -------------------------------------
+    % save root and tsg to 'prefdir.mat' file
+    % ---------------------------------------
     save(config_file, 'root', 'tsg');
 
     % save root in root object for next use
-- 
GitLab