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 --- configure.ac | 4 +- .../gtk-experiment-transcript-formats.c | 14 +++-- src/config.c | 64 ++++++++++++---------- 3 files changed, 44 insertions(+), 38 deletions(-) diff --git a/configure.ac b/configure.ac index a4a965f..6664eaf 100644 --- a/configure.ac +++ b/configure.ac @@ -228,8 +228,8 @@ AC_DEFINE(DEFAULT_FORMATS_DIR, ["."], [Default directory for selecting formats AC_DEFINE(EXPERIMENT_FORMATS_FILTER, ["*.fmt"], [Format file filter]) AC_DEFINE(DEFAULT_INTERACTIVE_FORMAT_FONT, ["bold"], [Default interactive format font description]) -AC_DEFINE(DEFAULT_INTERACTIVE_FORMAT_FGCOLOR, [NULL], [Default interactive format foreground color]) -AC_DEFINE(DEFAULT_INTERACTIVE_FORMAT_BGCOLOR, [NULL], [Default interactive format background color]) +### AC_DEFINE(DEFAULT_INTERACTIVE_FORMAT_FGCOLOR, ["white"], [Default interactive format foreground color]) +### AC_DEFINE(DEFAULT_INTERACTIVE_FORMAT_BGCOLOR, ["red"], [Default interactive format background color]) AC_CONFIG_FILES([Makefile lib/Makefile src/Makefile]) AC_CONFIG_FILES([lib/gtk-vlc-player/Makefile]) diff --git a/lib/gtk-experiment-widgets/gtk-experiment-transcript-formats.c b/lib/gtk-experiment-widgets/gtk-experiment-transcript-formats.c index 3317f73..3898e30 100644 --- a/lib/gtk-experiment-widgets/gtk-experiment-transcript-formats.c +++ b/lib/gtk-experiment-widgets/gtk-experiment-transcript-formats.c @@ -216,6 +216,7 @@ gtk_experiment_transcript_set_interactive_format(GtkExperimentTranscript *trans, default_attribs = pango_attr_list_new(); +#ifdef DEFAULT_INTERACTIVE_FORMAT_FONT font = pango_font_description_from_string(DEFAULT_INTERACTIVE_FORMAT_FONT); if (font != NULL) { attrib = pango_attr_font_desc_new(font); @@ -223,24 +224,25 @@ gtk_experiment_transcript_set_interactive_format(GtkExperimentTranscript *trans, pango_attr_list_insert(default_attribs, attrib); pango_font_description_free(font); } - - if (DEFAULT_INTERACTIVE_FORMAT_FGCOLOR != NULL && - pango_color_parse(&color, DEFAULT_INTERACTIVE_FORMAT_FGCOLOR)) { +#endif +#ifdef DEFAULT_INTERACTIVE_FORMAT_FGCOLOR + if (pango_color_parse(&color, DEFAULT_INTERACTIVE_FORMAT_FGCOLOR)) { attrib = pango_attr_foreground_new(color.red, color.green, color.blue); attrib->end_index = 1; pango_attr_list_insert(default_attribs, attrib); } - - if (DEFAULT_INTERACTIVE_FORMAT_BGCOLOR != NULL && - pango_color_parse(&color, DEFAULT_INTERACTIVE_FORMAT_BGCOLOR)) { +#endif +#ifdef DEFAULT_INTERACTIVE_FORMAT_BGCOLOR + if (pango_color_parse(&color, DEFAULT_INTERACTIVE_FORMAT_BGCOLOR)) { attrib = pango_attr_background_new(color.red, color.green, color.blue); attrib->end_index = 1; pango_attr_list_insert(default_attribs, attrib); } +#endif } gtk_experiment_transcript_free_format(fmt); 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