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 |