[syslinux:master] menu: add MENU HELP
syslinux-bot for H. Peter Anvin
hpa at zytor.com
Sat Jun 26 20:30:06 PDT 2010
Commit-ID: d8d22408627466d2ae5e594062d7f650d4a48476
Gitweb: http://syslinux.zytor.com/commit/d8d22408627466d2ae5e594062d7f650d4a48476
Author: H. Peter Anvin <hpa at zytor.com>
AuthorDate: Sat, 26 Jun 2010 20:28:45 -0700
Committer: H. Peter Anvin <hpa at zytor.com>
CommitDate: Sat, 26 Jun 2010 20:28:45 -0700
menu: add MENU HELP
Add a feature to display fullscreen help via menu selection entry
(inspired by the Debian install disc menus.)
Signed-off-by: H. Peter Anvin <hpa at zytor.com>
---
com32/menu/menu.h | 2 ++
com32/menu/menumain.c | 7 +++++++
com32/menu/readconfig.c | 23 +++++++++++++++++++++++
doc/menu.txt | 15 +++++++++++----
4 files changed, 43 insertions(+), 4 deletions(-)
diff --git a/com32/menu/menu.h b/com32/menu/menu.h
index 63e1859..36c5669 100644
--- a/com32/menu/menu.h
+++ b/com32/menu/menu.h
@@ -49,6 +49,7 @@ enum menu_action {
MA_QUIT, /* Quit to CLI */
MA_EXIT, /* Exit to higher-level menu */
MA_EXIT_UNRES, /* Unresolved exit */
+ MA_HELP, /* Show help text */
};
struct menu_entry {
@@ -58,6 +59,7 @@ struct menu_entry {
const char *passwd;
char *helptext;
const char *cmdline;
+ const char *background;
struct menu *submenu;
struct menu_entry *next; /* Linked list of all labels across menus */
int entry; /* Entry number inside menu */
diff --git a/com32/menu/menumain.c b/com32/menu/menumain.c
index 5d85018..06725f3 100644
--- a/com32/menu/menumain.c
+++ b/com32/menu/menumain.c
@@ -921,6 +921,13 @@ static const char *run_menu(void)
clear = 1;
draw_row(entry - top + 4 + VSHIFT, -1, top, 0, 0);
break;
+ case MA_HELP:
+ key = show_message_file(me->cmdline, me->background);
+ /* If the exit was an F-key, display that help screen */
+ show_fkey(key);
+ done = 0;
+ clear = 1;
+ break;
default:
done = 0;
break;
diff --git a/com32/menu/readconfig.c b/com32/menu/readconfig.c
index 5685e6f..ca9c35e 100644
--- a/com32/menu/readconfig.c
+++ b/com32/menu/readconfig.c
@@ -372,6 +372,11 @@ static void record(struct menu *m, struct labeldata *ld, const char *append)
me->submenu = ld->submenu;
break;
+ case MA_HELP:
+ me->cmdline = refstr_get(ld->kernel);
+ me->background = refstr_get(ld->append);
+ break;
+
default:
break;
}
@@ -834,6 +839,24 @@ static void parse_config_file(FILE * f)
}
} else if (looking_at(p, "start")) {
start_menu = m;
+ } else if (looking_at(p, "help")) {
+ if (ld.label) {
+ ld.action = MA_HELP;
+ p = skipspace(p + 4);
+
+ refstr_put(ld.kernel);
+ ld.kernel = refdup_word(&p);
+
+ if (ld.append) {
+ refstr_put(ld.append);
+ ld.append = NULL;
+ }
+
+ if (*p) {
+ p = skipspace(p);
+ ld.append = refdup_word(&p); /* Background */
+ }
+ }
} else if ((ep = looking_at(p, "resolution"))) {
int x, y;
x = strtoul(ep, &ep, 0);
diff --git a/doc/menu.txt b/doc/menu.txt
index af93558..e2dd1e1 100644
--- a/doc/menu.txt
+++ b/doc/menu.txt
@@ -497,16 +497,23 @@ MENU VSHIFT 0
screen (25 for text mode, 28 for VESA graphics mode.)
-F1 textfile background
+F1 textfile [background]
...
-F12 textfile background
+F12 textfile [background]
Displays full-screen help (also available at the command line.)
The same control code sequences as in the command line
interface are supported, although some are ignored.
- Additionally, a second argument allows a different background
- image (see MENU BACKGROUND for supported formats) to be displayed.
+ Additionally, a optional second argument allows a different
+ background image (see MENU BACKGROUND for supported formats)
+ to be displayed.
+
+
+MENU HELP textfile [background]
+
+ Creates a menu entry which, when selected, displays
+ full-screen help in the same way as the F-key help.
The menu system honours the TIMEOUT command; if TIMEOUT is specified
More information about the Syslinux-commits
mailing list