Newer
Older
% get index on selected zone - Only on X axes (time)
% --------------------------------------------------
ind = find(tsg.DAYD >= p1(1,1) & tsg.DAYD <= p2(1,1));
% Write the date in the Editable uicontrol
% ----------------------------------------
set( hetDateMin, 'String', datestr(tsg.DAYD(ind(1)), 31));
set( hetDateMax, 'String', datestr(tsg.DAYD(ind(end)), 31));
% enable ButtonMotion on main fig after select QC area
% ----------------------------------------------------
set( hMainFig, 'WindowButtonMotionFcn', @MouseMotion);
end
end
%% SelectTime_OffMenuCallback
%----------------------------
function SelectTime_OffMenuCallback(hObject, eventdata)
% Desactivate time limit buttons
% ------------------------------
set( hTimelimitToggletool, 'state', 'off');
set( hMainFig, 'WindowButtonDownFcn', []);
set( hMainFig, 'Pointer', 'arrow');
end
%% Clim_OffMenuCallback
%------------------------------------------------------------------------
% Callback function run when the Levitus climatology toolbar is unselected
%------------------------------------------------------------------------
function Clim_OffMenuCallback(hObject, eventdata)
% Get lines handles from tag
% --------------------------
hLines = findobj('-regexp', 'Tag', 'TAG_LINE_CLIMATO_');
% Delete climatology lines on axes
% ---------------------------------
delete(hLines);
%------------------------------------------------------------------------
% Callback function run when the Levitus climatology toolbar is unselected
%------------------------------------------------------------------------
function Clim_OnMenuCallback(hObject, eventdata)
% Test if the TSG and bucket files have been read
% -----------------------------------------------
if strcmp( get(hOpenMenu, 'UserData'), 'on' )
% plot climatology
% ----------------
plot_Climatology(hMainFig, hPlotAxes);
end
end
%% ClimatoSelectMenuCallback
% -------------------------------------------------------------------
% Callback function run when climato submenu is selected
% -------------------------------------------------------------------
function ClimatoSelectMenuCallback(hObject, eventdata, climato, time)
% find all climato submenu and set 'checked' property to 'off'
% ------------------------------------------------------------
hdl = findobj( '-regexp', 'tag', 'TAG_UIMENU_CLIMATO');
set(hdl, 'checked', 'off');
% set current climato submenu checked
% -----------------------------------
set(hObject, 'checked', 'on');
% memorize action on climatology menu for next use
% ------------------------------------------------
s.type = climato;
s.time = time;
set(hClimatoMenu, 'userdata', s);
% check if climatology toggle button is set
% -----------------------------------------
if strcmp(get(hClimToggletool, 'state'), 'on')
% clear last plotted climatology
% ------------------------------
Clim_OffMenuCallback;
% plot and read (eventually) new climatology
% ------------------------------------------
plot_Climatology(hMainFig, hPlotAxes);
end
%% PreferencesMenuCallback
% -------------------------------------------------------------------
% Callback function run when Option/Preference is selected
% -------------------------------------------------------------------
function PreferencesMenuCallback(hObject, eventdata)
oldmapres=tsg.preference.map_resolution;
% call preferences form function
% ------------------------------
if( preferencesForm(hMainFig) )
% if form is validate, update plots only if plot exist
% ----------------------------------------------------
if ~isempty(findobj( '-regexp', 'Tag', ('TAG_PLOT\d_LINE_')))
SelectParameter(pmhPara(1),[],1);
end
% Update the map (if visible) if ship speed QC has been applied
% or map resolution has been changed
% -------------------------------------------------------------
if (strcmp( get(hMapFig,'visible'), 'on') == 1 & ...
(tsg.preference.ship_speed_test == 2 | ...
tsg.preference.map_resolution ~= oldmapres))
erase_Line( hPlotAxes, 4 );
plot_map( hMainFig, hPlotAxes);
%% HelpMenuCallback
% -------------------------------------------------------------------
% Callback function run when Help/Help is selected
% -------------------------------------------------------------------
function HelpMenuCallback(hObject, eventdata)
msgbox( 'Function Help not yet implemented', 'warn', 'modal');
end
%% AboutMenuCallback
% -------------------------------------------------------------------
% Callback function run when Help/About is selected
% -------------------------------------------------------------------
function AboutMenuCallback(hObject, eventdata)
%splash('Thermo.jpg', 3000);
aboutDialog(hMainFig, DEFAULT_PATH_FILE);
%% HeaderMenuCallback
% -------------------------------------------------------------------
% Callback function run when the headerForm tool bar item is selected
% -------------------------------------------------------------------
function HeaderMenuCallback(hObject, eventdata)
% call header form function
% -------------------------
headerForm(hMainFig);
end
%% PrintFigMenuCallback
% -------------------------------------------------------------------
% Callback function run when the Report tool bar item is selected
% -------------------------------------------------------------------
function PrintFigMenuCallback(hObject, eventdata)
% disable ButtonMotion on main fig during select
% ----------------------------------------------
set( hMainFig, 'WindowButtonMotionFcn', []);
% Get the tsg structure
% ---------------------
tsg = getappdata( hMainFig, 'tsg_data');
hPrintFig = figure( 'Name', 'Print','NumberTitle', 'off','Resize', 'on');
hPlot(1) = subplot(3,1,1);
hPlot(2) = subplot(3,1,2);
hPlot(3) = subplot(3,1,3);
title( hPlot(1), tsg.file.name, 'interpreter', 'none');
if strcmp(get(hBottleToggletool,'state'), 'on')
% Default parameter
% -----------------------------------------------------
PARA = getParaCorModule( hMainFig );
plot_Correction( hMainFig, hPlot, PARA );
elseif strcmp(get(hCalToggletool,'state'), 'on')
plot_Calibration( hMainFig, hPlot, 1, 'SSPS' );
plot_Calibration( hMainFig, hPlot, 2, 'SSJT' );
plot_Calibration( hMainFig, hPlot, 3, 'SSTP' );
% elseif strcmp(get(hMapToggletool,'state'), 'on')
% plot_map( hMainFig, hPlot)
elseif strcmp(get(hInterpToggletool,'state'), 'on')
plot_Interpolation( hMainFig, hPlot, 1 );
plot_Interpolation( hMainFig, hPlot, 2 );
plot_Interpolation( hMainFig, hPlot, 3 );
plot_Validation( hMainFig, hPlot, 1, tsg.plot.parameter{1} );
plot_Validation( hMainFig, hPlot, 2, tsg.plot.parameter{2} );
plot_Validation( hMainFig, hPlot, 3, tsg.plot.parameter{3} );
% I = getframe(hPlotAxes(1));
% imwrite(I.cdata, 'myplot.png');
linkaxes([hPlot(1),hPlot(2),hPlot(3)], 'x');
% set(hPlot(i), 'box', 'on','XTickMode','auto');
set(hPlot(i), 'box', 'on','XTickMode','auto');
datetick(hPlot(i),'x','mm/dd','keepticks' );
% enable ButtonMotion on main fig after select QC area
% ----------------------------------------------------
set( hMainFig, 'WindowButtonMotionFcn', @MouseMotion);
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
end
%% ReportMenuCallback
% -------------------------------------------------------------------
% Callback function run when the Report tool bar item is selected
% -------------------------------------------------------------------
function ReportMenuCallback(hObject, eventdata)
% call report function
% --------------------
saveReport(hMainFig);
end
%% SaveMenuCallback
% -------------------------------------------------------------------
% Callback function run when the Save menu item is selected
% -------------------------------------------------------------------
function SaveMenuCallback(hObject, eventdata)
% Retrieve named application data
% -------------------------------
tsg = getappdata( hMainFig, 'tsg_data');
% fill or append header form
% -------------------------
error = headerForm(hMainFig);
% if user press continue button, ask for netcdf file
% ------------------------------------------------
if error ~= -1
[fileName, pathName, filterindex] = uiputfile('*.nc', ...
'Save file name', strcat(tsg.file.name, '.nc'));
% if user press cancel button, all var are set to zero
% ----------------------------------------------------
if filterindex == 0
return;
end
% Pointer set to watch during reading and plotting
% ------------------------------------------------
set( hMainFig, 'Pointer', 'watch' );
% flushes the event queue and updates the closed uiputfile window
% ---------------------------------------------------------------
drawnow;
% write netcdf file
% -----------------
error = writeTSGDataNetCDF(hMainFig, strcat(pathName, fileName));
% Pointer reset to arrow
% ----------------------
set( hMainFig, 'Pointer', 'arrow' );
% must to be rewriting
% ------------------------------
if error == -1
warning('tsgqc:SaveMenuCallback', ...
'NetCDF writing error: %s %s', pathName, fileName);
return;
end
% update the display
% ------------------
set( hInfoFileText, 'String', strcat(tsg.file.name, tsg.file.ext));
% enable Quality Control mode
% ---------------------------
hdl_pushtool = findobj('Tag', 'QC');
set(hdl_pushtool, 'Enable', 'on');
end
end
% -------------------------------------------------------------------
% Callback function run when the Export menu item is selected
% -------------------------------------------------------------------
function ExportTsgCallback(hObject, eventdata)
% Retrieve named application data
% -------------------------------
tsg = getappdata( hMainFig, 'tsg_data');
% Desactivate MouseMotion 'off'
% ----------------------------
set( hMainFig, 'WindowButtonMotionFcn', []);
% Open standard dialog box for saving files
% -----------------------------------------
[fileName, pathName, filterindex] = uiputfile('*.tsgqc', ...
'Save file name', strcat(tsg.file.name, '.tsgqc'));
% if user press cancel button, all var are set to zero
% ----------------------------------------------------
if filterindex == 0
return;
end
% Pointer set to watch during reading and plotting
% ------------------------------------------------
set( hMainFig, 'Pointer', 'watch' );
% Write a .TSG (ascii) file
% --------------------------
Yves Gouriou
committed
error = writeAsciiTsg(hMainFig, strcat(pathName, fileName));
% Pointer reset to arrow
% ----------------------
set( hMainFig, 'Pointer', 'arrow' );
% enable Quality Control mode
% ---------------------------
hdl_pushtool = findobj('Tag', 'QC');
set(hdl_pushtool, 'Enable', 'on');
% Set MouseMotion 'on'
% --------------------
set( hMainFig, 'WindowButtonMotionFcn', @MouseMotion);
% Check for .TSG writing error - must to be rewriting
% Because of the 'return' - These line must be at the end
% --------------------------------------------------------
warning('tsgqc:SaveMenuCallback', ...
'TSG no ouput: %s %s', pathName, fileName);
return;
end
end
%% ExportSampleCallback
% -------------------------------------------------------------------
% Callback function run when the Export menu item is selected
% -------------------------------------------------------------------
function ExportSampleCallback(hObject, eventdata)
% Retrieve named application data
% -------------------------------
tsg = getappdata( hMainFig, 'tsg_data');
% Desactivate MouseMotion 'off'
% ----------------------------
set( hMainFig, 'WindowButtonMotionFcn', []);
% Open standard dialog box for saving files
% -----------------------------------------
gael.alory_legos.obs-mip.fr
committed
[fileName, pathName, filterindex] = uiputfile('*.spl', ...
'Save file name', strcat(tsg.file.name, '.spl'));
% if user press cancel button, all var are set to zero
% ----------------------------------------------------
if filterindex == 0
% Pointer set to watch during reading and plotting
% ------------------------------------------------
set( hMainFig, 'Pointer', 'watch' );
gael.alory_legos.obs-mip.fr
committed
% Write a .SPL (ascii) file
% --------------------------
error = writeAsciiSample(hMainFig, strcat(pathName, fileName));
% Pointer reset to arrow
% ----------------------
set( hMainFig, 'Pointer', 'arrow' );
% enable Quality Control mode
% ---------------------------
hdl_pushtool = findobj('Tag', 'QC');
set(hdl_pushtool, 'Enable', 'on');
% Set MouseMotion 'on'
% --------------------
set( hMainFig, 'WindowButtonMotionFcn', @MouseMotion);
% Check for .TSG writing error - must to be rewriting
% Because of the 'return' - These line must be at the end
% --------------------------------------------------------
if error == -1
warning('tsgqc:SaveMenuCallback', ...
'TSG no ouput: %s %s', pathName, fileName);
return;
end
end
%% UndoMenuCallback
% -----------------------------------------------------------------------
% Callback function run when the Edit/Undo menu item is selected (Ctrl+Z)
% -----------------------------------------------------------------------
function UndoMenuCallback(hObject, eventdata)
% Undo module not yet implemented
% -------------------------------
% msgbox('Undo module not yet implemented', 'modal');
%tsg.queue = undo(tsg.queue);
%tsg.SSPS_QC = get(tsg.queue);
% Make the Salinity, temperature and velocity plot
% ------------------------------------------------
plot_SalTempVel( hMainFig, hPlotAxes );
end
%% RedoMenuCallback
% -----------------------------------------------------------------------
% Callback function run when the Edit/Redo menu item is selected (Ctrl+R)
% -----------------------------------------------------------------------
function RedoMenuCallback(hObject, eventdata)
% Redo module not yet implemented
% -------------------------------
msgbox('Redo module not yet implemented', 'modal');
%% KeyPressFcnCallback
% -----------------------------------------------------------------------
% Callback function run when key is pressed
% -----------------------------------------------------------------------
function keyPressFcnCallback(hObject, evnt)

