diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/config.c | 71 | ||||
-rw-r--r-- | src/experiment-player.h | 4 | ||||
-rw-r--r-- | src/main.c | 20 |
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); /* @@ -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, |