]> git.sesse.net Git - vlc/commitdiff
* --chennels puts gtk/gnome in multi-channel network mode.
authorStéphane Borel <stef@videolan.org>
Fri, 16 Nov 2001 00:29:52 +0000 (00:29 +0000)
committerStéphane Borel <stef@videolan.org>
Fri, 16 Nov 2001 00:29:52 +0000 (00:29 +0000)
* the network window of the interface reports the values of the environment
 variables.

* channels mode excludes vls configuration

* the vlc does not try to bind vls.via.ecp.fr by default when you select
 channels mode.

plugins/gtk/gnome_interface.c
plugins/gtk/gtk_callbacks.c
plugins/gtk/gtk_display.c
plugins/gtk/gtk_interface.c
plugins/gtk/gtk_open.c
plugins/gtk/intf_gnome.c
plugins/gtk/intf_gnome.glade
plugins/gtk/intf_gtk.c
plugins/gtk/intf_gtk.glade
plugins/gtk/intf_gtk.h
src/misc/netutils.c

index 2101313788de0ffe3e4f34abf6042ece0bbedd98..49378305582c81604b1fa39c1443a6e90ad77ee1 100644 (file)
@@ -644,7 +644,7 @@ create_intf_window (void)
   gtk_widget_show (label_network);
   gtk_box_pack_start (GTK_BOX (network_channel_box), label_network, TRUE, FALSE, 5);
 
