aboutsummaryrefslogtreecommitdiff
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
parenta4245a50902ee9b399c9aa726fb5281e2719fe57 (diff)
downloadgtk-vlc-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
-rw-r--r--configure.ac4
-rw-r--r--lib/gtk-experiment-widgets/gtk-experiment-transcript-formats.c14
-rw-r--r--src/config.c64
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