Commit 51e901274eaa8743c6429a66bced000a8ef98c84

Authored by Perry Werneck
1 parent f8c68834
Exists in v5.2

Fixing save settings file.

src/pw3270/common.h
... ... @@ -58,8 +58,9 @@
58 58  
59 59 // Configuration
60 60 LIB3270_EXPORT void pw3270_session_config_load(const gchar *filename);
  61 + LIB3270_EXPORT void pw3270_session_config_save();
61 62 LIB3270_EXPORT void pw3270_session_config_free(void);
62   - LIB3270_EXPORT GKeyFile * pw3270_session_config_get(void);
  63 + LIB3270_EXPORT GKeyFile * pw3270_session_config_get(gboolean create);
63 64  
64 65 gchar * get_string_from_config(const gchar *group, const gchar *key, const gchar *def);
65 66 gboolean get_boolean_from_config(const gchar *group, const gchar *key, gboolean def);
... ...
src/pw3270/linux/config.c
... ... @@ -265,9 +265,8 @@ void set_integer_to_config(const gchar *group, const gchar *key, gint val)
265 265  
266 266 }
267 267  
268   -void pw3270_session_config_free(void)
  268 +void pw3270_session_config_save()
269 269 {
270   -
271 270 if(!keyfile)
272 271 return;
273 272  
... ... @@ -301,9 +300,13 @@ void pw3270_session_config_free(void)
301 300  
302 301 }
303 302  
  303 +}
  304 +
  305 +void pw3270_session_config_free(void)
  306 +{
  307 + pw3270_session_config_save();
304 308 g_key_file_free(keyfile);
305 309 keyfile = NULL;
306   -
307 310 }
308 311  
309 312 gchar * build_data_filename(const gchar *first_element, ...)
... ... @@ -361,9 +364,9 @@ gchar * filename_from_va(const gchar *first_element, va_list args)
361 364 return g_build_filename(".",suffix,NULL);
362 365 }
363 366  
364   -GKeyFile * pw3270_session_config_get(void)
  367 +GKeyFile * pw3270_session_config_get(gboolean create)
365 368 {
366   - if(!keyfile)
  369 + if(!keyfile && create)
367 370 pw3270_session_config_load(NULL);
368 371 return keyfile;
369 372 }
... ... @@ -383,7 +386,7 @@ GKeyFile * pw3270_session_config_get(void)
383 386 void save_window_state_to_config(const gchar *group, const gchar *key, GdkWindowState CurrentState)
384 387 {
385 388 int f;
386   - GKeyFile * conf = pw3270_session_config_get();
  389 + GKeyFile * conf = pw3270_session_config_get(TRUE);
387 390 gchar * id = g_strconcat(group,".",key,NULL);
388 391  
389 392 for(f=0;f<G_N_ELEMENTS(WindowState);f++)
... ... @@ -396,7 +399,7 @@ void save_window_state_to_config(const gchar *group, const gchar *key, GdkWindow
396 399 void save_window_size_to_config(const gchar *group, const gchar *key, GtkWidget *hwnd)
397 400 {
398 401 int pos[2];
399   - GKeyFile * conf = pw3270_session_config_get();
  402 + GKeyFile * conf = pw3270_session_config_get(TRUE);
400 403 gchar * id = g_strconcat(group,".",key,NULL);
401 404  
402 405 gtk_window_get_size(GTK_WINDOW(hwnd),&pos[0],&pos[1]);
... ... @@ -409,7 +412,7 @@ void save_window_size_to_config(const gchar *group, const gchar *key, GtkWidget
409 412 void restore_window_from_config(const gchar *group, const gchar *key, GtkWidget *hwnd)
410 413 {
411 414 gchar * id = g_strconcat(group,".",key,NULL);
412   - GKeyFile * conf = pw3270_session_config_get();
  415 + GKeyFile * conf = pw3270_session_config_get(TRUE);
413 416  
414 417 if(g_key_file_has_key(conf,id,"size",NULL))
415 418 {
... ...
src/pw3270/linux/print.c
... ... @@ -48,7 +48,7 @@
48 48 g_message("Loading print settings");
49 49  
50 50 // Load page and print settings
51   - GKeyFile * conf = pw3270_session_config_get();
  51 + GKeyFile * conf = pw3270_session_config_get(TRUE);
52 52 GError * err = NULL;
53 53  
54 54 debug("print_settings=%s",g_key_file_has_group(conf,"print_settings") ? "TRUE" : "FALSE");
... ... @@ -128,7 +128,7 @@
128 128 trace("%s(%p)",__FUNCTION__,operation);
129 129 g_message("Saving print settings");
130 130  
131   - GKeyFile * conf = pw3270_session_config_get();
  131 + GKeyFile * conf = pw3270_session_config_get(TRUE);
132 132 gtk_print_settings_to_key_file(settings,conf,"print_settings");
133 133 gtk_page_setup_to_key_file(pgsetup,conf,"page_setup");
134 134 gtk_paper_size_to_key_file(papersize,conf,"paper_size");
... ...
src/pw3270/main.c
... ... @@ -487,7 +487,7 @@ int main(int argc, char *argv[])
487 487 pw3270_session_config_load(argv[ix]);
488 488 }
489 489  
490   - pw3270_session_config_get();
  490 + pw3270_session_config_get(TRUE);
491 491  
492 492 }
493 493  
... ...
src/pw3270/window.c
... ... @@ -406,21 +406,25 @@ static GtkWidget * trace_window = NULL;
406 406 {
407 407 debug("%s",__FUNCTION__);
408 408  
409   -#ifdef ENABLE_WINDOWS_REGISTRY
  409 + GKeyFile * keyfile = pw3270_session_config_get(FALSE);
410 410  
411   - HKEY hKey;
412   -
413   - if(get_registry_handle(NULL, &hKey, KEY_SET_VALUE))
  411 + if(keyfile)
414 412 {
415   - v3270_to_registry(widget, hKey, "terminal");
416   - RegCloseKey(hKey);
  413 + v3270_to_key_file(widget, keyfile, "terminal");
  414 + pw3270_session_config_save();
417 415 }
  416 +#ifdef _WIN32
  417 + else
  418 + {
  419 + HKEY hKey;
418 420  
419   -#else
420   -
421   - v3270_to_key_file(widget, pw3270_session_config_get(), "terminal");
422   -
423   -#endif // _WIN32
  421 + if(get_registry_handle(NULL, &hKey, KEY_SET_VALUE))
  422 + {
  423 + v3270_to_registry(widget, hKey, "terminal");
  424 + RegCloseKey(hKey);
  425 + }
  426 + }
  427 +#endif
424 428  
425 429 }
426 430  
... ...