Added localization support to control panel applet
[mafwsubrenderer] / applet / cpmpsubtitles.c
1 /*
2  *  Subtitles control panel applet.
3  *  Copyright (C) 2010 Roman Moravcik
4  *
5  * encodings structure imported from totem-subtitle-encoding.c
6  * Copyright (C) 2001-2006 Bastien Nocera <hadess@hadess.net>
7  *
8  *  This program is free software; you can redistribute it and/or modify
9  *  it under the terms of the GNU General Public License as published by
10  *  the Free Software Foundation; either version 2 of the License, or
11  *  (at your option) any later version.
12  *
13  *  This program is distributed in the hope that it will be useful,
14  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  *  GNU General Public License for more details.
17  *
18  *  You should have received a copy of the GNU General Public License
19  *  along with this program; if not, write to the Free Software
20  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  */
22
23 #ifdef HAVE_CONFIG_H
24 #include <config.h>
25 #endif
26
27 #include <glib.h>
28 #include <glib/gi18n-lib.h>
29
30 #include <gtk/gtk.h>
31 #include <hildon/hildon.h>
32 #include <hildon-cp-plugin/hildon-cp-plugin-interface.h>
33
34 #include <gconf/gconf-client.h>
35
36 #define GCONF_MAFW_GST_SUBTITLE_RENDERER "/system/mafw/mafw-gst-renderer"
37 #define _HL(str) dgettext("hildon-libs",str)
38
39 typedef enum
40 {
41         SUBTITLE_ENCODING_CURRENT_LOCALE,
42
43         SUBTITLE_ENCODING_ISO_8859_6,
44         SUBTITLE_ENCODING_IBM_864,
45         SUBTITLE_ENCODING_MAC_ARABIC,
46         SUBTITLE_ENCODING_WINDOWS_1256,
47
48         SUBTITLE_ENCODING_ARMSCII_8,
49
50         SUBTITLE_ENCODING_ISO_8859_4,
51         SUBTITLE_ENCODING_ISO_8859_13,
52         SUBTITLE_ENCODING_WINDOWS_1257,
53
54         SUBTITLE_ENCODING_ISO_8859_14,
55
56         SUBTITLE_ENCODING_ISO_8859_2,
57         SUBTITLE_ENCODING_IBM_852,
58         SUBTITLE_ENCODING_MAC_CE,
59         SUBTITLE_ENCODING_WINDOWS_1250,
60
61         SUBTITLE_ENCODING_GB18030,
62         SUBTITLE_ENCODING_GB2312,
63         SUBTITLE_ENCODING_GBK,
64         SUBTITLE_ENCODING_HZ,
65
66         SUBTITLE_ENCODING_BIG5,
67         SUBTITLE_ENCODING_BIG5_HKSCS,
68         SUBTITLE_ENCODING_EUC_TW,
69
70         SUBTITLE_ENCODING_MAC_CROATIAN,
71
72         SUBTITLE_ENCODING_ISO_8859_5,
73         SUBTITLE_ENCODING_IBM_855,
74         SUBTITLE_ENCODING_ISO_IR_111,
75         SUBTITLE_ENCODING_KOI8_R,
76         SUBTITLE_ENCODING_MAC_CYRILLIC,
77         SUBTITLE_ENCODING_WINDOWS_1251,
78
79         SUBTITLE_ENCODING_CP_866,
80
81         SUBTITLE_ENCODING_MAC_UKRAINIAN,
82         SUBTITLE_ENCODING_KOI8_U,
83
84         SUBTITLE_ENCODING_GEOSTD8,
85
86         SUBTITLE_ENCODING_ISO_8859_7,
87         SUBTITLE_ENCODING_MAC_GREEK,
88         SUBTITLE_ENCODING_WINDOWS_1253,
89
90         SUBTITLE_ENCODING_MAC_GUJARATI,
91
92         SUBTITLE_ENCODING_MAC_GURMUKHI,
93
94         SUBTITLE_ENCODING_ISO_8859_8_I,
95         SUBTITLE_ENCODING_IBM_862,
96         SUBTITLE_ENCODING_MAC_HEBREW,
97         SUBTITLE_ENCODING_WINDOWS_1255,
98
99         SUBTITLE_ENCODING_ISO_8859_8,
100
101         SUBTITLE_ENCODING_MAC_DEVANAGARI,
102
103         SUBTITLE_ENCODING_MAC_ICELANDIC,
104
105         SUBTITLE_ENCODING_EUC_JP,
106         SUBTITLE_ENCODING_ISO_2022_JP,
107         SUBTITLE_ENCODING_SHIFT_JIS,
108
109         SUBTITLE_ENCODING_EUC_KR,
110         SUBTITLE_ENCODING_ISO_2022_KR,
111         SUBTITLE_ENCODING_JOHAB,
112         SUBTITLE_ENCODING_UHC,
113
114         SUBTITLE_ENCODING_ISO_8859_10,
115
116         SUBTITLE_ENCODING_MAC_FARSI,
117
118         SUBTITLE_ENCODING_ISO_8859_16,
119         SUBTITLE_ENCODING_MAC_ROMANIAN,
120
121         SUBTITLE_ENCODING_ISO_8859_3,
122
123         SUBTITLE_ENCODING_TIS_620,
124
125         SUBTITLE_ENCODING_ISO_8859_9,
126         SUBTITLE_ENCODING_IBM_857,
127         SUBTITLE_ENCODING_MAC_TURKISH,
128         SUBTITLE_ENCODING_WINDOWS_1254,
129
130         SUBTITLE_ENCODING_UTF_7,
131         SUBTITLE_ENCODING_UTF_8,
132         SUBTITLE_ENCODING_UTF_16,
133         SUBTITLE_ENCODING_UCS_2,
134         SUBTITLE_ENCODING_UCS_4,
135
136         SUBTITLE_ENCODING_ISO_8859_1,
137         SUBTITLE_ENCODING_ISO_8859_15,
138         SUBTITLE_ENCODING_IBM_850,
139         SUBTITLE_ENCODING_MAC_ROMAN,
140         SUBTITLE_ENCODING_WINDOWS_1252,
141
142         SUBTITLE_ENCODING_TCVN,
143         SUBTITLE_ENCODING_VISCII,
144         SUBTITLE_ENCODING_WINDOWS_1258,
145
146         SUBTITLE_ENCODING_LAST
147 } SubtitleEncodingIndex;
148
149
150 typedef struct {
151         int index;
152         const char *charset;
153         const char *name;
154 } SubtitleEncoding;
155
156
157 static SubtitleEncoding encodings[] = {
158         {SUBTITLE_ENCODING_CURRENT_LOCALE,      NULL,                   N_("Current Locale")},
159
160         {SUBTITLE_ENCODING_ISO_8859_6,          "ISO-8859-6",           N_("Arabic")},
161         {SUBTITLE_ENCODING_IBM_864,             "IBM864",               N_("Arabic")},
162         {SUBTITLE_ENCODING_MAC_ARABIC,          "MAC_ARABIC",           N_("Arabic")},
163         {SUBTITLE_ENCODING_WINDOWS_1256,        "WINDOWS-1256",         N_("Arabic")},
164
165         {SUBTITLE_ENCODING_ARMSCII_8,           "ARMSCII-8",            N_("Armenian")},
166
167         {SUBTITLE_ENCODING_ISO_8859_4,          "ISO-8859-4",           N_("Baltic")},
168         {SUBTITLE_ENCODING_ISO_8859_13,         "ISO-8859-13",          N_("Baltic")},
169         {SUBTITLE_ENCODING_WINDOWS_1257,        "WINDOWS-1257",         N_("Baltic")},
170
171         {SUBTITLE_ENCODING_ISO_8859_14,         "ISO-8859-14",          N_("Celtic")},
172
173         {SUBTITLE_ENCODING_ISO_8859_2,          "ISO-8859-2",           N_("Central European")},
174         {SUBTITLE_ENCODING_IBM_852,             "IBM852",               N_("Central European")},
175         {SUBTITLE_ENCODING_MAC_CE,              "MAC_CE",               N_("Central European")},
176         {SUBTITLE_ENCODING_WINDOWS_1250,        "WINDOWS-1250",         N_("Central European")},
177
178         {SUBTITLE_ENCODING_GB18030,             "GB18030",              N_("Chinese Simplified")},
179         {SUBTITLE_ENCODING_GB2312,              "GB2312",               N_("Chinese Simplified")},
180         {SUBTITLE_ENCODING_GBK,                 "GBK",                  N_("Chinese Simplified")},
181         {SUBTITLE_ENCODING_HZ,                  "HZ",                   N_("Chinese Simplified")},
182
183         {SUBTITLE_ENCODING_BIG5,                "BIG5",                 N_("Chinese Traditional")},
184         {SUBTITLE_ENCODING_BIG5_HKSCS,          "BIG5-HKSCS",           N_("Chinese Traditional")},
185         {SUBTITLE_ENCODING_EUC_TW,              "EUC-TW",               N_("Chinese Traditional")},
186
187         {SUBTITLE_ENCODING_MAC_CROATIAN,        "MAC_CROATIAN",         N_("Croatian")},
188
189         {SUBTITLE_ENCODING_ISO_8859_5,          "ISO-8859-5",           N_("Cyrillic")},
190         {SUBTITLE_ENCODING_IBM_855,             "IBM855",               N_("Cyrillic")},
191         {SUBTITLE_ENCODING_ISO_IR_111,          "ISO-IR-111",           N_("Cyrillic")},
192         {SUBTITLE_ENCODING_KOI8_R,              "KOI8-R",               N_("Cyrillic")},
193         {SUBTITLE_ENCODING_MAC_CYRILLIC,        "MAC-CYRILLIC",         N_("Cyrillic")},
194         {SUBTITLE_ENCODING_WINDOWS_1251,        "WINDOWS-1251",         N_("Cyrillic")},
195
196         {SUBTITLE_ENCODING_CP_866,              "CP866",                N_("Cyrillic/Russian")},
197
198         {SUBTITLE_ENCODING_MAC_UKRAINIAN,       "MAC_UKRAINIAN",        N_("Cyrillic/Ukrainian")},
199         {SUBTITLE_ENCODING_KOI8_U,              "KOI8-U",               N_("Cyrillic/Ukrainian")},
200
201         {SUBTITLE_ENCODING_GEOSTD8,             "GEORGIAN-PS",          N_("Georgian")},
202
203         {SUBTITLE_ENCODING_ISO_8859_7,          "ISO-8859-7",           N_("Greek")},
204         {SUBTITLE_ENCODING_MAC_GREEK,           "MAC_GREEK",            N_("Greek")},
205         {SUBTITLE_ENCODING_WINDOWS_1253,        "WINDOWS-1253",         N_("Greek")},
206
207         {SUBTITLE_ENCODING_MAC_GUJARATI,        "MAC_GUJARATI",         N_("Gujarati")},
208
209         {SUBTITLE_ENCODING_MAC_GURMUKHI,        "MAC_GURMUKHI",         N_("Gurmukhi")},
210
211         {SUBTITLE_ENCODING_ISO_8859_8_I,        "ISO-8859-8-I",         N_("Hebrew")},
212         {SUBTITLE_ENCODING_IBM_862,             "IBM862",               N_("Hebrew")},
213         {SUBTITLE_ENCODING_MAC_HEBREW,          "MAC_HEBREW",           N_("Hebrew")},
214         {SUBTITLE_ENCODING_WINDOWS_1255,        "WINDOWS-1255",         N_("Hebrew")},
215
216         {SUBTITLE_ENCODING_ISO_8859_8,          "ISO-8859-8",           N_("Hebrew Visual")},
217
218         {SUBTITLE_ENCODING_MAC_DEVANAGARI,      "MAC_DEVANAGARI",       N_("Hindi")},
219
220         {SUBTITLE_ENCODING_MAC_ICELANDIC,       "MAC_ICELANDIC",        N_("Icelandic")},
221
222         {SUBTITLE_ENCODING_EUC_JP,              "EUC-JP",               N_("Japanese")},
223         {SUBTITLE_ENCODING_ISO_2022_JP,         "ISO2022JP",            N_("Japanese")},
224         {SUBTITLE_ENCODING_SHIFT_JIS,           "SHIFT-JIS",            N_("Japanese")},
225
226         {SUBTITLE_ENCODING_EUC_KR,              "EUC-KR",               N_("Korean")},
227         {SUBTITLE_ENCODING_ISO_2022_KR,         "ISO2022KR",            N_("Korean")},
228         {SUBTITLE_ENCODING_JOHAB,               "JOHAB",                N_("Korean")},
229         {SUBTITLE_ENCODING_UHC,                 "UHC",                  N_("Korean")},
230
231         {SUBTITLE_ENCODING_ISO_8859_10,         "ISO-8859-10",          N_("Nordic")},
232
233         {SUBTITLE_ENCODING_MAC_FARSI,           "MAC_FARSI",            N_("Persian")},
234
235         {SUBTITLE_ENCODING_ISO_8859_16,         "ISO-8859-16",          N_("Romanian")},
236         {SUBTITLE_ENCODING_MAC_ROMANIAN,        "MAC_ROMANIAN",         N_("Romanian")},
237
238         {SUBTITLE_ENCODING_ISO_8859_3,          "ISO-8859-3",           N_("South European")},
239
240         {SUBTITLE_ENCODING_TIS_620,             "TIS-620",              N_("Thai")},
241
242         {SUBTITLE_ENCODING_ISO_8859_9,          "ISO-8859-9",           N_("Turkish")},
243         {SUBTITLE_ENCODING_IBM_857,             "IBM857",               N_("Turkish")},
244         {SUBTITLE_ENCODING_MAC_TURKISH,         "MAC_TURKISH",          N_("Turkish")},
245         {SUBTITLE_ENCODING_WINDOWS_1254,        "WINDOWS-1254",         N_("Turkish")},
246
247         {SUBTITLE_ENCODING_UTF_7,               "UTF-7",                N_("Unicode")},
248         {SUBTITLE_ENCODING_UTF_8,               "UTF-8",                N_("Unicode")},
249         {SUBTITLE_ENCODING_UTF_16,              "UTF-16",               N_("Unicode")},
250         {SUBTITLE_ENCODING_UCS_2,               "UCS-2",                N_("Unicode")},
251         {SUBTITLE_ENCODING_UCS_4,               "UCS-4",                N_("Unicode")},
252
253         {SUBTITLE_ENCODING_ISO_8859_1,          "ISO-8859-1",           N_("Western")},
254         {SUBTITLE_ENCODING_ISO_8859_15,         "ISO-8859-15",          N_("Western")},
255         {SUBTITLE_ENCODING_IBM_850,             "IBM850",               N_("Western")},
256         {SUBTITLE_ENCODING_MAC_ROMAN,           "MAC_ROMAN",            N_("Western")},
257         {SUBTITLE_ENCODING_WINDOWS_1252,        "WINDOWS-1252",         N_("Western")},
258
259         {SUBTITLE_ENCODING_TCVN,                "TCVN",                 N_("Vietnamese")},
260         {SUBTITLE_ENCODING_VISCII,              "VISCII",               N_("Vietnamese")},
261         {SUBTITLE_ENCODING_WINDOWS_1258,        "WINDOWS-1258",         N_("Vietnamese")}
262 };
263
264 static gboolean
265 gconf_get_bool (GConfClient *client,
266                 const gchar *key)
267 {
268         gboolean value = FALSE;
269         gchar *tmp = NULL;
270
271         tmp = g_strdup_printf ("%s/%s", GCONF_MAFW_GST_SUBTITLE_RENDERER, key);
272
273         value = gconf_client_get_bool (client, tmp, NULL);
274
275         if (tmp)
276                 g_free (tmp);
277
278         return value;
279 }
280
281 static void
282 gconf_set_bool (GConfClient *client,
283                 const gchar *key,
284                 gboolean value)
285 {
286         gchar *tmp = NULL;
287
288         tmp = g_strdup_printf ("%s/%s", GCONF_MAFW_GST_SUBTITLE_RENDERER, key);
289
290         gconf_client_set_bool (client, tmp, value, NULL);
291
292         if (tmp)
293                 g_free (tmp);
294 }
295
296 static gchar *
297 gconf_get_string (GConfClient *client,
298                   gchar *key)
299 {
300         gchar *value = FALSE;
301         gchar *tmp = NULL;
302
303         tmp = g_strdup_printf ("%s/%s", GCONF_MAFW_GST_SUBTITLE_RENDERER, key);
304
305         value = gconf_client_get_string (client, tmp, NULL);
306
307         if (tmp)
308                 g_free (tmp);
309
310         return value;
311 }
312
313 static void
314 gconf_set_string (GConfClient *client,
315                 gchar *key,
316                 const gchar *value)
317 {
318         gchar *tmp = NULL;
319
320         tmp = g_strdup_printf ("%s/%s", GCONF_MAFW_GST_SUBTITLE_RENDERER, key);
321
322         if (value)
323                 gconf_client_set_string (client, tmp, value, NULL);
324         else
325                 gconf_client_unset (client, tmp, NULL);
326
327         if (tmp)
328                 g_free (tmp);
329 }
330
331 static void
332 font_selector_dialog (HildonButton *button,
333                       gpointer user_data)
334 {
335         GtkWidget *dialog, *hbox;
336
337         dialog = gtk_dialog_new ();
338         gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
339         gtk_window_set_title (GTK_WINDOW (dialog), _("Font"));
340         gtk_dialog_add_button(GTK_DIALOG (dialog), "OK", GTK_RESPONSE_ACCEPT);
341
342         hbox = gtk_hbox_new (FALSE, 0);
343         gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox);
344
345         // pango_font_description_from_string
346
347         /* Run the dialog */
348         gtk_widget_show_all (GTK_WIDGET (dialog));
349         if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
350                 // pango_font_description_to_string
351         }
352
353         gtk_widget_destroy(GTK_WIDGET(dialog));
354 }
355
356
357 static GtkWidget *
358 create_encoding_selector (void)
359 {
360         GtkWidget *selector;
361         gint index = 0;
362
363         selector = hildon_touch_selector_new_text ();
364
365         while (index < SUBTITLE_ENCODING_LAST) {
366                 gchar *encoding = NULL;
367
368                 if (encodings[index].charset) {
369                         encoding = g_strdup_printf ("%s (%s)", _(encodings[index].name),
370                                                     encodings[index].charset);
371                 } else {
372                         encoding = g_strdup_printf ("%s", _(encodings[index].name));
373                 }
374
375                 hildon_touch_selector_insert_text (HILDON_TOUCH_SELECTOR (selector),
376                                                    encodings[index].index,
377                                                    encoding);
378                 if (encoding)
379                         g_free (encoding);
380                 index++;
381         }
382
383         return selector;
384 }
385
386 static GtkWidget *
387 create_autoload_subtitles_button (GConfClient *gconf_client)
388 {
389         GtkWidget *button;
390         gboolean autoload_subtitles = FALSE;
391
392         button = hildon_check_button_new (HILDON_SIZE_FINGER_HEIGHT);
393         gtk_button_set_label (GTK_BUTTON (button), _("Automatically load subtitle files"));
394
395         autoload_subtitles = gconf_get_bool (gconf_client, "autoload_subtitles");
396         if (autoload_subtitles)
397                 hildon_check_button_set_active (HILDON_CHECK_BUTTON (button), TRUE);
398         else
399                 hildon_check_button_set_active (HILDON_CHECK_BUTTON (button), FALSE);
400
401         return button;
402 }
403
404 static void
405 save_autoload_subtitles (GConfClient *gconf_client,
406                          GtkWidget *widget)
407 {
408         if (hildon_check_button_get_active (HILDON_CHECK_BUTTON (widget)))
409                 gconf_set_bool (gconf_client, "autoload_subtitles", TRUE);
410         else
411                 gconf_set_bool (gconf_client, "autoload_subtitles", FALSE);
412 }
413
414 static GtkWidget *
415 create_subtitles_font_button (GConfClient *gconf_client)
416 {
417         GtkWidget *button;
418         const gchar *font = NULL;
419
420         button = hildon_button_new (HILDON_SIZE_FINGER_HEIGHT,
421                                     HILDON_BUTTON_ARRANGEMENT_VERTICAL);
422         hildon_button_set_title (HILDON_BUTTON (button), _("Font"));
423         hildon_button_set_alignment (HILDON_BUTTON (button), 0.0, 0.5, 1.0, 0.0);
424         hildon_button_set_title_alignment (HILDON_BUTTON(button), 0.0, 0.5);
425         hildon_button_set_value_alignment (HILDON_BUTTON (button), 0.0, 0.5);
426
427         g_signal_connect (button, "clicked", G_CALLBACK (font_selector_dialog), NULL);
428
429         font = gconf_get_string (gconf_client, "subtitle_font");
430         if (font) {
431                 hildon_button_set_value (HILDON_BUTTON (button), font);
432         } else {
433                 hildon_button_set_value (HILDON_BUTTON (button), "Sans Bold 18");
434         }
435         return button;
436 }
437
438 static void
439 save_subtitles_font (GConfClient *gconf_client,
440                      GtkWidget *widget)
441 {
442         const gchar *font = NULL;
443
444         font = hildon_button_get_value (HILDON_BUTTON (widget));
445         gconf_set_string (gconf_client, "subtitle_font", font);
446 }
447
448 static GtkWidget *
449 create_subtitles_encoding_button (GConfClient *gconf_client)
450 {
451         GtkWidget *button, *selector;
452         const gchar *encoding = NULL;
453
454         button = hildon_picker_button_new (HILDON_SIZE_FINGER_HEIGHT,
455                                            HILDON_BUTTON_ARRANGEMENT_VERTICAL);
456         hildon_button_set_title (HILDON_BUTTON (button), _("Encoding"));
457         hildon_button_set_alignment (HILDON_BUTTON (button), 0.0, 0.5, 1.0, 0.0);
458         hildon_button_set_title_alignment (HILDON_BUTTON(button), 0.0, 0.5);
459         hildon_button_set_value_alignment (HILDON_BUTTON (button), 0.0, 0.5);
460
461         selector = create_encoding_selector ();
462         hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (button),
463                                            HILDON_TOUCH_SELECTOR (selector));
464
465         encoding = gconf_get_string (gconf_client, "subtitle_encoding");
466         if (encoding) {
467                 /* skip current locale */
468                 gint index = 1;
469
470                 while (index < SUBTITLE_ENCODING_LAST) {
471                         if (strcmp (encodings[index].charset, encoding) == 0) {
472                                 hildon_picker_button_set_active (HILDON_PICKER_BUTTON (button),
473                                                                  index);
474                                 break;
475                         }
476                         index++;
477                 }
478         } else {
479                 hildon_picker_button_set_active (HILDON_PICKER_BUTTON (button),
480                                                  SUBTITLE_ENCODING_CURRENT_LOCALE);
481         }
482
483         return button;
484 }
485
486 static void
487 save_subtitles_encoding (GConfClient *gconf_client,
488                          GtkWidget *widget)
489 {
490         gint encoding = 0, index = 0;
491
492         encoding = hildon_picker_button_get_active (HILDON_PICKER_BUTTON (widget));
493
494         while (index < SUBTITLE_ENCODING_LAST) {
495                 if (encoding == index) {
496                         gconf_set_string (gconf_client, "subtitle_encoding",
497                                           encodings[index].charset);
498                         break;
499                 }
500                 index++;
501         }
502 }
503
504 osso_return_t
505 execute (osso_context_t *osso,
506          gpointer data,
507          gboolean user_activated)
508 {
509         GConfClient *gconf_client = NULL;
510         GtkWidget *dialog, *vbox, *autoload_subtitles_button;
511         GtkWidget *subtitles_font_button, *subtitles_encoding_button;
512
513         gconf_client = gconf_client_get_default ();
514         if (gconf_client == NULL) {
515                 return OSSO_ERROR;
516         }
517
518         dialog = gtk_dialog_new ();
519         gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
520         gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (data));
521         gtk_window_set_title (GTK_WINDOW (dialog), _("Subtitles"));
522         gtk_dialog_add_button(GTK_DIALOG (dialog), _HL("wdgt_bd_save"), GTK_RESPONSE_ACCEPT);
523
524         vbox = gtk_vbox_new (FALSE, 0);
525         gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), vbox);
526
527         /* autoload subtitles button */
528         autoload_subtitles_button = create_autoload_subtitles_button (gconf_client);
529         gtk_box_pack_start (GTK_BOX (vbox), autoload_subtitles_button, TRUE, TRUE, 0);
530
531         /* font selector */
532         subtitles_font_button = create_subtitles_font_button (gconf_client);
533         gtk_box_pack_start (GTK_BOX (vbox), subtitles_font_button, TRUE, TRUE, 0);
534
535         /* font encoding */
536         subtitles_encoding_button = create_subtitles_encoding_button (gconf_client);
537         gtk_box_pack_start (GTK_BOX (vbox), subtitles_encoding_button, TRUE, TRUE, 0);
538
539         /* Run the dialog */
540         gtk_widget_show_all (GTK_WIDGET (dialog));
541         if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
542                 /* save autoload subtitles option */
543                 save_autoload_subtitles (gconf_client, autoload_subtitles_button);
544
545                 /* save subtitle font option */
546                 save_subtitles_font (gconf_client, subtitles_font_button);
547
548                 /* save subtitle encoding option */
549                 save_subtitles_encoding (gconf_client, subtitles_encoding_button);
550         }
551
552         gtk_widget_destroy(GTK_WIDGET(dialog));
553         return OSSO_OK;
554 }
555
556 osso_return_t
557 save_state (osso_context_t *osso,
558             gpointer data)
559 {
560         return OSSO_OK;
561 }
562