summaryrefslogtreecommitdiff
path: root/walls_conf.c
diff options
context:
space:
mode:
authorJon Bergli Heier <snakebite@jvnv.net>2009-12-23 22:26:34 +0100
committerJon Bergli Heier <snakebite@jvnv.net>2009-12-23 22:26:34 +0100
commit211177a9747939002f8e7da1d569a5551c4e0600 (patch)
treef08d0e96034cf40854e7b32adc3f0a82d520be24 /walls_conf.c
parent9030ddb9d47663d16327a9e734ccfd0c74ba0bb7 (diff)
Use GKeyFile to store window positions.
Diffstat (limited to 'walls_conf.c')
-rw-r--r--walls_conf.c56
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;
+ }
+}