1.reminder of symbols 2.dialog boxes 3.output-centric dialogs 4.input-centric dialogs dialog boxes...

40
1. Reminder of Symbols 2. Dialog Boxes 3. Output-centric dialogs 4. Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

Upload: colleen-holland

Post on 01-Jan-2016

236 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

1. Reminder of Symbols2. Dialog Boxes3. Output-centric dialogs4. Input-centric dialogs

Dialog BoxesApplications of Cell Arrays

1

Page 2: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

1. Reminders on Symbols

• Creating/hard-coding: Braces { }• Referencing content: Braces { }

• Augmenting: Brackets [ ]

• Referencing container: Parentheses ()

2

Page 3: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

2. Dialog Boxes

3

Page 4: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

2. Dialog Boxes

• Dialog boxes are "popup windows" that allows us another means to communicate with the user.

• Some dialog boxes to collect input:inputdlg(), listdlg(), menu(), questdlg()

• And some to produce output:msgbox(), helpdlg(), warndlg(), errordlg()

4

Page 5: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

5

Output-centric Dialog Boxes

Output-centric dialog boxes are popup windows with the primary purpose of providing information to the user.

Examples are: msgbox(), helpdlg(), warndlg(), and errordlg()

Page 6: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

6

Output-centric Dialog Boxes

Output-centric dialogs are "non-blocking" – they do NOT (on their own) prevent the rest of the program from executing. They can, however be created as "modal". A modal dialog prevents the user from interacting with other windows until it is closed but does not interfere with the execution of the program.

Page 7: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

7

Output-centric Dialog Boxes

Output-centric dialogs are "non-blocking" – they do NOT (on their own) prevent the rest of the program from executing. They can, however be created as "modal". A modal dialog prevents the user from interacting with other windows until it is closed but does not interfere with the execution of the program.

You may wish to create a blocking output-centric box. This is accomplished by collecting the return value of the dialog box function call and then using either the waitfor() or uiwait() function:

wh = msgbox('Here is some information.', 'Special Info!');waitfor(wh);

Page 8: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

8

Output-centric Dialog Boxes

Output-centric dialogs are "non-blocking" – they do NOT (on their own) prevent the rest of the program from executing. They can, however be created as "modal". A modal dialog prevents the user from interacting with other windows until it is closed but does not interfere with the execution of the program.

You may wish to create a blocking output-centric box. This is accomplished by collecting the return value of the dialog box function call and then using either the waitfor() or uiwait() function:

wh = msgbox('Here is some information.', 'Special Info!');

waitfor(wh);

uiwait() provides a programmatic as well as a user-based means to continue. Use uiresume() to continue.

Page 9: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

msgbox(), helpdlg(), warndlg(), errordlg()

Each creates a dialog box that will output a string

