X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=ui%2Fncurses%2Fnc-menu.c;h=7533f30e4df8d96048ae6e33c559629af5a81aee;hp=073860bbfc772f0a9b59730111ddd1e382870d0b;hb=c6dad307d1c305015066e179d392fae695b8cf08;hpb=97c5d1f5d56d9ce890b4896ad7a9dc7ece7d4347 diff --git a/ui/ncurses/nc-menu.c b/ui/ncurses/nc-menu.c index 073860b..7533f30 100644 --- a/ui/ncurses/nc-menu.c +++ b/ui/ncurses/nc-menu.c @@ -16,9 +16,9 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#if defined(HAVE_CONFIG_H) #include "config.h" - -#define _GNU_SOURCE +#endif #include #include @@ -27,6 +27,7 @@ #include "log/log.h" #include "talloc/talloc.h" #include "ui/common/ui-system.h" +#include "nc-cui.h" #include "nc-menu.h" /** @@ -162,7 +163,7 @@ int pmenu_item_replace(struct pmenu_item *i, const char *name) set_item_userptr(nci, i); - menu->scr.unpost(&menu->scr); + nc_scr_unpost(&menu->scr); set_menu_items(menu->ncm, NULL); // FIXME: need to assure item name is a talloc string. @@ -173,7 +174,7 @@ int pmenu_item_replace(struct pmenu_item *i, const char *name) i->nci = nci; set_menu_items(menu->ncm, menu->items); - menu->scr.post(&menu->scr); + nc_scr_post(&menu->scr); return 0; } @@ -205,6 +206,7 @@ static void pmenu_process_key(struct nc_scr *scr, int key) switch (key) { case 27: /* ESC */ + case 'x': if (menu->on_exit) menu->on_exit(menu); nc_flush_keys(); @@ -233,14 +235,26 @@ static void pmenu_process_key(struct nc_scr *scr, int key) item->on_edit(item); break; case 'n': - if (menu->on_open) - menu->on_open(menu); + if (menu->on_new) + menu->on_new(menu); break; + case ' ': case '\n': case '\r': if (item->on_execute) item->on_execute(item); break; + case 'i': + cui_show_sysinfo(cui_from_arg(scr->ui_ctx)); + break; + case 'c': + cui_show_config(cui_from_arg(scr->ui_ctx)); + break; + case 'h': + if (menu->help_text) + cui_show_help(cui_from_arg(scr->ui_ctx), + menu->help_title, menu->help_text); + break; default: menu_driver(menu->ncm, key); break; @@ -377,6 +391,8 @@ int pmenu_setup(struct pmenu *menu) /* Makes menu scrollable. */ set_menu_format(menu->ncm, LINES - nc_scr_frame_lines, 1); + set_menu_grey(menu->ncm, A_NORMAL); + return 0; }