diff options
author | Jon Bergli Heier <snakebite@jvnv.net> | 2009-12-23 22:26:34 +0100 |
---|---|---|
committer | Jon Bergli Heier <snakebite@jvnv.net> | 2009-12-23 22:26:34 +0100 |
commit | 211177a9747939002f8e7da1d569a5551c4e0600 (patch) | |
tree | f08d0e96034cf40854e7b32adc3f0a82d520be24 /walls_conf.c | |
parent | 9030ddb9d47663d16327a9e734ccfd0c74ba0bb7 (diff) |
Use GKeyFile to store window positions.
Diffstat (limited to 'walls_conf.c')
-rw-r--r-- | walls_conf.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/walls_conf.c b/walls_conf.c new file mode 100644 index 0000000..7ef3a8d --- /dev/null +++ b/walls_conf.c @@ -0,0 +1,56 @@ +#include "walls_conf.h" + +GKeyFile *keyfile = NULL; + +void conf_open() { + gchar *filename; + GError *error = NULL; + + keyfile = g_key_file_new(); + if(!keyfile) { + g_warning("Could not create key"); + return; + } + + filename = g_strdup_printf("%s/walls/config", g_get_user_config_dir()); + + if(!g_key_file_load_from_file(keyfile, filename, G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, &error)) { + g_warning("%s", error->message); + g_error_free(error); + } + + g_free(filename); +} + +gint conf_get_int(const gchar *group_name, const gchar *key, gint _default) { + GError *error = NULL; + gint ret; + + ret = g_key_file_get_integer(keyfile, group_name, key, &error); + + if(ret == 0) { + g_warning("%s", error->message); + g_error_free(error); + return _default; + } + return ret; +} + +void conf_close() { + gchar *s, *filename; + GError *error = NULL; + + if(keyfile) { + filename = g_strdup_printf("%s/walls/config", g_get_user_config_dir()); + s = g_key_file_to_data(keyfile, NULL, NULL); + if(!g_file_set_contents(filename, s, -1, &error)) { + g_warning("%s", error->message); + g_error_free(error); + } + g_free(filename); + g_free(s); + + g_key_file_free(keyfile); + keyfile = NULL; + } +} |