* ./src/playlist/playlist.c: lots of playlist behaviour enhancements.
[vlc.git] / plugins / gtk / gnome_interface.c
1 /* This file was created automatically by glade and fixed by bootstrap.sh */
2
3 #include <vlc/vlc.h>
4
5 #include <sys/types.h>
6 #include <sys/stat.h>
7 #include <unistd.h>
8 #include <string.h>
9
10 #include <gnome.h>
11
12 #include "gnome_callbacks.h"
13 #include "gnome_interface.h"
14 #include "gnome_support.h"
15
16 static GnomeUIInfo menubar_file_menu_uiinfo[] =
17 {
18   {
19     GNOME_APP_UI_ITEM, N_("_Open File..."),
20     N_("Open a File"),
21     (gpointer) GtkFileOpenShow, "intf_window", NULL,
22     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_OPEN,
23     0, (GdkModifierType) 0, NULL
24   },
25   {
26     GNOME_APP_UI_ITEM, N_("Open _Disc..."),
27     N_("Open a DVD or VCD"),
28     (gpointer) GtkDiscOpenShow, "intf_window", NULL,
29     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_CDROM,
30     0, (GdkModifierType) 0, NULL
31   },
32   {
33     GNOME_APP_UI_ITEM, N_("_Network Stream..."),
34     N_("Select a Network Stream"),
35     (gpointer) GtkNetworkOpenShow, "intf_window", NULL,
36     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_REFRESH,
37     0, (GdkModifierType) 0, NULL
38   },
39   GNOMEUIINFO_SEPARATOR,
40   {
41     GNOME_APP_UI_ITEM, N_("_Eject Disc"),
42     N_("Eject disc"),
43     (gpointer) GtkDiscEject, "intf_window", NULL,
44     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_TOP,
45     0, (GdkModifierType) 0, NULL
46   },
47   GNOMEUIINFO_SEPARATOR,
48   GNOMEUIINFO_MENU_EXIT_ITEM (GtkExit, "intf_window"),
49   GNOMEUIINFO_END
50 };
51
52 static GnomeUIInfo menubar_view_menu_uiinfo[] =
53 {
54   {
55     GNOME_APP_UI_ITEM, N_("_Hide interface"),
56     NULL,
57     (gpointer) GtkWindowToggle, "intf_window", NULL,
58     GNOME_APP_PIXMAP_NONE, NULL,
59     0, (GdkModifierType) 0, NULL
60   },
61   {
62     GNOME_APP_UI_ITEM, N_("_Fullscreen"),
63     NULL,
64     (gpointer) GtkFullscreen, "intf_window", NULL,
65     GNOME_APP_PIXMAP_NONE, NULL,
66     0, (GdkModifierType) 0, NULL
67   },
68   GNOMEUIINFO_SEPARATOR,
69   {
70     GNOME_APP_UI_ITEM, N_("Progr_am"),
71     N_("Choose the program"),
72     (gpointer) NULL, NULL, NULL,
73     GNOME_APP_PIXMAP_NONE, NULL,
74     0, (GdkModifierType) 0, NULL
75   },
76   {
77     GNOME_APP_UI_ITEM, N_("_Title"),
78     N_("Choose title"),
79     (gpointer) NULL, NULL, NULL,
80     GNOME_APP_PIXMAP_NONE, NULL,
81     0, (GdkModifierType) 0, NULL
82   },
83   {
84     GNOME_APP_UI_ITEM, N_("_Chapter"),
85     N_("Choose chapter"),
86     (gpointer) NULL, NULL, NULL,
87     GNOME_APP_PIXMAP_NONE, NULL,
88     0, (GdkModifierType) 0, NULL
89   },
90   GNOMEUIINFO_SEPARATOR,
91   {
92     GNOME_APP_UI_ITEM, N_("_Playlist..."),
93     N_("Open the playlist window"),
94     (gpointer) GtkPlaylistShow, "intf_window", NULL,
95     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_INDEX,
96     0, (GdkModifierType) 0, NULL
97   },
98   {
99     GNOME_APP_UI_ITEM, N_("_Modules..."),
100     N_("Open the module manager"),
101     (gpointer) GtkModulesShow, "intf_window", NULL,
102     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_ATTACH,
103     0, (GdkModifierType) 0, NULL
104   },
105   {
106     GNOME_APP_UI_ITEM, N_("Messages..."),
107     N_("Open the messages window"),
108     (gpointer) GtkMessagesShow, "intf_window", NULL,
109     GNOME_APP_PIXMAP_NONE, NULL,
110     0, (GdkModifierType) 0, NULL
111   },
112   GNOMEUIINFO_END
113 };
114
115 static GnomeUIInfo menubar_settings_menu_uiinfo[] =
116 {
117   {
118     GNOME_APP_UI_ITEM, N_("_Audio"),
119     N_("Select audio channel"),
120     (gpointer) NULL, NULL, NULL,
121     GNOME_APP_PIXMAP_NONE, NULL,
122     0, (GdkModifierType) 0, NULL
123   },
124   {
125     GNOME_APP_UI_ITEM, N_("_Subtitles"),
126     N_("Select subtitles channel"),
127     (gpointer) NULL, NULL, NULL,
128     GNOME_APP_PIXMAP_NONE, NULL,
129     0, (GdkModifierType) 0, NULL
130   },
131   GNOMEUIINFO_SEPARATOR,
132   GNOMEUIINFO_MENU_PREFERENCES_ITEM (GtkPreferencesShow, "intf_window"),
133   GNOMEUIINFO_END
134 };
135
136 static GnomeUIInfo menubar_help_menu_uiinfo[] =
137 {
138   GNOMEUIINFO_MENU_ABOUT_ITEM (GtkAboutShow, "intf_window"),
139   GNOMEUIINFO_END
140 };
141
142 static GnomeUIInfo menubar_uiinfo[] =
143 {
144   GNOMEUIINFO_MENU_FILE_TREE (menubar_file_menu_uiinfo),
145   GNOMEUIINFO_MENU_VIEW_TREE (menubar_view_menu_uiinfo),
146   GNOMEUIINFO_MENU_SETTINGS_TREE (menubar_settings_menu_uiinfo),
147   GNOMEUIINFO_MENU_HELP_TREE (menubar_help_menu_uiinfo),
148   GNOMEUIINFO_END
149 };
150
151 GtkWidget*
152 create_intf_window (void)
153 {
154   GtkWidget *intf_window;
155   GtkWidget *dockitem;
156   GtkWidget *toolbar;
157   GtkWidget *tmp_toolbar_icon;
158   GtkWidget *toolbar_file;
159   GtkWidget *toolbar_disc;
160   GtkWidget *toolbar_network;
161   GtkWidget *toolbar_sat;
162   GtkWidget *toolbar_back;
163   GtkWidget *toolbar_stop;
164   GtkWidget *toolbar_eject;
165   GtkWidget *toolbar_play;
166   GtkWidget *toolbar_pause;
167   GtkWidget *toolbar_slow;
168   GtkWidget *toolbar_fast;
169   GtkWidget *toolbar_playlist;
170   GtkWidget *toolbar_prev;
171   GtkWidget *toolbar_next;
172   GtkWidget *vbox8;
173   GtkWidget *slider_frame;
174   GtkWidget *slider;
175   GtkWidget *file_box;
176   GtkWidget *label_status;
177   GtkWidget *dvd_box;
178   GtkWidget *label21;
179   GtkWidget *title_chapter_box;
180   GtkWidget *label19;
181   GtkWidget *title_label;
182   GtkWidget *button_title_prev;
183   GtkWidget *button_title_next;
184   GtkWidget *vseparator1;
185   GtkWidget *dvd_chapter_box;
186   GtkWidget *label20;
187   GtkWidget *chapter_label;
188   GtkWidget *button_chapter_prev;
189   GtkWidget *button_chapter_next;
190   GtkWidget *network_box;
191   GtkWidget *network_address_label;
192   GtkWidget *network_channel_box;
193   GtkWidget *label_network;
194   GtkObject *network_channel_spinbutton_adj;
195   GtkWidget *network_channel_spinbutton;
196   GtkWidget *network_channel_go_button;
197   GtkWidget *appbar;
198   GtkTooltips *tooltips;
199
200   tooltips = gtk_tooltips_new ();
201
202   intf_window = gnome_app_new ("VideoLAN Client", _("VideoLAN Client"));
203   gtk_object_set_data (GTK_OBJECT (intf_window), "intf_window", intf_window);
204   gtk_window_set_policy (GTK_WINDOW (intf_window), FALSE, TRUE, TRUE);
205
206   dockitem = GNOME_APP (intf_window)->dock;
207   gtk_widget_ref (dockitem);
208   gtk_object_set_data_full (GTK_OBJECT (intf_window), "dockitem", dockitem,
209                             (GtkDestroyNotify) gtk_widget_unref);
210   gtk_widget_show (dockitem);
211
212   gnome_app_create_menus (GNOME_APP (intf_window), menubar_uiinfo);
213
214   gtk_widget_ref (menubar_uiinfo[0].widget);
215   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_file",
216                             menubar_uiinfo[0].widget,
217                             (GtkDestroyNotify) gtk_widget_unref);
218
219   gtk_widget_ref (menubar_file_menu_uiinfo[0].widget);
220   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_open",
221                             menubar_file_menu_uiinfo[0].widget,
222                             (GtkDestroyNotify) gtk_widget_unref);
223
224   gtk_widget_ref (menubar_file_menu_uiinfo[1].widget);
225   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_disc",
226                             menubar_file_menu_uiinfo[1].widget,
227                             (GtkDestroyNotify) gtk_widget_unref);
228
229   gtk_widget_ref (menubar_file_menu_uiinfo[2].widget);
230   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_network",
231                             menubar_file_menu_uiinfo[2].widget,
232                             (GtkDestroyNotify) gtk_widget_unref);
233
234   gtk_widget_ref (menubar_file_menu_uiinfo[3].widget);
235   gtk_object_set_data_full (GTK_OBJECT (intf_window), "separator1",
236                             menubar_file_menu_uiinfo[3].widget,
237                             (GtkDestroyNotify) gtk_widget_unref);
238
239   gtk_widget_ref (menubar_file_menu_uiinfo[4].widget);
240   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_eject",
241                             menubar_file_menu_uiinfo[4].widget,
242                             (GtkDestroyNotify) gtk_widget_unref);
243
244   gtk_widget_ref (menubar_file_menu_uiinfo[5].widget);
245   gtk_object_set_data_full (GTK_OBJECT (intf_window), "separator15",
246                             menubar_file_menu_uiinfo[5].widget,
247                             (GtkDestroyNotify) gtk_widget_unref);
248
249   gtk_widget_ref (menubar_file_menu_uiinfo[6].widget);
250   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_exit",
251                             menubar_file_menu_uiinfo[6].widget,
252                             (GtkDestroyNotify) gtk_widget_unref);
253
254   gtk_widget_ref (menubar_uiinfo[1].widget);
255   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_view",
256                             menubar_uiinfo[1].widget,
257                             (GtkDestroyNotify) gtk_widget_unref);
258
259   gtk_widget_ref (menubar_view_menu_uiinfo[0].widget);
260   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_hide_interface",
261                             menubar_view_menu_uiinfo[0].widget,
262                             (GtkDestroyNotify) gtk_widget_unref);
263
264   gtk_widget_ref (menubar_view_menu_uiinfo[1].widget);
265   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_fullscreen",
266                             menubar_view_menu_uiinfo[1].widget,
267                             (GtkDestroyNotify) gtk_widget_unref);
268
269   gtk_widget_ref (menubar_view_menu_uiinfo[2].widget);
270   gtk_object_set_data_full (GTK_OBJECT (intf_window), "separator9",
271                             menubar_view_menu_uiinfo[2].widget,
272                             (GtkDestroyNotify) gtk_widget_unref);
273
274   gtk_widget_ref (menubar_view_menu_uiinfo[3].widget);
275   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_program",
276                             menubar_view_menu_uiinfo[3].widget,
277                             (GtkDestroyNotify) gtk_widget_unref);
278   gtk_widget_set_sensitive (menubar_view_menu_uiinfo[3].widget, FALSE);
279
280   gtk_widget_ref (menubar_view_menu_uiinfo[4].widget);
281   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_title",
282                             menubar_view_menu_uiinfo[4].widget,
283                             (GtkDestroyNotify) gtk_widget_unref);
284   gtk_widget_set_sensitive (menubar_view_menu_uiinfo[4].widget, FALSE);
285
286   gtk_widget_ref (menubar_view_menu_uiinfo[5].widget);
287   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_chapter",
288                             menubar_view_menu_uiinfo[5].widget,
289                             (GtkDestroyNotify) gtk_widget_unref);
290   gtk_widget_set_sensitive (menubar_view_menu_uiinfo[5].widget, FALSE);
291
292   gtk_widget_ref (menubar_view_menu_uiinfo[6].widget);
293   gtk_object_set_data_full (GTK_OBJECT (intf_window), "separator7",
294                             menubar_view_menu_uiinfo[6].widget,
295                             (GtkDestroyNotify) gtk_widget_unref);
296
297   gtk_widget_ref (menubar_view_menu_uiinfo[7].widget);
298   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_playlist",
299                             menubar_view_menu_uiinfo[7].widget,
300                             (GtkDestroyNotify) gtk_widget_unref);
301
302   gtk_widget_ref (menubar_view_menu_uiinfo[8].widget);
303   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_modules",
304                             menubar_view_menu_uiinfo[8].widget,
305                             (GtkDestroyNotify) gtk_widget_unref);
306   gtk_widget_set_sensitive (menubar_view_menu_uiinfo[8].widget, FALSE);
307
308   gtk_widget_ref (menubar_view_menu_uiinfo[9].widget);
309   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_messages",
310                             menubar_view_menu_uiinfo[9].widget,
311                             (GtkDestroyNotify) gtk_widget_unref);
312
313   gtk_widget_ref (menubar_uiinfo[2].widget);
314   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_settings",
315                             menubar_uiinfo[2].widget,
316                             (GtkDestroyNotify) gtk_widget_unref);
317
318   gtk_widget_ref (menubar_settings_menu_uiinfo[0].widget);
319   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_audio",
320                             menubar_settings_menu_uiinfo[0].widget,
321                             (GtkDestroyNotify) gtk_widget_unref);
322   gtk_widget_set_sensitive (menubar_settings_menu_uiinfo[0].widget, FALSE);
323
324   gtk_widget_ref (menubar_settings_menu_uiinfo[1].widget);
325   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_subpictures",
326                             menubar_settings_menu_uiinfo[1].widget,
327                             (GtkDestroyNotify) gtk_widget_unref);
328   gtk_widget_set_sensitive (menubar_settings_menu_uiinfo[1].widget, FALSE);
329
330   gtk_widget_ref (menubar_settings_menu_uiinfo[2].widget);
331   gtk_object_set_data_full (GTK_OBJECT (intf_window), "separator5",
332                             menubar_settings_menu_uiinfo[2].widget,
333                             (GtkDestroyNotify) gtk_widget_unref);
334
335   gtk_widget_ref (menubar_settings_menu_uiinfo[3].widget);
336   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_preferences",
337                             menubar_settings_menu_uiinfo[3].widget,
338                             (GtkDestroyNotify) gtk_widget_unref);
339
340   gtk_widget_ref (menubar_uiinfo[3].widget);
341   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_help",
342                             menubar_uiinfo[3].widget,
343                             (GtkDestroyNotify) gtk_widget_unref);
344
345   gtk_widget_ref (menubar_help_menu_uiinfo[0].widget);
346   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_about",
347                             menubar_help_menu_uiinfo[0].widget,
348                             (GtkDestroyNotify) gtk_widget_unref);
349
350   toolbar = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH);
351   gtk_widget_ref (toolbar);
352   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar", toolbar,
353                             (GtkDestroyNotify) gtk_widget_unref);
354   gtk_widget_show (toolbar);
355   gnome_app_add_toolbar (GNOME_APP (intf_window), GTK_TOOLBAR (toolbar), "toolbar",
356                                 GNOME_DOCK_ITEM_BEH_EXCLUSIVE,
357                                 GNOME_DOCK_TOP, 1, 0, 2);
358   gtk_toolbar_set_space_size (GTK_TOOLBAR (toolbar), 16);
359   gtk_toolbar_set_space_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_SPACE_LINE);
360   gtk_toolbar_set_button_relief (GTK_TOOLBAR (toolbar), GTK_RELIEF_NONE);
361
362   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_OPEN);
363   toolbar_file = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
364                                 GTK_TOOLBAR_CHILD_BUTTON,
365                                 NULL,
366                                 _("File"),
367                                 _("Open a File"), NULL,
368                                 tmp_toolbar_icon, NULL, NULL);
369   gtk_widget_ref (toolbar_file);
370   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_file", toolbar_file,
371                             (GtkDestroyNotify) gtk_widget_unref);
372   gtk_widget_show (toolbar_file);
373
374   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_CDROM);
375   toolbar_disc = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
376                                 GTK_TOOLBAR_CHILD_BUTTON,
377                                 NULL,
378                                 _("Disc"),
379                                 _("Open a DVD or VCD"), NULL,
380                                 tmp_toolbar_icon, NULL, NULL);
381   gtk_widget_ref (toolbar_disc);
382   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_disc", toolbar_disc,
383                             (GtkDestroyNotify) gtk_widget_unref);
384   gtk_widget_show (toolbar_disc);
385
386   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_REFRESH);
387   toolbar_network = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
388                                 GTK_TOOLBAR_CHILD_BUTTON,
389                                 NULL,
390                                 _("Net"),
391                                 _("Select a Network Stream"), NULL,
392                                 tmp_toolbar_icon, NULL, NULL);
393   gtk_widget_ref (toolbar_network);
394   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_network", toolbar_network,
395                             (GtkDestroyNotify) gtk_widget_unref);
396   gtk_widget_show (toolbar_network);
397
398   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_MIC);
399   toolbar_sat = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
400                                 GTK_TOOLBAR_CHILD_BUTTON,
401                                 NULL,
402                                 _("Sat"),
403                                 _("Open a Satellite Card"), NULL,
404                                 tmp_toolbar_icon, NULL, NULL);
405   gtk_widget_ref (toolbar_sat);
406   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_sat", toolbar_sat,
407                             (GtkDestroyNotify) gtk_widget_unref);
408   gtk_widget_show (toolbar_sat);
409
410   gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
411
412   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_BACK);
413   toolbar_back = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
414                                 GTK_TOOLBAR_CHILD_BUTTON,
415                                 NULL,
416                                 _("Back"),
417                                 _("Go Backward"), NULL,
418                                 tmp_toolbar_icon, NULL, NULL);
419   gtk_widget_ref (toolbar_back);
420   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_back", toolbar_back,
421                             (GtkDestroyNotify) gtk_widget_unref);
422   gtk_widget_show (toolbar_back);
423   gtk_widget_set_sensitive (toolbar_back, FALSE);
424
425   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_STOP);
426   toolbar_stop = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
427                                 GTK_TOOLBAR_CHILD_BUTTON,
428                                 NULL,
429                                 _("Stop"),
430                                 _("Stop Stream"), NULL,
431                                 tmp_toolbar_icon, NULL, NULL);
432   gtk_widget_ref (toolbar_stop);
433   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_stop", toolbar_stop,
434                             (GtkDestroyNotify) gtk_widget_unref);
435   gtk_widget_show (toolbar_stop);
436
437   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_TOP);
438   toolbar_eject = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
439                                 GTK_TOOLBAR_CHILD_BUTTON,
440                                 NULL,
441                                 _("Eject"),
442                                 _("Eject disc"), NULL,
443                                 tmp_toolbar_icon, NULL, NULL);
444   gtk_widget_ref (toolbar_eject);
445   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_eject", toolbar_eject,
446                             (GtkDestroyNotify) gtk_widget_unref);
447   gtk_widget_show (toolbar_eject);
448
449   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_FORWARD);
450   toolbar_play = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
451                                 GTK_TOOLBAR_CHILD_BUTTON,
452                                 NULL,
453                                 _("Play"),
454                                 _("Play Stream"), NULL,
455                                 tmp_toolbar_icon, NULL, NULL);
456   gtk_widget_ref (toolbar_play);
457   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_play", toolbar_play,
458                             (GtkDestroyNotify) gtk_widget_unref);
459   gtk_widget_show (toolbar_play);
460
461   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_BOTTOM);
462   toolbar_pause = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
463                                 GTK_TOOLBAR_CHILD_BUTTON,
464                                 NULL,
465                                 _("Pause"),
466                                 _("Pause Stream"), NULL,
467                                 tmp_toolbar_icon, NULL, NULL);
468   gtk_widget_ref (toolbar_pause);
469   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_pause", toolbar_pause,
470                             (GtkDestroyNotify) gtk_widget_unref);
471   gtk_widget_show (toolbar_pause);
472   gtk_widget_set_sensitive (toolbar_pause, FALSE);
473
474   gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
475
476   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_TIMER_STOP);
477   toolbar_slow = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
478                                 GTK_TOOLBAR_CHILD_BUTTON,
479                                 NULL,
480                                 _("Slow"),
481                                 _("Play Slower"), NULL,
482                                 tmp_toolbar_icon, NULL, NULL);
483   gtk_widget_ref (toolbar_slow);
484   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_slow", toolbar_slow,
485                             (GtkDestroyNotify) gtk_widget_unref);
486   gtk_widget_show (toolbar_slow);
487   gtk_widget_set_sensitive (toolbar_slow, FALSE);
488
489   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_TIMER);
490   toolbar_fast = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
491                                 GTK_TOOLBAR_CHILD_BUTTON,
492                                 NULL,
493                                 _("Fast"),
494                                 _("Play Faster"), NULL,
495                                 tmp_toolbar_icon, NULL, NULL);
496   gtk_widget_ref (toolbar_fast);
497   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_fast", toolbar_fast,
498                             (GtkDestroyNotify) gtk_widget_unref);
499   gtk_widget_show (toolbar_fast);
500   gtk_widget_set_sensitive (toolbar_fast, FALSE);
501
502   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_INDEX);
503   toolbar_playlist = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
504                                 GTK_TOOLBAR_CHILD_BUTTON,
505                                 NULL,
506                                 _("Playlist"),
507                                 _("Open Playlist"), NULL,
508                                 tmp_toolbar_icon, NULL, NULL);
509   gtk_widget_ref (toolbar_playlist);
510   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_playlist", toolbar_playlist,
511                             (GtkDestroyNotify) gtk_widget_unref);
512   gtk_widget_show (toolbar_playlist);
513
514   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_FIRST);
515   toolbar_prev = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
516                                 GTK_TOOLBAR_CHILD_BUTTON,
517                                 NULL,
518                                 _("Prev"),
519                                 _("Previous File"), NULL,
520                                 tmp_toolbar_icon, NULL, NULL);
521   gtk_widget_ref (toolbar_prev);
522   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_prev", toolbar_prev,
523                             (GtkDestroyNotify) gtk_widget_unref);
524   gtk_widget_show (toolbar_prev);
525
526   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_LAST);
527   toolbar_next = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
528                                 GTK_TOOLBAR_CHILD_BUTTON,
529                                 NULL,
530                                 _("Next"),
531                                 _("Next File"), NULL,
532                                 tmp_toolbar_icon, NULL, NULL);
533   gtk_widget_ref (toolbar_next);
534   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_next", toolbar_next,
535                             (GtkDestroyNotify) gtk_widget_unref);
536   gtk_widget_show (toolbar_next);
537
538   vbox8 = gtk_vbox_new (FALSE, 0);
539   gtk_widget_ref (vbox8);
540   gtk_object_set_data_full (GTK_OBJECT (intf_window), "vbox8", vbox8,
541                             (GtkDestroyNotify) gtk_widget_unref);
542   gtk_widget_show (vbox8);
543   gnome_app_set_contents (GNOME_APP (intf_window), vbox8);
544
545   slider_frame = gtk_frame_new ("-:--:--");
546   gtk_widget_ref (slider_frame);
547   gtk_object_set_data_full (GTK_OBJECT (intf_window), "slider_frame", slider_frame,
548                             (GtkDestroyNotify) gtk_widget_unref);
549   gtk_box_pack_start (GTK_BOX (vbox8), slider_frame, TRUE, TRUE, 0);
550   gtk_frame_set_label_align (GTK_FRAME (slider_frame), 0.05, 0.5);
551
552   slider = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 100, 1, 6.25, 0)));
553   gtk_widget_ref (slider);
554   gtk_object_set_data_full (GTK_OBJECT (intf_window), "slider", slider,
555                             (GtkDestroyNotify) gtk_widget_unref);
556   gtk_widget_show (slider);
557   gtk_container_add (GTK_CONTAINER (slider_frame), slider);
558   gtk_scale_set_draw_value (GTK_SCALE (slider), FALSE);
559   gtk_scale_set_digits (GTK_SCALE (slider), 3);
560
561   file_box = gtk_hbox_new (FALSE, 0);
562   gtk_widget_ref (file_box);
563   gtk_object_set_data_full (GTK_OBJECT (intf_window), "file_box", file_box,
564                             (GtkDestroyNotify) gtk_widget_unref);
565   gtk_widget_show (file_box);
566   gtk_box_pack_start (GTK_BOX (vbox8), file_box, TRUE, TRUE, 0);
567
568   label_status = gtk_label_new ("");
569   gtk_widget_ref (label_status);
570   gtk_object_set_data_full (GTK_OBJECT (intf_window), "label_status", label_status,
571                             (GtkDestroyNotify) gtk_widget_unref);
572   gtk_widget_show (label_status);
573   gtk_box_pack_start (GTK_BOX (file_box), label_status, TRUE, TRUE, 0);
574
575   dvd_box = gtk_hbox_new (FALSE, 0);
576   gtk_widget_ref (dvd_box);
577   gtk_object_set_data_full (GTK_OBJECT (intf_window), "dvd_box", dvd_box,
578                             (GtkDestroyNotify) gtk_widget_unref);
579   gtk_box_pack_start (GTK_BOX (vbox8), dvd_box, TRUE, TRUE, 0);
580
581   label21 = gtk_label_new (_("Disc"));
582   gtk_widget_ref (label21);
583   gtk_object_set_data_full (GTK_OBJECT (intf_window), "label21", label21,
584                             (GtkDestroyNotify) gtk_widget_unref);
585   gtk_widget_show (label21);
586   gtk_box_pack_start (GTK_BOX (dvd_box), label21, TRUE, FALSE, 0);
587
588   title_chapter_box = gtk_hbox_new (FALSE, 10);
589   gtk_widget_ref (title_chapter_box);
590   gtk_object_set_data_full (GTK_OBJECT (intf_window), "title_chapter_box", title_chapter_box,
591                             (GtkDestroyNotify) gtk_widget_unref);
592   gtk_widget_show (title_chapter_box);
593   gtk_box_pack_start (GTK_BOX (dvd_box), title_chapter_box, TRUE, FALSE, 0);
594
595   label19 = gtk_label_new (_("Title:"));
596   gtk_widget_ref (label19);
597   gtk_object_set_data_full (GTK_OBJECT (intf_window), "label19", label19,
598                             (GtkDestroyNotify) gtk_widget_unref);
599   gtk_widget_show (label19);
600   gtk_box_pack_start (GTK_BOX (title_chapter_box), label19, FALSE, FALSE, 0);
601
602   title_label = gtk_label_new ("--");
603   gtk_widget_ref (title_label);
604   gtk_object_set_data_full (GTK_OBJECT (intf_window), "title_label", title_label,
605                             (GtkDestroyNotify) gtk_widget_unref);
606   gtk_widget_show (title_label);
607   gtk_box_pack_start (GTK_BOX (title_chapter_box), title_label, FALSE, FALSE, 0);
608
609   button_title_prev = gnome_stock_button (GNOME_STOCK_BUTTON_PREV);
610   gtk_widget_ref (button_title_prev);
611   gtk_object_set_data_full (GTK_OBJECT (intf_window), "button_title_prev", button_title_prev,
612                             (GtkDestroyNotify) gtk_widget_unref);
613   gtk_widget_show (button_title_prev);
614   gtk_box_pack_start (GTK_BOX (title_chapter_box), button_title_prev, FALSE, FALSE, 0);
615   gtk_tooltips_set_tip (tooltips, button_title_prev, _("Select previous title"), NULL);
616
617   button_title_next = gnome_stock_button (GNOME_STOCK_BUTTON_NEXT);
618   gtk_widget_ref (button_title_next);
619   gtk_object_set_data_full (GTK_OBJECT (intf_window), "button_title_next", button_title_next,
620                             (GtkDestroyNotify) gtk_widget_unref);
621   gtk_widget_show (button_title_next);
622   gtk_box_pack_start (GTK_BOX (title_chapter_box), button_title_next, FALSE, FALSE, 0);
623
624   vseparator1 = gtk_vseparator_new ();
625   gtk_widget_ref (vseparator1);
626   gtk_object_set_data_full (GTK_OBJECT (intf_window), "vseparator1", vseparator1,
627                             (GtkDestroyNotify) gtk_widget_unref);
628   gtk_widget_show (vseparator1);
629   gtk_box_pack_start (GTK_BOX (dvd_box), vseparator1, FALSE, FALSE, 0);
630
631   dvd_chapter_box = gtk_hbox_new (FALSE, 10);
632   gtk_widget_ref (dvd_chapter_box);
633   gtk_object_set_data_full (GTK_OBJECT (intf_window), "dvd_chapter_box", dvd_chapter_box,
634                             (GtkDestroyNotify) gtk_widget_unref);
635   gtk_widget_show (dvd_chapter_box);
636   gtk_box_pack_start (GTK_BOX (dvd_box), dvd_chapter_box, TRUE, FALSE, 0);
637
638   label20 = gtk_label_new (_("Chapter:"));
639   gtk_widget_ref (label20);
640   gtk_object_set_data_full (GTK_OBJECT (intf_window), "label20", label20,
641                             (GtkDestroyNotify) gtk_widget_unref);
642   gtk_widget_show (label20);
643   gtk_box_pack_start (GTK_BOX (dvd_chapter_box), label20, FALSE, FALSE, 0);
644
645   chapter_label = gtk_label_new ("---");
646   gtk_widget_ref (chapter_label);
647   gtk_object_set_data_full (GTK_OBJECT (intf_window), "chapter_label", chapter_label,
648                             (GtkDestroyNotify) gtk_widget_unref);
649   gtk_widget_show (chapter_label);
650   gtk_box_pack_start (GTK_BOX (dvd_chapter_box), chapter_label, FALSE, FALSE, 0);
651
652   button_chapter_prev = gnome_stock_button (GNOME_STOCK_BUTTON_DOWN);
653   gtk_widget_ref (button_chapter_prev);
654   gtk_object_set_data_full (GTK_OBJECT (intf_window), "button_chapter_prev", button_chapter_prev,
655                             (GtkDestroyNotify) gtk_widget_unref);
656   gtk_widget_show (button_chapter_prev);
657   gtk_box_pack_start (GTK_BOX (dvd_chapter_box), button_chapter_prev, FALSE, FALSE, 0);
658   gtk_tooltips_set_tip (tooltips, button_chapter_prev, _("Select previous chapter"), NULL);
659
660   button_chapter_next = gnome_stock_button (GNOME_STOCK_BUTTON_UP);
661   gtk_widget_ref (button_chapter_next);
662   gtk_object_set_data_full (GTK_OBJECT (intf_window), "button_chapter_next", button_chapter_next,
663                             (GtkDestroyNotify) gtk_widget_unref);
664   gtk_widget_show (button_chapter_next);
665   gtk_box_pack_start (GTK_BOX (dvd_chapter_box), button_chapter_next, FALSE, FALSE, 0);
666   gtk_tooltips_set_tip (tooltips, button_chapter_next, _("Select next chapter"), NULL);
667
668   network_box = gtk_hbox_new (TRUE, 0);
669   gtk_widget_ref (network_box);
670   gtk_object_set_data_full (GTK_OBJECT (intf_window), "network_box", network_box,
671                             (GtkDestroyNotify) gtk_widget_unref);
672   gtk_box_pack_start (GTK_BOX (vbox8), network_box, FALSE, FALSE, 0);
673
674   network_address_label = gtk_label_new (_("No server"));
675   gtk_widget_ref (network_address_label);
676   gtk_object_set_data_full (GTK_OBJECT (intf_window), "network_address_label", network_address_label,
677                             (GtkDestroyNotify) gtk_widget_unref);
678   gtk_widget_show (network_address_label);
679   gtk_box_pack_start (GTK_BOX (network_box), network_address_label, FALSE, FALSE, 0);
680
681   network_channel_box = gtk_hbox_new (FALSE, 0);
682   gtk_widget_ref (network_channel_box);
683   gtk_object_set_data_full (GTK_OBJECT (intf_window), "network_channel_box", network_channel_box,
684                             (GtkDestroyNotify) gtk_widget_unref);
685   gtk_widget_show (network_channel_box);
686   gtk_box_pack_start (GTK_BOX (network_box), network_channel_box, FALSE, FALSE, 0);
687
688   label_network = gtk_label_new (_("Network Channel:"));
689   gtk_widget_ref (label_network);
690   gtk_object_set_data_full (GTK_OBJECT (intf_window), "label_network", label_network,
691                             (GtkDestroyNotify) gtk_widget_unref);
692   gtk_widget_show (label_network);
693   gtk_box_pack_start (GTK_BOX (network_channel_box), label_network, TRUE, FALSE, 5);
694
695   network_channel_spinbutton_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 10);
696   network_channel_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (network_channel_spinbutton_adj), 1, 0);
697   gtk_widget_ref (network_channel_spinbutton);
698   gtk_object_set_data_full (GTK_OBJECT (intf_window), "network_channel_spinbutton", network_channel_spinbutton,
699                             (GtkDestroyNotify) gtk_widget_unref);
700   gtk_widget_show (network_channel_spinbutton);
701   gtk_box_pack_start (GTK_BOX (network_channel_box), network_channel_spinbutton, FALSE, TRUE, 5);
702
703   network_channel_go_button = gtk_button_new_with_label (_("Go!"));
704   gtk_widget_ref (network_channel_go_button);
705   gtk_object_set_data_full (GTK_OBJECT (intf_window), "network_channel_go_button", network_channel_go_button,
706                             (GtkDestroyNotify) gtk_widget_unref);
707   gtk_widget_show (network_channel_go_button);
708   gtk_box_pack_start (GTK_BOX (network_channel_box), network_channel_go_button, FALSE, FALSE, 0);
709   gtk_button_set_relief (GTK_BUTTON (network_channel_go_button), GTK_RELIEF_NONE);
710
711   appbar = gnome_appbar_new (FALSE, TRUE, GNOME_PREFERENCES_NEVER);
712   gtk_widget_ref (appbar);
713   gtk_object_set_data_full (GTK_OBJECT (intf_window), "appbar", appbar,
714                             (GtkDestroyNotify) gtk_widget_unref);
715   gtk_widget_show (appbar);
716   gnome_app_set_statusbar (GNOME_APP (intf_window), appbar);
717
718   gtk_signal_connect (GTK_OBJECT (intf_window), "delete_event",
719                       GTK_SIGNAL_FUNC (GtkWindowDelete),
720                       "intf_window");
721   gtk_signal_connect (GTK_OBJECT (intf_window), "drag_data_received",
722                       GTK_SIGNAL_FUNC (GtkWindowDrag),
723                       "intf_window");
724   gnome_app_install_menu_hints (GNOME_APP (intf_window), menubar_uiinfo);
725   gtk_signal_connect (GTK_OBJECT (toolbar_file), "clicked",
726                       GTK_SIGNAL_FUNC (GtkFileOpenShow),
727                       "intf_window");
728   gtk_signal_connect (GTK_OBJECT (toolbar_disc), "clicked",
729                       GTK_SIGNAL_FUNC (GtkDiscOpenShow),
730                       "intf_window");
731   gtk_signal_connect (GTK_OBJECT (toolbar_network), "clicked",
732                       GTK_SIGNAL_FUNC (GtkNetworkOpenShow),
733                       "intf_window");
734   gtk_signal_connect (GTK_OBJECT (toolbar_sat), "clicked",
735                       GTK_SIGNAL_FUNC (GtkSatOpenShow),
736                       "intf_window");
737   gtk_signal_connect (GTK_OBJECT (toolbar_back), "clicked",
738                       GTK_SIGNAL_FUNC (GtkControlBack),
739                       "intf_window");
740   gtk_signal_connect (GTK_OBJECT (toolbar_stop), "clicked",
741                       GTK_SIGNAL_FUNC (GtkControlStop),
742                       "intf_window");
743   gtk_signal_connect (GTK_OBJECT (toolbar_eject), "clicked",
744                       GTK_SIGNAL_FUNC (GtkDiscEject),
745                       "intf_window");
746   gtk_signal_connect (GTK_OBJECT (toolbar_play), "clicked",
747                       GTK_SIGNAL_FUNC (GtkControlPlay),
748                       "intf_window");
749   gtk_signal_connect (GTK_OBJECT (toolbar_pause), "clicked",
750                       GTK_SIGNAL_FUNC (GtkControlPause),
751                       "intf_window");
752   gtk_signal_connect (GTK_OBJECT (toolbar_slow), "clicked",
753                       GTK_SIGNAL_FUNC (GtkControlSlow),
754                       "intf_window");
755   gtk_signal_connect (GTK_OBJECT (toolbar_fast), "clicked",
756                       GTK_SIGNAL_FUNC (GtkControlFast),
757                       "intf_window");
758   gtk_signal_connect (GTK_OBJECT (toolbar_playlist), "clicked",
759                       GTK_SIGNAL_FUNC (GtkPlaylistShow),
760                       "intf_window");
761   gtk_signal_connect (GTK_OBJECT (toolbar_prev), "clicked",
762                       GTK_SIGNAL_FUNC (GtkPlaylistPrev),
763                       "intf_window");
764   gtk_signal_connect (GTK_OBJECT (toolbar_next), "clicked",
765                       GTK_SIGNAL_FUNC (GtkPlaylistNext),
766                       "intf_window");
767   gtk_signal_connect (GTK_OBJECT (slider), "button_press_event",
768                       GTK_SIGNAL_FUNC (GtkSliderPress),
769                       "intf_window");
770   gtk_signal_connect (GTK_OBJECT (slider), "button_release_event",
771                       GTK_SIGNAL_FUNC (GtkSliderRelease),
772                       "intf_window");
773   gtk_signal_connect (GTK_OBJECT (button_title_prev), "clicked",
774                       GTK_SIGNAL_FUNC (GtkTitlePrev),
775                       "intf_window");
776   gtk_signal_connect (GTK_OBJECT (button_title_next), "clicked",
777                       GTK_SIGNAL_FUNC (GtkTitleNext),
778                       "intf_window");
779   gtk_signal_connect (GTK_OBJECT (button_chapter_prev), "clicked",
780                       GTK_SIGNAL_FUNC (GtkChapterPrev),
781                       "intf_window");
782   gtk_signal_connect (GTK_OBJECT (button_chapter_next), "clicked",
783                       GTK_SIGNAL_FUNC (GtkChapterNext),
784                       "intf_window");
785   gtk_signal_connect (GTK_OBJECT (network_channel_spinbutton), "activate",
786                       GTK_SIGNAL_FUNC (GtkNetworkJoin),
787                       "intf_window");
788   gtk_signal_connect (GTK_OBJECT (network_channel_go_button), "clicked",
789                       GTK_SIGNAL_FUNC (GtkChannelGo),
790                       "intf_window");
791
792   gtk_object_set_data (GTK_OBJECT (intf_window), "tooltips", tooltips);
793
794   return intf_window;
795 }
796
797 static GnomeUIInfo popup_file_menu_uiinfo[] =
798 {
799   {
800     GNOME_APP_UI_ITEM, N_("_Open File..."),
801     N_("Open a File"),
802     (gpointer) GtkFileOpenShow, "intf_popup", NULL,
803     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_OPEN,
804     0, (GdkModifierType) 0, NULL
805   },
806   {
807     GNOME_APP_UI_ITEM, N_("Open _Disc..."),
808     N_("Open a DVD or VCD"),
809     (gpointer) GtkDiscOpenShow, "intf_popup", NULL,
810     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_CDROM,
811     0, (GdkModifierType) 0, NULL
812   },
813   {
814     GNOME_APP_UI_ITEM, N_("_Network Stream..."),
815     N_("Select a Network Stream"),
816     (gpointer) GtkNetworkOpenShow, "intf_popup", NULL,
817     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_REFRESH,
818     0, (GdkModifierType) 0, NULL
819   },
820   GNOMEUIINFO_SEPARATOR,
821   GNOMEUIINFO_MENU_ABOUT_ITEM (GtkAboutShow, "intf_popup"),
822   GNOMEUIINFO_END
823 };
824
825 static GnomeUIInfo intf_popup_uiinfo[] =
826 {
827   {
828     GNOME_APP_UI_ITEM, N_("Play"),
829     NULL,
830     (gpointer) GtkControlPlay, "intf_popup", NULL,
831     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_FORWARD,
832     0, (GdkModifierType) 0, NULL
833   },
834   {
835     GNOME_APP_UI_ITEM, N_("Pause"),
836     NULL,
837     (gpointer) GtkControlPause, "intf_popup", NULL,
838     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_BOTTOM,
839     0, (GdkModifierType) 0, NULL
840   },
841   {
842     GNOME_APP_UI_ITEM, N_("Stop"),
843     NULL,
844     (gpointer) GtkControlStop, "intf_popup", NULL,
845     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_STOP,
846     0, (GdkModifierType) 0, NULL
847   },
848   {
849     GNOME_APP_UI_ITEM, N_("Back"),
850     NULL,
851     (gpointer) GtkControlBack, "intf_popup", NULL,
852     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_BACK,
853     0, (GdkModifierType) 0, NULL
854   },
855   {
856     GNOME_APP_UI_ITEM, N_("Slow"),
857     NULL,
858     (gpointer) GtkControlSlow, "intf_popup", NULL,
859     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_TIMER_STOP,
860     0, (GdkModifierType) 0, NULL
861   },
862   {
863     GNOME_APP_UI_ITEM, N_("Fast"),
864     NULL,
865     (gpointer) GtkControlFast, "intf_popup", NULL,
866     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_TIMER,
867     0, (GdkModifierType) 0, NULL
868   },
869   GNOMEUIINFO_SEPARATOR,
870   {
871     GNOME_APP_UI_ITEM, N_("Toggle _Interface"),
872     NULL,
873     (gpointer) GtkWindowToggle, "intf_popup", NULL,
874     GNOME_APP_PIXMAP_NONE, NULL,
875     0, (GdkModifierType) 0, NULL
876   },
877   {
878     GNOME_APP_UI_ITEM, N_("_Fullscreen"),
879     N_("Toggle fullscreen mode"),
880     (gpointer) GtkFullscreen, "intf_popup", NULL,
881     GNOME_APP_PIXMAP_NONE, NULL,
882     0, (GdkModifierType) 0, NULL
883   },
884   GNOMEUIINFO_SEPARATOR,
885   {
886     GNOME_APP_UI_ITEM, N_("Next"),
887     NULL,
888     (gpointer) GtkPlaylistNext, "intf_popup", NULL,
889     GNOME_APP_PIXMAP_NONE, NULL,
890     0, (GdkModifierType) 0, NULL
891   },
892   {
893     GNOME_APP_UI_ITEM, N_("Prev"),
894     NULL,
895     (gpointer) GtkPlaylistPrev, "intf_popup", NULL,
896     GNOME_APP_PIXMAP_NONE, NULL,
897     0, (GdkModifierType) 0, NULL
898   },
899   {
900     GNOME_APP_UI_ITEM, N_("_Jump..."),
901     N_("Got directly so specified point"),
902     (gpointer) GtkJumpShow, "intf_popup", NULL,
903     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_JUMP_TO,
904     0, (GdkModifierType) 0, NULL
905   },
906   {
907     GNOME_APP_UI_ITEM, N_("Program"),
908     N_("Switch program"),
909     (gpointer) NULL, NULL, NULL,
910     GNOME_APP_PIXMAP_NONE, NULL,
911     0, (GdkModifierType) 0, NULL
912   },
913   {
914     GNOME_APP_UI_ITEM, N_("_Navigation"),
915     N_("Navigate through titles and chapters"),
916     (gpointer) NULL, NULL, NULL,
917     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_SEARCH,
918     0, (GdkModifierType) 0, NULL
919   },
920   {
921     GNOME_APP_UI_ITEM, N_("_Audio"),
922     N_("Select audio channel"),
923     (gpointer) NULL, NULL, NULL,
924     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_VOLUME,
925     0, (GdkModifierType) 0, NULL
926   },
927   {
928     GNOME_APP_UI_ITEM, N_("_Subtitles"),
929     N_("Select subtitles channel"),
930     (gpointer) NULL, NULL, NULL,
931     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_FONT,
932     0, (GdkModifierType) 0, NULL
933   },
934   GNOMEUIINFO_SEPARATOR,
935   GNOMEUIINFO_MENU_FILE_TREE (popup_file_menu_uiinfo),
936   {
937     GNOME_APP_UI_ITEM, N_("Playlist..."),
938     NULL,
939     (gpointer) GtkPlaylistShow, "intf_popup", NULL,
940     GNOME_APP_PIXMAP_NONE, NULL,
941     0, (GdkModifierType) 0, NULL
942   },
943   GNOMEUIINFO_MENU_PREFERENCES_ITEM (GtkPreferencesShow, "intf_popup"),
944   GNOMEUIINFO_SEPARATOR,
945   GNOMEUIINFO_MENU_EXIT_ITEM (GtkExit, "intf_popup"),
946   GNOMEUIINFO_END
947 };
948
949 GtkWidget*
950 create_intf_popup (void)
951 {
952   GtkWidget *intf_popup;
953
954   intf_popup = gtk_menu_new ();
955   gtk_object_set_data (GTK_OBJECT (intf_popup), "intf_popup", intf_popup);
956   gnome_app_fill_menu (GTK_MENU_SHELL (intf_popup), intf_popup_uiinfo,
957                        NULL, FALSE, 0);
958
959   gtk_widget_ref (intf_popup_uiinfo[0].widget);
960   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_play",
961                             intf_popup_uiinfo[0].widget,
962                             (GtkDestroyNotify) gtk_widget_unref);
963
964   gtk_widget_ref (intf_popup_uiinfo[1].widget);
965   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_pause",
966                             intf_popup_uiinfo[1].widget,
967                             (GtkDestroyNotify) gtk_widget_unref);
968
969   gtk_widget_ref (intf_popup_uiinfo[2].widget);
970   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_stop",
971                             intf_popup_uiinfo[2].widget,
972                             (GtkDestroyNotify) gtk_widget_unref);
973
974   gtk_widget_ref (intf_popup_uiinfo[3].widget);
975   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_back",
976                             intf_popup_uiinfo[3].widget,
977                             (GtkDestroyNotify) gtk_widget_unref);
978   gtk_widget_set_sensitive (intf_popup_uiinfo[3].widget, FALSE);
979
980   gtk_widget_ref (intf_popup_uiinfo[4].widget);
981   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_slow",
982                             intf_popup_uiinfo[4].widget,
983                             (GtkDestroyNotify) gtk_widget_unref);
984
985   gtk_widget_ref (intf_popup_uiinfo[5].widget);
986   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_fast",
987                             intf_popup_uiinfo[5].widget,
988                             (GtkDestroyNotify) gtk_widget_unref);
989
990   gtk_widget_ref (intf_popup_uiinfo[6].widget);
991   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "separator3",
992                             intf_popup_uiinfo[6].widget,
993                             (GtkDestroyNotify) gtk_widget_unref);
994
995   gtk_widget_ref (intf_popup_uiinfo[7].widget);
996   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_interface_toggle",
997                             intf_popup_uiinfo[7].widget,
998                             (GtkDestroyNotify) gtk_widget_unref);
999
1000   gtk_widget_ref (intf_popup_uiinfo[8].widget);
1001   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_fullscreen",
1002                             intf_popup_uiinfo[8].widget,
1003                             (GtkDestroyNotify) gtk_widget_unref);
1004
1005   gtk_widget_ref (intf_popup_uiinfo[9].widget);
1006   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "separator8",
1007                             intf_popup_uiinfo[9].widget,
1008                             (GtkDestroyNotify) gtk_widget_unref);
1009
1010   gtk_widget_ref (intf_popup_uiinfo[10].widget);
1011   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_next",
1012                             intf_popup_uiinfo[10].widget,
1013                             (GtkDestroyNotify) gtk_widget_unref);
1014
1015   gtk_widget_ref (intf_popup_uiinfo[11].widget);
1016   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_prev",
1017                             intf_popup_uiinfo[11].widget,
1018                             (GtkDestroyNotify) gtk_widget_unref);
1019
1020   gtk_widget_ref (intf_popup_uiinfo[12].widget);
1021   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_jump",
1022                             intf_popup_uiinfo[12].widget,
1023                             (GtkDestroyNotify) gtk_widget_unref);
1024
1025   gtk_widget_ref (intf_popup_uiinfo[13].widget);
1026   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_program",
1027                             intf_popup_uiinfo[13].widget,
1028                             (GtkDestroyNotify) gtk_widget_unref);
1029   gtk_widget_set_sensitive (intf_popup_uiinfo[13].widget, FALSE);
1030
1031   gtk_widget_ref (intf_popup_uiinfo[14].widget);
1032   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_navigation",
1033                             intf_popup_uiinfo[14].widget,
1034                             (GtkDestroyNotify) gtk_widget_unref);
1035   gtk_widget_set_sensitive (intf_popup_uiinfo[14].widget, FALSE);
1036
1037   gtk_widget_ref (intf_popup_uiinfo[15].widget);
1038   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_audio",
1039                             intf_popup_uiinfo[15].widget,
1040                             (GtkDestroyNotify) gtk_widget_unref);
1041   gtk_widget_set_sensitive (intf_popup_uiinfo[15].widget, FALSE);
1042
1043   gtk_widget_ref (intf_popup_uiinfo[16].widget);
1044   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_subpictures",
1045                             intf_popup_uiinfo[16].widget,
1046                             (GtkDestroyNotify) gtk_widget_unref);
1047   gtk_widget_set_sensitive (intf_popup_uiinfo[16].widget, FALSE);
1048
1049   gtk_widget_ref (intf_popup_uiinfo[17].widget);
1050   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "separator13",
1051                             intf_popup_uiinfo[17].widget,
1052                             (GtkDestroyNotify) gtk_widget_unref);
1053
1054   gtk_widget_ref (intf_popup_uiinfo[18].widget);
1055   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_file",
1056                             intf_popup_uiinfo[18].widget,
1057                             (GtkDestroyNotify) gtk_widget_unref);
1058
1059   gtk_widget_ref (popup_file_menu_uiinfo[0].widget);
1060   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_open",
1061                             popup_file_menu_uiinfo[0].widget,
1062                             (GtkDestroyNotify) gtk_widget_unref);
1063
1064   gtk_widget_ref (popup_file_menu_uiinfo[1].widget);
1065   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_disc",
1066                             popup_file_menu_uiinfo[1].widget,
1067                             (GtkDestroyNotify) gtk_widget_unref);
1068
1069   gtk_widget_ref (popup_file_menu_uiinfo[2].widget);
1070   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_network",
1071                             popup_file_menu_uiinfo[2].widget,
1072                             (GtkDestroyNotify) gtk_widget_unref);
1073
1074   gtk_widget_ref (popup_file_menu_uiinfo[3].widget);
1075   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "separator4",
1076                             popup_file_menu_uiinfo[3].widget,
1077                             (GtkDestroyNotify) gtk_widget_unref);
1078
1079   gtk_widget_ref (popup_file_menu_uiinfo[4].widget);
1080   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_about",
1081                             popup_file_menu_uiinfo[4].widget,
1082                             (GtkDestroyNotify) gtk_widget_unref);
1083
1084   gtk_widget_ref (intf_popup_uiinfo[19].widget);
1085   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_playlist",
1086                             intf_popup_uiinfo[19].widget,
1087                             (GtkDestroyNotify) gtk_widget_unref);
1088
1089   gtk_widget_ref (intf_popup_uiinfo[20].widget);
1090   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_preferences",
1091                             intf_popup_uiinfo[20].widget,
1092                             (GtkDestroyNotify) gtk_widget_unref);
1093
1094   gtk_widget_ref (intf_popup_uiinfo[21].widget);
1095   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "separator2",
1096                             intf_popup_uiinfo[21].widget,
1097                             (GtkDestroyNotify) gtk_widget_unref);
1098
1099   gtk_widget_ref (intf_popup_uiinfo[22].widget);
1100   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_exit",
1101                             intf_popup_uiinfo[22].widget,
1102                             (GtkDestroyNotify) gtk_widget_unref);
1103
1104   return intf_popup;
1105 }
1106
1107 GtkWidget*
1108 create_intf_about (void)
1109 {
1110   const gchar *authors[] = {
1111     "the VideoLAN team <videolan@videolan.org>",
1112     "http://www.videolan.org/",
1113     NULL
1114   };
1115   GtkWidget *intf_about;
1116
1117   intf_about = gnome_about_new ("VideoLAN Client", VERSION,
1118                         _("(C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 - the VideoLAN Team"),
1119                         authors,
1120                         _("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."),
1121                         NULL);
1122   gtk_object_set_data (GTK_OBJECT (intf_about), "intf_about", intf_about);
1123
1124   return intf_about;
1125 }
1126
1127 GtkWidget*
1128 create_intf_fileopen (void)
1129 {
1130   GtkWidget *intf_fileopen;
1131   GtkWidget *fileopen_ok;
1132   GtkWidget *fileopen_cancel;
1133
1134   intf_fileopen = gtk_file_selection_new (_("Open File"));
1135   gtk_object_set_data (GTK_OBJECT (intf_fileopen), "intf_fileopen", intf_fileopen);
1136   gtk_container_set_border_width (GTK_CONTAINER (intf_fileopen), 10);
1137   gtk_window_set_modal (GTK_WINDOW (intf_fileopen), TRUE);
1138   gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (intf_fileopen));
1139
1140   fileopen_ok = GTK_FILE_SELECTION (intf_fileopen)->ok_button;
1141   gtk_object_set_data (GTK_OBJECT (intf_fileopen), "fileopen_ok", fileopen_ok);
1142   gtk_widget_show (fileopen_ok);
1143   GTK_WIDGET_SET_FLAGS (fileopen_ok, GTK_CAN_DEFAULT);
1144
1145   fileopen_cancel = GTK_FILE_SELECTION (intf_fileopen)->cancel_button;
1146   gtk_object_set_data (GTK_OBJECT (intf_fileopen), "fileopen_cancel", fileopen_cancel);
1147   gtk_widget_show (fileopen_cancel);
1148   GTK_WIDGET_SET_FLAGS (fileopen_cancel, GTK_CAN_DEFAULT);
1149
1150   gtk_signal_connect (GTK_OBJECT (fileopen_ok), "clicked",
1151                       GTK_SIGNAL_FUNC (GtkFileOpenOk),
1152                       "intf_fileopen");
1153   gtk_signal_connect (GTK_OBJECT (fileopen_cancel), "clicked",
1154                       GTK_SIGNAL_FUNC (GtkFileOpenCancel),
1155                       "intf_fileopen");
1156
1157   return intf_fileopen;
1158 }
1159
1160 GtkWidget*
1161 create_intf_modules (void)
1162 {
1163   GtkWidget *intf_modules;
1164   GtkWidget *dialog_vbox1;
1165   GtkWidget *label12;
1166   GtkWidget *dialog_action_area1;
1167   GtkWidget *modules_ok;
1168   GtkWidget *modules_apply;
1169   GtkWidget *modules_cancel;
1170
1171   intf_modules = gnome_dialog_new (_("Modules"), NULL);
1172   gtk_object_set_data (GTK_OBJECT (intf_modules), "intf_modules", intf_modules);
1173   gtk_window_set_policy (GTK_WINDOW (intf_modules), FALSE, FALSE, FALSE);
1174
1175   dialog_vbox1 = GNOME_DIALOG (intf_modules)->vbox;
1176   gtk_object_set_data (GTK_OBJECT (intf_modules), "dialog_vbox1", dialog_vbox1);
1177   gtk_widget_show (dialog_vbox1);
1178
1179   label12 = gtk_label_new (_("Sorry, the module manager isn't functional yet. Please retry in a later version."));
1180   gtk_widget_ref (label12);
1181   gtk_object_set_data_full (GTK_OBJECT (intf_modules), "label12", label12,
1182                             (GtkDestroyNotify) gtk_widget_unref);
1183   gtk_widget_show (label12);
1184   gtk_box_pack_start (GTK_BOX (dialog_vbox1), label12, FALSE, FALSE, 0);
1185
1186   dialog_action_area1 = GNOME_DIALOG (intf_modules)->action_area;
1187   gtk_object_set_data (GTK_OBJECT (intf_modules), "dialog_action_area1", dialog_action_area1);
1188   gtk_widget_show (dialog_action_area1);
1189   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_END);
1190   gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog_action_area1), 8);
1191
1192   gnome_dialog_append_button (GNOME_DIALOG (intf_modules), GNOME_STOCK_BUTTON_OK);
1193   modules_ok = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_modules)->buttons)->data);
1194   gtk_widget_ref (modules_ok);
1195   gtk_object_set_data_full (GTK_OBJECT (intf_modules), "modules_ok", modules_ok,
1196                             (GtkDestroyNotify) gtk_widget_unref);
1197   gtk_widget_show (modules_ok);
1198   GTK_WIDGET_SET_FLAGS (modules_ok, GTK_CAN_DEFAULT);
1199
1200   gnome_dialog_append_button (GNOME_DIALOG (intf_modules), GNOME_STOCK_BUTTON_APPLY);
1201   modules_apply = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_modules)->buttons)->data);
1202   gtk_widget_ref (modules_apply);
1203   gtk_object_set_data_full (GTK_OBJECT (intf_modules), "modules_apply", modules_apply,
1204                             (GtkDestroyNotify) gtk_widget_unref);
1205   gtk_widget_show (modules_apply);
1206   GTK_WIDGET_SET_FLAGS (modules_apply, GTK_CAN_DEFAULT);
1207
1208   gnome_dialog_append_button (GNOME_DIALOG (intf_modules), GNOME_STOCK_BUTTON_CANCEL);
1209   modules_cancel = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_modules)->buttons)->data);
1210   gtk_widget_ref (modules_cancel);
1211   gtk_object_set_data_full (GTK_OBJECT (intf_modules), "modules_cancel", modules_cancel,
1212                             (GtkDestroyNotify) gtk_widget_unref);
1213   gtk_widget_show (modules_cancel);
1214   GTK_WIDGET_SET_FLAGS (modules_cancel, GTK_CAN_DEFAULT);
1215
1216   return intf_modules;
1217 }
1218
1219 GtkWidget*
1220 create_intf_disc (void)
1221 {
1222   GtkWidget *intf_disc;
1223   GtkWidget *dialog_vbox4;
1224   GtkWidget *hbox2;
1225   GtkWidget *frame1;
1226   GtkWidget *vbox4;
1227   GSList *disc_group = NULL;
1228   GtkWidget *disc_dvd;
1229   GtkWidget *disc_vcd;
1230   GtkWidget *frame2;
1231   GtkWidget *table1;
1232   GtkWidget *label15;
1233   GtkWidget *label16;
1234   GtkObject *disc_title_adj;
1235   GtkWidget *disc_title;
1236   GtkObject *disc_chapter_adj;
1237   GtkWidget *disc_chapter;
1238   GtkWidget *hbox1;
1239   GtkWidget *label14;
1240   GtkWidget *disc_name;
1241   GtkWidget *dialog_action_area4;
1242   GtkWidget *disc_ok;
1243   GtkWidget *disc_cancel;
1244
1245   intf_disc = gnome_dialog_new (_("Open Disc"), NULL);
1246   gtk_object_set_data (GTK_OBJECT (intf_disc), "intf_disc", intf_disc);
1247   gtk_window_set_modal (GTK_WINDOW (intf_disc), TRUE);
1248   gtk_window_set_policy (GTK_WINDOW (intf_disc), FALSE, FALSE, FALSE);
1249
1250   dialog_vbox4 = GNOME_DIALOG (intf_disc)->vbox;
1251   gtk_object_set_data (GTK_OBJECT (intf_disc), "dialog_vbox4", dialog_vbox4);
1252   gtk_widget_show (dialog_vbox4);
1253
1254   hbox2 = gtk_hbox_new (FALSE, 5);
1255   gtk_widget_ref (hbox2);
1256   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "hbox2", hbox2,
1257                             (GtkDestroyNotify) gtk_widget_unref);
1258   gtk_widget_show (hbox2);
1259   gtk_box_pack_start (GTK_BOX (dialog_vbox4), hbox2, TRUE, TRUE, 0);
1260
1261   frame1 = gtk_frame_new (_("Disc type"));
1262   gtk_widget_ref (frame1);
1263   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "frame1", frame1,
1264                             (GtkDestroyNotify) gtk_widget_unref);
1265   gtk_widget_show (frame1);
1266   gtk_box_pack_start (GTK_BOX (hbox2), frame1, TRUE, TRUE, 0);
1267
1268   vbox4 = gtk_vbox_new (FALSE, 0);
1269   gtk_widget_ref (vbox4);
1270   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "vbox4", vbox4,
1271                             (GtkDestroyNotify) gtk_widget_unref);
1272   gtk_widget_show (vbox4);
1273   gtk_container_add (GTK_CONTAINER (frame1), vbox4);
1274
1275   disc_dvd = gtk_radio_button_new_with_label (disc_group, _("DVD"));
1276   disc_group = gtk_radio_button_group (GTK_RADIO_BUTTON (disc_dvd));
1277   gtk_widget_ref (disc_dvd);
1278   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "disc_dvd", disc_dvd,
1279                             (GtkDestroyNotify) gtk_widget_unref);
1280   gtk_widget_show (disc_dvd);
1281   gtk_box_pack_start (GTK_BOX (vbox4), disc_dvd, FALSE, FALSE, 0);
1282
1283   disc_vcd = gtk_radio_button_new_with_label (disc_group, _("VCD"));
1284   disc_group = gtk_radio_button_group (GTK_RADIO_BUTTON (disc_vcd));
1285   gtk_widget_ref (disc_vcd);
1286   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "disc_vcd", disc_vcd,
1287                             (GtkDestroyNotify) gtk_widget_unref);
1288   gtk_widget_show (disc_vcd);
1289   gtk_box_pack_start (GTK_BOX (vbox4), disc_vcd, FALSE, FALSE, 0);
1290
1291   frame2 = gtk_frame_new (_("Starting position"));
1292   gtk_widget_ref (frame2);
1293   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "frame2", frame2,
1294                             (GtkDestroyNotify) gtk_widget_unref);
1295   gtk_widget_show (frame2);
1296   gtk_box_pack_start (GTK_BOX (hbox2), frame2, TRUE, TRUE, 0);
1297
1298   table1 = gtk_table_new (2, 2, FALSE);
1299   gtk_widget_ref (table1);
1300   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "table1", table1,
1301                             (GtkDestroyNotify) gtk_widget_unref);
1302   gtk_widget_show (table1);
1303   gtk_container_add (GTK_CONTAINER (frame2), table1);
1304   gtk_container_set_border_width (GTK_CONTAINER (table1), 5);
1305   gtk_table_set_row_spacings (GTK_TABLE (table1), 5);
1306   gtk_table_set_col_spacings (GTK_TABLE (table1), 5);
1307
1308   label15 = gtk_label_new (_("Title"));
1309   gtk_widget_ref (label15);
1310   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "label15", label15,
1311                             (GtkDestroyNotify) gtk_widget_unref);
1312   gtk_widget_show (label15);
1313   gtk_table_attach (GTK_TABLE (table1), label15, 0, 1, 0, 1,
1314                     (GtkAttachOptions) (GTK_FILL),
1315                     (GtkAttachOptions) (0), 0, 0);
1316   gtk_misc_set_alignment (GTK_MISC (label15), 0, 0.5);
1317
1318   label16 = gtk_label_new (_("Chapter"));
1319   gtk_widget_ref (label16);
1320   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "label16", label16,
1321                             (GtkDestroyNotify) gtk_widget_unref);
1322   gtk_widget_show (label16);
1323   gtk_table_attach (GTK_TABLE (table1), label16, 0, 1, 1, 2,
1324                     (GtkAttachOptions) (GTK_FILL),
1325                     (GtkAttachOptions) (0), 0, 0);
1326   gtk_misc_set_alignment (GTK_MISC (label16), 0, 0.5);
1327
1328   disc_title_adj = gtk_adjustment_new (1, 1, 65536, 1, 10, 10);
1329   disc_title = gtk_spin_button_new (GTK_ADJUSTMENT (disc_title_adj), 1, 0);
1330   gtk_widget_ref (disc_title);
1331   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "disc_title", disc_title,
1332                             (GtkDestroyNotify) gtk_widget_unref);
1333   gtk_widget_show (disc_title);
1334   gtk_table_attach (GTK_TABLE (table1), disc_title, 1, 2, 0, 1,
1335                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1336                     (GtkAttachOptions) (0), 0, 0);
1337
1338   disc_chapter_adj = gtk_adjustment_new (1, 1, 65536, 1, 10, 10);
1339   disc_chapter = gtk_spin_button_new (GTK_ADJUSTMENT (disc_chapter_adj), 1, 0);
1340   gtk_widget_ref (disc_chapter);
1341   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "disc_chapter", disc_chapter,
1342                             (GtkDestroyNotify) gtk_widget_unref);
1343   gtk_widget_show (disc_chapter);
1344   gtk_table_attach (GTK_TABLE (table1), disc_chapter, 1, 2, 1, 2,
1345                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1346                     (GtkAttachOptions) (0), 0, 0);
1347
1348   hbox1 = gtk_hbox_new (FALSE, 5);
1349   gtk_widget_ref (hbox1);
1350   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "hbox1", hbox1,
1351                             (GtkDestroyNotify) gtk_widget_unref);
1352   gtk_widget_show (hbox1);
1353   gtk_box_pack_start (GTK_BOX (dialog_vbox4), hbox1, TRUE, TRUE, 0);
1354
1355   label14 = gtk_label_new (_("Device name:"));
1356   gtk_widget_ref (label14);
1357   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "label14", label14,
1358                             (GtkDestroyNotify) gtk_widget_unref);
1359   gtk_widget_show (label14);
1360   gtk_box_pack_start (GTK_BOX (hbox1), label14, FALSE, FALSE, 0);
1361
1362   disc_name = gtk_entry_new ();
1363   gtk_widget_ref (disc_name);
1364   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "disc_name", disc_name,
1365                             (GtkDestroyNotify) gtk_widget_unref);
1366   gtk_widget_show (disc_name);
1367   gtk_box_pack_start (GTK_BOX (hbox1), disc_name, TRUE, TRUE, 0);
1368   gtk_entry_set_text (GTK_ENTRY (disc_name), "/dev/dvd");
1369
1370   dialog_action_area4 = GNOME_DIALOG (intf_disc)->action_area;
1371   gtk_object_set_data (GTK_OBJECT (intf_disc), "dialog_action_area4", dialog_action_area4);
1372   gtk_widget_show (dialog_action_area4);
1373   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area4), GTK_BUTTONBOX_END);
1374   gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog_action_area4), 8);
1375
1376   gnome_dialog_append_button (GNOME_DIALOG (intf_disc), GNOME_STOCK_BUTTON_OK);
1377   disc_ok = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_disc)->buttons)->data);
1378   gtk_widget_ref (disc_ok);
1379   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "disc_ok", disc_ok,
1380                             (GtkDestroyNotify) gtk_widget_unref);
1381   gtk_widget_show (disc_ok);
1382   GTK_WIDGET_SET_FLAGS (disc_ok, GTK_CAN_DEFAULT);
1383
1384   gnome_dialog_append_button (GNOME_DIALOG (intf_disc), GNOME_STOCK_BUTTON_CANCEL);
1385   disc_cancel = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_disc)->buttons)->data);
1386   gtk_widget_ref (disc_cancel);
1387   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "disc_cancel", disc_cancel,
1388                             (GtkDestroyNotify) gtk_widget_unref);
1389   gtk_widget_show (disc_cancel);
1390   GTK_WIDGET_SET_FLAGS (disc_cancel, GTK_CAN_DEFAULT);
1391
1392   gtk_signal_connect (GTK_OBJECT (disc_dvd), "toggled",
1393                       GTK_SIGNAL_FUNC (GtkDiscOpenDvd),
1394                       "intf_disc");
1395   gtk_signal_connect (GTK_OBJECT (disc_vcd), "toggled",
1396                       GTK_SIGNAL_FUNC (GtkDiscOpenVcd),
1397                       "intf_disc");
1398   gtk_signal_connect (GTK_OBJECT (disc_ok), "clicked",
1399                       GTK_SIGNAL_FUNC (GtkDiscOpenOk),
1400                       "intf_disc");
1401   gtk_signal_connect (GTK_OBJECT (disc_cancel), "clicked",
1402                       GTK_SIGNAL_FUNC (GtkDiscOpenCancel),
1403                       "intf_disc");
1404
1405   return intf_disc;
1406 }
1407
1408 GtkWidget*
1409 create_intf_network (void)
1410 {
1411   GtkWidget *intf_network;
1412   GtkWidget *vbox5;
1413   GtkWidget *frame14;
1414   GtkWidget *table6;
1415   GSList *table6_group = NULL;
1416   GtkWidget *network_udp;
1417   GtkWidget *network_multicast;
1418   GtkWidget *network_channel;
1419   GtkWidget *network_http;
1420   GtkWidget *network_udp_port_label;
1421   GtkWidget *network_multicast_address_label;
1422   GtkWidget *network_channel_address_label;
1423   GtkWidget *network_http_url_label;
1424   GtkWidget *network_multicast_address_combo;
1425   GtkWidget *network_multicast_address;
1426   GtkObject *network_udp_port_adj;
1427   GtkWidget *network_udp_port;
1428   GtkWidget *network_channel_address_combo;
1429   GtkWidget *network_channel_address;
1430   GtkWidget *network_multicast_port_label;
1431   GtkWidget *network_channel_port_label;
1432   GtkWidget *network_http_url;
1433   GtkWidget *label42;
1434   GtkObject *network_multicast_port_adj;
1435   GtkWidget *network_multicast_port;
1436   GtkObject *network_channel_port_adj;
1437   GtkWidget *network_channel_port;
1438   GtkWidget *hbuttonbox1;
1439   GtkWidget *network_ok;
1440   GtkWidget *network_cancel;
1441
1442   intf_network = gnome_dialog_new (_("Network Stream"), NULL);
1443   gtk_object_set_data (GTK_OBJECT (intf_network), "intf_network", intf_network);
1444   gtk_window_set_modal (GTK_WINDOW (intf_network), TRUE);
1445   gtk_window_set_policy (GTK_WINDOW (intf_network), FALSE, FALSE, FALSE);
1446
1447   vbox5 = GNOME_DIALOG (intf_network)->vbox;
1448   gtk_object_set_data (GTK_OBJECT (intf_network), "vbox5", vbox5);
1449   gtk_widget_show (vbox5);
1450
1451   frame14 = gtk_frame_new (_("Network mode"));
1452   gtk_widget_ref (frame14);
1453   gtk_object_set_data_full (GTK_OBJECT (intf_network), "frame14", frame14,
1454                             (GtkDestroyNotify) gtk_widget_unref);
1455   gtk_widget_show (frame14);
1456   gtk_box_pack_start (GTK_BOX (vbox5), frame14, TRUE, TRUE, 0);
1457
1458   table6 = gtk_table_new (4, 6, FALSE);
1459   gtk_widget_ref (table6);
1460   gtk_object_set_data_full (GTK_OBJECT (intf_network), "table6", table6,
1461                             (GtkDestroyNotify) gtk_widget_unref);
1462   gtk_widget_show (table6);
1463   gtk_container_add (GTK_CONTAINER (frame14), table6);
1464   gtk_container_set_border_width (GTK_CONTAINER (table6), 9);
1465   gtk_table_set_col_spacings (GTK_TABLE (table6), 6);
1466
1467   network_udp = gtk_radio_button_new_with_label (table6_group, _("UDP"));
1468   table6_group = gtk_radio_button_group (GTK_RADIO_BUTTON (network_udp));
1469   gtk_widget_ref (network_udp);
1470   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_udp", network_udp,
1471                             (GtkDestroyNotify) gtk_widget_unref);
1472   gtk_widget_show (network_udp);
1473   gtk_table_attach (GTK_TABLE (table6), network_udp, 0, 1, 0, 1,
1474                     (GtkAttachOptions) (GTK_FILL),
1475                     (GtkAttachOptions) (0), 0, 0);
1476
1477   network_multicast = gtk_radio_button_new_with_label (table6_group, _("UDP Multicast"));
1478   table6_group = gtk_radio_button_group (GTK_RADIO_BUTTON (network_multicast));
1479   gtk_widget_ref (network_multicast);
1480   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_multicast", network_multicast,
1481                             (GtkDestroyNotify) gtk_widget_unref);
1482   gtk_widget_show (network_multicast);
1483   gtk_table_attach (GTK_TABLE (table6), network_multicast, 0, 1, 1, 2,
1484                     (GtkAttachOptions) (GTK_FILL),
1485                     (GtkAttachOptions) (0), 0, 0);
1486
1487   network_channel = gtk_radio_button_new_with_label (table6_group, _("Channel server "));
1488   table6_group = gtk_radio_button_group (GTK_RADIO_BUTTON (network_channel));
1489   gtk_widget_ref (network_channel);
1490   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_channel", network_channel,
1491                             (GtkDestroyNotify) gtk_widget_unref);
1492   gtk_widget_show (network_channel);
1493   gtk_table_attach (GTK_TABLE (table6), network_channel, 0, 1, 2, 3,
1494                     (GtkAttachOptions) (GTK_FILL),
1495                     (GtkAttachOptions) (0), 0, 0);
1496
1497   network_http = gtk_radio_button_new_with_label (table6_group, _("HTTP"));
1498   table6_group = gtk_radio_button_group (GTK_RADIO_BUTTON (network_http));
1499   gtk_widget_ref (network_http);
1500   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_http", network_http,
1501                             (GtkDestroyNotify) gtk_widget_unref);
1502   gtk_widget_show (network_http);
1503   gtk_table_attach (GTK_TABLE (table6), network_http, 0, 1, 3, 4,
1504                     (GtkAttachOptions) (GTK_FILL),
1505                     (GtkAttachOptions) (0), 0, 0);
1506
1507   network_udp_port_label = gtk_label_new (_("Port"));
1508   gtk_widget_ref (network_udp_port_label);
1509   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_udp_port_label", network_udp_port_label,
1510                             (GtkDestroyNotify) gtk_widget_unref);
1511   gtk_widget_show (network_udp_port_label);
1512   gtk_table_attach (GTK_TABLE (table6), network_udp_port_label, 1, 2, 0, 1,
1513                     (GtkAttachOptions) (GTK_FILL),
1514                     (GtkAttachOptions) (0), 0, 0);
1515   gtk_misc_set_alignment (GTK_MISC (network_udp_port_label), 1, 0.5);
1516
1517   network_multicast_address_label = gtk_label_new (_("Address"));
1518   gtk_widget_ref (network_multicast_address_label);
1519   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_multicast_address_label", network_multicast_address_label,
1520                             (GtkDestroyNotify) gtk_widget_unref);
1521   gtk_widget_show (network_multicast_address_label);
1522   gtk_table_attach (GTK_TABLE (table6), network_multicast_address_label, 1, 2, 1, 2,
1523                     (GtkAttachOptions) (GTK_FILL),
1524                     (GtkAttachOptions) (0), 0, 0);
1525   gtk_widget_set_sensitive (network_multicast_address_label, FALSE);
1526   gtk_label_set_justify (GTK_LABEL (network_multicast_address_label), GTK_JUSTIFY_RIGHT);
1527   gtk_misc_set_alignment (GTK_MISC (network_multicast_address_label), 1, 0.5);
1528
1529   network_channel_address_label = gtk_label_new (_("Address"));
1530   gtk_widget_ref (network_channel_address_label);
1531   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_channel_address_label", network_channel_address_label,
1532                             (GtkDestroyNotify) gtk_widget_unref);
1533   gtk_widget_show (network_channel_address_label);
1534   gtk_table_attach (GTK_TABLE (table6), network_channel_address_label, 1, 2, 2, 3,
1535                     (GtkAttachOptions) (GTK_FILL),
1536                     (GtkAttachOptions) (0), 0, 0);
1537   gtk_widget_set_sensitive (network_channel_address_label, FALSE);
1538
1539   network_http_url_label = gtk_label_new (_("URL"));
1540   gtk_widget_ref (network_http_url_label);
1541   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_http_url_label", network_http_url_label,
1542                             (GtkDestroyNotify) gtk_widget_unref);
1543   gtk_widget_show (network_http_url_label);
1544   gtk_table_attach (GTK_TABLE (table6), network_http_url_label, 1, 2, 3, 4,
1545                     (GtkAttachOptions) (GTK_FILL),
1546                     (GtkAttachOptions) (0), 0, 0);
1547   gtk_widget_set_sensitive (network_http_url_label, FALSE);
1548   gtk_misc_set_alignment (GTK_MISC (network_http_url_label), 1, 0.5);
1549
1550   network_multicast_address_combo = gtk_combo_new ();
1551   gtk_widget_ref (network_multicast_address_combo);
1552   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_multicast_address_combo", network_multicast_address_combo,
1553                             (GtkDestroyNotify) gtk_widget_unref);
1554   gtk_widget_show (network_multicast_address_combo);
1555   gtk_table_attach (GTK_TABLE (table6), network_multicast_address_combo, 2, 4, 1, 2,
1556                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1557                     (GtkAttachOptions) (0), 0, 0);
1558   gtk_widget_set_sensitive (network_multicast_address_combo, FALSE);
1559
1560   network_multicast_address = GTK_COMBO (network_multicast_address_combo)->entry;
1561   gtk_widget_ref (network_multicast_address);
1562   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_multicast_address", network_multicast_address,
1563                             (GtkDestroyNotify) gtk_widget_unref);
1564   gtk_widget_show (network_multicast_address);
1565
1566   network_udp_port_adj = gtk_adjustment_new (1234, 0, 65535, 1, 10, 10);
1567   network_udp_port = gtk_spin_button_new (GTK_ADJUSTMENT (network_udp_port_adj), 1, 0);
1568   gtk_widget_ref (network_udp_port);
1569   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_udp_port", network_udp_port,
1570                             (GtkDestroyNotify) gtk_widget_unref);
1571   gtk_widget_show (network_udp_port);
1572   gtk_table_attach (GTK_TABLE (table6), network_udp_port, 2, 3, 0, 1,
1573                     (GtkAttachOptions) (GTK_FILL),
1574                     (GtkAttachOptions) (0), 0, 0);
1575   gtk_widget_set_usize (network_udp_port, 1, -2);
1576
1577   network_channel_address_combo = gtk_combo_new ();
1578   gtk_widget_ref (network_channel_address_combo);
1579   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_channel_address_combo", network_channel_address_combo,
1580                             (GtkDestroyNotify) gtk_widget_unref);
1581   gtk_widget_show (network_channel_address_combo);
1582   gtk_table_attach (GTK_TABLE (table6), network_channel_address_combo, 2, 4, 2, 3,
1583                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1584                     (GtkAttachOptions) (0), 0, 0);
1585   gtk_widget_set_sensitive (network_channel_address_combo, FALSE);
1586
1587   network_channel_address = GTK_COMBO (network_channel_address_combo)->entry;
1588   gtk_widget_ref (network_channel_address);
1589   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_channel_address", network_channel_address,
1590                             (GtkDestroyNotify) gtk_widget_unref);
1591   gtk_widget_show (network_channel_address);
1592
1593   network_multicast_port_label = gtk_label_new (_("Port"));
1594   gtk_widget_ref (network_multicast_port_label);
1595   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_multicast_port_label", network_multicast_port_label,
1596                             (GtkDestroyNotify) gtk_widget_unref);
1597   gtk_widget_show (network_multicast_port_label);
1598   gtk_table_attach (GTK_TABLE (table6), network_multicast_port_label, 4, 5, 1, 2,
1599                     (GtkAttachOptions) (GTK_FILL),
1600                     (GtkAttachOptions) (0), 0, 0);
1601   gtk_widget_set_usize (network_multicast_port_label, 51, -2);
1602   gtk_widget_set_sensitive (network_multicast_port_label, FALSE);
1603   gtk_misc_set_alignment (GTK_MISC (network_multicast_port_label), 1, 0.5);
1604
1605   network_channel_port_label = gtk_label_new (_("Port"));
1606   gtk_widget_ref (network_channel_port_label);
1607   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_channel_port_label", network_channel_port_label,
1608                             (GtkDestroyNotify) gtk_widget_unref);
1609   gtk_widget_show (network_channel_port_label);
1610   gtk_table_attach (GTK_TABLE (table6), network_channel_port_label, 4, 5, 2, 3,
1611                     (GtkAttachOptions) (GTK_FILL),
1612                     (GtkAttachOptions) (0), 0, 0);
1613   gtk_widget_set_sensitive (network_channel_port_label, FALSE);
1614   gtk_misc_set_alignment (GTK_MISC (network_channel_port_label), 1, 0.5);
1615
1616   network_http_url = gtk_entry_new ();
1617   gtk_widget_ref (network_http_url);
1618   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_http_url", network_http_url,
1619                             (GtkDestroyNotify) gtk_widget_unref);
1620   gtk_widget_show (network_http_url);
1621   gtk_table_attach (GTK_TABLE (table6), network_http_url, 2, 6, 3, 4,
1622                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1623                     (GtkAttachOptions) (0), 0, 0);
1624   gtk_widget_set_sensitive (network_http_url, FALSE);
1625
1626   label42 = gtk_label_new ("");
1627   gtk_widget_ref (label42);
1628   gtk_object_set_data_full (GTK_OBJECT (intf_network), "label42", label42,
1629                             (GtkDestroyNotify) gtk_widget_unref);
1630   gtk_widget_show (label42);
1631   gtk_table_attach (GTK_TABLE (table6), label42, 3, 6, 0, 1,
1632                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1633                     (GtkAttachOptions) (0), 0, 0);
1634   gtk_misc_set_alignment (GTK_MISC (label42), 0, 0.5);
1635
1636   network_multicast_port_adj = gtk_adjustment_new (1234, 0, 65535, 1, 10, 10);
1637   network_multicast_port = gtk_spin_button_new (GTK_ADJUSTMENT (network_multicast_port_adj), 1, 0);
1638   gtk_widget_ref (network_multicast_port);
1639   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_multicast_port", network_multicast_port,
1640                             (GtkDestroyNotify) gtk_widget_unref);
1641   gtk_widget_show (network_multicast_port);
1642   gtk_table_attach (GTK_TABLE (table6), network_multicast_port, 5, 6, 1, 2,
1643                     (GtkAttachOptions) (GTK_FILL),
1644                     (GtkAttachOptions) (0), 0, 0);
1645   gtk_widget_set_usize (network_multicast_port, 75, -2);
1646   gtk_widget_set_sensitive (network_multicast_port, FALSE);
1647
1648   network_channel_port_adj = gtk_adjustment_new (6010, 0, 65535, 1, 10, 10);
1649   network_channel_port = gtk_spin_button_new (GTK_ADJUSTMENT (network_channel_port_adj), 1, 0);
1650   gtk_widget_ref (network_channel_port);
1651   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_channel_port", network_channel_port,
1652                             (GtkDestroyNotify) gtk_widget_unref);
1653   gtk_widget_show (network_channel_port);
1654   gtk_table_attach (GTK_TABLE (table6), network_channel_port, 5, 6, 2, 3,
1655                     (GtkAttachOptions) (GTK_FILL),
1656                     (GtkAttachOptions) (0), 0, 0);
1657   gtk_widget_set_usize (network_channel_port, 75, -2);
1658   gtk_widget_set_sensitive (network_channel_port, FALSE);
1659
1660   hbuttonbox1 = GNOME_DIALOG (intf_network)->action_area;
1661   gtk_object_set_data (GTK_OBJECT (intf_network), "hbuttonbox1", hbuttonbox1);
1662   gtk_widget_show (hbuttonbox1);
1663   gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox1), GTK_BUTTONBOX_END);
1664   gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbuttonbox1), 8);
1665
1666   gnome_dialog_append_button (GNOME_DIALOG (intf_network), GNOME_STOCK_BUTTON_OK);
1667   network_ok = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_network)->buttons)->data);
1668   gtk_widget_ref (network_ok);
1669   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_ok", network_ok,
1670                             (GtkDestroyNotify) gtk_widget_unref);
1671   gtk_widget_show (network_ok);
1672   GTK_WIDGET_SET_FLAGS (network_ok, GTK_CAN_DEFAULT);
1673
1674   gnome_dialog_append_button (GNOME_DIALOG (intf_network), GNOME_STOCK_BUTTON_CANCEL);
1675   network_cancel = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_network)->buttons)->data);
1676   gtk_widget_ref (network_cancel);
1677   gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_cancel", network_cancel,
1678                             (GtkDestroyNotify) gtk_widget_unref);
1679   gtk_widget_show (network_cancel);
1680   GTK_WIDGET_SET_FLAGS (network_cancel, GTK_CAN_DEFAULT);
1681
1682   gtk_signal_connect (GTK_OBJECT (network_udp), "toggled",
1683                       GTK_SIGNAL_FUNC (GtkNetworkOpenUDP),
1684                       "intf_network");
1685   gtk_signal_connect (GTK_OBJECT (network_multicast), "toggled",
1686                       GTK_SIGNAL_FUNC (GtkNetworkOpenMulticast),
1687                       "intf_network");
1688   gtk_signal_connect (GTK_OBJECT (network_channel), "toggled",
1689                       GTK_SIGNAL_FUNC (GtkNetworkOpenChannel),
1690                       "intf_network");
1691   gtk_signal_connect (GTK_OBJECT (network_http), "toggled",
1692                       GTK_SIGNAL_FUNC (GtkNetworkOpenHTTP),
1693                       "intf_network");
1694   gtk_signal_connect (GTK_OBJECT (network_ok), "clicked",
1695                       GTK_SIGNAL_FUNC (GtkNetworkOpenOk),
1696                       "intf_network");
1697   gtk_signal_connect (GTK_OBJECT (network_cancel), "clicked",
1698                       GTK_SIGNAL_FUNC (GtkNetworkOpenCancel),
1699                       "intf_network");
1700
1701   return intf_network;
1702 }
1703
1704 static GnomeUIInfo playlist_add_menu_uiinfo[] =
1705 {
1706   {
1707     GNOME_APP_UI_ITEM, N_("Disc"),
1708     NULL,
1709     (gpointer) GtkDiscOpenShow, "intf_playlist", NULL,
1710     GNOME_APP_PIXMAP_NONE, NULL,
1711     0, (GdkModifierType) 0, NULL
1712   },
1713   {
1714     GNOME_APP_UI_ITEM, N_("File"),
1715     NULL,
1716     (gpointer) GtkFileOpenShow, "intf_playlist", NULL,
1717     GNOME_APP_PIXMAP_NONE, NULL,
1718     0, (GdkModifierType) 0, NULL
1719   },
1720   {
1721     GNOME_APP_UI_ITEM, N_("Network"),
1722     NULL,
1723     (gpointer) GtkNetworkOpenShow, "intf_playlist", NULL,
1724     GNOME_APP_PIXMAP_NONE, NULL,
1725     0, (GdkModifierType) 0, NULL
1726   },
1727   {
1728     GNOME_APP_UI_ITEM, N_("Url"),
1729     NULL,
1730     (gpointer) GtkPlaylistAddUrl, NULL, NULL,
1731     GNOME_APP_PIXMAP_NONE, NULL,
1732     0, (GdkModifierType) 0, NULL
1733   },
1734   GNOMEUIINFO_END
1735 };
1736
1737 static GnomeUIInfo playlist_delete_menu_uiinfo[] =
1738 {
1739   {
1740     GNOME_APP_UI_ITEM, N_("All"),
1741     NULL,
1742     (gpointer) GtkPlaylistDeleteAll, NULL, NULL,
1743     GNOME_APP_PIXMAP_NONE, NULL,
1744     0, (GdkModifierType) 0, NULL
1745   },
1746   {
1747     GNOME_APP_UI_ITEM, N_("Item"),
1748     NULL,
1749     (gpointer) GtkPlaylistDeleteSelected, NULL, NULL,
1750     GNOME_APP_PIXMAP_NONE, NULL,
1751     0, (GdkModifierType) 0, NULL
1752   },
1753   GNOMEUIINFO_END
1754 };
1755
1756 static GnomeUIInfo playlist_selection_menu_uiinfo[] =
1757 {
1758   {
1759     GNOME_APP_UI_ITEM, N_("Crop"),
1760     NULL,
1761     (gpointer) GtkPlaylistCrop, NULL, NULL,
1762     GNOME_APP_PIXMAP_NONE, NULL,
1763     0, (GdkModifierType) 0, NULL
1764   },
1765   {
1766     GNOME_APP_UI_ITEM, N_("Invert"),
1767     NULL,
1768     (gpointer) GtkPlaylistInvert, NULL, NULL,
1769     GNOME_APP_PIXMAP_NONE, NULL,
1770     0, (GdkModifierType) 0, NULL
1771   },
1772   {
1773     GNOME_APP_UI_ITEM, N_("Select"),
1774     NULL,
1775     (gpointer) GtkPlaylistSelect, NULL, NULL,
1776     GNOME_APP_PIXMAP_NONE, NULL,
1777     0, (GdkModifierType) 0, NULL
1778   },
1779   GNOMEUIINFO_END
1780 };
1781
1782 static GnomeUIInfo playlist_menubar_uiinfo[] =
1783 {
1784   {
1785     GNOME_APP_UI_SUBTREE, N_("Add"),
1786     NULL,
1787     playlist_add_menu_uiinfo, NULL, NULL,
1788     GNOME_APP_PIXMAP_NONE, NULL,
1789     0, (GdkModifierType) 0, NULL
1790   },
1791   {
1792     GNOME_APP_UI_SUBTREE, N_("Delete"),
1793     NULL,
1794     playlist_delete_menu_uiinfo, NULL, NULL,
1795     GNOME_APP_PIXMAP_NONE, NULL,
1796     0, (GdkModifierType) 0, NULL
1797   },
1798   {
1799     GNOME_APP_UI_SUBTREE, N_("Selection"),
1800     NULL,
1801     playlist_selection_menu_uiinfo, NULL, NULL,
1802     GNOME_APP_PIXMAP_NONE, NULL,
1803     0, (GdkModifierType) 0, NULL
1804   },
1805   GNOMEUIINFO_END
1806 };
1807
1808 GtkWidget*
1809 create_intf_playlist (void)
1810 {
1811   GtkWidget *intf_playlist;
1812   GtkWidget *playlist_vbox;
1813   GtkWidget *playlist_scrolledwindow;
1814   GtkWidget *playlist_viewport;
1815   GtkWidget *playlist_frame;
1816   GtkWidget *playlist_clist;
1817   GtkWidget *playlist_label_url;
1818   GtkWidget *playlist_label_duration;
1819   GtkWidget *playlist_menubar;
1820   GtkWidget *playlist_action;
1821   GtkWidget *playlist_ok;
1822   GtkWidget *playlist_cancel;
1823
1824   intf_playlist = gnome_dialog_new (_("Playlist"), NULL);
1825   gtk_object_set_data (GTK_OBJECT (intf_playlist), "intf_playlist", intf_playlist);
1826   gtk_window_set_default_size (GTK_WINDOW (intf_playlist), 400, 300);
1827   gtk_window_set_policy (GTK_WINDOW (intf_playlist), TRUE, TRUE, FALSE);
1828
1829   playlist_vbox = GNOME_DIALOG (intf_playlist)->vbox;
1830   gtk_object_set_data (GTK_OBJECT (intf_playlist), "playlist_vbox", playlist_vbox);
1831   gtk_widget_show (playlist_vbox);
1832
1833   playlist_scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
1834   gtk_widget_ref (playlist_scrolledwindow);
1835   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_scrolledwindow", playlist_scrolledwindow,
1836                             (GtkDestroyNotify) gtk_widget_unref);
1837   gtk_widget_show (playlist_scrolledwindow);
1838   gtk_box_pack_start (GTK_BOX (playlist_vbox), playlist_scrolledwindow, TRUE, TRUE, 0);
1839   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (playlist_scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1840
1841   playlist_viewport = gtk_viewport_new (NULL, NULL);
1842   gtk_widget_ref (playlist_viewport);
1843   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_viewport", playlist_viewport,
1844                             (GtkDestroyNotify) gtk_widget_unref);
1845   gtk_widget_show (playlist_viewport);
1846   gtk_container_add (GTK_CONTAINER (playlist_scrolledwindow), playlist_viewport);
1847
1848   playlist_frame = gtk_frame_new (_("Playlist"));
1849   gtk_widget_ref (playlist_frame);
1850   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_frame", playlist_frame,
1851                             (GtkDestroyNotify) gtk_widget_unref);
1852   gtk_widget_show (playlist_frame);
1853   gtk_container_add (GTK_CONTAINER (playlist_viewport), playlist_frame);
1854   gtk_container_set_border_width (GTK_CONTAINER (playlist_frame), 4);
1855   gtk_frame_set_label_align (GTK_FRAME (playlist_frame), 0.05, 0.5);
1856
1857   playlist_clist = gtk_clist_new (2);
1858   gtk_widget_ref (playlist_clist);
1859   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_clist", playlist_clist,
1860                             (GtkDestroyNotify) gtk_widget_unref);
1861   gtk_widget_show (playlist_clist);
1862   gtk_container_add (GTK_CONTAINER (playlist_frame), playlist_clist);
1863   gtk_clist_set_column_width (GTK_CLIST (playlist_clist), 0, 287);
1864   gtk_clist_set_column_width (GTK_CLIST (playlist_clist), 1, 70);
1865   gtk_clist_column_titles_show (GTK_CLIST (playlist_clist));
1866
1867   playlist_label_url = gtk_label_new (_("Url"));
1868   gtk_widget_ref (playlist_label_url);
1869   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_label_url", playlist_label_url,
1870                             (GtkDestroyNotify) gtk_widget_unref);
1871   gtk_widget_show (playlist_label_url);
1872   gtk_clist_set_column_widget (GTK_CLIST (playlist_clist), 0, playlist_label_url);
1873
1874   playlist_label_duration = gtk_label_new (_("Duration"));
1875   gtk_widget_ref (playlist_label_duration);
1876   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_label_duration", playlist_label_duration,
1877                             (GtkDestroyNotify) gtk_widget_unref);
1878   gtk_widget_show (playlist_label_duration);
1879   gtk_clist_set_column_widget (GTK_CLIST (playlist_clist), 1, playlist_label_duration);
1880
1881   playlist_menubar = gtk_menu_bar_new ();
1882   gtk_widget_ref (playlist_menubar);
1883   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_menubar", playlist_menubar,
1884                             (GtkDestroyNotify) gtk_widget_unref);
1885   gtk_widget_show (playlist_menubar);
1886   gtk_box_pack_start (GTK_BOX (playlist_vbox), playlist_menubar, FALSE, FALSE, 0);
1887   gnome_app_fill_menu (GTK_MENU_SHELL (playlist_menubar), playlist_menubar_uiinfo,
1888                        NULL, FALSE, 0);
1889
1890   gtk_widget_ref (playlist_menubar_uiinfo[0].widget);
1891   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_add",
1892                             playlist_menubar_uiinfo[0].widget,
1893                             (GtkDestroyNotify) gtk_widget_unref);
1894
1895   gtk_widget_ref (playlist_add_menu_uiinfo[0].widget);
1896   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_add_disc",
1897                             playlist_add_menu_uiinfo[0].widget,
1898                             (GtkDestroyNotify) gtk_widget_unref);
1899
1900   gtk_widget_ref (playlist_add_menu_uiinfo[1].widget);
1901   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_add_file",
1902                             playlist_add_menu_uiinfo[1].widget,
1903                             (GtkDestroyNotify) gtk_widget_unref);
1904
1905   gtk_widget_ref (playlist_add_menu_uiinfo[2].widget);
1906   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_add_network",
1907                             playlist_add_menu_uiinfo[2].widget,
1908                             (GtkDestroyNotify) gtk_widget_unref);
1909
1910   gtk_widget_ref (playlist_add_menu_uiinfo[3].widget);
1911   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_add_url",
1912                             playlist_add_menu_uiinfo[3].widget,
1913                             (GtkDestroyNotify) gtk_widget_unref);
1914
1915   gtk_widget_ref (playlist_menubar_uiinfo[1].widget);
1916   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_delete",
1917                             playlist_menubar_uiinfo[1].widget,
1918                             (GtkDestroyNotify) gtk_widget_unref);
1919
1920   gtk_widget_ref (playlist_delete_menu_uiinfo[0].widget);
1921   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_delete_all",
1922                             playlist_delete_menu_uiinfo[0].widget,
1923                             (GtkDestroyNotify) gtk_widget_unref);
1924
1925   gtk_widget_ref (playlist_delete_menu_uiinfo[1].widget);
1926   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_delete_item",
1927                             playlist_delete_menu_uiinfo[1].widget,
1928                             (GtkDestroyNotify) gtk_widget_unref);
1929
1930   gtk_widget_ref (playlist_menubar_uiinfo[2].widget);
1931   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_selection",
1932                             playlist_menubar_uiinfo[2].widget,
1933                             (GtkDestroyNotify) gtk_widget_unref);
1934
1935   gtk_widget_ref (playlist_selection_menu_uiinfo[0].widget);
1936   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_selection_crop",
1937                             playlist_selection_menu_uiinfo[0].widget,
1938                             (GtkDestroyNotify) gtk_widget_unref);
1939
1940   gtk_widget_ref (playlist_selection_menu_uiinfo[1].widget);
1941   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_selection_invert",
1942                             playlist_selection_menu_uiinfo[1].widget,
1943                             (GtkDestroyNotify) gtk_widget_unref);
1944
1945   gtk_widget_ref (playlist_selection_menu_uiinfo[2].widget);
1946   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_selection_select",
1947                             playlist_selection_menu_uiinfo[2].widget,
1948                             (GtkDestroyNotify) gtk_widget_unref);
1949
1950   playlist_action = GNOME_DIALOG (intf_playlist)->action_area;
1951   gtk_object_set_data (GTK_OBJECT (intf_playlist), "playlist_action", playlist_action);
1952   gtk_widget_show (playlist_action);
1953   gtk_button_box_set_layout (GTK_BUTTON_BOX (playlist_action), GTK_BUTTONBOX_END);
1954   gtk_button_box_set_spacing (GTK_BUTTON_BOX (playlist_action), 8);
1955   gtk_button_box_set_child_size (GTK_BUTTON_BOX (playlist_action), 100, 38);
1956
1957   gnome_dialog_append_button (GNOME_DIALOG (intf_playlist), GNOME_STOCK_BUTTON_OK);
1958   playlist_ok = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_playlist)->buttons)->data);
1959   gtk_widget_ref (playlist_ok);
1960   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_ok", playlist_ok,
1961                             (GtkDestroyNotify) gtk_widget_unref);
1962   gtk_widget_show (playlist_ok);
1963   GTK_WIDGET_SET_FLAGS (playlist_ok, GTK_CAN_DEFAULT);
1964
1965   gnome_dialog_append_button (GNOME_DIALOG (intf_playlist), GNOME_STOCK_BUTTON_CANCEL);
1966   playlist_cancel = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_playlist)->buttons)->data);
1967   gtk_widget_ref (playlist_cancel);
1968   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_cancel", playlist_cancel,
1969                             (GtkDestroyNotify) gtk_widget_unref);
1970   gtk_widget_show (playlist_cancel);
1971   GTK_WIDGET_SET_FLAGS (playlist_cancel, GTK_CAN_DEFAULT);
1972
1973   gtk_signal_connect (GTK_OBJECT (intf_playlist), "destroy",
1974                       GTK_SIGNAL_FUNC (gtk_widget_hide),
1975                       "intf_playlist");
1976   gtk_signal_connect (GTK_OBJECT (intf_playlist), "delete_event",
1977                       GTK_SIGNAL_FUNC (gtk_widget_hide),
1978                       "intf_playlist");
1979   gtk_signal_connect (GTK_OBJECT (playlist_clist), "event",
1980                       GTK_SIGNAL_FUNC (GtkPlaylistEvent),
1981                       "intf_playlist");
1982   gtk_signal_connect (GTK_OBJECT (playlist_clist), "drag_data_received",
1983                       GTK_SIGNAL_FUNC (GtkPlaylistDragData),
1984                       "intf_playlist");
1985   gtk_signal_connect (GTK_OBJECT (playlist_clist), "drag_motion",
1986                       GTK_SIGNAL_FUNC (GtkPlaylistDragMotion),
1987                       "intf_playlist");
1988   gtk_signal_connect (GTK_OBJECT (playlist_ok), "clicked",
1989                       GTK_SIGNAL_FUNC (GtkPlaylistOk),
1990                       "intf_playlist");
1991   gtk_signal_connect (GTK_OBJECT (playlist_cancel), "clicked",
1992                       GTK_SIGNAL_FUNC (GtkPlaylistCancel),
1993                       "intf_playlist");
1994
1995   return intf_playlist;
1996 }
1997
1998 GtkWidget*
1999 create_intf_jump (void)
2000 {
2001   GtkWidget *intf_jump;
2002   GtkWidget *jump_vbox;
2003   GtkWidget *jump_frame;
2004   GtkWidget *jump_box;
2005   GtkWidget *jump_label3;
2006   GtkObject *jump_second_spinbutton_adj;
2007   GtkWidget *jump_second_spinbutton;
2008   GtkWidget *jump_label1;
2009   GtkObject *jump_minute_spinbutton_adj;
2010   GtkWidget *jump_minute_spinbutton;
2011   GtkWidget *jump_label2;
2012   GtkObject *jump_hour_spinbutton_adj;
2013   GtkWidget *jump_hour_spinbutton;
2014   GtkWidget *jump_action;
2015   GtkWidget *jump_ok;
2016   GtkWidget *jump_cancel;
2017
2018   intf_jump = gnome_dialog_new (NULL, NULL);
2019   gtk_object_set_data (GTK_OBJECT (intf_jump), "intf_jump", intf_jump);
2020   gtk_window_set_policy (GTK_WINDOW (intf_jump), FALSE, FALSE, FALSE);
2021
2022   jump_vbox = GNOME_DIALOG (intf_jump)->vbox;
2023   gtk_object_set_data (GTK_OBJECT (intf_jump), "jump_vbox", jump_vbox);
2024   gtk_widget_show (jump_vbox);
2025
2026   jump_frame = gtk_frame_new (_("Jump to: "));
2027   gtk_widget_ref (jump_frame);
2028   gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_frame", jump_frame,
2029                             (GtkDestroyNotify) gtk_widget_unref);
2030   gtk_widget_show (jump_frame);
2031   gtk_box_pack_start (GTK_BOX (jump_vbox), jump_frame, FALSE, FALSE, 0);
2032   gtk_container_set_border_width (GTK_CONTAINER (jump_frame), 5);
2033   gtk_frame_set_label_align (GTK_FRAME (jump_frame), 0.05, 0.5);
2034
2035   jump_box = gtk_hbox_new (FALSE, 0);
2036   gtk_widget_ref (jump_box);
2037   gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_box", jump_box,
2038                             (GtkDestroyNotify) gtk_widget_unref);
2039   gtk_widget_show (jump_box);
2040   gtk_container_add (GTK_CONTAINER (jump_frame), jump_box);
2041   gtk_container_set_border_width (GTK_CONTAINER (jump_box), 5);
2042
2043   jump_label3 = gtk_label_new (_("s."));
2044   gtk_widget_ref (jump_label3);
2045   gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_label3", jump_label3,
2046                             (GtkDestroyNotify) gtk_widget_unref);
2047   gtk_widget_show (jump_label3);
2048   gtk_box_pack_end (GTK_BOX (jump_box), jump_label3, FALSE, FALSE, 0);
2049
2050   jump_second_spinbutton_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 10);
2051   jump_second_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (jump_second_spinbutton_adj), 1, 0);
2052   gtk_widget_ref (jump_second_spinbutton);
2053   gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_second_spinbutton", jump_second_spinbutton,
2054                             (GtkDestroyNotify) gtk_widget_unref);
2055   gtk_widget_show (jump_second_spinbutton);
2056   gtk_box_pack_end (GTK_BOX (jump_box), jump_second_spinbutton, FALSE, FALSE, 5);
2057
2058   jump_label1 = gtk_label_new (_("m:"));
2059   gtk_widget_ref (jump_label1);
2060   gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_label1", jump_label1,
2061                             (GtkDestroyNotify) gtk_widget_unref);
2062   gtk_widget_show (jump_label1);
2063   gtk_box_pack_end (GTK_BOX (jump_box), jump_label1, FALSE, FALSE, 5);
2064
2065   jump_minute_spinbutton_adj = gtk_adjustment_new (0, 0, 59, 1, 10, 10);
2066   jump_minute_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (jump_minute_spinbutton_adj), 1, 0);
2067   gtk_widget_ref (jump_minute_spinbutton);
2068   gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_minute_spinbutton", jump_minute_spinbutton,
2069                             (GtkDestroyNotify) gtk_widget_unref);
2070   gtk_widget_show (jump_minute_spinbutton);
2071   gtk_box_pack_end (GTK_BOX (jump_box), jump_minute_spinbutton, FALSE, FALSE, 5);
2072
2073   jump_label2 = gtk_label_new (_("h:"));
2074   gtk_widget_ref (jump_label2);
2075   gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_label2", jump_label2,
2076                             (GtkDestroyNotify) gtk_widget_unref);
2077   gtk_widget_show (jump_label2);
2078   gtk_box_pack_end (GTK_BOX (jump_box), jump_label2, FALSE, FALSE, 5);
2079
2080   jump_hour_spinbutton_adj = gtk_adjustment_new (0, 0, 10, 1, 10, 10);
2081   jump_hour_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (jump_hour_spinbutton_adj), 1, 0);
2082   gtk_widget_ref (jump_hour_spinbutton);
2083   gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_hour_spinbutton", jump_hour_spinbutton,
2084                             (GtkDestroyNotify) gtk_widget_unref);
2085   gtk_widget_show (jump_hour_spinbutton);
2086   gtk_box_pack_end (GTK_BOX (jump_box), jump_hour_spinbutton, FALSE, FALSE, 5);
2087
2088   jump_action = GNOME_DIALOG (intf_jump)->action_area;
2089   gtk_object_set_data (GTK_OBJECT (intf_jump), "jump_action", jump_action);
2090   gtk_widget_show (jump_action);
2091   gtk_button_box_set_layout (GTK_BUTTON_BOX (jump_action), GTK_BUTTONBOX_END);
2092   gtk_button_box_set_spacing (GTK_BUTTON_BOX (jump_action), 8);
2093
2094   gnome_dialog_append_button (GNOME_DIALOG (intf_jump), GNOME_STOCK_BUTTON_OK);
2095   jump_ok = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_jump)->buttons)->data);
2096   gtk_widget_ref (jump_ok);
2097   gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_ok", jump_ok,
2098                             (GtkDestroyNotify) gtk_widget_unref);
2099   gtk_widget_show (jump_ok);
2100   GTK_WIDGET_SET_FLAGS (jump_ok, GTK_CAN_DEFAULT);
2101
2102   gnome_dialog_append_button (GNOME_DIALOG (intf_jump), GNOME_STOCK_BUTTON_CANCEL);
2103   jump_cancel = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_jump)->buttons)->data);
2104   gtk_widget_ref (jump_cancel);
2105   gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_cancel", jump_cancel,
2106                             (GtkDestroyNotify) gtk_widget_unref);
2107   gtk_widget_show (jump_cancel);
2108   GTK_WIDGET_SET_FLAGS (jump_cancel, GTK_CAN_DEFAULT);
2109
2110   gtk_signal_connect (GTK_OBJECT (jump_ok), "clicked",
2111                       GTK_SIGNAL_FUNC (GtkJumpOk),
2112                       "intf_jump");
2113   gtk_signal_connect (GTK_OBJECT (jump_cancel), "clicked",
2114                       GTK_SIGNAL_FUNC (GtkJumpCancel),
2115                       "intf_jump");
2116
2117   return intf_jump;
2118 }
2119
2120 GtkWidget*
2121 create_intf_open (void)
2122 {
2123   GtkWidget *intf_open;
2124   GtkWidget *dialog_vbox5;
2125   GtkWidget *tab_open;
2126   GtkWidget *vbox10;
2127   GtkWidget *hbox5;
2128   GtkWidget *frame6;
2129   GtkWidget *vbox11;
2130   GSList *vbox11_group = NULL;
2131   GtkWidget *radiobutton1;
2132   GtkWidget *radiobutton2;
2133   GtkWidget *frame7;
2134   GtkWidget *table3;
2135   GtkWidget *label24;
2136   GtkWidget *label25;
2137   GtkObject *spinbutton5_adj;
2138   GtkWidget *spinbutton5;
2139   GtkObject *spinbutton6_adj;
2140   GtkWidget *spinbutton6;
2141   GtkWidget *hbox6;
2142   GtkWidget *label29;
2143   GtkWidget *entry1;
2144   GtkWidget *tab_disc;
2145   GtkWidget *vbox12;
2146   GtkWidget *hbox7;
2147   GtkWidget *frame8;
2148   GtkWidget *vbox13;
2149   GSList *vbox13_group = NULL;
2150   GtkWidget *radiobutton3;
2151   GtkWidget *radiobutton4;
2152   GtkWidget *radiobutton5;
2153   GtkWidget *frame9;
2154   GtkWidget *vbox14;
2155   GtkWidget *table4;
2156   GtkWidget *label26;
2157   GtkWidget *label27;
2158   GtkWidget *combo1;
2159   GtkWidget *combo_entry1;
2160   GtkObject *spinbutton7_adj;
2161   GtkWidget *spinbutton7;
2162   GtkWidget *frame10;
2163   GtkWidget *hbox8;
2164   GtkWidget *checkbutton2;
2165   GtkWidget *combo3;
2166   GtkWidget *combo_entry3;
2167   GtkWidget *frame11;
2168   GtkWidget *hbox9;
2169   GtkWidget *checkbutton1;
2170   GtkWidget *combo2;
2171   GtkWidget *combo_entry2;
2172   GtkWidget *label28;
2173   GtkObject *spinbutton8_adj;
2174   GtkWidget *spinbutton8;
2175   GtkWidget *tab_network;
2176   GtkWidget *dialog_action_area5;
2177   GtkWidget *button1;
2178   GtkWidget *button3;
2179
2180   intf_open = gnome_dialog_new (_("Open Stream"), NULL);
2181   gtk_object_set_data (GTK_OBJECT (intf_open), "intf_open", intf_open);
2182   gtk_window_set_modal (GTK_WINDOW (intf_open), TRUE);
2183   gtk_window_set_policy (GTK_WINDOW (intf_open), FALSE, FALSE, FALSE);
2184
2185   dialog_vbox5 = GNOME_DIALOG (intf_open)->vbox;
2186   gtk_object_set_data (GTK_OBJECT (intf_open), "dialog_vbox5", dialog_vbox5);
2187   gtk_widget_show (dialog_vbox5);
2188
2189   tab_open = gtk_notebook_new ();
2190   gtk_widget_ref (tab_open);
2191   gtk_object_set_data_full (GTK_OBJECT (intf_open), "tab_open", tab_open,
2192                             (GtkDestroyNotify) gtk_widget_unref);
2193   gtk_widget_show (tab_open);
2194   gtk_box_pack_start (GTK_BOX (dialog_vbox5), tab_open, TRUE, TRUE, 0);
2195
2196   vbox10 = gtk_vbox_new (FALSE, 5);
2197   gtk_widget_ref (vbox10);
2198   gtk_object_set_data_full (GTK_OBJECT (intf_open), "vbox10", vbox10,
2199                             (GtkDestroyNotify) gtk_widget_unref);
2200   gtk_widget_show (vbox10);
2201   gtk_container_add (GTK_CONTAINER (tab_open), vbox10);
2202   gtk_container_set_border_width (GTK_CONTAINER (vbox10), 5);
2203
2204   hbox5 = gtk_hbox_new (FALSE, 5);
2205   gtk_widget_ref (hbox5);
2206   gtk_object_set_data_full (GTK_OBJECT (intf_open), "hbox5", hbox5,
2207                             (GtkDestroyNotify) gtk_widget_unref);
2208   gtk_widget_show (hbox5);
2209   gtk_box_pack_start (GTK_BOX (vbox10), hbox5, TRUE, TRUE, 0);
2210
2211   frame6 = gtk_frame_new (_("Disc type"));
2212   gtk_widget_ref (frame6);
2213   gtk_object_set_data_full (GTK_OBJECT (intf_open), "frame6", frame6,
2214                             (GtkDestroyNotify) gtk_widget_unref);
2215   gtk_widget_show (frame6);
2216   gtk_box_pack_start (GTK_BOX (hbox5), frame6, TRUE, TRUE, 0);
2217
2218   vbox11 = gtk_vbox_new (FALSE, 0);
2219   gtk_widget_ref (vbox11);
2220   gtk_object_set_data_full (GTK_OBJECT (intf_open), "vbox11", vbox11,
2221                             (GtkDestroyNotify) gtk_widget_unref);
2222   gtk_widget_show (vbox11);
2223   gtk_container_add (GTK_CONTAINER (frame6), vbox11);
2224   gtk_container_set_border_width (GTK_CONTAINER (vbox11), 5);
2225
2226   radiobutton1 = gtk_radio_button_new_with_label (vbox11_group, _("DVD"));
2227   vbox11_group = gtk_radio_button_group (GTK_RADIO_BUTTON (radiobutton1));
2228   gtk_widget_ref (radiobutton1);
2229   gtk_object_set_data_full (GTK_OBJECT (intf_open), "radiobutton1", radiobutton1,
2230                             (GtkDestroyNotify) gtk_widget_unref);
2231   gtk_widget_show (radiobutton1);
2232   gtk_box_pack_start (GTK_BOX (vbox11), radiobutton1, FALSE, FALSE, 0);
2233
2234   radiobutton2 = gtk_radio_button_new_with_label (vbox11_group, _("VCD"));
2235   vbox11_group = gtk_radio_button_group (GTK_RADIO_BUTTON (radiobutton2));
2236   gtk_widget_ref (radiobutton2);
2237   gtk_object_set_data_full (GTK_OBJECT (intf_open), "radiobutton2", radiobutton2,
2238                             (GtkDestroyNotify) gtk_widget_unref);
2239   gtk_widget_show (radiobutton2);
2240   gtk_box_pack_start (GTK_BOX (vbox11), radiobutton2, FALSE, FALSE, 0);
2241
2242   frame7 = gtk_frame_new (_("Starting position"));
2243   gtk_widget_ref (frame7);
2244   gtk_object_set_data_full (GTK_OBJECT (intf_open), "frame7", frame7,
2245                             (GtkDestroyNotify) gtk_widget_unref);
2246   gtk_widget_show (frame7);
2247   gtk_box_pack_start (GTK_BOX (hbox5), frame7, TRUE, TRUE, 0);
2248
2249   table3 = gtk_table_new (2, 2, FALSE);
2250   gtk_widget_ref (table3);
2251   gtk_object_set_data_full (GTK_OBJECT (intf_open), "table3", table3,
2252                             (GtkDestroyNotify) gtk_widget_unref);
2253   gtk_widget_show (table3);
2254   gtk_container_add (GTK_CONTAINER (frame7), table3);
2255   gtk_container_set_border_width (GTK_CONTAINER (table3), 5);
2256   gtk_table_set_row_spacings (GTK_TABLE (table3), 5);
2257   gtk_table_set_col_spacings (GTK_TABLE (table3), 5);
2258
2259   label24 = gtk_label_new (_("Title"));
2260   gtk_widget_ref (label24);
2261   gtk_object_set_data_full (GTK_OBJECT (intf_open), "label24", label24,
2262                             (GtkDestroyNotify) gtk_widget_unref);
2263   gtk_widget_show (label24);
2264   gtk_table_attach (GTK_TABLE (table3), label24, 0, 1, 0, 1,
2265                     (GtkAttachOptions) (GTK_FILL),
2266                     (GtkAttachOptions) (0), 0, 0);
2267   gtk_misc_set_alignment (GTK_MISC (label24), 0, 0.5);
2268
2269   label25 = gtk_label_new (_("Chapter"));
2270   gtk_widget_ref (label25);
2271   gtk_object_set_data_full (GTK_OBJECT (intf_open), "label25", label25,
2272                             (GtkDestroyNotify) gtk_widget_unref);
2273   gtk_widget_show (label25);
2274   gtk_table_attach (GTK_TABLE (table3), label25, 0, 1, 1, 2,
2275                     (GtkAttachOptions) (GTK_FILL),
2276                     (GtkAttachOptions) (0), 0, 0);
2277   gtk_misc_set_alignment (GTK_MISC (label25), 0, 0.5);
2278
2279   spinbutton5_adj = gtk_adjustment_new (1, 0, 100, 1, 10, 10);
2280   spinbutton5 = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton5_adj), 1, 0);
2281   gtk_widget_ref (spinbutton5);
2282   gtk_object_set_data_full (GTK_OBJECT (intf_open), "spinbutton5", spinbutton5,
2283                             (GtkDestroyNotify) gtk_widget_unref);
2284   gtk_widget_show (spinbutton5);
2285   gtk_table_attach (GTK_TABLE (table3), spinbutton5, 1, 2, 0, 1,
2286                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
2287                     (GtkAttachOptions) (0), 0, 0);
2288
2289   spinbutton6_adj = gtk_adjustment_new (1, 0, 100, 1, 10, 10);
2290   spinbutton6 = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton6_adj), 1, 0);
2291   gtk_widget_ref (spinbutton6);
2292   gtk_object_set_data_full (GTK_OBJECT (intf_open), "spinbutton6", spinbutton6,
2293                             (GtkDestroyNotify) gtk_widget_unref);
2294   gtk_widget_show (spinbutton6);
2295   gtk_table_attach (GTK_TABLE (table3), spinbutton6, 1, 2, 1, 2,
2296                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
2297                     (GtkAttachOptions) (0), 0, 0);
2298
2299   hbox6 = gtk_hbox_new (FALSE, 5);
2300   gtk_widget_ref (hbox6);
2301   gtk_object_set_data_full (GTK_OBJECT (intf_open), "hbox6", hbox6,
2302                             (GtkDestroyNotify) gtk_widget_unref);
2303   gtk_widget_show (hbox6);
2304   gtk_box_pack_start (GTK_BOX (vbox10), hbox6, TRUE, TRUE, 0);
2305
2306   label29 = gtk_label_new (_("Device name:"));
2307   gtk_widget_ref (label29);
2308   gtk_object_set_data_full (GTK_OBJECT (intf_open), "label29", label29,
2309                             (GtkDestroyNotify) gtk_widget_unref);
2310   gtk_widget_show (label29);
2311   gtk_box_pack_start (GTK_BOX (hbox6), label29, FALSE, FALSE, 0);
2312
2313   entry1 = gtk_entry_new ();
2314   gtk_widget_ref (entry1);
2315   gtk_object_set_data_full (GTK_OBJECT (intf_open), "entry1", entry1,
2316                             (GtkDestroyNotify) gtk_widget_unref);
2317   gtk_widget_show (entry1);
2318   gtk_box_pack_start (GTK_BOX (hbox6), entry1, TRUE, TRUE, 0);
2319   gtk_entry_set_text (GTK_ENTRY (entry1), "/dev/dvd");
2320
2321   tab_disc = gtk_label_new (_("Disc"));
2322   gtk_widget_ref (tab_disc);
2323   gtk_object_set_data_full (GTK_OBJECT (intf_open), "tab_disc", tab_disc,
2324                             (GtkDestroyNotify) gtk_widget_unref);
2325   gtk_widget_show (tab_disc);
2326   gtk_notebook_set_tab_label (GTK_NOTEBOOK (tab_open), gtk_notebook_get_nth_page (GTK_NOTEBOOK (tab_open), 0), tab_disc);
2327
2328   vbox12 = gtk_vbox_new (FALSE, 5);
2329   gtk_widget_ref (vbox12);
2330   gtk_object_set_data_full (GTK_OBJECT (intf_open), "vbox12", vbox12,
2331                             (GtkDestroyNotify) gtk_widget_unref);
2332   gtk_widget_show (vbox12);
2333   gtk_container_add (GTK_CONTAINER (tab_open), vbox12);
2334   gtk_container_set_border_width (GTK_CONTAINER (vbox12), 5);
2335
2336   hbox7 = gtk_hbox_new (FALSE, 5);
2337   gtk_widget_ref (hbox7);
2338   gtk_object_set_data_full (GTK_OBJECT (intf_open), "hbox7", hbox7,
2339                             (GtkDestroyNotify) gtk_widget_unref);
2340   gtk_widget_show (hbox7);
2341   gtk_box_pack_start (GTK_BOX (vbox12), hbox7, TRUE, TRUE, 0);
2342
2343   frame8 = gtk_frame_new (_("Protocol"));
2344   gtk_widget_ref (frame8);
2345   gtk_object_set_data_full (GTK_OBJECT (intf_open), "frame8", frame8,
2346                             (GtkDestroyNotify) gtk_widget_unref);
2347   gtk_widget_show (frame8);
2348   gtk_box_pack_start (GTK_BOX (hbox7), frame8, TRUE, TRUE, 0);
2349
2350   vbox13 = gtk_vbox_new (FALSE, 0);
2351   gtk_widget_ref (vbox13);
2352   gtk_object_set_data_full (GTK_OBJECT (intf_open), "vbox13", vbox13,
2353                             (GtkDestroyNotify) gtk_widget_unref);
2354   gtk_widget_show (vbox13);
2355   gtk_container_add (GTK_CONTAINER (frame8), vbox13);
2356   gtk_container_set_border_width (GTK_CONTAINER (vbox13), 5);
2357
2358   radiobutton3 = gtk_radio_button_new_with_label (vbox13_group, _("UDP stream"));
2359   vbox13_group = gtk_radio_button_group (GTK_RADIO_BUTTON (radiobutton3));
2360   gtk_widget_ref (radiobutton3);
2361   gtk_object_set_data_full (GTK_OBJECT (intf_open), "radiobutton3", radiobutton3,
2362                             (GtkDestroyNotify) gtk_widget_unref);
2363   gtk_widget_show (radiobutton3);
2364   gtk_box_pack_start (GTK_BOX (vbox13), radiobutton3, FALSE, FALSE, 0);
2365
2366   radiobutton4 = gtk_radio_button_new_with_label (vbox13_group, _("HTTP"));
2367   vbox13_group = gtk_radio_button_group (GTK_RADIO_BUTTON (radiobutton4));
2368   gtk_widget_ref (radiobutton4);
2369   gtk_object_set_data_full (GTK_OBJECT (intf_open), "radiobutton4", radiobutton4,
2370                             (GtkDestroyNotify) gtk_widget_unref);
2371   gtk_widget_show (radiobutton4);
2372   gtk_box_pack_start (GTK_BOX (vbox13), radiobutton4, FALSE, FALSE, 0);
2373
2374   radiobutton5 = gtk_radio_button_new_with_label (vbox13_group, _("RTP"));
2375   vbox13_group = gtk_radio_button_group (GTK_RADIO_BUTTON (radiobutton5));
2376   gtk_widget_ref (radiobutton5);
2377   gtk_object_set_data_full (GTK_OBJECT (intf_open), "radiobutton5", radiobutton5,
2378                             (GtkDestroyNotify) gtk_widget_unref);
2379   gtk_widget_show (radiobutton5);
2380   gtk_box_pack_start (GTK_BOX (vbox13), radiobutton5, FALSE, FALSE, 0);
2381
2382   frame9 = gtk_frame_new (_("Server"));
2383   gtk_widget_ref (frame9);
2384   gtk_object_set_data_full (GTK_OBJECT (intf_open), "frame9", frame9,
2385                             (GtkDestroyNotify) gtk_widget_unref);
2386   gtk_widget_show (frame9);
2387   gtk_box_pack_start (GTK_BOX (hbox7), frame9, TRUE, TRUE, 0);
2388
2389   vbox14 = gtk_vbox_new (FALSE, 0);
2390   gtk_widget_ref (vbox14);
2391   gtk_object_set_data_full (GTK_OBJECT (intf_open), "vbox14", vbox14,
2392                             (GtkDestroyNotify) gtk_widget_unref);
2393   gtk_widget_show (vbox14);
2394   gtk_container_add (GTK_CONTAINER (frame9), vbox14);
2395
2396   table4 = gtk_table_new (2, 2, FALSE);
2397   gtk_widget_ref (table4);
2398   gtk_object_set_data_full (GTK_OBJECT (intf_open), "table4", table4,
2399                             (GtkDestroyNotify) gtk_widget_unref);
2400   gtk_widget_show (table4);
2401   gtk_box_pack_start (GTK_BOX (vbox14), table4, TRUE, TRUE, 0);
2402   gtk_container_set_border_width (GTK_CONTAINER (table4), 5);
2403   gtk_table_set_row_spacings (GTK_TABLE (table4), 5);
2404   gtk_table_set_col_spacings (GTK_TABLE (table4), 5);
2405
2406   label26 = gtk_label_new (_("Address"));
2407   gtk_widget_ref (label26);
2408   gtk_object_set_data_full (GTK_OBJECT (intf_open), "label26", label26,
2409                             (GtkDestroyNotify) gtk_widget_unref);
2410   gtk_widget_show (label26);
2411   gtk_table_attach (GTK_TABLE (table4), label26, 0, 1, 0, 1,
2412                     (GtkAttachOptions) (GTK_FILL),
2413                     (GtkAttachOptions) (0), 0, 0);
2414   gtk_misc_set_alignment (GTK_MISC (label26), 0, 0.5);
2415
2416   label27 = gtk_label_new (_("Port"));
2417   gtk_widget_ref (label27);
2418   gtk_object_set_data_full (GTK_OBJECT (intf_open), "label27", label27,
2419                             (GtkDestroyNotify) gtk_widget_unref);
2420   gtk_widget_show (label27);
2421   gtk_table_attach (GTK_TABLE (table4), label27, 0, 1, 1, 2,
2422                     (GtkAttachOptions) (GTK_FILL),
2423                     (GtkAttachOptions) (0), 0, 0);
2424   gtk_misc_set_alignment (GTK_MISC (label27), 0, 0.5);
2425
2426   combo1 = gtk_combo_new ();
2427   gtk_widget_ref (combo1);
2428   gtk_object_set_data_full (GTK_OBJECT (intf_open), "combo1", combo1,
2429                             (GtkDestroyNotify) gtk_widget_unref);
2430   gtk_widget_show (combo1);
2431   gtk_table_attach (GTK_TABLE (table4), combo1, 1, 2, 0, 1,
2432                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
2433                     (GtkAttachOptions) (0), 0, 0);
2434
2435   combo_entry1 = GTK_COMBO (combo1)->entry;
2436   gtk_widget_ref (combo_entry1);
2437   gtk_object_set_data_full (GTK_OBJECT (intf_open), "combo_entry1", combo_entry1,
2438                             (GtkDestroyNotify) gtk_widget_unref);
2439   gtk_widget_show (combo_entry1);
2440
2441   spinbutton7_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 10);
2442   spinbutton7 = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton7_adj), 1, 0);
2443   gtk_widget_ref (spinbutton7);
2444   gtk_object_set_data_full (GTK_OBJECT (intf_open), "spinbutton7", spinbutton7,
2445                             (GtkDestroyNotify) gtk_widget_unref);
2446   gtk_widget_show (spinbutton7);
2447   gtk_table_attach (GTK_TABLE (table4), spinbutton7, 1, 2, 1, 2,
2448                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
2449                     (GtkAttachOptions) (0), 0, 0);
2450
2451   frame10 = gtk_frame_new (_("Broadcast"));
2452   gtk_widget_ref (frame10);
2453   gtk_object_set_data_full (GTK_OBJECT (intf_open), "frame10", frame10,
2454                             (GtkDestroyNotify) gtk_widget_unref);
2455   gtk_widget_show (frame10);
2456   gtk_box_pack_start (GTK_BOX (vbox12), frame10, TRUE, TRUE, 0);
2457
2458   hbox8 = gtk_hbox_new (FALSE, 5);
2459   gtk_widget_ref (hbox8);
2460   gtk_object_set_data_full (GTK_OBJECT (intf_open), "hbox8", hbox8,
2461                             (GtkDestroyNotify) gtk_widget_unref);
2462   gtk_widget_show (hbox8);
2463   gtk_container_add (GTK_CONTAINER (frame10), hbox8);
2464   gtk_container_set_border_width (GTK_CONTAINER (hbox8), 5);
2465
2466   checkbutton2 = gtk_check_button_new_with_label (_("Broadcast"));
2467   gtk_widget_ref (checkbutton2);
2468   gtk_object_set_data_full (GTK_OBJECT (intf_open), "checkbutton2", checkbutton2,
2469                             (GtkDestroyNotify) gtk_widget_unref);
2470   gtk_widget_show (checkbutton2);
2471   gtk_box_pack_start (GTK_BOX (hbox8), checkbutton2, FALSE, FALSE, 0);
2472
2473   combo3 = gtk_combo_new ();
2474   gtk_widget_ref (combo3);
2475   gtk_object_set_data_full (GTK_OBJECT (intf_open), "combo3", combo3,
2476                             (GtkDestroyNotify) gtk_widget_unref);
2477   gtk_widget_show (combo3);
2478   gtk_box_pack_start (GTK_BOX (hbox8), combo3, TRUE, TRUE, 0);
2479
2480   combo_entry3 = GTK_COMBO (combo3)->entry;
2481   gtk_widget_ref (combo_entry3);
2482   gtk_object_set_data_full (GTK_OBJECT (intf_open), "combo_entry3", combo_entry3,
2483                             (GtkDestroyNotify) gtk_widget_unref);
2484   gtk_widget_show (combo_entry3);
2485
2486   frame11 = gtk_frame_new (_("Channels"));
2487   gtk_widget_ref (frame11);
2488   gtk_object_set_data_full (GTK_OBJECT (intf_open), "frame11", frame11,
2489                             (GtkDestroyNotify) gtk_widget_unref);
2490   gtk_widget_show (frame11);
2491   gtk_box_pack_start (GTK_BOX (vbox12), frame11, TRUE, TRUE, 0);
2492
2493   hbox9 = gtk_hbox_new (FALSE, 5);
2494   gtk_widget_ref (hbox9);
2495   gtk_object_set_data_full (GTK_OBJECT (intf_open), "hbox9", hbox9,
2496                             (GtkDestroyNotify) gtk_widget_unref);
2497   gtk_widget_show (hbox9);
2498   gtk_container_add (GTK_CONTAINER (frame11), hbox9);
2499   gtk_container_set_border_width (GTK_CONTAINER (hbox9), 5);
2500
2501   checkbutton1 = gtk_check_button_new_with_label (_("Channel server"));
2502   gtk_widget_ref (checkbutton1);
2503   gtk_object_set_data_full (GTK_OBJECT (intf_open), "checkbutton1", checkbutton1,
2504                             (GtkDestroyNotify) gtk_widget_unref);
2505   gtk_widget_show (checkbutton1);
2506   gtk_box_pack_start (GTK_BOX (hbox9), checkbutton1, FALSE, FALSE, 0);
2507
2508   combo2 = gtk_combo_new ();
2509   gtk_widget_ref (combo2);
2510   gtk_object_set_data_full (GTK_OBJECT (intf_open), "combo2", combo2,
2511                             (GtkDestroyNotify) gtk_widget_unref);
2512   gtk_widget_show (combo2);
2513   gtk_box_pack_start (GTK_BOX (hbox9), combo2, TRUE, TRUE, 0);
2514
2515   combo_entry2 = GTK_COMBO (combo2)->entry;
2516   gtk_widget_ref (combo_entry2);
2517   gtk_object_set_data_full (GTK_OBJECT (intf_open), "combo_entry2", combo_entry2,
2518                             (GtkDestroyNotify) gtk_widget_unref);
2519   gtk_widget_show (combo_entry2);
2520
2521   label28 = gtk_label_new (_("Port"));
2522   gtk_widget_ref (label28);
2523   gtk_object_set_data_full (GTK_OBJECT (intf_open), "label28", label28,
2524                             (GtkDestroyNotify) gtk_widget_unref);
2525   gtk_widget_show (label28);
2526   gtk_box_pack_start (GTK_BOX (hbox9), label28, FALSE, FALSE, 0);
2527
2528   spinbutton8_adj = gtk_adjustment_new (1, 0, 100, 1, 10, 10);
2529   spinbutton8 = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton8_adj), 1, 0);
2530   gtk_widget_ref (spinbutton8);
2531   gtk_object_set_data_full (GTK_OBJECT (intf_open), "spinbutton8", spinbutton8,
2532                             (GtkDestroyNotify) gtk_widget_unref);
2533   gtk_widget_show (spinbutton8);
2534   gtk_box_pack_start (GTK_BOX (hbox9), spinbutton8, TRUE, TRUE, 0);
2535
2536   tab_network = gtk_label_new (_("Network"));
2537   gtk_widget_ref (tab_network);
2538   gtk_object_set_data_full (GTK_OBJECT (intf_open), "tab_network", tab_network,
2539                             (GtkDestroyNotify) gtk_widget_unref);
2540   gtk_widget_show (tab_network);
2541   gtk_notebook_set_tab_label (GTK_NOTEBOOK (tab_open), gtk_notebook_get_nth_page (GTK_NOTEBOOK (tab_open), 1), tab_network);
2542
2543   dialog_action_area5 = GNOME_DIALOG (intf_open)->action_area;
2544   gtk_object_set_data (GTK_OBJECT (intf_open), "dialog_action_area5", dialog_action_area5);
2545   gtk_widget_show (dialog_action_area5);
2546   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area5), GTK_BUTTONBOX_END);
2547   gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog_action_area5), 8);
2548
2549   gnome_dialog_append_button (GNOME_DIALOG (intf_open), GNOME_STOCK_BUTTON_OK);
2550   button1 = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_open)->buttons)->data);
2551   gtk_widget_ref (button1);
2552   gtk_object_set_data_full (GTK_OBJECT (intf_open), "button1", button1,
2553                             (GtkDestroyNotify) gtk_widget_unref);
2554   gtk_widget_show (button1);
2555   GTK_WIDGET_SET_FLAGS (button1, GTK_CAN_DEFAULT);
2556
2557   gnome_dialog_append_button (GNOME_DIALOG (intf_open), GNOME_STOCK_BUTTON_CANCEL);
2558   button3 = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_open)->buttons)->data);
2559   gtk_widget_ref (button3);
2560   gtk_object_set_data_full (GTK_OBJECT (intf_open), "button3", button3,
2561                             (GtkDestroyNotify) gtk_widget_unref);
2562   gtk_widget_show (button3);
2563   GTK_WIDGET_SET_FLAGS (button3, GTK_CAN_DEFAULT);
2564
2565   return intf_open;
2566 }
2567
2568 GtkWidget*
2569 create_intf_messages (void)
2570 {
2571   GtkWidget *intf_messages;
2572   GtkWidget *dialog_vbox6;
2573   GtkWidget *scrolledwindow1;
2574   GtkWidget *messages_textbox;
2575   GtkWidget *dialog_action_area6;
2576   GtkWidget *messages_ok;
2577
2578   intf_messages = gnome_dialog_new (_("Messages"), NULL);
2579   gtk_object_set_data (GTK_OBJECT (intf_messages), "intf_messages", intf_messages);
2580   gtk_window_set_policy (GTK_WINDOW (intf_messages), TRUE, TRUE, FALSE);
2581   gnome_dialog_close_hides (GNOME_DIALOG (intf_messages), TRUE);
2582
2583   dialog_vbox6 = GNOME_DIALOG (intf_messages)->vbox;
2584   gtk_object_set_data (GTK_OBJECT (intf_messages), "dialog_vbox6", dialog_vbox6);
2585   gtk_widget_show (dialog_vbox6);
2586
2587   scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
2588   gtk_widget_ref (scrolledwindow1);
2589   gtk_object_set_data_full (GTK_OBJECT (intf_messages), "scrolledwindow1", scrolledwindow1,
2590                             (GtkDestroyNotify) gtk_widget_unref);
2591   gtk_widget_show (scrolledwindow1);
2592   gtk_box_pack_start (GTK_BOX (dialog_vbox6), scrolledwindow1, TRUE, TRUE, 0);
2593   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
2594
2595   messages_textbox = gtk_text_new (NULL, NULL);
2596   gtk_widget_ref (messages_textbox);
2597   gtk_object_set_data_full (GTK_OBJECT (intf_messages), "messages_textbox", messages_textbox,
2598                             (GtkDestroyNotify) gtk_widget_unref);
2599   gtk_widget_show (messages_textbox);
2600   gtk_container_add (GTK_CONTAINER (scrolledwindow1), messages_textbox);
2601   gtk_widget_set_usize (messages_textbox, 600, 400);
2602
2603   dialog_action_area6 = GNOME_DIALOG (intf_messages)->action_area;
2604   gtk_object_set_data (GTK_OBJECT (intf_messages), "dialog_action_area6", dialog_action_area6);
2605   gtk_widget_show (dialog_action_area6);
2606   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area6), GTK_BUTTONBOX_END);
2607   gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog_action_area6), 8);
2608
2609   gnome_dialog_append_button (GNOME_DIALOG (intf_messages), GNOME_STOCK_BUTTON_OK);
2610   messages_ok = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_messages)->buttons)->data);
2611   gtk_widget_ref (messages_ok);
2612   gtk_object_set_data_full (GTK_OBJECT (intf_messages), "messages_ok", messages_ok,
2613                             (GtkDestroyNotify) gtk_widget_unref);
2614   gtk_widget_show (messages_ok);
2615   GTK_WIDGET_SET_FLAGS (messages_ok, GTK_CAN_DEFAULT);
2616
2617   gtk_signal_connect (GTK_OBJECT (intf_messages), "destroy",
2618                       GTK_SIGNAL_FUNC (gtk_widget_hide),
2619                       "intf_playlist");
2620   gtk_signal_connect (GTK_OBJECT (intf_messages), "delete_event",
2621                       GTK_SIGNAL_FUNC (gtk_widget_hide),
2622                       "intf_playlist");
2623   gtk_signal_connect (GTK_OBJECT (messages_ok), "clicked",
2624                       GTK_SIGNAL_FUNC (GtkMessagesOk),
2625                       "intf_messages");
2626
2627   return intf_messages;
2628 }
2629
2630 GtkWidget*
2631 create_intf_sat (void)
2632 {
2633   GtkWidget *intf_sat;
2634   GtkWidget *vbox15;
2635   GtkWidget *hbox10;
2636   GtkWidget *frame13;
2637   GtkWidget *table5;
2638   GtkWidget *label30;
2639   GtkObject *sat_freq_adj;
2640   GtkWidget *sat_freq;
2641   GtkWidget *label31;
2642   GSList *pol_group = NULL;
2643   GtkWidget *sat_pol_hor;
2644   GtkWidget *sat_pol_vert;
2645   GtkWidget *label33;
2646   GtkObject *sat_srate_adj;
2647   GtkWidget *sat_srate;
2648   GtkWidget *label35;
2649   GtkWidget *sat_fec;
2650   GList *sat_fec_items = NULL;
2651   GtkWidget *combo_entry4;
2652   GtkWidget *hbuttonbox2;
2653   GtkWidget *sat_ok;
2654   GtkWidget *sat_cancel;
2655
2656   intf_sat = gnome_dialog_new (_("Open Satellite Card"), NULL);
2657   gtk_object_set_data (GTK_OBJECT (intf_sat), "intf_sat", intf_sat);
2658   gtk_window_set_modal (GTK_WINDOW (intf_sat), TRUE);
2659   gtk_window_set_policy (GTK_WINDOW (intf_sat), FALSE, FALSE, FALSE);
2660
2661   vbox15 = GNOME_DIALOG (intf_sat)->vbox;
2662   gtk_object_set_data (GTK_OBJECT (intf_sat), "vbox15", vbox15);
2663   gtk_widget_show (vbox15);
2664
2665   hbox10 = gtk_hbox_new (FALSE, 5);
2666   gtk_widget_ref (hbox10);
2667   gtk_object_set_data_full (GTK_OBJECT (intf_sat), "hbox10", hbox10,
2668                             (GtkDestroyNotify) gtk_widget_unref);
2669   gtk_widget_show (hbox10);
2670   gtk_box_pack_start (GTK_BOX (vbox15), hbox10, TRUE, TRUE, 0);
2671
2672   frame13 = gtk_frame_new (_("Transponder settings"));
2673   gtk_widget_ref (frame13);
2674   gtk_object_set_data_full (GTK_OBJECT (intf_sat), "frame13", frame13,
2675                             (GtkDestroyNotify) gtk_widget_unref);
2676   gtk_widget_show (frame13);
2677   gtk_box_pack_start (GTK_BOX (hbox10), frame13, TRUE, TRUE, 0);
2678
2679   table5 = gtk_table_new (5, 2, FALSE);
2680   gtk_widget_ref (table5);
2681   gtk_object_set_data_full (GTK_OBJECT (intf_sat), "table5", table5,
2682                             (GtkDestroyNotify) gtk_widget_unref);
2683   gtk_widget_show (table5);
2684   gtk_container_add (GTK_CONTAINER (frame13), table5);
2685   gtk_container_set_border_width (GTK_CONTAINER (table5), 5);
2686   gtk_table_set_row_spacings (GTK_TABLE (table5), 5);
2687   gtk_table_set_col_spacings (GTK_TABLE (table5), 5);
2688
2689   label30 = gtk_label_new (_("Frequency"));
2690   gtk_widget_ref (label30);
2691   gtk_object_set_data_full (GTK_OBJECT (intf_sat), "label30", label30,
2692                             (GtkDestroyNotify) gtk_widget_unref);
2693   gtk_widget_show (label30);
2694   gtk_table_attach (GTK_TABLE (table5), label30, 0, 1, 0, 1,
2695                     (GtkAttachOptions) (GTK_FILL),
2696                     (GtkAttachOptions) (0), 0, 0);
2697   gtk_misc_set_alignment (GTK_MISC (label30), 0, 0.5);
2698
2699   sat_freq_adj = gtk_adjustment_new (11954, 10000, 12999, 1, 10, 10);
2700   sat_freq = gtk_spin_button_new (GTK_ADJUSTMENT (sat_freq_adj), 1, 0);
2701   gtk_widget_ref (sat_freq);
2702   gtk_object_set_data_full (GTK_OBJECT (intf_sat), "sat_freq", sat_freq,
2703                             (GtkDestroyNotify) gtk_widget_unref);
2704   gtk_widget_show (sat_freq);
2705   gtk_table_attach (GTK_TABLE (table5), sat_freq, 1, 2, 0, 1,
2706                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
2707                     (GtkAttachOptions) (0), 0, 0);
2708
2709   label31 = gtk_label_new (_("Polarization"));
2710   gtk_widget_ref (label31);
2711   gtk_object_set_data_full (GTK_OBJECT (intf_sat), "label31", label31,
2712                             (GtkDestroyNotify) gtk_widget_unref);
2713   gtk_widget_show (label31);
2714   gtk_table_attach (GTK_TABLE (table5), label31, 0, 1, 2, 3,
2715                     (GtkAttachOptions) (GTK_FILL),
2716                     (GtkAttachOptions) (0), 0, 0);
2717   gtk_misc_set_alignment (GTK_MISC (label31), 0, 0.5);
2718
2719   sat_pol_hor = gtk_radio_button_new_with_label (pol_group, _("Horizontal"));
2720   pol_group = gtk_radio_button_group (GTK_RADIO_BUTTON (sat_pol_hor));
2721   gtk_widget_ref (sat_pol_hor);
2722   gtk_object_set_data_full (GTK_OBJECT (intf_sat), "sat_pol_hor", sat_pol_hor,
2723                             (GtkDestroyNotify) gtk_widget_unref);
2724   gtk_widget_show (sat_pol_hor);
2725   gtk_table_attach (GTK_TABLE (table5), sat_pol_hor, 1, 2, 3, 4,
2726                     (GtkAttachOptions) (GTK_FILL),
2727                     (GtkAttachOptions) (0), 0, 0);
2728
2729   sat_pol_vert = gtk_radio_button_new_with_label (pol_group, _("Vertical"));
2730   pol_group = gtk_radio_button_group (GTK_RADIO_BUTTON (sat_pol_vert));
2731   gtk_widget_ref (sat_pol_vert);
2732   gtk_object_set_data_full (GTK_OBJECT (intf_sat), "sat_pol_vert", sat_pol_vert,
2733                             (GtkDestroyNotify) gtk_widget_unref);
2734   gtk_widget_show (sat_pol_vert);
2735   gtk_table_attach (GTK_TABLE (table5), sat_pol_vert, 1, 2, 2, 3,
2736                     (GtkAttachOptions) (GTK_FILL),
2737                     (GtkAttachOptions) (0), 0, 0);
2738   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sat_pol_vert), TRUE);
2739
2740   label33 = gtk_label_new (_("Symbol Rate"));
2741   gtk_widget_ref (label33);
2742   gtk_object_set_data_full (GTK_OBJECT (intf_sat), "label33", label33,
2743                             (GtkDestroyNotify) gtk_widget_unref);
2744   gtk_widget_show (label33);
2745   gtk_table_attach (GTK_TABLE (table5), label33, 0, 1, 1, 2,
2746                     (GtkAttachOptions) (GTK_FILL),
2747                     (GtkAttachOptions) (0), 0, 0);
2748   gtk_misc_set_alignment (GTK_MISC (label33), 0, 0.5);
2749
2750   sat_srate_adj = gtk_adjustment_new (27500, 1000, 30000, 1, 10, 10);
2751   sat_srate = gtk_spin_button_new (GTK_ADJUSTMENT (sat_srate_adj), 1, 0);
2752   gtk_widget_ref (sat_srate);
2753   gtk_object_set_data_full (GTK_OBJECT (intf_sat), "sat_srate", sat_srate,
2754                             (GtkDestroyNotify) gtk_widget_unref);
2755   gtk_widget_show (sat_srate);
2756   gtk_table_attach (GTK_TABLE (table5), sat_srate, 1, 2, 1, 2,
2757                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
2758                     (GtkAttachOptions) (0), 0, 0);
2759
2760   label35 = gtk_label_new (_("FEC"));
2761   gtk_widget_ref (label35);
2762   gtk_object_set_data_full (GTK_OBJECT (intf_sat), "label35", label35,
2763                             (GtkDestroyNotify) gtk_widget_unref);
2764   gtk_widget_show (label35);
2765   gtk_table_attach (GTK_TABLE (table5), label35, 0, 1, 4, 5,
2766                     (GtkAttachOptions) (GTK_FILL),
2767                     (GtkAttachOptions) (0), 0, 0);
2768   gtk_misc_set_alignment (GTK_MISC (label35), 0, 0.5);
2769
2770   sat_fec = gtk_combo_new ();
2771   gtk_widget_ref (sat_fec);
2772   gtk_object_set_data_full (GTK_OBJECT (intf_sat), "sat_fec", sat_fec,
2773                             (GtkDestroyNotify) gtk_widget_unref);
2774   gtk_widget_show (sat_fec);
2775   gtk_table_attach (GTK_TABLE (table5), sat_fec, 1, 2, 4, 5,
2776                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
2777                     (GtkAttachOptions) (0), 0, 0);
2778   sat_fec_items = g_list_append (sat_fec_items, (gpointer) "1/2");
2779   sat_fec_items = g_list_append (sat_fec_items, (gpointer) "2/3");
2780   sat_fec_items = g_list_append (sat_fec_items, (gpointer) "3/4");
2781   sat_fec_items = g_list_append (sat_fec_items, (gpointer) "4/5");
2782   sat_fec_items = g_list_append (sat_fec_items, (gpointer) "5/6");
2783   sat_fec_items = g_list_append (sat_fec_items, (gpointer) "6/7");
2784   sat_fec_items = g_list_append (sat_fec_items, (gpointer) "7/8");
2785   gtk_combo_set_popdown_strings (GTK_COMBO (sat_fec), sat_fec_items);
2786   g_list_free (sat_fec_items);
2787
2788   combo_entry4 = GTK_COMBO (sat_fec)->entry;
2789   gtk_widget_ref (combo_entry4);
2790   gtk_object_set_data_full (GTK_OBJECT (intf_sat), "combo_entry4", combo_entry4,
2791                             (GtkDestroyNotify) gtk_widget_unref);
2792   gtk_widget_show (combo_entry4);
2793   gtk_entry_set_text (GTK_ENTRY (combo_entry4), "3/4");
2794
2795   hbuttonbox2 = GNOME_DIALOG (intf_sat)->action_area;
2796   gtk_object_set_data (GTK_OBJECT (intf_sat), "hbuttonbox2", hbuttonbox2);
2797   gtk_widget_show (hbuttonbox2);
2798   gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox2), GTK_BUTTONBOX_END);
2799   gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbuttonbox2), 8);
2800
2801   gnome_dialog_append_button (GNOME_DIALOG (intf_sat), GNOME_STOCK_BUTTON_OK);
2802   sat_ok = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_sat)->buttons)->data);
2803   gtk_widget_ref (sat_ok);
2804   gtk_object_set_data_full (GTK_OBJECT (intf_sat), "sat_ok", sat_ok,
2805                             (GtkDestroyNotify) gtk_widget_unref);
2806   gtk_widget_show (sat_ok);
2807   GTK_WIDGET_SET_FLAGS (sat_ok, GTK_CAN_DEFAULT);
2808
2809   gnome_dialog_append_button (GNOME_DIALOG (intf_sat), GNOME_STOCK_BUTTON_CANCEL);
2810   sat_cancel = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_sat)->buttons)->data);
2811   gtk_widget_ref (sat_cancel);
2812   gtk_object_set_data_full (GTK_OBJECT (intf_sat), "sat_cancel", sat_cancel,
2813                             (GtkDestroyNotify) gtk_widget_unref);
2814   gtk_widget_show (sat_cancel);
2815   GTK_WIDGET_SET_FLAGS (sat_cancel, GTK_CAN_DEFAULT);
2816
2817   gtk_signal_connect (GTK_OBJECT (sat_ok), "clicked",
2818                       GTK_SIGNAL_FUNC (GtkSatOpenOk),
2819                       "intf_disc");
2820   gtk_signal_connect (GTK_OBJECT (sat_cancel), "clicked",
2821                       GTK_SIGNAL_FUNC (GtkSatOpenCancel),
2822                       "intf_disc");
2823
2824   return intf_sat;
2825 }
2826