Accessors

Description

The list view inherits its functionality from choice. In many ways it may be regarded as a kind of enhanced list panel, although its behavior is not identical. It supports single selection and extended selection interactions.

The list view displays its items in one of four ways, determined by the value in the
view
slot. An application may use the list view pane in just a single view, or may change the view between all four available views using
(setf list-view-view)
.

See the notes below on using both large and small icon views.

In all views, the text associated with the item (the label) is returned by the
print-function
, as with any other choice.

The icon view --
:icon

In this view, large icons are displayed, together with their label, positioned in the space available.

The small icon view --
:small-icon

In this view, small icons are displayed, together with their label, positioned in the space available.

The list view --
:list

In this view, small icons are displayed, arranged in vertical columns.

The report view --
:report

In this view, multiple columns are displayed. A small icon and the item's label is displayed in the first column. Additional pieces of information, known as subitems, are displayed in subsequent columns.

To use the view
:report
,
columns
must specify a list of column specifiers. Each column specifier is a
plist
, in which the following keywords are valid:

:title

The column heading

:width

The width of the column in pixels. If this keyword is omitted or has the value
nil
, the width of the column is automatically calculated, based on the widest item to be displayed in that column.

:align

May be
:left
,
:right
or
:center
to indicate how items should be aligned in this column. The default is
:left
. Only left alignment is available for the first column.

The
subitem-function
is called on the item to return subitem objects that represent the additional information to be displayed in the subsequent columns. Hence,
subitem-function
should normally return a list, whose length is one less than the number of columns specified. Each subitem is then printed in its column using the appropriate subitem print function.
subitem-print-function
may be either a single print function, to be used for all subitems, or a list of functions: one for each subitem column.

Note that the first column always contains the item label, as determined by the
choice-print-function
.

The
image-function
is called on an item to return an image associated with the item. It can return one of the following:

A pathname or string

This specifies the filename of a file suitable for loading with load-image. Currently this must be a bitmap file.

Allowing a single bitmap to be created which contains several button images side by side. See make-image-locator for more information. On Microsoft Windows, this also allows access to bitmaps stored as resources in a DLL.

An integer

This is a zero-based index into the list view's image list. This is generally only useful if the image list is created explicitly. See image-list for more details.

The
state-image-function
is called on an item to determine the state image, an additional optional image used to indicate the state of an item. It can return one of the above, or
nil
to indicate that there is no state image. State images may be used in any view, but are typically used in the report and list views.

If
image-lists
is supplied, it should be a plist containing the following keywords as keys. The corresponding values should be image-list objects.

:normal

Specifies an image-list object that contains the large item images. The
image-function
should return a numeric index into this image-list.

:small

Specifies an image-list object that contains the small item images. The
image-function
should return a numeric index into this image-list.

:state

Specifies an image-list object that contains the state images. The
state-image-function
should return a numeric index into this image-list

If both the large icon view (icon view) and one or more of the small icon views (small icon view, list view, report view) are to be used, special considerations apply.

The image lists must be created explicitly, using the
:image-lists
initarg, and the
image-function
must return an integer. Care must be taken to ensure that corresponding images in the
:normal
and
:small
image lists have the same numeric index.

Returning pathnames, strings or image-locators from the image function cause the CAPI to create the image-lists automatically; however, if large and small icon views are mixed, this will lead to incorrect icons (or no icons) being displayed in one or other view.