82 lines
3.7 KiB
Racket
82 lines
3.7 KiB
Racket
#lang scribble/manual
|
|
@(require (for-label scribble/eval scriblib/gui-eval))
|
|
|
|
@title[#:tag "gui-eval"]{Examples Using the GUI Toolbox}
|
|
|
|
@defmodule[scriblib/gui-eval]{The
|
|
@racketmodname[scriblib/gui-eval] library support example
|
|
evaluations that use @racketmodname[racket/gui] facilities (as opposed
|
|
to just @racketmodname[racket/draw]) to generate text and image results.}
|
|
|
|
The trick is that @racketmodname[racket/gui] is not generally
|
|
available when rendering documentation, because it requires a GUI
|
|
context. Text and image output is rendered to an image file when the
|
|
@envvar{MREVAL} environment variable is set, so run the enclosing
|
|
document once with the environment varibale to generate the
|
|
images. Future runs (with the environment variable unset) use the
|
|
generated image.
|
|
|
|
@deftogether[(
|
|
@defform*[((gui-interaction datum ...)
|
|
(gui-interaction
|
|
#:eval+opts the-eval get-predicate? get-render
|
|
get-get-width get-get-height
|
|
datum ...))
|
|
]
|
|
@defform*[((gui-interaction-eval datum ...)
|
|
(gui-interaction-eval
|
|
#:eval+opts the-eval get-predicate? get-render
|
|
get-get-width get-get-height
|
|
datum ... ))]
|
|
@defform*[((gui-interaction-eval-show datum ...)
|
|
(gui-interaction-eval-show
|
|
#:eval+opts the-eval get-predicate? get-render
|
|
get-get-width get-get-height
|
|
datum ...))]
|
|
@defform*[((gui-racketblock+eval datum ...)
|
|
(gui-racketblock+eval
|
|
#:eval+opts the-eval get-predicate? get-render
|
|
get-get-width get-get-height
|
|
datum ...))]
|
|
@defform*[((gui-racketmod+eval datum ...)
|
|
(gui-racketmod+eval
|
|
#:eval+opts the-eval get-predicate? get-render
|
|
get-get-width get-get-height
|
|
datum ...))]
|
|
@defform*[((gui-def+int datum ...)
|
|
(gui-def+int
|
|
#:eval+opts the-eval get-predicate? get-render
|
|
get-get-width get-get-height
|
|
datum ...))]
|
|
@defform*[((gui-defs+int datum ...)
|
|
(gui-defs+int
|
|
#:eval+opts the-eval get-predicate? get-render
|
|
get-get-width get-get-height
|
|
datum ...))]
|
|
)]{
|
|
|
|
The first option of each of the above is
|
|
like @racket[interaction], etc., but actually evaluating the forms
|
|
only when the @envvar{MREVAL} environment variable is set, and then in
|
|
an evaluator that is initialized with @racketmodname[racket/gui/base]
|
|
and @racketmodname[slideshow].
|
|
|
|
The second option of each allows you to specify your own evaluator via
|
|
the @racket[the-eval] argument and then to specify four thunks that
|
|
return functions for finding and rendering graphical objects:
|
|
@itemize[
|
|
@item{@racket[get-predicate? : (-> (-> any/c boolean?))]
|
|
Determines if a value is a graphical object (and thus handled by the other operations)}
|
|
@item{@racket[get-render : (-> (-> any/c (is-a?/c dc<%>) number? number? void?))]
|
|
Draws a graphical object (only called if the predicate returned @racket[#t]; the first
|
|
argument will be the value for which the predicate holds).}
|
|
@item{@racket[get-get-width : (-> (-> any/c number?))]
|
|
Gets the width of a graphical object (only called if the predicate returned @racket[#t]; the first
|
|
argument will be the value for which the predicate holds).}
|
|
@item{@racket[get-get-height : (-> (-> any/c number?))]
|
|
Gets the height of a graphical object (only called if the predicate returned @racket[#t]; the first
|
|
argument will be the value for which the predicate holds).}
|
|
]
|
|
|
|
}
|