From 92eeaa0e66cf35f31e5c2ecf5e8503a38c9aa6c7 Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Wed, 6 Jun 2012 16:43:02 +0200 Subject: configurable transcript widget text alignment * via pop up menu and config file (symbolic value) * use image menu items in transcript popup * renamed "Choose Foreground Color..." to "Choose Text Color..." * simplify transcript related config setters/getters --- src/config.c | 71 +++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 54 insertions(+), 17 deletions(-) (limited to 'src/config.c') diff --git a/src/config.c b/src/config.c index 18965b3..951a9e2 100644 --- a/src/config.c +++ b/src/config.c @@ -14,6 +14,7 @@ static inline void set_default_string(const gchar *group_name, const gchar *key, const gchar *string); +static const gchar *get_group_by_actor(const gchar *actor); static GKeyFile *keyfile; static gchar *filename = NULL; @@ -87,19 +88,25 @@ config_get_formats_directory(void) return g_key_file_get_string(keyfile, "Directories", "Formats", NULL); } +static const gchar * +get_group_by_actor(const gchar *actor) +{ + static gchar group[255]; + + g_snprintf(group, sizeof(group), "%s Transcript", actor); + return group; +} + 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); + const gchar *group = get_group_by_actor(actor); if (font == NULL) { g_key_file_remove_key(keyfile, group, key, NULL); } else { - font_name = pango_font_description_to_string(font); + gchar *font_name = pango_font_description_to_string(font); g_key_file_set_string(keyfile, group, key, font_name); g_free(font_name); } @@ -108,12 +115,11 @@ config_generic_set_transcript_font(const gchar *actor, const gchar *key, 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); + font_name = g_key_file_get_string(keyfile, get_group_by_actor(actor), + key, NULL); if (font_name != NULL) { font_desc = pango_font_description_from_string(font_name); g_free(font_name); @@ -126,15 +132,12 @@ 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); + const gchar *group = get_group_by_actor(actor); if (color == NULL) { g_key_file_remove_key(keyfile, group, key, NULL); } else { - color_name = gdk_color_to_string(color); + gchar *color_name = gdk_color_to_string(color); g_key_file_set_string(keyfile, group, key, color_name); g_free(color_name); } @@ -144,11 +147,10 @@ gboolean config_generic_get_transcript_color(const gchar *actor, const gchar *key, GdkColor *color) { - gchar group[255]; - gchar *color_name; + gchar *color_name; - g_snprintf(group, sizeof(group), "%s Transcript", actor); - color_name = g_key_file_get_string(keyfile, group, key, NULL); + color_name = g_key_file_get_string(keyfile, get_group_by_actor(actor), + key, NULL); if (color_name == NULL) return FALSE; @@ -158,6 +160,41 @@ config_generic_get_transcript_color(const gchar *actor, const gchar *key, return TRUE; } +void +config_set_transcript_alignment(const gchar *actor, PangoAlignment alignment) +{ + static gchar **values = NULL; + + if (values == NULL) { + gchar *possible_values; + + pango_parse_enum(PANGO_TYPE_ALIGNMENT, "", NULL, + FALSE, &possible_values); + values = g_strsplit(possible_values, "/", 0); + g_free(possible_values); + } + + g_key_file_set_string(keyfile, get_group_by_actor(actor), + "Widget-Alignment", values[alignment]); +} + +PangoAlignment +config_get_transcript_alignment(const gchar *actor) +{ + gchar *value; + gint alignment = (gint)PANGO_ALIGN_LEFT; + + value = g_key_file_get_string(keyfile, get_group_by_actor(actor), + "Widget-Alignment", NULL); + if (value == NULL) + return PANGO_ALIGN_LEFT; + + pango_parse_enum(PANGO_TYPE_ALIGNMENT, value, &alignment, FALSE, NULL); + g_free(value); + + return (PangoAlignment)alignment; +} + void config_save_key_file(void) { -- cgit v1.2.3