-  network_channel_spinbutton_adj = gtk_adjustment_new (1, 0, 100, 1, 10, 10);
+  network_channel_spinbutton_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 10);
   network_channel_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (network_channel_spinbutton_adj), 1, 0);
   gtk_widget_ref (network_channel_spinbutton);
   gtk_object_set_data_full (GTK_OBJECT (intf_window), "network_channel_spinbutton", network_channel_spinbutton,
@@ -1382,8 +1382,8 @@ create_intf_network (void)
   GtkWidget *network_http;
   GtkWidget *frame4;
   GtkWidget *table2;
-  GtkWidget *label17;
-  GtkWidget *label18;
+  GtkWidget *network_server_label;
+  GtkWidget *network_port_label;
   GtkObject *network_port_adj;
   GtkWidget *network_port;
   GtkWidget *network_broadcast_check;
@@ -1396,7 +1396,7 @@ create_intf_network (void)
   GtkWidget *network_channel_check;
   GtkWidget *network_channel_combo;
   GtkWidget *network_channel;
-  GtkWidget *channel_port;
+  GtkWidget *network_channel_port_label;
   GtkObject *network_channel_port_adj;
   GtkWidget *network_channel_port;
   GtkWidget *hbuttonbox1;
@@ -1478,25 +1478,25 @@ create_intf_network (void)
   gtk_table_set_row_spacings (GTK_TABLE (table2), 5);
   gtk_table_set_col_spacings (GTK_TABLE (table2), 5);
 
-  label17 = gtk_label_new (_("Address"));
-  gtk_widget_ref (label17);
-  gtk_object_set_data_full (GTK_OBJECT (intf_network), "label17", label17,
+  network_server_label = gtk_label_new (_("Address"));
+  gtk_widget_ref (network_server_label);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_server_label", network_server_label,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label17);
-  gtk_table_attach (GTK_TABLE (table2), label17, 0, 1, 0, 1,
+  gtk_widget_show (network_server_label);
+  gtk_table_attach (GTK_TABLE (table2), network_server_label, 0, 1, 0, 1,
                     (GtkAttachOptions) (GTK_FILL),
                     (GtkAttachOptions) (0), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (label17), 0, 0.5);
+  gtk_misc_set_alignment (GTK_MISC (network_server_label), 0, 0.5);
 
-  label18 = gtk_label_new (_("Port"));
-  gtk_widget_ref (label18);
-  gtk_object_set_data_full (GTK_OBJECT (intf_network), "label18", label18,
+  network_port_label = gtk_label_new (_("Port"));
+  gtk_widget_ref (network_port_label);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_port_label", network_port_label,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label18);
-  gtk_table_attach (GTK_TABLE (table2), label18, 0, 1, 1, 2,
+  gtk_widget_show (network_port_label);
+  gtk_table_attach (GTK_TABLE (table2), network_port_label, 0, 1, 1, 2,
                     (GtkAttachOptions) (GTK_FILL),
                     (GtkAttachOptions) (0), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (label18), 0, 0.5);
+  gtk_misc_set_alignment (GTK_MISC (network_port_label), 0, 0.5);
 
   network_port_adj = gtk_adjustment_new (1234, 1024, 65535, 1, 10, 10);
   network_port = gtk_spin_button_new (GTK_ADJUSTMENT (network_port_adj), 1, 0);
@@ -1588,12 +1588,12 @@ create_intf_network (void)
   gtk_widget_show (network_channel);
   gtk_entry_set_text (GTK_ENTRY (network_channel), _("138.195.143.120"));
 
-  channel_port = gtk_label_new (_("port:"));
-  gtk_widget_ref (channel_port);
-  gtk_object_set_data_full (GTK_OBJECT (intf_network), "channel_port", channel_port,
+  network_channel_port_label = gtk_label_new (_("port:"));
+  gtk_widget_ref (network_channel_port_label);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_channel_port_label", network_channel_port_label,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (channel_port);
-  gtk_box_pack_start (GTK_BOX (hbox4), channel_port, FALSE, FALSE, 5);
+  gtk_widget_show (network_channel_port_label);
+  gtk_box_pack_start (GTK_BOX (hbox4), network_channel_port_label, FALSE, FALSE, 5);
 
   network_channel_port_adj = gtk_adjustment_new (6010, 1024, 65535, 1, 10, 10);
   network_channel_port = gtk_spin_button_new (GTK_ADJUSTMENT (network_channel_port_adj), 1, 0);
index 3ec0199ee247a8b0f7d28042808cc26f43cd69ee..b894ab07ea4a1985ec77cf6875569705a1a7fdfa 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_callbacks.c : Callbacks for the Gtk+ plugin.
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: gtk_callbacks.c,v 1.25 2001/11/12 04:12:37 sam Exp $
+ * $Id: gtk_callbacks.c,v 1.26 2001/11/16 00:29:52 stef Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -336,7 +336,7 @@ void GtkChannelGo( GtkButton * button, gpointer user_data )
 
     vlc_mutex_unlock( &p_intf->change_lock );
 
-    input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
+//    input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
 }
 
 
index cc2da595bc4f88d0d2e5a4e6256966c2f4e5522f..4a4a2afc5d8cdaed22cd78eb4c847df575287575 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_display.c: Gtk+ tools for main interface
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: gtk_display.c,v 1.6 2001/08/09 08:20:26 sam Exp $
+ * $Id: gtk_display.c,v 1.7 2001/11/16 00:29:52 stef Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -204,27 +204,39 @@ gint GtkModeManage( intf_thread_t * p_intf )
     }
     else
     {
+        if( main_GetIntVariable( INPUT_NETWORK_CHANNEL_VAR,
+                                 INPUT_NETWORK_CHANNEL_DEFAULT  ) )
+        {
+            gtk_widget_show( GTK_WIDGET( p_network_box ) );
+
+            p_channel = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
+                       p_intf->p_sys->p_window ), "network_channel_box" ) );
+            gtk_widget_show( GTK_WIDGET( p_channel ) );
+        }
+        else
+        {
 //intf_WarnMsg( 2, "intf info: default to file method" );
-        /* default mode */
-        p_label = gtk_object_get_data( GTK_OBJECT( p_intf->p_sys->p_window ),
-                        "label_status" );
-        gtk_label_set_text( GTK_LABEL( p_label ), "" );
-        gtk_widget_show( GTK_WIDGET( p_file_box ) );
-
-        /* unsensitize menus */
-        gtk_widget_set_sensitive( GETWIDGET(p_window,"menubar_title"), FALSE );
-        gtk_widget_set_sensitive( GETWIDGET(p_window,"menubar_chapter"),
-                                  FALSE );
-        gtk_widget_set_sensitive( GETWIDGET(p_window,"menubar_angle"), FALSE );
-        gtk_widget_set_sensitive( GETWIDGET(p_window,"menubar_audio"), FALSE );
-        gtk_widget_set_sensitive( GETWIDGET(p_window,"menubar_subpictures"),
-                                  FALSE );
-        gtk_widget_set_sensitive( GETWIDGET(p_popup,"popup_navigation"),
-                                  FALSE );
-        gtk_widget_set_sensitive( GETWIDGET(p_popup,"popup_angle"), FALSE );
-        gtk_widget_set_sensitive( GETWIDGET(p_popup,"popup_audio"), FALSE );
-        gtk_widget_set_sensitive( GETWIDGET(p_popup,"popup_subpictures"),
-                                  FALSE );
+            /* default mode */
+            p_label = gtk_object_get_data(
+                    GTK_OBJECT( p_intf->p_sys->p_window ), "label_status" );
+            gtk_label_set_text( GTK_LABEL( p_label ), "" );
+            gtk_widget_show( GTK_WIDGET( p_file_box ) );
+
+            /* unsensitize menus */
+            gtk_widget_set_sensitive( GETWIDGET(p_window,"menubar_title"), FALSE );
+            gtk_widget_set_sensitive( GETWIDGET(p_window,"menubar_chapter"),
+                                      FALSE );
+            gtk_widget_set_sensitive( GETWIDGET(p_window,"menubar_angle"), FALSE );
+            gtk_widget_set_sensitive( GETWIDGET(p_window,"menubar_audio"), FALSE );
+            gtk_widget_set_sensitive( GETWIDGET(p_window,"menubar_subpictures"),
+                                      FALSE );
+            gtk_widget_set_sensitive( GETWIDGET(p_popup,"popup_navigation"),
+                                      FALSE );
+            gtk_widget_set_sensitive( GETWIDGET(p_popup,"popup_angle"), FALSE );
+            gtk_widget_set_sensitive( GETWIDGET(p_popup,"popup_audio"), FALSE );
+            gtk_widget_set_sensitive( GETWIDGET(p_popup,"popup_subpictures"),
+                                      FALSE );
+        }
     }
 
     /* set control items */
index 4f7f276a5b9218b1cf167e60b8e0f243b98170e4..b5f00b853dae6bf8a5bb3324f8fb4b04167256e4 100644 (file)
@@ -741,7 +741,7 @@ create_intf_window (void)
   gtk_widget_show (channel_label);
   gtk_box_pack_start (GTK_BOX (network_channel_box), channel_label, FALSE, FALSE, 5);
 
-  network_channel_spinbutton_adj = gtk_adjustment_new (1, 0, 100, 1, 10, 10);
+  network_channel_spinbutton_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 10);
   network_channel_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (network_channel_spinbutton_adj), 1, 0);
   gtk_widget_ref (network_channel_spinbutton);
   gtk_object_set_data_full (GTK_OBJECT (intf_window), "network_channel_spinbutton", network_channel_spinbutton,
@@ -1594,8 +1594,8 @@ create_intf_network (void)
   GtkWidget *table2;
   GtkObject *network_port_adj;
   GtkWidget *network_port;
-  GtkWidget *label24;
-  GtkWidget *label25;
+  GtkWidget *network_port_label;
+  GtkWidget *network_server_label;
   GtkWidget *network_broadcast_check;
   GtkWidget *network_broadcast_combo;
   GtkWidget *network_broadcast;
@@ -1607,7 +1607,7 @@ create_intf_network (void)
   GtkWidget *network_channel_check;
   GtkWidget *network_channel_combo;
   GtkWidget *network_channel;
-  GtkWidget *channel_port;
+  GtkWidget *network_channel_port_label;
   GtkObject *network_channel_port_adj;
   GtkWidget *network_channel_port;
   GtkWidget *hbox4;
@@ -1707,25 +1707,25 @@ create_intf_network (void)
                     (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,
+  network_port_label = gtk_label_new (_("Port"));
+  gtk_widget_ref (network_port_label);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_port_label", network_port_label,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label24);
-  gtk_table_attach (GTK_TABLE (table2), label24, 0, 1, 1, 2,
+  gtk_widget_show (network_port_label);
+  gtk_table_attach (GTK_TABLE (table2), network_port_label, 0, 1, 1, 2,
                     (GtkAttachOptions) (GTK_FILL),
                     (GtkAttachOptions) (0), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (label24), 0, 0.5);
+  gtk_misc_set_alignment (GTK_MISC (network_port_label), 0, 0.5);
 
-  label25 = gtk_label_new (_("Address"));
-  gtk_widget_ref (label25);
-  gtk_object_set_data_full (GTK_OBJECT (intf_network), "label25", label25,
+  network_server_label = gtk_label_new (_("Address"));
+  gtk_widget_ref (network_server_label);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_server_label", network_server_label,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label25);
-  gtk_table_attach (GTK_TABLE (table2), label25, 0, 1, 0, 1,
+  gtk_widget_show (network_server_label);
+  gtk_table_attach (GTK_TABLE (table2), network_server_label, 0, 1, 0, 1,
                     (GtkAttachOptions) (GTK_FILL),
                     (GtkAttachOptions) (0), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (label25), 0, 0.5);
+  gtk_misc_set_alignment (GTK_MISC (network_server_label), 0, 0.5);
 
   network_broadcast_check = gtk_check_button_new_with_label (_("Broadcast"));
   gtk_widget_ref (network_broadcast_check);
@@ -1809,12 +1809,12 @@ create_intf_network (void)
   gtk_widget_show (network_channel);
   gtk_entry_set_text (GTK_ENTRY (network_channel), _("138.195.143.120"));
 
-  channel_port = gtk_label_new (_("port:"));
-  gtk_widget_ref (channel_port);
-  gtk_object_set_data_full (GTK_OBJECT (intf_network), "channel_port", channel_port,
+  network_channel_port_label = gtk_label_new (_("port:"));
+  gtk_widget_ref (network_channel_port_label);
+  gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_channel_port_label", network_channel_port_label,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (channel_port);
-  gtk_box_pack_start (GTK_BOX (hbox14), channel_port, FALSE, FALSE, 5);
+  gtk_widget_show (network_channel_port_label);
+  gtk_box_pack_start (GTK_BOX (hbox14), network_channel_port_label, FALSE, FALSE, 5);
 
   network_channel_port_adj = gtk_adjustment_new (6010, 1024, 100, 1, 10, 10);
   network_channel_port = gtk_spin_button_new (GTK_ADJUSTMENT (network_channel_port_adj), 1, 0);
index 9169f32a6f2e343e72f69133833f0916bf8d6786..b97e2743a69efb37ca2fd2e2ec077ee1bdb2f3bb 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_open.c : functions to handle file/disc/network open widgets.
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: gtk_open.c,v 1.7 2001/10/10 14:25:15 sam Exp $
+ * $Id: gtk_open.c,v 1.8 2001/11/16 00:29:52 stef Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -268,6 +268,41 @@ gboolean GtkNetworkOpenShow( GtkWidget       *widget,
         p_intf->p_sys->p_network = create_intf_network();
         gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_network ),
                              "p_intf", p_intf );
+
+        gtk_entry_set_text( GTK_ENTRY( gtk_object_get_data(
+            GTK_OBJECT( p_intf->p_sys->p_network ), "network_server" ) ),
+            main_GetPszVariable( INPUT_SERVER_VAR,
+                                 INPUT_SERVER_DEFAULT ) );
+
+        gtk_spin_button_set_value( GTK_SPIN_BUTTON( gtk_object_get_data(
+            GTK_OBJECT( p_intf->p_sys->p_network ), "network_port" ) ),
+            main_GetIntVariable( INPUT_PORT_VAR,
+                                 INPUT_PORT_DEFAULT ) );
+
+        gtk_entry_set_text( GTK_ENTRY( gtk_object_get_data(
+            GTK_OBJECT( p_intf->p_sys->p_network ), "network_broadcast" ) ),
+            main_GetPszVariable( INPUT_BCAST_ADDR_VAR,
+                                 INPUT_BCAST_ADDR_DEFAULT ) );
+
+        gtk_entry_set_text( GTK_ENTRY( gtk_object_get_data(
+            GTK_OBJECT( p_intf->p_sys->p_network ), "network_channel" ) ),
+            main_GetPszVariable( INPUT_CHANNEL_SERVER_VAR,
+                                 INPUT_CHANNEL_SERVER_DEFAULT ) );
+
+        gtk_spin_button_set_value( GTK_SPIN_BUTTON( gtk_object_get_data(
+            GTK_OBJECT( p_intf->p_sys->p_network ), "network_channel_port" ) ),
+            main_GetIntVariable( INPUT_CHANNEL_PORT_VAR,
+                                 INPUT_CHANNEL_PORT_DEFAULT ) );
+
+        gtk_toggle_button_set_active( gtk_object_get_data( GTK_OBJECT(
+            p_intf->p_sys->p_network ), "network_channel_check" ),
+            main_GetIntVariable( INPUT_NETWORK_CHANNEL_VAR,
+                                 INPUT_NETWORK_CHANNEL_DEFAULT ) );
+            
+        gtk_toggle_button_set_active( gtk_object_get_data( GTK_OBJECT(
+            p_intf->p_sys->p_network ), "network_broadcast_check" ),
+            main_GetIntVariable( INPUT_BROADCAST_VAR,
+                                 INPUT_BROADCAST_DEFAULT ) );
     }
 
     gtk_widget_show( p_intf->p_sys->p_network );
@@ -291,6 +326,12 @@ void GtkNetworkOpenOk( GtkButton *button, gpointer user_data )
     psz_server = gtk_entry_get_text( GTK_ENTRY( lookup_widget(
                                  GTK_WIDGET(button), "network_server" ) ) );
 
+    /* select added item */
+    if( p_intf->p_input != NULL )
+    {
+        p_intf->p_input->b_eof = 1;
+    }
+
     /* Check which protocol was activated */
     if( GTK_TOGGLE_BUTTON( lookup_widget( GTK_WIDGET(button),
                                           "network_ts" ) )->active )
@@ -308,54 +349,6 @@ void GtkNetworkOpenOk( GtkButton *button, gpointer user_data )
         return;
     }
 
-    /* Get the port number and make sure it will not overflow 5 characters */
-    i_port = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(
-                 lookup_widget( GTK_WIDGET(button), "network_port" ) ) );
-    if( i_port > 65535 )
-    {
-        intf_ErrMsg( "intf error: invalid port %i", i_port );
-    }
-
-    /* do we have a broadcast address */
-    b_broadcast = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(
-        lookup_widget( GTK_WIDGET(button), "network_broadcast_check" ) ) );
-    if( b_broadcast )
-    {
-        char *  psz_broadcast;
-        psz_broadcast = gtk_entry_get_text( GTK_ENTRY( lookup_widget(
-                                 GTK_WIDGET(button), "network_broadcast" ) ) );
-        /* Allocate room for "protocol://server:port" */
-        psz_source = malloc( strlen( psz_protocol ) + 3 /* "://" */
-                               + strlen( psz_server ) + 1 /* ":" */
-                               + 5 /* 0-65535 */
-                               + strlen( psz_broadcast ) + 2 /* "::" */ 
-                               + 1 /* "\0" */ );
-        if( psz_source == NULL )
-        {
-            return;
-        }
-
-        /* Build source name and add it to playlist */
-        sprintf( psz_source, "%s://%s:%i/%s", psz_protocol,
-                                              psz_server,
-                                              i_port,
-                                              psz_broadcast );
-    }
-    else
-    {
-        /* Allocate room for "protocol://server:port" */
-        psz_source = malloc( strlen( psz_protocol ) + 3 /* "://" */
-                               + strlen( psz_server ) + 1 /* ":" */
-                               + 5 /* 0-65535 */ + 1 /* "\0" */ );
-        if( psz_source == NULL )
-        {
-            return;
-        }
-       
-        /* Build source name and add it to playlist */
-        sprintf( psz_source, "%s://%s:%i", psz_protocol, psz_server, i_port );
-    }
-
     /* Manage channel server */
     b_channel = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(
         lookup_widget( GTK_WIDGET(button), "network_channel_check" ) ) );
