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