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 | 49 | |
| 50 | 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 | 56 | #endif // _WIN32 |
| 57 | 57 | ... | ... |
src/terminal/windows/registry.c
| ... | ... | @@ -128,21 +128,39 @@ |
| 128 | 128 | { |
| 129 | 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 | 140 | GValue value = G_VALUE_INIT; |
| 132 | 141 | g_value_init(&value, pspec->value_type); |
| 142 | + g_object_get_property(G_OBJECT(widget),name,&value); | |
| 133 | 143 | |
| 134 | 144 | switch(pspec->value_type) |
| 135 | 145 | { |
| 136 | 146 | case G_TYPE_STRING: |
| 147 | + if(datatype == REG_SZ) | |
| 148 | + g_value_set_string(&value, (const gchar *) data); | |
| 137 | 149 | break; |
| 138 | 150 | |
| 139 | 151 | case G_TYPE_BOOLEAN: |
| 152 | + if(datatype == REG_DWORD) | |
| 153 | + g_value_set_boolean(&value, * ((DWORD *) data) == 0 ? FALSE : TRUE); | |
| 140 | 154 | break; |
| 141 | 155 | |
| 142 | 156 | case G_TYPE_INT: |
| 157 | + if(datatype == REG_DWORD) | |
| 158 | + g_value_set_int(&value, (gint) * ((DWORD *) data)); | |
| 143 | 159 | break; |
| 144 | 160 | |
| 145 | 161 | case G_TYPE_UINT: |
| 162 | + if(datatype == REG_DWORD) | |
| 163 | + g_value_set_uint(&value, (guint) * ((DWORD *) data)); | |
| 146 | 164 | break; |
| 147 | 165 | |
| 148 | 166 | default: |
| ... | ... | @@ -158,7 +176,7 @@ |
| 158 | 176 | } |
| 159 | 177 | |
| 160 | 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 | 181 | g_return_if_fail(GTK_IS_V3270(widget)); |
| 164 | 182 | |
| ... | ... | @@ -209,7 +227,7 @@ |
| 209 | 227 | } |
| 210 | 228 | |
| 211 | 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 | 232 | g_return_val_if_fail(GTK_IS_V3270(widget),FALSE); |
| 215 | 233 | ... | ... |