Page 260 Table of Contents Index Page 262
Chapters
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
A, B, C, D, E





Chapter 26

Dialog Facilities

Major issue: There is a general issue about how these dialogs fit in with the dialogs that
might be provided by the underlying toolkit. For example, under what circumstances is CLIM
allowed to directly use the dialog facility provided by the host? | SWM

=> accepting-values (&optional stream &key own-window exit-boxes initially-select-query-identifier
resynchronize-every-pass label x-position y-position frame-class)
&body body [Macro]
Builds a dialog for user interaction based on calls to accept within body. The user can select
the values and change them, or use defaults if they are supplied. The dialog will also contain
some sort of "end" and "abort" choices. If "end" is selected, then accepting-values returns
whatever values the body returns. If "abort" is selected, accepting-values will invoke the
abort restart.

stream is an interactive stream that accepting-values will use to build up the dialog. The
stream argument is not evaluated, and must be a symbol that is bound to a stream. If stream is
t (the default), *query-io* is used.

body is the body of the dialog, which contains calls to accept that will be intercepted by
accepting-values and used to build up the dialog. body may have zero or more declarations
as its first forms.

An accepting-values dialog is implemented as a looping structure. First, body is evaluated
in order to collect the output. While the body is being evaluated, all calls to accept call
the accept-present-default presentation methods instead of calling the accept presentation
methods. The output is then displayed (preferably using incremental redisplay in order to avoid
unnecessary redisplay of unchanged output). Then accepting-values awaits a user gesture,
such as clicking on one of the fields of the dialog. When the user clicks on a field, accepting-
values
reads a new value for that field using accept and replaces the old value with the new
value. Then the loop is started again, until the user either exits or aborts from the dialog.

Because of this looping structure, accepting-values needs to be able to uniquely identify each
call to accept in the body of the dialog. The query identifier is used to identify the calls to


Page 260 Table of Contents Index Page 262
Chapters
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
A, B, C, D, E