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 | 36 | |
| 37 | 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 | 127 | "#FFFF00"; // V3270_COLOR_OIA_STATUS_INVALID |
| 74 | 128 | } |
| 75 | 129 | ... | ... |