summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2013-12-13 15:15:06 +0800
committerJeremy Kerr <jk@ozlabs.org>2014-01-31 08:46:34 +0800
commit649de37c20f56749ff02c751656787bf2c3d0024 (patch)
tree2c38bf22cab60882e265327d9bd4c110544e8a9c /ui
parent6e46a2e3a2d69e1982ed531ed69def8f9a5e8af1 (diff)
downloadpetitboot-649de37c20f56749ff02c751656787bf2c3d0024.zip
petitboot-649de37c20f56749ff02c751656787bf2c3d0024.tar.gz
ui/ncurses: Add help facility to text screens
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'ui')
-rw-r--r--ui/ncurses/nc-textscreen.c13
-rw-r--r--ui/ncurses/nc-textscreen.h4
2 files changed, 17 insertions, 0 deletions
diff --git a/ui/ncurses/nc-textscreen.c b/ui/ncurses/nc-textscreen.c
index 891c8a1..d5b894e 100644
--- a/ui/ncurses/nc-textscreen.c
+++ b/ui/ncurses/nc-textscreen.c
@@ -150,6 +150,11 @@ void text_screen_process_key(struct nc_scr *scr, int key)
case KEY_UP:
text_screen_scroll(screen, key);
break;
+ case 'h':
+ if (screen->help_text)
+ cui_show_help(screen->cui, screen->help_title,
+ screen->help_text);
+ break;
default:
break;
}
@@ -166,6 +171,14 @@ struct nc_scr *text_screen_scr(struct text_screen *screen)
return &screen->scr;
}
+void text_screen_set_help(struct text_screen *screen, const char *title,
+ const char *text)
+{
+ screen->help_title = title;
+ screen->help_text = text;
+ screen->scr.frame.help = "x=exit h=help";
+}
+
static int text_screen_post(struct nc_scr *scr)
{
nc_scr_frame_draw(scr);
diff --git a/ui/ncurses/nc-textscreen.h b/ui/ncurses/nc-textscreen.h
index 8afcf49..72b8c8a 100644
--- a/ui/ncurses/nc-textscreen.h
+++ b/ui/ncurses/nc-textscreen.h
@@ -28,6 +28,8 @@ struct text_screen {
int n_lines;
int n_alloc_lines;
int scroll_y;
+ const char *help_title;
+ const char *help_text;
void (*on_exit)(struct cui *);
};
@@ -42,6 +44,8 @@ void text_screen_clear(struct text_screen *screen);
void text_screen_append_line(struct text_screen *screen,
const char *fmt, ...) __attribute__((format(printf, 2, 3)));
void text_screen_set_text(struct text_screen *screen, const char *text);
+void text_screen_set_help(struct text_screen *screen, const char *title,
+ const char *text);
/* interaction */
void text_screen_process_key(struct nc_scr *scr, int key);
OpenPOWER on IntegriCloud