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 VERSION % init empty tsg structure % ------------------------ tsg = []; % Construct config file path % -------------------------- 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 % --------------------------------- new_config; else try % if file exist, load in workspace % ----------------------------- load( config_file, 'root', 'tsg' ); catch warning('tsgqc_GUI:tsg_preferences', ... 'Can''t load preference file ''%s''', config_file); quitProgram(hTsgGUI, DEFAULT_PATH_FILE); end 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); % 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 % ---------------------------------------------------------------------- function new_config % 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