Page 295 Table of Contents Index Page 297
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 28. APPLICATION FRAMES

Major issue: RWK has a reasonable proposal for breaking down command loops into their
component pieces. It should be integrated here. | SWM

All classes that inherit from application-frame must inherit or implement methods for all of
the following functions.

=> run-frame-top-level frame [Generic Function]
Runs the top-level function for the frame frame. The default method on application-frame
simply invokes the top-level function for the frame (which defaults to default-frame-top-
level
).

=> run-frame-top-level (frame application-frame) [:Around Method]
The :around method of run-frame-top-level on the application-frame class is responsible
for establish the initial dynamic bindings for the application, including (but not limited to)
binding *application-frame* to frame, binding *input-context* to nil, resetting the de-
limiter and activation gestures, and binding *input-wait-test*, *input-wait-handler*, and
*pointer-button-press-handler* to nil.

=> default-frame-top-level frame &key command-parser command-unparser partial-command-
parser prompt
[Generic Function]
The default top-level function for application frames. This function implements a "read-eval-
print" loop that displays a prompt, calls read-frame-command, then calls execute-frame-
command
, and finally redisplays all of the panes that need to be redisplayed.

default-frame-top-level will also establish a simple restart for abort, and bind the standard
stream variables as follows. *standard-input* will be bound to the value returned by frame-
standard-input
. *standard-output* will be bound to the value returned by frame-standard-
output
. *query-io* will be bound to the value returned by frame-query-io. *error-output*
will be bound to the value returned by frame-error-output. It is unspecified what *terminal-
io*
, *debug-io*, and *trace-output* will be bound to.

prompt is either a string to use as the prompt (defaulting to "Command: "), or a function of
two arguments, a stream and the frame.

command-parser, command-unparser, and partial-command-parser are the same as for read-
command
. command-parser defaults to command-line-command-parser if there is an inter-
actor, otherwise it defaults to menu-only-command-parser. command-unparser defaults to
command-line-command-unparser. partial-command-parser defaults to command-line-read-
remaining-arguments-for-partial-command
if there is an interactor, otherwise it defaults to
menu-only-read-remaining-arguments-for-partial-command. default-frame-top-level
binds *command-parser*, *command-unparser*, and *partial-command-parser* to the values
of command-parser, command-unparser, and partial-command-parser.


Page 295 Table of Contents Index Page 297
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