kconfig: Left aling menu items in menuconfig
Keeping menu lines on a fixed position creates less visual noise when navigating the menus. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
This commit is contained in:
parent
fa7009d5b5
commit
0e175d05a4
1 changed files with 11 additions and 19 deletions
|
@ -58,7 +58,8 @@
|
||||||
|
|
||||||
#include "dialog.h"
|
#include "dialog.h"
|
||||||
|
|
||||||
static int menu_width, item_x;
|
#define ITEM_IDENT 4 /* Indent of menu entries. Fixed for all menus */
|
||||||
|
static int menu_width;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Print menu item
|
* Print menu item
|
||||||
|
@ -86,13 +87,13 @@ static void print_item(WINDOW * win, const char *item, int choice,
|
||||||
wclrtoeol(win);
|
wclrtoeol(win);
|
||||||
#endif
|
#endif
|
||||||
wattrset(win, selected ? item_selected_attr : item_attr);
|
wattrset(win, selected ? item_selected_attr : item_attr);
|
||||||
mvwaddstr(win, choice, item_x, menu_item);
|
mvwaddstr(win, choice, ITEM_IDENT, menu_item);
|
||||||
if (hotkey) {
|
if (hotkey) {
|
||||||
wattrset(win, selected ? tag_key_selected_attr : tag_key_attr);
|
wattrset(win, selected ? tag_key_selected_attr : tag_key_attr);
|
||||||
mvwaddch(win, choice, item_x + j, menu_item[j]);
|
mvwaddch(win, choice, ITEM_IDENT + j, menu_item[j]);
|
||||||
}
|
}
|
||||||
if (selected) {
|
if (selected) {
|
||||||
wmove(win, choice, item_x + 1);
|
wmove(win, choice, ITEM_IDENT + 1);
|
||||||
wrefresh(win);
|
wrefresh(win);
|
||||||
}
|
}
|
||||||
free(menu_item);
|
free(menu_item);
|
||||||
|
@ -207,19 +208,10 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
|
||||||
draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2,
|
draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2,
|
||||||
menubox_border_attr, menubox_attr);
|
menubox_border_attr, menubox_attr);
|
||||||
|
|
||||||
/*
|
/* Set choice to default item */
|
||||||
* Find length of longest item in order to center menu.
|
for (i = 0; i < item_no; i++)
|
||||||
* Set 'choice' to default item.
|
|
||||||
*/
|
|
||||||
item_x = 0;
|
|
||||||
for (i = 0; i < item_no; i++) {
|
|
||||||
item_x =
|
|
||||||
MAX(item_x, MIN(menu_width, strlen(items[i * 2 + 1]) + 2));
|
|
||||||
if (strcmp(current, items[i * 2]) == 0)
|
if (strcmp(current, items[i * 2]) == 0)
|
||||||
choice = i;
|
choice = i;
|
||||||
}
|
|
||||||
|
|
||||||
item_x = (menu_width - item_x) / 2;
|
|
||||||
|
|
||||||
/* get the scroll info from the temp file */
|
/* get the scroll info from the temp file */
|
||||||
if ((f = fopen("lxdialog.scrltmp", "r")) != NULL) {
|
if ((f = fopen("lxdialog.scrltmp", "r")) != NULL) {
|
||||||
|
@ -254,10 +246,10 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
|
||||||
wnoutrefresh(menu);
|
wnoutrefresh(menu);
|
||||||
|
|
||||||
print_arrows(dialog, item_no, scroll,
|
print_arrows(dialog, item_no, scroll,
|
||||||
box_y, box_x + item_x + 1, menu_height);
|
box_y, box_x + ITEM_IDENT + 1, menu_height);
|
||||||
|
|
||||||
print_buttons(dialog, height, width, 0);
|
print_buttons(dialog, height, width, 0);
|
||||||
wmove(menu, choice, item_x + 1);
|
wmove(menu, choice, ITEM_IDENT + 1);
|
||||||
wrefresh(menu);
|
wrefresh(menu);
|
||||||
|
|
||||||
while (key != ESC) {
|
while (key != ESC) {
|
||||||
|
@ -286,7 +278,7 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
|
||||||
key == KEY_UP || key == KEY_DOWN ||
|
key == KEY_UP || key == KEY_DOWN ||
|
||||||
key == '-' || key == '+' ||
|
key == '-' || key == '+' ||
|
||||||
key == KEY_PPAGE || key == KEY_NPAGE) {
|
key == KEY_PPAGE || key == KEY_NPAGE) {
|
||||||
|
/* Remove highligt of current item */
|
||||||
print_item(menu, items[(scroll + choice) * 2 + 1],
|
print_item(menu, items[(scroll + choice) * 2 + 1],
|
||||||
choice, FALSE,
|
choice, FALSE,
|
||||||
(items[(scroll + choice) * 2][0] != ':'));
|
(items[(scroll + choice) * 2][0] != ':'));
|
||||||
|
@ -364,7 +356,7 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
|
||||||
choice, TRUE, (items[(scroll + choice) * 2][0] != ':'));
|
choice, TRUE, (items[(scroll + choice) * 2][0] != ':'));
|
||||||
|
|
||||||
print_arrows(dialog, item_no, scroll,
|
print_arrows(dialog, item_no, scroll,
|
||||||
box_y, box_x + item_x + 1, menu_height);
|
box_y, box_x + ITEM_IDENT + 1, menu_height);
|
||||||
|
|
||||||
wnoutrefresh(dialog);
|
wnoutrefresh(dialog);
|
||||||
wrefresh(menu);
|
wrefresh(menu);
|
||||||
|
|
Loading…
Reference in a new issue