X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=ui%2Fncurses%2Fnc-menu.c;h=eb7cfdff0d942562333a664dfe145b4555e03e6b;hp=0612d8a74bb11d88444f16b098268d78468ba9ed;hb=97cf71f1f2f07210bc160d1f04c0b13d5bcd5b74;hpb=a610837ff38f5cc80bcbad465a80ab920e67927d diff --git a/ui/ncurses/nc-menu.c b/ui/ncurses/nc-menu.c index 0612d8a..eb7cfdf 100644 --- a/ui/ncurses/nc-menu.c +++ b/ui/ncurses/nc-menu.c @@ -16,6 +16,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "config.h" + #define _GNU_SOURCE #include @@ -25,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" /** @@ -160,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. @@ -171,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; } @@ -203,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(); @@ -230,16 +234,22 @@ static void pmenu_process_key(struct nc_scr *scr, int key) if (item->on_edit) item->on_edit(item); break; - case 'o': - DBGS("on_open: %p\n", menu->on_open); - if (menu->on_open) - menu->on_open(menu); + case 'n': + 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; default: menu_driver(menu->ncm, key); break; @@ -376,6 +386,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; }