diff --git a/tsgqc.m b/tsgqc.m index 8f8ebd1f8d191816f9e960b6a34999a33ae4ce77..f1374143ef3a12804353eb87063c8b7db74cba77 100644 --- a/tsgqc.m +++ b/tsgqc.m @@ -303,22 +303,31 @@ hPrintFigPushtool = uipushtool(... % Open Save toolbar button 'Tag','PUSHTOOL_PRINTFIG',... 'visible', 'off', 'Enable', 'off',... 'ClickedCallback', @PrintFigMenuCallback); -hZoomToggletool = uitoggletool(... % Open Zoom toolbar button +hZoomInToggletool = uitoggletool(... % Open Zoom In (increase) toolbar button 'Parent',hToolbar,... 'Separator', 'on', ... - 'TooltipString','Zoom',... - 'CData', iconRead(fullfile(matlabroot, ... - '/toolbox/matlab/icons/zoom.mat')),... + 'TooltipString','Zoom In (increase)',... + 'CData', iconRead(fullfile(matlabroot,... + '/toolbox/matlab/icons/zoomplus.mat')),... 'HandleVisibility','on', ... - 'Tag','PUSHTOOL_ZOOM',... - 'Enable', 'off',... - 'OffCallback', @Zoom_OffMenuCallback,... - 'ONCallback', @Zoom_OnMenuCallback); + 'Tag','PUSHTOOL_ZOOM_IN',... + 'OnCallback', @ZoomIn_OnMenuCallback,... + 'OffCallback', @ZoomIn_OffMenuCallback); +hZoomOutToggletool = uitoggletool(... % Open Zoom Out (decrease) toolbar button + 'Parent',hToolbar,... + 'Separator', 'on', ... + 'TooltipString','Zoom Out (decrease)',... + 'CData', iconRead(fullfile(matlabroot,... + '/toolbox/matlab/icons/zoomminus.mat')),... + 'HandleVisibility','on', ... + 'Tag','PUSHTOOL_ZOOM_OUT',... + 'OnCallback', @ZoomOut_OnMenuCallback,... + 'OffCallback', @ZoomOut_OffMenuCallback); hPanToggletool = uitoggletool(... % Open Pan toolbar button 'Parent',hToolbar,... 'TooltipString','Pan',... 'CData',iconRead(fullfile(matlabroot, ... - '/toolbox/matlab/icons/pan.mat')),... + '/toolbox/matlab/icons/pan.mat')),... 'HandleVisibility','on', ... 'Tag','PUSHTOOL_PAN',... 'Enable', 'off',... @@ -1158,7 +1167,7 @@ end set( hQCToggletool, 'state', 'off' ); set( hMapToggletool, 'state', 'off' ); set( hTimelimitToggletool, 'state', 'off' ); - set( hZoomToggletool, 'state', 'off' ); +% set( hZoomToggletool, 'state', 'off' ); % Open standard dialog box for retrieving files % --------------------------------------------- @@ -1372,7 +1381,8 @@ end set( hPanToggletool, 'state', 'off', 'enable', 'on' ); set( hQCToggletool, 'enable', 'off'); set( hTimelimitToggletool, 'state', 'off', 'enable', 'on' ); - set( hZoomToggletool, 'state', 'off', 'enable', 'on' ); + set( hZoomInToggletool, 'state', 'off', 'enable', 'on' ); + set( hZoomOutToggletool, 'state', 'off', 'enable', 'on' ); set( hHeaderPushtool, 'enable', 'off' ); @@ -1416,7 +1426,8 @@ end set( hPanToggletool, 'state', 'off', 'enable', 'on' ); set( hQCToggletool, 'state', 'off', 'enable', 'on' ); set( hTimelimitToggletool, 'state', 'off', 'enable', 'off' ); - set( hZoomToggletool, 'state', 'off', 'enable', 'on' ); + set( hZoomInToggletool, 'state', 'off', 'enable', 'on' ); + set( hZoomOutToggletool, 'state', 'off', 'enable', 'on' ); set( hHeaderPushtool, 'enable', 'on' ); @@ -1534,7 +1545,9 @@ end set( hPanToggletool, 'state', 'off', 'enable', 'on' ); set( hTimelimitToggletool, 'state', 'off', 'enable', 'off' ); - set( hZoomToggletool, 'state', 'off', 'enable', 'on' ); + set( hZoomInToggletool, 'state', 'off', 'enable', 'on' ); + set( hZoomOutToggletool, 'state', 'off', 'enable', 'on' ); + % Get tsg application data % ------------------------ @@ -1578,7 +1591,8 @@ end set( hQCToggletool, 'state', 'off', 'enable', 'on' ); set( hPanToggletool, 'state', 'off', 'enable', 'on' ); set( hTimelimitToggletool, 'state', 'off', 'enable', 'on' ); - set( hZoomToggletool, 'state', 'off', 'enable', 'on' ); + set( hZoomInToggletool, 'state', 'off', 'enable', 'on' ); + set( hZoomOutToggletool, 'state', 'off', 'enable', 'on' ); % Get tsg application data % ------------------------ @@ -1682,20 +1696,38 @@ end end -%% Zoom_OnMenuCallback +%% ZoomIn_OnMenuCallback %---------------------------------------------------------------------- - % Callback function run when the zoom toggle toolbar is released + % Callback function run when the toolbar zoom in (increase) push button + % is pressed %---------------------------------------------------------------------- - function Zoom_OnMenuCallback(hObject, eventdata) - - % cursor back to normal - % --------------------- - set(hMainFig,'Pointer','arrow'); + function ZoomIn_OnMenuCallback(hObject, eventdata) + % Desactivate some toggle buttons, hZoomOutToggletool changed state + % must be call before zoom function because the callback set zoom to + % off + % ------------------------------------------------------------------- + set( hZoomOutToggletool, 'state', 'off' ); + set( hQCToggletool, 'state', 'off' ); + set( hPanToggletool, 'state', 'off' ); + set( hTimelimitToggletool, 'state', 'off' ); + + % Hide the map. Otherwise it slows down the zooming + % ------------------------------------------------- + set( hMapToggletool, 'state', 'off' ); + % returns a zoom mode object for the figure hMainFig handle - % -------------------------------------------------------- + % --------------------------------------------------------- hZoom = zoom(hMainFig); - + + % Turns off the automatic adaptation of date ticks + % ------------------------------------------------ + zoomAdaptiveDateTicks('off'); + + % turns interactive zooming to in (increase) + % ------------------------------------------ + set(hZoom, 'direction', 'in'); + % Disallows a zoom operation on the MAP axes objects % -------------------------------------------------- setAllowAxesZoom(hZoom, hPlotAxes(4), false); @@ -1704,45 +1736,83 @@ end % side effect on another figure % ------------------------------------------------------------------- set(hZoom, 'enable', 'on'); - %zoom on; + + % Set this callback to listen to when a zoom operation finishes + % must be call after enable zoom (bug ?) + % ------------------------------------------------------------- + set(hZoom, 'ActionPostCallback', @ZoomPan_PostCallback); + + end + +%% ZoomIn_OffMenuCallback + %---------------------------------------------------------------------- + % Callback function run when the toolbar zoom in (increase) push button + % is pressed + %---------------------------------------------------------------------- + function ZoomIn_OffMenuCallback(hObject, eventdata) - % Turns on the automatic adaptation of date ticks - % ----------------------------------------------- - zoomAdaptiveDateTicks('on'); - - % Desactivate some toggle buttons - % ------------------------------- + % disable zoom mode + % ----------------- + zoom off; + + end + +%% ZoomOut_OnMenuCallback + %------------------------------------------------------------------------ + % Callback function run when the toolbar zoom out (descrease) push button + % is pressed + %------------------------------------------------------------------------ + function ZoomOut_OnMenuCallback(hObject, eventdata) + + % Desactivate Zoom In Toggle toggle button + % ----------------------------------------- + set( hZoomInToggletool, 'state', 'off' ); set( hQCToggletool, 'state', 'off' ); set( hPanToggletool, 'state', 'off' ); set( hTimelimitToggletool, 'state', 'off' ); - + % Hide the map. Otherwise it slows down the zooming % ------------------------------------------------- - set( hMapToggletool, 'state', 'off' ); - - end + set( hMapToggletool, 'state', 'off' ); -%% Zoom_OffMenuCallback - %---------------------------------------------------------------------- - % Callback function run when the zoom toggle toolbar is released - %---------------------------------------------------------------------- - function Zoom_OffMenuCallback(hObject, eventdata) + % returns a zoom mode object for the figure hMainFig handle + % --------------------------------------------------------- + hZoom = zoom(hMainFig); + % turns interactive zooming out (decrease) + % ---------------------------------------- + set(hZoom, 'direction', 'out'); + + % Disallows a zoom operation on the MAP axes objects + % -------------------------------------------------- + setAllowAxesZoom(hZoom, hPlotAxes(4), false); + + % turns on interactive zooming (same effect than zoom on) but prevent + % side effect on another figure + % ------------------------------------------------------------------- + set(hZoom, 'enable', 'on'); + + % Set this callback to listen to when a zoom operation finishes + % ------------------------------------------------------------- + set(hZoom, 'ActionPostCallback', @ZoomPan_PostCallback); + + end + +%% ZoomOut_OffMenuCallback + %------------------------------------------------------------------------ + % Callback function run when the toolbar zoom out (descrease) push button + % is pressed + %------------------------------------------------------------------------ + function ZoomOut_OffMenuCallback(hObject, eventdata) + % turns interactive zooming off % ----------------------------- zoom off; - % Set the right limit and interval to the 3 axes - % ---------------------------------------------- - for iaxe = 1:3 - set(hPlotAxes(iaxe),'XTickMode','auto') - datetick(hPlotAxes(iaxe),'x','keeplimits') - end - - % Turns off the automatic adaptation of date ticks - % ------------------------------------------------ - zoomAdaptiveDateTicks('off'); - + % cursor back to normal, test if it's really necessery + % ----------------------------------------------------- + %set(hMainFig, 'Pointer', 'arrow'); + end %% Pan_OnMenuCallback @@ -1751,9 +1821,16 @@ end %---------------------------------------------------------------------- function Pan_OnMenuCallback(hObject, eventdata) - % cursor back to normal - % --------------------- - set(hMainFig, 'Pointer', 'arrow'); + % Desactivate some toggle buttons + % ------------------------------- + set( hQCToggletool, 'state', 'off' ); + set( hTimelimitToggletool, 'state', 'off' ); + set( hZoomInToggletool, 'state', 'off' ); + set( hZoomOutToggletool, 'state', 'off' ); + + % Hide the map. Otherwise it slows down the panning + % ------------------------------------------------- + set( hMapToggletool, 'state', 'off' ); % Returns a pan mode object for the figure handle % ----------------------------------------------- @@ -1767,20 +1844,11 @@ end % side effect on another figure % -------------------------------------------------------------- set(hPan, 'enable', 'on'); - - % Turns on the automatic adaptation of date ticks - % ----------------------------------------------- - panAdaptiveDateTicks('on'); - - % Desactivate some toggle buttons - % ------------------------------- - set( hQCToggletool, 'state', 'off' ); - set( hZoomToggletool, 'state', 'off' ); - set( hTimelimitToggletool, 'state', 'off' ); - - % Hide the map. Otherwise it slows down the panning - % ------------------------------------------------- - set( hMapToggletool, 'state', 'off' ); + + % Set this callback to listen to when a zoom operation finishes + % must be call after enable zoom (bug ?) + % ------------------------------------------------------------- + set(hPan, 'ActionPostCallback', @ZoomPan_PostCallback); end @@ -1793,18 +1861,25 @@ end % turns interactive pan off % ------------------------- pan off; + + % cursor back to normal, test if it's really necessery + % ----------------------------------------------------- + %set(hMainFig, 'Pointer', 'arrow'); + end + +%% ZoomPan_PostCallback + %------------------------------------------------------------------------ + % Callback function run when zoom or pan action finishes: redraw axes + %------------------------------------------------------------------------ + function ZoomPan_PostCallback(hObject, eventdata) + % Set the right limit and interval to the 3 axes % ---------------------------------------------- for iaxe = 1:3 set(hPlotAxes(iaxe), 'XTickMode', 'auto') datetick(hPlotAxes(iaxe), 'x', 'keeplimits') end - - % Turns off the automatic adaptation of date ticks - % ------------------------------------------------ - panAdaptiveDateTicks('off'); - end %% QC_OnMenuCallback ............................... Quality Control Module @@ -1820,7 +1895,8 @@ end % Desactivate toggletools. % ------------------------ - set( hZoomToggletool, 'state', 'off' ); + set( hZoomInToggletool, 'state', 'off', 'enable', 'on' ); + set( hZoomOutToggletool, 'state', 'off', 'enable', 'on' ); set( hPanToggletool, 'state', 'off' ); set( hTimelimitToggletool, 'state', 'off' ); set( hCalToggletool, 'state', 'off', 'enable', 'off' ); @@ -2262,7 +2338,8 @@ end % Desactivate Zoom and Pan toggle buttons % --------------------------------------- - set(hZoomToggletool, 'state', 'off' ); + set(hZoomInToggletool, 'state', 'off' ); + set(hZoomOutToggletool, 'state', 'off' ); set(hPanToggletool, 'state', 'off' ); % Make the earth map visible @@ -2306,7 +2383,8 @@ end % Switch somme buttons % -------------------- set( hQCToggletool, 'state', 'off' ); - set( hZoomToggletool, 'state', 'off' ); + set( hZoomInToggletool, 'state', 'off', 'enable', 'on' ); + set( hZoomOutToggletool, 'state', 'off', 'enable', 'on' ); set( hPanToggletool, 'state', 'off' ); set( hMapToggletool, 'state', 'off' ); set( hClimToggletool, 'state', 'off', 'enable', 'off'); @@ -2356,7 +2434,8 @@ end % If necessary toggle off some buttons % ------------------------------------ set( hQCToggletool, 'state', 'off' ); - set( hZoomToggletool, 'state', 'off' ); + set( hZoomInToggletool, 'state', 'off' ); + set( hZoomOutToggletool, 'state', 'off' ); set( hPanToggletool, 'state', 'off' ); set( hMapToggletool, 'state', 'off' ); set( hClimToggletool, 'enable', 'on'); @@ -2401,7 +2480,8 @@ end % Desactivate somme Toggle button % ------------------------------- - set( hZoomToggletool, 'state', 'off' ); + set( hZoomInToggletool, 'state', 'off' ); + set( hZoomOutToggletool, 'state', 'off' ); set( hPanToggletool, 'state', 'off' ); set( hQCToggletool, 'state', 'off' ); set( hTimelimitToggletool, 'state', 'off' ); @@ -2440,7 +2520,8 @@ end % Desactivate somme Toggle button % ------------------------------- - set( hZoomToggletool, 'state', 'off' ); + set( hZoomInToggletool, 'state', 'off' ); + set( hZoomOutToggletool, 'state', 'off' ); set( hPanToggletool, 'state', 'off' ); set( hQCToggletool, 'state', 'off' ); set( hTimelimitToggletool, 'state', 'off' ); @@ -2489,7 +2570,8 @@ end % Desactivate somme Toggle button % ------------------------------- - set( hZoomToggletool, 'state', 'off' ); + set( hZoomInToggletool, 'state', 'off' ); + set( hZoomOutToggletool, 'state', 'off' ); set( hPanToggletool, 'state', 'off' ); set( hQCToggletool, 'state', 'off' ); set( hTimelimitToggletool, 'state', 'off' ); @@ -2592,7 +2674,8 @@ end % Desactivate Zoom and Pan functions. % ---------------------------------- - set( hZoomToggletool, 'state', 'off' ); + set( hZoomInToggletool, 'state', 'off' ); + set( hZoomOutToggletool, 'state', 'off' ); set( hQCToggletool, 'state', 'off' ); set( hPanToggletool, 'state', 'off' );