* gtk_callbacks.c : Callbacks for the Gtk+ plugin.
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
+ * $Id: gtk_callbacks.c,v 1.22 2001/05/30 17:03:12 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
+ * Stéphane Borel <stef@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
-#define MODULE_NAME gtk
-#include "modules_inner.h"
-
/*****************************************************************************
* Preamble
*****************************************************************************/
#include "defs.h"
+#include <sys/types.h> /* off_t */
+#include <stdlib.h>
#include <gtk/gtk.h>
+#include <string.h>
+
#include "config.h"
#include "common.h"
#include "threads.h"
#include "input_ext-intf.h"
#include "interface.h"
-#include "intf_plst.h"
+#include "intf_playlist.h"
#include "intf_msg.h"
-#include "gtk_sys.h"
+#include "video.h"
+#include "video_output.h"
+
#include "gtk_callbacks.h"
#include "gtk_interface.h"
#include "gtk_support.h"
+#include "intf_gtk.h"
#include "main.h"
+#include "netutils.h"
-/*****************************************************************************
- * Inline function to retrieve the interface structure
- *****************************************************************************/
-static __inline__ intf_thread_t * GetIntf( GtkWidget *item, char * psz_parent )
-{
- return( gtk_object_get_data( GTK_OBJECT( lookup_widget(item, psz_parent) ),
- "p_intf" ) );
-}
+#include "modules_export.h"
/*****************************************************************************
* Callbacks
- ******************************************************************************/
-void
-on_menubar_open_activate (GtkMenuItem *menuitem,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
-
- /* If we have never used the file selector, open it */
- if( p_intf->p_sys->p_fileopen == NULL)
- {
- p_intf->p_sys->p_fileopen = create_intf_fileopen();
- gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_fileopen ),
- "p_intf", p_intf );
- }
-
- gtk_widget_show( p_intf->p_sys->p_fileopen );
- gdk_window_raise( p_intf->p_sys->p_fileopen->window );
-}
+ *****************************************************************************/
+/*
+ * Main interface callbacks
+ */
-void
-on_menubar_exit_activate (GtkMenuItem *menuitem,
- gpointer user_data)
+gboolean GtkExit( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data )
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+ vlc_mutex_lock( &p_intf->change_lock );
p_intf->b_die = 1;
-}
-
+ vlc_mutex_unlock( &p_intf->change_lock );
-void
-on_menubar_playlist_activate (GtkMenuItem *menuitem,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
-
- if( !GTK_IS_WIDGET( p_intf->p_sys->p_playlist ) )
- {
-// p_intf->p_sys->p_playlist = create_intf_playlist();
- gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_playlist ),
- "p_intf", p_intf );
- }
- gtk_widget_show( p_intf->p_sys->p_playlist );
- gdk_window_raise( p_intf->p_sys->p_playlist->window );
+ return TRUE;
}
-
-void
-on_menubar_preferences_activate (GtkMenuItem *menuitem,
- gpointer user_data)
+gboolean GtkWindowDelete( GtkWidget *widget,
+ GdkEvent *event,
+ gpointer user_data )
{
+ GtkExit( GTK_WIDGET( widget ), NULL, user_data );
+ return TRUE;
}
-void
-on_menubar_about_activate (GtkMenuItem *menuitem,
- gpointer user_data)
+gboolean GtkWindowToggle( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data )
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
-
- if( !GTK_IS_WIDGET( p_intf->p_sys->p_about ) )
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+
+ if( GTK_WIDGET_VISIBLE(p_intf->p_sys->p_window) )
{
- p_intf->p_sys->p_about = create_intf_about();
- gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_about ),
- "p_intf", p_intf );
- }
- gtk_widget_show( p_intf->p_sys->p_about );
- gdk_window_raise( p_intf->p_sys->p_about->window );
-}
-
+ gtk_widget_hide( p_intf->p_sys->p_window);
-void
-on_toolbar_open_clicked (GtkButton *button,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_window" );
-
- /* If we have never used the file selector, open it */
- if( p_intf->p_sys->p_fileopen == NULL)
+ }
+ else
{
- p_intf->p_sys->p_fileopen = create_intf_fileopen();
- gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_fileopen ),
- "p_intf", p_intf );
+ gtk_widget_show( p_intf->p_sys->p_window );
}
- gtk_widget_show( p_intf->p_sys->p_fileopen );
- gdk_window_raise( p_intf->p_sys->p_fileopen->window );
+ return TRUE;
}
-
-void
-on_toolbar_back_clicked (GtkButton *button,
- gpointer user_data)
+gboolean GtkFullscreen( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data)
{
+ if( p_vout_bank->i_count )
+ {
+ vlc_mutex_lock( &p_vout_bank->pp_vout[0]->change_lock );
-}
-
-
-void
-on_toolbar_stop_clicked (GtkButton *button,
- gpointer user_data)
-{
-
-}
-
+ p_vout_bank->pp_vout[0]->i_changes |= VOUT_FULLSCREEN_CHANGE;
-void
-on_toolbar_play_clicked (GtkButton *button,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_window" );
+ vlc_mutex_unlock( &p_vout_bank->pp_vout[0]->change_lock );
- if( p_intf->p_input != NULL )
+ return TRUE;
+ }
+ else
{
- input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
+ return FALSE;
}
}
-
-void
-on_toolbar_pause_clicked (GtkButton *button,
- gpointer user_data)
+void GtkWindowDrag( GtkWidget *widget,
+ GdkDragContext *drag_context,
+ gint x,
+ gint y,
+ GtkSelectionData *data,
+ guint info,
+ guint time,
+ gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_window" );
+ intf_thread_t * p_intf = GetIntf( GTK_WIDGET(widget), "intf_window" );
+ int end = p_main->p_playlist->i_size;
+ GtkDropDataReceived( p_intf, data, info, PLAYLIST_END );
if( p_intf->p_input != NULL )
{
- input_SetStatus( p_intf->p_input, INPUT_STATUS_PAUSE );
+ /* FIXME: temporary hack */
+ p_intf->p_input->b_eof = 1;
}
+
+ intf_PlaylistJumpto( p_main->p_playlist, end-1 );
}
-void
-on_toolbar_playlist_clicked (GtkButton *button,
- gpointer user_data)
+/****************************************************************************
+ * Slider management
+ ****************************************************************************/
+
+gboolean GtkSliderRelease( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data )
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_window" );
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), "intf_window" );
- if( !GTK_IS_WIDGET( p_intf->p_sys->p_playlist ) )
- {
-// p_intf->p_sys->p_playlist = create_intf_playlist();
- gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_playlist ),
- "p_intf", p_intf );
- }
- gtk_widget_show( p_intf->p_sys->p_playlist );
- gdk_window_raise( p_intf->p_sys->p_playlist->window );
+ vlc_mutex_lock( &p_intf->change_lock );
+ p_intf->p_sys->b_slider_free = 1;
+ vlc_mutex_unlock( &p_intf->change_lock );
+
+ return FALSE;
}
-void
-on_toolbar_prev_clicked (GtkButton *button,
- gpointer user_data)
+gboolean GtkSliderPress( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_window" );
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), "intf_window" );
- if( p_intf->p_input != NULL )
- {
- /* FIXME: temporary hack */
- intf_PlstPrev( p_main->p_playlist );
- intf_PlstPrev( p_main->p_playlist );
- p_intf->p_input->b_eof = 1;
- }
+ vlc_mutex_lock( &p_intf->change_lock );
+ p_intf->p_sys->b_slider_free = 0;
+ vlc_mutex_unlock( &p_intf->change_lock );
+
+ return FALSE;
}
-void
-on_toolbar_next_clicked (GtkButton *button,
- gpointer user_data)
+/****************************************************************************
+ * DVD specific items
+ ****************************************************************************/
+
+void GtkTitlePrev( GtkButton * button, gpointer user_data )
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_window" );
+ intf_thread_t * p_intf;
+ input_area_t * p_area;
+ int i_id;
- if( p_intf->p_input != NULL )
+ p_intf = GetIntf( GTK_WIDGET(button), (char*)user_data );
+ i_id = p_intf->p_input->stream.p_selected_area->i_id - 1;
+
+ /* Disallow area 0 since it is used for video_ts.vob */
+ if( i_id > 0 )
{
- /* FIXME: temporary hack */
- p_intf->p_input->b_eof = 1;
+ p_area = p_intf->p_input->stream.pp_areas[i_id];
+ input_ChangeArea( p_intf->p_input, (input_area_t*)p_area );
+
+ input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
+
+ p_intf->p_sys->b_title_update = 1;
+ GtkSetupMenus( p_intf );
}
}
-void
-on_popup_play_activate (GtkMenuItem *menuitem,
- gpointer user_data)
+void GtkTitleNext( GtkButton * button, gpointer user_data )
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
+ intf_thread_t * p_intf;
+ input_area_t * p_area;
+ int i_id;
- if( p_intf->p_input != NULL )
+ p_intf = GetIntf( GTK_WIDGET(button), (char*)user_data );
+ i_id = p_intf->p_input->stream.p_selected_area->i_id + 1;
+
+ if( i_id < p_intf->p_input->stream.i_area_nb )
{
+ p_area = p_intf->p_input->stream.pp_areas[i_id];
+ input_ChangeArea( p_intf->p_input, (input_area_t*)p_area );
+
input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
+
+ p_intf->p_sys->b_title_update = 1;
+ GtkSetupMenus( p_intf );
}
+
}
-void
-on_popup_pause_activate (GtkMenuItem *menuitem,
- gpointer user_data)
+void GtkChapterPrev( GtkButton * button, gpointer user_data )
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
+ intf_thread_t * p_intf;
+ input_area_t * p_area;
- if( p_intf->p_input != NULL )
+ p_intf = GetIntf( GTK_WIDGET(button), (char*)user_data );
+ p_area = p_intf->p_input->stream.p_selected_area;
+
+ if( p_area->i_part > 0 )
{
- input_SetStatus( p_intf->p_input, INPUT_STATUS_PAUSE );
+ p_area->i_part--;
+ input_ChangeArea( p_intf->p_input, (input_area_t*)p_area );
+
+ input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
+
+ p_intf->p_sys->b_chapter_update = 1;
+ GtkSetupMenus( p_intf );
}
}
-void
-on_popup_exit_activate (GtkMenuItem *menuitem,
- gpointer user_data)
+void GtkChapterNext( GtkButton * button, gpointer user_data )
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
+ intf_thread_t * p_intf;
+ input_area_t * p_area;
- p_intf->b_die = 1;
-}
+ p_intf = GetIntf( GTK_WIDGET(button), (char*)user_data );
+ p_area = p_intf->p_input->stream.p_selected_area;
+ if( p_area->i_part < p_area->i_part_nb )
+ {
+ p_area->i_part++;
+ input_ChangeArea( p_intf->p_input, (input_area_t*)p_area );
-void
-on_intf_window_destroy (GtkObject *object,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(object), "intf_window" );
+ input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
- /* FIXME don't destroy the window, just hide it */
- p_intf->b_die = 1;
- p_intf->p_sys->p_window = NULL;
+ p_intf->p_sys->b_chapter_update = 1;
+ GtkSetupMenus( p_intf );
+ }
}
-
-void
-on_fileopen_ok_clicked (GtkButton *button,
- gpointer user_data)
+/****************************************************************************
+ * Network specific items
+ ****************************************************************************/
+void GtkNetworkJoin( GtkEditable * editable, gpointer user_data )
{
- GtkWidget *filesel;
- gchar *filename;
+ int i_channel;
- filesel = gtk_widget_get_toplevel (GTK_WIDGET (button));
- gtk_widget_hide (filesel);
- filename = gtk_file_selection_get_filename (GTK_FILE_SELECTION (filesel));
+ i_channel = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( editable ) );
+ intf_WarnMsg( 3, "intf info: joining channel %d", i_channel );
- intf_PlstAdd( p_main->p_playlist, PLAYLIST_END, (char*)filename );
+// network_ChannelJoin( i_channel );
}
-
-void
-on_fileopen_cancel_clicked (GtkButton *button,
- gpointer user_data)
+void GtkChannelGo( GtkButton * button, gpointer user_data )
{
- gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
-}
+ GtkWidget * window;
+ GtkWidget * spin;
+ int i_channel;
+ window = gtk_widget_get_toplevel( GTK_WIDGET (button) );
+ spin = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT( window ),
+ "network_channel_spinbutton" ) );
-void
-on_intf_fileopen_destroy (GtkObject *object,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(object), "intf_fileopen" );
+ i_channel = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( spin ) );
+ intf_WarnMsg( 3, "intf info: joining channel %d", i_channel );
- p_intf->p_sys->p_fileopen = NULL;
+ network_ChannelJoin( i_channel );
}
-void
-on_popup_open_activate (GtkMenuItem *menuitem,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
-
- /* If we have never used the file selector, open it */
- if( p_intf->p_sys->p_fileopen == NULL)
- {
- p_intf->p_sys->p_fileopen = create_intf_fileopen();
- gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_fileopen ),
- "p_intf", p_intf );
- }
-
- gtk_widget_show( p_intf->p_sys->p_fileopen );
- gdk_window_raise( p_intf->p_sys->p_fileopen->window );
-}
-
+/****************************************************************************
+ * About box
+ ****************************************************************************/
-void
-on_popup_about_activate (GtkMenuItem *menuitem,
- gpointer user_data)
+gboolean GtkAboutShow( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
if( !GTK_IS_WIDGET( p_intf->p_sys->p_about ) )
{
}
gtk_widget_show( p_intf->p_sys->p_about );
gdk_window_raise( p_intf->p_sys->p_about->window );
-}
+ return TRUE;
+}
-void
-on_intf_playlist_destroy (GtkObject *object,
- gpointer user_data)
+void GtkAboutOk( GtkButton * button, gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(object), "intf_playlist" );
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), (char*)user_data );
- p_intf->p_sys->p_playlist = NULL;
+ gtk_widget_hide( p_intf->p_sys->p_about );
}
-void
-on_playlist_close_clicked (GtkButton *button,
- gpointer user_data)
-{
- gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
-}
+/****************************************************************************
+ * Jump box
+ ****************************************************************************/
-
-void
-on_popup_slow_activate (GtkMenuItem *menuitem,
- gpointer user_data)
+gboolean GtkJumpShow( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
- if( p_intf->p_input != NULL )
+ if( !GTK_IS_WIDGET( p_intf->p_sys->p_jump ) )
{
- input_SetStatus( p_intf->p_input, INPUT_STATUS_SLOWER );
+ p_intf->p_sys->p_jump = create_intf_jump();
+ gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_jump ),
+ "p_intf", p_intf );
}
-}
-
-void
-on_popup_fast_activate (GtkMenuItem *menuitem,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
+ gtk_widget_show( p_intf->p_sys->p_jump );
+ gdk_window_raise( p_intf->p_sys->p_jump->window );
- if( p_intf->p_input != NULL )
- {
- input_SetStatus( p_intf->p_input, INPUT_STATUS_FASTER );
- }
+ return FALSE;
}
-void
-on_toolbar_slow_clicked (GtkButton *button,
- gpointer user_data)
+void GtkJumpOk( GtkButton *button,
+ gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_window" );
-
- if( p_intf->p_input != NULL )
- {
- input_SetStatus( p_intf->p_input, INPUT_STATUS_SLOWER );
- }
-}
-
+ intf_thread_t * p_intf;
+ off_t i_seek;
+ off_t i_size;
+ int i_hours;
+ int i_minutes;
+ int i_seconds;
-void
-on_toolbar_fast_clicked (GtkButton *button,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_window" );
+ p_intf = GetIntf( GTK_WIDGET( button ), (char*)user_data );
- if( p_intf->p_input != NULL )
- {
- input_SetStatus( p_intf->p_input, INPUT_STATUS_FASTER );
- }
-}
+#define GET_VALUE( name ) \
+ gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( gtk_object_get_data( \
+ GTK_OBJECT( p_intf->p_sys->p_jump ), name ) ) )
+ i_hours = GET_VALUE( "jump_hour_spinbutton" );
+ i_minutes = GET_VALUE( "jump_minute_spinbutton" );
+ i_seconds = GET_VALUE( "jump_second_spinbutton" );
-gboolean
-on_hscale_button_release_event (GtkWidget *widget,
- GdkEventButton *event,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), "intf_window" );
+#undef GET_VALUE
- GtkAdjustment *p_adj = gtk_range_get_adjustment( GTK_RANGE(widget) );
- off_t i_seek;
+ i_seconds += 60 *i_minutes + 3600* i_hours;
- vlc_mutex_lock( &p_intf->p_sys->change_lock );
+ vlc_mutex_lock( &p_intf->p_input->stream.stream_lock );
+ i_seek = i_seconds * 50 * p_intf->p_input->stream.i_mux_rate;
+ i_size = p_intf->p_input->stream.p_selected_area->i_size;
+ vlc_mutex_unlock( &p_intf->p_input->stream.stream_lock );
- if( p_intf->p_input != NULL )
+ if( i_seek < i_size )
{
- i_seek = (p_adj->value *
- p_intf->p_input->stream.p_selected_area->i_size) / 100;
input_Seek( p_intf->p_input, i_seek );
}
- p_intf->p_sys->b_scale_isfree = 1;
-
- vlc_mutex_unlock( &p_intf->p_sys->change_lock );
-
- return FALSE;
-}
-
-
-gboolean
-on_hscale_button_press_event (GtkWidget *widget,
- GdkEventButton *event,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), "intf_window" );
-
- vlc_mutex_lock( &p_intf->p_sys->change_lock );
- p_intf->p_sys->b_scale_isfree = 0;
- vlc_mutex_unlock( &p_intf->p_sys->change_lock );
-
- return FALSE;
-}
-
-
-
-void
-on_intf_modules_destroy (GtkObject *object,
- gpointer user_data)
-{
-
-}
-
-
-void
-on_modules_ok_clicked (GtkButton *button,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_modules" );
-
- gtk_widget_hide( p_intf->p_sys->p_modules );
-
+ p_main->p_playlist->b_stopped = 0;
+ gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
}
-void
-on_modules_apply_clicked (GtkButton *button,
- gpointer user_data)
+void GtkJumpCancel( GtkButton *button,
+ gpointer user_data)
{
-
+ gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
}
-void
-on_modules_cancel_clicked (GtkButton *button,
- gpointer user_data)
+/****************************************************************************
+ * Callbacks for menuitems
+ ****************************************************************************/
+void GtkExitActivate( GtkMenuItem * menuitem, gpointer user_data )
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_modules" );
-
- gtk_widget_hide( p_intf->p_sys->p_modules );
+ GtkExit( GTK_WIDGET( menuitem ), NULL, user_data );
}
-void
-on_playlist_ok_clicked (GtkButton *button,
- gpointer user_data)
+void GtkFullscreenActivate( GtkMenuItem * menuitem, gpointer user_data )
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_playlist" );
-
- gtk_widget_hide( p_intf->p_sys->p_playlist );
+ GtkFullscreen( GTK_WIDGET( menuitem ), NULL, user_data );
}
-void
-on_menubar_modules_activate (GtkMenuItem *menuitem,
- gpointer user_data)
+void GtkWindowToggleActivate( GtkMenuItem * menuitem, gpointer user_data )
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
-
- if( !GTK_IS_WIDGET( p_intf->p_sys->p_modules ) )
- {
-// p_intf->p_sys->p_modules = create_intf_modules();
- gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_modules ),
- "p_intf", p_intf );
- }
- gtk_widget_show( p_intf->p_sys->p_modules );
- gdk_window_raise( p_intf->p_sys->p_modules->window );
+ GtkWindowToggle( GTK_WIDGET( menuitem ), NULL, user_data );
}
-void
-on_intf_window_drag_data_received (GtkWidget *widget,
- GdkDragContext *drag_context,
- gint x,
- gint y,
- GtkSelectionData *data,
- guint info,
- guint time,
- gpointer user_data)
+void GtkAboutActivate( GtkMenuItem * menuitem, gpointer user_data )
{
- char *psz_text = data->data;
- int i_len = strlen( psz_text );
-
- switch( info )
- {
- case DROP_ACCEPT_TEXT_PLAIN: /* FIXME: handle multiple files */
-
- if( i_len < 1 )
- {
- return;
- }
-
- /* get rid of ' ' at the end */
- *( psz_text + i_len - 1 ) = 0;
-
- intf_WarnMsg( 1, "intf: dropped text/uri-list data `%s'", psz_text );
- intf_PlstAdd( p_main->p_playlist, PLAYLIST_END, psz_text );
-
- break;
-
- case DROP_ACCEPT_TEXT_URI_LIST: /* FIXME: handle multiple files */
-
- if( i_len < 2 )
- {
- return;
- }
-
- /* get rid of \r\n at the end */
- *( psz_text + i_len - 2 ) = 0;
-
- intf_WarnMsg( 1, "intf: dropped text/uri-list data `%s'", psz_text );
- intf_PlstAdd( p_main->p_playlist, PLAYLIST_END, psz_text );
- break;
-
- default:
-
- intf_ErrMsg( "intf error: unknown dropped type");
- break;
- }
+ GtkAboutShow( GTK_WIDGET( menuitem ), NULL, user_data );
}
-void
-on_about_ok_clicked (GtkButton *button,
- gpointer user_data)
+void GtkJumpActivate( GtkMenuItem * menuitem, gpointer user_data )
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_about" );
-
- gtk_widget_hide( p_intf->p_sys->p_about );
+ GtkJumpShow( GTK_WIDGET( menuitem ), NULL, user_data );
}