Commit bf1d13f267c35d6a7f130588e9681dd81f84ae05

Authored by Perry Werneck
1 parent 1f296515
Exists in master and in 1 other branch develop

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