jacques.grelet_ird.fr
committed
% MATLAB generates repeated KeyPressFcn events, desactivate callback
% ------------------------------------------------------------------
set(hObject, 'KeyPressFcn', []);

jacques.grelet_ird.fr
committed
% check if key is pressed
% -----------------------
if ~isempty(evnt.Key)

jacques.grelet_ird.fr
committed
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
% test key, shift or control
% --------------------------
switch evnt.Key
case 'shift'
% get current pointer shape
% -------------------------
pointerShape = get(hObject, 'pointer');
% save current cursor shape
% -------------------------
setappdata( hMainFig, 'tsg_pointer', pointerShape);
% set cursor to fullcross or reset to normal arrow
% ------------------------------------------------
set(hObject, 'pointer', 'fullcrosshair');
case 'control'
% Get current position of cusor and return its coordinates in
% axes
% -----------------------------------------------------------
a = get(hPlotAxes(1), 'CurrentPoint');
x = a(2,1);
% Test if cursor is inside data interval
% -------------------------------------
if x > tsg.DAYD(1) && x < tsg.DAYD(end)
% loop over 3 subplot and draw vertical lines
% -------------------------------------------
for iplot = 1:3
axes( hPlotAxes(iplot));
limy = get(hPlotAxes(iplot), 'YLim');
line([x x], limy, 'color', 'k', 'EraseMode', 'xor',...
'tag', 'VERTICAL_TAG_LINE');
end
end
end % end of switch
end
end

