All Manuals > CAPI User Guide and Reference Manual > 3 General Properties of CAPI Panes

3.9 Special kinds of windows

3.9.1 Browser pane

On Microsoft Windows and Cocoa, browser-pane implements embedding of a basic web browser. It allows you to display HTML, navigate, refresh, handle errors, redirect to another URL, and so on.

3.9.2 OLE embedding and control

On Microsoft Windows ole-control-pane implements embedding of OLE control components. You can also embed CAPI windows inside other applications using ole-control-component. You define an OLE control component (an Automation class that implements OLE Control protocols) using define-ole-control-component, and other (non-LispWorks) applications can use it.

3.9.3 Cocoa views and application interfaces

On Cocoa, you can use cocoa-view-pane to display an arbitrary Cocoa View. You can specify the name of the Cocoa view class to create, and a function that is called to initialize it. The function cocoa-view-pane-view can be used to access the Cocoa view after it has been created.

The class cocoa-default-application-interface is a special class for defining application interfaces, which gives you control of application-wide properties which are not associated with specific windows. This includes the Application menu and default menu bar items, Dock context menu, application message processing and display state of the whole application.

3.9.4 Slider, Progress bar and Scroll bar

The classes slider and scroll-bar implement panes that show the value of some quantity and allow the user to change it interactively.

slider is intended to be used in general for any pseudo-continuous quantity that the user should be able to manipulate.

scroll-bar is intended to be used for scrolling. Normally a scroll bar is specified simply by supplying the :vertical-scroll or :horizontal-scroll initarg when making the pane that needs scrolling, but in some circumstances an explicit scroll bar may be useful.

The class progress-bar implements a pane that shows the value of some quantity and is used to indicate progress in performing some task.

All of these classes inherit from range-pane, which defines the various values that are used and the orientation. In addition to the range-pane accessors, there is also the function range-set-sizes which you can use to set several values at the same time.

3.9.5 Text input range

text-input-range is a special pane for entering numeric values, allowing the user to either type the number or use buttons to adjust the value.

3.9.6 Stream panes

There are three subclasses of editor-pane which handle Common Lisp streams. Collector panes

A collector-pane displays anything printed to the stream associated with it. Background output windows, for instance, are examples of collector panes.

(setq collector
      (make-instance 'collector-pane
                     :title "Example collector pane:"))
(contain collector)
(princ "abc" (collector-pane-stream collector))

The collector-pane has a mechanism to temporarily make it the child of a parent switchable-layout, so the user can see the output printed into it. The functions map-typeout and unmap-typeout do the switch, and the macro with-random-typeout can be used to do both switches and to also bind a variable to the stream of the collector-pane. This mechanism is used in the LispWorks IDE to show the output of Compile Buffer and other operations. Interactive panes

An interactive-pane is the building block on which listener-pane is built.

(contain (make-instance 'interactive-pane
               :title "Interactive pane"))

You can simulate user input into an interactive-pane by interactive-pane-execute-command.

Note: interactive-pane is probably too difficult to use, due to the complexities involved with the interaction with the Editor. However, for its subclass listener-pane, the system deals with all these issues. Listener panes

The listener-pane class is a subclass of interactive-pane, and allows you to create interactive Common Lisp sessions. You may occasionally want to include a listener pane in a tool (as, for instance, in the LispWorks IDE Debugger).

(contain (make-instance 'listener-pane
                        :title "Listener"))

The listener-pane activity would normally be interacting with the user, but you can also emulate user interaction using listener-pane-insert-value. Note also that since listener-pane is a subclass of editor-pane, you can use the full power of the Editor on it.

3.9.7 Shell pane

shell-pane is a pane that runs a sub-process ("shell", "console") and allows the user to interact with it.

CAPI User Guide and Reference Manual (Macintosh version) - 01 Dec 2021 19:31:17