description: Extend 'make menuconfig' to support an alternate color theme or monochrome mode by using make menuconfig MENUCONFIG_COLOR=monochrome|mono|alternate|alt credits: This is a merger of patches by Han Boetes (alternate color theme) and Jan Benedict Glaw (monochrome). URL: http://developer.osdl.org/rddunlap/menuconfig/ product_versions: Linux 2.6.0-test9 patch_name: menuconfig_alt_mono.patch author: Randy.Dunlap patch_version: 2003-10-29.12:52:17 diffstat:= scripts/README.Menuconfig | 10 +++++ scripts/lxdialog/colors.h | 89 +++++++++++++++++++++++++++++++++++++++++++++- scripts/lxdialog/dialog.h | 2 - scripts/lxdialog/util.c | 77 +++++++++++++++++++++++++++++++++++---- 4 files changed, 167 insertions(+), 11 deletions(-) diff -Naurp ./scripts/lxdialog/util.c~colors ./scripts/lxdialog/util.c --- ./scripts/lxdialog/util.c~colors 2003-10-25 11:43:40.000000000 -0700 +++ ./scripts/lxdialog/util.c 2003-10-29 12:45:22.000000000 -0800 @@ -21,10 +21,6 @@ #include "dialog.h" - -/* use colors by default? */ -bool use_colors = 1; - const char *backtitle = NULL; const char *dialog_result; @@ -68,10 +64,11 @@ chtype attributes[] = #include "colors.h" +#define ROW_SIZE 3 /* * Table of color values */ -int color_table[][3] = +int color_table [ATTRIBUTE_COUNT][ROW_SIZE] = { {SCREEN_FG, SCREEN_BG, SCREEN_HL}, {SHADOW_FG, SHADOW_BG, SHADOW_HL}, @@ -106,6 +103,43 @@ int color_table[][3] = }; /* color_table */ /* + * Alternate Table of color values + */ +int color_table_alt [ATTRIBUTE_COUNT][ROW_SIZE] = +{ + {SCREEN_FG_ALT, SCREEN_BG_ALT, SCREEN_HL_ALT}, + {SHADOW_FG_ALT, SHADOW_BG_ALT, SHADOW_HL_ALT}, + {DIALOG_FG_ALT, DIALOG_BG_ALT, DIALOG_HL_ALT}, + {TITLE_FG_ALT, TITLE_BG_ALT, TITLE_HL_ALT}, + {BORDER_FG_ALT, BORDER_BG_ALT, BORDER_HL_ALT}, + {BUTTON_ACTIVE_FG_ALT, BUTTON_ACTIVE_BG_ALT, BUTTON_ACTIVE_HL_ALT}, + {BUTTON_INACTIVE_FG_ALT, BUTTON_INACTIVE_BG_ALT, BUTTON_INACTIVE_HL_ALT}, + {BUTTON_KEY_ACTIVE_FG_ALT, BUTTON_KEY_ACTIVE_BG_ALT, BUTTON_KEY_ACTIVE_HL_ALT}, + {BUTTON_KEY_INACTIVE_FG_ALT, BUTTON_KEY_INACTIVE_BG_ALT, BUTTON_KEY_INACTIVE_HL_ALT}, + {BUTTON_LABEL_ACTIVE_FG_ALT, BUTTON_LABEL_ACTIVE_BG_ALT, BUTTON_LABEL_ACTIVE_HL_ALT}, + {BUTTON_LABEL_INACTIVE_FG_ALT, BUTTON_LABEL_INACTIVE_BG_ALT, + BUTTON_LABEL_INACTIVE_HL_ALT}, + {INPUTBOX_FG_ALT, INPUTBOX_BG_ALT, INPUTBOX_HL_ALT}, + {INPUTBOX_BORDER_FG_ALT, INPUTBOX_BORDER_BG_ALT, INPUTBOX_BORDER_HL_ALT}, + {SEARCHBOX_FG_ALT, SEARCHBOX_BG_ALT, SEARCHBOX_HL_ALT}, + {SEARCHBOX_TITLE_FG_ALT, SEARCHBOX_TITLE_BG_ALT, SEARCHBOX_TITLE_HL_ALT}, + {SEARCHBOX_BORDER_FG_ALT, SEARCHBOX_BORDER_BG_ALT, SEARCHBOX_BORDER_HL_ALT}, + {POSITION_INDICATOR_FG_ALT, POSITION_INDICATOR_BG_ALT, POSITION_INDICATOR_HL_ALT}, + {MENUBOX_FG_ALT, MENUBOX_BG_ALT, MENUBOX_HL_ALT}, + {MENUBOX_BORDER_FG_ALT, MENUBOX_BORDER_BG_ALT, MENUBOX_BORDER_HL_ALT}, + {ITEM_FG_ALT, ITEM_BG_ALT, ITEM_HL_ALT}, + {ITEM_SELECTED_FG_ALT, ITEM_SELECTED_BG_ALT, ITEM_SELECTED_HL_ALT}, + {TAG_FG_ALT, TAG_BG_ALT, TAG_HL_ALT}, + {TAG_SELECTED_FG_ALT, TAG_SELECTED_BG_ALT, TAG_SELECTED_HL_ALT}, + {TAG_KEY_FG_ALT, TAG_KEY_BG_ALT, TAG_KEY_HL_ALT}, + {TAG_KEY_SELECTED_FG_ALT, TAG_KEY_SELECTED_BG_ALT, TAG_KEY_SELECTED_HL_ALT}, + {CHECK_FG_ALT, CHECK_BG_ALT, CHECK_HL_ALT}, + {CHECK_SELECTED_FG_ALT, CHECK_SELECTED_BG_ALT, CHECK_SELECTED_HL_ALT}, + {UARROW_FG_ALT, UARROW_BG_ALT, UARROW_HL_ALT}, + {DARROW_FG_ALT, DARROW_BG_ALT, DARROW_HL_ALT}, +}; /* color_table_alt */ + +/* * Set window to attribute 'attr' */ void @@ -144,15 +178,29 @@ void dialog_clear (void) void init_dialog (void) { + /* "mono" ==> -1, 0 ==> default, "alternate" ==> 1 */ + int color_which = 0; + char *colormode; + initscr (); /* Init curses */ keypad (stdscr, TRUE); cbreak (); noecho (); + /* check for MENUCONFIG_COLOR = mono(chrome) | alt(ernate) */ + colormode = getenv("MENUCONFIG_COLOR"); + if (colormode) { + if (!strcasecmp (colormode, "alt") + || !strcasecmp (colormode, "alternate")) + color_which = 1; + else + if (!strcasecmp (colormode, "mono") + || !strcasecmp (colormode, "monochrome")) + color_which = -1; + } - if (use_colors) /* Set up colors */ - color_setup (); - + if (color_which >= 0) + color_setup (color_which); dialog_clear (); } @@ -161,13 +209,14 @@ init_dialog (void) * Setup for color display */ void -color_setup (void) +color_setup (int which) { int i; if (has_colors ()) { /* Terminal supports color? */ start_color (); + if (which == 0) { /* Initialize color pairs */ for (i = 0; i < ATTRIBUTE_COUNT; i++) init_pair (i + 1, color_table[i][0], color_table[i][1]); @@ -176,6 +225,16 @@ color_setup (void) for (i = 0; i < ATTRIBUTE_COUNT; i++) attributes[i] = C_ATTR (color_table[i][2], i + 1); } + else { /* alternate color table */ + /* Initialize color pairs */ + for (i = 0; i < ATTRIBUTE_COUNT; i++) + init_pair (i + 1, color_table_alt[i][0], color_table_alt[i][1]); + + /* Setup color attributes */ + for (i = 0; i < ATTRIBUTE_COUNT; i++) + attributes[i] = C_ATTR (color_table_alt[i][2], i + 1); + } + } } /* diff -Naurp ./scripts/lxdialog/colors.h~colors ./scripts/lxdialog/colors.h --- ./scripts/lxdialog/colors.h~colors 2003-10-25 11:42:50.000000000 -0700 +++ ./scripts/lxdialog/colors.h 2003-10-29 11:44:02.000000000 -0800 @@ -24,123 +24,210 @@ * * *_FG = foreground * *_BG = background - * *_HL = highlight? + * *_HL = highlight */ #define SCREEN_FG COLOR_CYAN #define SCREEN_BG COLOR_BLUE #define SCREEN_HL TRUE +#define SCREEN_FG_ALT COLOR_BLACK +#define SCREEN_BG_ALT COLOR_BLACK +#define SCREEN_HL_ALT TRUE #define SHADOW_FG COLOR_BLACK #define SHADOW_BG COLOR_BLACK #define SHADOW_HL TRUE +#define SHADOW_FG_ALT COLOR_BLACK +#define SHADOW_BG_ALT COLOR_BLACK +#define SHADOW_HL_ALT FALSE #define DIALOG_FG COLOR_BLACK #define DIALOG_BG COLOR_WHITE #define DIALOG_HL FALSE +#define DIALOG_FG_ALT COLOR_WHITE +#define DIALOG_BG_ALT COLOR_BLACK +#define DIALOG_HL_ALT FALSE #define TITLE_FG COLOR_YELLOW #define TITLE_BG COLOR_WHITE #define TITLE_HL TRUE +#define TITLE_FG_ALT COLOR_RED +#define TITLE_BG_ALT COLOR_BLACK +#define TITLE_HL_ALT FALSE #define BORDER_FG COLOR_WHITE #define BORDER_BG COLOR_WHITE #define BORDER_HL TRUE +#define BORDER_FG_ALT COLOR_BLACK +#define BORDER_BG_ALT COLOR_BLACK +#define BORDER_HL_ALT TRUE #define BUTTON_ACTIVE_FG COLOR_WHITE #define BUTTON_ACTIVE_BG COLOR_BLUE #define BUTTON_ACTIVE_HL TRUE +#define BUTTON_ACTIVE_FG_ALT COLOR_YELLOW +#define BUTTON_ACTIVE_BG_ALT COLOR_RED +#define BUTTON_ACTIVE_HL_ALT FALSE #define BUTTON_INACTIVE_FG COLOR_BLACK #define BUTTON_INACTIVE_BG COLOR_WHITE #define BUTTON_INACTIVE_HL FALSE +#define BUTTON_INACTIVE_FG_ALT COLOR_YELLOW +#define BUTTON_INACTIVE_BG_ALT COLOR_BLACK +#define BUTTON_INACTIVE_HL_ALT FALSE #define BUTTON_KEY_ACTIVE_FG COLOR_WHITE #define BUTTON_KEY_ACTIVE_BG COLOR_BLUE #define BUTTON_KEY_ACTIVE_HL TRUE +#define BUTTON_KEY_ACTIVE_FG_ALT COLOR_YELLOW +#define BUTTON_KEY_ACTIVE_BG_ALT COLOR_RED +#define BUTTON_KEY_ACTIVE_HL_ALT TRUE #define BUTTON_KEY_INACTIVE_FG COLOR_RED #define BUTTON_KEY_INACTIVE_BG COLOR_WHITE #define BUTTON_KEY_INACTIVE_HL FALSE +#define BUTTON_KEY_INACTIVE_FG_ALT COLOR_RED +#define BUTTON_KEY_INACTIVE_BG_ALT COLOR_BLACK +#define BUTTON_KEY_INACTIVE_HL_ALT FALSE #define BUTTON_LABEL_ACTIVE_FG COLOR_YELLOW #define BUTTON_LABEL_ACTIVE_BG COLOR_BLUE #define BUTTON_LABEL_ACTIVE_HL TRUE +#define BUTTON_LABEL_ACTIVE_FG_ALT COLOR_WHITE +#define BUTTON_LABEL_ACTIVE_BG_ALT COLOR_RED +#define BUTTON_LABEL_ACTIVE_HL_ALT FALSE #define BUTTON_LABEL_INACTIVE_FG COLOR_BLACK #define BUTTON_LABEL_INACTIVE_BG COLOR_WHITE #define BUTTON_LABEL_INACTIVE_HL TRUE +#define BUTTON_LABEL_INACTIVE_FG_ALT COLOR_BLACK +#define BUTTON_LABEL_INACTIVE_BG_ALT COLOR_BLACK +#define BUTTON_LABEL_INACTIVE_HL_ALT TRUE #define INPUTBOX_FG COLOR_BLACK #define INPUTBOX_BG COLOR_WHITE #define INPUTBOX_HL FALSE +#define INPUTBOX_FG_ALT COLOR_YELLOW +#define INPUTBOX_BG_ALT COLOR_BLACK +#define INPUTBOX_HL_ALT FALSE #define INPUTBOX_BORDER_FG COLOR_BLACK #define INPUTBOX_BORDER_BG COLOR_WHITE #define INPUTBOX_BORDER_HL FALSE +#define INPUTBOX_BORDER_FG_ALT COLOR_YELLOW +#define INPUTBOX_BORDER_BG_ALT COLOR_BLACK +#define INPUTBOX_BORDER_HL_ALT FALSE #define SEARCHBOX_FG COLOR_BLACK #define SEARCHBOX_BG COLOR_WHITE #define SEARCHBOX_HL FALSE +#define SEARCHBOX_FG_ALT COLOR_YELLOW +#define SEARCHBOX_BG_ALT COLOR_BLACK +#define SEARCHBOX_HL_ALT FALSE #define SEARCHBOX_TITLE_FG COLOR_YELLOW #define SEARCHBOX_TITLE_BG COLOR_WHITE #define SEARCHBOX_TITLE_HL TRUE +#define SEARCHBOX_TITLE_FG_ALT COLOR_YELLOW +#define SEARCHBOX_TITLE_BG_ALT COLOR_BLACK +#define SEARCHBOX_TITLE_HL_ALT TRUE #define SEARCHBOX_BORDER_FG COLOR_WHITE #define SEARCHBOX_BORDER_BG COLOR_WHITE #define SEARCHBOX_BORDER_HL TRUE +#define SEARCHBOX_BORDER_FG_ALT COLOR_BLACK +#define SEARCHBOX_BORDER_BG_ALT COLOR_BLACK +#define SEARCHBOX_BORDER_HL_ALT TRUE #define POSITION_INDICATOR_FG COLOR_YELLOW #define POSITION_INDICATOR_BG COLOR_WHITE #define POSITION_INDICATOR_HL TRUE +#define POSITION_INDICATOR_FG_ALT COLOR_RED +#define POSITION_INDICATOR_BG_ALT COLOR_BLACK +#define POSITION_INDICATOR_HL_ALT FALSE #define MENUBOX_FG COLOR_BLACK #define MENUBOX_BG COLOR_WHITE #define MENUBOX_HL FALSE +#define MENUBOX_FG_ALT COLOR_YELLOW +#define MENUBOX_BG_ALT COLOR_BLACK +#define MENUBOX_HL_ALT FALSE #define MENUBOX_BORDER_FG COLOR_WHITE #define MENUBOX_BORDER_BG COLOR_WHITE #define MENUBOX_BORDER_HL TRUE +#define MENUBOX_BORDER_FG_ALT COLOR_BLACK +#define MENUBOX_BORDER_BG_ALT COLOR_BLACK +#define MENUBOX_BORDER_HL_ALT TRUE #define ITEM_FG COLOR_BLACK #define ITEM_BG COLOR_WHITE #define ITEM_HL FALSE +#define ITEM_FG_ALT COLOR_WHITE +#define ITEM_BG_ALT COLOR_BLACK +#define ITEM_HL_ALT FALSE #define ITEM_SELECTED_FG COLOR_WHITE #define ITEM_SELECTED_BG COLOR_BLUE #define ITEM_SELECTED_HL TRUE +#define ITEM_SELECTED_FG_ALT COLOR_WHITE +#define ITEM_SELECTED_BG_ALT COLOR_RED +#define ITEM_SELECTED_HL_ALT FALSE #define TAG_FG COLOR_YELLOW #define TAG_BG COLOR_WHITE #define TAG_HL TRUE +#define TAG_FG_ALT COLOR_RED +#define TAG_BG_ALT COLOR_BLACK +#define TAG_HL_ALT FALSE #define TAG_SELECTED_FG COLOR_YELLOW #define TAG_SELECTED_BG COLOR_BLUE #define TAG_SELECTED_HL TRUE +#define TAG_SELECTED_FG_ALT COLOR_YELLOW +#define TAG_SELECTED_BG_ALT COLOR_RED +#define TAG_SELECTED_HL_ALT TRUE #define TAG_KEY_FG COLOR_YELLOW #define TAG_KEY_BG COLOR_WHITE #define TAG_KEY_HL TRUE +#define TAG_KEY_FG_ALT COLOR_RED +#define TAG_KEY_BG_ALT COLOR_BLACK +#define TAG_KEY_HL_ALT FALSE #define TAG_KEY_SELECTED_FG COLOR_YELLOW #define TAG_KEY_SELECTED_BG COLOR_BLUE #define TAG_KEY_SELECTED_HL TRUE +#define TAG_KEY_SELECTED_FG_ALT COLOR_YELLOW +#define TAG_KEY_SELECTED_BG_ALT COLOR_RED +#define TAG_KEY_SELECTED_HL_ALT TRUE #define CHECK_FG COLOR_BLACK #define CHECK_BG COLOR_WHITE #define CHECK_HL FALSE +#define CHECK_FG_ALT COLOR_YELLOW +#define CHECK_BG_ALT COLOR_BLACK +#define CHECK_HL_ALT FALSE #define CHECK_SELECTED_FG COLOR_WHITE #define CHECK_SELECTED_BG COLOR_BLUE #define CHECK_SELECTED_HL TRUE +#define CHECK_SELECTED_FG_ALT COLOR_YELLOW +#define CHECK_SELECTED_BG_ALT COLOR_RED +#define CHECK_SELECTED_HL_ALT TRUE #define UARROW_FG COLOR_GREEN #define UARROW_BG COLOR_WHITE #define UARROW_HL TRUE +#define UARROW_FG_ALT COLOR_RED +#define UARROW_BG_ALT COLOR_BLACK +#define UARROW_HL_ALT FALSE #define DARROW_FG COLOR_GREEN #define DARROW_BG COLOR_WHITE #define DARROW_HL TRUE +#define DARROW_FG_ALT COLOR_RED +#define DARROW_BG_ALT COLOR_BLACK +#define DARROW_HL_ALT FALSE /* End of default color definitions */ diff -Naurp ./scripts/lxdialog/dialog.h~colors ./scripts/lxdialog/dialog.h --- ./scripts/lxdialog/dialog.h~colors 2003-10-25 11:44:33.000000000 -0700 +++ ./scripts/lxdialog/dialog.h 2003-10-29 11:54:19.000000000 -0800 @@ -142,7 +142,7 @@ 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 color_setup (int which); 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 draw_box (WINDOW * win, int y, int x, int height, int width, chtype box, diff -Naurp ./scripts/README.Menuconfig~colors ./scripts/README.Menuconfig --- ./scripts/README.Menuconfig~colors 2003-10-25 11:43:31.000000000 -0700 +++ ./scripts/README.Menuconfig 2003-10-29 12:51:23.000000000 -0800 @@ -184,6 +184,16 @@ is already unrolled. Note that this mode can eventually be a little more CPU expensive (especially with a larger number of unrolled categories) than the default mode. + +Also, you can have a black-n-white look by choosing monochrome colors, +or use an alternate color scheme by specifying "alternate": + +make menuconfig MENUCONFIG_COLOR=monochrome +or +make menuconfig MENUCONFIG_COLOR=alternate + +You can specify "monochrome" as "mono" and "alternate" as "alt". + *********************************************************************