Lines Matching refs:m
55 static inline void *menu_items_iter(struct menu *m, in menu_items_iter() argument
63 list_for_each_safe(pos, n, &m->items) { in menu_items_iter()
66 ret = callback(m, item, extra); in menu_items_iter()
80 static inline void *menu_item_print(struct menu *m, in menu_item_print() argument
84 if (!m->item_data_print) { in menu_item_print()
88 m->item_data_print(item->data); in menu_item_print()
98 static inline void *menu_item_destroy(struct menu *m, in menu_item_destroy() argument
114 static inline void menu_display(struct menu *m) in menu_display() argument
116 if (m->title) { in menu_display()
117 puts(m->title); in menu_display()
120 if (m->display_statusline) in menu_display()
121 m->display_statusline(m); in menu_display()
123 menu_items_iter(m, menu_item_print, NULL); in menu_display()
134 static inline void *menu_item_key_match(struct menu *m, in menu_item_key_match() argument
155 static inline struct menu_item *menu_item_by_key(struct menu *m, in menu_item_by_key() argument
158 return menu_items_iter(m, menu_item_key_match, item_key); in menu_item_by_key()
165 int menu_default_choice(struct menu *m, void **choice) in menu_default_choice() argument
167 if (m->default_item) { in menu_default_choice()
168 *choice = m->default_item->data; in menu_default_choice()
184 static inline int menu_interactive_choice(struct menu *m, void **choice) in menu_interactive_choice() argument
193 menu_display(m); in menu_interactive_choice()
195 if (!m->item_choice) { in menu_interactive_choice()
197 cbuf, m->timeout); in menu_interactive_choice()
200 choice_item = menu_item_by_key(m, cbuf); in menu_interactive_choice()
207 return menu_default_choice(m, choice); in menu_interactive_choice()
210 char *key = m->item_choice(m->item_choice_data); in menu_interactive_choice()
213 choice_item = menu_item_by_key(m, key); in menu_interactive_choice()
217 m->timeout = 0; in menu_interactive_choice()
237 int menu_default_set(struct menu *m, char *item_key) in menu_default_set() argument
241 if (!m) in menu_default_set()
244 item = menu_item_by_key(m, item_key); in menu_default_set()
249 m->default_item = item; in menu_default_set()
269 int menu_get_choice(struct menu *m, void **choice) in menu_get_choice() argument
271 if (!m || !choice) in menu_get_choice()
274 if (!m->prompt || m->item_cnt == 1) in menu_get_choice()
275 return menu_default_choice(m, choice); in menu_get_choice()
277 return menu_interactive_choice(m, choice); in menu_get_choice()
298 int menu_item_add(struct menu *m, char *item_key, void *item_data) in menu_item_add() argument
302 if (!m) in menu_item_add()
305 item = menu_item_by_key(m, item_key); in menu_item_add()
325 list_add_tail(&item->list, &m->items); in menu_item_add()
326 m->item_cnt++; in menu_item_add()
369 struct menu *m; in menu_create() local
371 m = malloc(sizeof *m); in menu_create()
373 if (!m) in menu_create()
376 m->default_item = NULL; in menu_create()
377 m->prompt = prompt; in menu_create()
378 m->timeout = timeout; in menu_create()
379 m->display_statusline = display_statusline; in menu_create()
380 m->item_data_print = item_data_print; in menu_create()
381 m->item_choice = item_choice; in menu_create()
382 m->item_choice_data = item_choice_data; in menu_create()
383 m->item_cnt = 0; in menu_create()
386 m->title = strdup(title); in menu_create()
387 if (!m->title) { in menu_create()
388 free(m); in menu_create()
392 m->title = NULL; in menu_create()
395 INIT_LIST_HEAD(&m->items); in menu_create()
397 return m; in menu_create()
407 int menu_destroy(struct menu *m) in menu_destroy() argument
409 if (!m) in menu_destroy()
412 menu_items_iter(m, menu_item_destroy, NULL); in menu_destroy()
414 if (m->title) in menu_destroy()
415 free(m->title); in menu_destroy()
417 free(m); in menu_destroy()