Commit 33cbc7b27a141202097352246e51cb21c92c11b0

Authored by Perry Werneck
1 parent de3713cb

Adding gsetting for default session filename.

pw3270.cbp
... ... @@ -52,7 +52,6 @@
52 52 <Unit filename="src/include/pw3270/keypad.h" />
53 53 <Unit filename="src/include/pw3270/settings.h" />
54 54 <Unit filename="src/include/pw3270/toolbar.h" />
55   - <Unit filename="src/include/pw3270/tools.h" />
56 55 <Unit filename="src/include/pw3270/window.h" />
57 56 <Unit filename="src/include/v3270/keyfile.h" />
58 57 <Unit filename="src/main/main.c">
... ...
schemas/linux/application.gschema.xml.in
... ... @@ -56,6 +56,12 @@
56 56 <description>Enable new window actions</description>
57 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 65 </schema>
60 66  
61 67 </schemalist>
... ...
schemas/linux/window.gschema.xml.in
... ... @@ -116,6 +116,12 @@
116 116 <description></description>
117 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 125 </schema>
120 126  
121 127 </schemalist>
... ...
src/objects/window/keyfile.c
... ... @@ -42,6 +42,7 @@
42 42 #include <lib3270/properties.h>
43 43 #include <string.h>
44 44 #include <stdlib.h>
  45 + #include <pw3270/application.h>
45 46  
46 47 struct _V3270KeyFile
47 48 {
... ... @@ -276,12 +277,33 @@ void v3270_key_file_close(GtkWidget *terminal) {
276 277  
277 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 300 gchar * filename = g_build_filename(g_get_user_config_dir(),"default.3270",NULL);
280 301  
281 302 g_autofree gchar * compatible = g_build_filename(g_get_user_config_dir(),G_STRINGIFY(PRODUCT_NAME) ".conf",NULL);
282 303 if(g_file_test(compatible,G_FILE_TEST_IS_REGULAR))
283 304 g_rename(compatible,filename);
284 305  
  306 +
285 307 return filename;
286 308 }
287 309  
... ...