Commit 1278ebdbc3167883f32095491990fbdc7cdf8b5e
Committed by
Yann E. MORIN
1 parent
e0b42605e6
Exists in
master
and in
20 other branches
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
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 | } |