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