]> git.sesse.net Git - vlc/blob - plugins/gnome/gnome_interface.c
* Everything in place for the 0.2.63 release.
[vlc] / plugins / gnome / gnome_interface.c
1 /*
2  * DO NOT EDIT THIS FILE - it is generated by Glade.
3  */
4
5 #ifdef HAVE_CONFIG_H
6 #  include <config.h>
7 #endif
8
9 #include <sys/types.h>
10 #include <sys/stat.h>
11 #include <unistd.h>
12 #include <string.h>
13
14 #include <gnome.h>
15
16 #include "gnome_callbacks.h"
17 #include "gnome_interface.h"
18 #include "gnome_support.h"
19
20 static GnomeUIInfo menubar_file_menu_uiinfo[] =
21 {
22   {
23     GNOME_APP_UI_ITEM, N_("_Open File..."),
24     N_("Open a File"),
25     (gpointer) on_menubar_open_activate, NULL, NULL,
26     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_OPEN,
27     0, (GdkModifierType) 0, NULL
28   },
29   {
30     GNOME_APP_UI_ITEM, N_("Open _Disc..."),
31     N_("Open a DVD or VCD"),
32     (gpointer) on_menubar_disc_activate, NULL, NULL,
33     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_CDROM,
34     0, (GdkModifierType) 0, NULL
35   },
36   GNOMEUIINFO_SEPARATOR,
37   GNOMEUIINFO_MENU_EXIT_ITEM (on_menubar_exit_activate, NULL),
38   GNOMEUIINFO_END
39 };
40
41 static GnomeUIInfo menubar_view_menu_uiinfo[] =
42 {
43   {
44     GNOME_APP_UI_ITEM, N_("_Playlist..."),
45     N_("Open the playlist window"),
46     (gpointer) on_menubar_playlist_activate, NULL, NULL,
47     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_INDEX,
48     0, (GdkModifierType) 0, NULL
49   },
50   {
51     GNOME_APP_UI_ITEM, N_("_Modules..."),
52     N_("Open the plugin manager"),
53     (gpointer) on_menubar_modules_activate, NULL, NULL,
54     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_ATTACH,
55     0, (GdkModifierType) 0, NULL
56   },
57   GNOMEUIINFO_END
58 };
59
60 static GnomeUIInfo menubar_settings_menu_uiinfo[] =
61 {
62   {
63     GNOME_APP_UI_ITEM, N_("_Audio"),
64     N_("Select audio channel"),
65     (gpointer) on_menubar_audio_activate, NULL, NULL,
66     GNOME_APP_PIXMAP_NONE, NULL,
67     0, (GdkModifierType) 0, NULL
68   },
69   {
70     GNOME_APP_UI_ITEM, N_("_Subtitles"),
71     N_("Select subtitle unit"),
72     (gpointer) on_menubar_subtitles_activate, NULL, NULL,
73     GNOME_APP_PIXMAP_NONE, NULL,
74     0, (GdkModifierType) 0, NULL
75   },
76   GNOMEUIINFO_SEPARATOR,
77   GNOMEUIINFO_MENU_PREFERENCES_ITEM (on_menubar_preferences_activate, NULL),
78   GNOMEUIINFO_END
79 };
80
81 static GnomeUIInfo menubar_help_menu_uiinfo[] =
82 {
83   GNOMEUIINFO_MENU_ABOUT_ITEM (on_menubar_about_activate, NULL),
84   GNOMEUIINFO_END
85 };
86
87 static GnomeUIInfo menubar_uiinfo[] =
88 {
89   GNOMEUIINFO_MENU_FILE_TREE (menubar_file_menu_uiinfo),
90   GNOMEUIINFO_MENU_VIEW_TREE (menubar_view_menu_uiinfo),
91   GNOMEUIINFO_MENU_SETTINGS_TREE (menubar_settings_menu_uiinfo),
92   GNOMEUIINFO_MENU_HELP_TREE (menubar_help_menu_uiinfo),
93   GNOMEUIINFO_END
94 };
95
96 GtkWidget*
97 create_intf_window (void)
98 {
99   GtkWidget *intf_window;
100   GtkWidget *dockitem;
101   GtkWidget *toolbar;
102   GtkWidget *tmp_toolbar_icon;
103   GtkWidget *toolbar_file;
104   GtkWidget *toolbar_disc;
105   GtkWidget *toolbar_back;
106   GtkWidget *toolbar_stop;
107   GtkWidget *toolbar_play;
108   GtkWidget *toolbar_pause;
109   GtkWidget *toolbar_slow;
110   GtkWidget *toolbar_fast;
111   GtkWidget *toolbar_playlist;
112   GtkWidget *toolbar_prev;
113   GtkWidget *toolbar_next;
114   GtkWidget *vbox2;
115   GtkWidget *entry1;
116   GtkWidget *label6;
117   GtkWidget *hscale;
118   GtkWidget *label13;
119   GtkWidget *appbar;
120
121   intf_window = gnome_app_new ("VideoLAN Client", _("VideoLAN Client"));
122   gtk_object_set_data (GTK_OBJECT (intf_window), "intf_window", intf_window);
123
124   dockitem = GNOME_APP (intf_window)->dock;
125   gtk_widget_ref (dockitem);
126   gtk_object_set_data_full (GTK_OBJECT (intf_window), "dockitem", dockitem,
127                             (GtkDestroyNotify) gtk_widget_unref);
128   gtk_widget_show (dockitem);
129
130   gnome_app_create_menus (GNOME_APP (intf_window), menubar_uiinfo);
131
132   gtk_widget_ref (menubar_uiinfo[0].widget);
133   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_file",
134                             menubar_uiinfo[0].widget,
135                             (GtkDestroyNotify) gtk_widget_unref);
136
137   gtk_widget_ref (menubar_file_menu_uiinfo[0].widget);
138   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_open",
139                             menubar_file_menu_uiinfo[0].widget,
140                             (GtkDestroyNotify) gtk_widget_unref);
141
142   gtk_widget_ref (menubar_file_menu_uiinfo[1].widget);
143   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_disc",
144                             menubar_file_menu_uiinfo[1].widget,
145                             (GtkDestroyNotify) gtk_widget_unref);
146
147   gtk_widget_ref (menubar_file_menu_uiinfo[2].widget);
148   gtk_object_set_data_full (GTK_OBJECT (intf_window), "separator1",
149                             menubar_file_menu_uiinfo[2].widget,
150                             (GtkDestroyNotify) gtk_widget_unref);
151
152   gtk_widget_ref (menubar_file_menu_uiinfo[3].widget);
153   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_exit",
154                             menubar_file_menu_uiinfo[3].widget,
155                             (GtkDestroyNotify) gtk_widget_unref);
156
157   gtk_widget_ref (menubar_uiinfo[1].widget);
158   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_view",
159                             menubar_uiinfo[1].widget,
160                             (GtkDestroyNotify) gtk_widget_unref);
161
162   gtk_widget_ref (menubar_view_menu_uiinfo[0].widget);
163   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_playlist",
164                             menubar_view_menu_uiinfo[0].widget,
165                             (GtkDestroyNotify) gtk_widget_unref);
166   gtk_widget_set_sensitive (menubar_view_menu_uiinfo[0].widget, FALSE);
167
168   gtk_widget_ref (menubar_view_menu_uiinfo[1].widget);
169   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_modules",
170                             menubar_view_menu_uiinfo[1].widget,
171                             (GtkDestroyNotify) gtk_widget_unref);
172   gtk_widget_set_sensitive (menubar_view_menu_uiinfo[1].widget, FALSE);
173
174   gtk_widget_ref (menubar_uiinfo[2].widget);
175   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_settings",
176                             menubar_uiinfo[2].widget,
177                             (GtkDestroyNotify) gtk_widget_unref);
178
179   gtk_widget_ref (menubar_settings_menu_uiinfo[0].widget);
180   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_audio",
181                             menubar_settings_menu_uiinfo[0].widget,
182                             (GtkDestroyNotify) gtk_widget_unref);
183
184   gtk_widget_ref (menubar_settings_menu_uiinfo[1].widget);
185   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_subtitles",
186                             menubar_settings_menu_uiinfo[1].widget,
187                             (GtkDestroyNotify) gtk_widget_unref);
188
189   gtk_widget_ref (menubar_settings_menu_uiinfo[2].widget);
190   gtk_object_set_data_full (GTK_OBJECT (intf_window), "separator5",
191                             menubar_settings_menu_uiinfo[2].widget,
192                             (GtkDestroyNotify) gtk_widget_unref);
193
194   gtk_widget_ref (menubar_settings_menu_uiinfo[3].widget);
195   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_preferences",
196                             menubar_settings_menu_uiinfo[3].widget,
197                             (GtkDestroyNotify) gtk_widget_unref);
198   gtk_widget_set_sensitive (menubar_settings_menu_uiinfo[3].widget, FALSE);
199
200   gtk_widget_ref (menubar_uiinfo[3].widget);
201   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_help",
202                             menubar_uiinfo[3].widget,
203                             (GtkDestroyNotify) gtk_widget_unref);
204
205   gtk_widget_ref (menubar_help_menu_uiinfo[0].widget);
206   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_about",
207                             menubar_help_menu_uiinfo[0].widget,
208                             (GtkDestroyNotify) gtk_widget_unref);
209
210   toolbar = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH);
211   gtk_widget_ref (toolbar);
212   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar", toolbar,
213                             (GtkDestroyNotify) gtk_widget_unref);
214   gtk_widget_show (toolbar);
215   gnome_app_add_toolbar (GNOME_APP (intf_window), GTK_TOOLBAR (toolbar), "toolbar",
216                                 GNOME_DOCK_ITEM_BEH_EXCLUSIVE,
217                                 GNOME_DOCK_TOP, 1, 0, 2);
218   gtk_container_set_border_width (GTK_CONTAINER (toolbar), 1);
219   gtk_toolbar_set_space_size (GTK_TOOLBAR (toolbar), 16);
220   gtk_toolbar_set_space_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_SPACE_LINE);
221   gtk_toolbar_set_button_relief (GTK_TOOLBAR (toolbar), GTK_RELIEF_NONE);
222
223   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_OPEN);
224   toolbar_file = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
225                                 GTK_TOOLBAR_CHILD_BUTTON,
226                                 NULL,
227                                 _("Open"),
228                                 _("Open a File"), NULL,
229                                 tmp_toolbar_icon, NULL, NULL);
230   gtk_widget_ref (toolbar_file);
231   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_file", toolbar_file,
232                             (GtkDestroyNotify) gtk_widget_unref);
233   gtk_widget_show (toolbar_file);
234
235   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_CDROM);
236   toolbar_disc = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
237                                 GTK_TOOLBAR_CHILD_BUTTON,
238                                 NULL,
239                                 _("Disc"),
240                                 _("Open a DVD or VCD"), NULL,
241                                 tmp_toolbar_icon, NULL, NULL);
242   gtk_widget_ref (toolbar_disc);
243   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_disc", toolbar_disc,
244                             (GtkDestroyNotify) gtk_widget_unref);
245   gtk_widget_show (toolbar_disc);
246
247   gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
248
249   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_BACK);
250   toolbar_back = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
251                                 GTK_TOOLBAR_CHILD_BUTTON,
252                                 NULL,
253                                 _("Back"),
254                                 _("Go Backwards"), NULL,
255                                 tmp_toolbar_icon, NULL, NULL);
256   gtk_widget_ref (toolbar_back);
257   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_back", toolbar_back,
258                             (GtkDestroyNotify) gtk_widget_unref);
259   gtk_widget_show (toolbar_back);
260   gtk_widget_set_sensitive (toolbar_back, FALSE);
261
262   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_STOP);
263   toolbar_stop = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
264                                 GTK_TOOLBAR_CHILD_BUTTON,
265                                 NULL,
266                                 _("Stop"),
267                                 _("Stop Stream"), NULL,
268                                 tmp_toolbar_icon, NULL, NULL);
269   gtk_widget_ref (toolbar_stop);
270   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_stop", toolbar_stop,
271                             (GtkDestroyNotify) gtk_widget_unref);
272   gtk_widget_show (toolbar_stop);
273   gtk_widget_set_sensitive (toolbar_stop, FALSE);
274
275   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_FORWARD);
276   toolbar_play = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
277                                 GTK_TOOLBAR_CHILD_BUTTON,
278                                 NULL,
279                                 _("Play"),
280                                 _("Play Stream"), NULL,
281                                 tmp_toolbar_icon, NULL, NULL);
282   gtk_widget_ref (toolbar_play);
283   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_play", toolbar_play,
284                             (GtkDestroyNotify) gtk_widget_unref);
285   gtk_widget_show (toolbar_play);
286
287   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_BOTTOM);
288   toolbar_pause = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
289                                 GTK_TOOLBAR_CHILD_BUTTON,
290                                 NULL,
291                                 _("Pause"),
292                                 _("Pause Stream"), NULL,
293                                 tmp_toolbar_icon, NULL, NULL);
294   gtk_widget_ref (toolbar_pause);
295   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_pause", toolbar_pause,
296                             (GtkDestroyNotify) gtk_widget_unref);
297   gtk_widget_show (toolbar_pause);
298
299   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_TIMER_STOP);
300   toolbar_slow = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
301                                 GTK_TOOLBAR_CHILD_BUTTON,
302                                 NULL,
303                                 _("Slow"),
304                                 _("Play Slower"), NULL,
305                                 tmp_toolbar_icon, NULL, NULL);
306   gtk_widget_ref (toolbar_slow);
307   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_slow", toolbar_slow,
308                             (GtkDestroyNotify) gtk_widget_unref);
309   gtk_widget_show (toolbar_slow);
310
311   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_TIMER);
312   toolbar_fast = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
313                                 GTK_TOOLBAR_CHILD_BUTTON,
314                                 NULL,
315                                 _("Fast"),
316                                 _("Play Faster"), NULL,
317                                 tmp_toolbar_icon, NULL, NULL);
318   gtk_widget_ref (toolbar_fast);
319   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_fast", toolbar_fast,
320                             (GtkDestroyNotify) gtk_widget_unref);
321   gtk_widget_show (toolbar_fast);
322
323   gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
324
325   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_INDEX);
326   toolbar_playlist = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
327                                 GTK_TOOLBAR_CHILD_BUTTON,
328                                 NULL,
329                                 _("Playlist"),
330                                 _("Open Playlist"), NULL,
331                                 tmp_toolbar_icon, NULL, NULL);
332   gtk_widget_ref (toolbar_playlist);
333   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_playlist", toolbar_playlist,
334                             (GtkDestroyNotify) gtk_widget_unref);
335   gtk_widget_show (toolbar_playlist);
336   gtk_widget_set_sensitive (toolbar_playlist, FALSE);
337
338   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_FIRST);
339   toolbar_prev = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
340                                 GTK_TOOLBAR_CHILD_BUTTON,
341                                 NULL,
342                                 _("Prev"),
343                                 _("Previous File"), NULL,
344                                 tmp_toolbar_icon, NULL, NULL);
345   gtk_widget_ref (toolbar_prev);
346   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_prev", toolbar_prev,
347                             (GtkDestroyNotify) gtk_widget_unref);
348   gtk_widget_show (toolbar_prev);
349
350   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_LAST);
351   toolbar_next = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
352                                 GTK_TOOLBAR_CHILD_BUTTON,
353                                 NULL,
354                                 _("Next"),
355                                 _("Next File"), NULL,
356                                 tmp_toolbar_icon, NULL, NULL);
357   gtk_widget_ref (toolbar_next);
358   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_next", toolbar_next,
359                             (GtkDestroyNotify) gtk_widget_unref);
360   gtk_widget_show (toolbar_next);
361
362   vbox2 = gtk_vbox_new (FALSE, 0);
363   gtk_widget_ref (vbox2);
364   gtk_object_set_data_full (GTK_OBJECT (intf_window), "vbox2", vbox2,
365                             (GtkDestroyNotify) gtk_widget_unref);
366   gtk_widget_show (vbox2);
367   gnome_app_set_contents (GNOME_APP (intf_window), vbox2);
368
369   entry1 = gtk_entry_new ();
370   gtk_widget_ref (entry1);
371   gtk_object_set_data_full (GTK_OBJECT (intf_window), "entry1", entry1,
372                             (GtkDestroyNotify) gtk_widget_unref);
373   gtk_widget_show (entry1);
374   gtk_box_pack_start (GTK_BOX (vbox2), entry1, FALSE, FALSE, 0);
375   gtk_entry_set_text (GTK_ENTRY (entry1), _("Tired of boring stub messages ? Write your own exciting message here !!"));
376
377   label6 = gtk_label_new (_("This part of the interface doesn't work yet. You can drag the slider below, though:"));
378   gtk_widget_ref (label6);
379   gtk_object_set_data_full (GTK_OBJECT (intf_window), "label6", label6,
380                             (GtkDestroyNotify) gtk_widget_unref);
381   gtk_widget_show (label6);
382   gtk_box_pack_start (GTK_BOX (vbox2), label6, FALSE, FALSE, 0);
383   gtk_label_set_justify (GTK_LABEL (label6), GTK_JUSTIFY_LEFT);
384   gtk_misc_set_alignment (GTK_MISC (label6), 0, 0.5);
385   gtk_misc_set_padding (GTK_MISC (label6), 5, 0);
386
387   hscale = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 100, 1, 6.25, 0)));
388   gtk_widget_ref (hscale);
389   gtk_object_set_data_full (GTK_OBJECT (intf_window), "hscale", hscale,
390                             (GtkDestroyNotify) gtk_widget_unref);
391   gtk_widget_show (hscale);
392   gtk_box_pack_start (GTK_BOX (vbox2), hscale, FALSE, FALSE, 0);
393   gtk_scale_set_value_pos (GTK_SCALE (hscale), GTK_POS_BOTTOM);
394   gtk_range_set_update_policy (GTK_RANGE (hscale), GTK_UPDATE_DELAYED);
395
396   label13 = gtk_label_new (_("HEY ! YOU CAN DROP A FILE ON VLC TOO :-)"));
397   gtk_widget_ref (label13);
398   gtk_object_set_data_full (GTK_OBJECT (intf_window), "label13", label13,
399                             (GtkDestroyNotify) gtk_widget_unref);
400   gtk_widget_show (label13);
401   gtk_box_pack_start (GTK_BOX (vbox2), label13, FALSE, FALSE, 0);
402   gtk_misc_set_padding (GTK_MISC (label13), 0, 5);
403
404   appbar = gnome_appbar_new (TRUE, TRUE, GNOME_PREFERENCES_NEVER);
405   gtk_widget_ref (appbar);
406   gtk_object_set_data_full (GTK_OBJECT (intf_window), "appbar", appbar,
407                             (GtkDestroyNotify) gtk_widget_unref);
408   gtk_widget_show (appbar);
409   gnome_app_set_statusbar (GNOME_APP (intf_window), appbar);
410
411   gtk_signal_connect (GTK_OBJECT (intf_window), "destroy",
412                       GTK_SIGNAL_FUNC (on_intf_window_destroy),
413                       NULL);
414   gtk_signal_connect (GTK_OBJECT (intf_window), "drag_data_received",
415                       GTK_SIGNAL_FUNC (on_intf_window_drag_data_received),
416                       NULL);
417   gnome_app_install_menu_hints (GNOME_APP (intf_window), menubar_uiinfo);
418   gtk_signal_connect (GTK_OBJECT (toolbar_file), "clicked",
419                       GTK_SIGNAL_FUNC (on_toolbar_open_clicked),
420                       NULL);
421   gtk_signal_connect (GTK_OBJECT (toolbar_disc), "clicked",
422                       GTK_SIGNAL_FUNC (on_toolbar_disc_clicked),
423                       NULL);
424   gtk_signal_connect (GTK_OBJECT (toolbar_back), "clicked",
425                       GTK_SIGNAL_FUNC (on_toolbar_back_clicked),
426                       NULL);
427   gtk_signal_connect (GTK_OBJECT (toolbar_stop), "clicked",
428                       GTK_SIGNAL_FUNC (on_toolbar_stop_clicked),
429                       NULL);
430   gtk_signal_connect (GTK_OBJECT (toolbar_play), "clicked",
431                       GTK_SIGNAL_FUNC (on_toolbar_play_clicked),
432                       NULL);
433   gtk_signal_connect (GTK_OBJECT (toolbar_pause), "clicked",
434                       GTK_SIGNAL_FUNC (on_toolbar_pause_clicked),
435                       NULL);
436   gtk_signal_connect (GTK_OBJECT (toolbar_slow), "clicked",
437                       GTK_SIGNAL_FUNC (on_toolbar_slow_clicked),
438                       NULL);
439   gtk_signal_connect (GTK_OBJECT (toolbar_fast), "clicked",
440                       GTK_SIGNAL_FUNC (on_toolbar_fast_clicked),
441                       NULL);
442   gtk_signal_connect (GTK_OBJECT (toolbar_playlist), "clicked",
443                       GTK_SIGNAL_FUNC (on_toolbar_playlist_clicked),
444                       NULL);
445   gtk_signal_connect (GTK_OBJECT (toolbar_prev), "clicked",
446                       GTK_SIGNAL_FUNC (on_toolbar_prev_clicked),
447                       NULL);
448   gtk_signal_connect (GTK_OBJECT (toolbar_next), "clicked",
449                       GTK_SIGNAL_FUNC (on_toolbar_next_clicked),
450                       NULL);
451   gtk_signal_connect (GTK_OBJECT (hscale), "button_release_event",
452                       GTK_SIGNAL_FUNC (on_hscale_button_release_event),
453                       NULL);
454   gtk_signal_connect (GTK_OBJECT (hscale), "button_press_event",
455                       GTK_SIGNAL_FUNC (on_hscale_button_press_event),
456                       NULL);
457
458   return intf_window;
459 }
460
461 static GnomeUIInfo popup_title_menu_uiinfo[] =
462 {
463   {
464     GNOME_APP_UI_ITEM, N_("_Chapter"),
465     NULL,
466     (gpointer) on_popup_chapter_activate, NULL, NULL,
467     GNOME_APP_PIXMAP_NONE, NULL,
468     0, (GdkModifierType) 0, NULL
469   },
470   GNOMEUIINFO_END
471 };
472
473 static GnomeUIInfo intf_popup_uiinfo[] =
474 {
475   {
476     GNOME_APP_UI_ITEM, N_("_Play"),
477     NULL,
478     (gpointer) on_popup_play_activate, NULL, NULL,
479     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_FORWARD,
480     0, (GdkModifierType) 0, NULL
481   },
482   {
483     GNOME_APP_UI_ITEM, N_("Pause"),
484     NULL,
485     (gpointer) on_popup_pause_activate, NULL, NULL,
486     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_BOTTOM,
487     0, (GdkModifierType) 0, NULL
488   },
489   {
490     GNOME_APP_UI_ITEM, N_("Slow"),
491     NULL,
492     (gpointer) on_popup_slow_activate, NULL, NULL,
493     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_TIMER_STOP,
494     0, (GdkModifierType) 0, NULL
495   },
496   {
497     GNOME_APP_UI_ITEM, N_("Fast"),
498     NULL,
499     (gpointer) on_popup_fast_activate, NULL, NULL,
500     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_TIMER,
501     0, (GdkModifierType) 0, NULL
502   },
503   GNOMEUIINFO_SEPARATOR,
504   {
505     GNOME_APP_UI_ITEM, N_("_Open File..."),
506     N_("Open a File"),
507     (gpointer) on_popup_open_activate, NULL, NULL,
508     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_OPEN,
509     0, (GdkModifierType) 0, NULL
510   },
511   {
512     GNOME_APP_UI_ITEM, N_("Open _Disc..."),
513     N_("Open a DVD or VCD"),
514     (gpointer) on_popup_disc_activate, NULL, NULL,
515     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_CDROM,
516     0, (GdkModifierType) 0, NULL
517   },
518   GNOMEUIINFO_SEPARATOR,
519   {
520     GNOME_APP_UI_SUBTREE, N_("_Title"),
521     N_("Select Title"),
522     popup_title_menu_uiinfo, NULL, NULL,
523     GNOME_APP_PIXMAP_NONE, NULL,
524     0, (GdkModifierType) 0, NULL
525   },
526   {
527     GNOME_APP_UI_ITEM, N_("Audio"),
528     N_("Select audio channel"),
529     (gpointer) on_popup_audio_activate, NULL, NULL,
530     GNOME_APP_PIXMAP_NONE, NULL,
531     0, (GdkModifierType) 0, NULL
532   },
533   {
534     GNOME_APP_UI_ITEM, N_("_Subtitle"),
535     NULL,
536     (gpointer) on_popup_subtitle_activate, NULL, NULL,
537     GNOME_APP_PIXMAP_NONE, NULL,
538     0, (GdkModifierType) 0, NULL
539   },
540   GNOMEUIINFO_SEPARATOR,
541   GNOMEUIINFO_MENU_ABOUT_ITEM (on_popup_about_activate, NULL),
542   GNOMEUIINFO_MENU_EXIT_ITEM (on_popup_exit_activate, NULL),
543   GNOMEUIINFO_END
544 };
545
546 GtkWidget*
547 create_intf_popup (void)
548 {
549   GtkWidget *intf_popup;
550
551   intf_popup = gtk_menu_new ();
552   gtk_object_set_data (GTK_OBJECT (intf_popup), "intf_popup", intf_popup);
553   gnome_app_fill_menu (GTK_MENU_SHELL (intf_popup), intf_popup_uiinfo,
554                        NULL, FALSE, 0);
555
556   gtk_widget_ref (intf_popup_uiinfo[0].widget);
557   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_play",
558                             intf_popup_uiinfo[0].widget,
559                             (GtkDestroyNotify) gtk_widget_unref);
560
561   gtk_widget_ref (intf_popup_uiinfo[1].widget);
562   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_pause",
563                             intf_popup_uiinfo[1].widget,
564                             (GtkDestroyNotify) gtk_widget_unref);
565
566   gtk_widget_ref (intf_popup_uiinfo[2].widget);
567   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_slow",
568                             intf_popup_uiinfo[2].widget,
569                             (GtkDestroyNotify) gtk_widget_unref);
570
571   gtk_widget_ref (intf_popup_uiinfo[3].widget);
572   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_fast",
573                             intf_popup_uiinfo[3].widget,
574                             (GtkDestroyNotify) gtk_widget_unref);
575
576   gtk_widget_ref (intf_popup_uiinfo[4].widget);
577   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "separator2",
578                             intf_popup_uiinfo[4].widget,
579                             (GtkDestroyNotify) gtk_widget_unref);
580
581   gtk_widget_ref (intf_popup_uiinfo[5].widget);
582   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_open",
583                             intf_popup_uiinfo[5].widget,
584                             (GtkDestroyNotify) gtk_widget_unref);
585
586   gtk_widget_ref (intf_popup_uiinfo[6].widget);
587   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_disc",
588                             intf_popup_uiinfo[6].widget,
589                             (GtkDestroyNotify) gtk_widget_unref);
590
591   gtk_widget_ref (intf_popup_uiinfo[7].widget);
592   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "separator3",
593                             intf_popup_uiinfo[7].widget,
594                             (GtkDestroyNotify) gtk_widget_unref);
595
596   gtk_widget_ref (intf_popup_uiinfo[8].widget);
597   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_title",
598                             intf_popup_uiinfo[8].widget,
599                             (GtkDestroyNotify) gtk_widget_unref);
600
601   gtk_widget_ref (popup_title_menu_uiinfo[0].widget);
602   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_chapter",
603                             popup_title_menu_uiinfo[0].widget,
604                             (GtkDestroyNotify) gtk_widget_unref);
605
606   gtk_widget_ref (intf_popup_uiinfo[9].widget);
607   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_audio",
608                             intf_popup_uiinfo[9].widget,
609                             (GtkDestroyNotify) gtk_widget_unref);
610
611   gtk_widget_ref (intf_popup_uiinfo[10].widget);
612   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_subtitle",
613                             intf_popup_uiinfo[10].widget,
614                             (GtkDestroyNotify) gtk_widget_unref);
615
616   gtk_widget_ref (intf_popup_uiinfo[11].widget);
617   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "separator4",
618                             intf_popup_uiinfo[11].widget,
619                             (GtkDestroyNotify) gtk_widget_unref);
620
621   gtk_widget_ref (intf_popup_uiinfo[12].widget);
622   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_about",
623                             intf_popup_uiinfo[12].widget,
624                             (GtkDestroyNotify) gtk_widget_unref);
625
626   gtk_widget_ref (intf_popup_uiinfo[13].widget);
627   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_exit",
628                             intf_popup_uiinfo[13].widget,
629                             (GtkDestroyNotify) gtk_widget_unref);
630
631   return intf_popup;
632 }
633
634 GtkWidget*
635 create_intf_about (void)
636 {
637   const gchar *authors[] = {
638     "Régis Duchesne <regis@via.ecp.fr>",
639     "Michel Lespinasse <walken@zoy.org>",
640     "Olivier Pomel <pomel@via.ecp.fr>",
641     "Pierre Baillet <oct@zoy.org>",
642     "Jean-Philippe Grimaldi <jeanphi@via.ecp.fr>",
643     "Andres Krapf <dae@via.ecp.fr>",
644     "Christophe Massiot <massiot@via.ecp.fr>",
645     "Vincent Seguin <seguin@via.ecp.fr>",
646     "Benoit Steiner <benny@via.ecp.fr>",
647     "Arnaud de Bossoreille de Ribou <bozo@via.ecp.fr>",
648     "Jean-Marc Dressler <polux@via.ecp.fr>",
649     "Gaël Hendryckx <jimmy@via.ecp.fr>",
650     "Samuel Hocevar <sam@zoy.org>",
651     "Brieuc Jeunhomme <bbp@via.ecp.fr>",
652     "Michel Kaempf <maxx@via.ecp.fr>",
653     "Stéphane Borel <stef@via.ecp.fr>",
654     "Renaud Dartus <reno@via.ecp.fr>",
655     "Henri Fallon <henri@via.ecp.fr>",
656     NULL
657   };
658   GtkWidget *intf_about;
659
660   intf_about = gnome_about_new ("VideoLAN Client", VERSION,
661                         _("(C) 1996, 1997, 1998, 1999, 2000, 2001 - the VideoLAN Team"),
662                         authors,
663                         _("This is the VideoLAN client, a DVD and MPEG player. It can play MPEG and MPEG 2 files from a file or from a network source."),
664                         NULL);
665   gtk_object_set_data (GTK_OBJECT (intf_about), "intf_about", intf_about);
666
667   return intf_about;
668 }
669
670 GtkWidget*
671 create_intf_fileopen (void)
672 {
673   GtkWidget *intf_fileopen;
674   GtkWidget *fileopen_ok;
675   GtkWidget *fileopen_cancel;
676
677   intf_fileopen = gtk_file_selection_new (_("Open File"));
678   gtk_object_set_data (GTK_OBJECT (intf_fileopen), "intf_fileopen", intf_fileopen);
679   gtk_container_set_border_width (GTK_CONTAINER (intf_fileopen), 10);
680
681   fileopen_ok = GTK_FILE_SELECTION (intf_fileopen)->ok_button;
682   gtk_object_set_data (GTK_OBJECT (intf_fileopen), "fileopen_ok", fileopen_ok);
683   gtk_widget_show (fileopen_ok);
684   GTK_WIDGET_SET_FLAGS (fileopen_ok, GTK_CAN_DEFAULT);
685
686   fileopen_cancel = GTK_FILE_SELECTION (intf_fileopen)->cancel_button;
687   gtk_object_set_data (GTK_OBJECT (intf_fileopen), "fileopen_cancel", fileopen_cancel);
688   gtk_widget_show (fileopen_cancel);
689   GTK_WIDGET_SET_FLAGS (fileopen_cancel, GTK_CAN_DEFAULT);
690
691   gtk_signal_connect (GTK_OBJECT (intf_fileopen), "destroy",
692                       GTK_SIGNAL_FUNC (on_intf_fileopen_destroy),
693                       NULL);
694   gtk_signal_connect (GTK_OBJECT (fileopen_ok), "clicked",
695                       GTK_SIGNAL_FUNC (on_fileopen_ok_clicked),
696                       NULL);
697   gtk_signal_connect (GTK_OBJECT (fileopen_cancel), "clicked",
698                       GTK_SIGNAL_FUNC (on_fileopen_cancel_clicked),
699                       NULL);
700
701   return intf_fileopen;
702 }
703
704 GtkWidget*
705 create_intf_modules (void)
706 {
707   GtkWidget *intf_modules;
708   GtkWidget *dialog_vbox1;
709   GtkWidget *label12;
710   GtkWidget *dialog_action_area1;
711   GtkWidget *modules_ok;
712   GtkWidget *modules_apply;
713   GtkWidget *modules_cancel;
714
715   intf_modules = gnome_dialog_new (_("Modules"), NULL);
716   gtk_object_set_data (GTK_OBJECT (intf_modules), "intf_modules", intf_modules);
717   gtk_window_set_policy (GTK_WINDOW (intf_modules), FALSE, FALSE, FALSE);
718
719   dialog_vbox1 = GNOME_DIALOG (intf_modules)->vbox;
720   gtk_object_set_data (GTK_OBJECT (intf_modules), "dialog_vbox1", dialog_vbox1);
721   gtk_widget_show (dialog_vbox1);
722
723   label12 = gtk_label_new (_("Sorry, the module manager isn't functional yet. Please retry in a later version."));
724   gtk_widget_ref (label12);
725   gtk_object_set_data_full (GTK_OBJECT (intf_modules), "label12", label12,
726                             (GtkDestroyNotify) gtk_widget_unref);
727   gtk_widget_show (label12);
728   gtk_box_pack_start (GTK_BOX (dialog_vbox1), label12, FALSE, FALSE, 0);
729
730   dialog_action_area1 = GNOME_DIALOG (intf_modules)->action_area;
731   gtk_object_set_data (GTK_OBJECT (intf_modules), "dialog_action_area1", dialog_action_area1);
732   gtk_widget_show (dialog_action_area1);
733   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_END);
734   gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog_action_area1), 8);
735
736   gnome_dialog_append_button (GNOME_DIALOG (intf_modules), GNOME_STOCK_BUTTON_OK);
737   modules_ok = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_modules)->buttons)->data);
738   gtk_widget_ref (modules_ok);
739   gtk_object_set_data_full (GTK_OBJECT (intf_modules), "modules_ok", modules_ok,
740                             (GtkDestroyNotify) gtk_widget_unref);
741   gtk_widget_show (modules_ok);
742   GTK_WIDGET_SET_FLAGS (modules_ok, GTK_CAN_DEFAULT);
743
744   gnome_dialog_append_button (GNOME_DIALOG (intf_modules), GNOME_STOCK_BUTTON_APPLY);
745   modules_apply = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_modules)->buttons)->data);
746   gtk_widget_ref (modules_apply);
747   gtk_object_set_data_full (GTK_OBJECT (intf_modules), "modules_apply", modules_apply,
748                             (GtkDestroyNotify) gtk_widget_unref);
749   gtk_widget_show (modules_apply);
750   GTK_WIDGET_SET_FLAGS (modules_apply, GTK_CAN_DEFAULT);
751
752   gnome_dialog_append_button (GNOME_DIALOG (intf_modules), GNOME_STOCK_BUTTON_CANCEL);
753   modules_cancel = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_modules)->buttons)->data);
754   gtk_widget_ref (modules_cancel);
755   gtk_object_set_data_full (GTK_OBJECT (intf_modules), "modules_cancel", modules_cancel,
756                             (GtkDestroyNotify) gtk_widget_unref);
757   gtk_widget_show (modules_cancel);
758   GTK_WIDGET_SET_FLAGS (modules_cancel, GTK_CAN_DEFAULT);
759
760   gtk_signal_connect (GTK_OBJECT (intf_modules), "destroy",
761                       GTK_SIGNAL_FUNC (on_intf_modules_destroy),
762                       NULL);
763   gtk_signal_connect (GTK_OBJECT (modules_ok), "clicked",
764                       GTK_SIGNAL_FUNC (on_modules_ok_clicked),
765                       NULL);
766   gtk_signal_connect (GTK_OBJECT (modules_apply), "clicked",
767                       GTK_SIGNAL_FUNC (on_modules_apply_clicked),
768                       NULL);
769   gtk_signal_connect (GTK_OBJECT (modules_cancel), "clicked",
770                       GTK_SIGNAL_FUNC (on_modules_cancel_clicked),
771                       NULL);
772
773   return intf_modules;
774 }
775
776 GtkWidget*
777 create_intf_playlist (void)
778 {
779   GtkWidget *intf_playlist;
780   GtkWidget *dialog_vbox2;
781   GtkWidget *label11;
782   GtkWidget *scrolledwindow3;
783   GtkWidget *clist2;
784   GtkWidget *label8;
785   GtkWidget *label9;
786   GtkWidget *label10;
787   GtkWidget *dialog_action_area2;
788   GtkWidget *playlist_ok;
789
790   intf_playlist = gnome_dialog_new (_("Playlist"), NULL);
791   gtk_object_set_data (GTK_OBJECT (intf_playlist), "intf_playlist", intf_playlist);
792
793   dialog_vbox2 = GNOME_DIALOG (intf_playlist)->vbox;
794   gtk_object_set_data (GTK_OBJECT (intf_playlist), "dialog_vbox2", dialog_vbox2);
795   gtk_widget_show (dialog_vbox2);
796
797   label11 = gtk_label_new (_("Sorry, the playlist isn't functional yet. Please retry in a later version."));
798   gtk_widget_ref (label11);
799   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label11", label11,
800                             (GtkDestroyNotify) gtk_widget_unref);
801   gtk_widget_show (label11);
802   gtk_box_pack_start (GTK_BOX (dialog_vbox2), label11, FALSE, FALSE, 0);
803
804   scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL);
805   gtk_widget_ref (scrolledwindow3);
806   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "scrolledwindow3", scrolledwindow3,
807                             (GtkDestroyNotify) gtk_widget_unref);
808   gtk_widget_show (scrolledwindow3);
809   gtk_box_pack_start (GTK_BOX (dialog_vbox2), scrolledwindow3, TRUE, TRUE, 0);
810
811   clist2 = gtk_clist_new (3);
812   gtk_widget_ref (clist2);
813   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "clist2", clist2,
814                             (GtkDestroyNotify) gtk_widget_unref);
815   gtk_widget_show (clist2);
816   gtk_container_add (GTK_CONTAINER (scrolledwindow3), clist2);
817   gtk_clist_set_column_width (GTK_CLIST (clist2), 0, 211);
818   gtk_clist_set_column_width (GTK_CLIST (clist2), 1, 49);
819   gtk_clist_set_column_width (GTK_CLIST (clist2), 2, 35);
820   gtk_clist_column_titles_hide (GTK_CLIST (clist2));
821
822   label8 = gtk_label_new (_("Name"));
823   gtk_widget_ref (label8);
824   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label8", label8,
825                             (GtkDestroyNotify) gtk_widget_unref);
826   gtk_widget_show (label8);
827   gtk_clist_set_column_widget (GTK_CLIST (clist2), 0, label8);
828
829   label9 = gtk_label_new (_("Type"));
830   gtk_widget_ref (label9);
831   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label9", label9,
832                             (GtkDestroyNotify) gtk_widget_unref);
833   gtk_widget_show (label9);
834   gtk_clist_set_column_widget (GTK_CLIST (clist2), 1, label9);
835
836   label10 = gtk_label_new (_("Length"));
837   gtk_widget_ref (label10);
838   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label10", label10,
839                             (GtkDestroyNotify) gtk_widget_unref);
840   gtk_widget_show (label10);
841   gtk_clist_set_column_widget (GTK_CLIST (clist2), 2, label10);
842
843   dialog_action_area2 = GNOME_DIALOG (intf_playlist)->action_area;
844   gtk_object_set_data (GTK_OBJECT (intf_playlist), "dialog_action_area2", dialog_action_area2);
845   gtk_widget_show (dialog_action_area2);
846   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area2), GTK_BUTTONBOX_END);
847   gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog_action_area2), 8);
848
849   gnome_dialog_append_button (GNOME_DIALOG (intf_playlist), GNOME_STOCK_BUTTON_OK);
850   playlist_ok = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_playlist)->buttons)->data);
851   gtk_widget_ref (playlist_ok);
852   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_ok", playlist_ok,
853                             (GtkDestroyNotify) gtk_widget_unref);
854   gtk_widget_show (playlist_ok);
855   GTK_WIDGET_SET_FLAGS (playlist_ok, GTK_CAN_DEFAULT);
856
857   gtk_signal_connect (GTK_OBJECT (intf_playlist), "destroy",
858                       GTK_SIGNAL_FUNC (on_intf_playlist_destroy),
859                       NULL);
860   gtk_signal_connect (GTK_OBJECT (playlist_ok), "clicked",
861                       GTK_SIGNAL_FUNC (on_playlist_ok_clicked),
862                       NULL);
863
864   return intf_playlist;
865 }
866
867 GtkWidget*
868 create_intf_disc (void)
869 {
870   GtkWidget *intf_disc;
871   GtkWidget *dialog_vbox4;
872   GtkWidget *hbox2;
873   GtkWidget *frame1;
874   GtkWidget *vbox4;
875   GSList *disc_group = NULL;
876   GtkWidget *disc_dvd;
877   GtkWidget *disc_vcd;
878   GtkWidget *frame2;
879   GtkWidget *table1;
880   GtkWidget *label15;
881   GtkWidget *label16;
882   GtkObject *disc_title_adj;
883   GtkWidget *disc_title;
884   GtkObject *disc_chapter_adj;
885   GtkWidget *disc_chapter;
886   GtkWidget *hbox1;
887   GtkWidget *label14;
888   GtkWidget *disc_name;
889   GtkWidget *dialog_action_area4;
890   GtkWidget *disc_ok;
891   GtkWidget *disc_cancel;
892
893   intf_disc = gnome_dialog_new (_("Open Disc"), NULL);
894   gtk_object_set_data (GTK_OBJECT (intf_disc), "intf_disc", intf_disc);
895   gtk_window_set_policy (GTK_WINDOW (intf_disc), FALSE, FALSE, FALSE);
896
897   dialog_vbox4 = GNOME_DIALOG (intf_disc)->vbox;
898   gtk_object_set_data (GTK_OBJECT (intf_disc), "dialog_vbox4", dialog_vbox4);
899   gtk_widget_show (dialog_vbox4);
900
901   hbox2 = gtk_hbox_new (FALSE, 5);
902   gtk_widget_ref (hbox2);
903   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "hbox2", hbox2,
904                             (GtkDestroyNotify) gtk_widget_unref);
905   gtk_widget_show (hbox2);
906   gtk_box_pack_start (GTK_BOX (dialog_vbox4), hbox2, TRUE, TRUE, 0);
907
908   frame1 = gtk_frame_new (_("Disc type"));
909   gtk_widget_ref (frame1);
910   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "frame1", frame1,
911                             (GtkDestroyNotify) gtk_widget_unref);
912   gtk_widget_show (frame1);
913   gtk_box_pack_start (GTK_BOX (hbox2), frame1, TRUE, TRUE, 0);
914
915   vbox4 = gtk_vbox_new (FALSE, 0);
916   gtk_widget_ref (vbox4);
917   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "vbox4", vbox4,
918                             (GtkDestroyNotify) gtk_widget_unref);
919   gtk_widget_show (vbox4);
920   gtk_container_add (GTK_CONTAINER (frame1), vbox4);
921
922   disc_dvd = gtk_radio_button_new_with_label (disc_group, _("DVD"));
923   disc_group = gtk_radio_button_group (GTK_RADIO_BUTTON (disc_dvd));
924   gtk_widget_ref (disc_dvd);
925   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "disc_dvd", disc_dvd,
926                             (GtkDestroyNotify) gtk_widget_unref);
927   gtk_widget_show (disc_dvd);
928   gtk_box_pack_start (GTK_BOX (vbox4), disc_dvd, FALSE, FALSE, 0);
929
930   disc_vcd = gtk_radio_button_new_with_label (disc_group, _("VCD"));
931   disc_group = gtk_radio_button_group (GTK_RADIO_BUTTON (disc_vcd));
932   gtk_widget_ref (disc_vcd);
933   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "disc_vcd", disc_vcd,
934                             (GtkDestroyNotify) gtk_widget_unref);
935   gtk_widget_show (disc_vcd);
936   gtk_box_pack_start (GTK_BOX (vbox4), disc_vcd, FALSE, FALSE, 0);
937   gtk_widget_set_sensitive (disc_vcd, FALSE);
938
939   frame2 = gtk_frame_new (_("Starting position"));
940   gtk_widget_ref (frame2);
941   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "frame2", frame2,
942                             (GtkDestroyNotify) gtk_widget_unref);
943   gtk_widget_show (frame2);
944   gtk_box_pack_start (GTK_BOX (hbox2), frame2, TRUE, TRUE, 0);
945
946   table1 = gtk_table_new (2, 2, FALSE);
947   gtk_widget_ref (table1);
948   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "table1", table1,
949                             (GtkDestroyNotify) gtk_widget_unref);
950   gtk_widget_show (table1);
951   gtk_container_add (GTK_CONTAINER (frame2), table1);
952   gtk_container_set_border_width (GTK_CONTAINER (table1), 5);
953   gtk_table_set_row_spacings (GTK_TABLE (table1), 5);
954   gtk_table_set_col_spacings (GTK_TABLE (table1), 5);
955
956   label15 = gtk_label_new (_("Title"));
957   gtk_widget_ref (label15);
958   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "label15", label15,
959                             (GtkDestroyNotify) gtk_widget_unref);
960   gtk_widget_show (label15);
961   gtk_table_attach (GTK_TABLE (table1), label15, 0, 1, 0, 1,
962                     (GtkAttachOptions) (GTK_FILL),
963                     (GtkAttachOptions) (0), 0, 0);
964   gtk_misc_set_alignment (GTK_MISC (label15), 0, 0.5);
965
966   label16 = gtk_label_new (_("Chapter"));
967   gtk_widget_ref (label16);
968   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "label16", label16,
969                             (GtkDestroyNotify) gtk_widget_unref);
970   gtk_widget_show (label16);
971   gtk_table_attach (GTK_TABLE (table1), label16, 0, 1, 1, 2,
972                     (GtkAttachOptions) (GTK_FILL),
973                     (GtkAttachOptions) (0), 0, 0);
974   gtk_misc_set_alignment (GTK_MISC (label16), 0, 0.5);
975
976   disc_title_adj = gtk_adjustment_new (1, 1, 65536, 1, 10, 10);
977   disc_title = gtk_spin_button_new (GTK_ADJUSTMENT (disc_title_adj), 1, 0);
978   gtk_widget_ref (disc_title);
979   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "disc_title", disc_title,
980                             (GtkDestroyNotify) gtk_widget_unref);
981   gtk_widget_show (disc_title);
982   gtk_table_attach (GTK_TABLE (table1), disc_title, 1, 2, 0, 1,
983                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
984                     (GtkAttachOptions) (0), 0, 0);
985
986   disc_chapter_adj = gtk_adjustment_new (1, 1, 65536, 1, 10, 10);
987   disc_chapter = gtk_spin_button_new (GTK_ADJUSTMENT (disc_chapter_adj), 1, 0);
988   gtk_widget_ref (disc_chapter);
989   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "disc_chapter", disc_chapter,
990                             (GtkDestroyNotify) gtk_widget_unref);
991   gtk_widget_show (disc_chapter);
992   gtk_table_attach (GTK_TABLE (table1), disc_chapter, 1, 2, 1, 2,
993                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
994                     (GtkAttachOptions) (0), 0, 0);
995
996   hbox1 = gtk_hbox_new (FALSE, 5);
997   gtk_widget_ref (hbox1);
998   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "hbox1", hbox1,
999                             (GtkDestroyNotify) gtk_widget_unref);
1000   gtk_widget_show (hbox1);
1001   gtk_box_pack_start (GTK_BOX (dialog_vbox4), hbox1, TRUE, TRUE, 0);
1002
1003   label14 = gtk_label_new (_("Device name:"));
1004   gtk_widget_ref (label14);
1005   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "label14", label14,
1006                             (GtkDestroyNotify) gtk_widget_unref);
1007   gtk_widget_show (label14);
1008   gtk_box_pack_start (GTK_BOX (hbox1), label14, FALSE, FALSE, 0);
1009
1010   disc_name = gtk_entry_new ();
1011   gtk_widget_ref (disc_name);
1012   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "disc_name", disc_name,
1013                             (GtkDestroyNotify) gtk_widget_unref);
1014   gtk_widget_show (disc_name);
1015   gtk_box_pack_start (GTK_BOX (hbox1), disc_name, TRUE, TRUE, 0);
1016   gtk_entry_set_text (GTK_ENTRY (disc_name), _("/dev/dvd"));
1017
1018   dialog_action_area4 = GNOME_DIALOG (intf_disc)->action_area;
1019   gtk_object_set_data (GTK_OBJECT (intf_disc), "dialog_action_area4", dialog_action_area4);
1020   gtk_widget_show (dialog_action_area4);
1021   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area4), GTK_BUTTONBOX_END);
1022   gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog_action_area4), 8);
1023
1024   gnome_dialog_append_button (GNOME_DIALOG (intf_disc), GNOME_STOCK_BUTTON_OK);
1025   disc_ok = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_disc)->buttons)->data);
1026   gtk_widget_ref (disc_ok);
1027   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "disc_ok", disc_ok,
1028                             (GtkDestroyNotify) gtk_widget_unref);
1029   gtk_widget_show (disc_ok);
1030   GTK_WIDGET_SET_FLAGS (disc_ok, GTK_CAN_DEFAULT);
1031
1032   gnome_dialog_append_button (GNOME_DIALOG (intf_disc), GNOME_STOCK_BUTTON_CANCEL);
1033   disc_cancel = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_disc)->buttons)->data);
1034   gtk_widget_ref (disc_cancel);
1035   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "disc_cancel", disc_cancel,
1036                             (GtkDestroyNotify) gtk_widget_unref);
1037   gtk_widget_show (disc_cancel);
1038   GTK_WIDGET_SET_FLAGS (disc_cancel, GTK_CAN_DEFAULT);
1039
1040   gtk_signal_connect (GTK_OBJECT (disc_dvd), "toggled",
1041                       GTK_SIGNAL_FUNC (on_disc_dvd_toggled),
1042                       NULL);
1043   gtk_signal_connect (GTK_OBJECT (disc_vcd), "toggled",
1044                       GTK_SIGNAL_FUNC (on_disc_vcd_toggled),
1045                       NULL);
1046   gtk_signal_connect (GTK_OBJECT (disc_ok), "clicked",
1047                       GTK_SIGNAL_FUNC (on_disc_ok_clicked),
1048                       NULL);
1049   gtk_signal_connect (GTK_OBJECT (disc_cancel), "clicked",
1050                       GTK_SIGNAL_FUNC (on_disc_cancel_clicked),
1051                       NULL);
1052
1053   return intf_disc;
1054 }
1055