jacques.grelet_ird.fr
committed
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
%% KeyReleaseFcnCallback
% -----------------------------------------------------------------------
% Callback function run when key is release
% -----------------------------------------------------------------------
function keyReleaseFcnCallback(hObject, evnt)
% check if key is pressed
% -----------------------
if ~isempty(evnt.Key)
% test key, shift or control
% --------------------------
switch evnt.Key
case 'shift'
% get stored cursor shape
% -----------------------
pointerShape = getappdata( hMainFig, 'tsg_pointer');
% if pointer equal to fullcrosshair, oups, error, reset to arrow
% ---------------------------------------------------------------
if strcmp(pointerShape, 'fullcrosshair')
pointerShape = 'arrow';
set(hObject, 'pointer', pointerShape);
end
% set pointer
% -----------
set(hObject, 'pointer', pointerShape);
case 'control'
% find vertical lines and delete them
% -----------------------------------
hdl_lines = findobj( 'Tag', 'VERTICAL_TAG_LINE' );
delete(hdl_lines);
end % end of switch
end % end of if
% Re-activate callback
% --------------------
set(hObject, 'KeyPressFcn', @keyPressFcnCallback);
end
%% QuitMapCallback
% -----------------------------------------------------------------
% Callback function run when the Quit Map Figure item is selected
% -----------------------------------------------------------------
function QuitMapCallback(hObject, eventdata)
% Make the earth map invisible
% ----------------------------
set(hMapToggletool, 'state', 'off' );
% -----------------------------------------------------------------
% Callback function run when the Quit menu item is selected
% -----------------------------------------------------------------
function QuitMenuCallback(hObject, eventdata)
% Get the data from the application GUI
% -------------------------------------
tsg = getappdata(hMainFig, 'tsg_data');
% in case of bad initialisation, the user could close the windows
% ---------------------------------------------------------------
try
% save config mat file in prefdir
% -------------------------------
config_file = [prefdir, filesep, tsgqcname, '.mat'];
% save preference mat file
% ------------------------
if exist('tsg', 'var') && isfield( tsg, 'preference')
preference = tsg.preference;
save( config_file, 'preference');
end
% If the data have been modified and not save, the program
% ask to save the data
% --------------------------------------------------------
if strcmp( get( hSaveMenu, 'UserData' ), 'on')
selection = ...
questdlg('The file has been modified. Do you want to save it ?',...
'Save before Quit?',...
'Yes', 'No', 'Yes');
if strcmp(selection, 'Yes')
% call File/Save Menu Callback before before quit
% -----------------------------------------------
SaveMenuCallback;
% quit program
% ------------
quitProgram(DEFAULT_PATH_FILE, hMainFig, hMapFig);
selection = ...
questdlg(['Quit ' get(hMainFig, 'Name') '?'],...
['Quit ' get(hMainFig, 'Name') '?'],...
'Yes', 'No', 'Yes');
if strcmp(selection, 'No')
return;
else
quitProgram(DEFAULT_PATH_FILE, hMainFig, hMapFig);
end
% catch error during close windows
% --------------------------------
catch
% display message to console and quit program
% -------------------------------------------
fprintf('abnormal program termination during close user request\n');
quitProgram(DEFAULT_PATH_FILE, hMainFig);