Commit bf1d13f267c35d6a7f130588e9681dd81f84ae05
1 parent
1f296515
Exists in
master
and in
1 other branch
Loading default color table from windows registry.
Showing
1 changed file
with
88 additions
and
34 deletions
Show diff stats
src/terminal/colors.c
| @@ -36,40 +36,94 @@ | @@ -36,40 +36,94 @@ | ||
| 36 | 36 | ||
| 37 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 37 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
| 38 | 38 | ||
| 39 | -const gchar * v3270_get_default_colors() { | ||
| 40 | - | ||
| 41 | - return "#000000," // V3270_COLOR_BACKGROUND | ||
| 42 | - "#7890F0," // V3270_COLOR_BLUE | ||
| 43 | - "#FF0000," // V3270_COLOR_RED | ||
| 44 | - "#FF00FF," // V3270_COLOR_PINK | ||
| 45 | - "#00FF00," // V3270_COLOR_GREEN | ||
| 46 | - "#00FFFF," // V3270_COLOR_TURQUOISE | ||
| 47 | - "#FFFF00," // V3270_COLOR_YELLOW | ||
| 48 | - "#FFFFFF," // V3270_COLOR_WHITE | ||
| 49 | - "#000000," // V3270_COLOR_BLACK | ||
| 50 | - "#000080," // V3270_COLOR_DARK_BLUE | ||
| 51 | - "#FFA200," // V3270_COLOR_ORANGE | ||
| 52 | - "#800080," // V3270_COLOR_PURPLE | ||
| 53 | - "#008000," // V3270_COLOR_DARK_GREEN | ||
| 54 | - "#008080," // V3270_COLOR_DARK_TURQUOISE | ||
| 55 | - "#A0A000," // V3270_COLOR_MUSTARD | ||
| 56 | - "#C0C0C0," // V3270_COLOR_GRAY | ||
| 57 | - | ||
| 58 | - "#00FF00," // V3270_COLOR_FIELD_DEFAULT | ||
| 59 | - "#FF0000," // V3270_COLOR_FIELD_INTENSIFIED | ||
| 60 | - "#00FFFF," // V3270_COLOR_FIELD_PROTECTED | ||
| 61 | - "#FFFFFF," // V3270_COLOR_FIELD_PROTECTED_INTENSIFIED | ||
| 62 | - | ||
| 63 | - "#404040," // V3270_COLOR_SELECTED_BG | ||
| 64 | - "#FFFFFF," // V3270_COLOR_SELECTED_FG, | ||
| 65 | - | ||
| 66 | - "#00FF00," // V3270_COLOR_CROSS_HAIR | ||
| 67 | - | ||
| 68 | - "#000000," // V3270_COLOR_OIA_BACKGROUND | ||
| 69 | - "#00FF00," // V3270_COLOR_OIA | ||
| 70 | - "#7890F0," // V3270_COLOR_OIA_SEPARATOR | ||
| 71 | - "#FFFFFF," // V3270_COLOR_OIA_STATUS_OK | ||
| 72 | - "#FFFF00," // V3270_COLOR_OIA_STATUS_WARNING | 39 | +const gchar * v3270_get_default_colors() |
| 40 | +{ | ||
| 41 | + | ||
| 42 | +#ifdef _WIN32 | ||
| 43 | + { | ||
| 44 | + HKEY hKey; | ||
| 45 | + DWORD disp = 0; | ||
| 46 | + LSTATUS rc = RegCreateKeyEx( | ||
| 47 | + HKEY_LOCAL_MACHINE, | ||
| 48 | + "Software\\" LIB3270_STRINGIZE_VALUE_OF(PRODUCT_NAME), | ||
| 49 | + 0, | ||
| 50 | + NULL, | ||
| 51 | + REG_OPTION_NON_VOLATILE, | ||
| 52 | + KEY_QUERY_VALUE|KEY_READ, | ||
| 53 | + NULL, | ||
| 54 | + &hKey, | ||
| 55 | + &disp); | ||
| 56 | + | ||
| 57 | + debug("%s=%d","Software\\" LIB3270_STRINGIZE_VALUE_OF(PRODUCT_NAME),rc); | ||
| 58 | + | ||
| 59 | + if(rc == ERROR_SUCCESS) | ||
| 60 | + { | ||
| 61 | + static char * default_colors = NULL; | ||
| 62 | + DWORD cbData = 4096; | ||
| 63 | + | ||
| 64 | + if(!default_colors) | ||
| 65 | + { | ||
| 66 | + default_colors = (char *) malloc(cbData+1); | ||
| 67 | + } | ||
| 68 | + else | ||
| 69 | + { | ||
| 70 | + default_colors = (char *) realloc(default_colors,cbData+1); | ||
| 71 | + } | ||
| 72 | + | ||
| 73 | + DWORD dwRet = RegQueryValueEx(hKey,"colors",NULL,NULL,(LPBYTE) default_colors, &cbData); | ||
| 74 | + | ||
| 75 | + debug("dwRet=%d",dwRet); | ||
| 76 | + | ||
| 77 | + RegCloseKey(hKey); | ||
| 78 | + | ||
| 79 | + if(dwRet == ERROR_SUCCESS) | ||
| 80 | + { | ||
| 81 | + default_colors = (char *) realloc(default_colors,cbData+1); | ||
| 82 | + default_colors[cbData] = 0; | ||
| 83 | + | ||
| 84 | + return default_colors; | ||
| 85 | + } | ||
| 86 | + | ||
| 87 | + exit(-1); | ||
| 88 | + | ||
| 89 | + free(default_colors); | ||
| 90 | + default_colors = NULL; | ||
| 91 | + } | ||
| 92 | + } | ||
| 93 | +#endif // _WIN32 | ||
| 94 | + | ||
| 95 | + return "#000000;" // V3270_COLOR_BACKGROUND | ||
| 96 | + "#7890F0;" // V3270_COLOR_BLUE | ||
| 97 | + "#FF0000;" // V3270_COLOR_RED | ||
| 98 | + "#FF00FF;" // V3270_COLOR_PINK | ||
| 99 | + "#00FF00;" // V3270_COLOR_GREEN | ||
| 100 | + "#00FFFF;" // V3270_COLOR_TURQUOISE | ||
| 101 | + "#FFFF00;" // V3270_COLOR_YELLOW | ||
| 102 | + "#FFFFFF;" // V3270_COLOR_WHITE | ||
| 103 | + "#000000;" // V3270_COLOR_BLACK | ||
| 104 | + "#000080;" // V3270_COLOR_DARK_BLUE | ||
| 105 | + "#FFA200;" // V3270_COLOR_ORANGE | ||
| 106 | + "#800080;" // V3270_COLOR_PURPLE | ||
| 107 | + "#008000;" // V3270_COLOR_DARK_GREEN | ||
| 108 | + "#008080;" // V3270_COLOR_DARK_TURQUOISE | ||
| 109 | + "#A0A000;" // V3270_COLOR_MUSTARD | ||
| 110 | + "#C0C0C0;" // V3270_COLOR_GRAY | ||
| 111 | + | ||
| 112 | + "#00FF00;" // V3270_COLOR_FIELD_DEFAULT | ||
| 113 | + "#FF0000;" // V3270_COLOR_FIELD_INTENSIFIED | ||
| 114 | + "#00FFFF;" // V3270_COLOR_FIELD_PROTECTED | ||
| 115 | + "#FFFFFF;" // V3270_COLOR_FIELD_PROTECTED_INTENSIFIED | ||
| 116 | + | ||
| 117 | + "#404040;" // V3270_COLOR_SELECTED_BG | ||
| 118 | + "#FFFFFF;" // V3270_COLOR_SELECTED_FG, | ||
| 119 | + | ||
| 120 | + "#00FF00;" // V3270_COLOR_CROSS_HAIR | ||
| 121 | + | ||
| 122 | + "#000000;" // V3270_COLOR_OIA_BACKGROUND | ||
| 123 | + "#00FF00;" // V3270_COLOR_OIA | ||
| 124 | + "#7890F0;" // V3270_COLOR_OIA_SEPARATOR | ||
| 125 | + "#FFFFFF;" // V3270_COLOR_OIA_STATUS_OK | ||
| 126 | + "#FFFF00;" // V3270_COLOR_OIA_STATUS_WARNING | ||
| 73 | "#FFFF00"; // V3270_COLOR_OIA_STATUS_INVALID | 127 | "#FFFF00"; // V3270_COLOR_OIA_STATUS_INVALID |
| 74 | } | 128 | } |
| 75 | 129 |