Commit 33cbc7b27a141202097352246e51cb21c92c11b0

Authored by Perry Werneck
1 parent de3713cb

Adding gsetting for default session filename.

@@ -52,7 +52,6 @@ @@ -52,7 +52,6 @@
52 <Unit filename="src/include/pw3270/keypad.h" /> 52 <Unit filename="src/include/pw3270/keypad.h" />
53 <Unit filename="src/include/pw3270/settings.h" /> 53 <Unit filename="src/include/pw3270/settings.h" />
54 <Unit filename="src/include/pw3270/toolbar.h" /> 54 <Unit filename="src/include/pw3270/toolbar.h" />
55 - <Unit filename="src/include/pw3270/tools.h" />  
56 <Unit filename="src/include/pw3270/window.h" /> 55 <Unit filename="src/include/pw3270/window.h" />
57 <Unit filename="src/include/v3270/keyfile.h" /> 56 <Unit filename="src/include/v3270/keyfile.h" />
58 <Unit filename="src/main/main.c"> 57 <Unit filename="src/main/main.c">
schemas/linux/application.gschema.xml.in
@@ -56,6 +56,12 @@ @@ -56,6 +56,12 @@
56 <description>Enable new window actions</description> 56 <description>Enable new window actions</description>
57 </key> 57 </key>
58 58
  59 + <key name="default-session-file" type="s">
  60 + <default>'~/.config/default.3270'</default>
  61 + <summary>Path of the default session file</summary>
  62 + <description></description>
  63 + </key>
  64 +
59 </schema> 65 </schema>
60 66
61 </schemalist> 67 </schemalist>
schemas/linux/window.gschema.xml.in
@@ -116,6 +116,12 @@ @@ -116,6 +116,12 @@
116 <description></description> 116 <description></description>
117 </key> 117 </key>
118 118
  119 + <key name="default-session-file" type="s">
  120 + <default>''</default>
  121 + <summary>Path of the default session file</summary>
  122 + <description></description>
  123 + </key>
  124 +
119 </schema> 125 </schema>
120 126
121 </schemalist> 127 </schemalist>
src/objects/window/keyfile.c
@@ -42,6 +42,7 @@ @@ -42,6 +42,7 @@
42 #include <lib3270/properties.h> 42 #include <lib3270/properties.h>
43 #include <string.h> 43 #include <string.h>
44 #include <stdlib.h> 44 #include <stdlib.h>
  45 + #include <pw3270/application.h>
45 46
46 struct _V3270KeyFile 47 struct _V3270KeyFile
47 { 48 {
@@ -276,12 +277,33 @@ void v3270_key_file_close(GtkWidget *terminal) { @@ -276,12 +277,33 @@ void v3270_key_file_close(GtkWidget *terminal) {
276 277
277 gchar * v3270_keyfile_get_default_filename(void) { 278 gchar * v3270_keyfile_get_default_filename(void) {
278 279
  280 + GSettings *settings = pw3270_application_get_settings(g_application_get_default());
  281 + if(settings) {
  282 +
  283 + g_autofree gchar * def_key_file = g_settings_get_string(settings,"default-session-file");
  284 +
  285 + if(def_key_file && *def_key_file) {
  286 +
  287 + if(g_file_test(def_key_file,G_FILE_TEST_IS_REGULAR))
  288 + return g_strdup(def_key_file);
  289 +
  290 + g_autofree gchar * def_key_full = g_build_filename(g_get_user_config_dir(),def_key_file,NULL);
  291 +
  292 + if(g_file_test(def_key_full,G_FILE_TEST_IS_REGULAR))
  293 + return g_strdup(def_key_full);
  294 + }
  295 +
  296 + }
  297 +
  298 + // No default key file, use the old scheme.
  299 +
279 gchar * filename = g_build_filename(g_get_user_config_dir(),"default.3270",NULL); 300 gchar * filename = g_build_filename(g_get_user_config_dir(),"default.3270",NULL);
280 301
281 g_autofree gchar * compatible = g_build_filename(g_get_user_config_dir(),G_STRINGIFY(PRODUCT_NAME) ".conf",NULL); 302 g_autofree gchar * compatible = g_build_filename(g_get_user_config_dir(),G_STRINGIFY(PRODUCT_NAME) ".conf",NULL);
282 if(g_file_test(compatible,G_FILE_TEST_IS_REGULAR)) 303 if(g_file_test(compatible,G_FILE_TEST_IS_REGULAR))
283 g_rename(compatible,filename); 304 g_rename(compatible,filename);
284 305
  306 +
285 return filename; 307 return filename;
286 } 308 }
287 309