]> git.sesse.net Git - vlc/blobdiff - modules/gui/gtk/gtk_callbacks.c
Remove slp and joystick plugins
[vlc] / modules / gui / gtk / gtk_callbacks.c
index 89a0ca29ea089d54cafb0c4a2dc6851e161edf7b..5c17f40603bfd1a01ece3e9ad7fa4aefa6c8a359 100644 (file)
@@ -1,10 +1,10 @@
 /*****************************************************************************
  * gtk_callbacks.c : Callbacks for the Gtk+ plugin.
  *****************************************************************************
- * Copyright (C) 2000, 2001 VideoLAN
- * $Id: gtk_callbacks.c,v 1.7 2003/01/17 19:17:09 sam Exp $
+ * Copyright (C) 2000, 2001, 2003 the VideoLAN team
+ * $Id$
  *
- * Authors: Samuel Hocevar <sam@zoy.org>
+ * Authors: Sam Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
  *          Julien BLACHE <jb@technologeek.org>
  *
@@ -32,6 +32,7 @@
 #include <vlc/vlc.h>
 #include <vlc/intf.h>
 #include <vlc/vout.h>
+#include <vlc/aout.h>
 
 #include <unistd.h>
 
 
 #include "common.h"
 
-#include "netutils.h"
+#ifdef HAVE_CDDAX
+#define CDDA_MRL "cddax://"
+#else
+#define CDDA_MRL "cdda://"
+#endif
+
+#ifdef HAVE_VCDX
+#define VCD_MRL "vcdx://"
+#else
+#define VCD_MRL "vcdx://"
+#endif
 
 /*****************************************************************************
  * Useful function to retrieve p_intf
@@ -71,11 +82,15 @@ void * E_(__GtkGetIntf)( GtkWidget * widget )
 
         /* Otherwise, the parent widget has it */
         widget = gtk_menu_get_attach_widget( GTK_MENU( widget ) );
+        p_data = gtk_object_get_data( GTK_OBJECT( widget ), "p_intf" );
+        if( p_data )
+        {
+            return p_data;
+        }
     }
 
     /* We look for the top widget */
     widget = gtk_widget_get_toplevel( GTK_WIDGET( widget ) );
-
     p_data = gtk_object_get_data( GTK_OBJECT( widget ), "p_intf" );
 
     return p_data;