@@ -380,24 +373,73 @@ void GtkNetworkOpenOk( GtkButton *button, gpointer user_data )
         {
             main_PutIntVariable( INPUT_CHANNEL_PORT_VAR, i_channel_port );
         }
-    }
 
-    intf_PlaylistAdd( p_main->p_playlist, PLAYLIST_END, psz_source );
-    free( psz_source );
+        p_intf->p_sys->b_playing = 1;
 
-    /* catch the GTK CList */
-    p_playlist_clist = GTK_CLIST( gtk_object_get_data(
-        GTK_OBJECT( p_intf->p_sys->p_playlist ), "playlist_clist" ) );
-    /* update the display */
-    GtkRebuildCList( p_playlist_clist, p_main->p_playlist );
-
-    /* select added item */
-    if( p_intf->p_input != NULL )
-    {
-        p_intf->p_input->b_eof = 1;
     }
+    else
+    {
+        /* Get the port number and make sure it will not
+         * overflow 5 characters */
+        i_port = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(
+                     lookup_widget( GTK_WIDGET(button), "network_port" ) ) );
+        if( i_port > 65535 )
+        {
+            intf_ErrMsg( "intf error: invalid port %i", i_port );
+        }
 
-    intf_PlaylistJumpto( p_main->p_playlist, i_end - 1 );
+        /* do we have a broadcast address */
+        b_broadcast = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(
+            lookup_widget( GTK_WIDGET(button), "network_broadcast_check" ) ) );
+        if( b_broadcast )
+        {
+            char *  psz_broadcast;
+            psz_broadcast = gtk_entry_get_text( GTK_ENTRY( lookup_widget(
+                            GTK_WIDGET(button), "network_broadcast" ) ) );
+            /* Allocate room for "protocol://server:port" */
+            psz_source = malloc( strlen( psz_protocol ) + 3 /* "://" */
+                                   + strlen( psz_server ) + 1 /* ":" */
+                                   + 5 /* 0-65535 */
+                                   + strlen( psz_broadcast ) + 2 /* "::" */ 
+                                   + 1 /* "\0" */ );
+            if( psz_source == NULL )
+            {
+                return;
+            }
+
+            /* Build source name and add it to playlist */
+            sprintf( psz_source, "%s://%s:%i/%s", psz_protocol,
+                                                  psz_server,
+                                                  i_port,
+                                                  psz_broadcast );
+        }
+        else
+        {
+            /* Allocate room for "protocol://server:port" */
+            psz_source = malloc( strlen( psz_protocol ) + 3 /* "://" */
+                                   + strlen( psz_server ) + 1 /* ":" */
+                                   + 5 /* 0-65535 */ + 1 /* "\0" */ );
+            if( psz_source == NULL )
+            {
+                return;
+            }
+           
+            /* Build source name and add it to playlist */
+            sprintf( psz_source, "%s://%s:%i",
+                     psz_protocol, psz_server, i_port );
+        }
+
+        intf_PlaylistAdd( p_main->p_playlist, PLAYLIST_END, psz_source );
+        free( psz_source );
+        
+        /* catch the GTK CList */
+        p_playlist_clist = GTK_CLIST( gtk_object_get_data(
+            GTK_OBJECT( p_intf->p_sys->p_playlist ), "playlist_clist" ) );
+        /* update the display */
+        GtkRebuildCList( p_playlist_clist, p_main->p_playlist );
+
+        intf_PlaylistJumpto( p_main->p_playlist, i_end - 1 );
+    }
 }
 
 void GtkNetworkOpenCancel( GtkButton * button, gpointer user_data)
