]> git.sesse.net Git - vlc/blobdiff - plugins/gtk/gtk_interface.c
* Bug fixes and enhancements in the Gtk+/Gnome interfaces.
[vlc] / plugins / gtk / gtk_interface.c
index 0578b946a0cbf8be8581a12c5ba03426da5aeec8..1326ad705a37d69993dce58dcdb71cf524755a71 100644 (file)
@@ -31,16 +31,24 @@ create_intf_window (void)
   GtkAccelGroup *menubar_file_menu_accels;
   GtkWidget *menubar_open;
   GtkWidget *menubar_disc;
+  GtkWidget *menubar_network;
   GtkWidget *separator4;
   GtkWidget *menubar_exit;
   GtkWidget *menubar_view;
   GtkWidget *menubar_view_menu;
   GtkAccelGroup *menubar_view_menu_accels;
+  GtkWidget *menubar_title;
+  GtkWidget *menubar_chapter;
+  GtkWidget *separator11;
   GtkWidget *menubar_playlist;
   GtkWidget *menubar_modules;
   GtkWidget *menubar_settings;
   GtkWidget *menubar_settings_menu;
   GtkAccelGroup *menubar_settings_menu_accels;
+  GtkWidget *separator7;
+  GtkWidget *menubar_audio;
+  GtkWidget *menubar_subpictures;
+  GtkWidget *separator8;
   GtkWidget *menubar_preferences;
   GtkWidget *menubar_help;
   GtkWidget *menubar_help_menu;
@@ -50,6 +58,7 @@ create_intf_window (void)
   GtkWidget *toolbar;
   GtkWidget *toolbar_open;
   GtkWidget *toolbar_disc;
+  GtkWidget *toolbar_network;
   GtkWidget *toolbar_back;
   GtkWidget *toolbar_stop;
   GtkWidget *toolbar_play;
@@ -59,11 +68,12 @@ create_intf_window (void)
   GtkWidget *toolbar_playlist;
   GtkWidget *toolbar_prev;
   GtkWidget *toolbar_next;
-  GtkWidget *entry1;
-  GtkWidget *label6;
-  GtkWidget *hscale;
-  GtkWidget *label13;
-  GtkWidget *statusbar1;
+  GtkWidget *hbox7;
+  GtkWidget *label_date;
+  GtkWidget *label_status;
+  GtkWidget *label_bar;
+  GtkWidget *slider;
+  GtkWidget *intf_statusbar;
   GtkAccelGroup *accel_group;
   GtkTooltips *tooltips;
 
@@ -116,7 +126,7 @@ create_intf_window (void)
 
   menubar_open = gtk_menu_item_new_with_label ("");
   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menubar_open)->child),
-                                   _("_Open..."));
+                                   _("_Open File..."));
   gtk_widget_add_accelerator (menubar_open, "activate_item", menubar_file_menu_accels,
                               tmp_key, 0, 0);
   gtk_widget_ref (menubar_open);
@@ -124,14 +134,14 @@ create_intf_window (void)
                             (GtkDestroyNotify) gtk_widget_unref);
   gtk_widget_show (menubar_open);
   gtk_container_add (GTK_CONTAINER (menubar_file_menu), menubar_open);
-  gtk_tooltips_set_tip (tooltips, menubar_open, _("Open a file"), NULL);
+  gtk_tooltips_set_tip (tooltips, menubar_open, _("Open a File"), NULL);
   gtk_widget_add_accelerator (menubar_open, "activate", accel_group,
                               GDK_F3, 0,
                               GTK_ACCEL_VISIBLE);
 
   menubar_disc = gtk_menu_item_new_with_label ("");
   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menubar_disc)->child),
-                                   _("Open _disc..."));
+                                   _("Open _Disc..."));
   gtk_widget_add_accelerator (menubar_disc, "activate_item", menubar_file_menu_accels,
                               tmp_key, 0, 0);
   gtk_widget_ref (menubar_disc);
@@ -140,6 +150,24 @@ create_intf_window (void)
   gtk_widget_show (menubar_disc);
   gtk_container_add (GTK_CONTAINER (menubar_file_menu), menubar_disc);
   gtk_tooltips_set_tip (tooltips, menubar_disc, _("Open a DVD or VCD"), NULL);
+  gtk_widget_add_accelerator (menubar_disc, "activate", accel_group,
+                              GDK_F4, 0,
+                              GTK_ACCEL_VISIBLE);
+
+  menubar_network = gtk_menu_item_new_with_label ("");
+  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menubar_network)->child),
+                                   _("_Network Stream..."));
+  gtk_widget_add_accelerator (menubar_network, "activate_item", menubar_file_menu_accels,
+                              tmp_key, 0, 0);
+  gtk_widget_ref (menubar_network);
+  gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_network", menubar_network,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (menubar_network);
+  gtk_container_add (GTK_CONTAINER (menubar_file_menu), menubar_network);
+  gtk_tooltips_set_tip (tooltips, menubar_network, _("Select a Network Stream"), NULL);
+  gtk_widget_add_accelerator (menubar_network, "activate", accel_group,
+                              GDK_F5, 0,
+                              GTK_ACCEL_VISIBLE);
 
   separator4 = gtk_menu_item_new ();
   gtk_widget_ref (separator4);
@@ -182,6 +210,39 @@ create_intf_window (void)
   gtk_menu_item_set_submenu (GTK_MENU_ITEM (menubar_view), menubar_view_menu);
   menubar_view_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (menubar_view_menu));
 
+  menubar_title = gtk_menu_item_new_with_label ("");
+  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menubar_title)->child),
+                                   _("_Title"));
+  gtk_widget_add_accelerator (menubar_title, "activate_item", menubar_view_menu_accels,
+                              tmp_key, 0, 0);
+  gtk_widget_ref (menubar_title);
+  gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_title", menubar_title,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (menubar_title);
+  gtk_container_add (GTK_CONTAINER (menubar_view_menu), menubar_title);
+  gtk_widget_set_sensitive (menubar_title, FALSE);
+  gtk_tooltips_set_tip (tooltips, menubar_title, _("Navigate through the stream"), NULL);
+
+  menubar_chapter = gtk_menu_item_new_with_label ("");
+  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menubar_chapter)->child),
+                                   _("_Chapter"));
+  gtk_widget_add_accelerator (menubar_chapter, "activate_item", menubar_view_menu_accels,
+                              tmp_key, 0, 0);
+  gtk_widget_ref (menubar_chapter);
+  gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_chapter", menubar_chapter,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (menubar_chapter);
+  gtk_container_add (GTK_CONTAINER (menubar_view_menu), menubar_chapter);
+  gtk_widget_set_sensitive (menubar_chapter, FALSE);
+
+  separator11 = gtk_menu_item_new ();
+  gtk_widget_ref (separator11);
+  gtk_object_set_data_full (GTK_OBJECT (intf_window), "separator11", separator11,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (separator11);
+  gtk_container_add (GTK_CONTAINER (menubar_view_menu), separator11);
+  gtk_widget_set_sensitive (separator11, FALSE);
+
   menubar_playlist = gtk_menu_item_new_with_label ("");
   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menubar_playlist)->child),
                                    _("_Playlist..."));