@@ -147,6 +162,11 @@ gboolean GtkFullscreen( GtkWidget       *widget,
     intf_thread_t *p_intf = GtkGetIntf( widget );
     vout_thread_t *p_vout;
 
+    if( p_intf->p_sys->p_input == NULL )
+    {
+        return FALSE;
+    }
+
     p_vout = vlc_object_find( p_intf->p_sys->p_input,
                               VLC_OBJECT_VOUT, FIND_CHILD );
     if( p_vout == NULL )
@@ -211,147 +231,55 @@ gboolean GtkSliderPress( GtkWidget       *widget,
 
 void GtkTitlePrev( GtkButton * button, gpointer user_data )
 {
-    intf_thread_t *  p_intf;
-    input_area_t *   p_area;
-    int              i_id;
+    intf_thread_t *  p_intf = GtkGetIntf( button );
 
-    p_intf = GtkGetIntf( button );
-    vlc_mutex_lock( &p_intf->p_sys->p_input->stream.stream_lock );
-    i_id = p_intf->p_sys->p_input->stream.p_selected_area->i_id - 1;
-
-    if( i_id > 0 )
-    {
-        p_area = p_intf->p_sys->p_input->stream.pp_areas[i_id];
-        vlc_mutex_unlock( &p_intf->p_sys->p_input->stream.stream_lock );
-
-        input_ChangeArea( p_intf->p_sys->p_input, p_area );
-        input_SetStatus( p_intf->p_sys->p_input, INPUT_STATUS_PLAY );
-
-        p_intf->p_sys->b_title_update = VLC_TRUE;
-        vlc_mutex_lock( &p_intf->p_sys->p_input->stream.stream_lock );
-        GtkSetupMenus( p_intf );
-    }
+    var_SetVoid( p_intf->p_sys->p_input, "prev-title" );
 
+    p_intf->p_sys->b_title_update = VLC_TRUE;
+    vlc_mutex_lock( &p_intf->p_sys->p_input->stream.stream_lock );
+    GtkSetupMenus( p_intf );
     vlc_mutex_unlock( &p_intf->p_sys->p_input->stream.stream_lock );
 }
 
 
 void GtkTitleNext( GtkButton * button, gpointer user_data )
 {
-    intf_thread_t * p_intf;
-    input_area_t *  p_area;
-    unsigned int    i_id;
-
-    p_intf = GtkGetIntf( button );
-    vlc_mutex_lock( &p_intf->p_sys->p_input->stream.stream_lock );
-    i_id = p_intf->p_sys->p_input->stream.p_selected_area->i_id + 1;
-
-    if( i_id < p_intf->p_sys->p_input->stream.i_area_nb )
-    {
-        p_area = p_intf->p_sys->p_input->stream.pp_areas[i_id];
-        vlc_mutex_unlock( &p_intf->p_sys->p_input->stream.stream_lock );
-
-        input_ChangeArea( p_intf->p_sys->p_input, p_area );
-        input_SetStatus( p_intf->p_sys->p_input, INPUT_STATUS_PLAY );
+    intf_thread_t * p_intf = GtkGetIntf( button );
 
-        p_intf->p_sys->b_title_update = VLC_TRUE;
-        vlc_mutex_lock( &p_intf->p_sys->p_input->stream.stream_lock );
-        GtkSetupMenus( p_intf );
-    }
+    var_SetVoid( p_intf->p_sys->p_input, "next-title" );
 
+    p_intf->p_sys->b_title_update = VLC_TRUE;
+    vlc_mutex_lock( &p_intf->p_sys->p_input->stream.stream_lock );
+    GtkSetupMenus( p_intf );
     vlc_mutex_unlock( &p_intf->p_sys->p_input->stream.stream_lock );
 }
 
 
 void GtkChapterPrev( GtkButton * button, gpointer user_data )
 {
-    intf_thread_t * p_intf;
-    input_area_t *  p_area;
+    intf_thread_t *  p_intf = GtkGetIntf( button );
 
-    p_intf = GtkGetIntf( button );
-    vlc_mutex_lock( &p_intf->p_sys->p_input->stream.stream_lock );
-    p_area = p_intf->p_sys->p_input->stream.p_selected_area;
-
-    if( p_area->i_part - 1 > 0 )
-    {
-        p_area->i_part--;
-        vlc_mutex_unlock( &p_intf->p_sys->p_input->stream.stream_lock );
-
-        input_ChangeArea( p_intf->p_sys->p_input, p_area );
-        input_SetStatus( p_intf->p_sys->p_input, INPUT_STATUS_PLAY );
-
-        p_intf->p_sys->b_chapter_update = VLC_TRUE;
-        vlc_mutex_lock( &p_intf->p_sys->p_input->stream.stream_lock );
-        GtkSetupMenus( p_intf );
-    }
+    var_SetVoid( p_intf->p_sys->p_input, "prev-chapter" );
 
+    p_intf->p_sys->b_chapter_update = VLC_TRUE;
+    vlc_mutex_lock( &p_intf->p_sys->p_input->stream.stream_lock );
+    GtkSetupMenus( p_intf );
     vlc_mutex_unlock( &p_intf->p_sys->p_input->stream.stream_lock );
 }
 
 
 void GtkChapterNext( GtkButton * button, gpointer user_data )
 {
-    intf_thread_t * p_intf;
-    input_area_t *  p_area;
-
-    p_intf = GtkGetIntf( button );
-    vlc_mutex_lock( &p_intf->p_sys->p_input->stream.stream_lock );
-    p_area = p_intf->p_sys->p_input->stream.p_selected_area;
+    intf_thread_t *  p_intf = GtkGetIntf( button );
 
-    if( p_area->i_part + 1 < p_area->i_part_nb )
-    {
-        p_area->i_part++;
-        vlc_mutex_unlock( &p_intf->p_sys->p_input->stream.stream_lock );
-
-        input_ChangeArea( p_intf->p_sys->p_input, p_area );
-        input_SetStatus( p_intf->p_sys->p_input, INPUT_STATUS_PLAY );
-
-        p_intf->p_sys->b_chapter_update = VLC_TRUE;
-        vlc_mutex_lock( &p_intf->p_sys->p_input->stream.stream_lock );
-        GtkSetupMenus( p_intf );
-    }
+    var_SetVoid( p_intf->p_sys->p_input, "next-chapter" );
 
+    p_intf->p_sys->b_chapter_update = VLC_TRUE;
+    vlc_mutex_lock( &p_intf->p_sys->p_input->stream.stream_lock );
+    GtkSetupMenus( p_intf );
     vlc_mutex_unlock( &p_intf->p_sys->p_input->stream.stream_lock );
 }
 
-/****************************************************************************
- * Network specific items
- ****************************************************************************/
-void GtkNetworkJoin( GtkEditable * editable, gpointer user_data )
-{
-    int     i_channel;
-
-    i_channel = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( editable ) );
-#if 0
-    msg_Dbg( "intf info: joining channel %d", i_channel );
-
-    network_ChannelJoin( i_channel );
-#endif
-}
-
-void GtkChannelGo( GtkButton * button, gpointer user_data )
-{
-    GtkWidget *     window;
-    GtkWidget *     spin;
-    int             i_channel;
-
-    intf_thread_t *p_intf = GtkGetIntf( button );
-
-    window = gtk_widget_get_toplevel( GTK_WIDGET (button) );
-    spin = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT( window ),
-                       "network_channel_spinbutton" ) );
-
-    i_channel = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( spin ) );
-    msg_Dbg( p_intf, "joining channel %d", i_channel );
-
-    vlc_mutex_lock( &p_intf->change_lock );
-    network_ChannelJoin( p_intf, i_channel );
-    vlc_mutex_unlock( &p_intf->change_lock );
-
-/*    input_SetStatus( p_intf->p_sys->p_input, INPUT_STATUS_PLAY ); */
-}
-
-
 /****************************************************************************
  * About box
  ****************************************************************************/
