From 0204abcebce9eef867c7560e10deeb30e5a6f06e Mon Sep 17 00:00:00 2001 From: Sebastian Reichel Date: Thu, 19 Jan 2012 19:44:34 +0100 Subject: [PATCH] load/save configuration --- src/Config.vala | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/Config.vala b/src/Config.vala index 0c8f6cb..08bf771 100644 --- a/src/Config.vala +++ b/src/Config.vala @@ -23,6 +23,9 @@ */ class Config { + private KeyFile keyfile; + private string path; + public string control_monitor; public bool control_fullscreen; public string presentation_monitor; @@ -30,14 +33,36 @@ class Config { public signal void configuration_changed(); public Config() { + path = Environment.get_user_config_dir() + "/pdf-presenter.cfg"; + keyfile = new KeyFile(); load(); } public void load() { - /* TODO: load from ~/.config/pdf-presenter.cfg */ + try { + keyfile.load_from_file (path, KeyFileFlags.NONE); + + /* monitors section */ + control_monitor = keyfile.get_string ("monitors", "control"); + presentation_monitor = keyfile.get_string ("monitors", "presentation"); + control_fullscreen = keyfile.get_boolean ("monitors", "control_fullscreen"); + } catch(Error e) { + stderr.printf("could not load settings: %s\n", e.message); + } } public void save() { - /* TODO: save to ~/.config/pdf-presenter.cfg */ + /* monitors section */ + keyfile.set_string("monitors", "control", control_monitor); + keyfile.set_string("monitors", "presentation", presentation_monitor); + keyfile.set_boolean("monitors", "control_fullscreen", control_fullscreen); + + try { + string data = keyfile.to_data(); + var file = File.new_for_path(path); + file.replace_contents(data, data.length, null, false, FileCreateFlags.NONE, null); + } catch(Error e) { + stderr.printf("could not save settings: %s\n", e.message); + } } }