From bf1d13f267c35d6a7f130588e9681dd81f84ae05 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Wed, 15 Jul 2020 11:56:34 -0300 Subject: [PATCH] Loading default color table from windows registry. --- src/terminal/colors.c | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------- 1 file changed, 88 insertions(+), 34 deletions(-) diff --git a/src/terminal/colors.c b/src/terminal/colors.c index 091241a..7a7ee3c 100644 --- a/src/terminal/colors.c +++ b/src/terminal/colors.c @@ -36,40 +36,94 @@ /*--[ Implement ]------------------------------------------------------------------------------------*/ -const gchar * v3270_get_default_colors() { - - return "#000000," // V3270_COLOR_BACKGROUND - "#7890F0," // V3270_COLOR_BLUE - "#FF0000," // V3270_COLOR_RED - "#FF00FF," // V3270_COLOR_PINK - "#00FF00," // V3270_COLOR_GREEN - "#00FFFF," // V3270_COLOR_TURQUOISE - "#FFFF00," // V3270_COLOR_YELLOW - "#FFFFFF," // V3270_COLOR_WHITE - "#000000," // V3270_COLOR_BLACK - "#000080," // V3270_COLOR_DARK_BLUE - "#FFA200," // V3270_COLOR_ORANGE - "#800080," // V3270_COLOR_PURPLE - "#008000," // V3270_COLOR_DARK_GREEN - "#008080," // V3270_COLOR_DARK_TURQUOISE - "#A0A000," // V3270_COLOR_MUSTARD - "#C0C0C0," // V3270_COLOR_GRAY - - "#00FF00," // V3270_COLOR_FIELD_DEFAULT - "#FF0000," // V3270_COLOR_FIELD_INTENSIFIED - "#00FFFF," // V3270_COLOR_FIELD_PROTECTED - "#FFFFFF," // V3270_COLOR_FIELD_PROTECTED_INTENSIFIED - - "#404040," // V3270_COLOR_SELECTED_BG - "#FFFFFF," // V3270_COLOR_SELECTED_FG, - - "#00FF00," // V3270_COLOR_CROSS_HAIR - - "#000000," // V3270_COLOR_OIA_BACKGROUND - "#00FF00," // V3270_COLOR_OIA - "#7890F0," // V3270_COLOR_OIA_SEPARATOR - "#FFFFFF," // V3270_COLOR_OIA_STATUS_OK - "#FFFF00," // V3270_COLOR_OIA_STATUS_WARNING +const gchar * v3270_get_default_colors() +{ + +#ifdef _WIN32 + { + HKEY hKey; + DWORD disp = 0; + LSTATUS rc = RegCreateKeyEx( + HKEY_LOCAL_MACHINE, + "Software\\" LIB3270_STRINGIZE_VALUE_OF(PRODUCT_NAME), + 0, + NULL, + REG_OPTION_NON_VOLATILE, + KEY_QUERY_VALUE|KEY_READ, + NULL, + &hKey, + &disp); + + debug("%s=%d","Software\\" LIB3270_STRINGIZE_VALUE_OF(PRODUCT_NAME),rc); + + if(rc == ERROR_SUCCESS) + { + static char * default_colors = NULL; + DWORD cbData = 4096; + + if(!default_colors) + { + default_colors = (char *) malloc(cbData+1); + } + else + { + default_colors = (char *) realloc(default_colors,cbData+1); + } + + DWORD dwRet = RegQueryValueEx(hKey,"colors",NULL,NULL,(LPBYTE) default_colors, &cbData); + + debug("dwRet=%d",dwRet); + + RegCloseKey(hKey); + + if(dwRet == ERROR_SUCCESS) + { + default_colors = (char *) realloc(default_colors,cbData+1); + default_colors[cbData] = 0; + + return default_colors; + } + + exit(-1); + + free(default_colors); + default_colors = NULL; + } + } +#endif // _WIN32 + + return "#000000;" // V3270_COLOR_BACKGROUND + "#7890F0;" // V3270_COLOR_BLUE + "#FF0000;" // V3270_COLOR_RED + "#FF00FF;" // V3270_COLOR_PINK + "#00FF00;" // V3270_COLOR_GREEN + "#00FFFF;" // V3270_COLOR_TURQUOISE + "#FFFF00;" // V3270_COLOR_YELLOW + "#FFFFFF;" // V3270_COLOR_WHITE + "#000000;" // V3270_COLOR_BLACK + "#000080;" // V3270_COLOR_DARK_BLUE + "#FFA200;" // V3270_COLOR_ORANGE + "#800080;" // V3270_COLOR_PURPLE + "#008000;" // V3270_COLOR_DARK_GREEN + "#008080;" // V3270_COLOR_DARK_TURQUOISE + "#A0A000;" // V3270_COLOR_MUSTARD + "#C0C0C0;" // V3270_COLOR_GRAY + + "#00FF00;" // V3270_COLOR_FIELD_DEFAULT + "#FF0000;" // V3270_COLOR_FIELD_INTENSIFIED + "#00FFFF;" // V3270_COLOR_FIELD_PROTECTED + "#FFFFFF;" // V3270_COLOR_FIELD_PROTECTED_INTENSIFIED + + "#404040;" // V3270_COLOR_SELECTED_BG + "#FFFFFF;" // V3270_COLOR_SELECTED_FG, + + "#00FF00;" // V3270_COLOR_CROSS_HAIR + + "#000000;" // V3270_COLOR_OIA_BACKGROUND + "#00FF00;" // V3270_COLOR_OIA + "#7890F0;" // V3270_COLOR_OIA_SEPARATOR + "#FFFFFF;" // V3270_COLOR_OIA_STATUS_OK + "#FFFF00;" // V3270_COLOR_OIA_STATUS_WARNING "#FFFF00"; // V3270_COLOR_OIA_STATUS_INVALID } -- libgit2 0.21.2