@@ -423,9 +351,8 @@ void GtkJumpOk( GtkButton       *button,
     i_seconds = GET_VALUE( "jump_second_spinbutton" );
 #undef GET_VALUE
 
-    input_Seek( p_intf->p_sys->p_input,
-                i_seconds + 60 * i_minutes + 3600 * i_hours,
-                INPUT_SEEK_SECONDS | INPUT_SEEK_SET );
+    var_SetTime( p_intf->p_sys->p_input, "time",
+                 (int64_t)(i_seconds+60*i_minutes+3600*i_hours)*I64C(1000000));
 
     gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
 }
@@ -463,7 +390,7 @@ gboolean GtkDiscEject ( GtkWidget *widget, gpointer user_data )
         return FALSE;
     }
 
-    psz_current = p_playlist->pp_items[ p_playlist->i_index ]->psz_name;
+    psz_current = p_playlist->pp_items[ p_playlist->i_index ]->input.psz_name;
 
     /*
      * Get the active input
@@ -477,31 +404,45 @@ gboolean GtkDiscEject ( GtkWidget *widget, gpointer user_data )
 
     if( psz_current != NULL )
     {
-        if( !strncmp(psz_current, "dvd:", 4) )
+        if( !strncmp(psz_current, "dvd://", 4) )
         {
-            switch( psz_current[4] )
+            switch( psz_current[strlen("dvd://")] )
             {
             case '\0':
             case '@':
                 psz_device = config_GetPsz( p_intf, "dvd" );
                 break;
             default:
-                /* Omit the first 4 characters */
-                psz_device = strdup( psz_current + 4 );
+                /* Omit the first MRL-selector characters */
+                psz_device = strdup( psz_current + strlen("dvd://" ) );
                 break;
             }
         }
