aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-06-04 12:43:57 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-06-04 12:43:57 +0200
commit5a7a427e189eb15ca761eb7d3c8d22bad67e233f (patch)
tree0ec0b06803c5bd60424db81dd61c6a9e56ea606e /src
parenta4245a50902ee9b399c9aa726fb5281e2719fe57 (diff)
downloadexperiment-player-5a7a427e189eb15ca761eb7d3c8d22bad67e233f.tar.gz
fixed and simplified handling of default config values
they must be set after loading a keyfile since when setting them before they are overwritten when a keyfile can be loaded even if they don't exist in the keyfile
Diffstat (limited to 'src')
-rw-r--r--src/config.c64
1 files changed, 34 insertions, 30 deletions
diff --git a/src/config.c b/src/config.c
index eb6c8df..18965b3 100644
--- a/src/config.c
+++ b/src/config.c
@@ -12,6 +12,9 @@
#include "experiment-player.h"
+static inline void set_default_string(const gchar *group_name, const gchar *key,
+ const gchar *string);
+
static GKeyFile *keyfile;
static gchar *filename = NULL;
@@ -20,36 +23,6 @@ config_init_key_file(void)
{
keyfile = g_key_file_new();
- /* initialize defaults */
- config_set_quickopen_directory(DEFAULT_QUICKOPEN_DIR);
- config_set_formats_directory(DEFAULT_FORMATS_DIR);
-
- if (DEFAULT_INTERACTIVE_FORMAT_FONT != NULL)
- g_key_file_set_string(keyfile, "Wizard Transcript",
- "Default-Format-Font",
- DEFAULT_INTERACTIVE_FORMAT_FONT);
- if (DEFAULT_INTERACTIVE_FORMAT_FGCOLOR != NULL)
- g_key_file_set_string(keyfile, "Wizard Transcript",
- "Default-Format-Text-Color",
- DEFAULT_INTERACTIVE_FORMAT_FGCOLOR);
- if (DEFAULT_INTERACTIVE_FORMAT_BGCOLOR != NULL)
- g_key_file_set_string(keyfile, "Wizard Transcript",
- "Default-Format-BG-Color",
- DEFAULT_INTERACTIVE_FORMAT_BGCOLOR);
-
- if (DEFAULT_INTERACTIVE_FORMAT_FONT != NULL)
- g_key_file_set_string(keyfile, "Proband Transcript",
- "Default-Format-Font",
- DEFAULT_INTERACTIVE_FORMAT_FONT);
- if (DEFAULT_INTERACTIVE_FORMAT_FGCOLOR != NULL)
- g_key_file_set_string(keyfile, "Proband Transcript",
- "Default-Format-Text-Color",
- DEFAULT_INTERACTIVE_FORMAT_FGCOLOR);
- if (DEFAULT_INTERACTIVE_FORMAT_BGCOLOR != NULL)
- g_key_file_set_string(keyfile, "Proband Transcript",
- "Default-Format-BG-Color",
- DEFAULT_INTERACTIVE_FORMAT_BGCOLOR);
-
/* may fail if no serialized configuration exists */
g_key_file_load_from_data_dirs(keyfile, CONFIG_KEY_FILE, &filename,
G_KEY_FILE_KEEP_COMMENTS, NULL);
@@ -57,6 +30,37 @@ config_init_key_file(void)
if (filename == NULL)
filename = g_build_filename(g_get_user_data_dir(),
CONFIG_KEY_FILE, NULL);
+
+ /* initialize defaults */
+ set_default_string("Directories", "Quick-Open", DEFAULT_QUICKOPEN_DIR);
+ set_default_string("Directories", "Formats", DEFAULT_FORMATS_DIR);
+
+#ifdef DEFAULT_INTERACTIVE_FORMAT_FONT
+ set_default_string("Wizard Transcript", "Default-Format-Font",
+ DEFAULT_INTERACTIVE_FORMAT_FONT);
+ set_default_string("Proband Transcript", "Default-Format-Font",
+ DEFAULT_INTERACTIVE_FORMAT_FONT);
+#endif
+#ifdef DEFAULT_INTERACTIVE_FORMAT_FGCOLOR
+ set_default_string("Wizard Transcript", "Default-Format-Text-Color",
+ DEFAULT_INTERACTIVE_FORMAT_FGCOLOR);
+ set_default_string("Proband Transcript", "Default-Format-Text-Color",
+ DEFAULT_INTERACTIVE_FORMAT_FGCOLOR);
+#endif
+#ifdef DEFAULT_INTERACTIVE_FORMAT_BGCOLOR
+ set_default_string("Wizard Transcript", "Default-Format-BG-Color",
+ DEFAULT_INTERACTIVE_FORMAT_BGCOLOR);
+ set_default_string("Proband Transcript", "Default-Format-BG-Color",
+ DEFAULT_INTERACTIVE_FORMAT_BGCOLOR);
+#endif
+}
+
+static inline void
+set_default_string(const gchar *group_name, const gchar *key,
+ const gchar *string)
+{
+ if (!g_key_file_has_key(keyfile, group_name, key, NULL))
+ g_key_file_set_string(keyfile, group_name, key, string);
}
void