Page 287 Table of Contents Index Page 289
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

If save-under is true, then the sheets used to implement the user interface of the frame will have
the "save under" property, if the host window system supports it.

If frame-manager is provided, then the frame is adopted by the specified frame manager. If the
frame is adopted and either of enable or state are provided, the frame is pushed into the given
state.

Once a frame has been create, run-frame-top-level can be called to make the frame visible
and run its top-level function.

=> *application-frame* [Variable]
The current application frame. The global value is CLIM's default application, which serves
only as a repository for whatever internal state is needed by CLIM to operate properly. This
variable is typically used in the bodies of command to gain access to the state variables of the
application frame, usually in conjunction with with-slots or slot-value.

=> with-application-frame (frame) &body body [Macro]
This macro provides lexical access to the "current" frame for use with the :pane, :panes, and
:layouts options. frame is bound to the current frame within the context of one of those options.

frame is a symbol; it is not evaluated. body may have zero or more declarations as its first forms.

28.2.1 Specifying the Panes of a Frame

The panes of a frame can be specified in one of two different ways. If the frame has a single
layout and no need of named panes, then the :pane option can be used. Otherwise if named
panes or multiple layouts are required, the :panes and :layouts options can be used. Note
that the :pane option is mutually exclusive with :panes and :layouts. It is meaningful to
define frames that have no panes at all; the frame will simply serve as a repository for state and
commands.

The value of the :pane option is a form that is used to create a single (albeit arbitrarily complex)
pane. For example:
 
 (vertically ()
   (tabling ()
     ((horizontally ()
        (make-pane 'toggle-button)
        (make-pane 'toggle-button)
        (make-pane 'toggle-button))
      (make-pane 'text-field))
     ((make-pane 'push-button :label "a button")
      (make-pane 'slider)))
   (scrolling ()
     (make-pane 'application-pane
                 :display-function 'a-display-function))


Page 287 Table of Contents Index Page 289
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