-        else if( !strncmp(psz_current, "vcd:", 4) )
+        else if( !strncmp(psz_current, "vcd:", strlen("vcd:")) )
         {
-            switch( psz_current[4] )
+            switch( psz_current[strlen("vcd:")] )
             {
             case '\0':
             case '@':
-                psz_device = config_GetPsz( p_intf, "vcd" );
+                psz_device = config_GetPsz( p_intf, VCD_MRL );
                 break;
             default:
-                /* Omit the first 4 characters */
-                psz_device = strdup( psz_current + 4 );
+                /* Omit the beginning MRL-selector characters */
+                psz_device = strdup( psz_current + strlen(VCD_MRL) );
+                break;
+            }
+        }
+        else if( !strncmp(psz_current, CDDA_MRL, strlen(CDDA_MRL) ) )
+        {
+            switch( psz_current[strlen(CDDA_MRL)] )
+            {
+            case '\0':
+            case '@':
+                psz_device = config_GetPsz( p_intf, "cd-audio" );
+                break;
+            default:
+                /* Omit the beginning MRL-selector characters */
+                psz_device = strdup( psz_current + strlen(CDDA_MRL) );
                 break;
             }
         }
@@ -568,7 +509,6 @@ gboolean GtkMessagesShow( GtkWidget       *widget,
     return TRUE;
 }
 
-
 void
 GtkMessagesOk                          (GtkButton       *button,
                                         gpointer         user_data)
@@ -598,3 +538,61 @@ GtkOpenNotebookChanged                 (GtkNotebook     *notebook,
     GtkOpenChanged( GTK_WIDGET( notebook ), user_data );
 }
 
+/****************************************************************************
+ * Audio management
+ ****************************************************************************/
+void GtkVolumeUp                      ( GtkMenuItem     *menuitem,
+                                        gpointer         user_data )
+{
+    intf_thread_t   *p_intf = GtkGetIntf( menuitem );
+    audio_volume_t  i_volume;
+
+    aout_VolumeUp( p_intf, 1, &i_volume );
+    p_intf->p_sys->b_mute = ( i_volume == 0 ) ? 1 : 0;
+}
+
+
+void GtkVolumeDown                    ( GtkMenuItem     *menuitem,
+                                        gpointer         user_data )
+{
+    intf_thread_t   *p_intf = GtkGetIntf( menuitem );
+    audio_volume_t  i_volume;
+
+    aout_VolumeDown( p_intf, 1, &i_volume );
+    p_intf->p_sys->b_mute = ( i_volume == 0 ) ? 1 : 0;
+}
+
+
+void GtkVolumeMute                    ( GtkMenuItem     *menuitem,
+                                        gpointer         user_data )
+{
+    intf_thread_t   *p_intf = GtkGetIntf( menuitem );
+    audio_volume_t i_volume;
+
+    aout_VolumeMute( p_intf, &i_volume );
+    p_intf->p_sys->b_mute = ( i_volume == 0 ) ? 1 : 0;
+}
+
+void
+GtkMenubarDeinterlace                  ( GtkMenuItem     *menuitem,
+                                        gpointer         user_data)
+{
+    intf_thread_t   *p_intf = GtkGetIntf( menuitem );
+
+    if( p_intf )
+        msg_Dbg( p_intf, "GtkMenubarDeinterlace" );
+}
+
+
+void
+GtkPopupDeinterlace                    (GtkRadioMenuItem *radiomenuitem,
+                                        gpointer         user_data)
+{
+    intf_thread_t   *p_intf = GtkGetIntf( radiomenuitem );
+
+    if( p_intf )
+        msg_Dbg( p_intf, "GtkPopupDeinterlace" );
+}
+
+
+