| Text User Interface using comboot |
| --------------------------------- |
| |
| This is a menu system written by Murali Krishnan Ganapathy and ported |
| from OpenWatcom to gcc by HPA. It is currently being maintained by the |
| original author. |
| |
| 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 .c32 |
| extension to the MENUS list in the Makefile. |
| |
| The resulting code is a 32-bit COMBOOT code, and hence can be executed |
| only under syslinux. You can use tools like bochs to help debug your |
| code. |
| |
| Menu Features currently supported are: |
| * menu items, |
| * submenus, |
| * disabled items, |
| * checkboxes, |
| * invisible items (useful for dynamic menus), and |
| * Radio menus, |
| * Context sensitive help |
| * Authenticated users |
| * Editing commands associated with items |
| |
| 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 |
| * Shortcut keys |
| |
| 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 and radiomenu's, where a selection may |
| result in disabling other menu items/checkboxes |
| * Global Screen 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. |
| * Global Keys Handler |
| This is called every time the user presses a key which the menu |
| system does not understand. This can be used to display context |
| sensitive help. See complex.c for how to use this hook to implement |
| a context sensitive help system as well as "On the fly" editing |
| of commands associated with menus. |
| * Shortcut Keys |
| With each item one can register a shortcut key from [A-Za-z0-9]. |
| Pressing a key within that range, will take you to the next item |
| with that shortcut key (so you can have multiple items with the |
| same shortcut key). The default shortcut key for each item, is |
| the lower case version of the first char of the item in the range |
| [A-Za-z0-9]. |
| * Escape Keys |
| Each item entry can have a substring enclosed in < and >. This part |
| is highlighted. Can be used to highlight the shortcut keys. By default |
| if an item has a <, then the first char inside < and > in the range |
| [A-Za-z0-9] is converted to lower case and set as the shortcut key. |
| * Ontimeout handler |
| The user can register an ontimeout handler, which gets called if |
| no key has been pressed for a user specific amount of time (default 5 min). |
| For an example see the complex.c file. |
| |
| Credits |
| ------- |
| * The Watcom developers and Peter Anvin for figuring out an OS |
| independent startup code. |
| * Thomas for porting the crypt function and removing all C library |
| dependencies |
| * Peter Anvin for porting the code to GCC |
| |
| - Murali (gmurali+guicd@cs.uchicago.edu) |
| |