X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=applet%2Fcpmpsubtitles.c;h=63c9a0b7f9478bf8f60178836c4bb6f75b61dde8;hb=bfc1a094d396a089fff7c7a84183950c307fe99c;hp=740ec5d65b8f709c930cd4feea37baf4c8fc1e6b;hpb=30e2d15a0a2b1c39900e50ec932655877d548723;p=mafwsubrenderer diff --git a/applet/cpmpsubtitles.c b/applet/cpmpsubtitles.c index 740ec5d..63c9a0b 100644 --- a/applet/cpmpsubtitles.c +++ b/applet/cpmpsubtitles.c @@ -2,8 +2,11 @@ * Subtitles control panel applet. * Copyright (C) 2010 Roman Moravcik * - * encodings structure imported from totem-subtitle-encoding.c - * Copyright (C) 2001-2006 Bastien Nocera + * encodings structure imported from totem-subtitle-encoding.c + * Copyright (C) 2001-2006 Bastien Nocera + * + * font family detection imported from hildon-font-selection-dialog.c + * Copyright (C) 2005, 2006 Nokia Corporation, all rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,7 +23,14 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#ifdef HAVE_CONFIG_H +#include +#endif + +#include + #include +#include #include #include @@ -28,12 +38,34 @@ #include +#define GCONF_MAFW_GST_SUBTITLE_RENDERER "/system/mafw/mafw-gst-subtitles-renderer" +#define _HL(str) dgettext("hildon-libs",str) -#define GETTEXT_PACKAGE "osso-applet-subtitles" -#include +typedef enum +{ + FONT_STYLE_REGULAR, + FONT_STYLE_ITALIC, + FONT_STYLE_BOLD, + FONT_STYLE_ITALIC_BOLD, + FONT_STYLE_LAST, +} FontStyleIndex; -#define GCONF_MAFW_GST_SUBTITLE_RENDERER "/system/mafw/mafw-gst-renderer" -#define _HL(str) dgettext("hildon-libs",str) +typedef struct { + int index; + const char *name; +} FontStyle; + +static FontStyle font_styles[] = { + {FONT_STYLE_REGULAR, N_("Regular")}, + {FONT_STYLE_ITALIC, N_("Italic")}, + {FONT_STYLE_BOLD, N_("Bold")}, + {FONT_STYLE_ITALIC_BOLD, N_("Italic Bold")} +}; + +static const gint font_sizes[] = +{ + 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, -1 +}; typedef enum { @@ -145,119 +177,117 @@ typedef enum SUBTITLE_ENCODING_LAST } SubtitleEncodingIndex; - typedef struct { int index; const char *charset; const char *name; } SubtitleEncoding; - static SubtitleEncoding encodings[] = { - {SUBTITLE_ENCODING_CURRENT_LOCALE, NULL, "Current Locale"}, + {SUBTITLE_ENCODING_CURRENT_LOCALE, NULL, N_("Current Locale")}, - {SUBTITLE_ENCODING_ISO_8859_6, "ISO-8859-6", "Arabic"}, - {SUBTITLE_ENCODING_IBM_864, "IBM864", "Arabic"}, - {SUBTITLE_ENCODING_MAC_ARABIC, "MAC_ARABIC", "Arabic"}, - {SUBTITLE_ENCODING_WINDOWS_1256, "WINDOWS-1256", "Arabic"}, + {SUBTITLE_ENCODING_ISO_8859_6, "ISO-8859-6", N_("Arabic")}, + {SUBTITLE_ENCODING_IBM_864, "IBM864", N_("Arabic")}, + {SUBTITLE_ENCODING_MAC_ARABIC, "MAC_ARABIC", N_("Arabic")}, + {SUBTITLE_ENCODING_WINDOWS_1256, "WINDOWS-1256", N_("Arabic")}, - {SUBTITLE_ENCODING_ARMSCII_8, "ARMSCII-8", "Armenian"}, + {SUBTITLE_ENCODING_ARMSCII_8, "ARMSCII-8", N_("Armenian")}, - {SUBTITLE_ENCODING_ISO_8859_4, "ISO-8859-4", "Baltic"}, - {SUBTITLE_ENCODING_ISO_8859_13, "ISO-8859-13", "Baltic"}, - {SUBTITLE_ENCODING_WINDOWS_1257, "WINDOWS-1257", "Baltic"}, + {SUBTITLE_ENCODING_ISO_8859_4, "ISO-8859-4", N_("Baltic")}, + {SUBTITLE_ENCODING_ISO_8859_13, "ISO-8859-13", N_("Baltic")}, + {SUBTITLE_ENCODING_WINDOWS_1257, "WINDOWS-1257", N_("Baltic")}, - {SUBTITLE_ENCODING_ISO_8859_14, "ISO-8859-14", "Celtic"}, + {SUBTITLE_ENCODING_ISO_8859_14, "ISO-8859-14", N_("Celtic")}, - {SUBTITLE_ENCODING_ISO_8859_2, "ISO-8859-2", "Central European"}, - {SUBTITLE_ENCODING_IBM_852, "IBM852", "Central European"}, - {SUBTITLE_ENCODING_MAC_CE, "MAC_CE", "Central European"}, - {SUBTITLE_ENCODING_WINDOWS_1250, "WINDOWS-1250", "Central European"}, + {SUBTITLE_ENCODING_ISO_8859_2, "ISO-8859-2", N_("Central European")}, + {SUBTITLE_ENCODING_IBM_852, "IBM852", N_("Central European")}, + {SUBTITLE_ENCODING_MAC_CE, "MAC_CE", N_("Central European")}, + {SUBTITLE_ENCODING_WINDOWS_1250, "WINDOWS-1250", N_("Central European")}, - {SUBTITLE_ENCODING_GB18030, "GB18030", "Chinese Simplified"}, - {SUBTITLE_ENCODING_GB2312, "GB2312", "Chinese Simplified"}, - {SUBTITLE_ENCODING_GBK, "GBK", "Chinese Simplified"}, - {SUBTITLE_ENCODING_HZ, "HZ", "Chinese Simplified"}, + {SUBTITLE_ENCODING_GB18030, "GB18030", N_("Chinese Simplified")}, + {SUBTITLE_ENCODING_GB2312, "GB2312", N_("Chinese Simplified")}, + {SUBTITLE_ENCODING_GBK, "GBK", N_("Chinese Simplified")}, + {SUBTITLE_ENCODING_HZ, "HZ", N_("Chinese Simplified")}, - {SUBTITLE_ENCODING_BIG5, "BIG5", "Chinese Traditional"}, - {SUBTITLE_ENCODING_BIG5_HKSCS, "BIG5-HKSCS", "Chinese Traditional"}, - {SUBTITLE_ENCODING_EUC_TW, "EUC-TW", "Chinese Traditional"}, + {SUBTITLE_ENCODING_BIG5, "BIG5", N_("Chinese Traditional")}, + {SUBTITLE_ENCODING_BIG5_HKSCS, "BIG5-HKSCS", N_("Chinese Traditional")}, + {SUBTITLE_ENCODING_EUC_TW, "EUC-TW", N_("Chinese Traditional")}, - {SUBTITLE_ENCODING_MAC_CROATIAN, "MAC_CROATIAN", "Croatian"}, + {SUBTITLE_ENCODING_MAC_CROATIAN, "MAC_CROATIAN", N_("Croatian")}, - {SUBTITLE_ENCODING_ISO_8859_5, "ISO-8859-5", "Cyrillic"}, - {SUBTITLE_ENCODING_IBM_855, "IBM855", "Cyrillic"}, - {SUBTITLE_ENCODING_ISO_IR_111, "ISO-IR-111", "Cyrillic"}, - {SUBTITLE_ENCODING_KOI8_R, "KOI8-R", "Cyrillic"}, - {SUBTITLE_ENCODING_MAC_CYRILLIC, "MAC-CYRILLIC", "Cyrillic"}, - {SUBTITLE_ENCODING_WINDOWS_1251, "WINDOWS-1251", "Cyrillic"}, + {SUBTITLE_ENCODING_ISO_8859_5, "ISO-8859-5", N_("Cyrillic")}, + {SUBTITLE_ENCODING_IBM_855, "IBM855", N_("Cyrillic")}, + {SUBTITLE_ENCODING_ISO_IR_111, "ISO-IR-111", N_("Cyrillic")}, + {SUBTITLE_ENCODING_KOI8_R, "KOI8-R", N_("Cyrillic")}, + {SUBTITLE_ENCODING_MAC_CYRILLIC, "MAC-CYRILLIC", N_("Cyrillic")}, + {SUBTITLE_ENCODING_WINDOWS_1251, "WINDOWS-1251", N_("Cyrillic")}, - {SUBTITLE_ENCODING_CP_866, "CP866", "Cyrillic/Russian"}, + {SUBTITLE_ENCODING_CP_866, "CP866", N_("Cyrillic/Russian")}, - {SUBTITLE_ENCODING_MAC_UKRAINIAN, "MAC_UKRAINIAN", "Cyrillic/Ukrainian"}, - {SUBTITLE_ENCODING_KOI8_U, "KOI8-U", "Cyrillic/Ukrainian"}, + {SUBTITLE_ENCODING_MAC_UKRAINIAN, "MAC_UKRAINIAN", N_("Cyrillic/Ukrainian")}, + {SUBTITLE_ENCODING_KOI8_U, "KOI8-U", N_("Cyrillic/Ukrainian")}, - {SUBTITLE_ENCODING_GEOSTD8, "GEORGIAN-PS", "Georgian"}, + {SUBTITLE_ENCODING_GEOSTD8, "GEORGIAN-PS", N_("Georgian")}, - {SUBTITLE_ENCODING_ISO_8859_7, "ISO-8859-7", "Greek"}, - {SUBTITLE_ENCODING_MAC_GREEK, "MAC_GREEK", "Greek"}, - {SUBTITLE_ENCODING_WINDOWS_1253, "WINDOWS-1253", "Greek"}, + {SUBTITLE_ENCODING_ISO_8859_7, "ISO-8859-7", N_("Greek")}, + {SUBTITLE_ENCODING_MAC_GREEK, "MAC_GREEK", N_("Greek")}, + {SUBTITLE_ENCODING_WINDOWS_1253, "WINDOWS-1253", N_("Greek")}, - {SUBTITLE_ENCODING_MAC_GUJARATI, "MAC_GUJARATI", "Gujarati"}, + {SUBTITLE_ENCODING_MAC_GUJARATI, "MAC_GUJARATI", N_("Gujarati")}, - {SUBTITLE_ENCODING_MAC_GURMUKHI, "MAC_GURMUKHI", "Gurmukhi"}, + {SUBTITLE_ENCODING_MAC_GURMUKHI, "MAC_GURMUKHI", N_("Gurmukhi")}, - {SUBTITLE_ENCODING_ISO_8859_8_I, "ISO-8859-8-I", "Hebrew"}, - {SUBTITLE_ENCODING_IBM_862, "IBM862", "Hebrew"}, - {SUBTITLE_ENCODING_MAC_HEBREW, "MAC_HEBREW", "Hebrew"}, - {SUBTITLE_ENCODING_WINDOWS_1255, "WINDOWS-1255", "Hebrew"}, + {SUBTITLE_ENCODING_ISO_8859_8_I, "ISO-8859-8-I", N_("Hebrew")}, + {SUBTITLE_ENCODING_IBM_862, "IBM862", N_("Hebrew")}, + {SUBTITLE_ENCODING_MAC_HEBREW, "MAC_HEBREW", N_("Hebrew")}, + {SUBTITLE_ENCODING_WINDOWS_1255, "WINDOWS-1255", N_("Hebrew")}, - {SUBTITLE_ENCODING_ISO_8859_8, "ISO-8859-8", "Hebrew Visual"}, + {SUBTITLE_ENCODING_ISO_8859_8, "ISO-8859-8", N_("Hebrew Visual")}, - {SUBTITLE_ENCODING_MAC_DEVANAGARI, "MAC_DEVANAGARI", "Hindi"}, + {SUBTITLE_ENCODING_MAC_DEVANAGARI, "MAC_DEVANAGARI", N_("Hindi")}, - {SUBTITLE_ENCODING_MAC_ICELANDIC, "MAC_ICELANDIC", "Icelandic"}, + {SUBTITLE_ENCODING_MAC_ICELANDIC, "MAC_ICELANDIC", N_("Icelandic")}, - {SUBTITLE_ENCODING_EUC_JP, "EUC-JP", "Japanese"}, - {SUBTITLE_ENCODING_ISO_2022_JP, "ISO2022JP", "Japanese"}, - {SUBTITLE_ENCODING_SHIFT_JIS, "SHIFT-JIS", "Japanese"}, + {SUBTITLE_ENCODING_EUC_JP, "EUC-JP", N_("Japanese")}, + {SUBTITLE_ENCODING_ISO_2022_JP, "ISO2022JP", N_("Japanese")}, + {SUBTITLE_ENCODING_SHIFT_JIS, "SHIFT-JIS", N_("Japanese")}, - {SUBTITLE_ENCODING_EUC_KR, "EUC-KR", "Korean"}, - {SUBTITLE_ENCODING_ISO_2022_KR, "ISO2022KR", "Korean"}, - {SUBTITLE_ENCODING_JOHAB, "JOHAB", "Korean"}, - {SUBTITLE_ENCODING_UHC, "UHC", "Korean"}, + {SUBTITLE_ENCODING_EUC_KR, "EUC-KR", N_("Korean")}, + {SUBTITLE_ENCODING_ISO_2022_KR, "ISO2022KR", N_("Korean")}, + {SUBTITLE_ENCODING_JOHAB, "JOHAB", N_("Korean")}, + {SUBTITLE_ENCODING_UHC, "UHC", N_("Korean")}, - {SUBTITLE_ENCODING_ISO_8859_10, "ISO-8859-10", "Nordic"}, + {SUBTITLE_ENCODING_ISO_8859_10, "ISO-8859-10", N_("Nordic")}, - {SUBTITLE_ENCODING_MAC_FARSI, "MAC_FARSI", "Persian"}, + {SUBTITLE_ENCODING_MAC_FARSI, "MAC_FARSI", N_("Persian")}, - {SUBTITLE_ENCODING_ISO_8859_16, "ISO-8859-16", "Romanian"}, - {SUBTITLE_ENCODING_MAC_ROMANIAN, "MAC_ROMANIAN", "Romanian"}, + {SUBTITLE_ENCODING_ISO_8859_16, "ISO-8859-16", N_("Romanian")}, + {SUBTITLE_ENCODING_MAC_ROMANIAN, "MAC_ROMANIAN", N_("Romanian")}, - {SUBTITLE_ENCODING_ISO_8859_3, "ISO-8859-3", "South European"}, + {SUBTITLE_ENCODING_ISO_8859_3, "ISO-8859-3", N_("South European")}, - {SUBTITLE_ENCODING_TIS_620, "TIS-620", "Thai"}, + {SUBTITLE_ENCODING_TIS_620, "TIS-620", N_("Thai")}, - {SUBTITLE_ENCODING_ISO_8859_9, "ISO-8859-9", "Turkish"}, - {SUBTITLE_ENCODING_IBM_857, "IBM857", "Turkish"}, - {SUBTITLE_ENCODING_MAC_TURKISH, "MAC_TURKISH", "Turkish"}, - {SUBTITLE_ENCODING_WINDOWS_1254, "WINDOWS-1254", "Turkish"}, + {SUBTITLE_ENCODING_ISO_8859_9, "ISO-8859-9", N_("Turkish")}, + {SUBTITLE_ENCODING_IBM_857, "IBM857", N_("Turkish")}, + {SUBTITLE_ENCODING_MAC_TURKISH, "MAC_TURKISH", N_("Turkish")}, + {SUBTITLE_ENCODING_WINDOWS_1254, "WINDOWS-1254", N_("Turkish")}, - {SUBTITLE_ENCODING_UTF_7, "UTF-7", "Unicode"}, - {SUBTITLE_ENCODING_UTF_8, "UTF-8", "Unicode"}, - {SUBTITLE_ENCODING_UTF_16, "UTF-16", "Unicode"}, - {SUBTITLE_ENCODING_UCS_2, "UCS-2", "Unicode"}, - {SUBTITLE_ENCODING_UCS_4, "UCS-4", "Unicode"}, + {SUBTITLE_ENCODING_UTF_7, "UTF-7", N_("Unicode")}, + {SUBTITLE_ENCODING_UTF_8, "UTF-8", N_("Unicode")}, + {SUBTITLE_ENCODING_UTF_16, "UTF-16", N_("Unicode")}, + {SUBTITLE_ENCODING_UCS_2, "UCS-2", N_("Unicode")}, + {SUBTITLE_ENCODING_UCS_4, "UCS-4", N_("Unicode")}, - {SUBTITLE_ENCODING_ISO_8859_1, "ISO-8859-1", "Western"}, - {SUBTITLE_ENCODING_ISO_8859_15, "ISO-8859-15", "Western"}, - {SUBTITLE_ENCODING_IBM_850, "IBM850", "Western"}, - {SUBTITLE_ENCODING_MAC_ROMAN, "MAC_ROMAN", "Western"}, - {SUBTITLE_ENCODING_WINDOWS_1252, "WINDOWS-1252", "Western"}, + {SUBTITLE_ENCODING_ISO_8859_1, "ISO-8859-1", N_("Western")}, + {SUBTITLE_ENCODING_ISO_8859_15, "ISO-8859-15", N_("Western")}, + {SUBTITLE_ENCODING_IBM_850, "IBM850", N_("Western")}, + {SUBTITLE_ENCODING_MAC_ROMAN, "MAC_ROMAN", N_("Western")}, + {SUBTITLE_ENCODING_WINDOWS_1252, "WINDOWS-1252", N_("Western")}, - {SUBTITLE_ENCODING_TCVN, "TCVN", "Vietnamese"}, - {SUBTITLE_ENCODING_VISCII, "VISCII", "Vietnamese"}, - {SUBTITLE_ENCODING_WINDOWS_1258, "WINDOWS-1258", "Vietnamese"} + {SUBTITLE_ENCODING_TCVN, "TCVN", N_("Vietnamese")}, + {SUBTITLE_ENCODING_VISCII, "VISCII", N_("Vietnamese")}, + {SUBTITLE_ENCODING_WINDOWS_1258, "WINDOWS-1258", N_("Vietnamese")} }; static gboolean @@ -327,28 +357,201 @@ gconf_set_string (GConfClient *client, g_free (tmp); } +static gboolean +is_internal_font (const gchar * name) +{ + /* FIXME Extremally BAD BAD BAD way of doing things */ + + return strcmp (name, "DeviceSymbols") == 0 + || strcmp(name, "Nokia Smiley") == 0 + || strcmp(name, "NewCourier") == 0 + || strcmp(name, "NewTimes") == 0 + || strcmp(name, "SwissA") == 0 + || strcmp(name, "Nokia Sans") == 0 + || strcmp(name, "Nokia Sans Cn") == 0; +} + +static void +filter_out_internal_fonts (PangoFontFamily **families, + int *n_families) +{ + int i; + int n; /* counts valid fonts */ + const gchar * name = NULL; + + for (i = 0, n = 0; i < * n_families; i++) { + name = pango_font_family_get_name (families[i]); + + if(!is_internal_font(name)) { + if (i != n) { /* there are filtered out families */ + families[n] = families[i]; /* shift the current family */ + } + n++; /* count one more valid */ + } + } /* foreach font family */ + + *n_families = n; +} + +static int +cmp_families (const void *a, + const void *b) +{ + const char *a_name = pango_font_family_get_name (* (PangoFontFamily **) a); + const char *b_name = pango_font_family_get_name (* (PangoFontFamily **) b); + + return g_utf8_collate (a_name, b_name); +} + static void font_selector_dialog (HildonButton *button, gpointer user_data) { - GtkWidget *dialog, *hbox; + GtkWidget *dialog, *hbox, *family_selector, *style_selector, *size_selector; + gint index = 0; + const gchar *font = NULL; + PangoFontDescription *font_desc = NULL; + PangoFontFamily **families; + gint n_families = 0; + PangoWeight pango_weight; + PangoStyle pango_style; + + font = hildon_button_get_value (HILDON_BUTTON (button)); + if (font == NULL) + return; + + font_desc = pango_font_description_from_string (font); dialog = gtk_dialog_new (); gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); - gtk_window_set_title (GTK_WINDOW (dialog), _("Subtitle font")); + gtk_window_set_title (GTK_WINDOW (dialog), _("Font")); gtk_dialog_add_button(GTK_DIALOG (dialog), "OK", GTK_RESPONSE_ACCEPT); + gtk_window_set_default_size (GTK_WINDOW (dialog), -1, 400); hbox = gtk_hbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox); - // pango_font_description_from_string + /* font family selector */ + family_selector = hildon_touch_selector_new_text (); + gtk_box_pack_start (GTK_BOX (hbox), family_selector, TRUE, TRUE, 0); + + pango_context_list_families (gtk_widget_get_pango_context (GTK_WIDGET (dialog)), + &families, &n_families); + + filter_out_internal_fonts (families, &n_families); + + qsort (families, n_families, sizeof(PangoFontFamily *), cmp_families); + + for (index = 0; index < n_families; index++) { + const gchar *family = pango_font_family_get_name (families[index]); + hildon_touch_selector_insert_text (HILDON_TOUCH_SELECTOR (family_selector), + index, family); + + if (strcmp (family, pango_font_description_get_family (font_desc)) == 0) { + hildon_touch_selector_set_active (HILDON_TOUCH_SELECTOR (family_selector), 0, + index); + hildon_touch_selector_center_on_selected (HILDON_TOUCH_SELECTOR (family_selector)); + } + } + g_free (families); + + /* font style selector */ + style_selector = hildon_touch_selector_new_text (); + gtk_box_pack_start (GTK_BOX (hbox), style_selector, TRUE, TRUE, 0); + + index = 0; + while (index < FONT_STYLE_LAST) { + const gchar *style = g_strdup_printf ("%s", _(font_styles[index].name)); + hildon_touch_selector_insert_text (HILDON_TOUCH_SELECTOR (style_selector), + font_styles[index].index, style); + index++; + } + pango_weight = pango_font_description_get_weight (font_desc); + pango_style = pango_font_description_get_style (font_desc); + + if (pango_weight == PANGO_WEIGHT_NORMAL) { + if (pango_style == PANGO_STYLE_NORMAL) { + hildon_touch_selector_set_active (HILDON_TOUCH_SELECTOR (style_selector), 0, + FONT_STYLE_REGULAR); + } else { + hildon_touch_selector_set_active (HILDON_TOUCH_SELECTOR (style_selector), 0, + FONT_STYLE_ITALIC); + } + } else { + if (pango_style == PANGO_STYLE_NORMAL) { + hildon_touch_selector_set_active (HILDON_TOUCH_SELECTOR (style_selector), 0, + FONT_STYLE_BOLD); + } else { + hildon_touch_selector_set_active (HILDON_TOUCH_SELECTOR (style_selector), 0, + FONT_STYLE_ITALIC_BOLD); + } + } + hildon_touch_selector_center_on_selected (HILDON_TOUCH_SELECTOR (style_selector)); + + /* font size selector */ + size_selector = hildon_touch_selector_new_text (); + gtk_box_pack_start (GTK_BOX (hbox), size_selector, TRUE, TRUE, 0); + + index = 0; + while (font_sizes[index] != -1) { + const gchar *size = g_strdup_printf ("%d", font_sizes[index]); + hildon_touch_selector_insert_text (HILDON_TOUCH_SELECTOR (size_selector), + index, size); + + if (font_sizes[index] == (pango_font_description_get_size (font_desc) / PANGO_SCALE)) { + hildon_touch_selector_set_active (HILDON_TOUCH_SELECTOR (size_selector), 0, + index); + hildon_touch_selector_center_on_selected (HILDON_TOUCH_SELECTOR (size_selector)); + } + + index++; + } /* Run the dialog */ gtk_widget_show_all (GTK_WIDGET (dialog)); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { - // pango_font_description_to_string + if (font_desc) + pango_font_description_free (font_desc); + + font_desc = pango_font_description_new (); + + /* set font family */ + pango_font_description_set_family (font_desc, + hildon_touch_selector_get_current_text (HILDON_TOUCH_SELECTOR (family_selector))); + + /* set font style */ + switch (hildon_touch_selector_get_active (HILDON_TOUCH_SELECTOR (style_selector), 0)) { + case FONT_STYLE_REGULAR: + pango_font_description_set_style (font_desc, PANGO_STYLE_NORMAL); + pango_font_description_set_weight (font_desc, PANGO_WEIGHT_NORMAL); + break; + + case FONT_STYLE_ITALIC: + pango_font_description_set_style (font_desc, PANGO_STYLE_ITALIC); + pango_font_description_set_weight (font_desc, PANGO_WEIGHT_NORMAL); + break; + + case FONT_STYLE_BOLD: + pango_font_description_set_style (font_desc, PANGO_STYLE_NORMAL); + pango_font_description_set_weight (font_desc, PANGO_WEIGHT_BOLD); + break; + + case FONT_STYLE_ITALIC_BOLD: + pango_font_description_set_style (font_desc, PANGO_STYLE_ITALIC); + pango_font_description_set_weight (font_desc, PANGO_WEIGHT_BOLD); + break; + } + + /* set font size */ + pango_font_description_set_size (font_desc, + font_sizes[hildon_touch_selector_get_active (HILDON_TOUCH_SELECTOR (size_selector), 0)] * PANGO_SCALE); + + hildon_button_set_value (HILDON_BUTTON (button), pango_font_description_to_string (font_desc)); } + if (font_desc) + pango_font_description_free (font_desc); + gtk_widget_destroy(GTK_WIDGET(dialog)); } @@ -362,20 +565,18 @@ create_encoding_selector (void) selector = hildon_touch_selector_new_text (); while (index < SUBTITLE_ENCODING_LAST) { - gchar *encoding = NULL; + const gchar *encoding = NULL; if (encodings[index].charset) { - encoding = g_strdup_printf ("%s (%s)", encodings[index].name, + encoding = g_strdup_printf ("%s (%s)", _(encodings[index].name), encodings[index].charset); } else { - encoding = g_strdup_printf ("%s", encodings[index].name); + encoding = g_strdup_printf ("%s", _(encodings[index].name)); } hildon_touch_selector_insert_text (HILDON_TOUCH_SELECTOR (selector), encodings[index].index, encoding); - if (encoding) - g_free (encoding); index++; } @@ -422,8 +623,7 @@ create_subtitles_font_button (GConfClient *gconf_client) hildon_button_set_alignment (HILDON_BUTTON (button), 0.0, 0.5, 1.0, 0.0); hildon_button_set_title_alignment (HILDON_BUTTON(button), 0.0, 0.5); hildon_button_set_value_alignment (HILDON_BUTTON (button), 0.0, 0.5); - - g_signal_connect (button, "clicked", G_CALLBACK (font_selector_dialog), NULL); + hildon_button_set_style (HILDON_BUTTON (button), HILDON_BUTTON_STYLE_PICKER); font = gconf_get_string (gconf_client, "subtitle_font"); if (font) { @@ -431,6 +631,10 @@ create_subtitles_font_button (GConfClient *gconf_client) } else { hildon_button_set_value (HILDON_BUTTON (button), "Sans Bold 18"); } + + g_signal_connect (button, "clicked", G_CALLBACK (font_selector_dialog), + NULL); + return button; }