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