% calculate/displaytravelTime = distance/speeds(type);resultString = sprintf('With this plane, it will

take %.2fhrs.\n', travelTime);msgbox(resultString)

9

Page 10: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

msgbox()

• Use sprintf() customize the data in the message box– Creates a formatted string

%calculate/displaytravelTime = distance/speeds(type);resultString = sprintf('With a %s, it will take

%.2fhrs.\n', myPlanes{type}, travelTime);msgbox(resultString)

10

Page 11: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

msgbox()

• Use sprintf() customize the data in the message box– Creates a formatted string

%calculate/displaytravelTime = distance/speeds(type);resultString = sprintf('With a %s, it will take

%.2fhrs.\n', myPlanes{type}, travelTime);wh = msgbox(resultString);waitfor(wh);

11

Page 12: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

12

Input-centric Dialog Boxes

Input-centric dialog boxes are those boxes which are intended to have the user provide information.

Input-centric dialogs are "blocking" – which is sometimes incorrectly referred to as "modal".

A modal dialog prevents the user from interacting with other windows until it is closed. A blocking dialog prevents the rest of the program from executing until it is closed.

Page 13: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

3. inputdlg()

• Collects information from the user• inputdlg() – much like the input() function, except…

– It is presented in a pop-up window form– There can be multiple prompts and multiple values provided by the

user.

• ALL user-provided information is returned as strings in a cell array!

Page 14: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

14

inputdlg(), syntax

• Arguments– A cell array of strings: This is the set of prompts for the user. For

example:prompts={'Prompt 1', 'Prompt 2', 'Prompt N'}

• Return Values– One (1) cell array of strings: What the user provided in the boxes

• Exampleprompts={'Coeff "a":', 'Coeff "b":', 'Coeff "c":'};coeffs = inputdlg(prompts);

var = inputdlg(prompts);

cell array, indicated by the curly braces.

Page 15: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

inputdlg(), output

15

• When collecting numbers, use str2double() to convert the cell array into a numerical vector:

coeffs = str2double(coeffs);

Page 16: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

4. listdlg()

• listdlg() – Create and open list-selection dialog box– User does not have to type anything: Prevent typing errors!

16

Page 17: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

This function returns 2 values.

17

[Selection, ok] = listdlg(<param name>, <param value>)

listdlg()calling-syntax

• Selection is a vector of indices of the selected strings

• Ok is a recognition of user selection• 1 if user clicks the OK button• 0 if clicks click the Cancel button or

close the dialog box (X)

Page 18: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

18

[Selection, ok] = listdlg(<param name>, <param value>)

listdlg()calling-syntax

There are many parameters available to the listdlg() function, so the calling syntax is a bit different.

Page 19: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

19

[Selection, ok] = listdlg(<param name>, <param value>)

listdlg() calling-syntax

There are many parameters available to the listdlg() function, so the calling syntax is a bit different.

Page 20: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

20

[Selection, ok] = listdlg(<param name>, <param value>)

listdlg()calling-syntax

There are many parameters available to the listdlg() function, so the calling syntax is a bit different.

Instead of relying on the order of the arguments, the programmer provides both the name of a parameter and the argument value for that parameter.

In all cases, the 'ListString' parameter must be provided. This parameter is a cell array of strings containing the options that will be provided to the user.

Page 21: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

21

[Selection, ok] = listdlg('ListString', S)

listdlg()- syntax

• Arguments are in parameter/value pairs– Parameter goes 1st, value of the parameter goes 2nd.

• 'ListString' – Cell array of strings that specify list

S = {'Item 1', 'Item 2', 'Item N'}

Page 22: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

myList is a cell array of strings: { }

Why cell arrays?The length of each selection varies widely, and

a regular array would not be rectangular.

Sample use of listdlg()

22

Page 23: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

23

S = {'My choice', 'Your choice', 'His choice', 'Her choice'}[Selection, ok] = listdlg('ListString', S)

listdlg() calling syntax

'SelectionMode' - 'single' or 'multiple''Name' – Title string'ListSize' – Vector of width and height in pixels'PromptString' – String or cell array'OKString' – String for OK button'CancelString' – String for Cancel button

[Selection, ok] = listdlg('ListString', S, …'SelectionMode', 'single', 'ListSize', [160, 160])

Page 24: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

listdlg() - Question

• If the user selects Primary Booster and Secondary Booster, What will Selection - the first return value - be after this executes?

a. {'Primary Booster','Secondary Boosters'}b. [1 3]c. {1, 3}d. None of the above

24

Page 25: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

Experiment in the command window!

• What button did the user hit?

a. The 'ok' buttonb. The 'cancel' buttonc. The X that closes the windowd. Either b or ce. None of the above

25

Page 26: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

26

[Selection, ok] = listdlg('ListString', S, …'SelectionMode', 'Single')

listdlg()- syntax

• SelectionMode - A second argument parameter/value pair – Allows user to select a Single or Multiple (default) items

Page 27: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

2nd PAIR of arguments

27

The Select All button is gone.

Page 28: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

2nd PAIR of arguments

28

• What item did the user select?

Page 29: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

Example: Aircraft Time

• Create a program that estimates the time an aircraft takes to travel a certain distance.

Aircrafts possible, with their average speeds are:1) Cessna 150, 198 kmph2) Boeing 787, 950 kmph3) Concorde, 2147 kmph4) Cessna 421, 444 kmph

29

Page 30: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

Algorithm

% prompt user for type of airplane (error?)% prompt user for distance to travel (error?)

% calculate/display

