gusucode.com > datamanager 工具箱matlab源码程序 > datamanager/@datamanager/clearUndoRedo.m
function clearUndoRedo(actionStr,figArray) % Copyright 2008-2014 The MathWorks, Inc. % Clears the figure undo/redo stacks excluding or including the specified % figures. Clear operations are only performed for actions which occurred % after the most recent data action so as not to flush more recent graphic % actions. if nargin==0 || strcmp(actionStr,'exclude') h = datamanager.linkplotmanager; for k=1:length(h.Figures) if nargin<=1 || isempty(figArray) || ... ~any(double(h.Figures(k).Figure)==double(figArray)) if isprop(h.Figures(k).Figure,'uitools_FigureToolManager') figtool_manager = h.Figures(k).Figure.uitools_FigureToolManager; else figtool_manager = []; end localEmptyUndoStack(figtool_manager); end end elseif strcmp(actionStr,'include') for k=1:length(figArray) figtool_manager = getappdata(double(figArray(k)),... 'uitools_FigureToolManager'); localEmptyUndoStack(figtool_manager); end end function localEmptyUndoStack(figtool_manager) if ~isempty(figtool_manager) && ishandle(figtool_manager) && ... ~isempty(figtool_manager.CommandManager) undoStack = figtool_manager.CommandManager.UndoStack; redoStack = figtool_manager.CommandManager.RedoStack; dataUndoPos = -1; if ~isempty(undoStack) && all(ishandle(undoStack)) dataUndos = find(undoStack,'-property','DataTransaction'); if ~isempty(dataUndos) [~,I] = ismember(dataUndos,undoStack); dataUndoPos = max(I); end end dataRedoPos = -1; if ~isempty(redoStack) && all(ishandle(redoStack)) dataRedos = find(redoStack,'-property','DataTransaction'); if ~isempty(dataRedos) [~,I] = ismember(dataRedos,redoStack); dataRedoPos = max(I); end end figtool_manager.CommandManager.empty(dataUndoPos,dataRedoPos); end