@@ -427,21 +469,49 @@ void GtkNetworkOpenChannel( GtkToggleButton * togglebutton,
                             gpointer user_data )
 {
     GtkWidget *     p_network;
+    boolean_t       b_channel;
+    boolean_t       b_broadcast;
 
     p_network = gtk_widget_get_toplevel( GTK_WIDGET (togglebutton) );
+    b_channel = gtk_toggle_button_get_active( togglebutton );
+    b_broadcast = gtk_toggle_button_get_active( gtk_object_get_data(
+                  GTK_OBJECT( p_network ), "network_broadcast_check" ) );
+        
+    gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_network ),
+            "network_channel_combo" ), b_channel ) ;
 
     gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_network ),
-            "network_channel_combo" ),
-            gtk_toggle_button_get_active( togglebutton ) );
+            "network_channel" ), b_channel );
 
     gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_network ),
-            "network_channel" ),
-            gtk_toggle_button_get_active( togglebutton ) );
+            "network_channel_port" ), b_channel );
 
     gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_network ),
-            "network_channel_port" ),
-            gtk_toggle_button_get_active( togglebutton ) );
+            "network_channel_port_label" ), b_channel );
+
+    gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_network ),
+            "network_server_combo" ), ! b_channel );
+
+    gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_network ),
+            "network_server_label" ), ! b_channel );
+
+    gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_network ),
+            "network_server" ), ! b_channel );
+
+    gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_network ),
+            "network_port_label" ), ! b_channel );
+
+    gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_network ),
+            "network_port" ), ! b_channel );
+
+    gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_network ),
+            "network_broadcast_check" ), ! b_channel );
+    
+    gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_network ),
+            "network_broadcast_combo" ), b_broadcast && ! b_channel );
 
