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 | ... | ... |