diff options
author | Dirk Gouders <dirk@gouders.net> | 2013-05-19 15:49:34 -0400 |
---|---|---|
committer | Yann E. MORIN <yann.morin.1998@free.fr> | 2013-06-18 17:58:59 -0400 |
commit | 1278ebdbc3167883f32095491990fbdc7cdf8b5e (patch) | |
tree | 782074e7597e09796a5307e1facaf4657cdd95e9 /scripts/kconfig | |
parent | e0b42605e685a0833303e1d4dde277c99d9e17b5 (diff) |
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>
Diffstat (limited to 'scripts/kconfig')
-rw-r--r-- | scripts/kconfig/lkc_proto.h | 1 | ||||
-rw-r--r-- | scripts/kconfig/mconf.c | 11 | ||||
-rw-r--r-- | scripts/kconfig/menu.c | 16 | ||||
-rw-r--r-- | scripts/kconfig/nconf.c | 16 |
4 files changed, 31 insertions, 13 deletions
diff --git a/scripts/kconfig/lkc_proto.h b/scripts/kconfig/lkc_proto.h index ef1a7381f956..ecdb9659b67d 100644 --- a/scripts/kconfig/lkc_proto.h +++ b/scripts/kconfig/lkc_proto.h | |||
@@ -14,6 +14,7 @@ P(conf_set_message_callback, void,(void (*fn)(const char *fmt, va_list ap))); | |||
14 | /* menu.c */ | 14 | /* menu.c */ |
15 | P(rootmenu,struct menu,); | 15 | P(rootmenu,struct menu,); |
16 | 16 | ||
17 | P(menu_is_empty, bool, (struct menu *menu)); | ||
17 | P(menu_is_visible, bool, (struct menu *menu)); | 18 | P(menu_is_visible, bool, (struct menu *menu)); |
18 | P(menu_has_prompt, bool, (struct menu *menu)); | 19 | P(menu_has_prompt, bool, (struct menu *menu)); |
19 | P(menu_get_prompt,const char *,(struct menu *menu)); | 20 | P(menu_get_prompt,const char *,(struct menu *menu)); |
diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c index cb8cf4ae0ef3..6ee4aaea9d87 100644 --- a/scripts/kconfig/mconf.c +++ b/scripts/kconfig/mconf.c | |||
@@ -48,7 +48,7 @@ static const char mconf_readme[] = N_( | |||
48 | "----------\n" | 48 | "----------\n" |
49 | "o Use the Up/Down arrow keys (cursor keys) to highlight the item\n" | 49 | "o Use the Up/Down arrow keys (cursor keys) to highlight the item\n" |
50 | " you wish to change or submenu wish to select and press <Enter>.\n" | 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 | "\n" | 52 | "\n" |
53 | " Shortcut: Press the option's highlighted letter (hotkey).\n" | 53 | " Shortcut: Press the option's highlighted letter (hotkey).\n" |
54 | " Pressing a hotkey more than once will sequence\n" | 54 | " Pressing a hotkey more than once will sequence\n" |
@@ -176,7 +176,7 @@ static const char mconf_readme[] = N_( | |||
176 | "\n"), | 176 | "\n"), |
177 | menu_instructions[] = N_( | 177 | menu_instructions[] = N_( |
178 | "Arrow keys navigate the menu. " | 178 | "Arrow keys navigate the menu. " |
179 | "<Enter> selects submenus --->. " | 179 | "<Enter> selects submenus ---> (or empty submenus ----). " |
180 | "Highlighted letters are hotkeys. " | 180 | "Highlighted letters are hotkeys. " |
181 | "Pressing <Y> includes, <N> excludes, <M> modularizes features. " | 181 | "Pressing <Y> includes, <N> excludes, <M> modularizes features. " |
182 | "Press <Esc><Esc> to exit, <?> for Help, </> for Search. " | 182 | "Press <Esc><Esc> to exit, <?> for Help, </> for Search. " |
@@ -498,8 +498,9 @@ static void build_conf(struct menu *menu) | |||
498 | menu->data ? "-->" : "++>", | 498 | menu->data ? "-->" : "++>", |
499 | indent + 1, ' ', prompt); | 499 | indent + 1, ' ', prompt); |
500 | } else | 500 | } else |
501 | item_make(" %*c%s --->", indent + 1, ' ', prompt); | 501 | item_make(" %*c%s %s", |
502 | 502 | indent + 1, ' ', prompt, | |
503 | menu_is_empty(menu) ? "----" : "--->"); | ||
503 | item_set_tag('m'); | 504 | item_set_tag('m'); |
504 | item_set_data(menu); | 505 | item_set_data(menu); |
505 | if (single_menu_mode && menu->data) | 506 | if (single_menu_mode && menu->data) |
@@ -630,7 +631,7 @@ static void build_conf(struct menu *menu) | |||
630 | (sym_has_value(sym) || !sym_is_changable(sym)) ? | 631 | (sym_has_value(sym) || !sym_is_changable(sym)) ? |
631 | "" : _(" (NEW)")); | 632 | "" : _(" (NEW)")); |
632 | if (menu->prompt->type == P_MENU) { | 633 | if (menu->prompt->type == P_MENU) { |
633 | item_add_str(" --->"); | 634 | item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->"); |
634 | return; | 635 | return; |
635 | } | 636 | } |
636 | } | 637 | } |
diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c index b5c7d90df9df..6d11c8f63eb0 100644 --- a/scripts/kconfig/menu.c +++ b/scripts/kconfig/menu.c | |||
@@ -430,6 +430,22 @@ bool menu_has_prompt(struct menu *menu) | |||
430 | return true; | 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 | bool menu_is_visible(struct menu *menu) | 449 | bool menu_is_visible(struct menu *menu) |
434 | { | 450 | { |
435 | struct menu *child; | 451 | struct menu *child; |
diff --git a/scripts/kconfig/nconf.c b/scripts/kconfig/nconf.c index aac85d37b69b..0183153c2095 100644 --- a/scripts/kconfig/nconf.c +++ b/scripts/kconfig/nconf.c | |||
@@ -45,8 +45,8 @@ static const char nconf_global_help[] = N_( | |||
45 | "<n> to remove it. You may press the <Space> key to cycle through the\n" | 45 | "<n> to remove it. You may press the <Space> key to cycle through the\n" |
46 | "available options.\n" | 46 | "available options.\n" |
47 | "\n" | 47 | "\n" |
48 | "A trailing \"--->\" designates a submenu.\n" | 48 | "A trailing \"--->\" designates a submenu, a trailing \"----\" an\n" |
49 | "\n" | 49 | "empty submenu.\n" |
50 | "\n" | 50 | "\n" |
51 | "Menu navigation keys\n" | 51 | "Menu navigation keys\n" |
52 | "----------------------------------------------------------------------\n" | 52 | "----------------------------------------------------------------------\n" |
@@ -131,7 +131,7 @@ static const char nconf_global_help[] = N_( | |||
131 | "\n"), | 131 | "\n"), |
132 | menu_no_f_instructions[] = N_( | 132 | menu_no_f_instructions[] = N_( |
133 | "Legend: [*] built-in [ ] excluded <M> module < > module capable.\n" | 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 | "\n" | 135 | "\n" |
136 | "Use the following keys to navigate the menus:\n" | 136 | "Use the following keys to navigate the menus:\n" |
137 | "Move up or down with <Up> and <Down>.\n" | 137 | "Move up or down with <Up> and <Down>.\n" |
@@ -148,7 +148,7 @@ menu_no_f_instructions[] = N_( | |||
148 | "For help related to the current menu entry press <?> or <h>.\n"), | 148 | "For help related to the current menu entry press <?> or <h>.\n"), |
149 | menu_instructions[] = N_( | 149 | menu_instructions[] = N_( |
150 | "Legend: [*] built-in [ ] excluded <M> module < > module capable.\n" | 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 | "\n" | 152 | "\n" |
153 | "Use the following keys to navigate the menus:\n" | 153 | "Use the following keys to navigate the menus:\n" |
154 | "Move up or down with <Up> or <Down>.\n" | 154 | "Move up or down with <Up> or <Down>.\n" |
@@ -760,9 +760,9 @@ static void build_conf(struct menu *menu) | |||
760 | indent + 1, ' ', prompt); | 760 | indent + 1, ' ', prompt); |
761 | } else | 761 | } else |
762 | item_make(menu, 'm', | 762 | item_make(menu, 'm', |
763 | " %*c%s --->", | 763 | " %*c%s %s", |
764 | indent + 1, | 764 | indent + 1, ' ', prompt, |
765 | ' ', prompt); | 765 | menu_is_empty(menu) ? "----" : "--->"); |
766 | 766 | ||
767 | if (single_menu_mode && menu->data) | 767 | if (single_menu_mode && menu->data) |
768 | goto conf_childs; | 768 | goto conf_childs; |
@@ -904,7 +904,7 @@ static void build_conf(struct menu *menu) | |||
904 | (sym_has_value(sym) || !sym_is_changable(sym)) ? | 904 | (sym_has_value(sym) || !sym_is_changable(sym)) ? |
905 | "" : _(" (NEW)")); | 905 | "" : _(" (NEW)")); |
906 | if (menu->prompt && menu->prompt->type == P_MENU) { | 906 | if (menu->prompt && menu->prompt->type == P_MENU) { |
907 | item_add_str(" --->"); | 907 | item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->"); |
908 | return; | 908 | return; |
909 | } | 909 | } |
910 | } | 910 | } |