Skip to content
Snippets Groups Projects
tsg_preferences.m 5.17 KiB
Newer Older
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 CHAR_VERSION DATE_VERSION
% Initialize loading preference file waitbar
% ------------------------------------------
wb = waitbar(0, 'Loading preference file. Please  wait...');

% display waitbar
% ---------------
waitbar( 1/10, wb, 'loading structure tsg' );

% Construct config file path
% --------------------------
config_file = [prefdir, filesep, app_name, '.mat'];

% Open config file
% ----------------
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
% read preference mat file
% ------------------------
fid = fopen( config_file, 'r' );
% test fopen return value
% -----------------------
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
switch fid
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
  % preference file is missing
  % --------------------------
  case -1
    % create new tsg structure and save it to appdata
    % -----------------------------------------------
    preference = new_config;
    
    % file exist and is open, fid > 2
    % -------------------------------
    % Pointer set to watch during loading preference file
    % ---------------------------------------------------
    set( hTsgGUI, 'Pointer', 'watch' );
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
      % --------------------------------------------------
      load( config_file, 'preference' );
      % display warning
      % ---------------
      warning('tsgqc_GUI:tsg_preferences', ...
        'Can''t load preference file ''%s''', config_file);
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
      quitProgram(DEFAULT_PATH_FILE, hTsgGUI);
    % If there no field version or wrong version, initialize
    % -------------------------------------------------------
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
    if ~(exist('preference','var') && ...
        isfield( preference, 'char_version') && ...
        strcmp(preference.char_version, CHAR_VERSION))
      % call new config private function
      % --------------------------------
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
      preference = new_config;
% call default tsg_initialisation
% -------------------------------
tsg_initialisation(hTsgGUI);
% Get the tsg struct from the application GUI
% -------------------------------------------
tsg = getappdata( hTsgGUI, 'tsg_data');
% add preference struct to tsg struct
% -----------------------------------
tsg.preference = preference;

% Save structure tsg
% ------------------
setappdata( hTsgGUI, 'tsg_data', tsg);

% display waitbar
% ---------------
waitbar( 1/2, wb, 'loading structure tsg' );

% Close waitbar
% -------------
close(wb)

% cursor back to normal
% ---------------------
set(hTsgGUI,'Pointer','arrow');


% ----------------------------------------------------------------------
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
% generate a new preference structure with default values
% ----------------------------------------------------------------------
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
  function preference = new_config
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
    % add tsg.preference to default values
    % -------------------------------------
    preference.version               = VERSION;
    preference.char_version          = CHAR_VERSION;
    preference.date_version          = DATE_VERSION;
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
    preference.autoload              = 'off';
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
    preference.levitus_version       = {'WOA01','WOA05'};
    preference.levitus_value         = 2;  % WOA05
    preference.levitus_depth_string  = {'0','10'};
    preference.levitus_depth_value   = 1;
    preference.coeff_type_string     = {'use A-D', 'use G-J'};
    preference.coeff_type_value      = 2;
    preference.map_resolution_string = {'low','medium','high'};
    preference.map_resolution        = 1;
    preference.plot_connected_string = {'none', '-', '--', ':', '-.'};
    preference.plot_connected_value  = 1;  % 0, line not connected
    % QC test
    preference.flow_min_string       = {'1'};
    preference.press_min_string      = {'1'};
    preference.ssps_min_string       = {'0'};
    preference.ssps_max_string       = {'50'};
    preference.ssjt_min_string       = {'-3'};
    preference.ssjt_max_string       = {'40'};
    preference.sstp_min_string       = {'-3'};
    preference.sstp_max_string       = {'40'};
    
    % according with tsg_netcdf.xls file
    % change version number or delete tsgqc.mat
    % -----------------------------------------
    preference.date_format_variable  = 'yyyymmddHHMMSS';
    preference.date_format_attribute = 'yyyymmddHHMMSS';
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
    % save preference struct to 'prefdir.mat' file
    % ---------------------------------------------
    save(config_file, 'preference');