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