+    gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_network ),
+            "network_broadcast" ), b_broadcast && ! b_channel );
 }
 
 
index 84fc17cd72c43c9e255213c6ae5008fc520f42dd..f3a02905e4bf9ae2305dd008f2b27c19b65404c6 100644 (file)
@@ -2,7 +2,7 @@
  * intf_gnome.c: Gnome interface
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: intf_gnome.c,v 1.4 2001/10/04 00:50:24 sam Exp $
+ * $Id: intf_gnome.c,v 1.5 2001/11/16 00:29:52 stef Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -145,6 +145,7 @@ static int intf_Open( intf_thread_t *p_intf )
     }
 
     /* Initialize Gnome thread */
+    p_intf->p_sys->b_playing = 1;
     p_intf->p_sys->b_popup_changed = 0;
     p_intf->p_sys->b_window_changed = 0;
     p_intf->p_sys->b_playlist_changed = 0;
@@ -325,6 +326,7 @@ static gint GnomeManage( gpointer p_data )
         {
             GtkModeManage( p_intf );
             GtkSetupMenus( p_intf );
+            p_intf->p_sys->b_playing = 1;
         }
 
         /* Manage the slider */
@@ -370,9 +372,10 @@ static gint GnomeManage( gpointer p_data )
 
         vlc_mutex_unlock( &p_intf->p_input->stream.stream_lock );
     }
