#if !defined(_PB_NC_MENU_H)
#define _PB_NC_MENU_H
+#include <assert.h>
+
#include <linux/input.h> /* This must be included before ncurses.h */
#if defined HAVE_NCURSESW_MENU_H
# include <ncursesw/menu.h>
ITEM *nci;
struct pmenu *pmenu;
void *data;
- int (*on_edit)(struct pmenu_item *item);
+ void (*on_edit)(struct pmenu_item *item);
int (*on_execute)(struct pmenu_item *item);
};
return item;
}
+static inline struct cui_opt_data *cod_from_item(struct pmenu_item *item)
+{
+ return item->data;
+}
+
static inline struct pmenu_item *pmenu_item_init(struct pmenu *menu,
unsigned int index, const char *name)
{
- return pmenu_item_setup(menu, pmenu_item_alloc(menu), index, name);
+ struct pmenu_item *item = pmenu_item_alloc(menu);
+
+ if (pmenu_item_setup(menu, item, index, name)) {
+ talloc_free(item);
+ item = NULL;
+ }
+
+ return item;
}
/**
ITEM **items;
unsigned int item_count;
unsigned int insert_pt;
+ const char *help_title;
+ const char *help_text;
int (*hot_key)(struct pmenu *menu, struct pmenu_item *item, int c);
void (*on_exit)(struct pmenu *menu);
- void (*on_open)(struct pmenu *menu);
+ void (*on_new)(struct pmenu *menu);
};
struct pmenu *pmenu_init(void *ui_ctx, unsigned int item_count,
/* debug routines */
-#if defined(DEBUG)
-enum {do_debug = 1};
-#else
-enum {do_debug = 0};
-#endif
-
static inline void pmenu_dump_item(const ITEM *item)
{
- if (do_debug)
- pb_log("%p %s\n", item, (item ? item->name.str : "(null)"));
+ pb_debug("%p %s\n", item, (item ? item->name.str : "(null)"));
}
static inline void pmenu_dump_items(ITEM *const *items, unsigned int count)
{
unsigned int i;
- if (do_debug)
- for (i = 0; i < count; i++)
- pb_log("%u: %p %s\n", i, items[i],
- (items[i] ? items[i]->name.str : "(null)"));
+ for (i = 0; i < count; i++)
+ pb_debug("%u: %p %s\n", i, items[i],
+ (items[i] ? items[i]->name.str : "(null)"));
}
#endif