#define _PB_NC_MENU_H
#include <assert.h>
-#include <menu.h>
+
+#include <linux/input.h> /* This must be included before ncurses.h */
+#if defined HAVE_NCURSESW_MENU_H
+# include <ncursesw/menu.h>
+#elif defined HAVE_NCURSES_MENU_H
+# include <ncurses/menu.h>
+#elif defined HAVE_MENU_H
+# include <menu.h>
+#else
+# error "Curses menu.h not found."
+#endif
#include "log/log.h"
-#include "pb-protocol/pb-protocol.h"
+#include "types/types.h"
#include "nc-scr.h"
struct pmenu;
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);
};
struct pmenu_item *pmenu_item_alloc(struct pmenu *menu);
struct pmenu_item *pmenu_item_setup(struct pmenu *menu, struct pmenu_item *i,
- unsigned int index, const char *name, const char *description);
+ unsigned int index, const char *name);
+int pmenu_item_replace(struct pmenu_item *i, const char *name);
void pmenu_item_delete(struct pmenu_item *item);
static inline struct pmenu_item *pmenu_item_from_arg(void *arg)
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, const char *description)
+ unsigned int index, const char *name)
{
- return pmenu_item_setup(menu, pmenu_item_alloc(menu), index, name,
- description);
+ return pmenu_item_setup(menu, pmenu_item_alloc(menu), index, name);
}
/**
unsigned int insert_pt;
int (*hot_key)(struct pmenu *menu, struct pmenu_item *item, int c);
void (*on_exit)(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