From 8f4944f5bd2fe094f20087185b405d47588d3eb3 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Wed, 6 Nov 2019 11:11:32 -0300 Subject: [PATCH] Updating model and oversize info just after the host settings dialog for compatibility with the new dialog. --- src/include/pw3270.h | 2 +- src/pw3270/common/config.c | 31 +++++++++++++++++++++++++++---- src/pw3270/hostdialog.c | 4 ++++ src/pw3270/main.c | 8 ++++++++ src/pw3270/window.c | 10 ++++++++-- 5 files changed, 48 insertions(+), 7 deletions(-) diff --git a/src/include/pw3270.h b/src/include/pw3270.h index a2b079c..3f0444b 100644 --- a/src/include/pw3270.h +++ b/src/include/pw3270.h @@ -60,6 +60,7 @@ LIB3270_EXPORT gboolean pw3270_set_toggle_by_name(GtkWidget *widget, const gchar *name, gboolean flag); LIB3270_EXPORT H3270 * pw3270_get_session(GtkWidget *widget); LIB3270_EXPORT GtkWidget * pw3270_get_terminal_widget(GtkWidget *widget); + LIB3270_EXPORT const gchar * pw3270_get_oversize(GtkWidget *widget); LIB3270_EXPORT GtkWidget * pw3270_get_toplevel(void); @@ -72,7 +73,6 @@ LIB3270_EXPORT void pw3270_set_host_type(GtkWidget *widget, const gchar *name); LIB3270_EXPORT int pw3270_set_session_color_type(GtkWidget *widget, unsigned short color_type); -// LIB3270_EXPORT gchar * pw3270_get_filename(GtkWidget *widget, const gchar *group, const gchar *key, GtkFileFilter **filter, const gchar *title); LIB3270_EXPORT gchar * pw3270_get_string(GtkWidget *widget, const gchar *group, const gchar *key, const gchar *def); LIB3270_EXPORT void pw3270_set_string(GtkWidget *widget, const gchar *group, const gchar *key, const gchar *val); diff --git a/src/pw3270/common/config.c b/src/pw3270/common/config.c index 93bac08..2826961 100644 --- a/src/pw3270/common/config.c +++ b/src/pw3270/common/config.c @@ -470,10 +470,33 @@ static void set_string(const gchar *group, const gchar *key, const gchar *fmt, v void set_string_to_config(const gchar *group, const gchar *key, const gchar *fmt, ...) { - va_list args; - va_start(args, fmt); - set_string(group,key,fmt,args); - va_end(args); + if(fmt) + { + va_list args; + va_start(args, fmt); + set_string(group,key,fmt,args); + va_end(args); + } + else if(g_key_file_has_key(program_config,group,key,NULL)) + { +#ifdef ENABLE_WINDOWS_REGISTRY + + gchar * path = g_strdup_printf("%s\\%s\\%s",registry_path,g_get_application_name(),group); + HKEY hKey; + DWORD disp; + + if(RegOpenKeyEx(HKEY_CURRENT_USER, path, 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) + { + RegDeleteKey(hKey,key); + RegCloseKey(hKey); + } + + g_free(path); + +#else + g_key_file_remove_key(program_config,group,key,NULL); +#endif + } } void set_boolean_to_config(const gchar *group, const gchar *key, gboolean val) diff --git a/src/pw3270/hostdialog.c b/src/pw3270/hostdialog.c index 611e796..2723967 100644 --- a/src/pw3270/hostdialog.c +++ b/src/pw3270/hostdialog.c @@ -46,5 +46,9 @@ v3270_select_host(widget); + set_string_to_config("terminal","oversize",pw3270_get_oversize(gtk_widget_get_toplevel(widget))); + set_integer_to_config("terminal","model_number",lib3270_get_model_number(hSession)); + set_string_to_config("terminal","model_name","%s",lib3270_get_model_name(hSession)); + } diff --git a/src/pw3270/main.c b/src/pw3270/main.c index 7c87056..8766081 100644 --- a/src/pw3270/main.c +++ b/src/pw3270/main.c @@ -492,7 +492,15 @@ int main(int argc, char *argv[]) pw3270_set_session_name(toplevel,session_name); if(oversize) + { pw3270_set_oversize(toplevel,oversize); + } + else + { + g_autofree gchar * ovsz = pw3270_get_string(toplevel,"terminal","oversize",""); + if(ovsz && *ovsz) + pw3270_set_oversize(toplevel,oversize); + } #ifdef _WIN32 pw3270_set_string(toplevel,"application","session",session_name); diff --git a/src/pw3270/window.c b/src/pw3270/window.c index ecd2257..077dc7e 100644 --- a/src/pw3270/window.c +++ b/src/pw3270/window.c @@ -413,6 +413,12 @@ static GtkWidget * trace_window = NULL; lib3270_set_oversize(pw3270_get_session(widget),oversize); } + LIB3270_EXPORT const gchar * pw3270_get_oversize(GtkWidget *widget) + { + g_return_val_if_fail(GTK_IS_PW3270(widget),""); + return (const gchar *) lib3270_get_oversize(pw3270_get_session(widget)); + } + LIB3270_EXPORT void pw3270_set_host_type(GtkWidget *widget, const gchar *name) { size_t f; @@ -526,7 +532,7 @@ static GtkWidget * trace_window = NULL; int f; trace("Widget %p changed to %s (id=%d)",widget,name,id); - set_integer_to_config("terminal","model",id); + set_integer_to_config("terminal","model_number",id); set_string_to_config("terminal","model_name","%s",name); id -= 2; @@ -752,7 +758,7 @@ static GtkWidget * trace_window = NULL; { char str[2]; - str[0] = get_integer_from_config("terminal","model",2)+'0'; + str[0] = get_integer_from_config("terminal","model_number",2)+'0'; str[1] = 0; lib3270_set_model(host,str); -- libgit2 0.21.2