Step-back button in GUI
8 views (last 30 days)
Show older comments
Hello. I have a GUI with an image processing functions. My question is, is it possible to do Back button in this gui? I store and update all events in handles. e.g. handles.inputImage = handles.inputImage_gray, handles.inputImage = handles.inputImage_poisson_noise, handles.inputImage = handles.inputImage_gaussian_filter ... The result is grayscale image with Poisson noise which is filtered by Gaussian Filter... And what if i want to do step back button and remove last event (in this case handles.inputImage = handles.inputImage_gaussian_filter ) and then next and then next last event. Is it possible to store handles in listbox and find last value and then assing to this value inverted state? handles.inputImage_poisson_noise = handles.inputImage. I hope u can understand what i want to do. Thank you very much.

0 Comments
Accepted Answer
Jan
on 21 May 2018
Edited: Jan
on 21 May 2018
After the colors have been converted to gray, there is no way to get the colors back. But of course you can store the initial value (image) in a list to which you append the new image after each operation. Then an undo is easy to implement.
% After loading the image
handles.imageList = {imageRGB};
handles.operation = {'original'};
...
% At applying any operation:
image = rgb2gray(image);
handles.imageList{end+1} = image;
handles.operation{end+1} = {'RGB to gray'};
Now an "undo" is:
if numel(handles.imageList) > 1
image = handles.imageList{end-1};
end
and updating the display, maybe removing the last element from the lists, except you want t "redo".
4 Comments
Jan
on 21 May 2018
If you want to undo multiple steps, handles.imageList{end-1} is not sufficient. Add a cursor for the current state:
% For adding a new step:
handles.imageCursor = handles.imageCursor + 1;
handles.imageList{handles.imageCursor} = newImage
handles.operation{handles.imageCursor} = operation
And the undo:
handles.imageCursor = handles.imageCursor - 1;
image = handles.imageList{handles.imageCursor}
Walter Roberson
on 21 May 2018
Using // for comments is not valid MATLAB code. The Octave forum is elsewhere.
More Answers (1)
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!