Commit 1278ebdbc3167883f32095491990fbdc7cdf8b5e

Authored by Dirk Gouders
Committed by Yann E. MORIN
1 parent e0b42605e6

mconf/nconf: mark empty menus/menuconfigs different from non-empty ones

Submenus are sometimes empty and it would be nice if there is
something that notifies us that we should not expect any content
_before_ we enter a submenu.

A new function menu_is_empty() was introduced and empty menus and
menuconfigs are now marked by "----" as opposed to non-empty ones that
are marked by "--->".

This scheme was suggested by "Yann E. MORIN" <yann.morin.1998@free.fr>.

Signed-off-by: Dirk Gouders <dirk@gouders.net>
Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

Showing 4 changed files with 31 additions and 13 deletions Side-by-side Diff

scripts/kconfig/lkc_proto.h
... ... @@ -14,6 +14,7 @@
14 14 /* menu.c */
15 15 P(rootmenu,struct menu,);
16 16  
  17 +P(menu_is_empty, bool, (struct menu *menu));
17 18 P(menu_is_visible, bool, (struct menu *menu));
18 19 P(menu_has_prompt, bool, (struct menu *menu));
19 20 P(menu_get_prompt,const char *,(struct menu *menu));
scripts/kconfig/mconf.c
... ... @@ -48,7 +48,7 @@
48 48 "----------\n"
49 49 "o Use the Up/Down arrow keys (cursor keys) to highlight the item\n"
50 50 " you wish to change or submenu wish to select and press <Enter>.\n"
51   -" Submenus are designated by \"--->\".\n"
  51 +" Submenus are designated by \"--->\", empty ones by \"----\".\n"
52 52 "\n"
53 53 " Shortcut: Press the option's highlighted letter (hotkey).\n"
54 54 " Pressing a hotkey more than once will sequence\n"
... ... @@ -176,7 +176,7 @@
176 176 "\n"),
177 177 menu_instructions[] = N_(
178 178 "Arrow keys navigate the menu. "
179   - "<Enter> selects submenus --->. "
  179 + "<Enter> selects submenus ---> (or empty submenus ----). "
180 180 "Highlighted letters are hotkeys. "
181 181 "Pressing <Y> includes, <N> excludes, <M> modularizes features. "
182 182 "Press <Esc><Esc> to exit, <?> for Help, </> for Search. "
... ... @@ -498,8 +498,9 @@
498 498 menu->data ? "-->" : "++>",
499 499 indent + 1, ' ', prompt);
500 500 } else
501   - item_make(" %*c%s --->", indent + 1, ' ', prompt);
502   -
  501 + item_make(" %*c%s %s",
  502 + indent + 1, ' ', prompt,
  503 + menu_is_empty(menu) ? "----" : "--->");
503 504 item_set_tag('m');
504 505 item_set_data(menu);
505 506 if (single_menu_mode && menu->data)
... ... @@ -630,7 +631,7 @@
630 631 (sym_has_value(sym) || !sym_is_changable(sym)) ?
631 632 "" : _(" (NEW)"));
632 633 if (menu->prompt->type == P_MENU) {
633   - item_add_str(" --->");
  634 + item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->");
634 635 return;
635 636 }
636 637 }
scripts/kconfig/menu.c
... ... @@ -430,6 +430,22 @@
430 430 return true;
431 431 }
432 432  
  433 +/*
  434 + * Determine if a menu is empty.
  435 + * A menu is considered empty if it contains no or only
  436 + * invisible entries.
  437 + */
  438 +bool menu_is_empty(struct menu *menu)
  439 +{
  440 + struct menu *child;
  441 +
  442 + for (child = menu->list; child; child = child->next) {
  443 + if (menu_is_visible(child))
  444 + return(false);
  445 + }
  446 + return(true);
  447 +}
  448 +
433 449 bool menu_is_visible(struct menu *menu)
434 450 {
435 451 struct menu *child;
scripts/kconfig/nconf.c
... ... @@ -45,9 +45,9 @@
45 45 "<n> to remove it. You may press the <Space> key to cycle through the\n"
46 46 "available options.\n"
47 47 "\n"
48   -"A trailing \"--->\" designates a submenu.\n"
  48 +"A trailing \"--->\" designates a submenu, a trailing \"----\" an\n"
  49 +"empty submenu.\n"
49 50 "\n"
50   -"\n"
51 51 "Menu navigation keys\n"
52 52 "----------------------------------------------------------------------\n"
53 53 "Linewise up <Up>\n"
... ... @@ -131,7 +131,7 @@
131 131 "\n"),
132 132 menu_no_f_instructions[] = N_(
133 133 "Legend: [*] built-in [ ] excluded <M> module < > module capable.\n"
134   -"Submenus are designated by a trailing \"--->\".\n"
  134 +"Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n"
135 135 "\n"
136 136 "Use the following keys to navigate the menus:\n"
137 137 "Move up or down with <Up> and <Down>.\n"
... ... @@ -148,7 +148,7 @@
148 148 "For help related to the current menu entry press <?> or <h>.\n"),
149 149 menu_instructions[] = N_(
150 150 "Legend: [*] built-in [ ] excluded <M> module < > module capable.\n"
151   -"Submenus are designated by a trailing \"--->\".\n"
  151 +"Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n"
152 152 "\n"
153 153 "Use the following keys to navigate the menus:\n"
154 154 "Move up or down with <Up> or <Down>.\n"
... ... @@ -760,9 +760,9 @@
760 760 indent + 1, ' ', prompt);
761 761 } else
762 762 item_make(menu, 'm',
763   - " %*c%s --->",
764   - indent + 1,
765   - ' ', prompt);
  763 + " %*c%s %s",
  764 + indent + 1, ' ', prompt,
  765 + menu_is_empty(menu) ? "----" : "--->");
766 766  
767 767 if (single_menu_mode && menu->data)
768 768 goto conf_childs;
... ... @@ -904,7 +904,7 @@
904 904 (sym_has_value(sym) || !sym_is_changable(sym)) ?
905 905 "" : _(" (NEW)"));
906 906 if (menu->prompt && menu->prompt->type == P_MENU) {
907   - item_add_str(" --->");
  907 + item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->");
908 908 return;
909 909 }
910 910 }