diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-06-02 14:54:18 +0200 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-06-02 14:54:18 +0200 |
commit | a4245a50902ee9b399c9aa726fb5281e2719fe57 (patch) | |
tree | e536fdeea6b8a780b2c797799d8d9ced565ff5c1 /src/config.c | |
parent | 54f75db1b82cc5a81c98ed722b3a60c38645919d (diff) | |
download | experiment-player-a4245a50902ee9b399c9aa726fb5281e2719fe57.tar.gz |
save transcript fonts and colors in key-file (config file)
* default widget styles are not handled properly. it must be possible to reset manually chosen fonts/colors (mapped to no key in keyfile)
* default interactive format text attributes should be saved as well
Diffstat (limited to 'src/config.c')
-rw-r--r-- | src/config.c | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/src/config.c b/src/config.c index 1dedf79..eb6c8df 100644 --- a/src/config.c +++ b/src/config.c @@ -8,6 +8,8 @@ #include <glib/gprintf.h> #include <glib/gstdio.h> +#include <gdk/gdk.h> + #include "experiment-player.h" static GKeyFile *keyfile; @@ -22,6 +24,32 @@ config_init_key_file(void) 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); @@ -56,6 +84,77 @@ config_get_formats_directory(void) } void +config_generic_set_transcript_font(const gchar *actor, const gchar *key, + const PangoFontDescription *font) +{ + gchar group[255]; + gchar *font_name; + + g_snprintf(group, sizeof(group), "%s Transcript", actor); + + if (font == NULL) { + g_key_file_remove_key(keyfile, group, key, NULL); + } else { + font_name = pango_font_description_to_string(font); + g_key_file_set_string(keyfile, group, key, font_name); + g_free(font_name); + } +} + +PangoFontDescription * +config_generic_get_transcript_font(const gchar *actor, const gchar *key) +{ + gchar group[255]; + gchar *font_name; + PangoFontDescription *font_desc = NULL; + + g_snprintf(group, sizeof(group), "%s Transcript", actor); + font_name = g_key_file_get_string(keyfile, group, key, NULL); + if (font_name != NULL) { + font_desc = pango_font_description_from_string(font_name); + g_free(font_name); + } + + return font_desc; +} + +void +config_generic_set_transcript_color(const gchar *actor, const gchar *key, + const GdkColor *color) +{ + gchar group[255]; + gchar *color_name; + + g_snprintf(group, sizeof(group), "%s Transcript", actor); + + if (color == NULL) { + g_key_file_remove_key(keyfile, group, key, NULL); + } else { + color_name = gdk_color_to_string(color); + g_key_file_set_string(keyfile, group, key, color_name); + g_free(color_name); + } +} + +gboolean +config_generic_get_transcript_color(const gchar *actor, const gchar *key, + GdkColor *color) +{ + gchar group[255]; + gchar *color_name; + + g_snprintf(group, sizeof(group), "%s Transcript", actor); + color_name = g_key_file_get_string(keyfile, group, key, NULL); + if (color_name == NULL) + return FALSE; + + gdk_color_parse(color_name, color); + g_free(color_name); + + return TRUE; +} + +void config_save_key_file(void) { gchar *data; |