From 211177a9747939002f8e7da1d569a5551c4e0600 Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Wed, 23 Dec 2009 22:26:34 +0100 Subject: Use GKeyFile to store window positions. --- walls_conf.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 walls_conf.c (limited to 'walls_conf.c') 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; + } +} -- cgit v1.2.3