* gtk_menu.c : functions to handle menu items.
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
- * $Id: gtk_menu.c,v 1.3 2001/05/19 00:39:30 stef Exp $
+ * $Id: gtk_menu.c,v 1.16 2001/12/07 18:33:07 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Stéphane Borel <stef@via.ecp.fr>
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
-#define MODULE_NAME gtk
-#include "modules_inner.h"
-
/*****************************************************************************
* Preamble
*****************************************************************************/
#include <sys/types.h> /* off_t */
#include <stdlib.h>
-#include <gtk/gtk.h>
+#define gtk 12
+#define gnome 42
+#if ( MODULE_NAME == gtk )
+# include <gtk/gtk.h>
+#elif ( MODULE_NAME == gnome )
+# include <gnome.h>
+#endif
+#undef gtk
+#undef gnome
#include <string.h>
-#include "config.h"
#include "common.h"
+#include "intf_msg.h"
#include "threads.h"
#include "mtime.h"
#include "interface.h"
#include "intf_playlist.h"
-#include "intf_msg.h"
#include "video.h"
#include "video_output.h"
#include "gtk_playlist.h"
#include "intf_gtk.h"
-#include "main.h"
+#include "modules_export.h"
/*
* Local Prototypes
* user_data to transmit intf_* and we need to refresh the other menu.
****************************************************************************/
-#define GtkLangToggle( intf, menu, type, callback, b_update ) \
+#define GTKLANGTOGGLE( intf, window, menu, type, callback, b_update ) \
intf_thread_t * p_intf; \
GtkWidget * p_menu; \
es_descriptor_t * p_es; \
if( !p_intf->p_sys->b_update ) \
{ \
p_menu = GTK_WIDGET( gtk_object_get_data( \
- GTK_OBJECT( p_intf->p_sys->p_popup ), (menu) ) ); \
+ GTK_OBJECT( p_intf->p_sys->window ), (menu) ) ); \
p_es = (es_descriptor_t*)user_data; \
\
input_ToggleES( p_intf->p_input, p_es, menuitem->active ); \
void GtkMenubarAudioToggle( GtkCheckMenuItem * menuitem, gpointer user_data )
{
- GtkLangToggle( "intf_window", "popup_audio", AUDIO_ES,
+ GTKLANGTOGGLE( "intf_window", p_popup, "popup_audio", AUDIO_ES,
GtkPopupAudioToggle, b_audio_update );
}
void GtkPopupAudioToggle( GtkCheckMenuItem * menuitem, gpointer user_data )
{
- GtkLangToggle( "intf_popup", "menubar_audio", AUDIO_ES,
+ GTKLANGTOGGLE( "intf_popup", p_window, "menubar_audio", AUDIO_ES,
GtkMenubarAudioToggle, b_audio_update );
}
void GtkMenubarSubtitleToggle( GtkCheckMenuItem * menuitem, gpointer user_data )
{
- GtkLangToggle( "intf_window", "popup_subpictures", SPU_ES,
+ GTKLANGTOGGLE( "intf_window", p_popup, "popup_subpictures", SPU_ES,
GtkPopupSubtitleToggle, b_spu_update );
}
void GtkPopupSubtitleToggle( GtkCheckMenuItem * menuitem, gpointer user_data )
{
- GtkLangToggle( "intf_popup", "menubar_subpictures", SPU_ES,
+ GTKLANGTOGGLE( "intf_popup", p_window, "menubar_subpictures", SPU_ES,
GtkMenubarSubtitleToggle, b_spu_update );
}
-#undef GtkLangToggle
+#undef GTKLANGTOGGLE
/*
* Navigation
input_ChangeArea( p_intf->p_input, (input_area_t*)p_area );
p_intf->p_sys->b_chapter_update = 1;
+ vlc_mutex_lock( &p_intf->p_input->stream.stream_lock );
GtkSetupMenus( p_intf );
+ vlc_mutex_unlock( &p_intf->p_input->stream.stream_lock );
input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
}
if( menuitem->active && !p_intf->p_sys->b_title_update )
{
- gint i_title = (gint)user_data;
+ gint i_title = (gint)((long)user_data);
input_ChangeArea( p_intf->p_input,
p_intf->p_input->stream.pp_areas[i_title] );
p_intf->p_sys->b_title_update = 1;
+ vlc_mutex_lock( &p_intf->p_input->stream.stream_lock );
GtkSetupMenus( p_intf );
+ vlc_mutex_unlock( &p_intf->p_input->stream.stream_lock );
p_intf->p_sys->b_title_update = 0;
input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
p_area = p_intf->p_input->stream.p_selected_area;
- i_chapter = (gint)user_data;
+ i_chapter = (gint)((long)user_data);
if( menuitem->active && !p_intf->p_sys->b_chapter_update )
{
* Angle
*/
-#define GtkAngleToggle( intf, window, menu, callback ) \
+#define GTKANGLETOGGLE( intf, window, menu, callback ) \
intf_thread_t * p_intf; \
GtkWidget * p_menu; \
input_area_t * p_area; \
p_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT( \
p_intf->p_sys->window ), (menu) ) ); \
p_area = p_intf->p_input->stream.p_selected_area; \
- p_area->i_angle = (gint)user_data; \
+ p_area->i_angle = (gint)((long)user_data); \
\
input_ChangeArea( p_intf->p_input, (input_area_t*)p_area ); \
\
void GtkMenubarAngleToggle( GtkCheckMenuItem * menuitem, gpointer user_data )
{
- GtkAngleToggle( "intf_window", p_popup, "popup_angle",
+ GTKANGLETOGGLE( "intf_window", p_popup, "popup_angle",
GtkPopupAngleToggle );
}
void GtkPopupAngleToggle( GtkCheckMenuItem * menuitem, gpointer user_data )
{
- GtkAngleToggle( "intf_popup", p_window, "menubar_angle",
+ GTKANGLETOGGLE( "intf_popup", p_window, "menubar_angle",
GtkMenubarAngleToggle );
}
-#undef GtkAngleToggle
+#undef GTKANGLETOGGLE
/****************************************************************************
* Functions to generate menus
gtk_signal_connect( GTK_OBJECT( p_item ),
"toggled",
GTK_SIGNAL_FUNC( pf_toggle ),
- (gpointer)(i_item + 1) );
+ (gpointer)((long)(i_item + 1)) );
if( i_nb > 20 )
{
p_intf->p_sys->b_audio_update |= p_intf->p_sys->b_title_update;
p_intf->p_sys->b_spu_update |= p_intf->p_sys->b_title_update;
- vlc_mutex_lock( &p_intf->p_input->stream.stream_lock );
+// vlc_mutex_lock( &p_intf->p_input->stream.stream_lock );
if( p_intf->p_sys->b_title_update )
{
p_menubar_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
p_intf->p_sys->p_window ), "menubar_chapter" ) );
+
GtkRadioMenu( p_intf, p_menubar_menu, NULL, "Chapter",
p_intf->p_input->stream.p_selected_area->i_part_nb,
p_intf->p_input->stream.p_selected_area->i_part,
p_intf->p_sys->b_spu_update = 0;
}
+ vlc_mutex_lock( &p_intf->p_input->stream.stream_lock );
+
return TRUE;
}