aboutsummaryrefslogtreecommitdiff
path: root/src
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
parente5c7c410bebca09376f24de1d97cc14effe5f0e2 (diff)
downloadexperiment-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')
-rw-r--r--src/config.c71
-rw-r--r--src/experiment-player.h4
-rw-r--r--src/main.c20
3 files changed, 77 insertions, 18 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;
diff --git a/src/experiment-player.h b/src/experiment-player.h
index 9d99879..e3a2a19 100644
--- a/src/experiment-player.h
+++ b/src/experiment-player.h
@@ -129,6 +129,10 @@ config_get_transcript_default_format_bg_color(const gchar *actor,
color);
}
+void config_set_transcript_alignment(const gchar *actor,
+ PangoAlignment alignment);
+PangoAlignment config_get_transcript_alignment(const gchar *actor);
+
void config_save_key_file(void);
/*
diff --git a/src/main.c b/src/main.c
index 5980328..22e7266 100644
--- a/src/main.c
+++ b/src/main.c
@@ -256,6 +256,7 @@ main(int argc, char *argv[])
GtkAdjustment *adj;
PangoFontDescription *font_desc;
+ PangoAlignment alignment;
GdkColor color;
GtkRcStyle *modified_style;
@@ -322,7 +323,9 @@ main(int argc, char *argv[])
adj = gtk_vlc_player_get_volume_adjustment(GTK_VLC_PLAYER(player_widget));
gtk_scale_button_set_adjustment(GTK_SCALE_BUTTON(volume_button), adj);
- /* configure transcript widgets */
+ /*
+ * configure transcript widgets
+ */
transcript_wizard->speaker = g_strdup(SPEAKER_WIZARD);
font_desc = config_get_transcript_font(SPEAKER_WIZARD);
if (font_desc != NULL) {
@@ -336,6 +339,9 @@ main(int argc, char *argv[])
gtk_widget_modify_bg(transcript_wizard_widget,
GTK_STATE_NORMAL, &color);
+ alignment = config_get_transcript_alignment(SPEAKER_WIZARD);
+ gtk_experiment_transcript_set_alignment(transcript_wizard, alignment);
+
transcript_wizard->interactive_format.default_font =
config_get_transcript_default_format_font(SPEAKER_WIZARD);
if (config_get_transcript_default_format_text_color(SPEAKER_WIZARD, &color))
@@ -356,6 +362,9 @@ main(int argc, char *argv[])
gtk_widget_modify_bg(transcript_proband_widget,
GTK_STATE_NORMAL, &color);
+ alignment = config_get_transcript_alignment(SPEAKER_PROBAND);
+ gtk_experiment_transcript_set_alignment(transcript_proband, alignment);
+
transcript_proband->interactive_format.default_font =
config_get_transcript_default_format_font(SPEAKER_PROBAND);
if (config_get_transcript_default_format_text_color(SPEAKER_PROBAND, &color))
@@ -371,6 +380,9 @@ main(int argc, char *argv[])
gtk_main();
gdk_threads_leave();
+ /*
+ * update config file
+ */
modified_style = gtk_widget_get_modifier_style(transcript_wizard_widget);
config_set_transcript_font(SPEAKER_WIZARD, modified_style->font_desc);
config_set_transcript_text_color(SPEAKER_WIZARD,
@@ -383,6 +395,9 @@ main(int argc, char *argv[])
: NULL);
g_object_unref(modified_style);
+ alignment = gtk_experiment_transcript_get_alignment(transcript_wizard);
+ config_set_transcript_alignment(SPEAKER_WIZARD, alignment);
+
config_set_transcript_default_format_font(SPEAKER_WIZARD,
transcript_wizard->interactive_format.default_font);
config_set_transcript_default_format_text_color(SPEAKER_WIZARD,
@@ -402,6 +417,9 @@ main(int argc, char *argv[])
: NULL);
g_object_unref(modified_style);
+ alignment = gtk_experiment_transcript_get_alignment(transcript_proband);
+ config_set_transcript_alignment(SPEAKER_PROBAND, alignment);
+
config_set_transcript_default_format_font(SPEAKER_PROBAND,
transcript_proband->interactive_format.default_font);
config_set_transcript_default_format_text_color(SPEAKER_PROBAND,