function tsg_preferences(hTsgGUI, app_name, DEFAULT_PATH_FILE) % tsg_preferences(S1,S2) returns structure tsg saved in S1.mat file % and with S2 internal version number. % If S1.mat dosn't exist, call tsg_initialisation to create it in % prefdir directory % % Input % ----- % hTsgGUI ............ Handle to the main user interface % app_name ............ application name % % Output % ------ % none % % $Id$ % % global variable VERSION, update revision number when tsg structure change % ------------------------------------------------------------------------- global VERSION % Construct config file path % -------------------------- config_file = [prefdir, filesep, app_name, '.mat']; % Open config file % ---------------- % desactive la gestion des preferences, car la classe tsg.qc.hash (tsg_nc) % est transformee en structure lors de l'ecriture, a verifier % ----------------------------------------------------------- fid = fopen( config_file, 'r' ); %fid = -2; % test fopen return value % ----------------------- switch fid % preference file is missing % -------------------------- case -1 % create new tsg structure and save it to appdata % ----------------------------------------------- new_config; % disactive the preference mode (for test or bug) % ----------------------------------------------- case -2 % init root structure to default values % ------------------------------------- root.preference.autoload = 'off'; root.version = VERSION; % call default tsg_initialisation % ------------------------------- tsg_initialisation(hTsgGUI); % save root in root object for next use % ------------------------------------- set(0, 'userdata', root); return; % file exist and is open, fid > 2 % ------------------------------- otherwise % 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' ); % transforme filename saved in tsg.qc.hash to tsg_nc object % --------------------------------------------------------- tsg.qc.hash = tsg_nc(tsg.qc.hash); catch % display warning % --------------- warning('tsgqc_GUI:tsg_preferences', ... 'Can''t load preference file ''%s''', config_file); % quit program % ------------ quitProgram(hTsgGUI, DEFAULT_PATH_FILE); 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)); catch warning('tsgqc_GUI:tsg_preferences', ... ['Preference file ''%s''\nis malformed\n' ... 'delete it.'], config_file); quitProgram(hTsgGUI, DEFAULT_PATH_FILE); end % If there no field version or wrong version, initialize % ------------------------------------------------------- if ~isfield( root, 'version') || ~strcmp(root.version, VERSION) % call new config private function % -------------------------------- new_config; end end % Save structure tsg % ------------------ setappdata( hTsgGUI, 'tsg_data', tsg); % save root in userdata property % ------------------------------ set(0, 'userdata', root); % ---------------------------------------------------------------------- % nested function new_config % ---------------------------------------------------------------------- function new_config % call default tsg_initialisation % ------------------------------- tsg_initialisation(hTsgGUI); % Get the data from the application GUI % ------------------------------------- tsg = getappdata( hTsgGUI, 'tsg_data'); % init root structure to default values % ------------------------------------- root.preference.autoload = 'off'; root.version = VERSION; % save root and tsg to 'prefdir.mat' file % --------------------------------------- save(config_file, 'root', 'tsg'); % save root in root object for next use % ------------------------------------- set(0, 'userdata', root); end end