#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