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 | ... | ... |