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 | ... | ... |