ui/ncurses: Add help facility to text screens
authorJeremy Kerr <jk@ozlabs.org>
Fri, 13 Dec 2013 07:15:06 +0000 (15:15 +0800)
committerJeremy Kerr <jk@ozlabs.org>
Fri, 31 Jan 2014 00:46:34 +0000 (08:46 +0800)
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
ui/ncurses/nc-textscreen.c
ui/ncurses/nc-textscreen.h

index 891c8a1c91939512ea5e47ffd50946d6d669de7e..d5b894e8f8c87d5868e1cdd44db52c56a7b975c8 100644 (file)
@@ -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);
index 8afcf495a126e2a3e57be193d0ffa20bffb1f153..72b8c8ae9972c0268fa2ebec653d6e2d3b2b6236 100644 (file)
@@ -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);