* 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 <assert.h>
#include <errno.h>
#include "log/log.h"
#include "talloc/talloc.h"
#include "ui/common/ui-system.h"
+#include "nc-cui.h"
#include "nc-menu.h"
/**
i->pmenu = menu;
i->nci = new_item(name, NULL);
- if (!i->nci) {
- talloc_free(i);
+ if (!i->nci)
return NULL;
- }
set_item_userptr(i->nci, i);
return -1;
}
-/**
- * pmenu_item_replace - Replace the menu item with a new one.
- *
- * Use this routine to change a menu item's text.
- */
-
-int pmenu_item_replace(struct pmenu_item *i, const char *name)
-{
- struct pmenu *menu;
- ITEM *nci;
- int index;
-
- assert(name);
- assert(i->nci);
-
- menu = i->pmenu;
- index = pmenu_item_get_index(i);
-
- if (index < 0) {
- assert(0 && "get_index failed");
- return -1;
- }
-
- nci = new_item(name, NULL);
-
- if (!nci) {
- assert(0 && "new_item failed");
- return -1;
- }
-
- set_item_userptr(nci, i);
-
- menu->scr.unpost(&menu->scr);
- set_menu_items(menu->ncm, NULL);
-
- // FIXME: need to assure item name is a talloc string.
- /* talloc_free((char *)item_name(i->nci)); */
-
- free_item(i->nci);
- menu->items[index] = nci;
- i->nci = nci;
-
- set_menu_items(menu->ncm, menu->items);
- menu->scr.post(&menu->scr);
-
- return 0;
-}
-
/**
* pmenu_move_cursor - Move the cursor.
* @req: An ncurses request or char to send to menu_driver().
switch (key) {
case 27: /* ESC */
+ case 'x':
if (menu->on_exit)
menu->on_exit(menu);
nc_flush_keys();
case KEY_UP:
pmenu_move_cursor(menu, REQ_UP_ITEM);
break;
+ case KEY_BTAB:
+ pmenu_move_cursor(menu, REQ_PREV_ITEM);
+ break;
case KEY_DOWN:
pmenu_move_cursor(menu, REQ_DOWN_ITEM);
break;
+ case '\t':
+ pmenu_move_cursor(menu, REQ_NEXT_ITEM);
+ break;
case 'e':
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;
+ case KEY_F(1):
+ 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;
/* Makes menu scrollable. */
set_menu_format(menu->ncm, LINES - nc_scr_frame_lines, 1);
+ set_menu_grey(menu->ncm, A_NORMAL);
+
return 0;
}