* 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>
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);
-
- nc_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);
- nc_scr_post(&menu->scr);
-
- return 0;
-}
-
/**
* pmenu_move_cursor - Move the cursor.
* @req: An ncurses request or char to send to menu_driver().
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);
if (menu->on_new)
menu->on_new(menu);
break;
+ case ' ':
case '\n':
case '\r':
if (item->on_execute)
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;