-    else if( !p_intf->b_die )
+    else if( p_intf->p_sys->b_playing && !p_intf->b_die )
     {
         GtkModeManage( p_intf );
+        p_intf->p_sys->b_playing = 0;
     }
 
     /* Manage core vlc functions through the callback */
index 8c21e7b5c5a8a24ebcd8ec1e029166c83ee3a77b..c50963256b56f8f6a96c38fab30af0c030b9f2a2 100644 (file)
            <update_policy>GTK_UPDATE_ALWAYS</update_policy>
            <snap>False</snap>
            <wrap>False</wrap>
-           <value>1</value>
+           <value>0</value>
            <lower>0</lower>
            <upper>100</upper>
            <step>1</step>
@@ -1953,7 +1953,7 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;
 
          <widget>
            <class>GtkLabel</class>
-           <name>label17</name>
+           <name>network_server_label</name>
            <label>Address</label>
            <justify>GTK_JUSTIFY_CENTER</justify>
            <wrap>False</wrap>
@@ -1979,7 +1979,7 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;
 
          <widget>
            <class>GtkLabel</class>
-           <name>label18</name>
+           <name>network_port_label</name>
            <label>Port</label>
            <justify>GTK_JUSTIFY_CENTER</justify>
            <wrap>False</wrap>
