Commit 33cbc7b27a141202097352246e51cb21c92c11b0
1 parent
de3713cb
Exists in
master
and in
2 other branches
Adding gsetting for default session filename.
Showing
4 changed files
with
34 additions
and
1 deletions
Show diff stats
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 | ... | ... |