1 #ifndef _IPXE_MENU_H
2 #define _IPXE_MENU_H
3 
4 /** @file
5  *
6  * Menu selection
7  *
8  */
9 
10 FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
11 
12 #include <ipxe/list.h>
13 
14 /** A menu */
15 struct menu {
16 	/** List of menus */
17 	struct list_head list;
18 	/** Name */
19 	const char *name;
20 	/** Title */
21 	const char *title;
22 	/** Menu items */
23 	struct list_head items;
24 };
25 
26 /** A menu item */
27 struct menu_item {
28 	/** List of menu items */
29 	struct list_head list;
30 	/** Label */
31 	const char *label;
32 	/** Text */
33 	const char *text;
34 	/** Shortcut key */
35 	int shortcut;
36 	/** Is default item */
37 	int is_default;
38 };
39 
40 extern struct menu * create_menu ( const char *name, const char *title );
41 extern struct menu_item * add_menu_item ( struct menu *menu, const char *label,
42 					  const char *text, int shortcut,
43 					  int is_default );
44 extern void destroy_menu ( struct menu *menu );
45 extern struct menu * find_menu ( const char *name );
46 extern int show_menu ( struct menu *menu, unsigned long timeout,
47 		       const char *select, struct menu_item **selected );
48 
49 #endif /* _IPXE_MENU_H */
50