From 4dc56fc50c8c2d76da61a4e5359394105ee2c48a Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Tue, 6 Apr 2021 10:27:25 -0300 Subject: [PATCH] Fixing startup with URL instead of session file Fixing search for default settings. --- src/objects/application/open.c | 8 ++++++++ src/objects/window/keyfile.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 70 insertions(+), 15 deletions(-) diff --git a/src/objects/application/open.c b/src/objects/application/open.c index 74a2ed2..a6f8d03 100644 --- a/src/objects/application/open.c +++ b/src/objects/application/open.c @@ -91,6 +91,14 @@ if(sz > 0 && uri[sz-1] == '/') uri[sz-1] = 0; + if(!window) { + debug("%s: Creating new window",__FUNCTION__); + window = pw3270_application_window_new(GTK_APPLICATION(application), NULL); + } else { + debug("%s: Creating new tab",__FUNCTION__); + window = pw3270_application_window_new_tab(window, NULL); + } + v3270_set_url(pw3270_application_window_get_active_terminal(window),uri); } diff --git a/src/objects/window/keyfile.c b/src/objects/window/keyfile.c index 81682d7..7f0fcfa 100644 --- a/src/objects/window/keyfile.c +++ b/src/objects/window/keyfile.c @@ -75,6 +75,67 @@ g_free(session); } + static void search_for_defaults(V3270KeyFile *session) { + + GError *error = NULL; + size_t ix; + + // Search for user defaults. + static const gchar *usernames[] = { + "defaults.3270", + "default.3270", + }; + + for(ix = 0; ix < G_N_ELEMENTS(usernames);ix++) { + + g_autofree gchar * default_settings = g_build_filename(g_get_user_config_dir(),usernames[ix],NULL); + +#ifdef DEBUG + g_message("Searching for %s", default_settings); +#endif // DEBUG + + if(g_file_test(default_settings,G_FILE_TEST_IS_REGULAR)) { + if(!g_key_file_load_from_file(session->key_file,default_settings,G_KEY_FILE_NONE,&error)) { + g_warning("Can't load \"%s\": %s",default_settings,error->message); + g_error_free(error); + } else { + g_message("Loading session preferences from %s",default_settings); + } + } + + } + + // Search for system defaults. + static const gchar *sysnames[] = { + "defaults.3270", + "default.3270", + "defaults.conf", + "default.conf", + }; + + for(ix = 0; ix < G_N_ELEMENTS(sysnames);ix++) { + + lib3270_autoptr(char) default_settings = lib3270_build_data_filename(sysnames[ix],NULL); + +#ifdef DEBUG + g_message("Searching for %s", default_settings); +#endif // DEBUG + + if(g_file_test(default_settings,G_FILE_TEST_IS_REGULAR)) { + if(!g_key_file_load_from_file(session->key_file,default_settings,G_KEY_FILE_NONE,&error)) { + g_warning("Can't load \"%s\": %s",default_settings,error->message); + g_error_free(error); + } else { + g_message("Loading session preferences from %s",default_settings); + } + } + + } + + g_message("Can't find default session file"); + + } + V3270KeyFile * v3270_key_file_open(GtkWidget *terminal, const gchar *filename, GError **error) { g_return_val_if_fail(GTK_IS_V3270(terminal),FALSE); @@ -105,21 +166,7 @@ } else { // No session file, load the defaults (if available) and save file - lib3270_autoptr(char) default_settings = lib3270_build_data_filename("defaults.conf",NULL); - - if(g_file_test(default_settings,G_FILE_TEST_IS_REGULAR)) { - if(!g_key_file_load_from_file(new_session->key_file,default_settings,G_KEY_FILE_NONE,error)) { - g_warning("Can't load \"%s\"",default_settings); - } else { - g_message("Loading session preferences from %s",default_settings); - } - } else { -#ifdef DEBUG - g_message("Can't find default settings file \"%s\"",default_settings); -#else - g_warning("Can't find default settings file \"%s\"",default_settings); -#endif // DEBUG - } + search_for_defaults(new_session); } -- libgit2 0.21.2