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