@@ -192,7 +253,6 @@ create_intf_window (void)
                             (GtkDestroyNotify) gtk_widget_unref);
   gtk_widget_show (menubar_playlist);
   gtk_container_add (GTK_CONTAINER (menubar_view_menu), menubar_playlist);
-  gtk_widget_set_sensitive (menubar_playlist, FALSE);
   gtk_tooltips_set_tip (tooltips, menubar_playlist, _("Open the playlist window"), NULL);
 
   menubar_modules = gtk_menu_item_new_with_label ("");
@@ -226,6 +286,48 @@ create_intf_window (void)
   gtk_menu_item_set_submenu (GTK_MENU_ITEM (menubar_settings), menubar_settings_menu);
   menubar_settings_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (menubar_settings_menu));
 
+  separator7 = gtk_menu_item_new ();
+  gtk_widget_ref (separator7);
+  gtk_object_set_data_full (GTK_OBJECT (intf_window), "separator7", separator7,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (separator7);
+  gtk_container_add (GTK_CONTAINER (menubar_settings_menu), separator7);
+  gtk_widget_set_sensitive (separator7, FALSE);
+
+  menubar_audio = gtk_menu_item_new_with_label ("");
+  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menubar_audio)->child),
+                                   _("A_udio"));
+  gtk_widget_add_accelerator (menubar_audio, "activate_item", menubar_settings_menu_accels,
+                              tmp_key, 0, 0);
+  gtk_widget_ref (menubar_audio);
+  gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_audio", menubar_audio,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (menubar_audio);
+  gtk_container_add (GTK_CONTAINER (menubar_settings_menu), menubar_audio);
+  gtk_widget_set_sensitive (menubar_audio, FALSE);
+  gtk_tooltips_set_tip (tooltips, menubar_audio, _("Select audio language"), NULL);
+
+  menubar_subpictures = gtk_menu_item_new_with_label ("");
+  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menubar_subpictures)->child),
+                                   _("Sub _Pictures"));
+  gtk_widget_add_accelerator (menubar_subpictures, "activate_item", menubar_settings_menu_accels,
+                              tmp_key, 0, 0);
+  gtk_widget_ref (menubar_subpictures);
+  gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_subpictures", menubar_subpictures,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (menubar_subpictures);
+  gtk_container_add (GTK_CONTAINER (menubar_settings_menu), menubar_subpictures);
+  gtk_widget_set_sensitive (menubar_subpictures, FALSE);
+  gtk_tooltips_set_tip (tooltips, menubar_subpictures, _("Select sub-title"), NULL);
+
+  separator8 = gtk_menu_item_new ();
+  gtk_widget_ref (separator8);
+  gtk_object_set_data_full (GTK_OBJECT (intf_window), "separator8", separator8,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (separator8);
+  gtk_container_add (GTK_CONTAINER (menubar_settings_menu), separator8);
+  gtk_widget_set_sensitive (separator8, FALSE);
+
   menubar_preferences = gtk_menu_item_new_with_label ("");
   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menubar_preferences)->child),
                                    _("_Preferences..."));
@@ -291,7 +393,7 @@ create_intf_window (void)
                                 GTK_TOOLBAR_CHILD_BUTTON,
                                 NULL,
                                 _("Open"),
-                                _("Open File"), NULL,
+                                _("Open File"), NULL,
                                 NULL, NULL, NULL);
   gtk_widget_ref (toolbar_open);
   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_open", toolbar_open,
@@ -302,13 +404,24 @@ create_intf_window (void)
                                 GTK_TOOLBAR_CHILD_BUTTON,
                                 NULL,
                                 _("Disc"),
-                                _("Open File"), NULL,
+                                _("Open a DVD or VCD"), NULL,
                                 NULL, NULL, NULL);
   gtk_widget_ref (toolbar_disc);
   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_disc", toolbar_disc,
                             (GtkDestroyNotify) gtk_widget_unref);
   gtk_widget_show (toolbar_disc);
 
+  toolbar_network = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
+                                GTK_TOOLBAR_CHILD_BUTTON,
+                                NULL,
+                                _("Net"),
+                                _("Select a Network Stream"), NULL,
+                                NULL, NULL, NULL);
+  gtk_widget_ref (toolbar_network);
+  gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_network", toolbar_network,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (toolbar_network);
+
   gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
 
   toolbar_back = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
@@ -391,7 +504,6 @@ create_intf_window (void)
   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_playlist", toolbar_playlist,
                             (GtkDestroyNotify) gtk_widget_unref);
   gtk_widget_show (toolbar_playlist);
-  gtk_widget_set_sensitive (toolbar_playlist, FALSE);
 
   toolbar_prev = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
                                 GTK_TOOLBAR_CHILD_BUTTON,
@@ -415,60 +527,64 @@ create_intf_window (void)
                             (GtkDestroyNotify) gtk_widget_unref);
   gtk_widget_show (toolbar_next);
 
