mirror of
https://github.com/ipxe/ipxe
synced 2025-12-23 05:21:49 +03:00
[menu] Add the abstract concept of a menu
Inspired-by: Robin Smidsrød <robin@smidsrod.no> Tested-by: Robin Smidsrød <robin@smidsrod.no> Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
47
src/include/ipxe/menu.h
Normal file
47
src/include/ipxe/menu.h
Normal file
@@ -0,0 +1,47 @@
|
||||
#ifndef _IPXE_MENU_H
|
||||
#define _IPXE_MENU_H
|
||||
|
||||
/** @file
|
||||
*
|
||||
* Menu selection
|
||||
*
|
||||
*/
|
||||
|
||||
FILE_LICENCE ( GPL2_OR_LATER );
|
||||
|
||||
#include <ipxe/list.h>
|
||||
|
||||
/** A menu */
|
||||
struct menu {
|
||||
/** List of menus */
|
||||
struct list_head list;
|
||||
/** Name */
|
||||
const char *name;
|
||||
/** Title */
|
||||
const char *title;
|
||||
/** Menu items */
|
||||
struct list_head items;
|
||||
};
|
||||
|
||||
/** A menu item */
|
||||
struct menu_item {
|
||||
/** List of menu items */
|
||||
struct list_head list;
|
||||
/** Label */
|
||||
const char *label;
|
||||
/** Text */
|
||||
const char *text;
|
||||
/** Shortcut key */
|
||||
int shortcut;
|
||||
/** Is default item */
|
||||
int is_default;
|
||||
};
|
||||
|
||||
extern struct menu * create_menu ( const char *name, const char *title );
|
||||
extern struct menu_item * add_menu_item ( struct menu *menu, const char *label,
|
||||
const char *text, int shortcut,
|
||||
int is_default );
|
||||
extern void destroy_menu ( struct menu *menu );
|
||||
extern struct menu * find_menu ( const char *name );
|
||||
|
||||
#endif /* _IPXE_MENU_H */
|
||||
Reference in New Issue
Block a user