diff options
Diffstat (limited to 'src/include/ipxe/dynui.h')
| -rw-r--r-- | src/include/ipxe/dynui.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/include/ipxe/dynui.h b/src/include/ipxe/dynui.h new file mode 100644 index 000000000..02179ef18 --- /dev/null +++ b/src/include/ipxe/dynui.h @@ -0,0 +1,73 @@ +#ifndef _IPXE_DYNUI_H +#define _IPXE_DYNUI_H + +/** @file + * + * Dynamic user interfaces + * + */ + +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); +FILE_SECBOOT ( PERMITTED ); + +#include <ipxe/list.h> + +/** A dynamic user interface */ +struct dynamic_ui { + /** List of dynamic user interfaces */ + struct list_head list; + /** Name */ + const char *name; + /** Title */ + const char *title; + /** Dynamic user interface items */ + struct list_head items; + /** Hidden user interface items, accessible only via hotkey */ + struct list_head hidden_items; + /** Number of user interface items */ + unsigned int count; +}; + +/** A dynamic user interface item */ +struct dynamic_item { + /** List of dynamic user interface items */ + struct list_head list; + /** Name */ + const char *name; + /** Text */ + const char *text; + /** Index */ + unsigned int index; + /** Flags */ + unsigned int flags; + /** Shortcut key */ + int shortcut; +}; + +/** Dynamic user interface item is default selection */ +#define DYNUI_DEFAULT 0x0001 + +/** Dynamic user interface item represents a secret */ +#define DYNUI_SECRET 0x0002 + +/** Dynamic user interface item should be invisible */ +#define DYNUI_HIDDEN 0x0004 + +extern struct dynamic_ui * create_dynui ( const char *name, const char *title ); +extern struct dynamic_item * add_dynui_item ( struct dynamic_ui *dynui, + const char *name, + const char *text, + unsigned int flags, + int shortcut ); +extern void destroy_dynui ( struct dynamic_ui *dynui ); +extern struct dynamic_ui * find_dynui ( const char *name ); +extern struct dynamic_item * dynui_item ( struct dynamic_ui *dynui, + unsigned int index ); +extern struct dynamic_item * dynui_shortcut ( struct dynamic_ui *dynui, + int key ); +extern int show_menu ( struct dynamic_ui *dynui, unsigned long timeout, + unsigned long retimeout, const char *select, + struct dynamic_item **selected ); +extern int show_form ( struct dynamic_ui *dynui ); + +#endif /* _IPXE_DYNUI_H */ |