-  entry1 = gtk_entry_new ();
-  gtk_widget_ref (entry1);
-  gtk_object_set_data_full (GTK_OBJECT (intf_window), "entry1", entry1,
+  hbox7 = gtk_hbox_new (TRUE, 0);
+  gtk_widget_ref (hbox7);
+  gtk_object_set_data_full (GTK_OBJECT (intf_window), "hbox7", hbox7,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (entry1);
-  gtk_box_pack_start (GTK_BOX (vbox2), entry1, FALSE, TRUE, 0);
-  gtk_entry_set_text (GTK_ENTRY (entry1), _("Tired of boring stub messages ? Write your own exciting message here !!"));
+  gtk_widget_show (hbox7);
+  gtk_box_pack_start (GTK_BOX (vbox2), hbox7, TRUE, TRUE, 0);
 
-  label6 = gtk_label_new (_("This part of the interface doesn't work yet. You can drag the slider below, though:"));
-  gtk_widget_ref (label6);
-  gtk_object_set_data_full (GTK_OBJECT (intf_window), "label6", label6,
+  label_date = gtk_label_new (_("-:--:--"));
+  gtk_widget_ref (label_date);
+  gtk_object_set_data_full (GTK_OBJECT (intf_window), "label_date", label_date,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label6);
-  gtk_box_pack_start (GTK_BOX (vbox2), label6, FALSE, TRUE, 0);
-  gtk_label_set_justify (GTK_LABEL (label6), GTK_JUSTIFY_LEFT);
-  gtk_misc_set_alignment (GTK_MISC (label6), 0, 0.5);
-  gtk_misc_set_padding (GTK_MISC (label6), 5, 0);
+  gtk_widget_show (label_date);
+  gtk_box_pack_start (GTK_BOX (hbox7), label_date, FALSE, FALSE, 0);
 
-  hscale = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 100, 1, 6.25, 0)));
-  gtk_widget_ref (hscale);
-  gtk_object_set_data_full (GTK_OBJECT (intf_window), "hscale", hscale,
+  label_status = gtk_label_new (_("Status: foo"));
+  gtk_widget_ref (label_status);
+  gtk_object_set_data_full (GTK_OBJECT (intf_window), "label_status", label_status,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (hscale);
-  gtk_box_pack_start (GTK_BOX (vbox2), hscale, FALSE, TRUE, 0);
-  gtk_scale_set_value_pos (GTK_SCALE (hscale), GTK_POS_BOTTOM);
-  gtk_range_set_update_policy (GTK_RANGE (hscale), GTK_UPDATE_DELAYED);
+  gtk_widget_show (label_status);
+  gtk_box_pack_start (GTK_BOX (hbox7), label_status, FALSE, FALSE, 0);
 
-  label13 = gtk_label_new (_("HEY ! YOU CAN DROP A FILE ON VLC TOO :-)"));
-  gtk_widget_ref (label13);
-  gtk_object_set_data_full (GTK_OBJECT (intf_window), "label13", label13,
+  label_bar = gtk_label_new (_("Bar: baz"));
+  gtk_widget_ref (label_bar);
+  gtk_object_set_data_full (GTK_OBJECT (intf_window), "label_bar", label_bar,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label13);
-  gtk_box_pack_start (GTK_BOX (vbox2), label13, FALSE, TRUE, 0);
-  gtk_misc_set_padding (GTK_MISC (label13), 0, 5);
+  gtk_widget_show (label_bar);
+  gtk_box_pack_start (GTK_BOX (hbox7), label_bar, FALSE, FALSE, 0);
 
-  statusbar1 = gtk_statusbar_new ();
-  gtk_widget_ref (statusbar1);
-  gtk_object_set_data_full (GTK_OBJECT (intf_window), "statusbar1", statusbar1,
+  slider = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 100, 1, 6.25, 0)));
+  gtk_widget_ref (slider);
+  gtk_object_set_data_full (GTK_OBJECT (intf_window), "slider", slider,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (statusbar1);
-  gtk_box_pack_end (GTK_BOX (vbox2), statusbar1, FALSE, TRUE, 0);
+  gtk_widget_show (slider);
+  gtk_box_pack_start (GTK_BOX (vbox2), slider, TRUE, TRUE, 0);
+  gtk_scale_set_draw_value (GTK_SCALE (slider), FALSE);
+
+  intf_statusbar = gtk_statusbar_new ();
+  gtk_widget_ref (intf_statusbar);
+  gtk_object_set_data_full (GTK_OBJECT (intf_window), "intf_statusbar", intf_statusbar,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (intf_statusbar);
+  gtk_box_pack_start (GTK_BOX (vbox2), intf_statusbar, FALSE, FALSE, 0);
 
-  gtk_signal_connect (GTK_OBJECT (intf_window), "destroy",
-                      GTK_SIGNAL_FUNC (on_intf_window_destroy),
-                      NULL);
   gtk_signal_connect (GTK_OBJECT (intf_window), "drag_data_received",
                       GTK_SIGNAL_FUNC (on_intf_window_drag_data_received),
                       NULL);
+  gtk_signal_connect (GTK_OBJECT (intf_window), "delete_event",
+                      GTK_SIGNAL_FUNC (on_intf_window_destroy),
+                      NULL);
   gtk_signal_connect (GTK_OBJECT (menubar_open), "activate",
                       GTK_SIGNAL_FUNC (on_menubar_open_activate),
                       NULL);
   gtk_signal_connect (GTK_OBJECT (menubar_disc), "activate",
                       GTK_SIGNAL_FUNC (on_menubar_disc_activate),
                       NULL);
+  gtk_signal_connect (GTK_OBJECT (menubar_network), "activate",
+                      GTK_SIGNAL_FUNC (on_menubar_network_activate),
+                      NULL);
   gtk_signal_connect (GTK_OBJECT (menubar_exit), "activate",
                       GTK_SIGNAL_FUNC (on_menubar_exit_activate),
                       NULL);
@@ -490,6 +606,9 @@ create_intf_window (void)
   gtk_signal_connect (GTK_OBJECT (toolbar_disc), "clicked",
                       GTK_SIGNAL_FUNC (on_toolbar_disc_clicked),
                       NULL);
+  gtk_signal_connect (GTK_OBJECT (toolbar_network), "clicked",
+                      GTK_SIGNAL_FUNC (on_toolbar_network_clicked),
+                      NULL);
   gtk_signal_connect (GTK_OBJECT (toolbar_back), "clicked",
                       GTK_SIGNAL_FUNC (on_toolbar_back_clicked),
                       NULL);
@@ -517,11 +636,11 @@ create_intf_window (void)
   gtk_signal_connect (GTK_OBJECT (toolbar_next), "clicked",
                       GTK_SIGNAL_FUNC (on_toolbar_next_clicked),
                       NULL);
-  gtk_signal_connect (GTK_OBJECT (hscale), "button_release_event",
-                      GTK_SIGNAL_FUNC (on_hscale_button_release_event),
+  gtk_signal_connect (GTK_OBJECT (slider), "button_release_event",
+                      GTK_SIGNAL_FUNC (on_slider_button_release_event),
                       NULL);
-  gtk_signal_connect (GTK_OBJECT (hscale), "button_press_event",
-                      GTK_SIGNAL_FUNC (on_hscale_button_press_event),
+  gtk_signal_connect (GTK_OBJECT (slider), "button_press_event",
+                      GTK_SIGNAL_FUNC (on_slider_button_press_event),
                       NULL);
 
   gtk_object_set_data (GTK_OBJECT (intf_window), "tooltips", tooltips);
@@ -542,10 +661,20 @@ create_intf_popup (void)
   GtkWidget *popup_slow;
   GtkWidget *popup_fast;
   GtkWidget *separator6;
+  GtkWidget *main_window_toggle;
+  GtkWidget *separator5;
+  GtkWidget *popup_navigation;
+  GtkWidget *popup_audio;
+  GtkWidget *popup_subpictures;
+  GtkWidget *popup_file;
+  GtkWidget *popup_file_menu;
+  GtkAccelGroup *popup_file_menu_accels;
   GtkWidget *popup_open;
   GtkWidget *popup_disc;
-  GtkWidget *separator5;
+  GtkWidget *popup_network;
+  GtkWidget *separator12;
   GtkWidget *popup_about;
+  GtkWidget *separator9;
   GtkWidget *popup_exit;
   GtkTooltips *tooltips;
 
@@ -595,47 +724,141 @@ create_intf_popup (void)
   gtk_container_add (GTK_CONTAINER (intf_popup), separator6);
   gtk_widget_set_sensitive (separator6, FALSE);
 
+  main_window_toggle = gtk_menu_item_new_with_label ("");
+  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (main_window_toggle)->child),
+                                   _("Toggle _Interface"));
+  gtk_widget_add_accelerator (main_window_toggle, "activate_item", intf_popup_accels,
+                              tmp_key, 0, 0);
+  gtk_widget_ref (main_window_toggle);
+  gtk_object_set_data_full (GTK_OBJECT (intf_popup), "main_window_toggle", main_window_toggle,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (main_window_toggle);
+  gtk_container_add (GTK_CONTAINER (intf_popup), main_window_toggle);
+
+  separator5 = gtk_menu_item_new ();
+  gtk_widget_ref (separator5);
+  gtk_object_set_data_full (GTK_OBJECT (intf_popup), "separator5", separator5,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (separator5);
+  gtk_container_add (GTK_CONTAINER (intf_popup), separator5);
+  gtk_widget_set_sensitive (separator5, FALSE);
+
+  popup_navigation = gtk_menu_item_new_with_label ("");
+  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_navigation)->child),
+                                   _("_Navigation"));
+  gtk_widget_add_accelerator (popup_navigation, "activate_item", intf_popup_accels,
+                              tmp_key, 0, 0);
+  gtk_widget_ref (popup_navigation);
+  gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_navigation", popup_navigation,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (popup_navigation);
+  gtk_container_add (GTK_CONTAINER (intf_popup), popup_navigation);
+  gtk_widget_set_sensitive (popup_navigation, FALSE);
+
+  popup_audio = gtk_menu_item_new_with_label ("");
+  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_audio)->child),
+                                   _("_Audio"));
+  gtk_widget_add_accelerator (popup_audio, "activate_item", intf_popup_accels,
+                              tmp_key, 0, 0);
+  gtk_widget_ref (popup_audio);
+  gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_audio", popup_audio,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (popup_audio);
+  gtk_container_add (GTK_CONTAINER (intf_popup), popup_audio);
+  gtk_widget_set_sensitive (popup_audio, FALSE);
+
+  popup_subpictures = gtk_menu_item_new_with_label ("");
+  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_subpictures)->child),
+                                   _("_Subpictures"));
+  gtk_widget_add_accelerator (popup_subpictures, "activate_item", intf_popup_accels,
+                              tmp_key, 0, 0);
+  gtk_widget_ref (popup_subpictures);
+  gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_subpictures", popup_subpictures,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (popup_subpictures);
+  gtk_container_add (GTK_CONTAINER (intf_popup), popup_subpictures);
+  gtk_widget_set_sensitive (popup_subpictures, FALSE);
+
+  popup_file = gtk_menu_item_new_with_label ("");
+  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_file)->child),
+                                   _("_File"));
+  gtk_widget_add_accelerator (popup_file, "activate_item", intf_popup_accels,
+                              tmp_key, 0, 0);
+  gtk_widget_ref (popup_file);
+  gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_file", popup_file,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (popup_file);
+  gtk_container_add (GTK_CONTAINER (intf_popup), popup_file);
+
+  popup_file_menu = gtk_menu_new ();
+  gtk_widget_ref (popup_file_menu);
+  gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_file_menu", popup_file_menu,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_menu_item_set_submenu (GTK_MENU_ITEM (popup_file), popup_file_menu);
+  popup_file_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (popup_file_menu));
+
   popup_open = gtk_menu_item_new_with_label ("");
   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_open)->child),
