#chapter Lists, Dictionaries and Browsers

A PCE browser visualises a list of objects and lets the user select one
of more of these objects.  Browsers are in some sence like menus.  Menus
however are only suitable for presenting a stable list of a few items,
while browsers are designed to handle very large lists of items.
Browsers are commonly used for selecting files or objects from a
database.

A browser appears as a field holding a line of text for each item in the
browser with a scrollbar attached to it.  Each field of the browser may
have it's own font, style (underlined, highligh, bold) and colour, but
all characters of the line are displayed in the same style, font and
colour.

Browsers have incremental searching facilities that allow the user to
find items in a very long list quickly.  Just typing in a browser starts
this mechanism.

A browser actually is a window displaying a list_browser object.  The
latter realises both the scrollbar as the area for displaying the items.
The text is visualised by a text_image object.  Class text_image defines
tab-stops and it is therefor easy to present tabular information, even
when using a proportional font.  See for example the PCE Class Browser
tool of the online manual.

The underlying data of a browser is stored in a dict object.  `Dict' is
short for `dictionary'.  A dict is a list of dict_item objects
(`Dictionary Entries').  Each dictionary entry consists of a `key'
to identify it and a `label' which is visualised.
#end chapter

#class browser
#end class

#class list_browser
#description group search
The methods in this section are normally called from the associated
<-key_bindin.  They implement incremental search in the same style as
class editor or GNU-EMACS.

If the user selects the currently found item using RETURN, ->enter is
activated, which in turn executes <->open_message.
#end description

#description group repaint
The following methods are invoked by the <-dict.  Modification actions to
dict object are automatically forwarded to the list_browser.
#end description

#description group internal
These function pointers are requested by the text_image object.  The
communication between the <-image and data represented in the dict
object is implemented using direct C-function pointer for better
performance.
#end description
#end class

#class dict
#end class

#class dict_item
#end class
