-
Yves Gouriou authored
passage de PARA : cellule de 2 elements au lieu d'un string. Mise à jour instantanee des statistiques des codes de validation
Yves Gouriou authoredpassage de PARA : cellule de 2 elements au lieu d'un string. Mise à jour instantanee des statistiques des codes de validation
preferencesForm.m 10.83 KiB
function error = preferencesForm(hTsgGUI)
%
% Input
% -----
% hTsgGUI ............ Handel to the main user interface
%
% Output
% ------
% error .............. 1: OK ; -1 : an error occured
% $Id$
error = -1;
% Get the data from the application GUI
% -------------------------------------
tsg = getappdata(hTsgGUI, 'tsg_data');
% set default uicontrol size
% --------------------------
height = 0.03;
length = .15;
% Define uicontrol start position
% -------------------------------
left = .01;
bottom = .95;
inc_x = 3 * length;
inc_y = 0.01;
% preferences Uicontrols in a new figure
% ---------------------------------
hPreferencesFig = figure(...
'BackingStore','off',...
'Name', 'TSGQC PREFERENCES', ...
'NumberTitle', 'off', ...
'Resize', 'on', ...
'Menubar','none', ...
'Toolbar', 'none', ...
'Tag', 'TSG_PREFERENCES', ...
'Visible','on',...
'WindowStyle', 'modal', ...
'Units', 'normalized',...
'Position',get(hTsgGUI,'Position'), ...
'Color', get(0, 'DefaultUIControlBackgroundColor'));
% display climatology text
% -------------------------
uicontrol(...
'Parent', hPreferencesFig, ...
'Units', 'normalized', ...
'Style', 'Text', ...
'Fontsize', tsg.fontSize-1, ...
'HorizontalAlignment', 'left', ...
'Position',[left, bottom, length, height], ...
'TooltipString', 'select climatology origin', ...
'String', 'Climatology');
% display climatology uicontrol
% -----------------------------
uicontrol(...
'Parent', hPreferencesFig, ...
'Units', 'normalized', ...
'BackgroundColor', 'w', ...
'Style', 'popupmenu', ...
'Fontsize', tsg.fontSize-2, ...
'HorizontalAlignment', 'right', ...
'Position', [left + length, bottom, length, height], ...
'String', tsg.preference.levitus_version, ...
'Value', tsg.preference.levitus_value, ...
'Tag', 'PREFERENCES_LEVITUS_VALUE');
bottom = bottom - inc_y - height;
if bottom < .1
bottom = 0.95;
left = left + inc_x;
end
% display climatology depth text
% -------------------------
uicontrol(...
'Parent', hPreferencesFig, ...
'Units', 'normalized', ...
'Style', 'Text', ...
'Fontsize', tsg.fontSize-1, ...
'HorizontalAlignment', 'left', ...
'Position',[left, bottom, length, height], ...
'TooltipString', 'select climatology depth', ...
'String', 'Climatology depth');
% display climatology depth uicontrol
% ------------------------------------
uicontrol(...
'Parent', hPreferencesFig, ...
'Units', 'normalized', ...
'BackgroundColor', 'w', ...
'Style', 'popupmenu', ...
'Fontsize', tsg.fontSize-2, ...
'HorizontalAlignment', 'right', ...
'Position', [left + length, bottom, length, height], ...
'String', tsg.preference.levitus_depth_string, ...
'Value', tsg.preference.levitus_depth_value, ...
'Tag', 'PREFERENCES_LEVITUS_DEPTH');
bottom = bottom - inc_y - height;
if bottom < .1
bottom = 0.95;
left = left + inc_x;
end
% display ship speed test text
% ----------------------------
uicontrol(...
'Parent', hPreferencesFig, ...
'Units', 'normalized', ...
'Style', 'Text', ...
'Fontsize', tsg.fontSize-1, ...
'HorizontalAlignment', 'left', ...
'Position',[left, bottom, length, height], ...
'TooltipString', 'enable/disable ship speed test', ...
'String', 'Ship Speed Test');
% display ship speed test uicontrol
% ---------------------------------
uicontrol(...
'Parent', hPreferencesFig, ...
'Units', 'normalized', ...
'BackgroundColor', 'w', ...
'Style', 'popupmenu', ...
'Fontsize', tsg.fontSize-2, ...
'HorizontalAlignment', 'right', ...
'Position', [left + length, bottom, length, height], ...
'String', tsg.preference.ship_speed_test_string, ...
'Value', tsg.preference.ship_speed_test, ...
'Tag', 'PREFERENCES_SHIP_SPEED_TEST');
bottom = bottom - inc_y - height;
if bottom < .1
bottom = 0.95;
left = left + inc_x;
end
% display ship speed min text
% -----------------------------
uicontrol(...
'Parent', hPreferencesFig, ...
'Units', 'normalized', ...
'Style', 'Text', ...
'Fontsize', tsg.fontSize-1, ...
'HorizontalAlignment', 'left', ...
'Position',[left, bottom, length, height], ...
'TooltipString', 'select ship speed min (knots)', ...
'String', 'Ship Speed Min');
% display ship speed min uicontrol
% --------------------------------
uicontrol(...
'Parent', hPreferencesFig, ...
'Units', 'normalized', ...
'BackgroundColor', 'w', ...
'Style', 'popupmenu', ...
'Fontsize', tsg.fontSize-2, ...
'HorizontalAlignment', 'right', ...
'Position', [left + length, bottom, length, height], ...
'String', tsg.preference.ship_speed_min_string, ...
'Value', tsg.preference.ship_speed_min, ...
'Tag', 'PREFERENCES_SHIP_SPEED_MIN');
bottom = bottom - inc_y - height;
if bottom < .1
bottom = 0.95;
left = left + inc_x;
end
% display connected line text
% -------------------------
uicontrol(...
'Parent', hPreferencesFig, ...
'Units', 'normalized', ...
'Style', 'Text', ...
'Fontsize', tsg.fontSize-1, ...
'HorizontalAlignment', 'left', ...
'Position',[left, bottom, length, height], ...
'TooltipString', 'select plot with connected line', ...
'String', 'Plot with connectd line');
% display connected line uicontrol
% --------------------------------
uicontrol(...
'Parent', hPreferencesFig, ...
'Units', 'normalized', ...
'BackgroundColor', 'w', ...
'Style', 'popupmenu', ...
'Fontsize', tsg.fontSize-2, ...
'HorizontalAlignment', 'right', ...
'Position', [left + length, bottom, length, height], ...
'String', tsg.preference.plot_connected_string , ...
'Value', tsg.preference.plot_connected_value , ...
'Tag', 'PREFERENCES_PLOT_CONNECTED_LINE');
% display conventions field if exist
% ----------------------------------
% uicontrol(...
% 'Parent', hPreferencesFig, ...
% 'Units', 'normalized', ...
% 'Style', 'text', ...
% 'Fontsize', tsg.fontSize-2, ...
% 'HorizontalAlignment', 'left', ...
% 'Position', [left + 2*length, bottom, length, height], ...
% 'String', char(s.conventions));
bottom = bottom - inc_y - height;
if bottom < .1
bottom = 0.95;
left = left + inc_x;
end
% display coefficient type text
% -----------------------------
uicontrol(...
'Parent', hPreferencesFig, ...
'Units', 'normalized', ...
'Style', 'Text', ...
'Fontsize', tsg.fontSize-1, ...
'HorizontalAlignment', 'left', ...
'Position',[left, bottom, length, height], ...
'TooltipString', 'select coefficients type', ...
'String', 'Coefficients type');
% display coefficient type uicontrol
% ----------------------------------
uicontrol(...
'Parent', hPreferencesFig, ...
'Units', 'normalized', ...
'BackgroundColor', 'w', ...
'Style', 'popupmenu', ...
'Fontsize', tsg.fontSize-2, ...
'HorizontalAlignment', 'right', ...
'Position', [left + length, bottom, length, height], ...
'String', tsg.preference.coeff_type_string , ...
'Value', tsg.preference.coeff_type_value , ...
'Tag', 'PREFERENCES_COEFF_TYPE');
bottom = bottom - inc_y - height;
if bottom < .1
bottom = 0.95;
left = left + inc_x;
end
% CONTINUE PUSH BUTTON
% --------------------
% The Continue (valid) button
uicontrol( ...
'Parent', hPreferencesFig, ...
'Style','pushbutton',...
'Fontsize', tsg.fontSize,...
'Units', 'normalized', ...
'Position',[.01, .01, .1, .04],...
'String','Continue',...
'Interruptible','off',...
'BusyAction','cancel',...
'Tag','PREF_CONTINUE_BUTTON',...
'Callback', @continueCallback);
% CANCEL PUSH BUTTON
% ------------------
% The cancel button
uicontrol( ...
'Parent', hPreferencesFig, ...
'Style','pushbutton',...
'Fontsize', tsg.fontSize,...
'Units', 'normalized', ...
'Position',[.2, .01, .1, .04],...
'String','Cancel',...
'Interruptible','off',...
'BusyAction','cancel',...
'Tag','PREF_CANCEL_BUTTON',...
'Callback', @cancelCallback);
% Build structure container for graphic handles with tag property defined.
% ------------------------------------------------------------------------
prefs = guihandles(hPreferencesFig);
% record data struct in application data object
% ---------------------------------------------
% guidata(hHeaderFig, data);
% stop execution until push-button Continue was press
% ---------------------------------------------------
uiwait(hPreferencesFig);
%% Nested callback
% -----------------------------------------------------------------------
% Continue action, get uicontrol fields and populate tsg structure
% -----------------------------------------------------------------------
function continueCallback(obj, event)
% Save tsg structure
% ------------------
setappdata(hTsgGUI, 'tsg_data', tsg);
% get the corresponding string from uicontrol using guihandles
% and save value in tsg.preferences struct
% ------------------------------------------------------------
tsg.preference.levitus_value = ...
get(prefs.PREFERENCES_LEVITUS_VALUE, 'value');
tsg.preference.levitus_depth_value = ...
get(prefs.PREFERENCES_LEVITUS_DEPTH, 'value');
tsg.preference.ship_speed_test = ...
get(prefs.PREFERENCES_SHIP_SPEED_TEST, 'value');
tsg.preference.ship_speed_min = ...
get(prefs.PREFERENCES_SHIP_SPEED_MIN, 'value');
tsg.preference.plot_connected_value = ...
get(prefs.PREFERENCES_PLOT_CONNECTED_LINE, 'value');
tsg.preference.coeff_type_value = ...
get(prefs.PREFERENCES_COEFF_TYPE, 'value');
% Save tsg structure
% ------------------
setappdata(hTsgGUI, 'tsg_data', tsg);
% fill tsg calibration variables
% ------------------------------
updateTsgStructWithCalCoeff(hTsgGUI);
% apply ship speed QC
% -------------------
minSpeedQC(hTsgGUI);
% close windows (replace call to uiresume(hHeaderFig))
% ----------------------------------------------------
close(hPreferencesFig);
% flushes the event queue and updates the figure window
% -----------------------------------------------------
drawnow;
% refresh QC statistic panel
% --------------------------
display_QC( hTsgGUI );
% return with no error code (true)
% --------------------------------
error = 1;
return
end
% -----------------------------------------------------------------------
% Cancel button, no action
% -----------------------------------------------------------------------
function cancelCallback(obj, event)
% close windows
% -------------
close(hPreferencesFig);
% flushes the event queue and updates the figure window
% -----------------------------------------------------
drawnow;
% return error code (no change)
% -----------------------------
error = -1;
end % end of cancelCallback nested function
end