bemenu 1.0.0
Dynamic menu library and client program inspired by dmenu
bemenu.h
Go to the documentation of this file.
1 #ifndef _BEMENU_H_
2 #define _BEMENU_H_
3 
10 struct bm_renderer;
11 struct bm_menu;
12 struct bm_item;
13 
14 #include <stdbool.h>
15 #include <stdint.h>
16 
54 bool bm_init(void);
55 
62 const struct bm_renderer** bm_get_renderers(uint32_t *out_nmemb);
63 
77 const char* bm_version(void);
78 
90 enum bm_priorty {
95 
100 };
101 
108 const char* bm_renderer_get_name(const struct bm_renderer *renderer);
109 
116 enum bm_priorty bm_renderer_get_priorty(const struct bm_renderer *renderer);
117 
132  BM_FILTER_MODE_DMENU,
133  BM_FILTER_MODE_DMENU_CASE_INSENSITIVE,
134  BM_FILTER_MODE_LAST
135 };
136 
148  BM_SCROLLBAR_NONE,
149  BM_SCROLLBAR_ALWAYS,
150  BM_SCROLLBAR_AUTOHIDE,
151  BM_SCROLLBAR_LAST,
152 };
153 
162  BM_RUN_RESULT_RUNNING,
163  BM_RUN_RESULT_SELECTED,
164  BM_RUN_RESULT_CANCEL,
165 };
166 
172 enum bm_key {
173  BM_KEY_NONE,
174  BM_KEY_UP,
175  BM_KEY_DOWN,
176  BM_KEY_LEFT,
177  BM_KEY_RIGHT,
178  BM_KEY_HOME,
179  BM_KEY_END,
180  BM_KEY_PAGE_UP,
181  BM_KEY_PAGE_DOWN,
182  BM_KEY_SHIFT_PAGE_UP,
183  BM_KEY_SHIFT_PAGE_DOWN,
184  BM_KEY_BACKSPACE,
185  BM_KEY_DELETE,
186  BM_KEY_LINE_DELETE_LEFT,
187  BM_KEY_LINE_DELETE_RIGHT,
188  BM_KEY_WORD_DELETE,
189  BM_KEY_TAB,
190  BM_KEY_SHIFT_TAB,
191  BM_KEY_ESCAPE,
192  BM_KEY_RETURN,
193  BM_KEY_SHIFT_RETURN,
194  BM_KEY_CONTROL_RETURN,
195  BM_KEY_UNICODE,
196  BM_KEY_LAST
197 };
198 
204 enum bm_color {
205  BM_COLOR_TITLE_BG,
206  BM_COLOR_TITLE_FG,
207  BM_COLOR_FILTER_BG,
208  BM_COLOR_FILTER_FG,
209  BM_COLOR_ITEM_BG,
210  BM_COLOR_ITEM_FG,
211  BM_COLOR_HIGHLIGHTED_BG,
212  BM_COLOR_HIGHLIGHTED_FG,
213  BM_COLOR_SELECTED_BG,
214  BM_COLOR_SELECTED_FG,
215  BM_COLOR_SCROLLBAR_BG,
216  BM_COLOR_SCROLLBAR_FG,
217  BM_COLOR_LAST
218 };
219 
233 struct bm_menu* bm_menu_new(const char *renderer);
234 
240 void bm_menu_free(struct bm_menu *menu);
241 
247 void bm_menu_free_items(struct bm_menu *menu);
248 
262 void bm_menu_set_userdata(struct bm_menu *menu, void *userdata);
263 
270 void* bm_menu_get_userdata(struct bm_menu *menu);
271 
279 void bm_menu_set_prefix(struct bm_menu *menu, const char *prefix);
280 
287 const char* bm_menu_get_prefix(struct bm_menu *menu);
288 
295 void bm_menu_set_filter(struct bm_menu *menu, const char *filter);
296 
303 const char* bm_menu_get_filter(struct bm_menu *menu);
304 
311 void bm_menu_set_filter_mode(struct bm_menu *menu, enum bm_filter_mode mode);
312 
319 enum bm_filter_mode bm_menu_get_filter_mode(const struct bm_menu *menu);
320 
328 void bm_menu_set_lines(struct bm_menu *menu, uint32_t lines);
329 
336 uint32_t bm_menu_get_lines(struct bm_menu *menu);
337 
344 void bm_menu_set_wrap(struct bm_menu *menu, bool wrap);
345 
352 bool bm_menu_get_wrap(const struct bm_menu *menu);
353 
361 bool bm_menu_set_title(struct bm_menu *menu, const char *title);
362 
369 const char* bm_menu_get_title(const struct bm_menu *menu);
370 
378 bool bm_menu_set_font(struct bm_menu *menu, const char *font);
379 
386 const char* bm_menu_get_font(const struct bm_menu *menu);
387 
396 bool bm_menu_set_color(struct bm_menu *menu, enum bm_color color, const char *hex);
397 
405 const char* bm_menu_get_color(const struct bm_menu *menu, enum bm_color color);
406 
413 void bm_menu_set_scrollbar(struct bm_menu *menu, enum bm_scrollbar_mode mode);
414 
421 enum bm_scrollbar_mode bm_menu_get_scrollbar(struct bm_menu *menu);
422 
430 void bm_menu_set_bottom(struct bm_menu *menu, bool bottom);
431 
438 bool bm_menu_get_bottom(struct bm_menu *menu);
439 
448 void bm_menu_set_monitor(struct bm_menu *menu, uint32_t monitor);
449 
456 uint32_t bm_menu_get_monitor(struct bm_menu *menu);
457 
465 void bm_menu_grab_keyboard(struct bm_menu *menu, bool grab);
466 
473 bool bm_menu_is_keyboard_grabbed(struct bm_menu *menu);
474 
489 bool bm_menu_add_item_at(struct bm_menu *menu, struct bm_item *item, uint32_t index);
490 
498 bool bm_menu_add_item(struct bm_menu *menu, struct bm_item *item);
499 
509 bool bm_menu_remove_item_at(struct bm_menu *menu, uint32_t index);
510 
520 bool bm_menu_remove_item(struct bm_menu *menu, struct bm_item *item);
521 
529 bool bm_menu_set_highlighted_index(struct bm_menu *menu, uint32_t index);
530 
538 bool bm_menu_set_highlighted_item(struct bm_menu *menu, struct bm_item *item);
539 
548 struct bm_item* bm_menu_get_highlighted_item(const struct bm_menu *menu);
549 
558 bool bm_menu_set_selected_items(struct bm_menu *menu, struct bm_item **items, uint32_t nmemb);
559 
569 struct bm_item** bm_menu_get_selected_items(const struct bm_menu *menu, uint32_t *out_nmemb);
570 
582 bool bm_menu_set_items(struct bm_menu *menu, const struct bm_item **items, uint32_t nmemb);
583 
593 struct bm_item** bm_menu_get_items(const struct bm_menu *menu, uint32_t *out_nmemb);
594 
605 struct bm_item** bm_menu_get_filtered_items(const struct bm_menu *menu, uint32_t *out_nmemb);
606 
620 void bm_menu_render(const struct bm_menu *menu);
621 
631 void bm_menu_filter(struct bm_menu *menu);
632 
642 enum bm_key bm_menu_poll_key(struct bm_menu *menu, uint32_t *out_unicode);
643 
652 enum bm_run_result bm_menu_run_with_key(struct bm_menu *menu, enum bm_key key, uint32_t unicode);
653 
672 struct bm_item* bm_item_new(const char *text);
673 
679 void bm_item_free(struct bm_item *item);
680 
694 void bm_item_set_userdata(struct bm_item *item, void *userdata);
695 
702 void* bm_item_get_userdata(struct bm_item *item);
703 
711 bool bm_item_set_text(struct bm_item *item, const char *text);
712 
719 const char* bm_item_get_text(const struct bm_item *item);
720 
725 #endif /* _BEMENU_H_ */
726 
727 /* vim: set ts=8 sw=4 tw=0 :*/
bool bm_menu_set_title(struct bm_menu *menu, const char *title)
bool bm_menu_set_color(struct bm_menu *menu, enum bm_color color, const char *hex)
const char * bm_menu_get_prefix(struct bm_menu *menu)
void bm_item_free(struct bm_item *item)
bm_filter_mode
Definition: bemenu.h:131
bm_key
Definition: bemenu.h:172
struct bm_item * bm_item_new(const char *text)
struct bm_item ** bm_menu_get_filtered_items(const struct bm_menu *menu, uint32_t *out_nmemb)
enum bm_priorty bm_renderer_get_priorty(const struct bm_renderer *renderer)
bm_run_result
Definition: bemenu.h:161
void bm_menu_filter(struct bm_menu *menu)
bool bm_menu_remove_item_at(struct bm_menu *menu, uint32_t index)
void bm_item_set_userdata(struct bm_item *item, void *userdata)
const char * bm_item_get_text(const struct bm_item *item)
bool bm_menu_get_wrap(const struct bm_menu *menu)
const char * bm_menu_get_title(const struct bm_menu *menu)
enum bm_key bm_menu_poll_key(struct bm_menu *menu, uint32_t *out_unicode)
void bm_menu_free_items(struct bm_menu *menu)
bool bm_menu_remove_item(struct bm_menu *menu, struct bm_item *item)
enum bm_filter_mode bm_menu_get_filter_mode(const struct bm_menu *menu)
struct bm_item ** bm_menu_get_items(const struct bm_menu *menu, uint32_t *out_nmemb)
const struct bm_renderer ** bm_get_renderers(uint32_t *out_nmemb)
void bm_menu_set_monitor(struct bm_menu *menu, uint32_t monitor)
struct bm_item * bm_menu_get_highlighted_item(const struct bm_menu *menu)
bool bm_menu_set_items(struct bm_menu *menu, const struct bm_item **items, uint32_t nmemb)
bool bm_init(void)
void bm_menu_set_lines(struct bm_menu *menu, uint32_t lines)
void bm_menu_free(struct bm_menu *menu)
enum bm_run_result bm_menu_run_with_key(struct bm_menu *menu, enum bm_key key, uint32_t unicode)
void bm_menu_set_bottom(struct bm_menu *menu, bool bottom)
const char * bm_version(void)
bool bm_menu_is_keyboard_grabbed(struct bm_menu *menu)
bm_priorty
Definition: bemenu.h:90
Definition: bemenu.h:94
const char * bm_renderer_get_name(const struct bm_renderer *renderer)
void bm_menu_render(const struct bm_menu *menu)
uint32_t bm_menu_get_lines(struct bm_menu *menu)
void bm_menu_set_userdata(struct bm_menu *menu, void *userdata)
const char * bm_menu_get_filter(struct bm_menu *menu)
bm_color
Definition: bemenu.h:204
bool bm_menu_set_highlighted_index(struct bm_menu *menu, uint32_t index)
struct bm_item ** bm_menu_get_selected_items(const struct bm_menu *menu, uint32_t *out_nmemb)
bool bm_item_set_text(struct bm_item *item, const char *text)
bool bm_menu_add_item_at(struct bm_menu *menu, struct bm_item *item, uint32_t index)
uint32_t bm_menu_get_monitor(struct bm_menu *menu)
void bm_menu_set_filter(struct bm_menu *menu, const char *filter)
void * bm_item_get_userdata(struct bm_item *item)
const char * bm_menu_get_font(const struct bm_menu *menu)
void * bm_menu_get_userdata(struct bm_menu *menu)
void bm_menu_set_prefix(struct bm_menu *menu, const char *prefix)
void bm_menu_set_filter_mode(struct bm_menu *menu, enum bm_filter_mode mode)
const char * bm_menu_get_color(const struct bm_menu *menu, enum bm_color color)
void bm_menu_grab_keyboard(struct bm_menu *menu, bool grab)
Definition: bemenu.h:99
bool bm_menu_set_font(struct bm_menu *menu, const char *font)
struct bm_menu * bm_menu_new(const char *renderer)
void bm_menu_set_wrap(struct bm_menu *menu, bool wrap)
bool bm_menu_set_highlighted_item(struct bm_menu *menu, struct bm_item *item)
enum bm_scrollbar_mode bm_menu_get_scrollbar(struct bm_menu *menu)
void bm_menu_set_scrollbar(struct bm_menu *menu, enum bm_scrollbar_mode mode)
bool bm_menu_add_item(struct bm_menu *menu, struct bm_item *item)
bm_scrollbar_mode
Definition: bemenu.h:147
bool bm_menu_set_selected_items(struct bm_menu *menu, struct bm_item **items, uint32_t nmemb)
bool bm_menu_get_bottom(struct bm_menu *menu)