aboutsummaryrefslogtreecommitdiffstats
path: root/menu/README
blob: 05917f60d7eeb9cecd17672f42afcfa0d4320c12 (plain)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
          Text User Interface using comboot
          ---------------------------------

This is a menu system written by Murali Krishnan Ganapathy and ported
from OpenWatcom to gcc by HPA.

To configure the menus, you need to set up a menu configuration file
to have the menu items you desire, then build the menu system using
make.  You can use either simple.c or complex.c as a starting point
for your own menu configuration file; then add the name with a .com
extension to the MENUS list in the Makefile.

The resulting code runs both under DOS as well as SYSLINUX. A trivial
memory allocation routine is implemented, to reduce the memory footprint 
of this utility.

Features currently supported are:
* menu items, 
* submenus, 
* disabled items,
* checkboxes,
* invisible items (useful for dynamic menus), and
* Radio menus
 

The keys used are:

* Arrow Keys, PgUp, PgDn, Home, End Keys
* Space to switch state of a checkbox
* Enter to choose the item
* Escape to exit from it

Features
--------
This is a general purpose menu system implemented using only BIOS calls, 
so it can be executed in a COMBOOT environment as well. It is highly
customizable. Some features include:

* Status line
    Display any help information associated with each menu item.
* Window
    Specify a window within which the menu system draws all its menu's.
    It is upto the user to ensure that the menu's fit within the window.
* Positioning submenus
    By default, each submenu is positioned just below the corresponding 
    entry of the parent menu. However, the user may position each menu
    at a specific location of his choice. This is useful, when the menu's
    have lots of options.
* Registering handlers for each menu item 
    This is mainly used for checkboxes, where selecting a checkbox, may
    result in disabling another menu item, or de-selecting another 
    checkbox.
* Global Handler
    This is called every time the menu is redrawn. The user can display
    additional information (usually outside the window where the menu is 
    being displayed). See the complex.c for an example, where the global
    handler is used to display the choices made so far.

Credits
-------
* The Watcom developers and Peter Anvin for figuring out an OS 
  independent startup code.

- Murali (gmurali+guicd@cs.uchicago.edu)