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 | |
| 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')
| -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 | } |