-                                   _("_Open..."));
-  gtk_widget_add_accelerator (popup_open, "activate_item", intf_popup_accels,
+                                   _("_Open File..."));
+  gtk_widget_add_accelerator (popup_open, "activate_item", popup_file_menu_accels,
                               tmp_key, 0, 0);
   gtk_widget_ref (popup_open);
   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_open", popup_open,
                             (GtkDestroyNotify) gtk_widget_unref);
   gtk_widget_show (popup_open);
-  gtk_container_add (GTK_CONTAINER (intf_popup), popup_open);
+  gtk_container_add (GTK_CONTAINER (popup_file_menu), popup_open);
+  gtk_tooltips_set_tip (tooltips, popup_open, _("Open a File"), NULL);
 
   popup_disc = gtk_menu_item_new_with_label ("");
   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_disc)->child),
-                                   _("Open _disc..."));
-  gtk_widget_add_accelerator (popup_disc, "activate_item", intf_popup_accels,
+                                   _("Open _Disc..."));
+  gtk_widget_add_accelerator (popup_disc, "activate_item", popup_file_menu_accels,
                               tmp_key, 0, 0);
   gtk_widget_ref (popup_disc);
   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_disc", popup_disc,
                             (GtkDestroyNotify) gtk_widget_unref);
   gtk_widget_show (popup_disc);
-  gtk_container_add (GTK_CONTAINER (intf_popup), popup_disc);
-  gtk_tooltips_set_tip (tooltips, popup_disc, _("Open DVD or VCD"), NULL);
+  gtk_container_add (GTK_CONTAINER (popup_file_menu), popup_disc);
+  gtk_tooltips_set_tip (tooltips, popup_disc, _("Open DVD or VCD"), NULL);
 
-  separator5 = gtk_menu_item_new ();
-  gtk_widget_ref (separator5);
-  gtk_object_set_data_full (GTK_OBJECT (intf_popup), "separator5", separator5,
+  popup_network = gtk_menu_item_new_with_label ("");
+  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_network)->child),
+                                   _("_Network Stream..."));
+  gtk_widget_add_accelerator (popup_network, "activate_item", popup_file_menu_accels,
+                              tmp_key, 0, 0);
+  gtk_widget_ref (popup_network);
+  gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_network", popup_network,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (separator5);
-  gtk_container_add (GTK_CONTAINER (intf_popup), separator5);
-  gtk_widget_set_sensitive (separator5, FALSE);
+  gtk_widget_show (popup_network);
+  gtk_container_add (GTK_CONTAINER (popup_file_menu), popup_network);
+  gtk_tooltips_set_tip (tooltips, popup_network, _("Select a Network Stream"), NULL);
+
+  separator12 = gtk_menu_item_new ();
+  gtk_widget_ref (separator12);
+  gtk_object_set_data_full (GTK_OBJECT (intf_popup), "separator12", separator12,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (separator12);
+  gtk_container_add (GTK_CONTAINER (popup_file_menu), separator12);
+  gtk_widget_set_sensitive (separator12, FALSE);
 
   popup_about = gtk_menu_item_new_with_label ("");
   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_about)->child),
                                    _("_About..."));
-  gtk_widget_add_accelerator (popup_about, "activate_item", intf_popup_accels,
+  gtk_widget_add_accelerator (popup_about, "activate_item", popup_file_menu_accels,
                               tmp_key, 0, 0);
   gtk_widget_ref (popup_about);
   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_about", popup_about,
                             (GtkDestroyNotify) gtk_widget_unref);
   gtk_widget_show (popup_about);
