diff options
Diffstat (limited to 'src/hci')
-rw-r--r-- | src/hci/commands/dynui_cmd.c (renamed from src/hci/commands/menu_cmd.c) | 109 | ||||
-rw-r--r-- | src/hci/tui/menu_ui.c | 43 |
2 files changed, 77 insertions, 75 deletions
diff --git a/src/hci/commands/menu_cmd.c b/src/hci/commands/dynui_cmd.c index 8b6d2a9f1..dbaa669ef 100644 --- a/src/hci/commands/menu_cmd.c +++ b/src/hci/commands/dynui_cmd.c @@ -25,7 +25,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); /** @file * - * Menu commands + * Dynamic user interface commands * */ @@ -34,7 +34,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include <string.h> #include <errno.h> #include <getopt.h> -#include <ipxe/menu.h> +#include <ipxe/dynui.h> #include <ipxe/command.h> #include <ipxe/parseopt.h> #include <ipxe/settings.h> @@ -42,42 +42,42 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); FEATURE ( FEATURE_MISC, "Menu", DHCP_EB_FEATURE_MENU, 1 ); -/** "menu" options */ -struct menu_options { +/** "dynui" options */ +struct dynui_options { /** Name */ char *name; /** Delete */ int delete; }; -/** "menu" option list */ -static struct option_descriptor menu_opts[] = { +/** "dynui" option list */ +static struct option_descriptor dynui_opts[] = { OPTION_DESC ( "name", 'n', required_argument, - struct menu_options, name, parse_string ), + struct dynui_options, name, parse_string ), OPTION_DESC ( "delete", 'd', no_argument, - struct menu_options, delete, parse_flag ), + struct dynui_options, delete, parse_flag ), }; -/** "menu" command descriptor */ -static struct command_descriptor menu_cmd = - COMMAND_DESC ( struct menu_options, menu_opts, 0, MAX_ARGUMENTS, +/** "dynui" command descriptor */ +static struct command_descriptor dynui_cmd = + COMMAND_DESC ( struct dynui_options, dynui_opts, 0, MAX_ARGUMENTS, "[<title>]" ); /** - * The "menu" command + * The "dynui" command * * @v argc Argument count * @v argv Argument list * @ret rc Return status code */ -static int menu_exec ( int argc, char **argv ) { - struct menu_options opts; - struct menu *menu; +static int dynui_exec ( int argc, char **argv ) { + struct dynui_options opts; + struct dynamic_ui *dynui; char *title; int rc; /* Parse options */ - if ( ( rc = parse_options ( argc, argv, &menu_cmd, &opts ) ) != 0 ) + if ( ( rc = parse_options ( argc, argv, &dynui_cmd, &opts ) ) != 0 ) goto err_parse_options; /* Parse title */ @@ -87,21 +87,21 @@ static int menu_exec ( int argc, char **argv ) { goto err_parse_title; } - /* Create menu */ - menu = create_menu ( opts.name, title ); - if ( ! menu ) { + /* Create dynamic user interface */ + dynui = create_dynui ( opts.name, title ); + if ( ! dynui ) { rc = -ENOMEM; - goto err_create_menu; + goto err_create_dynui; } - /* Destroy menu, if applicable */ + /* Destroy dynamic user interface, if applicable */ if ( opts.delete ) - destroy_menu ( menu ); + destroy_dynui ( dynui ); /* Success */ rc = 0; - err_create_menu: + err_create_dynui: free ( title ); err_parse_title: err_parse_options: @@ -110,8 +110,8 @@ static int menu_exec ( int argc, char **argv ) { /** "item" options */ struct item_options { - /** Menu name */ - char *menu; + /** Dynamic user interface name */ + char *dynui; /** Shortcut key */ unsigned int key; /** Use as default */ @@ -123,7 +123,7 @@ struct item_options { /** "item" option list */ static struct option_descriptor item_opts[] = { OPTION_DESC ( "menu", 'm', required_argument, - struct item_options, menu, parse_string ), + struct item_options, dynui, parse_string ), OPTION_DESC ( "key", 'k', required_argument, struct item_options, key, parse_key ), OPTION_DESC ( "default", 'd', no_argument, @@ -146,8 +146,8 @@ static struct command_descriptor item_cmd = */ static int item_exec ( int argc, char **argv ) { struct item_options opts; - struct menu *menu; - struct menu_item *item; + struct dynamic_ui *dynui; + struct dynamic_item *item; char *name = NULL; char *text = NULL; int rc; @@ -169,23 +169,23 @@ static int item_exec ( int argc, char **argv ) { } } - /* Identify menu */ - if ( ( rc = parse_menu ( opts.menu, &menu ) ) != 0 ) - goto err_parse_menu; + /* Identify dynamic user interface */ + if ( ( rc = parse_dynui ( opts.dynui, &dynui ) ) != 0 ) + goto err_parse_dynui; - /* Add menu item */ - item = add_menu_item ( menu, name, ( text ? text : "" ), - opts.key, opts.is_default ); + /* Add dynamic user interface item */ + item = add_dynui_item ( dynui, name, ( text ? text : "" ), + opts.key, opts.is_default ); if ( ! item ) { rc = -ENOMEM; - goto err_add_menu_item; + goto err_add_dynui_item; } /* Success */ rc = 0; - err_add_menu_item: - err_parse_menu: + err_add_dynui_item: + err_parse_dynui: free ( text ); err_parse_text: err_parse_options: @@ -194,20 +194,20 @@ static int item_exec ( int argc, char **argv ) { /** "choose" options */ struct choose_options { - /** Menu name */ - char *menu; + /** Dynamic user interface name */ + char *dynui; /** Timeout */ unsigned long timeout; /** Default selection */ char *select; - /** Keep menu */ + /** Keep dynamic user interface */ int keep; }; /** "choose" option list */ static struct option_descriptor choose_opts[] = { OPTION_DESC ( "menu", 'm', required_argument, - struct choose_options, menu, parse_string ), + struct choose_options, dynui, parse_string ), OPTION_DESC ( "default", 'd', required_argument, struct choose_options, select, parse_string ), OPTION_DESC ( "timeout", 't', required_argument, @@ -230,8 +230,8 @@ static struct command_descriptor choose_cmd = static int choose_exec ( int argc, char **argv ) { struct choose_options opts; struct named_setting setting; - struct menu *menu; - struct menu_item *item; + struct dynamic_ui *dynui; + struct dynamic_item *item; int rc; /* Parse options */ @@ -243,12 +243,13 @@ static int choose_exec ( int argc, char **argv ) { &setting ) ) != 0 ) goto err_parse_setting; - /* Identify menu */ - if ( ( rc = parse_menu ( opts.menu, &menu ) ) != 0 ) - goto err_parse_menu; + /* Identify dynamic user interface */ + if ( ( rc = parse_dynui ( opts.dynui, &dynui ) ) != 0 ) + goto err_parse_dynui; - /* Show menu */ - if ( ( rc = show_menu ( menu, opts.timeout, opts.select, &item ) ) != 0) + /* Show as menu */ + if ( ( rc = show_menu ( dynui, opts.timeout, opts.select, + &item ) ) != 0 ) goto err_show_menu; /* Apply default type if necessary */ @@ -268,20 +269,20 @@ static int choose_exec ( int argc, char **argv ) { err_store: err_show_menu: - /* Destroy menu, if applicable */ + /* Destroy dynamic user interface, if applicable */ if ( ! opts.keep ) - destroy_menu ( menu ); - err_parse_menu: + destroy_dynui ( dynui ); + err_parse_dynui: err_parse_setting: err_parse_options: return rc; } -/** Menu commands */ -struct command menu_commands[] __command = { +/** Dynamic user interface commands */ +struct command dynui_commands[] __command = { { .name = "menu", - .exec = menu_exec, + .exec = dynui_exec, }, { .name = "item", diff --git a/src/hci/tui/menu_ui.c b/src/hci/tui/menu_ui.c index 067e2d8ca..ab4e602a7 100644 --- a/src/hci/tui/menu_ui.c +++ b/src/hci/tui/menu_ui.c @@ -37,7 +37,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include <ipxe/console.h> #include <ipxe/ansicol.h> #include <ipxe/jumpscroll.h> -#include <ipxe/menu.h> +#include <ipxe/dynui.h> /* Screen layout */ #define TITLE_ROW 1U @@ -49,8 +49,8 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); /** A menu user interface */ struct menu_ui { - /** Menu */ - struct menu *menu; + /** Dynamic user interface */ + struct dynamic_ui *dynui; /** Jump scroller */ struct jump_scroller scroll; /** Timeout (0=indefinite) */ @@ -60,14 +60,15 @@ struct menu_ui { /** * Return a numbered menu item * - * @v menu Menu + * @v dynui Dynamic user interface * @v index Index * @ret item Menu item, or NULL */ -static struct menu_item * menu_item ( struct menu *menu, unsigned int index ) { - struct menu_item *item; +static struct dynamic_item * menu_item ( struct dynamic_ui *dynui, + unsigned int index ) { + struct dynamic_item *item; - list_for_each_entry ( item, &menu->items, list ) { + list_for_each_entry ( item, &dynui->items, list ) { if ( index-- == 0 ) return item; } @@ -82,7 +83,7 @@ static struct menu_item * menu_item ( struct menu *menu, unsigned int index ) { * @v index Index */ static void draw_menu_item ( struct menu_ui *ui, unsigned int index ) { - struct menu_item *item; + struct dynamic_item *item; unsigned int row_offset; char buf[ MENU_COLS + 1 /* NUL */ ]; char timeout_buf[6]; /* "(xxx)" + NUL */ @@ -95,7 +96,7 @@ static void draw_menu_item ( struct menu_ui *ui, unsigned int index ) { move ( ( MENU_ROW + row_offset ), MENU_COL ); /* Get menu item */ - item = menu_item ( ui->menu, index ); + item = menu_item ( ui->dynui, index ); if ( item ) { /* Draw separators in a different colour */ @@ -171,8 +172,8 @@ static void draw_menu_items ( struct menu_ui *ui ) { * @ret selected Selected item * @ret rc Return status code */ -static int menu_loop ( struct menu_ui *ui, struct menu_item **selected ) { - struct menu_item *item; +static int menu_loop ( struct menu_ui *ui, struct dynamic_item **selected ) { + struct dynamic_item *item; unsigned long timeout; unsigned int previous; unsigned int move; @@ -217,7 +218,7 @@ static int menu_loop ( struct menu_ui *ui, struct menu_item **selected ) { break; default: i = 0; - list_for_each_entry ( item, &ui->menu->items, + list_for_each_entry ( item, &ui->dynui->items, list ) { if ( ! ( item->shortcut && ( item->shortcut == key ) ) ) { @@ -238,7 +239,7 @@ static int menu_loop ( struct menu_ui *ui, struct menu_item **selected ) { /* Move selection, if applicable */ while ( move ) { move = jump_scroll_move ( &ui->scroll, move ); - item = menu_item ( ui->menu, ui->scroll.current ); + item = menu_item ( ui->dynui, ui->scroll.current ); if ( item->name ) break; } @@ -252,7 +253,7 @@ static int menu_loop ( struct menu_ui *ui, struct menu_item **selected ) { } /* Record selection */ - item = menu_item ( ui->menu, ui->scroll.current ); + item = menu_item ( ui->dynui, ui->scroll.current ); assert ( item != NULL ); assert ( item->name != NULL ); *selected = item; @@ -265,14 +266,14 @@ static int menu_loop ( struct menu_ui *ui, struct menu_item **selected ) { /** * Show menu * - * @v menu Menu + * @v dynui Dynamic user interface * @v timeout Timeout period, in ticks (0=indefinite) * @ret selected Selected item * @ret rc Return status code */ -int show_menu ( struct menu *menu, unsigned long timeout, - const char *select, struct menu_item **selected ) { - struct menu_item *item; +int show_menu ( struct dynamic_ui *dynui, unsigned long timeout, + const char *select, struct dynamic_item **selected ) { + struct dynamic_item *item; struct menu_ui ui; char buf[ MENU_COLS + 1 /* NUL */ ]; int named_count = 0; @@ -280,10 +281,10 @@ int show_menu ( struct menu *menu, unsigned long timeout, /* Initialise UI */ memset ( &ui, 0, sizeof ( ui ) ); - ui.menu = menu; + ui.dynui = dynui; ui.scroll.rows = MENU_ROWS; ui.timeout = timeout; - list_for_each_entry ( item, &menu->items, list ) { + list_for_each_entry ( item, &dynui->items, list ) { if ( item->name ) { if ( ! named_count ) ui.scroll.current = ui.scroll.count; @@ -315,7 +316,7 @@ int show_menu ( struct menu *menu, unsigned long timeout, /* Draw initial content */ attron ( A_BOLD ); - snprintf ( buf, sizeof ( buf ), "%s", ui.menu->title ); + snprintf ( buf, sizeof ( buf ), "%s", ui.dynui->title ); mvprintw ( TITLE_ROW, ( ( COLS - strlen ( buf ) ) / 2 ), "%s", buf ); attroff ( A_BOLD ); jump_scroll ( &ui.scroll ); |