Commit 7bbfffa485adc7687a075d7769a7f36cefc5c657
1 parent
379bb4a9
Exists in
master
and in
1 other branch
Implementing "save to registry" feature.
Showing
2 changed files
with
22 additions
and
4 deletions
Show diff stats
src/include/v3270/settings.h
@@ -49,9 +49,9 @@ | @@ -49,9 +49,9 @@ | ||
49 | 49 | ||
50 | #ifdef _WIN32 | 50 | #ifdef _WIN32 |
51 | 51 | ||
52 | - LIB3270_EXPORT gboolean v3270_load_registry(GtkWidget *widget, HKEY *hKey, const gchar *group_name); | 52 | + LIB3270_EXPORT gboolean v3270_load_registry(GtkWidget *widget, HKEY hKey, const gchar *group_name); |
53 | 53 | ||
54 | - LIB3270_EXPORT void v3270_to_registry(GtkWidget *widget, HKEY *hKey, const gchar *group_name); | 54 | + LIB3270_EXPORT void v3270_to_registry(GtkWidget *widget, HKEY hKey, const gchar *group_name); |
55 | 55 | ||
56 | #endif // _WIN32 | 56 | #endif // _WIN32 |
57 | 57 |
src/terminal/windows/registry.c
@@ -128,21 +128,39 @@ | @@ -128,21 +128,39 @@ | ||
128 | { | 128 | { |
129 | const gchar * name = g_param_spec_get_name(pspec); | 129 | const gchar * name = g_param_spec_get_name(pspec); |
130 | 130 | ||
131 | + BYTE data[4097]; | ||
132 | + unsigned long datatype; | ||
133 | + unsigned long datalen = 4096; | ||
134 | + | ||
135 | + memset(data,0,sizeof(data)); | ||
136 | + | ||
137 | + if(RegQueryValueExA(hKey,name,NULL,&datatype,data,&datalen) != ERROR_SUCCESS) | ||
138 | + return; | ||
139 | + | ||
131 | GValue value = G_VALUE_INIT; | 140 | GValue value = G_VALUE_INIT; |
132 | g_value_init(&value, pspec->value_type); | 141 | g_value_init(&value, pspec->value_type); |
142 | + g_object_get_property(G_OBJECT(widget),name,&value); | ||
133 | 143 | ||
134 | switch(pspec->value_type) | 144 | switch(pspec->value_type) |
135 | { | 145 | { |
136 | case G_TYPE_STRING: | 146 | case G_TYPE_STRING: |
147 | + if(datatype == REG_SZ) | ||
148 | + g_value_set_string(&value, (const gchar *) data); | ||
137 | break; | 149 | break; |
138 | 150 | ||
139 | case G_TYPE_BOOLEAN: | 151 | case G_TYPE_BOOLEAN: |
152 | + if(datatype == REG_DWORD) | ||
153 | + g_value_set_boolean(&value, * ((DWORD *) data) == 0 ? FALSE : TRUE); | ||
140 | break; | 154 | break; |
141 | 155 | ||
142 | case G_TYPE_INT: | 156 | case G_TYPE_INT: |
157 | + if(datatype == REG_DWORD) | ||
158 | + g_value_set_int(&value, (gint) * ((DWORD *) data)); | ||
143 | break; | 159 | break; |
144 | 160 | ||
145 | case G_TYPE_UINT: | 161 | case G_TYPE_UINT: |
162 | + if(datatype == REG_DWORD) | ||
163 | + g_value_set_uint(&value, (guint) * ((DWORD *) data)); | ||
146 | break; | 164 | break; |
147 | 165 | ||
148 | default: | 166 | default: |
@@ -158,7 +176,7 @@ | @@ -158,7 +176,7 @@ | ||
158 | } | 176 | } |
159 | 177 | ||
160 | /// @brief Reads the terminal settings from the group group_name in registry. | 178 | /// @brief Reads the terminal settings from the group group_name in registry. |
161 | - LIB3270_EXPORT void v3270_to_registry(GtkWidget *widget, HKEY *hParent, const gchar *group_name) | 179 | + LIB3270_EXPORT void v3270_to_registry(GtkWidget *widget, HKEY hParent, const gchar *group_name) |
162 | { | 180 | { |
163 | g_return_if_fail(GTK_IS_V3270(widget)); | 181 | g_return_if_fail(GTK_IS_V3270(widget)); |
164 | 182 | ||
@@ -209,7 +227,7 @@ | @@ -209,7 +227,7 @@ | ||
209 | } | 227 | } |
210 | 228 | ||
211 | /// @brief This function adds the terminal settings from widget to windows registry. | 229 | /// @brief This function adds the terminal settings from widget to windows registry. |
212 | - LIB3270_EXPORT gboolean v3270_load_registry(GtkWidget *widget, HKEY *hParent, const gchar *group_name) | 230 | + LIB3270_EXPORT gboolean v3270_load_registry(GtkWidget *widget, HKEY hParent, const gchar *group_name) |
213 | { | 231 | { |
214 | g_return_val_if_fail(GTK_IS_V3270(widget),FALSE); | 232 | g_return_val_if_fail(GTK_IS_V3270(widget),FALSE); |
215 | 233 |