aboutsummaryrefslogtreecommitdiff
path: root/src/config.c
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-06-06 16:43:02 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-06-06 16:43:02 +0200
commit92eeaa0e66cf35f31e5c2ecf5e8503a38c9aa6c7 (patch)
tree1eaeb30fdb72563b363aee96c43b52738dde2e29 /src/config.c
parente5c7c410bebca09376f24de1d97cc14effe5f0e2 (diff)
downloadgtk-vlc-player-92eeaa0e66cf35f31e5c2ecf5e8503a38c9aa6c7.tar.gz
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
Diffstat (limited to 'src/config.c')
-rw-r--r--src/config.c71
1 files changed, 54 insertions, 17 deletions
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;
@@ -159,6 +161,41 @@ config_generic_get_transcript_color(const gchar *actor, const gchar *key,
}
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)
{
gchar *data;