Commit 8f4944f5bd2fe094f20087185b405d47588d3eb3
1 parent
88935859
Exists in
v5.2
Updating model and oversize info just after the host settings dialog for
compatibility with the new dialog.
Showing
5 changed files
with
48 additions
and
7 deletions
Show diff stats
src/include/pw3270.h
... | ... | @@ -60,6 +60,7 @@ |
60 | 60 | LIB3270_EXPORT gboolean pw3270_set_toggle_by_name(GtkWidget *widget, const gchar *name, gboolean flag); |
61 | 61 | LIB3270_EXPORT H3270 * pw3270_get_session(GtkWidget *widget); |
62 | 62 | LIB3270_EXPORT GtkWidget * pw3270_get_terminal_widget(GtkWidget *widget); |
63 | + LIB3270_EXPORT const gchar * pw3270_get_oversize(GtkWidget *widget); | |
63 | 64 | |
64 | 65 | LIB3270_EXPORT GtkWidget * pw3270_get_toplevel(void); |
65 | 66 | |
... | ... | @@ -72,7 +73,6 @@ |
72 | 73 | LIB3270_EXPORT void pw3270_set_host_type(GtkWidget *widget, const gchar *name); |
73 | 74 | LIB3270_EXPORT int pw3270_set_session_color_type(GtkWidget *widget, unsigned short color_type); |
74 | 75 | |
75 | -// LIB3270_EXPORT gchar * pw3270_get_filename(GtkWidget *widget, const gchar *group, const gchar *key, GtkFileFilter **filter, const gchar *title); | |
76 | 76 | |
77 | 77 | LIB3270_EXPORT gchar * pw3270_get_string(GtkWidget *widget, const gchar *group, const gchar *key, const gchar *def); |
78 | 78 | LIB3270_EXPORT void pw3270_set_string(GtkWidget *widget, const gchar *group, const gchar *key, const gchar *val); | ... | ... |
src/pw3270/common/config.c
... | ... | @@ -470,10 +470,33 @@ static void set_string(const gchar *group, const gchar *key, const gchar *fmt, v |
470 | 470 | |
471 | 471 | void set_string_to_config(const gchar *group, const gchar *key, const gchar *fmt, ...) |
472 | 472 | { |
473 | - va_list args; | |
474 | - va_start(args, fmt); | |
475 | - set_string(group,key,fmt,args); | |
476 | - va_end(args); | |
473 | + if(fmt) | |
474 | + { | |
475 | + va_list args; | |
476 | + va_start(args, fmt); | |
477 | + set_string(group,key,fmt,args); | |
478 | + va_end(args); | |
479 | + } | |
480 | + else if(g_key_file_has_key(program_config,group,key,NULL)) | |
481 | + { | |
482 | +#ifdef ENABLE_WINDOWS_REGISTRY | |
483 | + | |
484 | + gchar * path = g_strdup_printf("%s\\%s\\%s",registry_path,g_get_application_name(),group); | |
485 | + HKEY hKey; | |
486 | + DWORD disp; | |
487 | + | |
488 | + if(RegOpenKeyEx(HKEY_CURRENT_USER, path, 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) | |
489 | + { | |
490 | + RegDeleteKey(hKey,key); | |
491 | + RegCloseKey(hKey); | |
492 | + } | |
493 | + | |
494 | + g_free(path); | |
495 | + | |
496 | +#else | |
497 | + g_key_file_remove_key(program_config,group,key,NULL); | |
498 | +#endif | |
499 | + } | |
477 | 500 | } |
478 | 501 | |
479 | 502 | void set_boolean_to_config(const gchar *group, const gchar *key, gboolean val) | ... | ... |
src/pw3270/hostdialog.c
... | ... | @@ -46,5 +46,9 @@ |
46 | 46 | |
47 | 47 | v3270_select_host(widget); |
48 | 48 | |
49 | + set_string_to_config("terminal","oversize",pw3270_get_oversize(gtk_widget_get_toplevel(widget))); | |
50 | + set_integer_to_config("terminal","model_number",lib3270_get_model_number(hSession)); | |
51 | + set_string_to_config("terminal","model_name","%s",lib3270_get_model_name(hSession)); | |
52 | + | |
49 | 53 | } |
50 | 54 | ... | ... |
src/pw3270/main.c
... | ... | @@ -492,7 +492,15 @@ int main(int argc, char *argv[]) |
492 | 492 | pw3270_set_session_name(toplevel,session_name); |
493 | 493 | |
494 | 494 | if(oversize) |
495 | + { | |
495 | 496 | pw3270_set_oversize(toplevel,oversize); |
497 | + } | |
498 | + else | |
499 | + { | |
500 | + g_autofree gchar * ovsz = pw3270_get_string(toplevel,"terminal","oversize",""); | |
501 | + if(ovsz && *ovsz) | |
502 | + pw3270_set_oversize(toplevel,oversize); | |
503 | + } | |
496 | 504 | |
497 | 505 | #ifdef _WIN32 |
498 | 506 | pw3270_set_string(toplevel,"application","session",session_name); | ... | ... |
src/pw3270/window.c
... | ... | @@ -413,6 +413,12 @@ static GtkWidget * trace_window = NULL; |
413 | 413 | lib3270_set_oversize(pw3270_get_session(widget),oversize); |
414 | 414 | } |
415 | 415 | |
416 | + LIB3270_EXPORT const gchar * pw3270_get_oversize(GtkWidget *widget) | |
417 | + { | |
418 | + g_return_val_if_fail(GTK_IS_PW3270(widget),""); | |
419 | + return (const gchar *) lib3270_get_oversize(pw3270_get_session(widget)); | |
420 | + } | |
421 | + | |
416 | 422 | LIB3270_EXPORT void pw3270_set_host_type(GtkWidget *widget, const gchar *name) |
417 | 423 | { |
418 | 424 | size_t f; |
... | ... | @@ -526,7 +532,7 @@ static GtkWidget * trace_window = NULL; |
526 | 532 | int f; |
527 | 533 | |
528 | 534 | trace("Widget %p changed to %s (id=%d)",widget,name,id); |
529 | - set_integer_to_config("terminal","model",id); | |
535 | + set_integer_to_config("terminal","model_number",id); | |
530 | 536 | set_string_to_config("terminal","model_name","%s",name); |
531 | 537 | |
532 | 538 | id -= 2; |
... | ... | @@ -752,7 +758,7 @@ static GtkWidget * trace_window = NULL; |
752 | 758 | |
753 | 759 | { |
754 | 760 | char str[2]; |
755 | - str[0] = get_integer_from_config("terminal","model",2)+'0'; | |
761 | + str[0] = get_integer_from_config("terminal","model_number",2)+'0'; | |
756 | 762 | str[1] = 0; |
757 | 763 | lib3270_set_model(host,str); |
758 | 764 | ... | ... |