Lines Matching refs:menu

16 struct menu rootmenu;
17 static struct menu **last_entry_ptr;
22 void menu_warn(struct menu *menu, const char *fmt, ...) in menu_warn() argument
26 fprintf(stderr, "%s:%d:warning: ", menu->file->name, menu->lineno); in menu_warn()
50 struct menu *menu; in menu_add_entry() local
52 menu = xmalloc(sizeof(*menu)); in menu_add_entry()
53 memset(menu, 0, sizeof(*menu)); in menu_add_entry()
54 menu->sym = sym; in menu_add_entry()
55 menu->parent = current_menu; in menu_add_entry()
56 menu->file = current_file; in menu_add_entry()
57 menu->lineno = zconf_lineno(); in menu_add_entry()
59 *last_entry_ptr = menu; in menu_add_entry()
60 last_entry_ptr = &menu->next; in menu_add_entry()
61 current_entry = menu; in menu_add_entry()
66 struct menu *menu_add_menu(void) in menu_add_menu()
139 prop->menu = current_entry; in menu_add_prop()
172 struct menu *menu = current_entry; in menu_add_prompt() local
174 while ((menu = menu->parent) != NULL) { in menu_add_prompt()
177 if (!menu->visibility) in menu_add_prompt()
186 dup_expr = expr_copy(menu->visibility); in menu_add_prompt()
285 void menu_finalize(struct menu *parent) in menu_finalize()
287 struct menu *menu, *last_menu; in menu_finalize() local
303 for (menu = parent->list; menu; menu = menu->next) { in menu_finalize()
304 if (menu->sym && menu->sym->type != S_UNKNOWN) { in menu_finalize()
305 menu_set_type(menu->sym->type); in menu_finalize()
311 for (menu = parent->list; menu; menu = menu->next) { in menu_finalize()
312 current_entry = menu; in menu_finalize()
313 if (menu->sym && menu->sym->type == S_UNKNOWN) in menu_finalize()
330 for (menu = parent->list; menu; menu = menu->next) { in menu_finalize()
335 basedep = rewrite_m(menu->dep); in menu_finalize()
339 menu->dep = basedep; in menu_finalize()
341 if (menu->sym) in menu_finalize()
346 prop = menu->sym->prop; in menu_finalize()
352 prop = menu->prompt; in menu_finalize()
356 if (prop->menu != menu) in menu_finalize()
383 if (menu->sym && menu->sym->type != S_TRISTATE) in menu_finalize()
394 expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep))); in menu_finalize()
398 expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep))); in menu_finalize()
410 for (menu = parent->list; menu; menu = menu->next) in menu_finalize()
411 menu_finalize(menu); in menu_finalize()
441 for (menu = parent->next; menu; menu = menu->next) { in menu_finalize()
442 dep = menu->prompt ? menu->prompt->visible.expr : menu->dep; in menu_finalize()
472 menu_finalize(menu); in menu_finalize()
473 menu->parent = parent; in menu_finalize()
474 last_menu = menu; in menu_finalize()
485 for (menu = parent->list; menu; menu = menu->next) { in menu_finalize()
487 menu->sym && !sym_is_choice_value(menu->sym)) { in menu_finalize()
488 current_entry = menu; in menu_finalize()
489 menu->sym->flags |= SYMBOL_CHOICEVAL; in menu_finalize()
490 if (!menu->prompt) in menu_finalize()
491 menu_warn(menu, "choice value must have a prompt"); in menu_finalize()
492 for (prop = menu->sym->prop; prop; prop = prop->next) { in menu_finalize()
496 if (prop->menu == menu) in menu_finalize()
499 prop->menu->parent->sym != sym) in menu_finalize()
508 if (sym->type == S_TRISTATE && menu->sym->type != S_TRISTATE) { in menu_finalize()
510 menu->dep = expr_alloc_and(basedep, menu->dep); in menu_finalize()
511 for (prop = menu->sym->prop; prop; prop = prop->next) { in menu_finalize()
512 if (prop->menu != menu) in menu_finalize()
523 (*ep)->right.sym = menu->sym; in menu_finalize()
554 if (menu->list && (!menu->prompt || !menu->prompt->text)) { in menu_finalize()
555 for (last_menu = menu->list; ; last_menu = last_menu->next) { in menu_finalize()
560 last_menu->next = menu->next; in menu_finalize()
561 menu->next = menu->list; in menu_finalize()
562 menu->list = NULL; in menu_finalize()
594 bool menu_has_prompt(struct menu *menu) in menu_has_prompt() argument
596 if (!menu->prompt) in menu_has_prompt()
606 bool menu_is_empty(struct menu *menu) in menu_is_empty() argument
608 struct menu *child; in menu_is_empty()
610 for (child = menu->list; child; child = child->next) { in menu_is_empty()
617 bool menu_is_visible(struct menu *menu) in menu_is_visible() argument
619 struct menu *child; in menu_is_visible()
623 if (!menu->prompt) in menu_is_visible()
626 if (menu->visibility) { in menu_is_visible()
627 if (expr_calc_value(menu->visibility) == no) in menu_is_visible()
631 sym = menu->sym; in menu_is_visible()
634 visible = menu->prompt->visible.tri; in menu_is_visible()
636 visible = menu->prompt->visible.tri = expr_calc_value(menu->prompt->visible.expr); in menu_is_visible()
641 if (!sym || sym_get_tristate_value(menu->sym) == no) in menu_is_visible()
644 for (child = menu->list; child; child = child->next) { in menu_is_visible()
655 const char *menu_get_prompt(struct menu *menu) in menu_get_prompt() argument
657 if (menu->prompt) in menu_get_prompt()
658 return menu->prompt->text; in menu_get_prompt()
659 else if (menu->sym) in menu_get_prompt()
660 return menu->sym->name; in menu_get_prompt()
664 struct menu *menu_get_root_menu(struct menu *menu) in menu_get_root_menu() argument
669 struct menu *menu_get_parent_menu(struct menu *menu) in menu_get_parent_menu() argument
673 for (; menu != &rootmenu; menu = menu->parent) { in menu_get_parent_menu()
674 type = menu->prompt ? menu->prompt->type : 0; in menu_get_parent_menu()
678 return menu; in menu_get_parent_menu()
681 bool menu_has_help(struct menu *menu) in menu_has_help() argument
683 return menu->help != NULL; in menu_has_help()
686 const char *menu_get_help(struct menu *menu) in menu_get_help() argument
688 if (menu->help) in menu_get_help()
689 return menu->help; in menu_get_help()
694 static void get_def_str(struct gstr *r, struct menu *menu) in get_def_str() argument
697 menu->file->name, menu->lineno); in get_def_str()
713 struct menu *submenu[8], *menu, *location = NULL; in get_prompt_str() local
718 get_dep_str(r, prop->menu->dep, " Depends on: "); in get_prompt_str()
727 if (!expr_eq(prop->menu->dep, prop->visible.expr)) in get_prompt_str()
730 menu = prop->menu->parent; in get_prompt_str()
731 for (i = 0; menu && i < 8; menu = menu->parent) { in get_prompt_str()
732 bool accessible = menu_is_visible(menu); in get_prompt_str()
734 submenu[i++] = menu; in get_prompt_str()
736 location = menu; in get_prompt_str()
741 if (menu_is_visible(prop->menu)) { in get_prompt_str()
748 jump->target = prop->menu; in get_prompt_str()
763 menu = submenu[i]; in get_prompt_str()
764 if (jump && menu == location) in get_prompt_str()
767 if (menu == &rootmenu) in get_prompt_str()
771 str_printf(r, "%*c-> %s", j, ' ', menu_get_prompt(menu)); in get_prompt_str()
773 if (menu->sym) { in get_prompt_str()
774 str_printf(r, " (%s [=%s])", menu->sym->name ? in get_prompt_str()
775 menu->sym->name : "<choice>", in get_prompt_str()
776 sym_get_string_value(menu->sym)); in get_prompt_str()
824 if (prop->menu->prompt) { in get_symbol_str()
825 get_def_str(r, prop->menu); in get_symbol_str()
826 get_prompt_str(r, prop->menu->prompt, head); in get_symbol_str()
831 if (!prop->menu->prompt) { in get_symbol_str()
832 get_def_str(r, prop->menu); in get_symbol_str()
833 get_dep_str(r, prop->menu->dep, " Depends on: "); in get_symbol_str()
868 void menu_get_ext_help(struct menu *menu, struct gstr *help) in menu_get_ext_help() argument
870 struct symbol *sym = menu->sym; in menu_get_ext_help()
873 if (menu_has_help(menu)) { in menu_get_ext_help()
876 help_text = menu_get_help(menu); in menu_get_ext_help()