part #10 - cvut.cz6.12.2017 15:49 a0b17mtb: part #10 4 callback function there are user-evoked...
TRANSCRIPT
![Page 1: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/1.jpg)
AE0B17MTB – Matlab
Part #10
Miloslav Čapek [email protected]
Viktor Adler, Pavel Valtr, Filip Kozák
Department of Electromagnetic Field
B2-634, Prague
![Page 2: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/2.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
2
Learning how to …
GUI #2
user
GUI
function1 function2
function3
?
!!! Attention: CHANGES IN GRAPHICS SINCE MATLAB R2014b !!!
![Page 3: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/3.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
3
Techniques of GUI design - sorting
there exist several approaches (methodologies) to create GUI
design using GUIDE tool
not recommended
design using App Designer (from R2016a)
new graphic objects ('old' objects are not supported)
switch-board technique
not recommended
utilization of side and nested functions as callback functions
standard
fully OOP approach (including functional part of the code)
ideal
Visualizing
>> guide
>> appdesigner
![Page 4: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/4.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
4
Callback function
there are user-evoked events defined related to each object (button
click, list selection, ...)
these events are served by so called callback functions
in other words, when user pushes button, callback function of this event is
activated (if defined).
when GUI is not to be static, it has to contain at least one callback
function
callback function is stored as an object property – it is possible to
change it, delete it, copy it etc.
Visualizing
![Page 5: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/5.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10
callback function is evaluated as a handle function
6.12.2017 15:49
5
Evaluation of callback function Visualizing
hb = uicontrol('Style', 'pushbutton', 'String', 'Plot line')
% Calling function using handle function
set(hb, 'Callback', @myFunc)
function myFunc(hObject, callbackdata)
% Callback function always adds two basic inputs
hObject % reference to the object raising the callback
callbackdata % object describing event
![Page 6: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/6.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
6
Evaluation of callback function
callback function is evaluated as an anonymous function
Visualizing
hb = uicontrol('Style', 'pushbutton', 'String', 'Plot line')
% TIP – anonymous function can be used in the case of
calling a function that doesn't support basic inputs of
callback function
set(hb, 'Callback', @(src, event)myFunc(inp))
function myFunc(inp)
inp % the input are only variables defined by user
![Page 7: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/7.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
7
Evaluation of callback function
callback function is evaluated as a handle function
Visualizing
hb = uicontrol('Style', 'pushbutton', 'String', 'Plot line')
% Cell array, where first element is a handle function
set(hb, 'Callback', {@myFunc, inp1, ..., inpN})
function myFunc(hObject, callbackdata, inp1, ..., inpN)
% Basic inputs added to first positions again
hObject % reference to the object raising the callback
callbackdata % structure of various events (can be empty)
inp1, ..., inpN % other inputs
![Page 8: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/8.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
8
Evaluation of callback function
Ex.: change background color of push button and change its label to
'Done' when clicked
Visualizing
function GUI
close all
hButt = uicontrol('Units', 'normalized', 'Style', 'pushbutton', 'String', ...
'pushbutton', 'ForegroundColor', 'white', ...
'BackgroundColor', [0.7 0.2 0], 'FontWeight', 'bold', ...
'FontSize', 11, 'Position', [0.1 0.65 0.15 0.1]);
hButt.Callback = @pressButton;
end
function pressButton(scr, event)
% scr and event are default parameters returned by callback functions
% scr - callback source (button handle object in this case)
% event - info on event raised (sometimes usefull)
disp(scr); % check list – object handle
disp(event); % show info on raised event
set(scr, 'String', 'Done', 'BackgroundColor', rand(1, 3));
end
![Page 9: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/9.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 06-Dec-17 15:49
9
Evaluation of callback function
callback function is evaluated as a string
very limited possibilities
the string can contain variables as well
only the variables from base Workspace are evaluated correctly
GUI is usually created in functions
source handle object is not available
it is possible to call just scripts or main functions with predefined inputs
Visualizing
hb = uicontrol('Style', 'pushbutton', 'String', 'Plot line')
hb.Callback = 'plot(rand(20,3))';
![Page 10: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/10.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
10
Callback functions – list Visualizing
Callback context menu, uiobjects
CellEditCallback uitable
CellSelectionCallback uitable
ButtonDownFcn axes, figure, button group, panel, uiobjects
ClickedCallback push tool, toggle tool
CreateFcn, DeleteFcn axes, button group, context menu, figure, menu, panel, uiobjects, …
OffCallback, OnCallback toggle tool
ResizeFcn (<R2014b) figure, panel, button group
SelectionChangeFcn button group
KeyPressFcn figure, uiobjects
KeyReleaseFcn figure
WindowButtonDownFcn figure
WindowButtonMotionFcn figure
WindowButtonUpFcn figure
WindowKeyPressFcn figure
WindowKeyReleaseFcn figure
WindowScrollWheelFcn figure
CloseRequestFcn figure
![Page 11: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/11.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
11
Callback functions – list Visualizing
Callback context menu, uiobjects
CellEditCallback uitable
CellSelectionCallback uitable
ButtonDownFcn axes, figure, button group, panel, uiobjects
ClickedCallback push tool, toggle tool
CreateFcn, DeleteFcn axes, button group, context menu, figure, menu, panel, uiobjects, …
OffCallback, OnCallback toggle tool
SizeChangedFcn (>=R2014b) figure, panel, button group
SelectionChangeFcn button group
KeyPressFcn figure, uiobjects
KeyReleaseFcn figure
WindowButtonDownFcn figure
WindowButtonMotionFcn figure
WindowButtonUpFcn figure
WindowKeyPressFcn figure
WindowKeyReleaseFcn figure
WindowScrollWheelFcn figure
CloseRequestFcn figure
![Page 12: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/12.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
12
Functions gcf, gca and gco
serve to easily access identifiers of objects that are currently active, in
particular:
gcf – returns identifier of current object figure
gca – returns identifier of current object axes
gco – returns identifier of the object that was last to mouse-click on
(tolerance is 5 px)
these functions can be used as input identifiers for other functions requiring reference to object figure or axes
Visualizing
figure
figRef = gcf
set(gcf,'color',[0 0 0])
![Page 13: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/13.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
13
Exercise – button callback
create figure with button and text box
when clicking on button background color of button changes to
random and displays individual RGB components in text box
600 s ↑
![Page 14: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/14.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
14
Exercise – button, solution
![Page 15: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/15.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
15
Exercise – mouse position
create a text array showing mouse position over figure.
figure's callback for mouse movement is WindowButtonMotionFcn
mouse position can be found in figure property CurrentPoint
600 s ↑
![Page 16: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/16.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
16
Function findobj
finds an object(s) with required property
returns reference to the object (or an array of references)
Visualizing
>> h = findobj('Style','text','-and','Tag','tx1')
h =
UIControl (tx1) with properties:
Style: 'text'
String: 'hello'
BackgroundColor: [0.9400 0.9400 0.9400]
Callback: ''
Value: 0
Position: [20 20 60 20]
Units: 'pixels'
Show all properties
>> figHndl = gcf; % figHndl = figure;
>> axsHndl = gca; % axsHndl = figure;
>> hTx1 = uicontrol('Style','text','String','hello','Tag','tx1');
>> hTx2 = uicontrol('Style','text','String','test1','Tag','tx2');
>> h = findobj('Style','text')
h =
2x1 UIControl array:
UIControl (tx2)
UIControl (tx1)
![Page 17: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/17.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
17
Exercise – keyboard scan
create a text array that displays last key pressed
information on the key pressed is to be found in event parameter
figure's callback for pressing key is WindowKeyPressFcn
get the reference to the text array using findobj
600 s ↑
![Page 18: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/18.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
18
Function findall, allchild
findall finds all graphic objects (including hidden)
allchild finds all children of selected object (including hidden)
handle_list can be for instance gcf, gca, ...
if handle_list is a identifier vector, Matlab returns cell array
Visualizing
clc, clear, close all
% figure with menu
hFig = figure;
% compare
hFig.Children
get(hFig, 'Children')
findobj('Parent', hFig)
allchild(hFig)
findall(hFig, 'Parent', hFig)
findall(hFig)
clc, clear, close all
% figure with menu
hFig = figure('MenuBar', 'none');
% compare
hFig.Children
get(hFig, 'Children')
findobj('Parent', hFig)
allchild(hFig)
findall(hFig, 'Parent', hFig)
findall(hFig)
![Page 19: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/19.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
19
Function copyobj
this function enables to have an influence on lifecycle of an object
copies object and its descendants
more >> doc copyobj
Visualizing
>> hf = figure
>> ha = axes
>> hL1 = line([0.1 0.8], [0.5 0.5])
>> hL2 = copyobj(hL1,ha)
>> set(hL2, 'YData', [0.4 0.6])
>> ishandle(hL1) && ishandle(hL2)
ans =
1
![Page 20: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/20.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
20
Function delete, reset
these functions enable to have an influence on lifecycle of an object
delete removes file(s) or graphic object(s) together with its
descendants
reset sets all values of an object back to implicit values
Visualizing
>> delete(hf) % hf see previous example
>> ishandle(hL1) && ishandle(hL2)
ans =
0
reset(h)
![Page 21: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/21.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
21
Advanced visualizing in Matlab
function gobjects predefines variables
function isgraphics()
function ishandle finds out whether variable is a handle object
>> doc Graphics Object Identification
Visualizing
% preallocation
h = gobjects(3,1);
h(1) = figure;
h(2) = plot(1:10);
h(3) = gca;
class(h)
arrayfun(@class, h, ...
'UniformOutput', false)
x = 1:10; y = sin(x);
p = plot(x,y);
ax = gca;
isgraphics([p, ax])
>> figHandle = figure;
>> ishandle(figHandle)
![Page 22: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/22.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
22
Storing data in GUI
how to store data in GUI?
global variables (extreme case, keyword global)
unacceptable
using property UserData (depends on size of the application)
acceptable
using functions guidata or setappdata and getappdata
suitable
fully OOP access (including functional part of the code)
ideal
Visualizing
![Page 23: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/23.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
23
Function guidata
enables to store or get data
the procedure is as follows:
get data copy: data = guidata(object_handle)
carry out data modification / calculation required
if the data is changed, store guidata(object_handle,data)
data is therefore related to a handle that exist during whole lifetime of
GUI
data is saved in object's parent figure
Visualizing
![Page 24: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/24.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
24
Function guidata Visualizing
>> hFig = figure('Toolbar', 'none');
>> allFigHndl = guihandles(hFig);
>> guidata(hFig, allFigHndl);
function myCallback()
% ...
myAllFigHndl = guidata(gcbo);
myAllFigHndl.time = clock;
guidata(gcbo, myAllFigHndl);
function guihandles returns
references of all visible
objects in figure
function gcbo returns reference
of the object callback of which is
being evaluated
![Page 25: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/25.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
25
Functions setappdata, getappdata Visualizing
setappdata: enables to define new data (pair name-value) for
given application
getappdata: enables to get previously defined data of selected
object
clc, clear, close all
hFig = figure;
hButt = uicontrol('Parent', hFig);
setappdata(hButt, 'speedA', rand(1, 10));
value = getappdata(hFig, 'speedA')
% values is a structure
values = getappdata(hndl)
![Page 26: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/26.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
26
Exercise – mouse movements + buttons
create application according to picture below
button „End“ terminates application
Callback of uicontrol
left and right mouse button click on figure changes font type of label „X-
position“ and „Y-position“ from normal to bold and vice versa
WindowButtonDownFcn of figure and event input
in the case checkbox is ticked, program displays cursor position
Value of uicontrol and CurrentPoint of figure
600 s ↑
![Page 27: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/27.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
27
Exercise – mouse movements + buttons
![Page 28: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/28.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
28
Exercise – mouse movements + buttons
![Page 29: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/29.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
29
Predefined dialog windows
The most common operations used ↔ GUI are predefined
the most common ones are displayed below (most of them):
Visualizing
errordlg helpdlg
inputdlg listdlg
msgbox
questdlg
uigetdir uigetfile uiopen
uiputfile uisave
waitbar
warndlg → user
→ GUI
file
→ file
→ user
![Page 30: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/30.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
30
Function msgbox
displays message for the user
Visualizing
>> h = msgbox({'This is a message for Matlab students.', ...
'Predefined functions save time', ...
'Demonstration of msgbox usage.'})
![Page 31: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/31.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
31
Function questdlg
displays a question, returns answer
Visualizing
>> query = questdlg('Terminate application?', ...
'End of application','Yes','No','Yes')
![Page 32: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/32.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
32
Function uigetfile
user can select file(s) from file dialog box
files can be filtered by their suffix
Visualizing
>> [FileName,PathName] = uigetfile('*.m', 'Select the M-file');
![Page 33: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/33.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
33
Function uiputfile
opens dialog for file saving
files can be filtered by their suffix
Visualizing
>> [file,path] = uiputfile('*.mat', 'Save workspace as:', ...
'defaultFile.mat')
![Page 34: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/34.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
34
Exercise – saving into file
save variable data from Workspace in a file using dialog box
400 s ↑
![Page 35: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/35.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
35
Function waitbar
displays state of a process
Visualizing
h = waitbar(0, 'Please wait...');
nsteps = 1000;
for k = 1:nsteps
waitbar(k/nsteps);
end
close(h);
![Page 36: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/36.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
36
Design of a simple GUI #1 Visualizing
what the GUI should do (detailed description of functionality)
what are the user inputs
required outputs
objects used (scheme of GUI, list of elements, design of tags and
properties)
callback functions, dynamic elements
saving of identifiers and data in GUI
programming style
implementation of individual parts
getting it to work, testing...
![Page 37: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/37.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
37
Discussed functions
gcf, gca, gco
findobj, findall, allchild
copyobj
delete, reset
gobjects, ishandle, isgraphics
helpdlg, msgbox, warndlg, errordlg ●
inputdlg, listdlg, questdlg ●
uigetdir, uigetfile, uiopen ●
uiputfile, uisave ●
waitbar
guide
guidata, setappdata, getappdata
![Page 38: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/38.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
38
Exercise – displaying graph of a function
expand previous function so that it enabled to draw graph of a
function defined by user
use try—catch to eliminate erroneous inputs
use function reset to clear graph before another drawing
what function do you use to evaluate the text input?
>> MTB_GUI1edit
600 s ↑
![Page 39: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/39.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
39
Exercise – displaying graph of a function
![Page 40: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/40.jpg)
Department of Electromagnetic Field, CTU FEE, [email protected]
A0B17MTB: Part #10 6.12.2017 15:49
40
Exercise – displaying graph of a function
![Page 41: Part #10 - cvut.cz6.12.2017 15:49 A0B17MTB: Part #10 4 Callback function there are user-evoked events defined related to each object (button click, list selection, ...) these events](https://reader030.vdocuments.site/reader030/viewer/2022041101/5ed987791b54311e7967bb18/html5/thumbnails/41.jpg)
Thank you!
ver. 8.1 (12/11/2017)
Miloslav Čapek, Pavel Valtr [email protected]
Apart from educational purposes at CTU, this document may be reproduced, stored or transmitted only with the prior permission of the authors.
Document created as part of A0B17MTB course.