[form] Add support for dynamically created interactive forms

Add support for presenting a dynamic user interface as an interactive
form, alongside the existing support for presenting a dynamic user
interface as a menu.

An interactive form may be used to allow a user to input (or edit)
values for multiple settings on a single screen, as a user-friendly
alternative to prompting for setting values via the "read" command.

In the present implementation, all input fields must fit on a single
screen (with no scrolling), and the only supported widget type is an
editable text box.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2024-05-31 10:10:53 +01:00
parent 1c3c5e2b22
commit f417f0b6a5
6 changed files with 616 additions and 0 deletions

View File

@@ -227,6 +227,9 @@ REQUIRE_OBJECT ( sanboot_cmd );
#ifdef MENU_CMD
REQUIRE_OBJECT ( dynui_cmd );
#endif
#ifdef FORM_CMD
REQUIRE_OBJECT ( dynui_cmd );
#endif
#ifdef LOGIN_CMD
REQUIRE_OBJECT ( login_cmd );
#endif

View File

@@ -145,6 +145,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#define DHCP_CMD /* DHCP management commands */
#define SANBOOT_CMD /* SAN boot commands */
#define MENU_CMD /* Menu commands */
#define FORM_CMD /* Form commands */
#define LOGIN_CMD /* Login command */
#define SYNC_CMD /* Sync command */
#define SHELL_CMD /* Shell command */