From 5a7a427e189eb15ca761eb7d3c8d22bad67e233f Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Mon, 4 Jun 2012 12:43:57 +0200 Subject: 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 --- src/config.c | 64 ++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 34 insertions(+), 30 deletions(-) (limited to 'src') 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 -- cgit v1.2.3