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,6 +60,7 @@ | ||
| 60 | LIB3270_EXPORT gboolean pw3270_set_toggle_by_name(GtkWidget *widget, const gchar *name, gboolean flag); | 60 | LIB3270_EXPORT gboolean pw3270_set_toggle_by_name(GtkWidget *widget, const gchar *name, gboolean flag); |
| 61 | LIB3270_EXPORT H3270 * pw3270_get_session(GtkWidget *widget); | 61 | LIB3270_EXPORT H3270 * pw3270_get_session(GtkWidget *widget); |
| 62 | LIB3270_EXPORT GtkWidget * pw3270_get_terminal_widget(GtkWidget *widget); | 62 | LIB3270_EXPORT GtkWidget * pw3270_get_terminal_widget(GtkWidget *widget); |
| 63 | + LIB3270_EXPORT const gchar * pw3270_get_oversize(GtkWidget *widget); | ||
| 63 | 64 | ||
| 64 | LIB3270_EXPORT GtkWidget * pw3270_get_toplevel(void); | 65 | LIB3270_EXPORT GtkWidget * pw3270_get_toplevel(void); |
| 65 | 66 | ||
| @@ -72,7 +73,6 @@ | @@ -72,7 +73,6 @@ | ||
| 72 | LIB3270_EXPORT void pw3270_set_host_type(GtkWidget *widget, const gchar *name); | 73 | LIB3270_EXPORT void pw3270_set_host_type(GtkWidget *widget, const gchar *name); |
| 73 | LIB3270_EXPORT int pw3270_set_session_color_type(GtkWidget *widget, unsigned short color_type); | 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 | LIB3270_EXPORT gchar * pw3270_get_string(GtkWidget *widget, const gchar *group, const gchar *key, const gchar *def); | 77 | LIB3270_EXPORT gchar * pw3270_get_string(GtkWidget *widget, const gchar *group, const gchar *key, const gchar *def); |
| 78 | LIB3270_EXPORT void pw3270_set_string(GtkWidget *widget, const gchar *group, const gchar *key, const gchar *val); | 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,10 +470,33 @@ static void set_string(const gchar *group, const gchar *key, const gchar *fmt, v | ||
| 470 | 470 | ||
| 471 | void set_string_to_config(const gchar *group, const gchar *key, const gchar *fmt, ...) | 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 | void set_boolean_to_config(const gchar *group, const gchar *key, gboolean val) | 502 | void set_boolean_to_config(const gchar *group, const gchar *key, gboolean val) |
src/pw3270/hostdialog.c
| @@ -46,5 +46,9 @@ | @@ -46,5 +46,9 @@ | ||
| 46 | 46 | ||
| 47 | v3270_select_host(widget); | 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,7 +492,15 @@ int main(int argc, char *argv[]) | ||
| 492 | pw3270_set_session_name(toplevel,session_name); | 492 | pw3270_set_session_name(toplevel,session_name); |
| 493 | 493 | ||
| 494 | if(oversize) | 494 | if(oversize) |
| 495 | + { | ||
| 495 | pw3270_set_oversize(toplevel,oversize); | 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 | #ifdef _WIN32 | 505 | #ifdef _WIN32 |
| 498 | pw3270_set_string(toplevel,"application","session",session_name); | 506 | pw3270_set_string(toplevel,"application","session",session_name); |
src/pw3270/window.c
| @@ -413,6 +413,12 @@ static GtkWidget * trace_window = NULL; | @@ -413,6 +413,12 @@ static GtkWidget * trace_window = NULL; | ||
| 413 | lib3270_set_oversize(pw3270_get_session(widget),oversize); | 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 | LIB3270_EXPORT void pw3270_set_host_type(GtkWidget *widget, const gchar *name) | 422 | LIB3270_EXPORT void pw3270_set_host_type(GtkWidget *widget, const gchar *name) |
| 417 | { | 423 | { |
| 418 | size_t f; | 424 | size_t f; |
| @@ -526,7 +532,7 @@ static GtkWidget * trace_window = NULL; | @@ -526,7 +532,7 @@ static GtkWidget * trace_window = NULL; | ||
| 526 | int f; | 532 | int f; |
| 527 | 533 | ||
| 528 | trace("Widget %p changed to %s (id=%d)",widget,name,id); | 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 | set_string_to_config("terminal","model_name","%s",name); | 536 | set_string_to_config("terminal","model_name","%s",name); |
| 531 | 537 | ||
| 532 | id -= 2; | 538 | id -= 2; |
| @@ -752,7 +758,7 @@ static GtkWidget * trace_window = NULL; | @@ -752,7 +758,7 @@ static GtkWidget * trace_window = NULL; | ||
| 752 | 758 | ||
| 753 | { | 759 | { |
| 754 | char str[2]; | 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 | str[1] = 0; | 762 | str[1] = 0; |
| 757 | lib3270_set_model(host,str); | 763 | lib3270_set_model(host,str); |
| 758 | 764 |