• Presented is the evolution from:– Option1: use input() and if. – Option2: use input() and vectors. – Option3: using listdlg(), vectors and cell arrays.

30

Page 31: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

Option #1. input(), if and while

%prompt user for type of airplanetype = input('Enter the type of airplane: \n1 – cessna 150\

n 2-Boeing 787\n3-Concorde\n4-Cessna 421\n Enter now: ');

%prompt user for distance to traveldistance = input('Enter the distance (km): ');

%calculate/displayif type == 1 %cessna 150

travelTime = distance/198;fprintf('With this plane, it will take %.2fhrs.\n', travelTime);

elseif….

31

Add while loops to trap errors.

Page 32: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

Option #2. input(), vectors, while

%prompt user for type of airplanetype = input('Enter the type of airplane: \n1 – cessna 150\

n 2-Boeing 787\n3-Concorde\n4-Cessna 421\n Enter now: ');

%prompt user for distance to traveldistance = input('Enter the distance (km): ');

%data base of speedsspeeds = [198, 950, 2147, 444];

%calculate/displaytravelTime = distance/speeds(type);fprintf('With this plane, it will take %.2fhrs.\n',

travelTime);

32

Add while loops to trap errors.

Reference the correct value in the vector, using the index.

Page 33: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

Option #3. listdlg(), arrays, while

%prompt user for type of airplanemyPlanes = {'Cessna 150', 'Boeing 787', 'Concorde', 'Cessna

421'};type = listdlg('ListString', myPlanes,'SelectionMode',

'Single');

%prompt user for distance to traveldistance = inputdlg('Enter the distance (km): ');

%data base of speedsspeeds = [198, 950, 2147, 444];

%calculate/displaytravelTime = distance/speeds(type);fprintf('With this plane, it will take %.2fhrs.\n',

travelTime);

33

Add while loop to trap errors, and convert to number

Page 34: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

Option #3. Sample

• Note: once a program starts with dialog boxes, it should use only dialog boxes…

>> not the command window

34

Page 35: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

Menus

• menu()– Provides the user with a vertical list of buttons to select (No limit)– Returns the index of the button selected– How do we work with this?

35

Options = {'Cheese', 'Water', 'Cake', 'Pie', 'Oranges'};Choice = menu('Here are the dessert options. What would you like?', Options)

Page 36: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

Menus

• questdlg()– Offers the user a maximum of three push buttons to select options– Returns the actual string used in the selected button

• menu()– Provides the user with a vertical list of buttons to select (No limit)– Returns the index of the button selected

36

Page 37: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

37

File and Directory Selection

To have the user choose a file:filename = uigetfile(FilterSpec)

Where FilterSpec is a: - column vector cell array of file extension patterns

{'*.txt'; '*.dat'; '*.csv'}

fname = uigetfile({'*.dat';'*.txt'; '*.csv'})

Page 38: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

38

File and Directory Selection

To have the user choose a file:filename = uigetfile(FilterSpec)

Where FilterSpec is a: - two-column matrix cell array of file extension patterns and descriptive text

{ '*.txt', 'Text files (.txt)';

'*.dat', 'Data files (.dat), '*.csv', 'Comma-separated files (.csv)' }

fname = uigetfile({'*.dat', 'Data files (.dat)'; '*.txt', 'Text files (.txt)'; '*.csv', 'Comma-separated (.csv)'})

Page 39: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

39

File and Directory Selection

To have the user choose a directory (folder):folderPath = uigetdir(startPath)

Where startPath is a string with the entire path to the folder, and folderPath is a string with the entire path to the selected folder.

folder = uigetdir('c:\windows\system32')

(MATLAB on Windows can use forward slashes as folder separators)

NOTE: The special path designators '.' and '..' can also be used in the path:'.' The current directory'..' The parent directory

Page 40: 1.Reminder of Symbols 2.Dialog Boxes 3.Output-centric dialogs 4.Input-centric dialogs Dialog Boxes Applications of Cell Arrays 1

40

More Information

Mathworks: Pre-defined Dialog Boxes

http://tiny.egr115.com/?id=47

http://www.mathworks.com/help/matlab/predefined-dialog-boxes.html