-  gtk_container_add (GTK_CONTAINER (intf_popup), popup_about);
+  gtk_container_add (GTK_CONTAINER (popup_file_menu), popup_about);
+
+  separator9 = gtk_menu_item_new ();
+  gtk_widget_ref (separator9);
+  gtk_object_set_data_full (GTK_OBJECT (intf_popup), "separator9", separator9,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (separator9);
+  gtk_container_add (GTK_CONTAINER (intf_popup), separator9);
+  gtk_widget_set_sensitive (separator9, FALSE);
 
   popup_exit = gtk_menu_item_new_with_label ("");
   tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_exit)->child),
@@ -660,12 +883,18 @@ create_intf_popup (void)
   gtk_signal_connect (GTK_OBJECT (popup_fast), "activate",
                       GTK_SIGNAL_FUNC (on_popup_fast_activate),
                       NULL);
+  gtk_signal_connect (GTK_OBJECT (main_window_toggle), "activate",
+                      GTK_SIGNAL_FUNC (on_main_window_toggle),
+                      NULL);
   gtk_signal_connect (GTK_OBJECT (popup_open), "activate",
                       GTK_SIGNAL_FUNC (on_popup_open_activate),
                       NULL);
   gtk_signal_connect (GTK_OBJECT (popup_disc), "activate",
                       GTK_SIGNAL_FUNC (on_popup_disc_activate),
                       NULL);
+  gtk_signal_connect (GTK_OBJECT (popup_network), "activate",
+                      GTK_SIGNAL_FUNC (on_popup_network_activate),
+                      NULL);
   gtk_signal_connect (GTK_OBJECT (popup_about), "activate",
                       GTK_SIGNAL_FUNC (on_popup_about_activate),
                       NULL);
@@ -694,7 +923,7 @@ create_intf_about (void)
 
   intf_about = gtk_dialog_new ();
   gtk_object_set_data (GTK_OBJECT (intf_about), "intf_about", intf_about);
-  gtk_container_set_border_width (GTK_CONTAINER (intf_about), 10);
+  gtk_container_set_border_width (GTK_CONTAINER (intf_about), 5);
   gtk_window_set_title (GTK_WINDOW (intf_about), _("About"));
   gtk_window_set_position (GTK_WINDOW (intf_about), GTK_WIN_POS_CENTER);
   gtk_window_set_policy (GTK_WINDOW (intf_about), FALSE, FALSE, FALSE);
@@ -757,6 +986,7 @@ create_intf_about (void)
   dialog_action_area = GTK_DIALOG (intf_about)->action_area;
   gtk_object_set_data (GTK_OBJECT (intf_about), "dialog_action_area", dialog_action_area);
   gtk_widget_show (dialog_action_area);
+  gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area), 10);
 
   about_ok = gtk_button_new_with_label (_("OK"));
   gtk_widget_ref (about_ok);
@@ -784,6 +1014,7 @@ create_intf_fileopen (void)
   intf_fileopen = gtk_file_selection_new (_("Select File"));
   gtk_object_set_data (GTK_OBJECT (intf_fileopen), "intf_fileopen", intf_fileopen);
   gtk_container_set_border_width (GTK_CONTAINER (intf_fileopen), 10);
+  gtk_window_set_modal (GTK_WINDOW (intf_fileopen), TRUE);
 
   fileopen_ok = GTK_FILE_SELECTION (intf_fileopen)->ok_button;
   gtk_object_set_data (GTK_OBJECT (intf_fileopen), "fileopen_ok", fileopen_ok);
@@ -814,14 +1045,23 @@ create_intf_disc (void)
   GtkWidget *intf_disc;
   GtkWidget *dialog_vbox2;
   GtkWidget *vbox4;
+  GtkWidget *hbox3;
   GtkWidget *frame2;
   GtkWidget *vbox5;
   GSList *disc_group = NULL;
   GtkWidget *disc_dvd;
   GtkWidget *disc_vcd;
+  GtkWidget *frame3;
+  GtkWidget *table1;
+  GtkObject *disc_title_adj;
+  GtkWidget *disc_title;
+  GtkObject *disc_chapter_adj;
+  GtkWidget *disc_chapter;
+  GtkWidget *label20;
+  GtkWidget *label21;
   GtkWidget *hbox2;
   GtkWidget *label19;
-  GtkWidget *entry2;
+  GtkWidget *disc_name;
   GtkWidget *dialog_action_area1;
   GtkWidget *hbox1;
   GtkWidget *disc_ok;
@@ -829,13 +1069,14 @@ create_intf_disc (void)
 
   intf_disc = gtk_dialog_new ();
   gtk_object_set_data (GTK_OBJECT (intf_disc), "intf_disc", intf_disc);
-  gtk_window_set_title (GTK_WINDOW (intf_disc), _("Open disc"));
+  gtk_window_set_title (GTK_WINDOW (intf_disc), _("Open Disc"));
+  gtk_window_set_modal (GTK_WINDOW (intf_disc), TRUE);
   gtk_window_set_policy (GTK_WINDOW (intf_disc), FALSE, FALSE, FALSE);
 
   dialog_vbox2 = GTK_DIALOG (intf_disc)->vbox;
   gtk_object_set_data (GTK_OBJECT (intf_disc), "dialog_vbox2", dialog_vbox2);
   gtk_widget_show (dialog_vbox2);
-  gtk_container_set_border_width (GTK_CONTAINER (dialog_vbox2), 10);
+  gtk_container_set_border_width (GTK_CONTAINER (dialog_vbox2), 5);
 
   vbox4 = gtk_vbox_new (FALSE, 5);
   gtk_widget_ref (vbox4);
@@ -845,12 +1086,19 @@ create_intf_disc (void)
   gtk_box_pack_start (GTK_BOX (dialog_vbox2), vbox4, TRUE, TRUE, 0);
   gtk_container_set_border_width (GTK_CONTAINER (vbox4), 5);
 
+  hbox3 = gtk_hbox_new (FALSE, 5);
+  gtk_widget_ref (hbox3);
+  gtk_object_set_data_full (GTK_OBJECT (intf_disc), "hbox3", hbox3,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (hbox3);
+  gtk_box_pack_start (GTK_BOX (vbox4), hbox3, TRUE, TRUE, 0);
+
   frame2 = gtk_frame_new (_("Disc type"));
   gtk_widget_ref (frame2);
   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "frame2", frame2,
                             (GtkDestroyNotify) gtk_widget_unref);
   gtk_widget_show (frame2);
-  gtk_box_pack_start (GTK_BOX (vbox4), frame2, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (hbox3), frame2, TRUE, TRUE, 0);
 
   vbox5 = gtk_vbox_new (FALSE, 0);
   gtk_widget_ref (vbox5);