@@ -2194,7 +2194,7 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;
 
        <widget>
          <class>GtkLabel</class>
-         <name>channel_port</name>
+         <name>network_channel_port_label</name>
          <label>port:</label>
          <justify>GTK_JUSTIFY_CENTER</justify>
          <wrap>False</wrap>
index 0d7bc2010204bfa6dbec95e1e80390dbdae5483a..4d2ee9fac94c09dd97ffe05b3870e5adeb6e4985 100644 (file)
@@ -2,7 +2,7 @@
  * intf_gtk.c: Gtk+ interface
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: intf_gtk.c,v 1.26 2001/10/04 00:50:24 sam Exp $
+ * $Id: intf_gtk.c,v 1.27 2001/11/16 00:29:52 stef Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -146,6 +146,7 @@ static int intf_Open( intf_thread_t *p_intf )
     }
 
     /* Initialize Gtk+ thread */
+    p_intf->p_sys->b_playing = 1;
     p_intf->p_sys->b_popup_changed = 0;
     p_intf->p_sys->b_window_changed = 0;
     p_intf->p_sys->b_playlist_changed = 0;
@@ -325,6 +326,7 @@ static gint GtkManage( gpointer p_data )
         {
             GtkModeManage( p_intf );
             GtkSetupMenus( p_intf );
+            p_intf->p_sys->b_playing = 1;
         }
 
         /* Manage the slider */
