* [PATCH 0/3] kconfig/lxdialog: color theme support
@ 2006-07-24 11:36 Sam Ravnborg
2006-07-24 11:37 ` [PATCH 1/3] kconfig/lxdialog: refactored color settings Sam Ravnborg
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Sam Ravnborg @ 2006-07-24 11:36 UTC (permalink / raw)
To: LKML, Roman Zippel, Andrew Morton; +Cc: Sam Ravnborg
Following three patches introduce support for color themes in
menuconfig.
First patch is a refactoring of the color support in lxdialog, and the
next two introduces two new color schemes: blackbg and bluetitle.
The latter should be well know to -mm users.
To use a color theme:
make MENUCONFIG_COLOR=blackbg menuconfig
Avalable themes:
blackbg, mono, bluetitle
Sam
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/3] kconfig/lxdialog: refactored color settings
2006-07-24 11:36 [PATCH 0/3] kconfig/lxdialog: color theme support Sam Ravnborg
@ 2006-07-24 11:37 ` Sam Ravnborg
2006-07-24 11:38 ` [PATCH 2/3] kconfig/lxdialog: add support for color themes and add blackbg theme Sam Ravnborg
2006-07-24 11:39 ` [PATCH 3/3] kconfig/lxdialog: add bluetitle color scheme Sam Ravnborg
2 siblings, 0 replies; 9+ messages in thread
From: Sam Ravnborg @ 2006-07-24 11:37 UTC (permalink / raw)
To: LKML, Roman Zippel, Andrew Morton
>From be7fbedf9f3d8af80a5cbcbb7d83970f32a9a509 Mon Sep 17 00:00:00 2001
From: Sam Ravnborg <sam@mars.ravnborg.org>
Date: Mon, 24 Jul 2006 09:52:50 +0200
Subject: [PATCH] kconfig/lxdialog: refactored color settings
Use a variable to define the color for various dialog items.
As an added benefit the definitions are now combined in fewer places.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
scripts/kconfig/lxdialog/checklist.c | 28 +++--
scripts/kconfig/lxdialog/colors.h | 154 ----------------------------
scripts/kconfig/lxdialog/dialog.h | 78 ++++++++------
scripts/kconfig/lxdialog/inputbox.c | 18 ++-
scripts/kconfig/lxdialog/lxdialog.c | 2
| 28 +++--
scripts/kconfig/lxdialog/msgbox.c | 9 +-
scripts/kconfig/lxdialog/textbox.c | 19 ++--
scripts/kconfig/lxdialog/util.c | 184 +++++++++++++++++-----------------
scripts/kconfig/lxdialog/yesno.c | 9 +-
10 files changed, 195 insertions(+), 334 deletions(-)
diff --git a/scripts/kconfig/lxdialog/checklist.c b/scripts/kconfig/lxdialog/checklist.c
index 7988641..13144f3 100644
--- a/scripts/kconfig/lxdialog/checklist.c
+++ b/scripts/kconfig/lxdialog/checklist.c
@@ -34,18 +34,19 @@ static void print_item(WINDOW * win, con
int i;
/* Clear 'residue' of last item */
- wattrset(win, menubox_attr);
+ wattrset(win, dlg_clr.menubox.atr);
wmove(win, choice, 0);
for (i = 0; i < list_width; i++)
waddch(win, ' ');
wmove(win, choice, check_x);
- wattrset(win, selected ? check_selected_attr : check_attr);
+ wattrset(win, selected ? dlg_clr.check_selected.atr
+ : dlg_clr.check.atr);
wprintw(win, "(%c)", status ? 'X' : ' ');
- wattrset(win, selected ? tag_selected_attr : tag_attr);
+ wattrset(win, selected ? dlg_clr.tag_selected.atr : dlg_clr.tag.atr);
mvwaddch(win, choice, item_x, item[0]);
- wattrset(win, selected ? item_selected_attr : item_attr);
+ wattrset(win, selected ? dlg_clr.item_selected.atr : dlg_clr.item.atr);
waddstr(win, (char *)item + 1);
if (selected) {
wmove(win, choice, check_x + 1);
@@ -62,11 +63,11 @@ static void print_arrows(WINDOW * win, i
wmove(win, y, x);
if (scroll > 0) {
- wattrset(win, uarrow_attr);
+ wattrset(win, dlg_clr.uarrow.atr);
waddch(win, ACS_UARROW);
waddstr(win, "(-)");
} else {
- wattrset(win, menubox_attr);
+ wattrset(win, dlg_clr.menubox.atr);
waddch(win, ACS_HLINE);
waddch(win, ACS_HLINE);
waddch(win, ACS_HLINE);
@@ -77,11 +78,11 @@ static void print_arrows(WINDOW * win, i
wmove(win, y, x);
if ((height < item_no) && (scroll + choice < item_no - 1)) {
- wattrset(win, darrow_attr);
+ wattrset(win, dlg_clr.darrow.atr);
waddch(win, ACS_DARROW);
waddstr(win, "(+)");
} else {
- wattrset(win, menubox_border_attr);
+ wattrset(win, dlg_clr.menubox_border.atr);
waddch(win, ACS_HLINE);
waddch(win, ACS_HLINE);
waddch(win, ACS_HLINE);
@@ -145,17 +146,18 @@ int dialog_checklist(const char *title,
dialog = newwin(height, width, y, x);
keypad(dialog, TRUE);
- draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr);
- wattrset(dialog, border_attr);
+ draw_box(dialog, 0, 0, height, width,
+ dlg_clr.dialog.atr, dlg_clr.border.atr);
+ wattrset(dialog, dlg_clr.border.atr);
mvwaddch(dialog, height - 3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++)
waddch(dialog, ACS_HLINE);
- wattrset(dialog, dialog_attr);
+ wattrset(dialog, dlg_clr.dialog.atr);
waddch(dialog, ACS_RTEE);
print_title(dialog, title, width);
- wattrset(dialog, dialog_attr);
+ wattrset(dialog, dlg_clr.dialog.atr);
print_autowrap(dialog, prompt, width - 2, 1, 3);
list_width = width - 6;
@@ -170,7 +172,7 @@ int dialog_checklist(const char *title,
/* draw a box around the list items */
draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2,
- menubox_border_attr, menubox_attr);
+ dlg_clr.menubox_border.atr, dlg_clr.menubox.atr);
/* Find length of longest item in order to center checklist */
check_x = 0;
diff --git a/scripts/kconfig/lxdialog/colors.h b/scripts/kconfig/lxdialog/colors.h
deleted file mode 100644
index db071df..0000000
--- a/scripts/kconfig/lxdialog/colors.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * colors.h -- color attribute definitions
- *
- * AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * Default color definitions
- *
- * *_FG = foreground
- * *_BG = background
- * *_HL = highlight?
- */
-#define SCREEN_FG COLOR_CYAN
-#define SCREEN_BG COLOR_BLUE
-#define SCREEN_HL TRUE
-
-#define SHADOW_FG COLOR_BLACK
-#define SHADOW_BG COLOR_BLACK
-#define SHADOW_HL TRUE
-
-#define DIALOG_FG COLOR_BLACK
-#define DIALOG_BG COLOR_WHITE
-#define DIALOG_HL FALSE
-
-#define TITLE_FG COLOR_YELLOW
-#define TITLE_BG COLOR_WHITE
-#define TITLE_HL TRUE
-
-#define BORDER_FG COLOR_WHITE
-#define BORDER_BG COLOR_WHITE
-#define BORDER_HL TRUE
-
-#define BUTTON_ACTIVE_FG COLOR_WHITE
-#define BUTTON_ACTIVE_BG COLOR_BLUE
-#define BUTTON_ACTIVE_HL TRUE
-
-#define BUTTON_INACTIVE_FG COLOR_BLACK
-#define BUTTON_INACTIVE_BG COLOR_WHITE
-#define BUTTON_INACTIVE_HL FALSE
-
-#define BUTTON_KEY_ACTIVE_FG COLOR_WHITE
-#define BUTTON_KEY_ACTIVE_BG COLOR_BLUE
-#define BUTTON_KEY_ACTIVE_HL TRUE
-
-#define BUTTON_KEY_INACTIVE_FG COLOR_RED
-#define BUTTON_KEY_INACTIVE_BG COLOR_WHITE
-#define BUTTON_KEY_INACTIVE_HL FALSE
-
-#define BUTTON_LABEL_ACTIVE_FG COLOR_YELLOW
-#define BUTTON_LABEL_ACTIVE_BG COLOR_BLUE
-#define BUTTON_LABEL_ACTIVE_HL TRUE
-
-#define BUTTON_LABEL_INACTIVE_FG COLOR_BLACK
-#define BUTTON_LABEL_INACTIVE_BG COLOR_WHITE
-#define BUTTON_LABEL_INACTIVE_HL TRUE
-
-#define INPUTBOX_FG COLOR_BLACK
-#define INPUTBOX_BG COLOR_WHITE
-#define INPUTBOX_HL FALSE
-
-#define INPUTBOX_BORDER_FG COLOR_BLACK
-#define INPUTBOX_BORDER_BG COLOR_WHITE
-#define INPUTBOX_BORDER_HL FALSE
-
-#define SEARCHBOX_FG COLOR_BLACK
-#define SEARCHBOX_BG COLOR_WHITE
-#define SEARCHBOX_HL FALSE
-
-#define SEARCHBOX_TITLE_FG COLOR_YELLOW
-#define SEARCHBOX_TITLE_BG COLOR_WHITE
-#define SEARCHBOX_TITLE_HL TRUE
-
-#define SEARCHBOX_BORDER_FG COLOR_WHITE
-#define SEARCHBOX_BORDER_BG COLOR_WHITE
-#define SEARCHBOX_BORDER_HL TRUE
-
-#define POSITION_INDICATOR_FG COLOR_YELLOW
-#define POSITION_INDICATOR_BG COLOR_WHITE
-#define POSITION_INDICATOR_HL TRUE
-
-#define MENUBOX_FG COLOR_BLACK
-#define MENUBOX_BG COLOR_WHITE
-#define MENUBOX_HL FALSE
-
-#define MENUBOX_BORDER_FG COLOR_WHITE
-#define MENUBOX_BORDER_BG COLOR_WHITE
-#define MENUBOX_BORDER_HL TRUE
-
-#define ITEM_FG COLOR_BLACK
-#define ITEM_BG COLOR_WHITE
-#define ITEM_HL FALSE
-
-#define ITEM_SELECTED_FG COLOR_WHITE
-#define ITEM_SELECTED_BG COLOR_BLUE
-#define ITEM_SELECTED_HL TRUE
-
-#define TAG_FG COLOR_YELLOW
-#define TAG_BG COLOR_WHITE
-#define TAG_HL TRUE
-
-#define TAG_SELECTED_FG COLOR_YELLOW
-#define TAG_SELECTED_BG COLOR_BLUE
-#define TAG_SELECTED_HL TRUE
-
-#define TAG_KEY_FG COLOR_YELLOW
-#define TAG_KEY_BG COLOR_WHITE
-#define TAG_KEY_HL TRUE
-
-#define TAG_KEY_SELECTED_FG COLOR_YELLOW
-#define TAG_KEY_SELECTED_BG COLOR_BLUE
-#define TAG_KEY_SELECTED_HL TRUE
-
-#define CHECK_FG COLOR_BLACK
-#define CHECK_BG COLOR_WHITE
-#define CHECK_HL FALSE
-
-#define CHECK_SELECTED_FG COLOR_WHITE
-#define CHECK_SELECTED_BG COLOR_BLUE
-#define CHECK_SELECTED_HL TRUE
-
-#define UARROW_FG COLOR_GREEN
-#define UARROW_BG COLOR_WHITE
-#define UARROW_HL TRUE
-
-#define DARROW_FG COLOR_GREEN
-#define DARROW_BG COLOR_WHITE
-#define DARROW_HL TRUE
-
-/* End of default color definitions */
-
-#define C_ATTR(x,y) ((x ? A_BOLD : 0) | COLOR_PAIR((y)))
-#define COLOR_NAME_LEN 10
-#define COLOR_COUNT 8
-
-/*
- * Global variables
- */
-
-extern int color_table[][3];
diff --git a/scripts/kconfig/lxdialog/dialog.h b/scripts/kconfig/lxdialog/dialog.h
index af3cf71..aee89b3 100644
--- a/scripts/kconfig/lxdialog/dialog.h
+++ b/scripts/kconfig/lxdialog/dialog.h
@@ -87,40 +87,50 @@ #define ACS_DARROW 'v'
#endif
/*
- * Attribute names
+ * Default color definitions
*/
-#define screen_attr attributes[0]
-#define shadow_attr attributes[1]
-#define dialog_attr attributes[2]
-#define title_attr attributes[3]
-#define border_attr attributes[4]
-#define button_active_attr attributes[5]
-#define button_inactive_attr attributes[6]
-#define button_key_active_attr attributes[7]
-#define button_key_inactive_attr attributes[8]
-#define button_label_active_attr attributes[9]
-#define button_label_inactive_attr attributes[10]
-#define inputbox_attr attributes[11]
-#define inputbox_border_attr attributes[12]
-#define searchbox_attr attributes[13]
-#define searchbox_title_attr attributes[14]
-#define searchbox_border_attr attributes[15]
-#define position_indicator_attr attributes[16]
-#define menubox_attr attributes[17]
-#define menubox_border_attr attributes[18]
-#define item_attr attributes[19]
-#define item_selected_attr attributes[20]
-#define tag_attr attributes[21]
-#define tag_selected_attr attributes[22]
-#define tag_key_attr attributes[23]
-#define tag_key_selected_attr attributes[24]
-#define check_attr attributes[25]
-#define check_selected_attr attributes[26]
-#define uarrow_attr attributes[27]
-#define darrow_attr attributes[28]
-
-/* number of attributes */
-#define ATTRIBUTE_COUNT 29
+
+struct dialog_color {
+ short pair; /* The pair number used by ncurses */
+ chtype atr; /* Color attribute */
+ int fg; /* foreground */
+ int bg; /* background */
+ int hl; /* highlight this item */
+};
+
+struct dlg_clr {
+ struct dialog_color screen;
+ struct dialog_color shadow;
+ struct dialog_color dialog;
+ struct dialog_color title;
+ struct dialog_color border;
+ struct dialog_color button_active;
+ struct dialog_color button_inactive;
+ struct dialog_color button_key_active;
+ struct dialog_color button_key_inactive;
+ struct dialog_color button_label_active;
+ struct dialog_color button_label_inactive;
+ struct dialog_color inputbox;
+ struct dialog_color inputbox_border;
+ struct dialog_color searchbox;
+ struct dialog_color searchbox_title;
+ struct dialog_color searchbox_border;
+ struct dialog_color position_indicator;
+ struct dialog_color menubox;
+ struct dialog_color menubox_border;
+ struct dialog_color item;
+ struct dialog_color item_selected;
+ struct dialog_color tag;
+ struct dialog_color tag_selected;
+ struct dialog_color tag_key;
+ struct dialog_color tag_key_selected;
+ struct dialog_color check;
+ struct dialog_color check_selected;
+ struct dialog_color uarrow;
+ struct dialog_color darrow;
+};
+
+extern struct dlg_clr dlg_clr;
/*
* Global variables
@@ -128,8 +138,6 @@ #define ATTRIBUTE_COUNT 29
extern bool use_colors;
extern bool use_shadow;
-extern chtype attributes[];
-
extern const char *backtitle;
/*
diff --git a/scripts/kconfig/lxdialog/inputbox.c b/scripts/kconfig/lxdialog/inputbox.c
index 7795037..9479487 100644
--- a/scripts/kconfig/lxdialog/inputbox.c
+++ b/scripts/kconfig/lxdialog/inputbox.c
@@ -58,17 +58,18 @@ int dialog_inputbox(const char *title, c
dialog = newwin(height, width, y, x);
keypad(dialog, TRUE);
- draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr);
- wattrset(dialog, border_attr);
+ draw_box(dialog, 0, 0, height, width,
+ dlg_clr.dialog.atr, dlg_clr.border.atr);
+ wattrset(dialog, dlg_clr.border.atr);
mvwaddch(dialog, height - 3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++)
waddch(dialog, ACS_HLINE);
- wattrset(dialog, dialog_attr);
+ wattrset(dialog, dlg_clr.dialog.atr);
waddch(dialog, ACS_RTEE);
print_title(dialog, title, width);
- wattrset(dialog, dialog_attr);
+ wattrset(dialog, dlg_clr.dialog.atr);
print_autowrap(dialog, prompt, width - 2, 1, 3);
/* Draw the input field box */
@@ -76,13 +77,14 @@ int dialog_inputbox(const char *title, c
getyx(dialog, y, x);
box_y = y + 2;
box_x = (width - box_width) / 2;
- draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2, border_attr, dialog_attr);
+ draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2,
+ dlg_clr.border.atr, dlg_clr.dialog.atr);
print_buttons(dialog, height, width, 0);
/* Set up the initial value */
wmove(dialog, box_y, box_x);
- wattrset(dialog, inputbox_attr);
+ wattrset(dialog, dlg_clr.inputbox.atr);
if (!init)
instr[0] = '\0';
@@ -120,7 +122,7 @@ int dialog_inputbox(const char *title, c
case KEY_BACKSPACE:
case 127:
if (input_x || scroll) {
- wattrset(dialog, inputbox_attr);
+ wattrset(dialog, dlg_clr.inputbox.atr);
if (!input_x) {
scroll = scroll < box_width - 1 ? 0 : scroll - (box_width - 1);
wmove(dialog, box_y, box_x);
@@ -140,7 +142,7 @@ int dialog_inputbox(const char *title, c
default:
if (key < 0x100 && isprint(key)) {
if (scroll + input_x < MAX_LEN) {
- wattrset(dialog, inputbox_attr);
+ wattrset(dialog, dlg_clr.inputbox.atr);
instr[scroll + input_x] = key;
instr[scroll + input_x + 1] = '\0';
if (input_x == box_width - 1) {
diff --git a/scripts/kconfig/lxdialog/lxdialog.c b/scripts/kconfig/lxdialog/lxdialog.c
index 79f6c5f..2015386 100644
--- a/scripts/kconfig/lxdialog/lxdialog.c
+++ b/scripts/kconfig/lxdialog/lxdialog.c
@@ -123,7 +123,7 @@ #endif
retval = (*(modePtr->jumper)) (title, argc - offset, argv + offset);
if (opt_clear) { /* clear screen before exit */
- attr_clear(stdscr, LINES, COLS, screen_attr);
+ attr_clear(stdscr, LINES, COLS, dlg_clr.screen.atr);
refresh();
}
end_dialog();
--git a/scripts/kconfig/lxdialog/menubox.c b/scripts/kconfig/lxdialog/menubox.c
index bf8052f..bae05e2 100644
--- a/scripts/kconfig/lxdialog/menubox.c
+++ b/scripts/kconfig/lxdialog/menubox.c
@@ -74,7 +74,7 @@ static void do_print_item(WINDOW * win,
j = first_alpha(menu_item, "YyNnMmHh");
/* Clear 'residue' of last item */
- wattrset(win, menubox_attr);
+ wattrset(win, dlg_clr.menubox.atr);
wmove(win, choice, 0);
#if OLD_NCURSES
{
@@ -85,10 +85,11 @@ #if OLD_NCURSES
#else
wclrtoeol(win);
#endif
- wattrset(win, selected ? item_selected_attr : item_attr);
+ wattrset(win, selected ? dlg_clr.item_selected.atr : dlg_clr.item.atr);
mvwaddstr(win, choice, item_x, menu_item);
if (hotkey) {
- wattrset(win, selected ? tag_key_selected_attr : tag_key_attr);
+ wattrset(win, selected ? dlg_clr.tag_key_selected.atr
+ : dlg_clr.tag_key.atr);
mvwaddch(win, choice, item_x + j, menu_item[j]);
}
if (selected) {
@@ -117,11 +118,11 @@ static void print_arrows(WINDOW * win, i
wmove(win, y, x);
if (scroll > 0) {
- wattrset(win, uarrow_attr);
+ wattrset(win, dlg_clr.uarrow.atr);
waddch(win, ACS_UARROW);
waddstr(win, "(-)");
} else {
- wattrset(win, menubox_attr);
+ wattrset(win, dlg_clr.menubox.atr);
waddch(win, ACS_HLINE);
waddch(win, ACS_HLINE);
waddch(win, ACS_HLINE);
@@ -133,11 +134,11 @@ static void print_arrows(WINDOW * win, i
wrefresh(win);
if ((height < item_no) && (scroll + height < item_no)) {
- wattrset(win, darrow_attr);
+ wattrset(win, dlg_clr.darrow.atr);
waddch(win, ACS_DARROW);
waddstr(win, "(+)");
} else {
- wattrset(win, menubox_border_attr);
+ wattrset(win, dlg_clr.menubox_border.atr);
waddch(win, ACS_HLINE);
waddch(win, ACS_HLINE);
waddch(win, ACS_HLINE);
@@ -199,18 +200,19 @@ int dialog_menu(const char *title, const
dialog = newwin(height, width, y, x);
keypad(dialog, TRUE);
- draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr);
- wattrset(dialog, border_attr);
+ draw_box(dialog, 0, 0, height, width,
+ dlg_clr.dialog.atr, dlg_clr.border.atr);
+ wattrset(dialog, dlg_clr.border.atr);
mvwaddch(dialog, height - 3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++)
waddch(dialog, ACS_HLINE);
- wattrset(dialog, dialog_attr);
- wbkgdset(dialog, dialog_attr & A_COLOR);
+ wattrset(dialog, dlg_clr.dialog.atr);
+ wbkgdset(dialog, dlg_clr.dialog.atr & A_COLOR);
waddch(dialog, ACS_RTEE);
print_title(dialog, title, width);
- wattrset(dialog, dialog_attr);
+ wattrset(dialog, dlg_clr.dialog.atr);
print_autowrap(dialog, prompt, width - 2, 1, 3);
menu_width = width - 6;
@@ -224,7 +226,7 @@ int dialog_menu(const char *title, const
/* draw a box around the menu items */
draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2,
- menubox_border_attr, menubox_attr);
+ dlg_clr.menubox_border.atr, dlg_clr.menubox.atr);
item_x = (menu_width - 70) / 2;
diff --git a/scripts/kconfig/lxdialog/msgbox.c b/scripts/kconfig/lxdialog/msgbox.c
index 7323f54..f5ca3c6 100644
--- a/scripts/kconfig/lxdialog/msgbox.c
+++ b/scripts/kconfig/lxdialog/msgbox.c
@@ -40,19 +40,20 @@ int dialog_msgbox(const char *title, con
dialog = newwin(height, width, y, x);
keypad(dialog, TRUE);
- draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr);
+ draw_box(dialog, 0, 0, height, width,
+ dlg_clr.dialog.atr, dlg_clr.border.atr);
print_title(dialog, title, width);
- wattrset(dialog, dialog_attr);
+ wattrset(dialog, dlg_clr.dialog.atr);
print_autowrap(dialog, prompt, width - 2, 1, 2);
if (pause) {
- wattrset(dialog, border_attr);
+ wattrset(dialog, dlg_clr.border.atr);
mvwaddch(dialog, height - 3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++)
waddch(dialog, ACS_HLINE);
- wattrset(dialog, dialog_attr);
+ wattrset(dialog, dlg_clr.dialog.atr);
waddch(dialog, ACS_RTEE);
print_button(dialog, " Ok ", height - 2, width / 2 - 4, TRUE);
diff --git a/scripts/kconfig/lxdialog/textbox.c b/scripts/kconfig/lxdialog/textbox.c
index 77848bb..1dd0882 100644
--- a/scripts/kconfig/lxdialog/textbox.c
+++ b/scripts/kconfig/lxdialog/textbox.c
@@ -87,20 +87,21 @@ int dialog_textbox(const char *title, co
/* Create window for text region, used for scrolling text */
text = subwin(dialog, height - 4, width - 2, y + 1, x + 1);
- wattrset(text, dialog_attr);
- wbkgdset(text, dialog_attr & A_COLOR);
+ wattrset(text, dlg_clr.dialog.atr);
+ wbkgdset(text, dlg_clr.dialog.atr & A_COLOR);
keypad(text, TRUE);
/* register the new window, along with its borders */
- draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr);
+ draw_box(dialog, 0, 0, height, width,
+ dlg_clr.dialog.atr, dlg_clr.border.atr);
- wattrset(dialog, border_attr);
+ wattrset(dialog, dlg_clr.border.atr);
mvwaddch(dialog, height - 3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++)
waddch(dialog, ACS_HLINE);
- wattrset(dialog, dialog_attr);
- wbkgdset(dialog, dialog_attr & A_COLOR);
+ wattrset(dialog, dlg_clr.dialog.atr);
+ wbkgdset(dialog, dlg_clr.dialog.atr & A_COLOR);
waddch(dialog, ACS_RTEE);
print_title(dialog, title, width);
@@ -110,7 +111,7 @@ int dialog_textbox(const char *title, co
getyx(dialog, cur_y, cur_x); /* Save cursor position */
/* Print first page of text */
- attr_clear(text, height - 4, width - 2, dialog_attr);
+ attr_clear(text, height - 4, width - 2, dlg_clr.dialog.atr);
print_page(text, height - 4, width - 2);
print_position(dialog, height, width);
wmove(dialog, cur_y, cur_x); /* Restore cursor position */
@@ -524,8 +525,8 @@ static void print_position(WINDOW * win,
fprintf(stderr, "\nError moving file pointer in print_position().\n");
exit(-1);
}
- wattrset(win, position_indicator_attr);
- wbkgdset(win, position_indicator_attr & A_COLOR);
+ wattrset(win, dlg_clr.position_indicator.atr);
+ wbkgdset(win, dlg_clr.position_indicator.atr & A_COLOR);
percent = !file_size ?
100 : ((fpos - bytes_read + page - buf) * 100) / file_size;
wmove(win, height - 3, width - 9);
diff --git a/scripts/kconfig/lxdialog/util.c b/scripts/kconfig/lxdialog/util.c
index f82cebb..b3cb449 100644
--- a/scripts/kconfig/lxdialog/util.c
+++ b/scripts/kconfig/lxdialog/util.c
@@ -26,80 +26,85 @@ bool use_colors = 1;
const char *backtitle = NULL;
-/*
- * Attribute values, default is for mono display
- */
-chtype attributes[] = {
- A_NORMAL, /* screen_attr */
- A_NORMAL, /* shadow_attr */
- A_NORMAL, /* dialog_attr */
- A_BOLD, /* title_attr */
- A_NORMAL, /* border_attr */
- A_REVERSE, /* button_active_attr */
- A_DIM, /* button_inactive_attr */
- A_REVERSE, /* button_key_active_attr */
- A_BOLD, /* button_key_inactive_attr */
- A_REVERSE, /* button_label_active_attr */
- A_NORMAL, /* button_label_inactive_attr */
- A_NORMAL, /* inputbox_attr */
- A_NORMAL, /* inputbox_border_attr */
- A_NORMAL, /* searchbox_attr */
- A_BOLD, /* searchbox_title_attr */
- A_NORMAL, /* searchbox_border_attr */
- A_BOLD, /* position_indicator_attr */
- A_NORMAL, /* menubox_attr */
- A_NORMAL, /* menubox_border_attr */
- A_NORMAL, /* item_attr */
- A_REVERSE, /* item_selected_attr */
- A_BOLD, /* tag_attr */
- A_REVERSE, /* tag_selected_attr */
- A_BOLD, /* tag_key_attr */
- A_REVERSE, /* tag_key_selected_attr */
- A_BOLD, /* check_attr */
- A_REVERSE, /* check_selected_attr */
- A_BOLD, /* uarrow_attr */
- A_BOLD /* darrow_attr */
+/* Default color scheme. atr is set for mono display */
+#define DLG_CLR(a, f, b, h) { .atr = (a), .fg = (f), .bg = (b), .hl = (h)}
+struct dlg_clr dlg_clr = {
+ .screen = DLG_CLR(A_NORMAL, COLOR_CYAN, COLOR_BLUE, true),
+ .shadow = DLG_CLR(A_NORMAL, COLOR_BLACK, COLOR_BLACK, true),
+ .dialog = DLG_CLR(A_NORMAL, COLOR_BLACK, COLOR_WHITE, false),
+ .title = DLG_CLR(A_BOLD, COLOR_YELLOW, COLOR_WHITE, true),
+ .border = DLG_CLR(A_NORMAL, COLOR_WHITE, COLOR_WHITE, true),
+ .button_active = DLG_CLR(A_REVERSE, COLOR_WHITE, COLOR_BLUE, true),
+ .button_inactive = DLG_CLR(A_DIM, COLOR_BLACK, COLOR_WHITE, false),
+ .button_key_active = DLG_CLR(A_REVERSE, COLOR_WHITE, COLOR_BLUE, true),
+ .button_key_inactive = DLG_CLR(A_BOLD, COLOR_RED, COLOR_WHITE, false),
+ .button_label_active = DLG_CLR(A_REVERSE, COLOR_YELLOW, COLOR_BLUE, true),
+ .button_label_inactive = DLG_CLR(A_NORMAL, COLOR_BLACK, COLOR_WHITE, true),
+ .inputbox = DLG_CLR(A_NORMAL, COLOR_BLACK, COLOR_WHITE, false),
+ .inputbox_border = DLG_CLR(A_NORMAL, COLOR_BLACK, COLOR_WHITE, false),
+ .searchbox = DLG_CLR(A_NORMAL, COLOR_BLACK, COLOR_WHITE, false),
+ .searchbox_title = DLG_CLR(A_BOLD, COLOR_YELLOW, COLOR_WHITE, true),
+ .searchbox_border = DLG_CLR(A_NORMAL, COLOR_WHITE, COLOR_WHITE, true),
+ .position_indicator = DLG_CLR(A_BOLD, COLOR_YELLOW, COLOR_WHITE, true),
+ .menubox = DLG_CLR(A_NORMAL, COLOR_BLACK, COLOR_WHITE, false),
+ .menubox_border = DLG_CLR(A_NORMAL, COLOR_WHITE, COLOR_WHITE, true),
+ .item = DLG_CLR(A_NORMAL, COLOR_BLACK, COLOR_WHITE, false),
+ .item_selected = DLG_CLR(A_REVERSE, COLOR_WHITE, COLOR_BLUE, true),
+ .tag = DLG_CLR(A_BOLD, COLOR_YELLOW, COLOR_WHITE, true),
+ .tag_selected = DLG_CLR(A_REVERSE, COLOR_YELLOW, COLOR_BLUE, true),
+ .tag_key = DLG_CLR(A_BOLD, COLOR_YELLOW, COLOR_WHITE, true),
+ .tag_key_selected = DLG_CLR(A_REVERSE, COLOR_YELLOW, COLOR_BLUE, true),
+ .check = DLG_CLR(A_BOLD, COLOR_BLACK, COLOR_WHITE, false),
+ .check_selected = DLG_CLR(A_REVERSE, COLOR_WHITE, COLOR_BLUE, true),
+ .uarrow = DLG_CLR(A_BOLD, COLOR_GREEN, COLOR_WHITE, true),
+ .darrow = DLG_CLR(A_BOLD, COLOR_GREEN, COLOR_WHITE, true),
};
-#include "colors.h"
+static void init_one_color(struct dialog_color *color)
+{
+ static int pair = 0;
+
+ pair++;
+ color->pair = pair; /* unused so far */
+ init_pair(pair, color->fg, color->bg);
+ if (color->hl)
+ color->atr = A_BOLD | COLOR_PAIR(pair);
+ else
+ color->atr = COLOR_PAIR(pair);
+}
-/*
- * Table of color values
- */
-int color_table[][3] = {
- {SCREEN_FG, SCREEN_BG, SCREEN_HL},
- {SHADOW_FG, SHADOW_BG, SHADOW_HL},
- {DIALOG_FG, DIALOG_BG, DIALOG_HL},
- {TITLE_FG, TITLE_BG, TITLE_HL},
- {BORDER_FG, BORDER_BG, BORDER_HL},
- {BUTTON_ACTIVE_FG, BUTTON_ACTIVE_BG, BUTTON_ACTIVE_HL},
- {BUTTON_INACTIVE_FG, BUTTON_INACTIVE_BG, BUTTON_INACTIVE_HL},
- {BUTTON_KEY_ACTIVE_FG, BUTTON_KEY_ACTIVE_BG, BUTTON_KEY_ACTIVE_HL},
- {BUTTON_KEY_INACTIVE_FG, BUTTON_KEY_INACTIVE_BG,
- BUTTON_KEY_INACTIVE_HL},
- {BUTTON_LABEL_ACTIVE_FG, BUTTON_LABEL_ACTIVE_BG,
- BUTTON_LABEL_ACTIVE_HL},
- {BUTTON_LABEL_INACTIVE_FG, BUTTON_LABEL_INACTIVE_BG,
- BUTTON_LABEL_INACTIVE_HL},
- {INPUTBOX_FG, INPUTBOX_BG, INPUTBOX_HL},
- {INPUTBOX_BORDER_FG, INPUTBOX_BORDER_BG, INPUTBOX_BORDER_HL},
- {SEARCHBOX_FG, SEARCHBOX_BG, SEARCHBOX_HL},
- {SEARCHBOX_TITLE_FG, SEARCHBOX_TITLE_BG, SEARCHBOX_TITLE_HL},
- {SEARCHBOX_BORDER_FG, SEARCHBOX_BORDER_BG, SEARCHBOX_BORDER_HL},
- {POSITION_INDICATOR_FG, POSITION_INDICATOR_BG, POSITION_INDICATOR_HL},
- {MENUBOX_FG, MENUBOX_BG, MENUBOX_HL},
- {MENUBOX_BORDER_FG, MENUBOX_BORDER_BG, MENUBOX_BORDER_HL},
- {ITEM_FG, ITEM_BG, ITEM_HL},
- {ITEM_SELECTED_FG, ITEM_SELECTED_BG, ITEM_SELECTED_HL},
- {TAG_FG, TAG_BG, TAG_HL},
- {TAG_SELECTED_FG, TAG_SELECTED_BG, TAG_SELECTED_HL},
- {TAG_KEY_FG, TAG_KEY_BG, TAG_KEY_HL},
- {TAG_KEY_SELECTED_FG, TAG_KEY_SELECTED_BG, TAG_KEY_SELECTED_HL},
- {CHECK_FG, CHECK_BG, CHECK_HL},
- {CHECK_SELECTED_FG, CHECK_SELECTED_BG, CHECK_SELECTED_HL},
- {UARROW_FG, UARROW_BG, UARROW_HL},
- {DARROW_FG, DARROW_BG, DARROW_HL},
-}; /* color_table */
+static void init_dialog_colors(void)
+{
+ init_one_color(&dlg_clr.screen);
+ init_one_color(&dlg_clr.shadow);
+ init_one_color(&dlg_clr.dialog);
+ init_one_color(&dlg_clr.title);
+ init_one_color(&dlg_clr.border);
+ init_one_color(&dlg_clr.button_active);
+ init_one_color(&dlg_clr.button_inactive);
+ init_one_color(&dlg_clr.button_key_active);
+ init_one_color(&dlg_clr.button_key_inactive);
+ init_one_color(&dlg_clr.button_label_active);
+ init_one_color(&dlg_clr.button_label_inactive);
+ init_one_color(&dlg_clr.inputbox);
+ init_one_color(&dlg_clr.inputbox_border);
+ init_one_color(&dlg_clr.searchbox);
+ init_one_color(&dlg_clr.searchbox_title);
+ init_one_color(&dlg_clr.searchbox_border);
+ init_one_color(&dlg_clr.position_indicator);
+ init_one_color(&dlg_clr.menubox);
+ init_one_color(&dlg_clr.menubox_border);
+ init_one_color(&dlg_clr.item);
+ init_one_color(&dlg_clr.item_selected);
+ init_one_color(&dlg_clr.tag);
+ init_one_color(&dlg_clr.tag_selected);
+ init_one_color(&dlg_clr.tag_key);
+ init_one_color(&dlg_clr.tag_key_selected);
+ init_one_color(&dlg_clr.check);
+ init_one_color(&dlg_clr.check_selected);
+ init_one_color(&dlg_clr.uarrow);
+ init_one_color(&dlg_clr.darrow);
+}
/*
* Set window to attribute 'attr'
@@ -119,12 +124,12 @@ void attr_clear(WINDOW * win, int height
void dialog_clear(void)
{
- attr_clear(stdscr, LINES, COLS, screen_attr);
+ attr_clear(stdscr, LINES, COLS, dlg_clr.screen.atr);
/* Display background title if it exists ... - SLH */
if (backtitle != NULL) {
int i;
- wattrset(stdscr, screen_attr);
+ wattrset(stdscr, dlg_clr.screen.atr);
mvwaddstr(stdscr, 0, 1, (char *)backtitle);
wmove(stdscr, 1, 1);
for (i = 1; i < COLS - 1; i++)
@@ -154,18 +159,9 @@ void init_dialog(void)
*/
void color_setup(void)
{
- int i;
-
if (has_colors()) { /* Terminal supports color? */
start_color();
-
- /* Initialize color pairs */
- for (i = 0; i < ATTRIBUTE_COUNT; i++)
- init_pair(i + 1, color_table[i][0], color_table[i][1]);
-
- /* Setup color attributes */
- for (i = 0; i < ATTRIBUTE_COUNT; i++)
- attributes[i] = C_ATTR(color_table[i][2], i + 1);
+ init_dialog_colors();
}
}
@@ -184,7 +180,7 @@ void print_title(WINDOW *dialog, const c
{
if (title) {
int tlen = MIN(width - 2, strlen(title));
- wattrset(dialog, title_attr);
+ wattrset(dialog, dlg_clr.title.atr);
mvwaddch(dialog, 0, (width - tlen) / 2 - 1, ' ');
mvwaddnstr(dialog, 0, (width - tlen)/2, title, tlen);
waddch(dialog, ' ');
@@ -264,21 +260,23 @@ void print_button(WINDOW * win, const ch
int i, temp;
wmove(win, y, x);
- wattrset(win, selected ? button_active_attr : button_inactive_attr);
+ wattrset(win, selected ? dlg_clr.button_active.atr
+ : dlg_clr.button_inactive.atr);
waddstr(win, "<");
temp = strspn(label, " ");
label += temp;
- wattrset(win, selected ? button_label_active_attr
- : button_label_inactive_attr);
+ wattrset(win, selected ? dlg_clr.button_label_active.atr
+ : dlg_clr.button_label_inactive.atr);
for (i = 0; i < temp; i++)
waddch(win, ' ');
- wattrset(win, selected ? button_key_active_attr
- : button_key_inactive_attr);
+ wattrset(win, selected ? dlg_clr.button_key_active.atr
+ : dlg_clr.button_key_inactive.atr);
waddch(win, label[0]);
- wattrset(win, selected ? button_label_active_attr
- : button_label_inactive_attr);
+ wattrset(win, selected ? dlg_clr.button_label_active.atr
+ : dlg_clr.button_label_inactive.atr);
waddstr(win, (char *)label + 1);
- wattrset(win, selected ? button_active_attr : button_inactive_attr);
+ wattrset(win, selected ? dlg_clr.button_active.atr
+ : dlg_clr.button_inactive.atr);
waddstr(win, ">");
wmove(win, y, x + temp + 1);
}
@@ -326,7 +324,7 @@ void draw_shadow(WINDOW * win, int y, in
int i;
if (has_colors()) { /* Whether terminal supports color? */
- wattrset(win, shadow_attr);
+ wattrset(win, dlg_clr.shadow.atr);
wmove(win, y + height, x + 2);
for (i = 0; i < width; i++)
waddch(win, winch(win) & A_CHARTEXT);
diff --git a/scripts/kconfig/lxdialog/yesno.c b/scripts/kconfig/lxdialog/yesno.c
index cb2568a..3e66cf5 100644
--- a/scripts/kconfig/lxdialog/yesno.c
+++ b/scripts/kconfig/lxdialog/yesno.c
@@ -53,17 +53,18 @@ int dialog_yesno(const char *title, cons
dialog = newwin(height, width, y, x);
keypad(dialog, TRUE);
- draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr);
- wattrset(dialog, border_attr);
+ draw_box(dialog, 0, 0, height, width,
+ dlg_clr.dialog.atr, dlg_clr.border.atr);
+ wattrset(dialog, dlg_clr.border.atr);
mvwaddch(dialog, height - 3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++)
waddch(dialog, ACS_HLINE);
- wattrset(dialog, dialog_attr);
+ wattrset(dialog, dlg_clr.dialog.atr);
waddch(dialog, ACS_RTEE);
print_title(dialog, title, width);
- wattrset(dialog, dialog_attr);
+ wattrset(dialog, dlg_clr.dialog.atr);
print_autowrap(dialog, prompt, width - 2, 1, 3);
print_buttons(dialog, height, width, 0);
--
1.4.1.rc2.gfc04
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 2/3] kconfig/lxdialog: add support for color themes and add blackbg theme
2006-07-24 11:36 [PATCH 0/3] kconfig/lxdialog: color theme support Sam Ravnborg
2006-07-24 11:37 ` [PATCH 1/3] kconfig/lxdialog: refactored color settings Sam Ravnborg
@ 2006-07-24 11:38 ` Sam Ravnborg
2006-07-24 12:25 ` Roman Zippel
2006-07-24 11:39 ` [PATCH 3/3] kconfig/lxdialog: add bluetitle color scheme Sam Ravnborg
2 siblings, 1 reply; 9+ messages in thread
From: Sam Ravnborg @ 2006-07-24 11:38 UTC (permalink / raw)
To: LKML, Roman Zippel, Andrew Morton
>From 7ba8d280514c5caf48d36c0f02d9be139ec71e58 Mon Sep 17 00:00:00 2001
From: Sam Ravnborg <sam@mars.ravnborg.org>
Date: Mon, 24 Jul 2006 12:55:29 +0200
Subject: [PATCH] kconfig/lxdialog: add support for color themes and add blackbg theme
The blackbg color scheme is made by: Han Boetes
To use the blackbg color theme use:
make MENUCONFIG_COLOR=blackbg menuconfig
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
scripts/kconfig/lxdialog/dialog.h | 2 -
scripts/kconfig/lxdialog/util.c | 85 ++++++++++++++++++++++++++++++-------
scripts/kconfig/mconf.c | 14 ++++++
3 files changed, 82 insertions(+), 19 deletions(-)
diff --git a/scripts/kconfig/lxdialog/dialog.h b/scripts/kconfig/lxdialog/dialog.h
index aee89b3..d16bd6e 100644
--- a/scripts/kconfig/lxdialog/dialog.h
+++ b/scripts/kconfig/lxdialog/dialog.h
@@ -135,7 +135,6 @@ extern struct dlg_clr dlg_clr;
/*
* Global variables
*/
-extern bool use_colors;
extern bool use_shadow;
extern const char *backtitle;
@@ -150,7 +149,6 @@ void init_dialog(void);
void end_dialog(void);
void attr_clear(WINDOW * win, int height, int width, chtype attr);
void dialog_clear(void);
-void color_setup(void);
void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x);
void print_button(WINDOW * win, const char *label, int y, int x, int selected);
void print_title(WINDOW *dialog, const char *title, int width);
diff --git a/scripts/kconfig/lxdialog/util.c b/scripts/kconfig/lxdialog/util.c
index b3cb449..e3b1462 100644
--- a/scripts/kconfig/lxdialog/util.c
+++ b/scripts/kconfig/lxdialog/util.c
@@ -21,9 +21,6 @@
#include "dialog.h"
-/* use colors by default? */
-bool use_colors = 1;
-
const char *backtitle = NULL;
/* Default color scheme. atr is set for mono display */
@@ -60,6 +57,51 @@ struct dlg_clr dlg_clr = {
.darrow = DLG_CLR(A_BOLD, COLOR_GREEN, COLOR_WHITE, true),
};
+#define DLG_MODIFY(dlg,f,b,h) dlg_clr.dlg.fg = f; dlg_clr.dlg.bg = b; \
+ dlg_clr.dlg.hl = h;
+/* Modify dlg_clr to selected theme */
+static void set_blackbg_theme(void)
+{
+ DLG_MODIFY(screen, COLOR_RED, COLOR_BLACK, true);
+ DLG_MODIFY(shadow, COLOR_BLACK, COLOR_BLACK, false);
+ DLG_MODIFY(dialog, COLOR_WHITE, COLOR_BLACK, false);
+ DLG_MODIFY(title, COLOR_RED, COLOR_BLACK, false);
+ DLG_MODIFY(border, COLOR_BLACK, COLOR_BLACK, true);
+
+ DLG_MODIFY(button_active, COLOR_YELLOW, COLOR_RED, false);
+ DLG_MODIFY(button_inactive, COLOR_YELLOW, COLOR_BLACK, false);
+ DLG_MODIFY(button_key_active, COLOR_YELLOW, COLOR_RED, true);
+ DLG_MODIFY(button_key_inactive, COLOR_RED, COLOR_BLACK, false);
+ DLG_MODIFY(button_label_active, COLOR_WHITE, COLOR_RED, false);
+ DLG_MODIFY(button_label_inactive, COLOR_BLACK, COLOR_BLACK, true);
+
+ DLG_MODIFY(inputbox, COLOR_YELLOW, COLOR_BLACK, false);
+ DLG_MODIFY(inputbox_border, COLOR_YELLOW, COLOR_BLACK, false);
+
+ DLG_MODIFY(searchbox, COLOR_YELLOW, COLOR_BLACK, false);
+ DLG_MODIFY(searchbox_title, COLOR_YELLOW, COLOR_BLACK, true);
+ DLG_MODIFY(searchbox_border, COLOR_BLACK, COLOR_BLACK, true);
+
+ DLG_MODIFY(position_indicator, COLOR_RED, COLOR_BLACK, false);
+
+ DLG_MODIFY(menubox, COLOR_YELLOW, COLOR_BLACK, false);
+ DLG_MODIFY(menubox_border, COLOR_BLACK, COLOR_BLACK, true);
+
+ DLG_MODIFY(item, COLOR_WHITE, COLOR_BLACK, false);
+ DLG_MODIFY(item_selected, COLOR_WHITE, COLOR_RED, false);
+
+ DLG_MODIFY(tag, COLOR_RED, COLOR_BLACK, false);
+ DLG_MODIFY(tag_selected, COLOR_YELLOW, COLOR_RED, true);
+ DLG_MODIFY(tag_key, COLOR_RED, COLOR_BLACK, false);
+ DLG_MODIFY(tag_key_selected, COLOR_YELLOW, COLOR_RED, true);
+
+ DLG_MODIFY(check, COLOR_YELLOW, COLOR_BLACK, false);
+ DLG_MODIFY(check_selected, COLOR_YELLOW, COLOR_RED, true);
+
+ DLG_MODIFY(uarrow, COLOR_RED, COLOR_BLACK, false);
+ DLG_MODIFY(darrow, COLOR_RED, COLOR_BLACK, false);
+}
+
static void init_one_color(struct dialog_color *color)
{
static int pair = 0;
@@ -106,6 +148,29 @@ static void init_dialog_colors(void)
init_one_color(&dlg_clr.darrow);
}
+static int set_color_theme(const char *theme)
+{
+ int use_color = 1;
+ if (!strncasecmp (theme, "blackbg", sizeof("blackbg")))
+ set_blackbg_theme();
+ else if (!strncasecmp(theme, "mono", sizeof("mono")))
+ use_color = 0;
+ return use_color;
+}
+
+/*
+ * Setup for color display
+ */
+static void color_setup(const char *theme)
+{
+ if (set_color_theme(theme))
+ if (has_colors()) { /* Terminal supports color? */
+ start_color();
+ init_dialog_colors();
+ }
+}
+
+
/*
* Set window to attribute 'attr'
*/
@@ -148,24 +213,12 @@ void init_dialog(void)
cbreak();
noecho();
- if (use_colors) /* Set up colors */
- color_setup();
+ color_setup(getenv("MENUCONFIG_COLOR"));
dialog_clear();
}
/*
- * Setup for color display
- */
-void color_setup(void)
-{
- if (has_colors()) { /* Terminal supports color? */
- start_color();
- init_dialog_colors();
- }
-}
-
-/*
* End using dialog functions.
*/
void end_dialog(void)
diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c
index 7f97319..d518161 100644
--- a/scripts/kconfig/mconf.c
+++ b/scripts/kconfig/mconf.c
@@ -159,7 +159,19 @@ static const char mconf_readme[] = N_(
"\n"
"Note that this mode can eventually be a little more CPU expensive\n"
"(especially with a larger number of unrolled categories) than the\n"
-"default mode.\n"),
+"default mode.\n"
+"\n"
+"Different color themes available\n"
+"--------------------------------\n"
+"It is possible to select different color themes using the variable\n"
+"MENUCONFIG_COLOR. To select a theme use:\n"
+"\n"
+"make MENUCONFIG_COLOR=<theme> menuconfig\n"
+"\n"
+"Available themes are\n"
+" mono => selects colors suitable for monochrome displays\n"
+" blackbg => selects a color scheme with black background\n"
+"\n"),
menu_instructions[] = N_(
"Arrow keys navigate the menu. "
"<Enter> selects submenus --->. "
--
1.4.1.rc2.gfc04
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 3/3] kconfig/lxdialog: add bluetitle color scheme
2006-07-24 11:36 [PATCH 0/3] kconfig/lxdialog: color theme support Sam Ravnborg
2006-07-24 11:37 ` [PATCH 1/3] kconfig/lxdialog: refactored color settings Sam Ravnborg
2006-07-24 11:38 ` [PATCH 2/3] kconfig/lxdialog: add support for color themes and add blackbg theme Sam Ravnborg
@ 2006-07-24 11:39 ` Sam Ravnborg
2006-07-24 12:28 ` Roman Zippel
2 siblings, 1 reply; 9+ messages in thread
From: Sam Ravnborg @ 2006-07-24 11:39 UTC (permalink / raw)
To: LKML, Roman Zippel, Andrew Morton
>From 911310907eca1e8c1feea41d9e1e3860f4eb3815 Mon Sep 17 00:00:00 2001
From: Sam Ravnborg <sam@mars.ravnborg.org>
Date: Mon, 24 Jul 2006 13:30:05 +0200
Subject: [PATCH] kconfig/lxdialog: add bluetitle color scheme
Originally from -mm but modofied to the new color scheme support
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
scripts/kconfig/lxdialog/util.c | 14 ++++++++++++++
scripts/kconfig/mconf.c | 1 +
2 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/scripts/kconfig/lxdialog/util.c b/scripts/kconfig/lxdialog/util.c
index e3b1462..99f88b4 100644
--- a/scripts/kconfig/lxdialog/util.c
+++ b/scripts/kconfig/lxdialog/util.c
@@ -102,6 +102,18 @@ static void set_blackbg_theme(void)
DLG_MODIFY(darrow, COLOR_RED, COLOR_BLACK, false);
}
+static void set_bluetitle_theme(void)
+{
+ DLG_MODIFY(title, COLOR_BLUE, COLOR_WHITE, true);
+ DLG_MODIFY(button_label_active, COLOR_BLUE, COLOR_BLUE, true);
+ DLG_MODIFY(searchbox_title, COLOR_BLUE, COLOR_WHITE, true);
+ DLG_MODIFY(position_indicator, COLOR_BLUE, COLOR_WHITE, true);
+ DLG_MODIFY(tag, COLOR_BLUE, COLOR_WHITE, true);
+ DLG_MODIFY(tag_selected, COLOR_BLUE, COLOR_BLUE, true);
+ DLG_MODIFY(tag_key, COLOR_BLUE, COLOR_WHITE, true);
+ DLG_MODIFY(tag_key_selected, COLOR_BLUE, COLOR_BLUE, true);
+}
+
static void init_one_color(struct dialog_color *color)
{
static int pair = 0;
@@ -153,6 +165,8 @@ static int set_color_theme(const char *t
int use_color = 1;
if (!strncasecmp (theme, "blackbg", sizeof("blackbg")))
set_blackbg_theme();
+ if (!strncasecmp (theme, "bluetitle", sizeof("bluetitle")))
+ set_bluetitle_theme();
else if (!strncasecmp(theme, "mono", sizeof("mono")))
use_color = 0;
return use_color;
diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c
index d518161..ce36eaa 100644
--- a/scripts/kconfig/mconf.c
+++ b/scripts/kconfig/mconf.c
@@ -171,6 +171,7 @@ static const char mconf_readme[] = N_(
"Available themes are\n"
" mono => selects colors suitable for monochrome displays\n"
" blackbg => selects a color scheme with black background\n"
+" bluetitle => replace yellow titles with blue in classic scheme\n"
"\n"),
menu_instructions[] = N_(
"Arrow keys navigate the menu. "
--
1.4.1.rc2.gfc04
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] kconfig/lxdialog: add support for color themes and add blackbg theme
2006-07-24 11:38 ` [PATCH 2/3] kconfig/lxdialog: add support for color themes and add blackbg theme Sam Ravnborg
@ 2006-07-24 12:25 ` Roman Zippel
2006-07-24 13:04 ` Sam Ravnborg
0 siblings, 1 reply; 9+ messages in thread
From: Roman Zippel @ 2006-07-24 12:25 UTC (permalink / raw)
To: Sam Ravnborg; +Cc: LKML, Andrew Morton
Hi,
On Mon, 24 Jul 2006, Sam Ravnborg wrote:
> +static int set_color_theme(const char *theme)
> +{
> + int use_color = 1;
> + if (!strncasecmp (theme, "blackbg", sizeof("blackbg")))
> + set_blackbg_theme();
> + else if (!strncasecmp(theme, "mono", sizeof("mono")))
> + use_color = 0;
> + return use_color;
> +}
This segfaults if MENUCONFIG_COLOR isn't set.
bye, Roman
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] kconfig/lxdialog: add bluetitle color scheme
2006-07-24 11:39 ` [PATCH 3/3] kconfig/lxdialog: add bluetitle color scheme Sam Ravnborg
@ 2006-07-24 12:28 ` Roman Zippel
2006-07-24 13:15 ` Sam Ravnborg
0 siblings, 1 reply; 9+ messages in thread
From: Roman Zippel @ 2006-07-24 12:28 UTC (permalink / raw)
To: Sam Ravnborg; +Cc: LKML, Andrew Morton
Hi,
On Mon, 24 Jul 2006, Sam Ravnborg wrote:
> +static void set_bluetitle_theme(void)
> +{
> + DLG_MODIFY(title, COLOR_BLUE, COLOR_WHITE, true);
> + DLG_MODIFY(button_label_active, COLOR_BLUE, COLOR_BLUE, true);
> + DLG_MODIFY(searchbox_title, COLOR_BLUE, COLOR_WHITE, true);
> + DLG_MODIFY(position_indicator, COLOR_BLUE, COLOR_WHITE, true);
> + DLG_MODIFY(tag, COLOR_BLUE, COLOR_WHITE, true);
> + DLG_MODIFY(tag_selected, COLOR_BLUE, COLOR_BLUE, true);
> + DLG_MODIFY(tag_key, COLOR_BLUE, COLOR_WHITE, true);
> + DLG_MODIFY(tag_key_selected, COLOR_BLUE, COLOR_BLUE, true);
> +}
In general I would like to see this one become the default, as yellow on
white is really terrible, but this one needs fixing too - blue on blue is
not really readable either. :)
bye, Roman
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] kconfig/lxdialog: add support for color themes and add blackbg theme
2006-07-24 12:25 ` Roman Zippel
@ 2006-07-24 13:04 ` Sam Ravnborg
0 siblings, 0 replies; 9+ messages in thread
From: Sam Ravnborg @ 2006-07-24 13:04 UTC (permalink / raw)
To: Roman Zippel; +Cc: LKML, Andrew Morton
On Mon, Jul 24, 2006 at 02:25:32PM +0200, Roman Zippel wrote:
> Hi,
>
> On Mon, 24 Jul 2006, Sam Ravnborg wrote:
>
> > +static int set_color_theme(const char *theme)
> > +{
> > + int use_color = 1;
> > + if (!strncasecmp (theme, "blackbg", sizeof("blackbg")))
> > + set_blackbg_theme();
> > + else if (!strncasecmp(theme, "mono", sizeof("mono")))
> > + use_color = 0;
> > + return use_color;
> > +}
>
> This segfaults if MENUCONFIG_COLOR isn't set.
Thanks - will fix. I expected str* to be NULL safe...
Sam
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] kconfig/lxdialog: add bluetitle color scheme
2006-07-24 12:28 ` Roman Zippel
@ 2006-07-24 13:15 ` Sam Ravnborg
2006-07-24 13:37 ` Roman Zippel
0 siblings, 1 reply; 9+ messages in thread
From: Sam Ravnborg @ 2006-07-24 13:15 UTC (permalink / raw)
To: Roman Zippel; +Cc: LKML, Andrew Morton
On Mon, Jul 24, 2006 at 02:28:24PM +0200, Roman Zippel wrote:
> Hi,
>
> On Mon, 24 Jul 2006, Sam Ravnborg wrote:
>
> > +static void set_bluetitle_theme(void)
> > +{
> > + DLG_MODIFY(title, COLOR_BLUE, COLOR_WHITE, true);
> > + DLG_MODIFY(button_label_active, COLOR_BLUE, COLOR_BLUE, true);
> > + DLG_MODIFY(searchbox_title, COLOR_BLUE, COLOR_WHITE, true);
> > + DLG_MODIFY(position_indicator, COLOR_BLUE, COLOR_WHITE, true);
> > + DLG_MODIFY(tag, COLOR_BLUE, COLOR_WHITE, true);
> > + DLG_MODIFY(tag_selected, COLOR_BLUE, COLOR_BLUE, true);
> > + DLG_MODIFY(tag_key, COLOR_BLUE, COLOR_WHITE, true);
> > + DLG_MODIFY(tag_key_selected, COLOR_BLUE, COLOR_BLUE, true);
> > +}
>
> In general I would like to see this one become the default, as yellow on
> white is really terrible, but this one needs fixing too - blue on blue is
> not really readable either. :)
I blindly replaced yellow with blue.
New version looks like this:
static void set_bluetitle_theme(void)
{
DLG_MODIFY(title, COLOR_BLUE, COLOR_WHITE, true);
DLG_MODIFY(tag, COLOR_BLUE, COLOR_WHITE, true);
DLG_MODIFY(tag_key, COLOR_BLUE, COLOR_WHITE, true);
}
The classic color scheme is quite readable on my display.
I can make bluetitle default but keep classic as an option.
Will try this in next version of the patchset.
Sam
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] kconfig/lxdialog: add bluetitle color scheme
2006-07-24 13:15 ` Sam Ravnborg
@ 2006-07-24 13:37 ` Roman Zippel
0 siblings, 0 replies; 9+ messages in thread
From: Roman Zippel @ 2006-07-24 13:37 UTC (permalink / raw)
To: Sam Ravnborg; +Cc: LKML, Andrew Morton
Hi,
On Mon, 24 Jul 2006, Sam Ravnborg wrote:
> I blindly replaced yellow with blue.
> New version looks like this:
> static void set_bluetitle_theme(void)
> {
> DLG_MODIFY(title, COLOR_BLUE, COLOR_WHITE, true);
> DLG_MODIFY(tag, COLOR_BLUE, COLOR_WHITE, true);
> DLG_MODIFY(tag_key, COLOR_BLUE, COLOR_WHITE, true);
> }
The theme below should be a bit better and more consistent, selected text
is always white on blue with a yellow key character.
> The classic color scheme is quite readable on my display.
On mnay displays (especially lcd's) the difference between yellow and
white is very small, so that the text almost disappears.
bye, Roman
---
scripts/kconfig/lxdialog/util.c | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
Index: linux-2.6-git/scripts/kconfig/lxdialog/util.c
===================================================================
--- linux-2.6-git.orig/scripts/kconfig/lxdialog/util.c 2006-07-24 15:00:16.000000000 +0200
+++ linux-2.6-git/scripts/kconfig/lxdialog/util.c 2006-07-24 15:27:20.000000000 +0200
@@ -104,14 +104,13 @@ static void set_blackbg_theme(void)
static void set_bluetitle_theme(void)
{
- DLG_MODIFY(title, COLOR_BLUE, COLOR_WHITE, true);
- DLG_MODIFY(button_label_active, COLOR_BLUE, COLOR_BLUE, true);
- DLG_MODIFY(searchbox_title, COLOR_BLUE, COLOR_WHITE, true);
- DLG_MODIFY(position_indicator, COLOR_BLUE, COLOR_WHITE, true);
- DLG_MODIFY(tag, COLOR_BLUE, COLOR_WHITE, true);
- DLG_MODIFY(tag_selected, COLOR_BLUE, COLOR_BLUE, true);
- DLG_MODIFY(tag_key, COLOR_BLUE, COLOR_WHITE, true);
- DLG_MODIFY(tag_key_selected, COLOR_BLUE, COLOR_BLUE, true);
+ DLG_MODIFY(title, COLOR_BLUE, COLOR_WHITE, true);
+ DLG_MODIFY(button_key_active, COLOR_YELLOW, COLOR_BLUE, true);
+ DLG_MODIFY(button_label_active, COLOR_WHITE, COLOR_BLUE, true);
+ DLG_MODIFY(searchbox_title, COLOR_BLUE, COLOR_WHITE, true);
+ DLG_MODIFY(position_indicator, COLOR_BLUE, COLOR_WHITE, true);
+ DLG_MODIFY(tag, COLOR_BLUE, COLOR_WHITE, true);
+ DLG_MODIFY(tag_key, COLOR_BLUE, COLOR_WHITE, true);
}
static void init_one_color(struct dialog_color *color)
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2006-07-24 13:37 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-07-24 11:36 [PATCH 0/3] kconfig/lxdialog: color theme support Sam Ravnborg
2006-07-24 11:37 ` [PATCH 1/3] kconfig/lxdialog: refactored color settings Sam Ravnborg
2006-07-24 11:38 ` [PATCH 2/3] kconfig/lxdialog: add support for color themes and add blackbg theme Sam Ravnborg
2006-07-24 12:25 ` Roman Zippel
2006-07-24 13:04 ` Sam Ravnborg
2006-07-24 11:39 ` [PATCH 3/3] kconfig/lxdialog: add bluetitle color scheme Sam Ravnborg
2006-07-24 12:28 ` Roman Zippel
2006-07-24 13:15 ` Sam Ravnborg
2006-07-24 13:37 ` Roman Zippel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®