@@ -867,13 +1115,71 @@ create_intf_disc (void)
   gtk_widget_show (disc_dvd);
   gtk_box_pack_start (GTK_BOX (vbox5), disc_dvd, FALSE, FALSE, 0);
 
-  disc_vcd = gtk_radio_button_new_with_label (disc_group, _("VCD (unsupported yet)"));
+  disc_vcd = gtk_radio_button_new_with_label (disc_group, _("VCD"));
   disc_group = gtk_radio_button_group (GTK_RADIO_BUTTON (disc_vcd));
   gtk_widget_ref (disc_vcd);
   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "disc_vcd", disc_vcd,
                             (GtkDestroyNotify) gtk_widget_unref);
   gtk_widget_show (disc_vcd);
   gtk_box_pack_start (GTK_BOX (vbox5), disc_vcd, FALSE, FALSE, 0);
+  gtk_widget_set_sensitive (disc_vcd, FALSE);
+
+  frame3 = gtk_frame_new (_("Starting position"));
+  gtk_widget_ref (frame3);
+  gtk_object_set_data_full (GTK_OBJECT (intf_disc), "frame3", frame3,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (frame3);
+  gtk_box_pack_start (GTK_BOX (hbox3), frame3, TRUE, TRUE, 0);
+
+  table1 = gtk_table_new (2, 2, FALSE);
+  gtk_widget_ref (table1);
+  gtk_object_set_data_full (GTK_OBJECT (intf_disc), "table1", table1,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (table1);
+  gtk_container_add (GTK_CONTAINER (frame3), table1);
+  gtk_container_set_border_width (GTK_CONTAINER (table1), 5);
+  gtk_table_set_row_spacings (GTK_TABLE (table1), 5);
+  gtk_table_set_col_spacings (GTK_TABLE (table1), 5);
+
+  disc_title_adj = gtk_adjustment_new (1, 1, 65536, 1, 10, 10);
+  disc_title = gtk_spin_button_new (GTK_ADJUSTMENT (disc_title_adj), 1, 0);
+  gtk_widget_ref (disc_title);
+  gtk_object_set_data_full (GTK_OBJECT (intf_disc), "disc_title", disc_title,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (disc_title);
+  gtk_table_attach (GTK_TABLE (table1), disc_title, 1, 2, 0, 1,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+
+  disc_chapter_adj = gtk_adjustment_new (1, 1, 65536, 1, 10, 10);
+  disc_chapter = gtk_spin_button_new (GTK_ADJUSTMENT (disc_chapter_adj), 1, 0);
+  gtk_widget_ref (disc_chapter);
+  gtk_object_set_data_full (GTK_OBJECT (intf_disc), "disc_chapter", disc_chapter,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (disc_chapter);
+  gtk_table_attach (GTK_TABLE (table1), disc_chapter, 1, 2, 1, 2,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+
+  label20 = gtk_label_new (_("Chapter"));
+  gtk_widget_ref (label20);
+  gtk_object_set_data_full (GTK_OBJECT (intf_disc), "label20", label20,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (label20);
+  gtk_table_attach (GTK_TABLE (table1), label20, 0, 1, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_misc_set_alignment (GTK_MISC (label20), 0, 0.5);
+
+  label21 = gtk_label_new (_("Title"));
+  gtk_widget_ref (label21);
+  gtk_object_set_data_full (GTK_OBJECT (intf_disc), "label21", label21,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (label21);
+  gtk_table_attach (GTK_TABLE (table1), label21, 0, 1, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_misc_set_alignment (GTK_MISC (label21), 0, 0.5);
 
   hbox2 = gtk_hbox_new (FALSE, 5);
   gtk_widget_ref (hbox2);
@@ -882,24 +1188,25 @@ create_intf_disc (void)
   gtk_widget_show (hbox2);
   gtk_box_pack_start (GTK_BOX (vbox4), hbox2, TRUE, TRUE, 0);
 
-  label19 = gtk_label_new (_("Device name (eg. /dev/cdrom or /dev/dvd):"));
+  label19 = gtk_label_new (_("Device name"));
   gtk_widget_ref (label19);
   gtk_object_set_data_full (GTK_OBJECT (intf_disc), "label19", label19,
                             (GtkDestroyNotify) gtk_widget_unref);
   gtk_widget_show (label19);
   gtk_box_pack_start (GTK_BOX (hbox2), label19, FALSE, FALSE, 0);
 
-  entry2 = gtk_entry_new ();
-  gtk_widget_ref (entry2);
-  gtk_object_set_data_full (GTK_OBJECT (intf_disc), "entry2", entry2,
+  disc_name = gtk_entry_new ();
+  gtk_widget_ref (disc_name);
+  gtk_object_set_data_full (GTK_OBJECT (intf_disc), "disc_name", disc_name,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (entry2);
-  gtk_box_pack_start (GTK_BOX (hbox2), entry2, TRUE, TRUE, 0);
-  gtk_entry_set_text (GTK_ENTRY (entry2), _("/dev/dvd"));
+  gtk_widget_show (disc_name);
+  gtk_box_pack_start (GTK_BOX (hbox2), disc_name, TRUE, TRUE, 0);
+  gtk_entry_set_text (GTK_ENTRY (disc_name), _("/dev/dvd"));
 
   dialog_action_area1 = GTK_DIALOG (intf_disc)->action_area;
   gtk_object_set_data (GTK_OBJECT (intf_disc), "dialog_action_area1", dialog_action_area1);
   gtk_widget_show (dialog_action_area1);
+  gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area1), 5);
 
   hbox1 = gtk_hbox_new (TRUE, 5);
   gtk_widget_ref (hbox1);
@@ -907,7 +1214,6 @@ create_intf_disc (void)
                             (GtkDestroyNotify) gtk_widget_unref);
   gtk_widget_show (hbox1);
   gtk_box_pack_end (GTK_BOX (dialog_action_area1), hbox1, FALSE, TRUE, 0);
-  gtk_container_set_border_width (GTK_CONTAINER (hbox1), 10);
 
   disc_ok = gtk_button_new_with_label (_("OK"));
   gtk_widget_ref (disc_ok);
@@ -939,3 +1245,356 @@ create_intf_disc (void)
   return intf_disc;
 }
 
+GtkWidget*
+create_intf_playlist (void)
+{
+  GtkWidget *intf_playlist;
+  GtkWidget *vbox6;
+  GtkWidget *menubar2;
+  GtkWidget *add1;
+  GtkWidget *delete1;
+  GtkWidget *delete1_menu;
+  GtkAccelGroup *delete1_menu_accels;
+  guint tmp_key;
+  GtkWidget *crop1;
+  GtkWidget *invert1;
+  GtkWidget *selection;
+  GtkWidget *selection1;
+  GtkWidget *scrolledwindow1;
+  GtkWidget *playlist_clist;
+  GtkWidget *label22;
+  GtkWidget *label23;
+
+  intf_playlist = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+  gtk_object_set_data (GTK_OBJECT (intf_playlist), "intf_playlist", intf_playlist);
+  gtk_window_set_title (GTK_WINDOW (intf_playlist), _("Playlist"));
+  gtk_window_set_default_size (GTK_WINDOW (intf_playlist), 386, 200);
+
+  vbox6 = gtk_vbox_new (FALSE, 0);
+  gtk_widget_ref (vbox6);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "vbox6", vbox6,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (vbox6);
+  gtk_container_add (GTK_CONTAINER (intf_playlist), vbox6);
+
+  menubar2 = gtk_menu_bar_new ();
+  gtk_widget_ref (menubar2);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "menubar2", menubar2,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (menubar2);
+  gtk_box_pack_start (GTK_BOX (vbox6), menubar2, FALSE, FALSE, 0);
+
+  add1 = gtk_menu_item_new_with_label (_("Add"));
+  gtk_widget_ref (add1);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "add1", add1,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (add1);
+  gtk_container_add (GTK_CONTAINER (menubar2), add1);
+
+  delete1 = gtk_menu_item_new_with_label (_("Delete"));
+  gtk_widget_ref (delete1);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "delete1", delete1,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (delete1);
+  gtk_container_add (GTK_CONTAINER (menubar2), delete1);
+
+  delete1_menu = gtk_menu_new ();
+  gtk_widget_ref (delete1_menu);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "delete1_menu", delete1_menu,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_menu_item_set_submenu (GTK_MENU_ITEM (delete1), delete1_menu);
+  delete1_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (delete1_menu));
+
+  crop1 = gtk_menu_item_new_with_label ("");
+  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (crop1)->child),
+                                   _("_crop"));
+  gtk_widget_add_accelerator (crop1, "activate_item", delete1_menu_accels,
+                              tmp_key, 0, 0);
+  gtk_widget_ref (crop1);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "crop1", crop1,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (crop1);
+  gtk_container_add (GTK_CONTAINER (delete1_menu), crop1);
+
+  invert1 = gtk_menu_item_new_with_label ("");
+  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (invert1)->child),
+                                   _("_invert"));
+  gtk_widget_add_accelerator (invert1, "activate_item", delete1_menu_accels,
+                              tmp_key, 0, 0);
+  gtk_widget_ref (invert1);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "invert1", invert1,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (invert1);
+  gtk_container_add (GTK_CONTAINER (delete1_menu), invert1);
+
+  selection = gtk_menu_item_new_with_label ("");
+  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (selection)->child),
+                                   _("_selection"));
+  gtk_widget_add_accelerator (selection, "activate_item", delete1_menu_accels,
+                              tmp_key, 0, 0);
+  gtk_widget_ref (selection);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "selection", selection,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (selection);
+  gtk_container_add (GTK_CONTAINER (delete1_menu), selection);
+
+  selection1 = gtk_menu_item_new_with_label (_("Selection"));
+  gtk_widget_ref (selection1);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "selection1", selection1,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (selection1);
+  gtk_container_add (GTK_CONTAINER (menubar2), selection1);
+
+  scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
+  gtk_widget_ref (scrolledwindow1);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "scrolledwindow1", scrolledwindow1,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (scrolledwindow1);
+  gtk_box_pack_start (GTK_BOX (vbox6), scrolledwindow1, TRUE, TRUE, 0);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+  playlist_clist = gtk_clist_new (2);
+  gtk_widget_ref (playlist_clist);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_clist", playlist_clist,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (playlist_clist);
+  gtk_container_add (GTK_CONTAINER (scrolledwindow1), playlist_clist);
+  gtk_container_set_border_width (GTK_CONTAINER (playlist_clist), 1);
+  gtk_clist_set_column_width (GTK_CLIST (playlist_clist), 0, 257);
+  gtk_clist_set_column_width (GTK_CLIST (playlist_clist), 1, 80);
+  gtk_clist_set_selection_mode (GTK_CLIST (playlist_clist), GTK_SELECTION_EXTENDED);
+  gtk_clist_column_titles_show (GTK_CLIST (playlist_clist));
+  gtk_clist_set_shadow_type (GTK_CLIST (playlist_clist), GTK_SHADOW_OUT);
+
+  label22 = gtk_label_new (_("File"));
+  gtk_widget_ref (label22);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label22", label22,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (label22);
+  gtk_clist_set_column_widget (GTK_CLIST (playlist_clist), 0, label22);
+
+  label23 = gtk_label_new (_("Duration"));
+  gtk_widget_ref (label23);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label23", label23,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (label23);
+  gtk_clist_set_column_widget (GTK_CLIST (playlist_clist), 1, label23);
+
+  gtk_signal_connect (GTK_OBJECT (intf_playlist), "delete_event",
+                      GTK_SIGNAL_FUNC (on_intf_playlist_destroy_event),
+                      NULL);
+  gtk_signal_connect (GTK_OBJECT (crop1), "activate",
+                      GTK_SIGNAL_FUNC (on_crop_activate),
+                      NULL);
+  gtk_signal_connect (GTK_OBJECT (invert1), "activate",
+                      GTK_SIGNAL_FUNC (on_invertselection_clicked),
+                      NULL);
+  gtk_signal_connect (GTK_OBJECT (selection), "activate",
+                      GTK_SIGNAL_FUNC (on_delete_clicked),
+                      NULL);
+  gtk_signal_connect (GTK_OBJECT (playlist_clist), "event",
+                      GTK_SIGNAL_FUNC (on_playlist_clist_event),
+                      NULL);
+  gtk_signal_connect (GTK_OBJECT (playlist_clist), "drag_data_received",
+                      GTK_SIGNAL_FUNC (on_intf_playlist_drag_data_received),
+                      NULL);
+  gtk_signal_connect (GTK_OBJECT (playlist_clist), "drag_motion",
+                      GTK_SIGNAL_FUNC (on_playlist_clist_drag_motion),
+                      NULL);
+
+  return intf_playlist;
+}
+
+GtkWidget*
+create_intf_network (void)
+{
+  GtkWidget *intf_network;
+  GtkWidget *vbox7;
+  GtkWidget *vbox8;
+  GtkWidget *hbox6;
+  GtkWidget *frame4;
+  GtkWidget *vbox9;
+  GSList *network_group = NULL;
+  GtkWidget *network_ts;
+  GtkWidget *network_rtp;
+  GtkWidget *network_http;
+  GtkWidget *frame5;
+  GtkWidget *table2;
+  GtkObject *network_port_adj;
+  GtkWidget *network_port;
+  GtkWidget *label24;
+  GtkWidget *label25;
+  GtkWidget *network_server;
+  GtkWidget *hbox4;
+  GtkWidget *hbox5;
+  GtkWidget *network_ok;
+  GtkWidget *network_cancel;
+
+  intf_network = gtk_dialog_new ();
+  gtk_object_set_data (GTK_OBJECT (intf_network), "intf_network", intf_network);
+  gtk_window_set_title (GTK_WINDOW (intf_network), _("Open Disc"));
+  gtk_window_set_modal (GTK_WINDOW (intf_network), TRUE);
+  gtk_window_set_policy (GTK_WINDOW (intf_network), FALSE, FALSE, FALSE);
+
+  vbox7 = GTK_DIALOG (intf_network)->vbox;
+  gtk_object_set_data (GTK_OBJECT (intf_network), "vbox7", vbox7);
+  gtk_widget_show (vbox7);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox7), 5);
+
+  vbox8 = gtk_vbox_new (FALSE, 5);
+  gtk_widget_ref (vbox8);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "vbox8", vbox8,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (vbox8);
+  gtk_box_pack_start (GTK_BOX (vbox7), vbox8, TRUE, TRUE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox8), 5);
+
+  hbox6 = gtk_hbox_new (FALSE, 5);
+  gtk_widget_ref (hbox6);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "hbox6", hbox6,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (hbox6);
+  gtk_box_pack_start (GTK_BOX (vbox8), hbox6, TRUE, TRUE, 0);
+
+  frame4 = gtk_frame_new (_("Protocol"));
+  gtk_widget_ref (frame4);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "frame4", frame4,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (frame4);
+  gtk_box_pack_start (GTK_BOX (hbox6), frame4, TRUE, TRUE, 0);
+
+  vbox9 = gtk_vbox_new (FALSE, 0);
+  gtk_widget_ref (vbox9);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "vbox9", vbox9,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (vbox9);
+  gtk_container_add (GTK_CONTAINER (frame4), vbox9);
+
+  network_ts = gtk_radio_button_new_with_label (network_group, _("TS"));
+  network_group = gtk_radio_button_group (GTK_RADIO_BUTTON (network_ts));
+  gtk_widget_ref (network_ts);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_ts", network_ts,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (network_ts);
+  gtk_box_pack_start (GTK_BOX (vbox9), network_ts, FALSE, FALSE, 0);
+
+  network_rtp = gtk_radio_button_new_with_label (network_group, _("RTP"));
+  network_group = gtk_radio_button_group (GTK_RADIO_BUTTON (network_rtp));
+  gtk_widget_ref (network_rtp);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_rtp", network_rtp,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (network_rtp);
+  gtk_box_pack_start (GTK_BOX (vbox9), network_rtp, FALSE, FALSE, 0);
+  gtk_widget_set_sensitive (network_rtp, FALSE);
+
+  network_http = gtk_radio_button_new_with_label (network_group, _("HTTP"));
+  network_group = gtk_radio_button_group (GTK_RADIO_BUTTON (network_http));
+  gtk_widget_ref (network_http);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_http", network_http,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (network_http);
+  gtk_box_pack_start (GTK_BOX (vbox9), network_http, FALSE, FALSE, 0);
+  gtk_widget_set_sensitive (network_http, FALSE);
+
+  frame5 = gtk_frame_new (_("Server"));
+  gtk_widget_ref (frame5);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "frame5", frame5,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (frame5);
+  gtk_box_pack_start (GTK_BOX (hbox6), frame5, TRUE, TRUE, 0);
+
+  table2 = gtk_table_new (2, 2, FALSE);
+  gtk_widget_ref (table2);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "table2", table2,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (table2);
+  gtk_container_add (GTK_CONTAINER (frame5), table2);
+  gtk_container_set_border_width (GTK_CONTAINER (table2), 5);
+  gtk_table_set_row_spacings (GTK_TABLE (table2), 5);
+  gtk_table_set_col_spacings (GTK_TABLE (table2), 5);
+
+  network_port_adj = gtk_adjustment_new (1234, 0, 65535, 1, 10, 10);
+  network_port = gtk_spin_button_new (GTK_ADJUSTMENT (network_port_adj), 1, 0);
+  gtk_widget_ref (network_port);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_port", network_port,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (network_port);
+  gtk_table_attach (GTK_TABLE (table2), network_port, 1, 2, 1, 2,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+
+  label24 = gtk_label_new (_("Port"));
+  gtk_widget_ref (label24);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "label24", label24,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (label24);
+  gtk_table_attach (GTK_TABLE (table2), label24, 0, 1, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_misc_set_alignment (GTK_MISC (label24), 0, 0.5);
+
+  label25 = gtk_label_new (_("Address"));
+  gtk_widget_ref (label25);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "label25", label25,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (label25);
+  gtk_table_attach (GTK_TABLE (table2), label25, 0, 1, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_misc_set_alignment (GTK_MISC (label25), 0, 0.5);
+
+  network_server = gtk_entry_new ();
+  gtk_widget_ref (network_server);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_server", network_server,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (network_server);
+  gtk_table_attach (GTK_TABLE (table2), network_server, 1, 2, 0, 1,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_entry_set_text (GTK_ENTRY (network_server), _("vls"));
+
+  hbox4 = GTK_DIALOG (intf_network)->action_area;
+  gtk_object_set_data (GTK_OBJECT (intf_network), "hbox4", hbox4);
+  gtk_widget_show (hbox4);
+  gtk_container_set_border_width (GTK_CONTAINER (hbox4), 5);
+
+  hbox5 = gtk_hbox_new (TRUE, 5);
+  gtk_widget_ref (hbox5);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "hbox5", hbox5,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (hbox5);
+  gtk_box_pack_end (GTK_BOX (hbox4), hbox5, FALSE, TRUE, 0);
+
+  network_ok = gtk_button_new_with_label (_("OK"));
+  gtk_widget_ref (network_ok);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_ok", network_ok,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (network_ok);
+  gtk_box_pack_start (GTK_BOX (hbox5), network_ok, FALSE, TRUE, 0);
+
+  network_cancel = gtk_button_new_with_label (_("Cancel"));
+  gtk_widget_ref (network_cancel);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_cancel", network_cancel,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (network_cancel);
+  gtk_box_pack_start (GTK_BOX (hbox5), network_cancel, FALSE, TRUE, 0);
+
+  gtk_signal_connect (GTK_OBJECT (intf_network), "destroy",
+                      GTK_SIGNAL_FUNC (on_intf_network_destroy),
+                      NULL);
+  gtk_signal_connect (GTK_OBJECT (network_ts), "toggled",
+                      GTK_SIGNAL_FUNC (on_disc_dvd_toggled),
+                      NULL);
+  gtk_signal_connect (GTK_OBJECT (network_rtp), "toggled",
+                      GTK_SIGNAL_FUNC (on_disc_vcd_toggled),
+                      NULL);
+  gtk_signal_connect (GTK_OBJECT (network_ok), "clicked",
+                      GTK_SIGNAL_FUNC (on_network_ok_clicked),
+                      NULL);
+  gtk_signal_connect (GTK_OBJECT (network_cancel), "clicked",
+                      GTK_SIGNAL_FUNC (on_network_cancel_clicked),
+                      NULL);
+
+  return intf_network;
+}
+