@@ -371,9 +373,10 @@ static gint GtkManage( gpointer p_data )
         vlc_mutex_unlock( &p_intf->p_input->stream.stream_lock );
 
     }
-    else if( !p_intf->b_die )
+    else if( p_intf->p_sys->b_playing && !p_intf->b_die )
     {
         GtkModeManage( p_intf );
+        p_intf->p_sys->b_playing = 0;
     }
 
     /* Manage core vlc functions through the callback */
index 2ffab62472ef28e4cea1091218ac0bd1b3465e17..871bb0bc30dae2d8b39caa143765498f4a8506da 100644 (file)
          <update_policy>GTK_UPDATE_ALWAYS</update_policy>
          <snap>False</snap>
          <wrap>False</wrap>
-         <value>1</value>
+         <value>0</value>
          <lower>0</lower>
          <upper>100</upper>
          <step>1</step>
@@ -2064,7 +2064,7 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;</label>
 
            <widget>
              <class>GtkLabel</class>
-             <name>label24</name>
+             <name>network_port_label</name>
              <label>Port</label>
              <justify>GTK_JUSTIFY_CENTER</justify>
              <wrap>False</wrap>
@@ -2090,7 +2090,7 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;</label>
 
            <widget>
              <class>GtkLabel</class>
-             <name>label25</name>
+             <name>network_server_label</name>
              <label>Address</label>
              <justify>GTK_JUSTIFY_CENTER</justify>
              <wrap>False</wrap>
@@ -2288,7 +2288,7 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;</label>
 
          <widget>
            <class>GtkLabel</class>
-           <name>channel_port</name>
+           <name>network_channel_port_label</name>
            <label>port:</label>
            <justify>GTK_JUSTIFY_CENTER</justify>
            <wrap>False</wrap>
index 8cc266f26b9850d0f3cb2d86479aad61b867977b..8d225ee754d4ae4e473cf2cccba021a2af0e7acb 100644 (file)
@@ -2,7 +2,7 @@
  * intf_gtk.h: private Gtk+ interface description
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: intf_gtk.h,v 1.8 2001/10/04 00:50:24 sam Exp $
+ * $Id: intf_gtk.h,v 1.9 2001/11/16 00:29:52 stef Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -43,6 +43,7 @@ static __inline__ intf_thread_t * GetIntf( GtkWidget *item, char * psz_parent )
 typedef struct intf_sys_s
 {
     /* special actions */
+    boolean_t           b_playing;
     boolean_t           b_popup_changed;                   /* display menu ? */
     boolean_t           b_window_changed;        /* window display toggled ? */
     boolean_t           b_playlist_changed;    /* playlist display toggled ? */
index b4a1d6df45b95a7d6e925a17efeedf3d0cdb69b3..12c15503aad842a368483bff8b992f681f4fea4b 100644 (file)
@@ -2,7 +2,7 @@
  * netutils.c: various network functions
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: netutils.c,v 1.45 2001/11/13 00:46:23 sam Exp $
+ * $Id: netutils.c,v 1.46 2001/11/16 00:29:52 stef Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *          Benoit Steiner <benny@via.ecp.fr>
@@ -402,8 +402,15 @@ int network_ChannelJoin( int i_channel )
 #   define p_item \
         (&p_main->p_playlist->p_item[ p_main->p_playlist->i_index + 1])
         vlc_mutex_lock( &p_main->p_playlist->change_lock );
-        free( p_item->psz_name );
-        p_item->psz_name = strdup( psz_mess );
+        if( p_item )
+        {
+            free( p_item->psz_name );
+            p_item->psz_name = strdup( psz_mess );
+        }
+        else
+        {
+            intf_PlaylistAdd( p_main->p_playlist, 0, psz_mess );
+        }
         vlc_mutex_unlock( &p_main->p_playlist->change_lock );
     }