Commit c6893aaffa28ce1fcdb7d2c2adfcc5bee03dc94b

Authored by Perry Werneck
2 parents caad1f0b 00618dec

Merge branch 'master' into develop

src/objects/application/open.c
@@ -94,6 +94,14 @@ void pw3270_application_open(GApplication *application, GFile **files, gint n_fi @@ -94,6 +94,14 @@ void pw3270_application_open(GApplication *application, GFile **files, gint n_fi
94 if(sz > 0 && uri[sz-1] == '/') 94 if(sz > 0 && uri[sz-1] == '/')
95 uri[sz-1] = 0; 95 uri[sz-1] = 0;
96 96
  97 + if(!window) {
  98 + debug("%s: Creating new window",__FUNCTION__);
  99 + window = pw3270_application_window_new(GTK_APPLICATION(application), NULL);
  100 + } else {
  101 + debug("%s: Creating new tab",__FUNCTION__);
  102 + window = pw3270_application_window_new_tab(window, NULL);
  103 + }
  104 +
97 v3270_set_url(pw3270_application_window_get_active_terminal(window),uri); 105 v3270_set_url(pw3270_application_window_get_active_terminal(window),uri);
98 106
99 } 107 }
src/objects/window/keyfile.c
@@ -83,6 +83,69 @@ static void close_keyfile(V3270KeyFile * session) { @@ -83,6 +83,69 @@ static void close_keyfile(V3270KeyFile * session) {
83 g_free(session); 83 g_free(session);
84 } 84 }
85 85
  86 +static void search_for_defaults(V3270KeyFile *session) {
  87 +
  88 + GError *error = NULL;
  89 + size_t ix;
  90 +
  91 + // Search for user defaults.
  92 + static const gchar *usernames[] = {
  93 + "defaults.3270",
  94 + "default.3270",
  95 + };
  96 +
  97 + for(ix = 0; ix < G_N_ELEMENTS(usernames);ix++) {
  98 +
  99 + g_autofree gchar * default_settings = g_build_filename(g_get_user_config_dir(),usernames[ix],NULL);
  100 +
  101 +#ifdef DEBUG
  102 + g_message("Searching for %s", default_settings);
  103 +#endif // DEBUG
  104 +
  105 + if(g_file_test(default_settings,G_FILE_TEST_IS_REGULAR)) {
  106 + if(!g_key_file_load_from_file(session->key_file,default_settings,G_KEY_FILE_NONE,&error)) {
  107 + g_warning("Can't load \"%s\": %s",default_settings,error->message);
  108 + g_error_free(error);
  109 + } else {
  110 + g_message("Loading session preferences from %s",default_settings);
  111 + return;
  112 + }
  113 + }
  114 +
  115 + }
  116 +
  117 + // Search for system defaults.
  118 + static const gchar *sysnames[] = {
  119 + "defaults.3270",
  120 + "default.3270",
  121 + "defaults.conf",
  122 + "default.conf",
  123 + };
  124 +
  125 + for(ix = 0; ix < G_N_ELEMENTS(sysnames);ix++) {
  126 +
  127 + lib3270_autoptr(char) default_settings = lib3270_build_data_filename(sysnames[ix],NULL);
  128 +
  129 +#ifdef DEBUG
  130 + g_message("Searching for %s", default_settings);
  131 +#endif // DEBUG
  132 +
  133 + if(g_file_test(default_settings,G_FILE_TEST_IS_REGULAR)) {
  134 + if(!g_key_file_load_from_file(session->key_file,default_settings,G_KEY_FILE_NONE,&error)) {
  135 + g_warning("Can't load \"%s\": %s",default_settings,error->message);
  136 + g_error_free(error);
  137 + } else {
  138 + g_message("Loading session preferences from %s",default_settings);
  139 + return;
  140 + }
  141 + }
  142 +
  143 + }
  144 +
  145 + g_message("Can't find default session file");
  146 +
  147 +}
  148 +
86 V3270KeyFile * v3270_key_file_open(GtkWidget *terminal, const gchar *filename, GError **error) { 149 V3270KeyFile * v3270_key_file_open(GtkWidget *terminal, const gchar *filename, GError **error) {
87 150
88 g_return_val_if_fail(GTK_IS_V3270(terminal),FALSE); 151 g_return_val_if_fail(GTK_IS_V3270(terminal),FALSE);
@@ -113,21 +176,7 @@ V3270KeyFile * v3270_key_file_open(GtkWidget *terminal, const gchar *filename, G @@ -113,21 +176,7 @@ V3270KeyFile * v3270_key_file_open(GtkWidget *terminal, const gchar *filename, G
113 } else { 176 } else {
114 177
115 // No session file, load the defaults (if available) and save file 178 // No session file, load the defaults (if available) and save file
116 - lib3270_autoptr(char) default_settings = lib3270_build_data_filename("defaults.conf",NULL);  
117 -  
118 - if(g_file_test(default_settings,G_FILE_TEST_IS_REGULAR)) {  
119 - if(!g_key_file_load_from_file(new_session->key_file,default_settings,G_KEY_FILE_NONE,error)) {  
120 - g_warning("Can't load \"%s\"",default_settings);  
121 - } else {  
122 - g_message("Loading session preferences from %s",default_settings);  
123 - }  
124 - } else {  
125 -#ifdef DEBUG  
126 - g_message("Can't find default settings file \"%s\"",default_settings);  
127 -#else  
128 - g_warning("Can't find default settings file \"%s\"",default_settings);  
129 -#endif // DEBUG  
130 - } 179 + search_for_defaults(new_session);
131 180
132 } 181 }
133 182
@@ -423,4 +472,3 @@ gboolean v3270_key_file_can_write(GtkWidget *widget) { @@ -423,4 +472,3 @@ gboolean v3270_key_file_can_write(GtkWidget *widget) {
423 } 472 }
424 473
425 474
426 -