Code covered by the BSD License  

Highlights from
LEDbar (a fast and simple embedded progress bar without axes)

image thumbnail
from LEDbar (a fast and simple embedded progress bar without axes) by Tingyue Gu
Each of the 10 little colored text fields is turned on sequentially after each 10% of progress.

LEDbarWithAbort(varargin)
function varargout = LEDbarWithAbort(varargin)
% LEDBARWITHABORT M-file for LEDbarWithAbort.fig
%      LEDBARWITHABORT, by itself, creates a new LEDBARWITHABORT or raises the existing
%      singleton*.
%
%      H = LEDBARWITHABORT returns the handle to a new LEDBARWITHABORT or the handle to
%      the existing singleton*.
%
%      LEDBARWITHABORT('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in LEDBARWITHABORT.M with the given input arguments.
%
%      LEDBARWITHABORT('Property','Value',...) creates a new LEDBARWITHABORT or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before LEDbarWithAbort_OpeningFunction gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to LEDbarWithAbort_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help LEDbarWithAbort

% Last Modified by GUIDE v2.5 20-Apr-2009 13:05:59

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @LEDbarWithAbort_OpeningFcn, ...
                   'gui_OutputFcn',  @LEDbarWithAbort_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin & isstr(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before LEDbarWithAbort is made visible.
function LEDbarWithAbort_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to LEDbarWithAbort (see VARARGIN)

% Choose default command line output for LEDbarWithAbort
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes LEDbarWithAbort wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = LEDbarWithAbort_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes during object creation, after setting all properties.
function editLEDbkground_CreateFcn(hObject, eventdata, handles)
% hObject    handle to editLEDbkground (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end



function editLEDbkground_Callback(hObject, eventdata, handles)
% hObject    handle to editLEDbkground (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of editLEDbkground as text
%        str2double(get(hObject,'String')) returns contents of editLEDbkground as a double


% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

%prepare LED progress bar 
global abortnow  %don't use MATLAB build-in word "abort" to abvoid problem in standalone mode
abortnow=0;  %reset the abortnow value in case of leftover from an aborted run 
LED=10;  %You can use more LED lights. Create them in 'guide' for main GUI
for n=1:LED; LEDhandles(n)=findobj('Tag',['textLED' num2str(n)]); end
stepsize=1/LED;  %fraction indicated by each LED light
progressmark=stepsize; %initialization 
set(handles.editLEDbkground,'Visible','on'); 
set(handles.textLEDpercentDone,'Visible','on');
set(handles.pushbutton2,'Visible','on');  %show Abort button
pause(0.000001)  %need this so their showing up will not have a delay
%LED progress bar preparation finished


imax=10000;
for i=1:imax   %loop for each day. k=1 for t=0, k=tmax+1 for t=tmax!'
    
    if abortnow==1; break; end  %global from Abort button. This quits the loop only! 
    
    %do your stuff here...
    
    %set LED progress bar below
    percentDone_string=[num2str(round(i/imax*100)),'% Done'];
    set(handles.textLEDpercentDone,'String',percentDone_string,'Visible','on'); %LED %done
    if i/imax >= progressmark*0.99   %Use a smaller number (e.g., 0.8) to show LED earlier
        set(LEDhandles(round(progressmark/stepsize)),'Visible','on'); 
        pause(0.000001)  %need this so that LED lighting will not fall behind %done!
        progressmark=progressmark+stepsize;
    end
    %LED progress bar block ends
    
end  %this ends i=1:imax loop

%Turn off LED progress bar. If break is replaced by return, this section
%will not be executed by MATLAB. So we use break above for abortnow==1
for n=1:LED; set(LEDhandles(n),'Visible','off'); end %turn of LED bar    
set(handles.editLEDbkground,'Visible','off'); 
set(handles.textLEDpercentDone,'Visible','off');
set(handles.pushbutton2,'Visible','off');  %hide Abort button
%finished turning off LED progress bar

if abortnow==1; abortnow=0; return; end  %global from Abort button. This quits the pushbutton1 and reset abortnow! 


% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global abortnow
abortnow=1;

Contact us at files@mathworks.com