* intf_playlist.h : Playlist functions
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
- * $Id: intf_playlist.h,v 1.2 2001/03/21 13:42:33 sam Exp $
+ * $Id: intf_playlist.h,v 1.3 2001/05/15 01:01:44 stef Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
int i_mode; /* parse mode (random, forward, backward) */
int i_seed; /* seed used for random mode */
+ boolean_t b_stopped;
vlc_mutex_t change_lock;
* -dvd_udf to find files
*****************************************************************************
* Copyright (C) 1998-2001 VideoLAN
- * $Id: input_dvd.c,v 1.57 2001/05/07 04:42:42 sam Exp $
+ * $Id: input_dvd.c,v 1.58 2001/05/15 01:01:44 stef Exp $
*
* Author: Stéphane Borel <stef@via.ecp.fr>
*
vlc_mutex_lock( &p_input->stream.stream_lock );
+ /* we can't use the interface slider until initilization is complete */
+ p_input->stream.b_seekable = 0;
+
if( p_area != p_input->stream.p_selected_area )
{
/* uodate title environnement variable so that we don't
* loop on the same title forever */
- main_PutIntVariable( INPUT_TITLE_VAR, p_dvd->i_title + 1 );
+// main_PutIntVariable( INPUT_TITLE_VAR, p_dvd->i_title + 1 );
/* ifo vts */
if( IfoTitleSet( p_dvd->p_ifo ) < 0 )
}
/* warn interface that something has changed */
+ p_input->stream.b_seekable = 1;
p_input->stream.b_changed = 1;
+intf_WarnMsg( 3, "Pos: %lld Size: %lld", p_input->stream.p_selected_area->i_tell,p_input->stream.p_selected_area->i_size );
vlc_mutex_unlock( &p_input->stream.stream_lock );
if( b_eot )
{
+ intf_WarnMsg( 3, "dvd info: new title" );
p_dvd->i_title++;
DVDSetArea( p_input, p_area );
return 0;
* gnome_callbacks.c : Callbacks for the Gnome plugin.
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
- * $Id: gnome_callbacks.c,v 1.28 2001/05/10 06:47:31 sam Exp $
+ * $Id: gnome_callbacks.c,v 1.29 2001/05/15 01:01:44 stef Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Stéphane Borel <stef@via.ecp.fr>
guint time,
gpointer user_data)
{
-#if 0
- 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( 3, "intf: dropped text/uri-list data `%s'", psz_text );
- intf_PlaylistAdd( 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( 3, "intf: dropped text/uri-list data `%s'", psz_text );
- intf_PlaylistAdd( p_main->p_playlist, PLAYLIST_END, psz_text );
- break;
-
- default:
-
- intf_ErrMsg( "intf error: unknown dropped type");
- break;
- }
-#else
intf_thread_t * p_intf = GetIntf( GTK_WIDGET( widget ), "intf_window" );
int i_end = p_main->p_playlist->i_size;
}
intf_PlaylistJumpto( p_main->p_playlist, i_end - 1 );
-
-#endif
+ p_main->p_playlist->b_stopped = 0;
}
if( p_intf->p_input != NULL )
{
- p_vout_bank->pp_vout[0]->b_die = 1;
- p_aout_bank->pp_aout[0]->b_die = 1;
- p_intf->p_input->b_die = 1;
+ p_intf->p_input->b_eof = 1;
+ p_main->p_playlist->i_index--;
}
+ p_main->p_playlist->b_stopped = 1;
}
{
input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
}
+ else if( p_main->p_playlist->b_stopped )
+ {
+ if( p_main->p_playlist->i_size )
+ {
+ intf_PlaylistJumpto( p_main->p_playlist,
+ p_main->p_playlist->i_index );
+ p_main->p_playlist->b_stopped = 0;
+ }
+ else
+ {
+ on_toolbar_open_clicked( button, user_data );
+ }
+ }
+
}
if( p_intf->p_input != NULL )
{
input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
+ p_main->p_playlist->b_stopped = 0;
}
}
}
intf_PlaylistJumpto( p_main->p_playlist, i_end - 1 );
+ p_main->p_playlist->b_stopped = 0;
}
}
intf_PlaylistJumpto( p_main->p_playlist, i_end - 1 );
+ p_main->p_playlist->b_stopped = 0;
}
}
intf_PlaylistJumpto( p_main->p_playlist, i_end - 1 );
+ p_main->p_playlist->b_stopped = 0;
}
{
input_Seek( p_intf->p_input, i_seek );
}
+ p_main->p_playlist->b_stopped = 0;
#endif
}
{
gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
}
-
* gnome_callbacks.h : Callbacks for the Gnome plugin.
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
- * $Id: gnome_callbacks.h,v 1.16 2001/05/06 18:32:30 stef Exp $
+ * $Id: gnome_callbacks.h,v 1.17 2001/05/15 01:01:44 stef Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
void
on_popup_back_activate (GtkMenuItem *menuitem,
gpointer user_data);
+
+void
+on_playlist_destroy (GtkObject *object,
+ gpointer user_data);
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (slider);
gtk_container_add (GTK_CONTAINER (slider_frame), slider);
- gtk_widget_set_usize (slider, 500, 15);
gtk_scale_set_draw_value (GTK_SCALE (slider), FALSE);
gtk_scale_set_digits (GTK_SCALE (slider), 3);
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (file_box);
gtk_box_pack_start (GTK_BOX (vbox8), file_box, TRUE, TRUE, 0);
- gtk_widget_set_usize (file_box, 500, 24);
label_status = gtk_label_new ("");
gtk_widget_ref (label_status);
gtk_object_set_data_full (GTK_OBJECT (intf_window), "dvd_box", dvd_box,
(GtkDestroyNotify) gtk_widget_unref);
gtk_box_pack_start (GTK_BOX (vbox8), dvd_box, TRUE, TRUE, 0);
- gtk_widget_set_usize (dvd_box, 500, 24);
label21 = gtk_label_new (_("DVD "));
gtk_widget_ref (label21);
gtk_object_set_data_full (GTK_OBJECT (intf_window), "network_box", network_box,
(GtkDestroyNotify) gtk_widget_unref);
gtk_box_pack_start (GTK_BOX (vbox8), network_box, FALSE, FALSE, 0);
- gtk_widget_set_usize (network_box, 500, 24);
network_address_label = gtk_label_new (_("No server"));
gtk_widget_ref (network_address_label);
},
GNOMEUIINFO_SEPARATOR,
{
- GNOME_APP_UI_ITEM, N_("_Jump"),
+ GNOME_APP_UI_ITEM, N_("_Jump..."),
N_("Got directly so specified point"),
(gpointer) on_popup_jump_activate, NULL, NULL,
GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_JUMP_TO,
gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_preferences",
intf_popup_uiinfo[17].widget,
(GtkDestroyNotify) gtk_widget_unref);
- gtk_widget_set_sensitive (intf_popup_uiinfo[17].widget, FALSE);
gtk_widget_ref (intf_popup_uiinfo[18].widget);
gtk_object_set_data_full (GTK_OBJECT (intf_popup), "separator2",
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (playlist_frame);
gtk_container_add (GTK_CONTAINER (playlist_viewport), playlist_frame);
+ gtk_container_set_border_width (GTK_CONTAINER (playlist_frame), 4);
gtk_frame_set_label_align (GTK_FRAME (playlist_frame), 0.05, 0.5);
playlist_clist = gtk_clist_new (2);
gtk_widget_show (playlist_cancel);
GTK_WIDGET_SET_FLAGS (playlist_cancel, GTK_CAN_DEFAULT);
+ gtk_signal_connect (GTK_OBJECT (intf_playlist), "destroy",
+ GTK_SIGNAL_FUNC (on_playlist_destroy),
+ NULL);
gtk_signal_connect (GTK_OBJECT (playlist_clist), "event",
GTK_SIGNAL_FUNC (on_playlist_clist_event),
NULL);
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (jump_frame);
gtk_box_pack_start (GTK_BOX (jump_vbox), jump_frame, FALSE, FALSE, 0);
+ gtk_container_set_border_width (GTK_CONTAINER (jump_frame), 5);
gtk_frame_set_label_align (GTK_FRAME (jump_frame), 0.05, 0.5);
jump_box = gtk_hbox_new (FALSE, 0);
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (jump_box);
gtk_container_add (GTK_CONTAINER (jump_frame), jump_box);
+ gtk_container_set_border_width (GTK_CONTAINER (jump_box), 5);
jump_label3 = gtk_label_new (_("s."));
gtk_widget_ref (jump_label3);
GtkWidget *preferences_playlist_enqueue_as_default_checkbutton;
GtkWidget *preferences_playlist;
GtkWidget *preferences_misc_table;
+ GtkWidget *preferences_misc_associated_files_frame;
+ GtkWidget *preferences_misc_associated_table;
+ GtkWidget *preferences_misc_ts_checkbutton;
+ GtkWidget *preferences_misc_vob_checkbutton;
+ GtkWidget *preferences_misc_mp2_checkbutton;
+ GtkWidget *preferences_misc_mpeg_checkbutton;
GtkWidget *preferences_misc_message_frame;
GtkWidget *preferences_misc_message_table;
GtkWidget *preferences_misc_messages_label;
GtkObject *preferences_misc_messages_spinbutton_adj;
GtkWidget *preferences_misc_messages_spinbutton;
- GtkWidget *preferences_misc_associated_files_frame;
- GtkWidget *preferences_misc_associated_table;
- GtkWidget *preferences_misc_mpeg_checkbutton;
- GtkWidget *preferences_misc_mp2_checkbutton;
- GtkWidget *preferences_misc_vob_checkbutton;
- GtkWidget *preferences_misc_ts_checkbutton;
GtkWidget *preferences_misc;
GtkWidget *preferences_dialog;
GtkWidget *preferences_ok;
preferences_vbox = GNOME_DIALOG (intf_preferences)->vbox;
gtk_object_set_data (GTK_OBJECT (intf_preferences), "preferences_vbox", preferences_vbox);
gtk_widget_show (preferences_vbox);
+ gtk_container_set_border_width (GTK_CONTAINER (preferences_vbox), 5);
preferences_frame = gtk_frame_new (_("Preferences"));
gtk_widget_ref (preferences_frame);
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (preferences_file_table);
gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_file_table);
+ gtk_container_set_border_width (GTK_CONTAINER (preferences_file_table), 5);
+ gtk_table_set_row_spacings (GTK_TABLE (preferences_file_table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (preferences_file_table), 5);
preferences_file_combo = gnome_file_entry_new (NULL, NULL);
gtk_widget_ref (preferences_file_combo);
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (preferences_disc_table);
gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_disc_table);
+ gtk_container_set_border_width (GTK_CONTAINER (preferences_disc_table), 5);
+ gtk_table_set_row_spacings (GTK_TABLE (preferences_disc_table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (preferences_disc_table), 5);
preferences_disc_dvd_combo = gnome_file_entry_new (NULL, NULL);
gtk_widget_ref (preferences_disc_dvd_combo);
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (preferences_network_table);
gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_network_table);
+ gtk_container_set_border_width (GTK_CONTAINER (preferences_network_table), 5);
+ gtk_table_set_row_spacings (GTK_TABLE (preferences_network_table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (preferences_network_table), 5);
preferences_network_server_label = gtk_label_new (_("Default server: "));
gtk_widget_ref (preferences_network_server_label);
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (preferences_network_interface_table);
gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_network_interface_table);
+ gtk_container_set_border_width (GTK_CONTAINER (preferences_network_interface_table), 5);
+ gtk_table_set_row_spacings (GTK_TABLE (preferences_network_interface_table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (preferences_network_interface_table), 5);
preferences_interface_label = gtk_label_new (_("Default interface: "));
gtk_widget_ref (preferences_interface_label);
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (preferences_video_table);
gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_video_table);
+ gtk_container_set_border_width (GTK_CONTAINER (preferences_video_table), 5);
+ gtk_table_set_row_spacings (GTK_TABLE (preferences_video_table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (preferences_video_table), 5);
preferences_video_output_label = gtk_label_new (_("Default output: "));
gtk_widget_ref (preferences_video_output_label);
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (preference_audio_table);
gtk_container_add (GTK_CONTAINER (preferences_notebook), preference_audio_table);
+ gtk_container_set_border_width (GTK_CONTAINER (preference_audio_table), 5);
+ gtk_table_set_row_spacings (GTK_TABLE (preference_audio_table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (preference_audio_table), 5);
preferences_audio_spdif_checkbutton = gtk_check_button_new_with_label (_("Spdif output"));
gtk_widget_ref (preferences_audio_spdif_checkbutton);
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (preference_playlist_table);
gtk_container_add (GTK_CONTAINER (preferences_notebook), preference_playlist_table);
+ gtk_container_set_border_width (GTK_CONTAINER (preference_playlist_table), 5);
+ gtk_table_set_row_spacings (GTK_TABLE (preference_playlist_table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (preference_playlist_table), 5);
preferences_playlist_launch_on_startup_checkbutton = gtk_check_button_new_with_label (_("Launch on startup"));
gtk_widget_ref (preferences_playlist_launch_on_startup_checkbutton);
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (preferences_misc_table);
gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_misc_table);
-
- preferences_misc_message_frame = gtk_frame_new (_("Messages"));
- gtk_widget_ref (preferences_misc_message_frame);
- gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_message_frame", preferences_misc_message_frame,
- (GtkDestroyNotify) gtk_widget_unref);
- gtk_widget_show (preferences_misc_message_frame);
- gtk_table_attach (GTK_TABLE (preferences_misc_table), preferences_misc_message_frame, 1, 2, 0, 1,
- (GtkAttachOptions) (GTK_EXPAND),
- (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
- gtk_frame_set_label_align (GTK_FRAME (preferences_misc_message_frame), 0.05, 0.5);
-
- preferences_misc_message_table = gtk_table_new (1, 2, FALSE);
- gtk_widget_ref (preferences_misc_message_table);
- gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_message_table", preferences_misc_message_table,
- (GtkDestroyNotify) gtk_widget_unref);
- gtk_widget_show (preferences_misc_message_table);
- gtk_container_add (GTK_CONTAINER (preferences_misc_message_frame), preferences_misc_message_table);
-
- preferences_misc_messages_label = gtk_label_new (_("Warning level: "));
- gtk_widget_ref (preferences_misc_messages_label);
- gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_messages_label", preferences_misc_messages_label,
- (GtkDestroyNotify) gtk_widget_unref);
- gtk_widget_show (preferences_misc_messages_label);
- gtk_table_attach (GTK_TABLE (preferences_misc_message_table), preferences_misc_messages_label, 0, 1, 0, 1,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
-
- preferences_misc_messages_spinbutton_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 10);
- preferences_misc_messages_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (preferences_misc_messages_spinbutton_adj), 1, 0);
- gtk_widget_ref (preferences_misc_messages_spinbutton);
- gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_messages_spinbutton", preferences_misc_messages_spinbutton,
- (GtkDestroyNotify) gtk_widget_unref);
- gtk_widget_show (preferences_misc_messages_spinbutton);
- gtk_table_attach (GTK_TABLE (preferences_misc_message_table), preferences_misc_messages_spinbutton, 1, 2, 0, 1,
- (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
+ gtk_container_set_border_width (GTK_CONTAINER (preferences_misc_table), 5);
+ gtk_table_set_row_spacings (GTK_TABLE (preferences_misc_table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (preferences_misc_table), 5);
preferences_misc_associated_files_frame = gtk_frame_new (_("Files associated with vlc"));
gtk_widget_ref (preferences_misc_associated_files_frame);
gtk_widget_show (preferences_misc_associated_files_frame);
gtk_table_attach (GTK_TABLE (preferences_misc_table), preferences_misc_associated_files_frame, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_EXPAND),
- (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
+ (GtkAttachOptions) (GTK_FILL), 0, 0);
gtk_widget_set_sensitive (preferences_misc_associated_files_frame, FALSE);
gtk_frame_set_label_align (GTK_FRAME (preferences_misc_associated_files_frame), 0.05, 0.5);
gtk_widget_show (preferences_misc_associated_table);
gtk_container_add (GTK_CONTAINER (preferences_misc_associated_files_frame), preferences_misc_associated_table);
- preferences_misc_mpeg_checkbutton = gtk_check_button_new_with_label (_("mpeg"));
- gtk_widget_ref (preferences_misc_mpeg_checkbutton);
- gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_mpeg_checkbutton", preferences_misc_mpeg_checkbutton,
+ preferences_misc_ts_checkbutton = gtk_check_button_new_with_label (_("ts"));
+ gtk_widget_ref (preferences_misc_ts_checkbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_ts_checkbutton", preferences_misc_ts_checkbutton,
(GtkDestroyNotify) gtk_widget_unref);
- gtk_widget_show (preferences_misc_mpeg_checkbutton);
- gtk_table_attach (GTK_TABLE (preferences_misc_associated_table), preferences_misc_mpeg_checkbutton, 0, 1, 0, 1,
+ gtk_widget_show (preferences_misc_ts_checkbutton);
+ gtk_table_attach (GTK_TABLE (preferences_misc_associated_table), preferences_misc_ts_checkbutton, 0, 1, 3, 4,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+
+ preferences_misc_vob_checkbutton = gtk_check_button_new_with_label (_("vob"));
+ gtk_widget_ref (preferences_misc_vob_checkbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_vob_checkbutton", preferences_misc_vob_checkbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_misc_vob_checkbutton);
+ gtk_table_attach (GTK_TABLE (preferences_misc_associated_table), preferences_misc_vob_checkbutton, 0, 1, 2, 3,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
- preferences_misc_vob_checkbutton = gtk_check_button_new_with_label (_("vob"));
- gtk_widget_ref (preferences_misc_vob_checkbutton);
- gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_vob_checkbutton", preferences_misc_vob_checkbutton,
+ preferences_misc_mpeg_checkbutton = gtk_check_button_new_with_label (_("mpeg"));
+ gtk_widget_ref (preferences_misc_mpeg_checkbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_mpeg_checkbutton", preferences_misc_mpeg_checkbutton,
(GtkDestroyNotify) gtk_widget_unref);
- gtk_widget_show (preferences_misc_vob_checkbutton);
- gtk_table_attach (GTK_TABLE (preferences_misc_associated_table), preferences_misc_vob_checkbutton, 0, 1, 2, 3,
+ gtk_widget_show (preferences_misc_mpeg_checkbutton);
+ gtk_table_attach (GTK_TABLE (preferences_misc_associated_table), preferences_misc_mpeg_checkbutton, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
- preferences_misc_ts_checkbutton = gtk_check_button_new_with_label (_("ts"));
- gtk_widget_ref (preferences_misc_ts_checkbutton);
- gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_ts_checkbutton", preferences_misc_ts_checkbutton,
+ preferences_misc_message_frame = gtk_frame_new (_("Messages"));
+ gtk_widget_ref (preferences_misc_message_frame);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_message_frame", preferences_misc_message_frame,
(GtkDestroyNotify) gtk_widget_unref);
- gtk_widget_show (preferences_misc_ts_checkbutton);
- gtk_table_attach (GTK_TABLE (preferences_misc_associated_table), preferences_misc_ts_checkbutton, 0, 1, 3, 4,
+ gtk_widget_show (preferences_misc_message_frame);
+ gtk_table_attach (GTK_TABLE (preferences_misc_table), preferences_misc_message_frame, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_FILL), 0, 0);
+ gtk_frame_set_label_align (GTK_FRAME (preferences_misc_message_frame), 0.05, 0.5);
+
+ preferences_misc_message_table = gtk_table_new (1, 2, FALSE);
+ gtk_widget_ref (preferences_misc_message_table);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_message_table", preferences_misc_message_table,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_misc_message_table);
+ gtk_container_add (GTK_CONTAINER (preferences_misc_message_frame), preferences_misc_message_table);
+
+ preferences_misc_messages_label = gtk_label_new (_("Warning level: "));
+ gtk_widget_ref (preferences_misc_messages_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_messages_label", preferences_misc_messages_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_misc_messages_label);
+ gtk_table_attach (GTK_TABLE (preferences_misc_message_table), preferences_misc_messages_label, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
+ preferences_misc_messages_spinbutton_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 10);
+ preferences_misc_messages_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (preferences_misc_messages_spinbutton_adj), 1, 0);
+ gtk_widget_ref (preferences_misc_messages_spinbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_messages_spinbutton", preferences_misc_messages_spinbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_misc_messages_spinbutton);
+ gtk_table_attach (GTK_TABLE (preferences_misc_message_table), preferences_misc_messages_spinbutton, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+
preferences_misc = gtk_label_new (_("Misc"));
gtk_widget_ref (preferences_misc);
gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc", preferences_misc,
* gnome_playlist.c : Interface for the playlist dialog
*****************************************************************************
* Copyright (C) 2001 VideoLAN
- * $Id: gnome_playlist.c,v 1.2 2001/05/07 03:14:09 stef Exp $
+ * $Id: gnome_playlist.c,v 1.3 2001/05/15 01:01:44 stef Exp $
*
* Authors: Pierre Baillet <oct@zoy.org>
*
* The following callbacks are related to the playlist.
*****************************************************************************/
void
-on_intf_playlist_destroy (GtkObject *object,
+on_playlist_destroy (GtkObject *object,
gpointer user_data)
{
gtk_widget_hide( GTK_WIDGET(object));
p_intf->p_input->b_eof = 1;
}
intf_PlaylistJumpto( p_main->p_playlist, i_row - 1 );
+ p_main->p_playlist->b_stopped = 0;
}
return TRUE;
}
GtkCList * p_clist;
gint i_row;
gint i_col;
+ int i_end = p_main->p_playlist->i_size;
p_clist = GTK_CLIST( gtk_object_get_data( GTK_OBJECT(
p_intf->p_sys->p_playlist ), "playlist_clist" ) );
/* else, put that at the end of the playlist */
GnomeDropDataReceived( p_intf, data, info, PLAYLIST_END );
}
+
+ intf_PlaylistJumpto( p_main->p_playlist, i_end - 1 );
+ p_main->p_playlist->b_stopped = 0;
+
}
/* unlock the interface */
vlc_mutex_unlock( &p_intf->change_lock );
+
+ p_main->p_playlist->b_stopped = 0;
}
}
* intf_gnome.c: Gnome interface
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
- * $Id: intf_gnome.c,v 1.38 2001/05/10 06:47:31 sam Exp $
+ * $Id: intf_gnome.c,v 1.39 2001/05/15 01:01:44 stef Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Stéphane Borel <stef@via.ecp.fr>
}
snprintf( psz_name, GNOME_MENU_LABEL_SIZE,
- "Chapters %d to %d", i_item + 1, i_item + 10);
+ "%ss %d to %d", psz_item_name, i_item + 1, i_item + 10);
psz_name[ GNOME_MENU_LABEL_SIZE - 1 ] = '\0';
p_item_group = gtk_menu_item_new_with_label( psz_name );
gtk_widget_show( p_item_group );
/* control buttons for free pace streams */
b_control = p_intf->p_input->stream.b_pace_control;
gtk_widget_set_sensitive( GETWIDGET(p_window, "toolbar_back"), FALSE );
- gtk_widget_set_sensitive( GETWIDGET(p_window, "toolbar_stop"), FALSE );
- gtk_widget_set_sensitive( GETWIDGET(p_window, "toolbar_play"), b_control );
+ gtk_widget_set_sensitive( GETWIDGET(p_window, "toolbar_stop"), b_control );
+ gtk_widget_set_sensitive( GETWIDGET(p_window, "toolbar_play"), TRUE );
gtk_widget_set_sensitive( GETWIDGET(p_window, "toolbar_pause"), b_control );
gtk_widget_set_sensitive( GETWIDGET(p_window, "toolbar_slow"), b_control );
gtk_widget_set_sensitive( GETWIDGET(p_window, "toolbar_fast"), b_control );
gtk_widget_set_sensitive( GETWIDGET(p_popup, "popup_back"), FALSE );
gtk_widget_set_sensitive( GETWIDGET(p_popup, "popup_stop"), FALSE );
- gtk_widget_set_sensitive( GETWIDGET(p_popup, "popup_play"), b_control );
+ gtk_widget_set_sensitive( GETWIDGET(p_popup, "popup_play"), TRUE );
gtk_widget_set_sensitive( GETWIDGET(p_popup, "popup_pause"), b_control );
gtk_widget_set_sensitive( GETWIDGET(p_popup, "popup_slow"), b_control );
gtk_widget_set_sensitive( GETWIDGET(p_popup, "popup_fast"), b_control );
<class>GtkMenuBar</class>
<name>menubar</name>
<border_width>2</border_width>
- <width>500</width>
- <height>32</height>
<shadow_type>GTK_SHADOW_NONE</shadow_type>
<widget>
<widget>
<class>GtkHScale</class>
<name>slider</name>
- <width>500</width>
- <height>15</height>
<can_focus>True</can_focus>
<signal>
<name>button_press_event</name>
<widget>
<class>GtkHBox</class>
<name>file_box</name>
- <width>500</width>
- <height>24</height>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<child>
<widget>
<class>GtkHBox</class>
<name>dvd_box</name>
- <width>500</width>
- <height>24</height>
<visible>False</visible>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<widget>
<class>GtkHBox</class>
<name>network_box</name>
- <width>500</width>
- <height>24</height>
<visible>False</visible>
<homogeneous>True</homogeneous>
<spacing>0</spacing>
<handler>on_popup_jump_activate</handler>
<last_modification_time>Tue, 01 May 2001 22:22:49 GMT</last_modification_time>
</signal>
- <label>_Jump</label>
+ <label>_Jump...</label>
<right_justify>False</right_justify>
<stock_icon>GNOME_STOCK_MENU_JUMP_TO</stock_icon>
</widget>
<widget>
<class>GtkPixmapMenuItem</class>
<name>popup_preferences</name>
- <sensitive>False</sensitive>
<signal>
<name>activate</name>
<handler>on_popup_preferences_activate</handler>
<widget>
<class>GnomeDialog</class>
<name>intf_playlist</name>
+ <signal>
+ <name>destroy</name>
+ <handler>on_playlist_destroy</handler>
+ <last_modification_time>Tue, 08 May 2001 23:21:39 GMT</last_modification_time>
+ </signal>
<title>Playlist</title>
<type>GTK_WINDOW_TOPLEVEL</type>
<position>GTK_WIN_POS_NONE</position>
<widget>
<class>GtkFrame</class>
<name>playlist_frame</name>
+ <border_width>4</border_width>
<label>Playlist</label>
<label_xalign>0.05</label_xalign>
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
<homogeneous>False</homogeneous>
<spacing>8</spacing>
<child>
- <padding>4</padding>
+ <padding>0</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget>
<class>GtkFrame</class>
<name>jump_frame</name>
+ <border_width>5</border_width>
<label>Jump to: </label>
<label_xalign>0.05</label_xalign>
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
<widget>
<class>GtkHBox</class>
<name>jump_box</name>
+ <border_width>5</border_width>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<class>GtkVBox</class>
<child_name>GnomeDialog:vbox</child_name>
<name>preferences_vbox</name>
+ <border_width>5</border_width>
<homogeneous>False</homogeneous>
- <spacing>8</spacing>
+ <spacing>10</spacing>
<child>
- <padding>4</padding>
+ <padding>0</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget>
<class>GtkTable</class>
<name>preferences_file_table</name>
+ <border_width>5</border_width>
<rows>1</rows>
<columns>2</columns>
<homogeneous>False</homogeneous>
- <row_spacing>0</row_spacing>
- <column_spacing>0</column_spacing>
+ <row_spacing>5</row_spacing>
+ <column_spacing>5</column_spacing>
<widget>
<class>GnomeFileEntry</class>
<widget>
<class>GtkTable</class>
<name>preferences_disc_table</name>
+ <border_width>5</border_width>
<rows>2</rows>
<columns>2</columns>
<homogeneous>False</homogeneous>
- <row_spacing>0</row_spacing>
- <column_spacing>0</column_spacing>
+ <row_spacing>5</row_spacing>
+ <column_spacing>5</column_spacing>
<widget>
<class>GnomeFileEntry</class>
<widget>
<class>GtkTable</class>
<name>preferences_network_table</name>
+ <border_width>5</border_width>
<rows>7</rows>
<columns>2</columns>
<homogeneous>False</homogeneous>
- <row_spacing>0</row_spacing>
- <column_spacing>0</column_spacing>
+ <row_spacing>5</row_spacing>
+ <column_spacing>5</column_spacing>
<widget>
<class>GtkLabel</class>
<widget>
<class>GtkTable</class>
<name>preferences_network_interface_table</name>
+ <border_width>5</border_width>
<rows>1</rows>
<columns>2</columns>
<homogeneous>False</homogeneous>
- <row_spacing>0</row_spacing>
- <column_spacing>0</column_spacing>
+ <row_spacing>5</row_spacing>
+ <column_spacing>5</column_spacing>
<widget>
<class>GtkLabel</class>
<widget>
<class>GtkTable</class>
<name>preferences_video_table</name>
+ <border_width>5</border_width>
<rows>7</rows>
<columns>2</columns>
<homogeneous>False</homogeneous>
- <row_spacing>0</row_spacing>
- <column_spacing>0</column_spacing>
+ <row_spacing>5</row_spacing>
+ <column_spacing>5</column_spacing>
<widget>
<class>GtkLabel</class>
<widget>
<class>GtkTable</class>
<name>preference_audio_table</name>
+ <border_width>5</border_width>
<rows>6</rows>
<columns>2</columns>
<homogeneous>False</homogeneous>
- <row_spacing>0</row_spacing>
- <column_spacing>0</column_spacing>
+ <row_spacing>5</row_spacing>
+ <column_spacing>5</column_spacing>
<widget>
<class>GtkCheckButton</class>
<widget>
<class>GtkTable</class>
<name>preference_playlist_table</name>
+ <border_width>5</border_width>
<rows>3</rows>
<columns>1</columns>
<homogeneous>False</homogeneous>
- <row_spacing>0</row_spacing>
- <column_spacing>0</column_spacing>
+ <row_spacing>5</row_spacing>
+ <column_spacing>5</column_spacing>
<widget>
<class>GtkCheckButton</class>
<widget>
<class>GtkTable</class>
<name>preferences_misc_table</name>
+ <border_width>5</border_width>
<rows>1</rows>
<columns>2</columns>
<homogeneous>False</homogeneous>
- <row_spacing>0</row_spacing>
- <column_spacing>0</column_spacing>
+ <row_spacing>5</row_spacing>
+ <column_spacing>5</column_spacing>
<widget>
<class>GtkFrame</class>
- <name>preferences_misc_message_frame</name>
- <label>Messages</label>
+ <name>preferences_misc_associated_files_frame</name>
+ <sensitive>False</sensitive>
+ <label>Files associated with vlc</label>
<label_xalign>0.05</label_xalign>
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
<child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>True</xexpand>
- <yexpand>True</yexpand>
+ <yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>False</xfill>
<widget>
<class>GtkTable</class>
- <name>preferences_misc_message_table</name>
- <rows>1</rows>
- <columns>2</columns>
+ <name>preferences_misc_associated_table</name>
+ <rows>4</rows>
+ <columns>1</columns>
<homogeneous>False</homogeneous>
<row_spacing>0</row_spacing>
<column_spacing>0</column_spacing>
<widget>
- <class>GtkLabel</class>
- <name>preferences_misc_messages_label</name>
- <label>Warning level: </label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
+ <class>GtkCheckButton</class>
+ <name>preferences_misc_ts_checkbutton</name>
+ <can_focus>True</can_focus>
+ <label>ts</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
+ <top_attach>3</top_attach>
+ <bottom_attach>4</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
</widget>
<widget>
- <class>GtkSpinButton</class>
- <name>preferences_misc_messages_spinbutton</name>
+ <class>GtkCheckButton</class>
+ <name>preferences_misc_vob_checkbutton</name>
<can_focus>True</can_focus>
- <climb_rate>1</climb_rate>
- <digits>0</digits>
- <numeric>False</numeric>
- <update_policy>GTK_UPDATE_ALWAYS</update_policy>
- <snap>False</snap>
- <wrap>False</wrap>
- <value>0</value>
- <lower>0</lower>
- <upper>100</upper>
- <step>1</step>
- <page>10</page>
- <page_size>10</page_size>
+ <label>vob</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
<child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>2</top_attach>
+ <bottom_attach>3</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
- <xexpand>True</xexpand>
+ <xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<yfill>False</yfill>
</child>
</widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>preferences_misc_associated_files_frame</name>
- <sensitive>False</sensitive>
- <label>Files associated with vlc</label>
- <label_xalign>0.05</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkTable</class>
- <name>preferences_misc_associated_table</name>
- <rows>4</rows>
- <columns>1</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>0</row_spacing>
- <column_spacing>0</column_spacing>
<widget>
<class>GtkCheckButton</class>
- <name>preferences_misc_mpeg_checkbutton</name>
+ <name>preferences_misc_mp2_checkbutton</name>
<can_focus>True</can_focus>
- <label>mpeg</label>
+ <label>mp2</label>
<active>False</active>
<draw_indicator>True</draw_indicator>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<widget>
<class>GtkCheckButton</class>
- <name>preferences_misc_mp2_checkbutton</name>
+ <name>preferences_misc_mpeg_checkbutton</name>
<can_focus>True</can_focus>
- <label>mp2</label>
+ <label>mpeg</label>
<active>False</active>
<draw_indicator>True</draw_indicator>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yfill>False</yfill>
</child>
</widget>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkFrame</class>
+ <name>preferences_misc_message_frame</name>
+ <label>Messages</label>
+ <label_xalign>0.05</label_xalign>
+ <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>True</yfill>
+ </child>
+
+ <widget>
+ <class>GtkTable</class>
+ <name>preferences_misc_message_table</name>
+ <rows>1</rows>
+ <columns>2</columns>
+ <homogeneous>False</homogeneous>
+ <row_spacing>0</row_spacing>
+ <column_spacing>0</column_spacing>
<widget>
- <class>GtkCheckButton</class>
- <name>preferences_misc_vob_checkbutton</name>
- <can_focus>True</can_focus>
- <label>vob</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
+ <class>GtkLabel</class>
+ <name>preferences_misc_messages_label</name>
+ <label>Warning level: </label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
- <top_attach>2</top_attach>
- <bottom_attach>3</bottom_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
</widget>
<widget>
- <class>GtkCheckButton</class>
- <name>preferences_misc_ts_checkbutton</name>
+ <class>GtkSpinButton</class>
+ <name>preferences_misc_messages_spinbutton</name>
<can_focus>True</can_focus>
- <label>ts</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
+ <climb_rate>1</climb_rate>
+ <digits>0</digits>
+ <numeric>False</numeric>
+ <update_policy>GTK_UPDATE_ALWAYS</update_policy>
+ <snap>False</snap>
+ <wrap>False</wrap>
+ <value>0</value>
+ <lower>0</lower>
+ <upper>100</upper>
+ <step>1</step>
+ <page>10</page>
+ <page_size>10</page_size>
<child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>3</top_attach>
- <bottom_attach>4</bottom_attach>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
- <xexpand>False</xexpand>
+ <xexpand>True</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
# Objects
#
-PLUGIN_C = gtk.o intf_gtk.o gtk_callbacks.o gtk_interface.o gtk_support.o gtk_playlist.o
+PLUGIN_C = gtk.o intf_gtk.o gtk_callbacks.o gtk_interface.o gtk_support.o gtk_open.o gtk_control.o gtk_menu.o gtk_playlist.o gtk_modules.o gtk_preferences.o
BUILTIN_C = $(PLUGIN_C:%.o=BUILTIN_%.o)
ALL_OBJ = $(PLUGIN_C) $(BUILTIN_C)
* gtk_callbacks.c : Callbacks for the Gtk+ plugin.
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
- * $Id: gtk_callbacks.c,v 1.16 2001/05/06 18:32:30 stef Exp $
+ * $Id: gtk_callbacks.c,v 1.17 2001/05/15 01:01:44 stef Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Stéphane Borel <stef@via.ecp.fr>
* Preamble
*****************************************************************************/
#include "defs.h"
-#include <sys/types.h> /* off_t */
+#include <sys/types.h> /* off_t */
#include <stdlib.h>
#include <gtk/gtk.h>
#include "intf_playlist.h"
#include "intf_msg.h"
+#include "video.h"
+#include "video_output.h"
+
#include "gtk_callbacks.h"
#include "gtk_interface.h"
#include "gtk_support.h"
-#include "gtk_playlist.h"
#include "intf_gtk.h"
#include "main.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 );
- }
+/*
+ * Main interface callbacks
+ */
- gtk_widget_show( p_intf->p_sys->p_fileopen );
- gdk_window_raise( p_intf->p_sys->p_fileopen->window );
-}
-
-
-void
-on_menubar_exit_activate (GtkMenuItem *menuitem,
+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_preferences_activate (GtkMenuItem *menuitem,
- gpointer user_data)
-{
+ return TRUE;
}
-
-void
-on_menubar_about_activate (GtkMenuItem *menuitem,
+gboolean
+GtkWindowDelete (GtkWidget *widget,
+ GdkEvent *event,
gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
+ GtkExit( GTK_WIDGET( widget ), NULL, user_data );
- if( !GTK_IS_WIDGET( p_intf->p_sys->p_about ) )
- {
- 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 );
+ return TRUE;
}
-void
-on_toolbar_open_clicked (GtkButton *button,
+gboolean
+GtkWindowToggle (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), (char*)user_data );
+
+ if( GTK_WIDGET_VISIBLE(p_intf->p_sys->p_window) )
+ {
+ gtk_widget_hide( p_intf->p_sys->p_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 );
-}
-
-
-void
-on_toolbar_back_clicked (GtkButton *button,
- gpointer user_data)
-{
-
-}
-
-
-void
-on_toolbar_stop_clicked (GtkButton *button,
- gpointer user_data)
-{
-
+ return TRUE;
}
-
-void
-on_toolbar_play_clicked (GtkButton *button,
+gboolean
+GtkFullscreen (GtkWidget *widget,
+ GdkEventButton *event,
gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_window" );
-
- if( p_intf->p_input != NULL )
+ if( p_vout_bank->i_count )
{
- input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
+ vlc_mutex_lock( &p_vout_bank->pp_vout[0]->change_lock );
+ if( p_vout_bank->pp_vout[0]->b_fullscreen ==
+ !GTK_CHECK_MENU_ITEM( widget )->active )
+ p_vout_bank->pp_vout[0]->i_changes |= VOUT_FULLSCREEN_CHANGE;
+ vlc_mutex_unlock( &p_vout_bank->pp_vout[0]->change_lock );
}
-}
-
-void
-on_toolbar_pause_clicked (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_PAUSE );
- }
+ return TRUE;
}
void
-on_toolbar_prev_clicked (GtkButton *button,
+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 )
{
- /* FIXME: temporary hack */
- intf_PlaylistPrev( p_main->p_playlist );
- intf_PlaylistPrev( p_main->p_playlist );
- p_intf->p_input->b_eof = 1;
+ /* FIXME: temporary hack */
+ p_intf->p_input->b_eof = 1;
}
+
+ intf_PlaylistJumpto( p_main->p_playlist, end-1 );
+ p_main->p_playlist->b_stopped = 0;
}
-void
-on_toolbar_next_clicked (GtkButton *button,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_window" );
-
- if( p_intf->p_input != NULL )
- {
- /* FIXME: temporary hack */
- p_intf->p_input->b_eof = 1;
- }
-}
-
-void
-on_popup_play_activate (GtkMenuItem *menuitem,
+gboolean
+GtkSliderRelease (GtkWidget *widget,
+ GdkEventButton *event,
gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
-
- if( p_intf->p_input != NULL )
- {
- input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
- }
-}
-
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), "intf_window" );
-void
-on_popup_pause_activate (GtkMenuItem *menuitem,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
+ vlc_mutex_lock( &p_intf->change_lock );
+ p_intf->p_sys->b_slider_free = 1;
+ vlc_mutex_unlock( &p_intf->change_lock );
- if( p_intf->p_input != NULL )
- {
- input_SetStatus( p_intf->p_input, INPUT_STATUS_PAUSE );
- }
+ return FALSE;
}
-void
-on_popup_exit_activate (GtkMenuItem *menuitem,
+gboolean
+GtkSliderPress (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), "intf_window" );
vlc_mutex_lock( &p_intf->change_lock );
- p_intf->b_die = 1;
+ p_intf->p_sys->b_slider_free = 0;
vlc_mutex_unlock( &p_intf->change_lock );
-}
-
-void
-on_fileopen_ok_clicked (GtkButton *button,
- gpointer user_data)
-{
- GtkCList *playlist_clist;
- gchar *filename;
-
- GtkWidget *filesel = gtk_widget_get_toplevel ( GTK_WIDGET (button) );
-
- /* retrieve the interface */
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(filesel), "intf_fileopen" );
-
- /* hide the widget */
- gtk_widget_hide (filesel);
- filename = gtk_file_selection_get_filename (GTK_FILE_SELECTION (filesel));
-
- /* catch the GTK CList */
- playlist_clist = GTK_CLIST(
- lookup_widget(p_intf->p_sys->p_playlist,"playlist_clist"));
-
- intf_PlaylistAdd( p_main->p_playlist,
- PLAYLIST_END,
- (char*)filename );
-
- /* update the display */
- rebuildCList( playlist_clist ,
- p_main->p_playlist );
-
-}
-
-void
-on_fileopen_cancel_clicked (GtkButton *button,
- gpointer user_data)
-{
- gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
+ return FALSE;
}
void
-on_intf_fileopen_destroy (GtkObject *object,
+GtkTitlePrev (GtkButton *button,
gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(object), "intf_fileopen" );
+ intf_thread_t * p_intf;
+ input_area_t * p_area;
+ int i_id;
- p_intf->p_sys->p_fileopen = 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 )
+ {
+ p_area = p_intf->p_input->stream.pp_areas[i_id];
+ p_intf->p_input->pf_set_area( p_intf->p_input, (input_area_t*)p_area );
-void
-on_popup_open_activate (GtkMenuItem *menuitem,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
+ input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
- /* 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 );
+ p_intf->p_sys->b_title_update = 1;
}
-
- gtk_widget_show( p_intf->p_sys->p_fileopen );
- gdk_window_raise( p_intf->p_sys->p_fileopen->window );
}
void
-on_popup_about_activate (GtkMenuItem *menuitem,
+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( !GTK_IS_WIDGET( p_intf->p_sys->p_about ) )
- {
- 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 );
-}
-void
-on_popup_slow_activate (GtkMenuItem *menuitem,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
+ p_intf = GetIntf( GTK_WIDGET(button), "intf_window" );
+ i_id = p_intf->p_input->stream.p_selected_area->i_id + 1;
- if( p_intf->p_input != NULL )
+ if( i_id < p_intf->p_input->stream.i_area_nb )
{
- input_SetStatus( p_intf->p_input, INPUT_STATUS_SLOWER );
- }
-}
-
+ p_area = p_intf->p_input->stream.pp_areas[i_id];
+ p_intf->p_input->pf_set_area( p_intf->p_input, (input_area_t*)p_area );
-void
-on_popup_fast_activate (GtkMenuItem *menuitem,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
+ input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
- if( p_intf->p_input != NULL )
- {
- input_SetStatus( p_intf->p_input, INPUT_STATUS_FASTER );
+ p_intf->p_sys->b_title_update = 1;
}
-}
-
-void
-on_toolbar_slow_clicked (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 );
- }
}
void
-on_toolbar_fast_clicked (GtkButton *button,
+GtkChapterPrev (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;
- if( p_intf->p_input != NULL )
- {
- input_SetStatus( p_intf->p_input, INPUT_STATUS_FASTER );
- }
-}
+ 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 )
+ {
+ p_area->i_part--;
+ p_intf->p_input->pf_set_area( p_intf->p_input, (input_area_t*)p_area );
-void
-on_intf_modules_destroy (GtkObject *object,
- gpointer user_data)
-{
+ input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
+ p_intf->p_sys->b_chapter_update = 1;
+ }
}
void
-on_modules_ok_clicked (GtkButton *button,
+GtkChapterNext (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 );
+ intf_thread_t * p_intf;
+ input_area_t * p_area;
-}
+ 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++;
+ p_intf->p_input->pf_set_area( p_intf->p_input, (input_area_t*)p_area );
-void
-on_modules_apply_clicked (GtkButton *button,
- gpointer user_data)
-{
+ input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
+ p_intf->p_sys->b_chapter_update = 1;
+ }
}
+/****************************************************************************
+ * About box
+ ****************************************************************************/
-void
-on_modules_cancel_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 );
-}
-
-void
-on_menubar_modules_activate (GtkMenuItem *menuitem,
+gboolean
+GtkAboutShow (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 );
- if( !GTK_IS_WIDGET( p_intf->p_sys->p_modules ) )
+ if( !GTK_IS_WIDGET( p_intf->p_sys->p_about ) )
{
-// p_intf->p_sys->p_modules = create_intf_modules();
- gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_modules ),
+ 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_modules );
- gdk_window_raise( p_intf->p_sys->p_modules->window );
-}
-
-
-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)
-{
- intf_thread_t * p_intf = GetIntf( GTK_WIDGET(widget), "intf_window" );
- int end = p_main->p_playlist->i_size;
- on_generic_drop_data_received( p_intf, data, info, PLAYLIST_END);
-
- if( p_intf->p_input != NULL )
- {
- /* FIXME: temporary hack */
- p_intf->p_input->b_eof = 1;
- }
-
- intf_PlaylistJumpto( p_main->p_playlist, end-1 );
+ gtk_widget_show( p_intf->p_sys->p_about );
+ gdk_window_raise( p_intf->p_sys->p_about->window );
+ return TRUE;
}
-
-void
-on_about_ok_clicked (GtkButton *button,
- gpointer user_data)
+void GtkAboutOk( GtkButton * button, gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_about" );
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), (char*)user_data );
gtk_widget_hide( p_intf->p_sys->p_about );
}
-void
-on_menubar_disc_activate (GtkMenuItem *menuitem,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
+/****************************************************************************
+ * Jump box
+ ****************************************************************************/
- if( !GTK_IS_WIDGET( p_intf->p_sys->p_disc ) )
- {
- p_intf->p_sys->p_disc = create_intf_disc();
- gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_disc ),
- "p_intf", p_intf );
- }
- gtk_widget_show( p_intf->p_sys->p_disc );
- gdk_window_raise( p_intf->p_sys->p_disc->window );
-}
-
-
-void
-on_toolbar_disc_clicked (GtkButton *button,
+gboolean
+GtkJumpShow (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), (char*)user_data );
- if( !GTK_IS_WIDGET( p_intf->p_sys->p_disc ) )
+ if( !GTK_IS_WIDGET( p_intf->p_sys->p_jump ) )
{
- p_intf->p_sys->p_disc = create_intf_disc();
- gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_disc ),
+ 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 );
}
- gtk_widget_show( p_intf->p_sys->p_disc );
- gdk_window_raise( p_intf->p_sys->p_disc->window );
-}
-
-
-void
-on_disc_ok_clicked (GtkButton *button,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_disc" );
- char *psz_device, *psz_source, *psz_method;
- psz_device = gtk_entry_get_text( GTK_ENTRY( lookup_widget(
- GTK_WIDGET(button), "disc_name" ) ) );
+ gtk_widget_show( p_intf->p_sys->p_jump );
+ gdk_window_raise( p_intf->p_sys->p_jump->window );
- /* "dvd:foo" has size 5 + strlen(foo) */
- psz_source = malloc( 5 + strlen( psz_device ) );
- if( psz_source == NULL )
- {
- return;
- }
-
- /* Check which method was activated */
- if( GTK_TOGGLE_BUTTON( lookup_widget( GTK_WIDGET(button),
- "disc_dvd" ) )->active )
- {
- psz_method = "dvd";
- }
- else if( GTK_TOGGLE_BUTTON( lookup_widget( GTK_WIDGET(button),
- "disc_vcd" ) )->active )
- {
- psz_method = "vcd";
- }
- else
- {
- intf_ErrMsg( "intf error: unknown toggle button configuration" );
- free( psz_source );
- return;
- }
-
- /* Select title and chapter */
- main_PutIntVariable( INPUT_TITLE_VAR, gtk_spin_button_get_value_as_int(
- GTK_SPIN_BUTTON( lookup_widget(
- GTK_WIDGET(button), "disc_title" ) ) ) );
-
- main_PutIntVariable( INPUT_CHAPTER_VAR, gtk_spin_button_get_value_as_int(
- GTK_SPIN_BUTTON( lookup_widget(
- GTK_WIDGET(button), "disc_chapter" ) ) ) );
-
- /* Build source name and add it to playlist */
- sprintf( psz_source, "%s:%s", psz_method, psz_device );
- intf_PlaylistAdd( p_main->p_playlist, PLAYLIST_END, psz_source );
- free( psz_source );
-
- gtk_widget_hide( p_intf->p_sys->p_disc );
+ return FALSE;
}
void
-on_disc_cancel_clicked (GtkButton *button,
+GtkJumpOk (GtkButton *button,
gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_disc" );
-
- gtk_widget_hide( p_intf->p_sys->p_disc );
-}
+ intf_thread_t * p_intf;
+ off_t i_seek;
+ off_t i_size;
+ int i_hours;
+ int i_minutes;
+ int i_seconds;
+ p_intf = GetIntf( GTK_WIDGET( button ), (char*)user_data );
-void
-on_disc_dvd_toggled (GtkToggleButton *togglebutton,
- gpointer user_data)
-{
- if( togglebutton->active )
- {
- gtk_entry_set_text( GTK_ENTRY( lookup_widget(
- GTK_WIDGET(togglebutton), "disc_name" ) ), "/dev/dvd" );
- }
-}
+#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" );
-void
-on_disc_vcd_toggled (GtkToggleButton *togglebutton,
- gpointer user_data)
-{
- if( togglebutton->active )
- {
- gtk_entry_set_text( GTK_ENTRY( lookup_widget(
- GTK_WIDGET(togglebutton), "disc_name" ) ), "/dev/cdrom" );
- }
-}
+#undef GET_VALUE
+ i_seconds += 60 *i_minutes + 3600* i_hours;
-void
-on_popup_disc_activate (GtkMenuItem *menuitem,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
+ 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( !GTK_IS_WIDGET( p_intf->p_sys->p_disc ) )
+ if( i_seek < i_size )
{
- p_intf->p_sys->p_disc = create_intf_disc();
- gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_disc ),
- "p_intf", p_intf );
+ input_Seek( p_intf->p_input, i_seek );
}
- gtk_widget_show( p_intf->p_sys->p_disc );
- gdk_window_raise( p_intf->p_sys->p_disc->window );
-}
-
-void
-on_popup_audio_activate (GtkMenuItem *menuitem,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
- es_descriptor_t * p_es;
-
- p_es = (es_descriptor_t*)user_data;
-
- input_ChangeES( p_intf->p_input, p_es, 1 );
+ p_main->p_playlist->b_stopped = 0;
+ gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
}
void
-on_popup_subpictures_activate (GtkMenuItem *menuitem,
+GtkJumpCancel (GtkButton *button,
gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
- es_descriptor_t * p_es;
-
- p_es = (es_descriptor_t*)user_data;
-
- input_ChangeES( p_intf->p_input, p_es, 2 );
+ gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
}
void
-on_menubar_audio_activate (GtkMenuItem *menuitem,
+GtkFileOpenActivate (GtkMenuItem *menuitem,
gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
- es_descriptor_t * p_es;
-
- p_es = (es_descriptor_t*)user_data;
-
- input_ChangeES( p_intf->p_input, p_es, 1 );
+ GtkFileOpenShow( GTK_WIDGET( menuitem ), NULL, user_data );
}
void
-on_menubar_subpictures_activate (GtkMenuItem *menuitem,
+GtkDiscOpenActivate (GtkMenuItem *menuitem,
gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
- es_descriptor_t * p_es;
-
- p_es = (es_descriptor_t*)user_data;
-
- input_ChangeES( p_intf->p_input, p_es, 2 );
+ GtkDiscOpenShow( GTK_WIDGET( menuitem ), NULL, user_data );
}
void
-on_popup_navigation_activate (GtkMenuItem *menuitem,
+GtkNetworkOpenActivate (GtkMenuItem *menuitem,
gpointer user_data)
{
- intf_thread_t * p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
- input_area_t * p_area;
- gint i_title;
- gint i_chapter;
+ GtkNetworkOpenShow( GTK_WIDGET( menuitem ), NULL, user_data );
- i_title = (gint)(user_data) / 100 ;
- i_chapter = (gint)(user_data) - ( 100 * i_title );
- p_area = p_intf->p_input->stream.pp_areas[i_title];
- p_area->i_part = i_chapter;
-
- p_intf->p_input->pf_set_area( p_intf->p_input, (input_area_t*)p_area );
- input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
}
void
-on_menubar_title_activate (GtkMenuItem *menuitem,
+GtkExitActivate (GtkMenuItem *menuitem,
gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
-
- p_intf->p_input->pf_set_area( p_intf->p_input, (input_area_t*)user_data );
- p_intf->p_sys->b_menus_update = 1;
- input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
+ GtkExit( GTK_WIDGET( menuitem ), NULL, user_data );
}
void
-on_menubar_chapter_activate (GtkMenuItem *menuitem,
+GtkWindowToggleActivate (GtkMenuItem *menuitem,
gpointer user_data)
{
- intf_thread_t * p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
- input_area_t * p_area = p_intf->p_input->stream.p_selected_area;
- gint i_chapter = (gint)user_data;
-
- p_area->i_part = i_chapter;
-
- p_intf->p_input->pf_set_area( p_intf->p_input, (input_area_t*)p_area );
- input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
-}
-
-gboolean
-on_intf_window_destroy (GtkWidget *widget,
- GdkEvent *event,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), "intf_window" );
-
- vlc_mutex_lock( &p_intf->change_lock );
- p_intf->b_die = 1;
- vlc_mutex_unlock( &p_intf->change_lock );
-
- return TRUE;
+ GtkWindowToggle( GTK_WIDGET( menuitem ), NULL, user_data );
}
void
-on_main_window_toggle (GtkMenuItem *menuitem,
+GtkFullscreenActivate (GtkMenuItem *menuitem,
gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
-
- if( GTK_WIDGET_VISIBLE(p_intf->p_sys->p_window) ) {
- gtk_widget_hide( p_intf->p_sys->p_window);
-
- }
- else
- {
- gtk_widget_show( p_intf->p_sys->p_window );
- }
-}
-
-
-gboolean
-on_playlist_clist_drag_motion (GtkWidget *widget,
- GdkDragContext *drag_context,
- gint x,
- gint y,
- guint time,
- gpointer user_data)
-{
- GtkCList * clist;
- gint row,col;
- int dummy;
- GdkColor color;
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), "intf_playlist" );
-
-
- clist = GTK_CLIST(lookup_widget( p_intf->p_sys->p_playlist,"playlist_clist"
- ));
-
- if(!GTK_WIDGET_TOPLEVEL(widget))
- {
- gdk_window_raise( p_intf->p_sys->p_playlist->window );
- }
-
- color.red = 0xffff;
- color.green = 0xffff;
- color.blue = 0xffff;
-
- gtk_clist_freeze( clist );
-
- for(dummy=0; dummy<clist->rows; dummy++)
- {
- gtk_clist_set_background ( clist, dummy , &color);
- }
- color.red = 0xffff;
- color.green = 0;
- color.blue = 0;
- gtk_clist_set_background ( clist, p_main->p_playlist->i_index , &color);
-
- if( gtk_clist_get_selection_info( clist,x,y ,&row,&col )== 1)
- {
- color.red = 0;
- color.green = 0x9000;
- color.blue = 0xf000;
- gtk_clist_set_background ( clist, row-1 , &color);
- gtk_clist_set_background ( clist, row , &color);
- }
-
- gtk_clist_thaw( clist );
-
- return TRUE;
+ GtkFullscreen( GTK_WIDGET( menuitem ), NULL, user_data );
}
void
-on_intf_network_destroy (GtkObject *object,
+GtkPlaylistActivate (GtkMenuItem *menuitem,
gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(object), "intf_network" );
-
- p_intf->p_sys->p_network = NULL;
+ GtkPlaylistShow( GTK_WIDGET( menuitem ), NULL, user_data );
}
void
-on_network_ok_clicked (GtkButton *button,
+GtkModulesActivate (GtkMenuItem *menuitem,
gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_network" );
- char *psz_source, *psz_server, *psz_protocol;
- unsigned int i_port;
-
- psz_server = gtk_entry_get_text( GTK_ENTRY( lookup_widget(
- GTK_WIDGET(button), "network_server" ) ) );
-
- /* Check which protocol was activated */
- if( GTK_TOGGLE_BUTTON( lookup_widget( GTK_WIDGET(button),
- "network_ts" ) )->active )
- {
- psz_protocol = "ts";
- }
- else if( GTK_TOGGLE_BUTTON( lookup_widget( GTK_WIDGET(button),
- "network_rtp" ) )->active )
- {
- psz_protocol = "rtp";
- }
- else
- {
- intf_ErrMsg( "intf error: unknown protocol toggle button position" );
- 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 );
- }
- /* Allocate room for "protocol://server:port" */
- psz_source = malloc( strlen( psz_protocol ) + strlen( psz_server ) + 10 );
- 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 );
-
- gtk_widget_hide( p_intf->p_sys->p_network );
}
void
-on_network_cancel_clicked (GtkButton *button,
+GtkPreferencesActivate (GtkMenuItem *menuitem,
gpointer user_data)
{
- gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
+ GtkPreferencesShow( GTK_WIDGET( menuitem ), NULL, user_data );
}
void
-on_menubar_network_activate (GtkMenuItem *menuitem,
+GtkAboutActivate (GtkMenuItem *menuitem,
gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
-
- gtk_widget_show( p_intf->p_sys->p_network );
- gdk_window_raise( p_intf->p_sys->p_network->window );
+ GtkAboutShow( GTK_WIDGET( menuitem ), NULL, user_data );
}
-void
-on_popup_network_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_network );
- gdk_window_raise( p_intf->p_sys->p_network->window );
-}
void
-on_toolbar_network_clicked (GtkButton *button,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_window" );
-
- gtk_widget_show( p_intf->p_sys->p_network );
- gdk_window_raise( p_intf->p_sys->p_network->window );
-}
-
-
-gboolean
-on_slider_button_release_event (GtkWidget *widget,
- GdkEventButton *event,
+GtkJumpActivate (GtkMenuItem *menuitem,
gpointer user_data)
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), "intf_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;
+ GtkJumpShow( GTK_WIDGET( menuitem ), NULL, user_data );
}
-gboolean
-on_slider_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->change_lock );
- p_intf->p_sys->b_slider_free = 0;
- vlc_mutex_unlock( &p_intf->change_lock );
-
- return FALSE;
-}
-
-
-void
-on_menubar_fullscreen_activate (GtkMenuItem *menuitem,
- gpointer user_data)
-{
-
-}
-
-
-void
-on_menubar_angle_activate (GtkMenuItem *menuitem,
- gpointer user_data)
-{
-
-}
#include <gtk/gtk.h>
+#include "gtk_control.h"
+#include "gtk_menu.h"
+#include "gtk_open.h"
+#include "gtk_modules.h"
+#include "gtk_playlist.h"
+#include "gtk_preferences.h"
/* General glade callbacks */
-void
-on_intf_window_drag_data_received (GtkWidget *widget,
- GdkDragContext *drag_context,
- gint x,
- gint y,
- GtkSelectionData *data,
- guint info,
- guint time,
+gboolean
+GtkExit (GtkWidget *widget,
+ GdkEventButton *event,
gpointer user_data);
-
-void
-on_toolbar_open_clicked (GtkButton *button,
+gboolean
+GtkWindowToggle (GtkWidget *widget,
+ GdkEventButton *event,
gpointer user_data);
-void
-on_toolbar_back_clicked (GtkButton *button,
- gpointer user_data);
-void
-on_toolbar_stop_clicked (GtkButton *button,
+gboolean
+GtkSliderRelease (GtkWidget *widget,
+ GdkEventButton *event,
gpointer user_data);
-void
-on_toolbar_play_clicked (GtkButton *button,
+gboolean
+GtkSliderPress (GtkWidget *widget,
+ GdkEventButton *event,
gpointer user_data);
void
-on_toolbar_pause_clicked (GtkButton *button,
+GtkTitlePrev (GtkButton *button,
gpointer user_data);
void
-on_toolbar_slow_clicked (GtkButton *button,
+GtkTitleNext (GtkButton *button,
gpointer user_data);
void
-on_toolbar_fast_clicked (GtkButton *button,
+GtkChapterPrev (GtkButton *button,
gpointer user_data);
void
-on_toolbar_playlist_clicked (GtkButton *button,
+GtkChapterNext (GtkButton *button,
gpointer user_data);
-void
-on_toolbar_prev_clicked (GtkButton *button,
- gpointer user_data);
-void
-on_toolbar_next_clicked (GtkButton *button,
+gboolean
+GtkFullscreen (GtkWidget *widget,
+ GdkEventButton *event,
gpointer user_data);
-
-void
-on_toolbar_network_clicked (GtkButton *button,
+gboolean
+GtkAboutShow (GtkWidget *widget,
+ GdkEventButton *event,
gpointer user_data);
+void GtkAboutOk( GtkButton * button, gpointer user_data);
+
+
void
-on_intf_fileopen_destroy (GtkObject *object,
+GtkWindowDrag (GtkWidget *widget,
+ GdkDragContext *drag_context,
+ gint x,
+ gint y,
+ GtkSelectionData *data,
+ guint info,
+ guint time,
gpointer user_data);
-void
-on_fileopen_ok_clicked (GtkButton *button,
+gboolean
+GtkWindowDelete (GtkWidget *widget,
+ GdkEvent *event,
gpointer user_data);
+gboolean
+GtkJumpShow (GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data);
void
-on_fileopen_cancel_clicked (GtkButton *button,
+GtkJumpOk (GtkButton *button,
gpointer user_data);
-
void
-on_intf_modules_destroy (GtkObject *object,
+GtkJumpCancel (GtkButton *button,
gpointer user_data);
-void
-on_modules_ok_clicked (GtkButton *button,
+
+gboolean
+GtkDiscOpenShow (GtkWidget *widget,
+ GdkEventButton *event,
gpointer user_data);
-void
-on_modules_apply_clicked (GtkButton *button,
+gboolean
+GtkFileOpenShow (GtkWidget *widget,
+ GdkEventButton *event,
gpointer user_data);
-void
-on_modules_cancel_clicked (GtkButton *button,
+gboolean
+GtkNetworkOpenShow (GtkWidget *widget,
+ GdkEventButton *event,
gpointer user_data);
+
+
void
-on_intf_playlist_destroy (GtkObject *object,
+on_menubar_open_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_playlist_ok_clicked (GtkButton *button,
+on_menubar_open_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_popup_fast_activate (GtkMenuItem *menuitem,
+on_menubar_disc_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_menubar_open_activate (GtkMenuItem *menuitem,
+on_menubar_network_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
gpointer user_data);
void
-on_popup_play_activate (GtkMenuItem *menuitem,
+on_menubar_interface_hide_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_popup_exit_activate (GtkMenuItem *menuitem,
+on_menubar_fullscreen_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
gpointer user_data);
void
-on_popup_pause_activate (GtkMenuItem *menuitem,
+on_popup_play_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_popup_slow_activate (GtkMenuItem *menuitem,
+on_popup_pause_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_popup_open_activate (GtkMenuItem *menuitem,
+on_popup_stop_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_popup_about_activate (GtkMenuItem *menuitem,
+on_popup_back_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_about_ok_clicked (GtkButton *button,
- gpointer user_data);
-
-
-void
-on_disc_dvd_toggled (GtkToggleButton *togglebutton,
+on_popup_slow_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_disc_vcd_toggled (GtkToggleButton *togglebutton,
+on_popup_fast_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_disc_ok_clicked (GtkButton *button,
+on_popup_interface_toggle_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_disc_cancel_clicked (GtkButton *button,
+on_popup_fullscreen_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_menubar_disc_activate (GtkMenuItem *menuitem,
+on_popup_next_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_toolbar_disc_clicked (GtkButton *button,
+on_popup_prev_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_popup_disc_activate (GtkMenuItem *menuitem,
+on_popup_jump_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_popup_audio_activate (GtkMenuItem *menuitem,
+on_popup_file_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_popup_subpictures_activate (GtkMenuItem *menuitem,
+on_popup_disc_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_menubar_audio_activate (GtkMenuItem *menuitem,
+on_popup_network_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_menubar_subpictures_activate (GtkMenuItem *menuitem,
+on_popup_about_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_popup_navigation_activate (GtkMenuItem *menuitem,
+on_popup_playlist_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_menubar_title_activate (GtkMenuItem *menuitem,
+on_popup_preferences_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_menubar_chapter_activate (GtkMenuItem *menuitem,
- gpointer user_data);
-
-gboolean
-on_playlist_clist_event (GtkWidget *widget,
- GdkEvent *event,
+on_popup_exit_activate (GtkMenuItem *menuitem,
gpointer user_data);
-gboolean
-on_intf_window_delete (GtkWidget *widget,
- GdkEvent *event,
- gpointer user_data);
-gboolean
-on_intf_playlist_destroy_event (GtkWidget *widget,
- GdkEvent *event,
- gpointer user_data);
-gboolean
-on_intf_playlist_destroy_event (GtkWidget *widget,
- GdkEvent *event,
+void
+GtkPreferencesOk (GtkButton *button,
gpointer user_data);
void
-on_intf_playlist_drag_data_received (GtkWidget *widget,
- GdkDragContext *drag_context,
- gint x,
- gint y,
- GtkSelectionData *data,
- guint info,
- guint time,
+GtkPreferencesApply (GtkButton *button,
gpointer user_data);
-gboolean
-on_playlist_clist_event (GtkWidget *widget,
- GdkEvent *event,
+void
+GtkPreferencesCancel (GtkButton *button,
gpointer user_data);
-gboolean
-on_intf_playlist_destroy_event (GtkWidget *widget,
- GdkEvent *event,
+void
+GtkFileOpenActivate (GtkMenuItem *menuitem,
gpointer user_data);
-gboolean
-on_intf_window_destroy (GtkWidget *widget,
- GdkEvent *event,
+void
+GtkDiscOpenActivate (GtkMenuItem *menuitem,
gpointer user_data);
-gboolean
-on_intf_window_destroy (GtkWidget *widget,
- GdkEvent *event,
+void
+GtkNetworkOpenActivate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_main_window_toggle (GtkMenuItem *menuitem,
+GtkExitActivate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_delete_clicked (GtkMenuItem *menuitem,
+GtkWindowToggleActivate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_crop_activate (GtkMenuItem *menuitem,
+GtkFullscreenActivate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_invertselection_clicked (GtkMenuItem *menuitem,
+GtkPlaylistActivate (GtkMenuItem *menuitem,
gpointer user_data);
-gboolean
-on_playlist_clist_drag_motion (GtkWidget *widget,
- GdkDragContext *drag_context,
- gint x,
- gint y,
- guint time,
+void
+GtkModulesActivate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_intf_network_destroy (GtkObject *object,
+GtkPreferencesActivate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_network_ok_clicked (GtkButton *button,
+GtkAboutActivate (GtkMenuItem *menuitem,
gpointer user_data);
+
void
-on_network_cancel_clicked (GtkButton *button,
+GtkNextActivate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_menubar_network_activate (GtkMenuItem *menuitem,
+GtkPrevActivate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_popup_network_activate (GtkMenuItem *menuitem,
+GtkJumpActivate (GtkMenuItem *menuitem,
gpointer user_data);
-gboolean
-on_slider_button_release_event (GtkWidget *widget,
- GdkEventButton *event,
+void
+GtkDiscOpenActivate (GtkMenuItem *menuitem,
gpointer user_data);
-gboolean
-on_slider_button_press_event (GtkWidget *widget,
- GdkEventButton *event,
+void
+GtkFileOpenActivate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_menubar_fullscreen_activate (GtkMenuItem *menuitem,
+GtkNetworkOpenActivate (GtkMenuItem *menuitem,
gpointer user_data);
void
-on_menubar_angle_activate (GtkMenuItem *menuitem,
+GtkPlaylistAddUrl (GtkMenuItem *menuitem,
gpointer user_data);
--- /dev/null
+/*****************************************************************************
+ * gtk_control.c : functions to handle stream control buttons.
+ *****************************************************************************
+ * Copyright (C) 2000, 2001 VideoLAN
+ * $Id: gtk_control.c,v 1.1 2001/05/15 01:01:44 stef 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * 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 "mtime.h"
+
+#include "stream_control.h"
+#include "input_ext-intf.h"
+
+#include "interface.h"
+#include "intf_playlist.h"
+#include "intf_msg.h"
+
+#include "gtk_callbacks.h"
+#include "gtk_interface.h"
+#include "gtk_support.h"
+#include "gtk_playlist.h"
+#include "intf_gtk.h"
+
+#include "main.h"
+
+/****************************************************************************
+ * Control functions: this is where the functions are defined
+ ****************************************************************************
+ * These functions are button-items callbacks, and are used
+ * by other callbacks
+ ****************************************************************************/
+gboolean GtkControlBack( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data )
+{
+
+ return FALSE;
+}
+
+
+gboolean GtkControlStop( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data )
+{
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+
+ if( p_intf->p_input != NULL )
+ {
+ /* end playing item */
+ p_intf->p_input->b_eof = 1;
+
+ /* update playlist */
+// vlc_mutex_lock( &p_main->p_playlist->change_lock );
+
+ p_main->p_playlist->i_index--;
+ p_main->p_playlist->b_stopped = 1;
+
+// vlc_mutex_unlock( &p_main->p_playlist->change_lock );
+
+ }
+
+ return TRUE;
+}
+
+
+gboolean GtkControlPlay( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data )
+{
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+
+ if( p_intf->p_input != NULL )
+ {
+ input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
+ p_main->p_playlist->b_stopped = 0;
+ }
+ else
+ {
+// vlc_mutex_lock( &p_main->p_playlist->change_lock );
+
+ if( p_main->p_playlist->b_stopped )
+ {
+ if( p_main->p_playlist->i_size )
+ {
+ intf_PlaylistJumpto( p_main->p_playlist,
+ p_main->p_playlist->i_index );
+ p_main->p_playlist->b_stopped = 0;
+ }
+ else
+ {
+ GtkFileOpenShow( widget, event, user_data );
+ }
+ }
+
+// vlc_mutex_unlock( &p_main->p_playlist->change_lock );
+ }
+
+ return TRUE;
+}
+
+
+gboolean GtkControlPause( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data )
+{
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+
+ if( p_intf->p_input != NULL )
+ {
+ input_SetStatus( p_intf->p_input, INPUT_STATUS_PAUSE );
+ p_main->p_playlist->b_stopped = 0;
+ }
+
+ return TRUE;
+}
+
+
+gboolean GtkControlSlow( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data )
+{
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+
+ if( p_intf->p_input != NULL )
+ {
+ input_SetStatus( p_intf->p_input, INPUT_STATUS_SLOWER );
+ p_main->p_playlist->b_stopped = 0;
+ }
+
+ return TRUE;
+}
+
+
+gboolean GtkControlFast( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data )
+{
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+
+ if( p_intf->p_input != NULL )
+ {
+ input_SetStatus( p_intf->p_input, INPUT_STATUS_FASTER );
+ p_main->p_playlist->b_stopped = 0;
+ }
+
+ return TRUE;
+}
+
+
+/****************************************************************************
+ * Control callbacks for menuitems
+ ****************************************************************************
+ * We have different callaback for menuitem since we must use the
+ * activate signal toi popdown the menu automatically
+ ****************************************************************************/
+void GtkPlayActivate( GtkMenuItem * menuitem, gpointer user_data )
+{
+ GtkControlPlay( GTK_WIDGET( menuitem ), NULL, user_data );
+}
+
+
+void GtkPauseActivate( GtkMenuItem * menuitem, gpointer user_data )
+{
+ GtkControlPause( GTK_WIDGET( menuitem ), NULL, user_data );
+
+}
+
+
+void
+GtKStopActivate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+ GtkControlStop( GTK_WIDGET( menuitem ), NULL, user_data );
+
+}
+
+
+void
+GtkBackActivate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+ GtkControlBack( GTK_WIDGET( menuitem ), NULL, user_data );
+
+}
+
+
+void
+GtkSlowActivate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+ GtkControlSlow( GTK_WIDGET( menuitem ), NULL, user_data );
+
+}
+
+
+void
+GtkFastActivate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+ GtkControlFast( GTK_WIDGET( menuitem ), NULL, user_data );
+}
+
+
--- /dev/null
+/*****************************************************************************
+ * gtk_control.h: prototypes for control functions
+ *****************************************************************************
+ * Copyright (C) 1999, 2000 VideoLAN
+ * $Id: gtk_control.h,v 1.1 2001/05/15 01:01:44 stef 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ *****************************************************************************/
+
+gboolean GtkControlBack ( GtkWidget *, GdkEventButton *, gpointer );
+gboolean GtkControlStop ( GtkWidget *, GdkEventButton *, gpointer );
+gboolean GtkControlPlay ( GtkWidget *, GdkEventButton *, gpointer );
+gboolean GtkControlPause( GtkWidget *, GdkEventButton *, gpointer );
+gboolean GtkControlSlow ( GtkWidget *, GdkEventButton *, gpointer );
+gboolean GtkControlFast ( GtkWidget *, GdkEventButton *, gpointer );
+void GtkPlayActivate ( GtkMenuItem *, gpointer );
+void GtkPauseActivate ( GtkMenuItem *, gpointer );
+void GtKStopActivate ( GtkMenuItem *, gpointer );
+void GtkBackActivate ( GtkMenuItem *, gpointer );
+void GtkSlowActivate ( GtkMenuItem *, gpointer );
+void GtkFastActivate ( GtkMenuItem *, gpointer );
+
create_intf_window (void)
{
GtkWidget *intf_window;
- GtkWidget *vbox2;
- GtkWidget *handlebox2;
- GtkWidget *menubar1;
+ GtkWidget *window_vbox;
+ GtkWidget *menubar_handlebox;
+ GtkWidget *menubar;
guint tmp_key;
GtkWidget *menubar_file;
GtkWidget *menubar_file_menu;
GtkWidget *menubar_view;
GtkWidget *menubar_view_menu;
GtkAccelGroup *menubar_view_menu_accels;
+ GtkWidget *menubar_interface_hide;
GtkWidget *menubar_fullscreen;
GtkWidget *separator13;
GtkWidget *menubar_title;
GtkWidget *menubar_settings;
GtkWidget *menubar_settings_menu;
GtkAccelGroup *menubar_settings_menu_accels;
- GtkWidget *separator7;
GtkWidget *menubar_audio;
GtkWidget *menubar_subpictures;
GtkWidget *separator8;
GtkWidget *menubar_help_menu;
GtkAccelGroup *menubar_help_menu_accels;
GtkWidget *menubar_about;
- GtkWidget *handlebox1;
+ GtkWidget *toolbar_handlebox;
GtkWidget *toolbar;
GtkWidget *toolbar_open;
GtkWidget *toolbar_disc;
GtkWidget *toolbar_next;
GtkWidget *slider_frame;
GtkWidget *slider;
+ GtkWidget *file_box;
+ GtkWidget *label_status;
+ GtkWidget *dvd_box;
+ GtkWidget *dvd_label;
+ GtkWidget *title_box;
+ GtkWidget *title;
+ GtkWidget *title_label;
+ GtkWidget *title_prev_button;
+ GtkWidget *title_next_button;
+ GtkWidget *dvd_separator;
+ GtkWidget *chapter_box;
+ GtkWidget *chapter;
+ GtkWidget *chapter_label;
+ GtkWidget *chapter_prev_button;
+ GtkWidget *chapter_next_button;
+ GtkWidget *network_box;
+ GtkWidget *network_address;
+ GtkWidget *network_channel_box;
+ GtkWidget *channel_label;
+ GtkObject *channel_spinbutton_adj;
+ GtkWidget *channel_spinbutton;
GtkWidget *intf_statusbar;
GtkAccelGroup *accel_group;
GtkTooltips *tooltips;
intf_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_object_set_data (GTK_OBJECT (intf_window), "intf_window", intf_window);
gtk_window_set_title (GTK_WINDOW (intf_window), _("VideoLAN Client"));
+ gtk_window_set_policy (GTK_WINDOW (intf_window), TRUE, TRUE, TRUE);
- vbox2 = gtk_vbox_new (FALSE, 0);
- gtk_widget_ref (vbox2);
- gtk_object_set_data_full (GTK_OBJECT (intf_window), "vbox2", vbox2,
+ window_vbox = gtk_vbox_new (FALSE, 0);
+ gtk_widget_ref (window_vbox);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "window_vbox", window_vbox,
(GtkDestroyNotify) gtk_widget_unref);
- gtk_widget_show (vbox2);
- gtk_container_add (GTK_CONTAINER (intf_window), vbox2);
+ gtk_widget_show (window_vbox);
+ gtk_container_add (GTK_CONTAINER (intf_window), window_vbox);
- handlebox2 = gtk_handle_box_new ();
- gtk_widget_ref (handlebox2);
- gtk_object_set_data_full (GTK_OBJECT (intf_window), "handlebox2", handlebox2,
+ menubar_handlebox = gtk_handle_box_new ();
+ gtk_widget_ref (menubar_handlebox);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_handlebox", menubar_handlebox,
(GtkDestroyNotify) gtk_widget_unref);
- gtk_widget_show (handlebox2);
- gtk_box_pack_start (GTK_BOX (vbox2), handlebox2, FALSE, TRUE, 0);
+ gtk_widget_show (menubar_handlebox);
+ gtk_box_pack_start (GTK_BOX (window_vbox), menubar_handlebox, FALSE, TRUE, 0);
- menubar1 = gtk_menu_bar_new ();
- gtk_widget_ref (menubar1);
- gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar1", menubar1,
+ menubar = gtk_menu_bar_new ();
+ gtk_widget_ref (menubar);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar", menubar,
(GtkDestroyNotify) gtk_widget_unref);
- gtk_widget_show (menubar1);
- gtk_container_add (GTK_CONTAINER (handlebox2), menubar1);
+ gtk_widget_show (menubar);
+ gtk_container_add (GTK_CONTAINER (menubar_handlebox), menubar);
menubar_file = gtk_menu_item_new_with_label ("");
tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menubar_file)->child),
gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_file", menubar_file,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (menubar_file);
- gtk_container_add (GTK_CONTAINER (menubar1), menubar_file);
+ gtk_container_add (GTK_CONTAINER (menubar), menubar_file);
menubar_file_menu = gtk_menu_new ();
gtk_widget_ref (menubar_file_menu);
gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_view", menubar_view,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (menubar_view);
- gtk_container_add (GTK_CONTAINER (menubar1), menubar_view);
+ gtk_container_add (GTK_CONTAINER (menubar), menubar_view);
menubar_view_menu = gtk_menu_new ();
gtk_widget_ref (menubar_view_menu);
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_interface_hide = gtk_menu_item_new_with_label ("");
+ tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menubar_interface_hide)->child),
+ _("_Hide interface"));
+ gtk_widget_add_accelerator (menubar_interface_hide, "activate_item", menubar_view_menu_accels,
+ tmp_key, 0, 0);
+ gtk_widget_ref (menubar_interface_hide);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_interface_hide", menubar_interface_hide,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (menubar_interface_hide);
+ gtk_container_add (GTK_CONTAINER (menubar_view_menu), menubar_interface_hide);
+ gtk_tooltips_set_tip (tooltips, menubar_interface_hide, _("Hide the main interface window"), NULL);
+
menubar_fullscreen = gtk_check_menu_item_new_with_label ("");
tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menubar_fullscreen)->child),
_("_Fullscreen"));
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (menubar_angle);
gtk_container_add (GTK_CONTAINER (menubar_view_menu), menubar_angle);
+ gtk_widget_set_sensitive (menubar_angle, FALSE);
separator11 = gtk_menu_item_new ();
gtk_widget_ref (separator11);
gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_settings", menubar_settings,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (menubar_settings);
- gtk_container_add (GTK_CONTAINER (menubar1), menubar_settings);
+ gtk_container_add (GTK_CONTAINER (menubar), menubar_settings);
menubar_settings_menu = gtk_menu_new ();
gtk_widget_ref (menubar_settings_menu);
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"));
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (menubar_preferences);
gtk_container_add (GTK_CONTAINER (menubar_settings_menu), menubar_preferences);
- gtk_widget_set_sensitive (menubar_preferences, FALSE);
gtk_tooltips_set_tip (tooltips, menubar_preferences, _("Configure the application"), NULL);
menubar_help = gtk_menu_item_new_with_label ("");
gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_help", menubar_help,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (menubar_help);
- gtk_container_add (GTK_CONTAINER (menubar1), menubar_help);
+ gtk_container_add (GTK_CONTAINER (menubar), menubar_help);
menubar_help_menu = gtk_menu_new ();
gtk_widget_ref (menubar_help_menu);
gtk_container_add (GTK_CONTAINER (menubar_help_menu), menubar_about);
gtk_tooltips_set_tip (tooltips, menubar_about, _("About this application"), NULL);
- handlebox1 = gtk_handle_box_new ();
- gtk_widget_ref (handlebox1);
- gtk_object_set_data_full (GTK_OBJECT (intf_window), "handlebox1", handlebox1,
+ toolbar_handlebox = gtk_handle_box_new ();
+ gtk_widget_ref (toolbar_handlebox);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_handlebox", toolbar_handlebox,
(GtkDestroyNotify) gtk_widget_unref);
- gtk_widget_show (handlebox1);
- gtk_box_pack_start (GTK_BOX (vbox2), handlebox1, FALSE, TRUE, 0);
+ gtk_widget_show (toolbar_handlebox);
+ gtk_box_pack_start (GTK_BOX (window_vbox), toolbar_handlebox, FALSE, TRUE, 0);
toolbar = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH);
gtk_widget_ref (toolbar);
gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar", toolbar,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (toolbar);
- gtk_container_add (GTK_CONTAINER (handlebox1), toolbar);
+ gtk_container_add (GTK_CONTAINER (toolbar_handlebox), toolbar);
gtk_container_set_border_width (GTK_CONTAINER (toolbar), 1);
gtk_toolbar_set_space_size (GTK_TOOLBAR (toolbar), 16);
gtk_toolbar_set_space_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_SPACE_LINE);
gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_pause", toolbar_pause,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (toolbar_pause);
+ gtk_widget_set_sensitive (toolbar_pause, FALSE);
toolbar_slow = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
GTK_TOOLBAR_CHILD_BUTTON,
gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_slow", toolbar_slow,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (toolbar_slow);
+ gtk_widget_set_sensitive (toolbar_slow, FALSE);
toolbar_fast = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
GTK_TOOLBAR_CHILD_BUTTON,
gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_fast", toolbar_fast,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (toolbar_fast);
+ gtk_widget_set_sensitive (toolbar_fast, FALSE);
gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
gtk_widget_ref (slider_frame);
gtk_object_set_data_full (GTK_OBJECT (intf_window), "slider_frame", slider_frame,
(GtkDestroyNotify) gtk_widget_unref);
- gtk_widget_show (slider_frame);
- gtk_box_pack_start (GTK_BOX (vbox2), slider_frame, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (window_vbox), slider_frame, TRUE, TRUE, 0);
gtk_frame_set_label_align (GTK_FRAME (slider_frame), 0.05, 0.5);
slider = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 100, 1, 6.25, 0)));
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (slider);
gtk_container_add (GTK_CONTAINER (slider_frame), slider);
+ gtk_widget_set_usize (slider, 500, 15);
gtk_scale_set_draw_value (GTK_SCALE (slider), FALSE);
gtk_scale_set_digits (GTK_SCALE (slider), 3);
+ file_box = gtk_hbox_new (FALSE, 0);
+ gtk_widget_ref (file_box);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "file_box", file_box,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (file_box);
+ gtk_box_pack_start (GTK_BOX (window_vbox), file_box, TRUE, TRUE, 0);
+ gtk_widget_set_usize (file_box, 500, 24);
+
+ label_status = gtk_label_new ("");
+ 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 (label_status);
+ gtk_box_pack_start (GTK_BOX (file_box), label_status, TRUE, TRUE, 0);
+
+ dvd_box = gtk_hbox_new (FALSE, 0);
+ gtk_widget_ref (dvd_box);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "dvd_box", dvd_box,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_box_pack_start (GTK_BOX (window_vbox), dvd_box, TRUE, TRUE, 0);
+ gtk_widget_set_usize (dvd_box, 500, 24);
+
+ dvd_label = gtk_label_new (_("DVD"));
+ gtk_widget_ref (dvd_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "dvd_label", dvd_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (dvd_label);
+ gtk_box_pack_start (GTK_BOX (dvd_box), dvd_label, TRUE, FALSE, 0);
+
+ title_box = gtk_hbox_new (FALSE, 0);
+ gtk_widget_ref (title_box);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "title_box", title_box,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (title_box);
+ gtk_box_pack_start (GTK_BOX (dvd_box), title_box, TRUE, TRUE, 0);
+
+ title = gtk_label_new (_("Title: "));
+ gtk_widget_ref (title);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "title", title,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (title);
+ gtk_box_pack_start (GTK_BOX (title_box), title, FALSE, FALSE, 5);
+
+ title_label = gtk_label_new (_("--"));
+ gtk_widget_ref (title_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "title_label", title_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (title_label);
+ gtk_box_pack_start (GTK_BOX (title_box), title_label, FALSE, FALSE, 5);
+
+ title_prev_button = gtk_button_new_with_label (_("Prev"));
+ gtk_widget_ref (title_prev_button);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "title_prev_button", title_prev_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (title_prev_button);
+ gtk_box_pack_start (GTK_BOX (title_box), title_prev_button, FALSE, FALSE, 5);
+ gtk_button_set_relief (GTK_BUTTON (title_prev_button), GTK_RELIEF_NONE);
+
+ title_next_button = gtk_button_new_with_label (_("Next"));
+ gtk_widget_ref (title_next_button);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "title_next_button", title_next_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (title_next_button);
+ gtk_box_pack_start (GTK_BOX (title_box), title_next_button, FALSE, FALSE, 5);
+ gtk_button_set_relief (GTK_BUTTON (title_next_button), GTK_RELIEF_NONE);
+
+ dvd_separator = gtk_vseparator_new ();
+ gtk_widget_ref (dvd_separator);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "dvd_separator", dvd_separator,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (dvd_separator);
+ gtk_box_pack_start (GTK_BOX (dvd_box), dvd_separator, TRUE, TRUE, 0);
+
+ chapter_box = gtk_hbox_new (FALSE, 0);
+ gtk_widget_ref (chapter_box);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "chapter_box", chapter_box,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (chapter_box);
+ gtk_box_pack_start (GTK_BOX (dvd_box), chapter_box, TRUE, TRUE, 0);
+
+ chapter = gtk_label_new (_("Chapter: "));
+ gtk_widget_ref (chapter);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "chapter", chapter,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (chapter);
+ gtk_box_pack_start (GTK_BOX (chapter_box), chapter, FALSE, FALSE, 5);
+
+ chapter_label = gtk_label_new (_("---"));
+ gtk_widget_ref (chapter_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "chapter_label", chapter_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (chapter_label);
+ gtk_box_pack_start (GTK_BOX (chapter_box), chapter_label, FALSE, FALSE, 5);
+
+ chapter_prev_button = gtk_button_new_with_label (_("Prev"));
+ gtk_widget_ref (chapter_prev_button);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "chapter_prev_button", chapter_prev_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (chapter_prev_button);
+ gtk_box_pack_start (GTK_BOX (chapter_box), chapter_prev_button, FALSE, FALSE, 5);
+ gtk_button_set_relief (GTK_BUTTON (chapter_prev_button), GTK_RELIEF_NONE);
+
+ chapter_next_button = gtk_button_new_with_label (_("Next"));
+ gtk_widget_ref (chapter_next_button);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "chapter_next_button", chapter_next_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (chapter_next_button);
+ gtk_box_pack_start (GTK_BOX (chapter_box), chapter_next_button, FALSE, FALSE, 5);
+ gtk_button_set_relief (GTK_BUTTON (chapter_next_button), GTK_RELIEF_NONE);
+
+ network_box = gtk_hbox_new (FALSE, 0);
+ gtk_widget_ref (network_box);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "network_box", network_box,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_box_pack_start (GTK_BOX (window_vbox), network_box, TRUE, TRUE, 0);
+ gtk_widget_set_usize (network_box, 500, 24);
+
+ network_address = gtk_label_new (_("No server !"));
+ gtk_widget_ref (network_address);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "network_address", network_address,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (network_address);
+ gtk_box_pack_start (GTK_BOX (network_box), network_address, TRUE, TRUE, 0);
+
+ network_channel_box = gtk_hbox_new (FALSE, 0);
+ gtk_widget_ref (network_channel_box);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "network_channel_box", network_channel_box,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (network_channel_box);
+ gtk_box_pack_start (GTK_BOX (network_box), network_channel_box, TRUE, FALSE, 0);
+
+ channel_label = gtk_label_new (_("Channel: "));
+ gtk_widget_ref (channel_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "channel_label", channel_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (channel_label);
+ gtk_box_pack_start (GTK_BOX (network_channel_box), channel_label, FALSE, FALSE, 5);
+
+ channel_spinbutton_adj = gtk_adjustment_new (1, 0, 100, 1, 10, 10);
+ channel_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (channel_spinbutton_adj), 1, 0);
+ gtk_widget_ref (channel_spinbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_window), "channel_spinbutton", channel_spinbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (channel_spinbutton);
+ gtk_box_pack_start (GTK_BOX (network_channel_box), channel_spinbutton, FALSE, TRUE, 0);
+
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_box_pack_start (GTK_BOX (window_vbox), intf_statusbar, FALSE, FALSE, 0);
+ gtk_widget_set_usize (intf_statusbar, 500, -2);
gtk_signal_connect (GTK_OBJECT (intf_window), "drag_data_received",
- GTK_SIGNAL_FUNC (on_intf_window_drag_data_received),
- NULL);
+ GTK_SIGNAL_FUNC (GtkWindowDrag),
+ "intf_window");
gtk_signal_connect (GTK_OBJECT (intf_window), "delete_event",
- GTK_SIGNAL_FUNC (on_intf_window_destroy),
- NULL);
+ GTK_SIGNAL_FUNC (GtkWindowDelete),
+ "intf_window");
gtk_signal_connect (GTK_OBJECT (menubar_open), "activate",
- GTK_SIGNAL_FUNC (on_menubar_open_activate),
- NULL);
+ GTK_SIGNAL_FUNC (GtkFileOpenActivate),
+ "intf_window");
gtk_signal_connect (GTK_OBJECT (menubar_disc), "activate",
- GTK_SIGNAL_FUNC (on_menubar_disc_activate),
- NULL);
+ GTK_SIGNAL_FUNC (GtkDiscOpenActivate),
+ "intf_window");
gtk_signal_connect (GTK_OBJECT (menubar_network), "activate",
- GTK_SIGNAL_FUNC (on_menubar_network_activate),
- NULL);
+ GTK_SIGNAL_FUNC (GtkNetworkOpenActivate),
+ "intf_window");
gtk_signal_connect (GTK_OBJECT (menubar_exit), "activate",
- GTK_SIGNAL_FUNC (on_menubar_exit_activate),
- NULL);
+ GTK_SIGNAL_FUNC (GtkExitActivate),
+ "intf_window");
+ gtk_signal_connect (GTK_OBJECT (menubar_interface_hide), "activate",
+ GTK_SIGNAL_FUNC (GtkWindowToggleActivate),
+ "intf_window");
gtk_signal_connect (GTK_OBJECT (menubar_fullscreen), "activate",
- GTK_SIGNAL_FUNC (on_menubar_fullscreen_activate),
- NULL);
- gtk_signal_connect (GTK_OBJECT (menubar_angle), "activate",
- GTK_SIGNAL_FUNC (on_menubar_angle_activate),
- NULL);
+ GTK_SIGNAL_FUNC (GtkFullscreenActivate),
+ "intf_window");
gtk_signal_connect (GTK_OBJECT (menubar_playlist), "activate",
- GTK_SIGNAL_FUNC (on_menubar_playlist_activate),
- NULL);
+ GTK_SIGNAL_FUNC (GtkPlaylistActivate),
+ "intf_window");
gtk_signal_connect (GTK_OBJECT (menubar_modules), "activate",
- GTK_SIGNAL_FUNC (on_menubar_modules_activate),
- NULL);
+ GTK_SIGNAL_FUNC (GtkModulesActivate),
+ "intf_window");
gtk_signal_connect (GTK_OBJECT (menubar_preferences), "activate",
- GTK_SIGNAL_FUNC (on_menubar_preferences_activate),
- NULL);
+ GTK_SIGNAL_FUNC (GtkPreferencesActivate),
+ "intf_window");
gtk_signal_connect (GTK_OBJECT (menubar_about), "activate",
- GTK_SIGNAL_FUNC (on_menubar_about_activate),
- NULL);
- gtk_signal_connect (GTK_OBJECT (toolbar_open), "clicked",
- GTK_SIGNAL_FUNC (on_toolbar_open_clicked),
- NULL);
- 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);
- gtk_signal_connect (GTK_OBJECT (toolbar_stop), "clicked",
- GTK_SIGNAL_FUNC (on_toolbar_stop_clicked),
- NULL);
- gtk_signal_connect (GTK_OBJECT (toolbar_play), "clicked",
- GTK_SIGNAL_FUNC (on_toolbar_play_clicked),
- NULL);
- gtk_signal_connect (GTK_OBJECT (toolbar_pause), "clicked",
- GTK_SIGNAL_FUNC (on_toolbar_pause_clicked),
- NULL);
- gtk_signal_connect (GTK_OBJECT (toolbar_slow), "clicked",
- GTK_SIGNAL_FUNC (on_toolbar_slow_clicked),
- NULL);
- gtk_signal_connect (GTK_OBJECT (toolbar_fast), "clicked",
- GTK_SIGNAL_FUNC (on_toolbar_fast_clicked),
- NULL);
- gtk_signal_connect (GTK_OBJECT (toolbar_playlist), "clicked",
- GTK_SIGNAL_FUNC (on_toolbar_playlist_clicked),
- NULL);
- gtk_signal_connect (GTK_OBJECT (toolbar_prev), "clicked",
- GTK_SIGNAL_FUNC (on_toolbar_prev_clicked),
- NULL);
- gtk_signal_connect (GTK_OBJECT (toolbar_next), "clicked",
- GTK_SIGNAL_FUNC (on_toolbar_next_clicked),
- NULL);
+ GTK_SIGNAL_FUNC (GtkAboutActivate),
+ "intf_window");
+ gtk_signal_connect (GTK_OBJECT (toolbar_open), "button_press_event",
+ GTK_SIGNAL_FUNC (GtkFileOpenShow),
+ "intf_window");
+ gtk_signal_connect (GTK_OBJECT (toolbar_disc), "button_press_event",
+ GTK_SIGNAL_FUNC (GtkDiscOpenShow),
+ "intf_window");
+ gtk_signal_connect (GTK_OBJECT (toolbar_network), "button_press_event",
+ GTK_SIGNAL_FUNC (GtkNetworkOpenShow),
+ "intf_window");
+ gtk_signal_connect (GTK_OBJECT (toolbar_back), "button_press_event",
+ GTK_SIGNAL_FUNC (GtkControlBack),
+ "intf_window");
+ gtk_signal_connect (GTK_OBJECT (toolbar_stop), "button_press_event",
+ GTK_SIGNAL_FUNC (GtkControlStop),
+ "intf_window");
+ gtk_signal_connect (GTK_OBJECT (toolbar_play), "button_press_event",
+ GTK_SIGNAL_FUNC (GtkControlPlay),
+ "intf_window");
+ gtk_signal_connect (GTK_OBJECT (toolbar_pause), "button_press_event",
+ GTK_SIGNAL_FUNC (GtkControlPause),
+ "intf_window");
+ gtk_signal_connect (GTK_OBJECT (toolbar_slow), "button_press_event",
+ GTK_SIGNAL_FUNC (GtkControlSlow),
+ "intf_window");
+ gtk_signal_connect (GTK_OBJECT (toolbar_fast), "button_press_event",
+ GTK_SIGNAL_FUNC (GtkControlFast),
+ "intf_window");
+ gtk_signal_connect (GTK_OBJECT (toolbar_playlist), "button_press_event",
+ GTK_SIGNAL_FUNC (GtkPlaylistShow),
+ "intf_window");
+ gtk_signal_connect (GTK_OBJECT (toolbar_prev), "button_press_event",
+ GTK_SIGNAL_FUNC (GtkPlaylistPrev),
+ "intf_window");
+ gtk_signal_connect (GTK_OBJECT (toolbar_next), "button_press_event",
+ GTK_SIGNAL_FUNC (GtkPlaylistNext),
+ "intf_window");
gtk_signal_connect (GTK_OBJECT (slider), "button_release_event",
- GTK_SIGNAL_FUNC (on_slider_button_release_event),
- NULL);
+ GTK_SIGNAL_FUNC (GtkSliderRelease),
+ "intf_window");
gtk_signal_connect (GTK_OBJECT (slider), "button_press_event",
- GTK_SIGNAL_FUNC (on_slider_button_press_event),
- NULL);
+ GTK_SIGNAL_FUNC (GtkSliderPress),
+ "intf_window");
+ gtk_signal_connect (GTK_OBJECT (title_prev_button), "clicked",
+ GTK_SIGNAL_FUNC (GtkTitlePrev),
+ "intf_window");
+ gtk_signal_connect (GTK_OBJECT (title_next_button), "clicked",
+ GTK_SIGNAL_FUNC (GtkTitleNext),
+ "intf_window");
+ gtk_signal_connect (GTK_OBJECT (chapter_prev_button), "clicked",
+ GTK_SIGNAL_FUNC (GtkChapterPrev),
+ "intf_window");
+ gtk_signal_connect (GTK_OBJECT (chapter_next_button), "clicked",
+ GTK_SIGNAL_FUNC (GtkChapterNext),
+ "intf_window");
gtk_object_set_data (GTK_OBJECT (intf_window), "tooltips", tooltips);
guint tmp_key;
GtkWidget *popup_play;
GtkWidget *popup_pause;
+ GtkWidget *popup_stop;
+ GtkWidget *popup_back;
GtkWidget *popup_slow;
GtkWidget *popup_fast;
GtkWidget *separator6;
- GtkWidget *main_window_toggle;
+ GtkWidget *popup_interface_toggle;
+ GtkWidget *popup_fullscreen;
GtkWidget *separator5;
+ GtkWidget *popup_next;
+ GtkWidget *popup_prev;
+ GtkWidget *popup_jump;
GtkWidget *popup_navigation;
+ GtkWidget *popup_angle;
GtkWidget *popup_audio;
GtkWidget *popup_subpictures;
- GtkWidget *popup_file;
- GtkWidget *popup_file_menu;
- GtkAccelGroup *popup_file_menu_accels;
GtkWidget *popup_open;
+ GtkWidget *popup_open_menu;
+ GtkAccelGroup *popup_open_menu_accels;
+ GtkWidget *popup_file;
GtkWidget *popup_disc;
GtkWidget *popup_network;
GtkWidget *separator12;
GtkWidget *popup_about;
+ GtkWidget *popup_playlist;
+ GtkWidget *popup_preferences;
GtkWidget *separator9;
GtkWidget *popup_exit;
GtkTooltips *tooltips;
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (popup_pause);
gtk_container_add (GTK_CONTAINER (intf_popup), popup_pause);
+ gtk_widget_set_sensitive (popup_pause, FALSE);
+
+ popup_stop = gtk_menu_item_new_with_label (_("Stop"));
+ gtk_widget_ref (popup_stop);
+ gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_stop", popup_stop,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (popup_stop);
+ gtk_container_add (GTK_CONTAINER (intf_popup), popup_stop);
+ gtk_widget_set_sensitive (popup_stop, FALSE);
+
+ popup_back = gtk_menu_item_new_with_label (_("Back"));
+ gtk_widget_ref (popup_back);
+ gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_back", popup_back,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (popup_back);
+ gtk_container_add (GTK_CONTAINER (intf_popup), popup_back);
+ gtk_widget_set_sensitive (popup_back, FALSE);
popup_slow = gtk_menu_item_new_with_label (_("Slow"));
gtk_widget_ref (popup_slow);
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (popup_slow);
gtk_container_add (GTK_CONTAINER (intf_popup), popup_slow);
+ gtk_widget_set_sensitive (popup_slow, FALSE);
popup_fast = gtk_menu_item_new_with_label (_("Fast"));
gtk_widget_ref (popup_fast);
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (popup_fast);
gtk_container_add (GTK_CONTAINER (intf_popup), popup_fast);
+ gtk_widget_set_sensitive (popup_fast, FALSE);
separator6 = gtk_menu_item_new ();
gtk_widget_ref (separator6);
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),
+ popup_interface_toggle = gtk_check_menu_item_new_with_label ("");
+ tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_interface_toggle)->child),
_("Toggle _Interface"));
- gtk_widget_add_accelerator (main_window_toggle, "activate_item", intf_popup_accels,
+ gtk_widget_add_accelerator (popup_interface_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,
+ gtk_widget_ref (popup_interface_toggle);
+ gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_interface_toggle", popup_interface_toggle,
(GtkDestroyNotify) gtk_widget_unref);
- gtk_widget_show (main_window_toggle);
- gtk_container_add (GTK_CONTAINER (intf_popup), main_window_toggle);
+ gtk_widget_show (popup_interface_toggle);
+ gtk_container_add (GTK_CONTAINER (intf_popup), popup_interface_toggle);
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (popup_interface_toggle), TRUE);
+ gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (popup_interface_toggle), TRUE);
+
+ popup_fullscreen = gtk_check_menu_item_new_with_label ("");
+ tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_fullscreen)->child),
+ _("_Fullscreen"));
+ gtk_widget_add_accelerator (popup_fullscreen, "activate_item", intf_popup_accels,
+ tmp_key, 0, 0);
+ gtk_widget_ref (popup_fullscreen);
+ gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_fullscreen", popup_fullscreen,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (popup_fullscreen);
+ gtk_container_add (GTK_CONTAINER (intf_popup), popup_fullscreen);
+ gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (popup_fullscreen), TRUE);
separator5 = gtk_menu_item_new ();
gtk_widget_ref (separator5);
gtk_container_add (GTK_CONTAINER (intf_popup), separator5);
gtk_widget_set_sensitive (separator5, FALSE);
+ popup_next = gtk_menu_item_new_with_label (_("Next"));
+ gtk_widget_ref (popup_next);
+ gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_next", popup_next,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (popup_next);
+ gtk_container_add (GTK_CONTAINER (intf_popup), popup_next);
+
+ popup_prev = gtk_menu_item_new_with_label (_("Prev"));
+ gtk_widget_ref (popup_prev);
+ gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_prev", popup_prev,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (popup_prev);
+ gtk_container_add (GTK_CONTAINER (intf_popup), popup_prev);
+
+ popup_jump = gtk_menu_item_new_with_label ("");
+ tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_jump)->child),
+ _("_Jump..."));
+ gtk_widget_add_accelerator (popup_jump, "activate_item", intf_popup_accels,
+ tmp_key, 0, 0);
+ gtk_widget_ref (popup_jump);
+ gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_jump", popup_jump,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (popup_jump);
+ gtk_container_add (GTK_CONTAINER (intf_popup), popup_jump);
+
popup_navigation = gtk_menu_item_new_with_label ("");
tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_navigation)->child),
_("_Navigation"));
gtk_container_add (GTK_CONTAINER (intf_popup), popup_navigation);
gtk_widget_set_sensitive (popup_navigation, FALSE);
+ popup_angle = gtk_menu_item_new_with_label ("");
+ tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_angle)->child),
+ _("An_gle"));
+ gtk_widget_add_accelerator (popup_angle, "activate_item", intf_popup_accels,
+ tmp_key, 0, 0);
+ gtk_widget_ref (popup_angle);
+ gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_angle", popup_angle,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (popup_angle);
+ gtk_container_add (GTK_CONTAINER (intf_popup), popup_angle);
+ gtk_widget_set_sensitive (popup_angle, FALSE);
+
popup_audio = gtk_menu_item_new_with_label ("");
tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_audio)->child),
_("_Audio"));
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),
+ popup_open = gtk_menu_item_new_with_label ("");
+ tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_open)->child),
_("_File"));
- gtk_widget_add_accelerator (popup_file, "activate_item", intf_popup_accels,
+ gtk_widget_add_accelerator (popup_open, "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,
+ 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_file);
- gtk_container_add (GTK_CONTAINER (intf_popup), popup_file);
+ gtk_widget_show (popup_open);
+ gtk_container_add (GTK_CONTAINER (intf_popup), popup_open);
- 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,
+ popup_open_menu = gtk_menu_new ();
+ gtk_widget_ref (popup_open_menu);
+ gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_open_menu", popup_open_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));
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (popup_open), popup_open_menu);
+ popup_open_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (popup_open_menu));
- popup_open = gtk_menu_item_new_with_label ("");
- tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_open)->child),
+ popup_file = gtk_menu_item_new_with_label ("");
+ tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_file)->child),
_("_Open File..."));
- gtk_widget_add_accelerator (popup_open, "activate_item", popup_file_menu_accels,
+ gtk_widget_add_accelerator (popup_file, "activate_item", popup_open_menu_accels,
tmp_key, 0, 0);
- gtk_widget_ref (popup_open);
- gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_open", popup_open,
+ 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_open);
- gtk_container_add (GTK_CONTAINER (popup_file_menu), popup_open);
- gtk_tooltips_set_tip (tooltips, popup_open, _("Open a File"), NULL);
+ gtk_widget_show (popup_file);
+ gtk_container_add (GTK_CONTAINER (popup_open_menu), popup_file);
+ gtk_tooltips_set_tip (tooltips, popup_file, _("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", popup_file_menu_accels,
+ gtk_widget_add_accelerator (popup_disc, "activate_item", popup_open_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 (popup_file_menu), popup_disc);
+ gtk_container_add (GTK_CONTAINER (popup_open_menu), popup_disc);
gtk_tooltips_set_tip (tooltips, popup_disc, _("Open a DVD or VCD"), NULL);
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,
+ gtk_widget_add_accelerator (popup_network, "activate_item", popup_open_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 (popup_network);
- gtk_container_add (GTK_CONTAINER (popup_file_menu), popup_network);
+ gtk_container_add (GTK_CONTAINER (popup_open_menu), popup_network);
gtk_tooltips_set_tip (tooltips, popup_network, _("Select a Network Stream"), NULL);
separator12 = gtk_menu_item_new ();
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_container_add (GTK_CONTAINER (popup_open_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", popup_file_menu_accels,
+ gtk_widget_add_accelerator (popup_about, "activate_item", popup_open_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 (popup_file_menu), popup_about);
+ gtk_container_add (GTK_CONTAINER (popup_open_menu), popup_about);
+
+ popup_playlist = gtk_menu_item_new_with_label (_("Playlist..."));
+ gtk_widget_ref (popup_playlist);
+ gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_playlist", popup_playlist,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (popup_playlist);
+ gtk_container_add (GTK_CONTAINER (intf_popup), popup_playlist);
+
+ popup_preferences = gtk_menu_item_new_with_label ("");
+ tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (popup_preferences)->child),
+ _("_Preferences..."));
+ gtk_widget_add_accelerator (popup_preferences, "activate_item", intf_popup_accels,
+ tmp_key, 0, 0);
+ gtk_widget_ref (popup_preferences);
+ gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_preferences", popup_preferences,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (popup_preferences);
+ gtk_container_add (GTK_CONTAINER (intf_popup), popup_preferences);
separator9 = gtk_menu_item_new ();
gtk_widget_ref (separator9);
gtk_container_add (GTK_CONTAINER (intf_popup), popup_exit);
gtk_signal_connect (GTK_OBJECT (popup_play), "activate",
- GTK_SIGNAL_FUNC (on_popup_play_activate),
- NULL);
+ GTK_SIGNAL_FUNC (GtkPlayActivate),
+ "intf_popup");
gtk_signal_connect (GTK_OBJECT (popup_pause), "activate",
- GTK_SIGNAL_FUNC (on_popup_pause_activate),
- NULL);
+ GTK_SIGNAL_FUNC (GtkPauseActivate),
+ "intf_popup");
+ gtk_signal_connect (GTK_OBJECT (popup_stop), "activate",
+ GTK_SIGNAL_FUNC (GtKStopActivate),
+ "intf_popup");
+ gtk_signal_connect (GTK_OBJECT (popup_back), "activate",
+ GTK_SIGNAL_FUNC (GtkBackActivate),
+ "intf_popup");
gtk_signal_connect (GTK_OBJECT (popup_slow), "activate",
- GTK_SIGNAL_FUNC (on_popup_slow_activate),
- NULL);
+ GTK_SIGNAL_FUNC (GtkSlowActivate),
+ "intf_popup");
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_FUNC (GtkFastActivate),
+ "intf_popup");
+ gtk_signal_connect (GTK_OBJECT (popup_interface_toggle), "activate",
+ GTK_SIGNAL_FUNC (GtkWindowToggleActivate),
+ "intf_popup");
+ gtk_signal_connect (GTK_OBJECT (popup_fullscreen), "activate",
+ GTK_SIGNAL_FUNC (GtkFullscreenActivate),
+ "intf_popup");
+ gtk_signal_connect (GTK_OBJECT (popup_next), "activate",
+ GTK_SIGNAL_FUNC (GtkNextActivate),
+ "intf_popup");
+ gtk_signal_connect (GTK_OBJECT (popup_prev), "activate",
+ GTK_SIGNAL_FUNC (GtkPrevActivate),
+ "intf_popup");
+ gtk_signal_connect (GTK_OBJECT (popup_jump), "activate",
+ GTK_SIGNAL_FUNC (GtkJumpActivate),
+ "intf_popup");
+ gtk_signal_connect (GTK_OBJECT (popup_file), "activate",
+ GTK_SIGNAL_FUNC (GtkFileOpenActivate),
+ "intf_popup");
gtk_signal_connect (GTK_OBJECT (popup_disc), "activate",
- GTK_SIGNAL_FUNC (on_popup_disc_activate),
- NULL);
+ GTK_SIGNAL_FUNC (GtkDiscOpenActivate),
+ "intf_popup");
gtk_signal_connect (GTK_OBJECT (popup_network), "activate",
- GTK_SIGNAL_FUNC (on_popup_network_activate),
- NULL);
+ GTK_SIGNAL_FUNC (GtkNetworkOpenActivate),
+ "intf_popup");
gtk_signal_connect (GTK_OBJECT (popup_about), "activate",
- GTK_SIGNAL_FUNC (on_popup_about_activate),
- NULL);
+ GTK_SIGNAL_FUNC (GtkAboutActivate),
+ "intf_popup");
+ gtk_signal_connect (GTK_OBJECT (popup_playlist), "activate",
+ GTK_SIGNAL_FUNC (GtkPlaylistActivate),
+ "intf_popup");
+ gtk_signal_connect (GTK_OBJECT (popup_preferences), "activate",
+ GTK_SIGNAL_FUNC (GtkPreferencesActivate),
+ "intf_popup");
gtk_signal_connect (GTK_OBJECT (popup_exit), "activate",
- GTK_SIGNAL_FUNC (on_popup_exit_activate),
- NULL);
+ GTK_SIGNAL_FUNC (GtkExitActivate),
+ "intf_popup");
gtk_object_set_data (GTK_OBJECT (intf_popup), "tooltips", tooltips);
GTK_WIDGET_SET_FLAGS (about_ok, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (about_ok), "clicked",
- GTK_SIGNAL_FUNC (on_about_ok_clicked),
- NULL);
+ GTK_SIGNAL_FUNC (GtkAboutOk),
+ "intf_about");
gtk_widget_grab_default (about_ok);
return intf_about;
gtk_widget_show (fileopen_cancel);
GTK_WIDGET_SET_FLAGS (fileopen_cancel, GTK_CAN_DEFAULT);
- gtk_signal_connect (GTK_OBJECT (intf_fileopen), "destroy",
- GTK_SIGNAL_FUNC (on_intf_fileopen_destroy),
- NULL);
gtk_signal_connect (GTK_OBJECT (fileopen_ok), "clicked",
- GTK_SIGNAL_FUNC (on_fileopen_ok_clicked),
- NULL);
+ GTK_SIGNAL_FUNC (GtkFileOpenOk),
+ "intf_fileopen");
gtk_signal_connect (GTK_OBJECT (fileopen_cancel), "clicked",
- GTK_SIGNAL_FUNC (on_fileopen_cancel_clicked),
- NULL);
+ GTK_SIGNAL_FUNC (GtkFileOpenCancel),
+ "intf_fileopen");
return intf_fileopen;
}
gtk_box_pack_start (GTK_BOX (hbox1), disc_cancel, FALSE, TRUE, 0);
gtk_signal_connect (GTK_OBJECT (disc_dvd), "toggled",
- GTK_SIGNAL_FUNC (on_disc_dvd_toggled),
- NULL);
+ GTK_SIGNAL_FUNC (GtkDiscOpenDvd),
+ "intf_disc");
gtk_signal_connect (GTK_OBJECT (disc_vcd), "toggled",
- GTK_SIGNAL_FUNC (on_disc_vcd_toggled),
- NULL);
+ GTK_SIGNAL_FUNC (GtkDiscOpenVcd),
+ "intf_disc");
gtk_signal_connect (GTK_OBJECT (disc_ok), "clicked",
- GTK_SIGNAL_FUNC (on_disc_ok_clicked),
- NULL);
+ GTK_SIGNAL_FUNC (GtkDiscOpenOk),
+ "intf_disc");
gtk_signal_connect (GTK_OBJECT (disc_cancel), "clicked",
- GTK_SIGNAL_FUNC (on_disc_cancel_clicked),
- NULL);
+ GTK_SIGNAL_FUNC (GtkDiscOpenCancel),
+ "intf_disc");
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 *network_port;
GtkWidget *label24;
GtkWidget *label25;
+ GtkWidget *broadcast_check;
+ GtkWidget *network_broadcast_combo;
+ GtkWidget *network_broadcast;
+ GtkWidget *network_server_combo;
+ GList *network_server_combo_items = NULL;
GtkWidget *network_server;
GtkWidget *hbox4;
GtkWidget *hbox5;
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_title (GTK_WINDOW (intf_network), _("Open Network"));
gtk_window_set_modal (GTK_WINDOW (intf_network), TRUE);
gtk_window_set_policy (GTK_WINDOW (intf_network), FALSE, FALSE, FALSE);
gtk_widget_show (frame5);
gtk_box_pack_start (GTK_BOX (hbox6), frame5, TRUE, TRUE, 0);
- table2 = gtk_table_new (2, 2, FALSE);
+ table2 = gtk_table_new (3, 2, FALSE);
gtk_widget_ref (table2);
gtk_object_set_data_full (GTK_OBJECT (intf_network), "table2", table2,
(GtkDestroyNotify) gtk_widget_unref);
(GtkAttachOptions) (0), 0, 0);
gtk_misc_set_alignment (GTK_MISC (label25), 0, 0.5);
- network_server = gtk_entry_new ();
+ broadcast_check = gtk_check_button_new_with_label (_("Broadcast"));
+ gtk_widget_ref (broadcast_check);
+ gtk_object_set_data_full (GTK_OBJECT (intf_network), "broadcast_check", broadcast_check,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (broadcast_check);
+ gtk_table_attach (GTK_TABLE (table2), broadcast_check, 0, 1, 2, 3,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+
+ network_broadcast_combo = gtk_combo_new ();
+ gtk_widget_ref (network_broadcast_combo);
+ gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_broadcast_combo", network_broadcast_combo,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (network_broadcast_combo);
+ gtk_table_attach (GTK_TABLE (table2), network_broadcast_combo, 1, 2, 2, 3,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_set_sensitive (network_broadcast_combo, FALSE);
+
+ network_broadcast = GTK_COMBO (network_broadcast_combo)->entry;
+ gtk_widget_ref (network_broadcast);
+ gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_broadcast", network_broadcast,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (network_broadcast);
+ gtk_widget_set_sensitive (network_broadcast, FALSE);
+
+ network_server_combo = gtk_combo_new ();
+ gtk_widget_ref (network_server_combo);
+ gtk_object_set_data_full (GTK_OBJECT (intf_network), "network_server_combo", network_server_combo,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (network_server_combo);
+ gtk_table_attach (GTK_TABLE (table2), network_server_combo, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ network_server_combo_items = g_list_append (network_server_combo_items, (gpointer) _("vls"));
+ gtk_combo_set_popdown_strings (GTK_COMBO (network_server_combo), network_server_combo_items);
+ g_list_free (network_server_combo_items);
+
+ network_server = GTK_COMBO (network_server_combo)->entry;
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_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 (broadcast_check), "toggled",
+ GTK_SIGNAL_FUNC (GtkNetworkOpenBroadcast),
+ "intf_network");
gtk_signal_connect (GTK_OBJECT (network_ok), "clicked",
- GTK_SIGNAL_FUNC (on_network_ok_clicked),
- NULL);
+ GTK_SIGNAL_FUNC (GtkNetworkOpenOk),
+ "intf_network");
gtk_signal_connect (GTK_OBJECT (network_cancel), "clicked",
- GTK_SIGNAL_FUNC (on_network_cancel_clicked),
- NULL);
+ GTK_SIGNAL_FUNC (GtkNetworkOpenCancel),
+ "intf_network");
return intf_network;
}
+GtkWidget*
+create_intf_jump (void)
+{
+ GtkWidget *intf_jump;
+ GtkWidget *dialog_vbox3;
+ GtkWidget *jump_frame;
+ GtkWidget *hbox13;
+ GtkWidget *jump_seconde_label;
+ GtkObject *jump_seconde_spinbutton_adj;
+ GtkWidget *jump_seconde_spinbutton;
+ GtkWidget *jump_minute_label;
+ GtkObject *jump_minute_spinbutton_adj;
+ GtkWidget *jump_minute_spinbutton;
+ GtkWidget *jump_hour_label;
+ GtkObject *jump_hour_spinbutton_adj;
+ GtkWidget *jump_hour_spinbutton;
+ GtkWidget *dialog_action_area2;
+ GtkWidget *jump_ok_button;
+ GtkWidget *jump_cancel_button;
+
+ intf_jump = gtk_dialog_new ();
+ gtk_object_set_data (GTK_OBJECT (intf_jump), "intf_jump", intf_jump);
+ gtk_window_set_title (GTK_WINDOW (intf_jump), _("Jump"));
+ gtk_window_set_policy (GTK_WINDOW (intf_jump), TRUE, TRUE, FALSE);
+
+ dialog_vbox3 = GTK_DIALOG (intf_jump)->vbox;
+ gtk_object_set_data (GTK_OBJECT (intf_jump), "dialog_vbox3", dialog_vbox3);
+ gtk_widget_show (dialog_vbox3);
+
+ jump_frame = gtk_frame_new (_("Go to:"));
+ gtk_widget_ref (jump_frame);
+ gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_frame", jump_frame,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (jump_frame);
+ gtk_box_pack_start (GTK_BOX (dialog_vbox3), jump_frame, TRUE, TRUE, 0);
+ gtk_container_set_border_width (GTK_CONTAINER (jump_frame), 5);
+ gtk_frame_set_label_align (GTK_FRAME (jump_frame), 0.05, 0.5);
+
+ hbox13 = gtk_hbox_new (FALSE, 0);
+ gtk_widget_ref (hbox13);
+ gtk_object_set_data_full (GTK_OBJECT (intf_jump), "hbox13", hbox13,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (hbox13);
+ gtk_container_add (GTK_CONTAINER (jump_frame), hbox13);
+
+ jump_seconde_label = gtk_label_new (_("s."));
+ gtk_widget_ref (jump_seconde_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_seconde_label", jump_seconde_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (jump_seconde_label);
+ gtk_box_pack_end (GTK_BOX (hbox13), jump_seconde_label, FALSE, FALSE, 5);
+
+ jump_seconde_spinbutton_adj = gtk_adjustment_new (0, 0, 60, 1, 10, 10);
+ jump_seconde_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (jump_seconde_spinbutton_adj), 1, 0);
+ gtk_widget_ref (jump_seconde_spinbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_seconde_spinbutton", jump_seconde_spinbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (jump_seconde_spinbutton);
+ gtk_box_pack_end (GTK_BOX (hbox13), jump_seconde_spinbutton, FALSE, TRUE, 0);
+
+ jump_minute_label = gtk_label_new (_("m:"));
+ gtk_widget_ref (jump_minute_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_minute_label", jump_minute_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (jump_minute_label);
+ gtk_box_pack_end (GTK_BOX (hbox13), jump_minute_label, FALSE, FALSE, 5);
+
+ jump_minute_spinbutton_adj = gtk_adjustment_new (0, 0, 60, 1, 10, 10);
+ jump_minute_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (jump_minute_spinbutton_adj), 1, 0);
+ gtk_widget_ref (jump_minute_spinbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_minute_spinbutton", jump_minute_spinbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (jump_minute_spinbutton);
+ gtk_box_pack_end (GTK_BOX (hbox13), jump_minute_spinbutton, FALSE, TRUE, 0);
+
+ jump_hour_label = gtk_label_new (_("h:"));
+ gtk_widget_ref (jump_hour_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_hour_label", jump_hour_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (jump_hour_label);
+ gtk_box_pack_end (GTK_BOX (hbox13), jump_hour_label, FALSE, FALSE, 5);
+
+ jump_hour_spinbutton_adj = gtk_adjustment_new (0, 0, 12, 1, 10, 10);
+ jump_hour_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (jump_hour_spinbutton_adj), 1, 0);
+ gtk_widget_ref (jump_hour_spinbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_hour_spinbutton", jump_hour_spinbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (jump_hour_spinbutton);
+ gtk_box_pack_end (GTK_BOX (hbox13), jump_hour_spinbutton, FALSE, TRUE, 0);
+
+ dialog_action_area2 = GTK_DIALOG (intf_jump)->action_area;
+ gtk_object_set_data (GTK_OBJECT (intf_jump), "dialog_action_area2", dialog_action_area2);
+ gtk_widget_show (dialog_action_area2);
+ gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area2), 10);
+
+ jump_ok_button = gtk_button_new_with_label (_("Ok"));
+ gtk_widget_ref (jump_ok_button);
+ gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_ok_button", jump_ok_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (jump_ok_button);
+ gtk_box_pack_start (GTK_BOX (dialog_action_area2), jump_ok_button, TRUE, TRUE, 0);
+
+ jump_cancel_button = gtk_button_new_with_label (_("Cancel"));
+ gtk_widget_ref (jump_cancel_button);
+ gtk_object_set_data_full (GTK_OBJECT (intf_jump), "jump_cancel_button", jump_cancel_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (jump_cancel_button);
+ gtk_box_pack_start (GTK_BOX (dialog_action_area2), jump_cancel_button, TRUE, TRUE, 0);
+
+ gtk_signal_connect (GTK_OBJECT (jump_ok_button), "clicked",
+ GTK_SIGNAL_FUNC (GtkJumpOk),
+ "intf_jump");
+ gtk_signal_connect (GTK_OBJECT (jump_cancel_button), "clicked",
+ GTK_SIGNAL_FUNC (GtkJumpCancel),
+ "intf_jump");
+
+ return intf_jump;
+}
+
+GtkWidget*
+create_intf_playlist (void)
+{
+ GtkWidget *intf_playlist;
+ GtkWidget *dialog_vbox4;
+ GtkWidget *playlist_menubar;
+ GtkWidget *playlist_add;
+ GtkWidget *playlist_add_menu;
+ GtkAccelGroup *playlist_add_menu_accels;
+ GtkWidget *playlist_add_disc;
+ GtkWidget *playlist_add_file;
+ GtkWidget *playlist_add_network;
+ GtkWidget *playlist_add_url;
+ GtkWidget *playlist_delete;
+ GtkWidget *playlist_delete_menu;
+ GtkAccelGroup *playlist_delete_menu_accels;
+ GtkWidget *playlist_delete_all;
+ GtkWidget *playlist_delete_selected;
+ GtkWidget *playlist_selection;
+ GtkWidget *playlist_selection_menu;
+ GtkAccelGroup *playlist_selection_menu_accels;
+ guint tmp_key;
+ GtkWidget *playlist_selection_crop;
+ GtkWidget *playlist_selection_invert;
+ GtkWidget *playlist_selection_select;
+ GtkWidget *scrolledwindow1;
+ GtkWidget *playlist_clist;
+ GtkWidget *label22;
+ GtkWidget *label23;
+ GtkWidget *dialog_action_area3;
+ GtkWidget *playlist_ok_button;
+ GtkWidget *playlist_cancel_button;
+
+ intf_playlist = gtk_dialog_new ();
+ 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), 400, 300);
+ gtk_window_set_policy (GTK_WINDOW (intf_playlist), TRUE, TRUE, FALSE);
+
+ dialog_vbox4 = GTK_DIALOG (intf_playlist)->vbox;
+ gtk_object_set_data (GTK_OBJECT (intf_playlist), "dialog_vbox4", dialog_vbox4);
+ gtk_widget_show (dialog_vbox4);
+
+ playlist_menubar = gtk_menu_bar_new ();
+ gtk_widget_ref (playlist_menubar);
+ gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_menubar", playlist_menubar,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (playlist_menubar);
+ gtk_box_pack_start (GTK_BOX (dialog_vbox4), playlist_menubar, FALSE, FALSE, 0);
+
+ playlist_add = gtk_menu_item_new_with_label (_("Add"));
+ gtk_widget_ref (playlist_add);
+ gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_add", playlist_add,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (playlist_add);
+ gtk_container_add (GTK_CONTAINER (playlist_menubar), playlist_add);
+
+ playlist_add_menu = gtk_menu_new ();
+ gtk_widget_ref (playlist_add_menu);
+ gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_add_menu", playlist_add_menu,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (playlist_add), playlist_add_menu);
+ playlist_add_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (playlist_add_menu));
+
+ playlist_add_disc = gtk_menu_item_new_with_label (_("Disc"));
+ gtk_widget_ref (playlist_add_disc);
+ gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_add_disc", playlist_add_disc,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (playlist_add_disc);
+ gtk_container_add (GTK_CONTAINER (playlist_add_menu), playlist_add_disc);
+
+ playlist_add_file = gtk_menu_item_new_with_label (_("File"));
+ gtk_widget_ref (playlist_add_file);
+ gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_add_file", playlist_add_file,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (playlist_add_file);
+ gtk_container_add (GTK_CONTAINER (playlist_add_menu), playlist_add_file);
+
+ playlist_add_network = gtk_menu_item_new_with_label (_("Network"));
+ gtk_widget_ref (playlist_add_network);
+ gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_add_network", playlist_add_network,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (playlist_add_network);
+ gtk_container_add (GTK_CONTAINER (playlist_add_menu), playlist_add_network);
+
+ playlist_add_url = gtk_menu_item_new_with_label (_("Url"));
+ gtk_widget_ref (playlist_add_url);
+ gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_add_url", playlist_add_url,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (playlist_add_url);
+ gtk_container_add (GTK_CONTAINER (playlist_add_menu), playlist_add_url);
+
+ playlist_delete = gtk_menu_item_new_with_label (_("Delete"));
+ gtk_widget_ref (playlist_delete);
+ gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_delete", playlist_delete,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (playlist_delete);
+ gtk_container_add (GTK_CONTAINER (playlist_menubar), playlist_delete);
+
+ playlist_delete_menu = gtk_menu_new ();
+ gtk_widget_ref (playlist_delete_menu);
+ gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_delete_menu", playlist_delete_menu,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (playlist_delete), playlist_delete_menu);
+ playlist_delete_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (playlist_delete_menu));
+
+ playlist_delete_all = gtk_menu_item_new_with_label (_("All"));
+ gtk_widget_ref (playlist_delete_all);
+ gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_delete_all", playlist_delete_all,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (playlist_delete_all);
+ gtk_container_add (GTK_CONTAINER (playlist_delete_menu), playlist_delete_all);
+
+ playlist_delete_selected = gtk_menu_item_new_with_label (_("Selected"));
+ gtk_widget_ref (playlist_delete_selected);
+ gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_delete_selected", playlist_delete_selected,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (playlist_delete_selected);
+ gtk_container_add (GTK_CONTAINER (playlist_delete_menu), playlist_delete_selected);
+
+ playlist_selection = gtk_menu_item_new_with_label (_("Selection"));
+ gtk_widget_ref (playlist_selection);
+ gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_selection", playlist_selection,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (playlist_selection);
+ gtk_container_add (GTK_CONTAINER (playlist_menubar), playlist_selection);
+
+ playlist_selection_menu = gtk_menu_new ();
+ gtk_widget_ref (playlist_selection_menu);
+ gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_selection_menu", playlist_selection_menu,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (playlist_selection), playlist_selection_menu);
+ playlist_selection_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (playlist_selection_menu));
+
+ playlist_selection_crop = gtk_menu_item_new_with_label ("");
+ tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (playlist_selection_crop)->child),
+ _("_Crop"));
+ gtk_widget_add_accelerator (playlist_selection_crop, "activate_item", playlist_selection_menu_accels,
+ tmp_key, 0, 0);
+ gtk_widget_ref (playlist_selection_crop);
+ gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_selection_crop", playlist_selection_crop,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (playlist_selection_crop);
+ gtk_container_add (GTK_CONTAINER (playlist_selection_menu), playlist_selection_crop);
+
+ playlist_selection_invert = gtk_menu_item_new_with_label ("");
+ tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (playlist_selection_invert)->child),
+ _("_Invert"));
+ gtk_widget_add_accelerator (playlist_selection_invert, "activate_item", playlist_selection_menu_accels,
+ tmp_key, 0, 0);
+ gtk_widget_ref (playlist_selection_invert);
+ gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_selection_invert", playlist_selection_invert,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (playlist_selection_invert);
+ gtk_container_add (GTK_CONTAINER (playlist_selection_menu), playlist_selection_invert);
+
+ playlist_selection_select = gtk_menu_item_new_with_label ("");
+ tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (playlist_selection_select)->child),
+ _("_Select"));
+ gtk_widget_add_accelerator (playlist_selection_select, "activate_item", playlist_selection_menu_accels,
+ tmp_key, 0, 0);
+ gtk_widget_ref (playlist_selection_select);
+ gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_selection_select", playlist_selection_select,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (playlist_selection_select);
+ gtk_container_add (GTK_CONTAINER (playlist_selection_menu), playlist_selection_select);
+
+ 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 (dialog_vbox4), 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), 5);
+ 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);
+
+ dialog_action_area3 = GTK_DIALOG (intf_playlist)->action_area;
+ gtk_object_set_data (GTK_OBJECT (intf_playlist), "dialog_action_area3", dialog_action_area3);
+ gtk_widget_show (dialog_action_area3);
+ gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area3), 10);
+
+ playlist_ok_button = gtk_button_new_with_label (_("Ok"));
+ gtk_widget_ref (playlist_ok_button);
+ gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_ok_button", playlist_ok_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (playlist_ok_button);
+ gtk_box_pack_start (GTK_BOX (dialog_action_area3), playlist_ok_button, TRUE, TRUE, 0);
+
+ playlist_cancel_button = gtk_button_new_with_label (_("Cancel"));
+ gtk_widget_ref (playlist_cancel_button);
+ gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_cancel_button", playlist_cancel_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (playlist_cancel_button);
+ gtk_box_pack_start (GTK_BOX (dialog_action_area3), playlist_cancel_button, TRUE, TRUE, 0);
+
+ gtk_signal_connect (GTK_OBJECT (playlist_add_disc), "activate",
+ GTK_SIGNAL_FUNC (GtkDiscOpenActivate),
+ "intf_playlist");
+ gtk_signal_connect (GTK_OBJECT (playlist_add_file), "activate",
+ GTK_SIGNAL_FUNC (GtkFileOpenActivate),
+ "intf_playlist");
+ gtk_signal_connect (GTK_OBJECT (playlist_add_network), "activate",
+ GTK_SIGNAL_FUNC (GtkNetworkOpenActivate),
+ "intf_playlist");
+ gtk_signal_connect (GTK_OBJECT (playlist_add_url), "activate",
+ GTK_SIGNAL_FUNC (GtkPlaylistAddUrl),
+ "intf_playlist");
+ gtk_signal_connect (GTK_OBJECT (playlist_delete_all), "activate",
+ GTK_SIGNAL_FUNC (GtkPlaylistDeleteAll),
+ "intf_playlist");
+ gtk_signal_connect (GTK_OBJECT (playlist_delete_selected), "activate",
+ GTK_SIGNAL_FUNC (GtkPlaylistDeleteSelected),
+ "intf_playlist");
+ gtk_signal_connect (GTK_OBJECT (playlist_selection_crop), "activate",
+ GTK_SIGNAL_FUNC (GtkPlaylistCrop),
+ "intf_playlist");
+ gtk_signal_connect (GTK_OBJECT (playlist_selection_invert), "activate",
+ GTK_SIGNAL_FUNC (GtkPlaylistInvert),
+ "intf_playlist");
+ gtk_signal_connect (GTK_OBJECT (playlist_selection_select), "activate",
+ GTK_SIGNAL_FUNC (GtkPlaylistSelect),
+ "intf_playlist");
+ gtk_signal_connect (GTK_OBJECT (playlist_clist), "event",
+ GTK_SIGNAL_FUNC (GtkPlaylistEvent),
+ "intf_playlist");
+ gtk_signal_connect (GTK_OBJECT (playlist_clist), "drag_data_received",
+ GTK_SIGNAL_FUNC (GtkPlaylistDragData),
+ "intf_playlist");
+ gtk_signal_connect (GTK_OBJECT (playlist_clist), "drag_motion",
+ GTK_SIGNAL_FUNC (GtkPlaylistDragMotion),
+ "intf_playlist");
+ gtk_signal_connect (GTK_OBJECT (playlist_ok_button), "clicked",
+ GTK_SIGNAL_FUNC (GtkPlaylistOk),
+ "intf_playlist");
+ gtk_signal_connect (GTK_OBJECT (playlist_cancel_button), "clicked",
+ GTK_SIGNAL_FUNC (GtkPlaylistCancel),
+ "intf_playlist");
+
+ return intf_playlist;
+}
+
+GtkWidget*
+create_intf_preferences (void)
+{
+ GtkWidget *intf_preferences;
+ GtkWidget *dialog_vbox5;
+ GtkWidget *preferences_notebook;
+ GtkWidget *preferences_file_table;
+ GtkWidget *preferences_file_path_label;
+ GtkWidget *preferences_file_path_combo;
+ GtkWidget *preferences_file_path_entry;
+ GtkWidget *preferences_file_path_button;
+ GtkWidget *preferences_file;
+ GtkWidget *preferences_disc_table;
+ GtkWidget *preferences_disc_vcd_label;
+ GtkWidget *preference_disc_dvd_label;
+ GtkWidget *preferences_disc_dvd_combo;
+ GList *preferences_disc_dvd_combo_items = NULL;
+ GtkWidget *preferences_disc_dvd_entry;
+ GtkWidget *preferences_disc_vcd_combo;
+ GList *preferences_disc_vcd_combo_items = NULL;
+ GtkWidget *preferences_disc_vcd_entry;
+ GtkWidget *preferences_disc_dvd_browse_button;
+ GtkWidget *preferences_disc_vcd_browse_button;
+ GtkWidget *preferences_disc;
+ GtkWidget *preferences_network_table;
+ GtkWidget *preferences_network_server_combo;
+ GtkWidget *preferences_network_server_entry;
+ GtkWidget *preferences_network_broadcast_combo;
+ GtkWidget *preferences_network_broadcast_entry;
+ GtkWidget *preferences_network_server_label;
+ GtkWidget *preferences_network_port_label;
+ GtkObject *preferences_network_port_spinbutton_adj;
+ GtkWidget *preferences_network_port_spinbutton;
+ GtkWidget *preferences_network_broadcast_label;
+ GtkWidget *preferences_network_broadcast_checkbutton;
+ GtkWidget *preferences_network_protocol_label;
+ GSList *preferences_network_protocol_group_group = NULL;
+ GtkWidget *preferences_network_ts_radiobutton;
+ GtkWidget *preferences_network_rtp_radiobutton;
+ GtkWidget *preferences_network_http_radiobutton;
+ GtkWidget *preferences_network;
+ GtkWidget *preferences_interface_table;
+ GtkWidget *preferences_interface_combo;
+ GList *preferences_interface_combo_items = NULL;
+ GtkWidget *preferences_interface_entry;
+ GtkWidget *preferences_interface_label;
+ GtkWidget *preferences_interface;
+ GtkWidget *preferences_video_table;
+ GtkWidget *preferences_video_output_combo;
+ GList *preferences_video_output_combo_items = NULL;
+ GtkWidget *preferences_video_output_entry;
+ GtkWidget *preferences_video_output_label;
+ GtkWidget *preferences_video_width_label;
+ GtkObject *preferences_video_height_spinbutton_adj;
+ GtkWidget *preferences_video_height_spinbutton;
+ GtkObject *preferences_video_width_spinbutton_adj;
+ GtkWidget *preferences_video_width_spinbutton;
+ GtkWidget *preferences_video_height_label;
+ GtkWidget *preferences_depth_optionmenu;
+ GtkWidget *preferences_depth_optionmenu_menu;
+ GtkWidget *glade_menuitem;
+ GtkWidget *preferences_video_depth_label;
+ GtkWidget *preferences_video_fullscreen_depth_label;
+ GtkWidget *preferences_video_fullscreen_depth_optionmenu;
+ GtkWidget *preferences_video_fullscreen_depth_optionmenu_menu;
+ GtkObject *preferences_video_gamma_spinbutton_adj;
+ GtkWidget *preferences_video_gamma_spinbutton;
+ GtkWidget *preferences_video_gamma_label;
+ GtkWidget *preferences_video_fullscreen_checkbutton;
+ GtkWidget *preferences_video_grayscale_checkbutton;
+ GtkWidget *preferences_video;
+ GtkWidget *preferences_audio_table;
+ GtkWidget *preferences_audio_quality_optionmenu;
+ GtkWidget *preferences_audio_quality_optionmenu_menu;
+ GtkWidget *preferences_audio_frequency_optionmenu;
+ GtkWidget *preferences_audio_frequency_optionmenu_menu;
+ GtkWidget *preferences_audio_channels_optionmenu;
+ GtkWidget *preferences_audio_channels_optionmenu_menu;
+ GtkWidget *preferences_audio_output_label;
+ GtkWidget *preferences_audio_device_label;
+ GtkWidget *preferences_audio_quality_label;
+ GtkWidget *preferences_audio_frequency_label;
+ GtkWidget *preferences_audio_channel_label;
+ GtkWidget *preferences_audio_spdif_checkbutton;
+ GtkWidget *preferences_audio_output_combo;
+ GList *preferences_audio_output_combo_items = NULL;
+ GtkWidget *preferences_audio_output_entry;
+ GtkWidget *preferences_audio_device_combo;
+ GList *preferences_audio_device_combo_items = NULL;
+ GtkWidget *preferences_audio_device_entry;
+ GtkWidget *preferences_audio;
+ GtkWidget *preferences_playlist_table;
+ GtkWidget *preferences_playlist_startup_checkbutton;
+ GtkWidget *preferences_playlist_enqueue_checkbutton;
+ GtkWidget *preferences_playlist_loop_checkbutton;
+ GtkWidget *preferences_playlist;
+ GtkWidget *preferences_misc_table;
+ GtkWidget *preferences_misc_associated_frame;
+ GtkWidget *preferences_misc_associated_table;
+ GtkWidget *preferences_misc_associated_checkbutton;
+ GtkWidget *preferences_misc_mp2_checkbutton;
+ GtkWidget *preferences_misc_vob_checkbutton;
+ GtkWidget *preferences_misc_ts_checkbutton;
+ GtkWidget *preferences_misc_message_frame;
+ GtkWidget *preferences_misc_messages_table;
+ GtkWidget *preferences_misc_messages_label;
+ GtkObject *preferences_misc_messages_spinbutton_adj;
+ GtkWidget *preferences_misc_messages_spinbutton;
+ GtkWidget *preferences_misc;
+ GtkWidget *dialog_action_area4;
+ GtkWidget *preferences_ok_button;
+ GtkWidget *preferences_apply_button;
+ GtkWidget *preferences_cancel_button;
+
+ intf_preferences = gtk_dialog_new ();
+ gtk_object_set_data (GTK_OBJECT (intf_preferences), "intf_preferences", intf_preferences);
+ gtk_window_set_title (GTK_WINDOW (intf_preferences), _("Preferences"));
+ gtk_window_set_policy (GTK_WINDOW (intf_preferences), TRUE, TRUE, FALSE);
+
+ dialog_vbox5 = GTK_DIALOG (intf_preferences)->vbox;
+ gtk_object_set_data (GTK_OBJECT (intf_preferences), "dialog_vbox5", dialog_vbox5);
+ gtk_widget_show (dialog_vbox5);
+ gtk_container_set_border_width (GTK_CONTAINER (dialog_vbox5), 5);
+
+ preferences_notebook = gtk_notebook_new ();
+ gtk_widget_ref (preferences_notebook);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_notebook", preferences_notebook,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_notebook);
+ gtk_box_pack_start (GTK_BOX (dialog_vbox5), preferences_notebook, TRUE, TRUE, 0);
+
+ preferences_file_table = gtk_table_new (1, 3, FALSE);
+ gtk_widget_ref (preferences_file_table);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_file_table", preferences_file_table,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_file_table);
+ gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_file_table);
+ gtk_container_set_border_width (GTK_CONTAINER (preferences_file_table), 5);
+ gtk_table_set_row_spacings (GTK_TABLE (preferences_file_table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (preferences_file_table), 5);
+
+ preferences_file_path_label = gtk_label_new (_("Default path:"));
+ gtk_widget_ref (preferences_file_path_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_file_path_label", preferences_file_path_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_file_path_label);
+ gtk_table_attach (GTK_TABLE (preferences_file_table), preferences_file_path_label, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_file_path_label), 0, 0.5);
+
+ preferences_file_path_combo = gtk_combo_new ();
+ gtk_widget_ref (preferences_file_path_combo);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_file_path_combo", preferences_file_path_combo,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_file_path_combo);
+ gtk_table_attach (GTK_TABLE (preferences_file_table), preferences_file_path_combo, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_file_path_entry = GTK_COMBO (preferences_file_path_combo)->entry;
+ gtk_widget_ref (preferences_file_path_entry);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_file_path_entry", preferences_file_path_entry,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_file_path_entry);
+
+ preferences_file_path_button = gtk_button_new_with_label (_("Browse"));
+ gtk_widget_ref (preferences_file_path_button);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_file_path_button", preferences_file_path_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_file_path_button);
+ gtk_table_attach (GTK_TABLE (preferences_file_table), preferences_file_path_button, 2, 3, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_file = gtk_label_new (_("File"));
+ gtk_widget_ref (preferences_file);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_file", preferences_file,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_file);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 0), preferences_file);
+
+ preferences_disc_table = gtk_table_new (2, 3, FALSE);
+ gtk_widget_ref (preferences_disc_table);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_table", preferences_disc_table,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_disc_table);
+ gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_disc_table);
+ gtk_container_set_border_width (GTK_CONTAINER (preferences_disc_table), 5);
+ gtk_table_set_row_spacings (GTK_TABLE (preferences_disc_table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (preferences_disc_table), 5);
+
+ preferences_disc_vcd_label = gtk_label_new (_("Default VCD path"));
+ gtk_widget_ref (preferences_disc_vcd_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_vcd_label", preferences_disc_vcd_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_disc_vcd_label);
+ gtk_table_attach (GTK_TABLE (preferences_disc_table), preferences_disc_vcd_label, 0, 1, 1, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_disc_vcd_label), 0, 0.5);
+
+ preference_disc_dvd_label = gtk_label_new (_("Default DVD path:"));
+ gtk_widget_ref (preference_disc_dvd_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preference_disc_dvd_label", preference_disc_dvd_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preference_disc_dvd_label);
+ gtk_table_attach (GTK_TABLE (preferences_disc_table), preference_disc_dvd_label, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preference_disc_dvd_label), 0, 0.5);
+
+ preferences_disc_dvd_combo = gtk_combo_new ();
+ gtk_widget_ref (preferences_disc_dvd_combo);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_dvd_combo", preferences_disc_dvd_combo,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_disc_dvd_combo);
+ gtk_table_attach (GTK_TABLE (preferences_disc_table), preferences_disc_dvd_combo, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ preferences_disc_dvd_combo_items = g_list_append (preferences_disc_dvd_combo_items, (gpointer) _("/dev/dvd"));
+ gtk_combo_set_popdown_strings (GTK_COMBO (preferences_disc_dvd_combo), preferences_disc_dvd_combo_items);
+ g_list_free (preferences_disc_dvd_combo_items);
+
+ preferences_disc_dvd_entry = GTK_COMBO (preferences_disc_dvd_combo)->entry;
+ gtk_widget_ref (preferences_disc_dvd_entry);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_dvd_entry", preferences_disc_dvd_entry,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_disc_dvd_entry);
+ gtk_entry_set_text (GTK_ENTRY (preferences_disc_dvd_entry), _("/dev/dvd"));
+
+ preferences_disc_vcd_combo = gtk_combo_new ();
+ gtk_widget_ref (preferences_disc_vcd_combo);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_vcd_combo", preferences_disc_vcd_combo,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_disc_vcd_combo);
+ gtk_table_attach (GTK_TABLE (preferences_disc_table), preferences_disc_vcd_combo, 1, 2, 1, 2,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ preferences_disc_vcd_combo_items = g_list_append (preferences_disc_vcd_combo_items, (gpointer) _("/dev/cdrom"));
+ gtk_combo_set_popdown_strings (GTK_COMBO (preferences_disc_vcd_combo), preferences_disc_vcd_combo_items);
+ g_list_free (preferences_disc_vcd_combo_items);
+
+ preferences_disc_vcd_entry = GTK_COMBO (preferences_disc_vcd_combo)->entry;
+ gtk_widget_ref (preferences_disc_vcd_entry);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_vcd_entry", preferences_disc_vcd_entry,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_disc_vcd_entry);
+ gtk_entry_set_text (GTK_ENTRY (preferences_disc_vcd_entry), _("/dev/cdrom"));
+
+ preferences_disc_dvd_browse_button = gtk_button_new_with_label (_("Browse"));
+ gtk_widget_ref (preferences_disc_dvd_browse_button);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_dvd_browse_button", preferences_disc_dvd_browse_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_disc_dvd_browse_button);
+ gtk_table_attach (GTK_TABLE (preferences_disc_table), preferences_disc_dvd_browse_button, 2, 3, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_disc_vcd_browse_button = gtk_button_new_with_label (_("Browse"));
+ gtk_widget_ref (preferences_disc_vcd_browse_button);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_vcd_browse_button", preferences_disc_vcd_browse_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_disc_vcd_browse_button);
+ gtk_table_attach (GTK_TABLE (preferences_disc_table), preferences_disc_vcd_browse_button, 2, 3, 1, 2,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_disc = gtk_label_new (_("Disc"));
+ gtk_widget_ref (preferences_disc);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc", preferences_disc,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_disc);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 1), preferences_disc);
+
+ preferences_network_table = gtk_table_new (7, 2, FALSE);
+ gtk_widget_ref (preferences_network_table);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_table", preferences_network_table,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_network_table);
+ gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_network_table);
+ gtk_container_set_border_width (GTK_CONTAINER (preferences_network_table), 5);
+ gtk_table_set_row_spacings (GTK_TABLE (preferences_network_table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (preferences_network_table), 5);
+
+ preferences_network_server_combo = gtk_combo_new ();
+ gtk_widget_ref (preferences_network_server_combo);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_server_combo", preferences_network_server_combo,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_network_server_combo);
+ gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_server_combo, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_network_server_entry = GTK_COMBO (preferences_network_server_combo)->entry;
+ gtk_widget_ref (preferences_network_server_entry);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_server_entry", preferences_network_server_entry,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_network_server_entry);
+ gtk_entry_set_text (GTK_ENTRY (preferences_network_server_entry), _("vls "));
+
+ preferences_network_broadcast_combo = gtk_combo_new ();
+ gtk_widget_ref (preferences_network_broadcast_combo);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_broadcast_combo", preferences_network_broadcast_combo,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_network_broadcast_combo);
+ gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_broadcast_combo, 1, 2, 2, 3,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_network_broadcast_entry = GTK_COMBO (preferences_network_broadcast_combo)->entry;
+ gtk_widget_ref (preferences_network_broadcast_entry);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_broadcast_entry", preferences_network_broadcast_entry,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_network_broadcast_entry);
+
+ preferences_network_server_label = gtk_label_new (_("Default server:"));
+ gtk_widget_ref (preferences_network_server_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_server_label", preferences_network_server_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_network_server_label);
+ gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_server_label, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_network_server_label), 0, 0.5);
+
+ preferences_network_port_label = gtk_label_new (_("Default port:"));
+ gtk_widget_ref (preferences_network_port_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_port_label", preferences_network_port_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_network_port_label);
+ gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_port_label, 0, 1, 1, 2,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_network_port_label), 0, 0.5);
+
+ preferences_network_port_spinbutton_adj = gtk_adjustment_new (1234, 0, 65535, 1, 10, 10);
+ preferences_network_port_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (preferences_network_port_spinbutton_adj), 1, 0);
+ gtk_widget_ref (preferences_network_port_spinbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_port_spinbutton", preferences_network_port_spinbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_network_port_spinbutton);
+ gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_port_spinbutton, 1, 2, 1, 2,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_network_broadcast_label = gtk_label_new (_("Broadcast address:"));
+ gtk_widget_ref (preferences_network_broadcast_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_broadcast_label", preferences_network_broadcast_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_network_broadcast_label);
+ gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_broadcast_label, 0, 1, 2, 3,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_network_broadcast_label), 0, 0.5);
+
+ preferences_network_broadcast_checkbutton = gtk_check_button_new_with_label (_("Broadcast mode"));
+ gtk_widget_ref (preferences_network_broadcast_checkbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_broadcast_checkbutton", preferences_network_broadcast_checkbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_network_broadcast_checkbutton);
+ gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_broadcast_checkbutton, 0, 1, 3, 4,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_network_protocol_label = gtk_label_new (_("Default protocol:"));
+ gtk_widget_ref (preferences_network_protocol_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_protocol_label", preferences_network_protocol_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_network_protocol_label);
+ gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_protocol_label, 0, 1, 4, 7,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_network_protocol_label), 0, 0.5);
+
+ preferences_network_ts_radiobutton = gtk_radio_button_new_with_label (preferences_network_protocol_group_group, _("TS"));
+ preferences_network_protocol_group_group = gtk_radio_button_group (GTK_RADIO_BUTTON (preferences_network_ts_radiobutton));
+ gtk_widget_ref (preferences_network_ts_radiobutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_ts_radiobutton", preferences_network_ts_radiobutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_network_ts_radiobutton);
+ gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_ts_radiobutton, 1, 2, 4, 5,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_network_rtp_radiobutton = gtk_radio_button_new_with_label (preferences_network_protocol_group_group, _("RTP"));
+ preferences_network_protocol_group_group = gtk_radio_button_group (GTK_RADIO_BUTTON (preferences_network_rtp_radiobutton));
+ gtk_widget_ref (preferences_network_rtp_radiobutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_rtp_radiobutton", preferences_network_rtp_radiobutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_network_rtp_radiobutton);
+ gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_rtp_radiobutton, 1, 2, 5, 6,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_network_http_radiobutton = gtk_radio_button_new_with_label (preferences_network_protocol_group_group, _("HTTP"));
+ preferences_network_protocol_group_group = gtk_radio_button_group (GTK_RADIO_BUTTON (preferences_network_http_radiobutton));
+ gtk_widget_ref (preferences_network_http_radiobutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_http_radiobutton", preferences_network_http_radiobutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_network_http_radiobutton);
+ gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_http_radiobutton, 1, 2, 6, 7,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_network = gtk_label_new (_("Network"));
+ gtk_widget_ref (preferences_network);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network", preferences_network,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_network);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 2), preferences_network);
+
+ preferences_interface_table = gtk_table_new (1, 2, FALSE);
+ gtk_widget_ref (preferences_interface_table);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_interface_table", preferences_interface_table,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_interface_table);
+ gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_interface_table);
+ gtk_container_set_border_width (GTK_CONTAINER (preferences_interface_table), 5);
+ gtk_table_set_row_spacings (GTK_TABLE (preferences_interface_table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (preferences_interface_table), 5);
+
+ preferences_interface_combo = gtk_combo_new ();
+ gtk_widget_ref (preferences_interface_combo);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_interface_combo", preferences_interface_combo,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_interface_combo);
+ gtk_table_attach (GTK_TABLE (preferences_interface_table), preferences_interface_combo, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ preferences_interface_combo_items = g_list_append (preferences_interface_combo_items, (gpointer) _("Gtk+"));
+ preferences_interface_combo_items = g_list_append (preferences_interface_combo_items, (gpointer) _("Gnome"));
+ gtk_combo_set_popdown_strings (GTK_COMBO (preferences_interface_combo), preferences_interface_combo_items);
+ g_list_free (preferences_interface_combo_items);
+
+ preferences_interface_entry = GTK_COMBO (preferences_interface_combo)->entry;
+ gtk_widget_ref (preferences_interface_entry);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_interface_entry", preferences_interface_entry,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_interface_entry);
+ gtk_entry_set_text (GTK_ENTRY (preferences_interface_entry), _("Gtk+"));
+
+ preferences_interface_label = gtk_label_new (_("Default interface:"));
+ gtk_widget_ref (preferences_interface_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_interface_label", preferences_interface_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_interface_label);
+ gtk_table_attach (GTK_TABLE (preferences_interface_table), preferences_interface_label, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_interface_label), 0, 0.5);
+
+ preferences_interface = gtk_label_new (_("Interface"));
+ gtk_widget_ref (preferences_interface);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_interface", preferences_interface,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_interface);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 3), preferences_interface);
+
+ preferences_video_table = gtk_table_new (7, 2, FALSE);
+ gtk_widget_ref (preferences_video_table);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_table", preferences_video_table,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_video_table);
+ gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_video_table);
+ gtk_container_set_border_width (GTK_CONTAINER (preferences_video_table), 5);
+ gtk_table_set_row_spacings (GTK_TABLE (preferences_video_table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (preferences_video_table), 5);
+
+ preferences_video_output_combo = gtk_combo_new ();
+ gtk_widget_ref (preferences_video_output_combo);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_output_combo", preferences_video_output_combo,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_video_output_combo);
+ gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_output_combo, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ preferences_video_output_combo_items = g_list_append (preferences_video_output_combo_items, (gpointer) _("sdl"));
+ preferences_video_output_combo_items = g_list_append (preferences_video_output_combo_items, (gpointer) _("xvideo"));
+ preferences_video_output_combo_items = g_list_append (preferences_video_output_combo_items, (gpointer) _("x11"));
+ gtk_combo_set_popdown_strings (GTK_COMBO (preferences_video_output_combo), preferences_video_output_combo_items);
+ g_list_free (preferences_video_output_combo_items);
+
+ preferences_video_output_entry = GTK_COMBO (preferences_video_output_combo)->entry;
+ gtk_widget_ref (preferences_video_output_entry);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_output_entry", preferences_video_output_entry,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_video_output_entry);
+ gtk_entry_set_text (GTK_ENTRY (preferences_video_output_entry), _("sdl"));
+
+ preferences_video_output_label = gtk_label_new (_("Default output:"));
+ gtk_widget_ref (preferences_video_output_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_output_label", preferences_video_output_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_video_output_label);
+ gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_output_label, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_video_output_label), 0, 0.5);
+
+ preferences_video_width_label = gtk_label_new (_("Default width:"));
+ gtk_widget_ref (preferences_video_width_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_width_label", preferences_video_width_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_video_width_label);
+ gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_width_label, 0, 1, 1, 2,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_video_width_label), 0, 0.5);
+
+ preferences_video_height_spinbutton_adj = gtk_adjustment_new (576, 0, 1200, 1, 10, 10);
+ preferences_video_height_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (preferences_video_height_spinbutton_adj), 1, 0);
+ gtk_widget_ref (preferences_video_height_spinbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_height_spinbutton", preferences_video_height_spinbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_video_height_spinbutton);
+ gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_height_spinbutton, 1, 2, 2, 3,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_video_width_spinbutton_adj = gtk_adjustment_new (720, 100, 1600, 1, 10, 10);
+ preferences_video_width_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (preferences_video_width_spinbutton_adj), 1, 0);
+ gtk_widget_ref (preferences_video_width_spinbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_width_spinbutton", preferences_video_width_spinbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_video_width_spinbutton);
+ gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_width_spinbutton, 1, 2, 1, 2,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_video_height_label = gtk_label_new (_("Default height:"));
+ gtk_widget_ref (preferences_video_height_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_height_label", preferences_video_height_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_video_height_label);
+ gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_height_label, 0, 1, 2, 3,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_video_height_label), 0, 0.5);
+
+ preferences_depth_optionmenu = gtk_option_menu_new ();
+ gtk_widget_ref (preferences_depth_optionmenu);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_depth_optionmenu", preferences_depth_optionmenu,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_depth_optionmenu);
+ gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_depth_optionmenu, 1, 2, 3, 4,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ preferences_depth_optionmenu_menu = gtk_menu_new ();
+ glade_menuitem = gtk_menu_item_new_with_label (_("15 bits"));
+ gtk_widget_show (glade_menuitem);
+ gtk_menu_append (GTK_MENU (preferences_depth_optionmenu_menu), glade_menuitem);
+ glade_menuitem = gtk_menu_item_new_with_label (_("16 bits"));
+ gtk_widget_show (glade_menuitem);
+ gtk_menu_append (GTK_MENU (preferences_depth_optionmenu_menu), glade_menuitem);
+ glade_menuitem = gtk_menu_item_new_with_label (_("32 bits"));
+ gtk_widget_show (glade_menuitem);
+ gtk_menu_append (GTK_MENU (preferences_depth_optionmenu_menu), glade_menuitem);
+ gtk_option_menu_set_menu (GTK_OPTION_MENU (preferences_depth_optionmenu), preferences_depth_optionmenu_menu);
+ gtk_option_menu_set_history (GTK_OPTION_MENU (preferences_depth_optionmenu), 1);
+
+ preferences_video_depth_label = gtk_label_new (_("Default depth:"));
+ gtk_widget_ref (preferences_video_depth_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_depth_label", preferences_video_depth_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_video_depth_label);
+ gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_depth_label, 0, 1, 3, 4,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_video_depth_label), 0, 0.5);
+
+ preferences_video_fullscreen_depth_label = gtk_label_new (_("Fullscreen depth:"));
+ gtk_widget_ref (preferences_video_fullscreen_depth_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_fullscreen_depth_label", preferences_video_fullscreen_depth_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_video_fullscreen_depth_label);
+ gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_fullscreen_depth_label, 0, 1, 4, 5,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_video_fullscreen_depth_label), 0, 0.5);
+
+ preferences_video_fullscreen_depth_optionmenu = gtk_option_menu_new ();
+ gtk_widget_ref (preferences_video_fullscreen_depth_optionmenu);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_fullscreen_depth_optionmenu", preferences_video_fullscreen_depth_optionmenu,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_video_fullscreen_depth_optionmenu);
+ gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_fullscreen_depth_optionmenu, 1, 2, 4, 5,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ preferences_video_fullscreen_depth_optionmenu_menu = gtk_menu_new ();
+ glade_menuitem = gtk_menu_item_new_with_label (_("15 bits"));
+ gtk_widget_show (glade_menuitem);
+ gtk_menu_append (GTK_MENU (preferences_video_fullscreen_depth_optionmenu_menu), glade_menuitem);
+ glade_menuitem = gtk_menu_item_new_with_label (_("16 bits"));
+ gtk_widget_show (glade_menuitem);
+ gtk_menu_append (GTK_MENU (preferences_video_fullscreen_depth_optionmenu_menu), glade_menuitem);
+ glade_menuitem = gtk_menu_item_new_with_label (_("32 bits"));
+ gtk_widget_show (glade_menuitem);
+ gtk_menu_append (GTK_MENU (preferences_video_fullscreen_depth_optionmenu_menu), glade_menuitem);
+ gtk_option_menu_set_menu (GTK_OPTION_MENU (preferences_video_fullscreen_depth_optionmenu), preferences_video_fullscreen_depth_optionmenu_menu);
+ gtk_option_menu_set_history (GTK_OPTION_MENU (preferences_video_fullscreen_depth_optionmenu), 2);
+
+ preferences_video_gamma_spinbutton_adj = gtk_adjustment_new (0, 0, 10, 0.1, 1, 1);
+ preferences_video_gamma_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (preferences_video_gamma_spinbutton_adj), 1, 1);
+ gtk_widget_ref (preferences_video_gamma_spinbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_gamma_spinbutton", preferences_video_gamma_spinbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_video_gamma_spinbutton);
+ gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_gamma_spinbutton, 1, 2, 5, 6,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_video_gamma_label = gtk_label_new (_("Gamma:"));
+ gtk_widget_ref (preferences_video_gamma_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_gamma_label", preferences_video_gamma_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_video_gamma_label);
+ gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_gamma_label, 0, 1, 5, 6,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_video_gamma_label), 0, 0.5);
+
+ preferences_video_fullscreen_checkbutton = gtk_check_button_new_with_label (_("Fullscreen on play"));
+ gtk_widget_ref (preferences_video_fullscreen_checkbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_fullscreen_checkbutton", preferences_video_fullscreen_checkbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_video_fullscreen_checkbutton);
+ gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_fullscreen_checkbutton, 0, 1, 6, 7,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_video_grayscale_checkbutton = gtk_check_button_new_with_label (_("Grayscale"));
+ gtk_widget_ref (preferences_video_grayscale_checkbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_grayscale_checkbutton", preferences_video_grayscale_checkbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_video_grayscale_checkbutton);
+ gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_grayscale_checkbutton, 1, 2, 6, 7,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_video = gtk_label_new (_("Video"));
+ gtk_widget_ref (preferences_video);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video", preferences_video,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_video);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 4), preferences_video);
+
+ preferences_audio_table = gtk_table_new (6, 2, FALSE);
+ gtk_widget_ref (preferences_audio_table);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_table", preferences_audio_table,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_audio_table);
+ gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_audio_table);
+ gtk_container_set_border_width (GTK_CONTAINER (preferences_audio_table), 5);
+ gtk_table_set_row_spacings (GTK_TABLE (preferences_audio_table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (preferences_audio_table), 5);
+
+ preferences_audio_quality_optionmenu = gtk_option_menu_new ();
+ gtk_widget_ref (preferences_audio_quality_optionmenu);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_quality_optionmenu", preferences_audio_quality_optionmenu,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_audio_quality_optionmenu);
+ gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_quality_optionmenu, 1, 2, 2, 3,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ preferences_audio_quality_optionmenu_menu = gtk_menu_new ();
+ glade_menuitem = gtk_menu_item_new_with_label (_("8 bits"));
+ gtk_widget_show (glade_menuitem);
+ gtk_menu_append (GTK_MENU (preferences_audio_quality_optionmenu_menu), glade_menuitem);
+ glade_menuitem = gtk_menu_item_new_with_label (_("16 bits"));
+ gtk_widget_show (glade_menuitem);
+ gtk_menu_append (GTK_MENU (preferences_audio_quality_optionmenu_menu), glade_menuitem);
+ gtk_option_menu_set_menu (GTK_OPTION_MENU (preferences_audio_quality_optionmenu), preferences_audio_quality_optionmenu_menu);
+ gtk_option_menu_set_history (GTK_OPTION_MENU (preferences_audio_quality_optionmenu), 1);
+
+ preferences_audio_frequency_optionmenu = gtk_option_menu_new ();
+ gtk_widget_ref (preferences_audio_frequency_optionmenu);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_frequency_optionmenu", preferences_audio_frequency_optionmenu,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_audio_frequency_optionmenu);
+ gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_frequency_optionmenu, 1, 2, 3, 4,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ preferences_audio_frequency_optionmenu_menu = gtk_menu_new ();
+ glade_menuitem = gtk_menu_item_new_with_label (_("48000 Hz"));
+ gtk_widget_show (glade_menuitem);
+ gtk_menu_append (GTK_MENU (preferences_audio_frequency_optionmenu_menu), glade_menuitem);
+ glade_menuitem = gtk_menu_item_new_with_label (_("44100 Hz"));
+ gtk_widget_show (glade_menuitem);
+ gtk_menu_append (GTK_MENU (preferences_audio_frequency_optionmenu_menu), glade_menuitem);
+ gtk_option_menu_set_menu (GTK_OPTION_MENU (preferences_audio_frequency_optionmenu), preferences_audio_frequency_optionmenu_menu);
+
+ preferences_audio_channels_optionmenu = gtk_option_menu_new ();
+ gtk_widget_ref (preferences_audio_channels_optionmenu);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_channels_optionmenu", preferences_audio_channels_optionmenu,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_audio_channels_optionmenu);
+ gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_channels_optionmenu, 1, 2, 4, 5,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ preferences_audio_channels_optionmenu_menu = gtk_menu_new ();
+ glade_menuitem = gtk_menu_item_new_with_label (_("Mono"));
+ gtk_widget_show (glade_menuitem);
+ gtk_menu_append (GTK_MENU (preferences_audio_channels_optionmenu_menu), glade_menuitem);
+ glade_menuitem = gtk_menu_item_new_with_label (_("Stereo"));
+ gtk_widget_show (glade_menuitem);
+ gtk_menu_append (GTK_MENU (preferences_audio_channels_optionmenu_menu), glade_menuitem);
+ gtk_option_menu_set_menu (GTK_OPTION_MENU (preferences_audio_channels_optionmenu), preferences_audio_channels_optionmenu_menu);
+ gtk_option_menu_set_history (GTK_OPTION_MENU (preferences_audio_channels_optionmenu), 1);
+
+ preferences_audio_output_label = gtk_label_new (_("Default output:"));
+ gtk_widget_ref (preferences_audio_output_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_output_label", preferences_audio_output_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_audio_output_label);
+ gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_output_label, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_audio_output_label), 0, 0.5);
+
+ preferences_audio_device_label = gtk_label_new (_("Default device:"));
+ gtk_widget_ref (preferences_audio_device_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_device_label", preferences_audio_device_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_audio_device_label);
+ gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_device_label, 0, 1, 1, 2,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_audio_device_label), 0, 0.5);
+
+ preferences_audio_quality_label = gtk_label_new (_("Quality:"));
+ gtk_widget_ref (preferences_audio_quality_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_quality_label", preferences_audio_quality_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_audio_quality_label);
+ gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_quality_label, 0, 1, 2, 3,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_audio_quality_label), 0, 0.5);
+
+ preferences_audio_frequency_label = gtk_label_new (_("Frequency:"));
+ gtk_widget_ref (preferences_audio_frequency_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_frequency_label", preferences_audio_frequency_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_audio_frequency_label);
+ gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_frequency_label, 0, 1, 3, 4,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_audio_frequency_label), 0, 0.5);
+
+ preferences_audio_channel_label = gtk_label_new (_("Channels:"));
+ gtk_widget_ref (preferences_audio_channel_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_channel_label", preferences_audio_channel_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_audio_channel_label);
+ gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_channel_label, 0, 1, 4, 5,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_audio_channel_label), 0, 0.5);
+
+ preferences_audio_spdif_checkbutton = gtk_check_button_new_with_label (_("Spdif output"));
+ gtk_widget_ref (preferences_audio_spdif_checkbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_spdif_checkbutton", preferences_audio_spdif_checkbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_audio_spdif_checkbutton);
+ gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_spdif_checkbutton, 0, 2, 5, 6,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_audio_output_combo = gtk_combo_new ();
+ gtk_widget_ref (preferences_audio_output_combo);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_output_combo", preferences_audio_output_combo,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_audio_output_combo);
+ gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_output_combo, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ preferences_audio_output_combo_items = g_list_append (preferences_audio_output_combo_items, (gpointer) _("dsp"));
+ preferences_audio_output_combo_items = g_list_append (preferences_audio_output_combo_items, (gpointer) _("alsa"));
+ gtk_combo_set_popdown_strings (GTK_COMBO (preferences_audio_output_combo), preferences_audio_output_combo_items);
+ g_list_free (preferences_audio_output_combo_items);
+
+ preferences_audio_output_entry = GTK_COMBO (preferences_audio_output_combo)->entry;
+ gtk_widget_ref (preferences_audio_output_entry);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_output_entry", preferences_audio_output_entry,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_audio_output_entry);
+ gtk_entry_set_text (GTK_ENTRY (preferences_audio_output_entry), _("dsp"));
+
+ preferences_audio_device_combo = gtk_combo_new ();
+ gtk_widget_ref (preferences_audio_device_combo);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_device_combo", preferences_audio_device_combo,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_audio_device_combo);
+ gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_device_combo, 1, 2, 1, 2,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+ preferences_audio_device_combo_items = g_list_append (preferences_audio_device_combo_items, (gpointer) _("/dev/dsp"));
+ gtk_combo_set_popdown_strings (GTK_COMBO (preferences_audio_device_combo), preferences_audio_device_combo_items);
+ g_list_free (preferences_audio_device_combo_items);
+
+ preferences_audio_device_entry = GTK_COMBO (preferences_audio_device_combo)->entry;
+ gtk_widget_ref (preferences_audio_device_entry);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_device_entry", preferences_audio_device_entry,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_audio_device_entry);
+ gtk_entry_set_text (GTK_ENTRY (preferences_audio_device_entry), _("/dev/dsp"));
+
+ preferences_audio = gtk_label_new (_("Audio"));
+ gtk_widget_ref (preferences_audio);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio", preferences_audio,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_audio);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 5), preferences_audio);
+
+ preferences_playlist_table = gtk_table_new (3, 1, FALSE);
+ gtk_widget_ref (preferences_playlist_table);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_playlist_table", preferences_playlist_table,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_playlist_table);
+ gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_playlist_table);
+ gtk_container_set_border_width (GTK_CONTAINER (preferences_playlist_table), 5);
+ gtk_table_set_row_spacings (GTK_TABLE (preferences_playlist_table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (preferences_playlist_table), 5);
+
+ preferences_playlist_startup_checkbutton = gtk_check_button_new_with_label (_("Launch on startup"));
+ gtk_widget_ref (preferences_playlist_startup_checkbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_playlist_startup_checkbutton", preferences_playlist_startup_checkbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_playlist_startup_checkbutton);
+ gtk_table_attach (GTK_TABLE (preferences_playlist_table), preferences_playlist_startup_checkbutton, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_playlist_enqueue_checkbutton = gtk_check_button_new_with_label (_("Enqueue as default"));
+ gtk_widget_ref (preferences_playlist_enqueue_checkbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_playlist_enqueue_checkbutton", preferences_playlist_enqueue_checkbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_playlist_enqueue_checkbutton);
+ gtk_table_attach (GTK_TABLE (preferences_playlist_table), preferences_playlist_enqueue_checkbutton, 0, 1, 1, 2,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_playlist_loop_checkbutton = gtk_check_button_new_with_label (_("Loop on playlist end"));
+ gtk_widget_ref (preferences_playlist_loop_checkbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_playlist_loop_checkbutton", preferences_playlist_loop_checkbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_playlist_loop_checkbutton);
+ gtk_table_attach (GTK_TABLE (preferences_playlist_table), preferences_playlist_loop_checkbutton, 0, 1, 2, 3,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_EXPAND), 0, 0);
+
+ preferences_playlist = gtk_label_new (_("Playlist"));
+ gtk_widget_ref (preferences_playlist);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_playlist", preferences_playlist,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_playlist);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 6), preferences_playlist);
+
+ preferences_misc_table = gtk_table_new (1, 2, FALSE);
+ gtk_widget_ref (preferences_misc_table);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_table", preferences_misc_table,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_misc_table);
+ gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_misc_table);
+ gtk_container_set_border_width (GTK_CONTAINER (preferences_misc_table), 5);
+ gtk_table_set_row_spacings (GTK_TABLE (preferences_misc_table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (preferences_misc_table), 5);
+
+ preferences_misc_associated_frame = gtk_frame_new (_("Types associated with vlc"));
+ gtk_widget_ref (preferences_misc_associated_frame);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_associated_frame", preferences_misc_associated_frame,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_misc_associated_frame);
+ gtk_table_attach (GTK_TABLE (preferences_misc_table), preferences_misc_associated_frame, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_FILL), 0, 0);
+
+ preferences_misc_associated_table = gtk_table_new (4, 1, FALSE);
+ gtk_widget_ref (preferences_misc_associated_table);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_associated_table", preferences_misc_associated_table,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_misc_associated_table);
+ gtk_container_add (GTK_CONTAINER (preferences_misc_associated_frame), preferences_misc_associated_table);
+
+ preferences_misc_associated_checkbutton = gtk_check_button_new_with_label (_("mpeg"));
+ gtk_widget_ref (preferences_misc_associated_checkbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_associated_checkbutton", preferences_misc_associated_checkbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_misc_associated_checkbutton);
+ gtk_table_attach (GTK_TABLE (preferences_misc_associated_table), preferences_misc_associated_checkbutton, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+
+ preferences_misc_mp2_checkbutton = gtk_check_button_new_with_label (_("mp2"));
+ gtk_widget_ref (preferences_misc_mp2_checkbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_mp2_checkbutton", preferences_misc_mp2_checkbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_misc_mp2_checkbutton);
+ gtk_table_attach (GTK_TABLE (preferences_misc_associated_table), preferences_misc_mp2_checkbutton, 0, 1, 1, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+
+ preferences_misc_vob_checkbutton = gtk_check_button_new_with_label (_("vob"));
+ gtk_widget_ref (preferences_misc_vob_checkbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_vob_checkbutton", preferences_misc_vob_checkbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_misc_vob_checkbutton);
+ gtk_table_attach (GTK_TABLE (preferences_misc_associated_table), preferences_misc_vob_checkbutton, 0, 1, 2, 3,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+
+ preferences_misc_ts_checkbutton = gtk_check_button_new_with_label (_("ts"));
+ gtk_widget_ref (preferences_misc_ts_checkbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_ts_checkbutton", preferences_misc_ts_checkbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_misc_ts_checkbutton);
+ gtk_table_attach (GTK_TABLE (preferences_misc_associated_table), preferences_misc_ts_checkbutton, 0, 1, 3, 4,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+
+ preferences_misc_message_frame = gtk_frame_new (_("Messages"));
+ gtk_widget_ref (preferences_misc_message_frame);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_message_frame", preferences_misc_message_frame,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_misc_message_frame);
+ gtk_table_attach (GTK_TABLE (preferences_misc_table), preferences_misc_message_frame, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (GTK_FILL), 0, 0);
+
+ preferences_misc_messages_table = gtk_table_new (1, 2, FALSE);
+ gtk_widget_ref (preferences_misc_messages_table);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_messages_table", preferences_misc_messages_table,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_misc_messages_table);
+ gtk_container_add (GTK_CONTAINER (preferences_misc_message_frame), preferences_misc_messages_table);
+
+ preferences_misc_messages_label = gtk_label_new (_("Warning level: "));
+ gtk_widget_ref (preferences_misc_messages_label);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_messages_label", preferences_misc_messages_label,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_misc_messages_label);
+ gtk_table_attach (GTK_TABLE (preferences_misc_messages_table), preferences_misc_messages_label, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (preferences_misc_messages_label), 0, 0.5);
+
+ preferences_misc_messages_spinbutton_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 10);
+ preferences_misc_messages_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (preferences_misc_messages_spinbutton_adj), 1, 0);
+ gtk_widget_ref (preferences_misc_messages_spinbutton);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_messages_spinbutton", preferences_misc_messages_spinbutton,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_misc_messages_spinbutton);
+ gtk_table_attach (GTK_TABLE (preferences_misc_messages_table), preferences_misc_messages_spinbutton, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND),
+ (GtkAttachOptions) (0), 0, 0);
+
+ preferences_misc = gtk_label_new (_("Misc"));
+ gtk_widget_ref (preferences_misc);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc", preferences_misc,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_misc);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 7), preferences_misc);
+
+ dialog_action_area4 = GTK_DIALOG (intf_preferences)->action_area;
+ gtk_object_set_data (GTK_OBJECT (intf_preferences), "dialog_action_area4", dialog_action_area4);
+ gtk_widget_show (dialog_action_area4);
+ gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area4), 10);
+
+ preferences_ok_button = gtk_button_new_with_label (_("Ok"));
+ gtk_widget_ref (preferences_ok_button);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_ok_button", preferences_ok_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_ok_button);
+ gtk_box_pack_start (GTK_BOX (dialog_action_area4), preferences_ok_button, TRUE, TRUE, 0);
+
+ preferences_apply_button = gtk_button_new_with_label (_("Apply"));
+ gtk_widget_ref (preferences_apply_button);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_apply_button", preferences_apply_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_apply_button);
+ gtk_box_pack_start (GTK_BOX (dialog_action_area4), preferences_apply_button, TRUE, TRUE, 0);
+
+ preferences_cancel_button = gtk_button_new_with_label (_("Cancel"));
+ gtk_widget_ref (preferences_cancel_button);
+ gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_cancel_button", preferences_cancel_button,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (preferences_cancel_button);
+ gtk_box_pack_start (GTK_BOX (dialog_action_area4), preferences_cancel_button, TRUE, TRUE, 0);
+
+ gtk_signal_connect (GTK_OBJECT (preferences_ok_button), "clicked",
+ GTK_SIGNAL_FUNC (GtkPreferencesOk),
+ "intf_preferences");
+ gtk_signal_connect (GTK_OBJECT (preferences_apply_button), "clicked",
+ GTK_SIGNAL_FUNC (GtkPreferencesApply),
+ "intf_preferences");
+ gtk_signal_connect (GTK_OBJECT (preferences_cancel_button), "clicked",
+ GTK_SIGNAL_FUNC (GtkPreferencesCancel),
+ "intf_preferences");
+
+ return intf_preferences;
+}
+
GtkWidget* create_intf_about (void);
GtkWidget* create_intf_fileopen (void);
GtkWidget* create_intf_disc (void);
-GtkWidget* create_intf_playlist (void);
GtkWidget* create_intf_network (void);
+GtkWidget* create_intf_jump (void);
+GtkWidget* create_intf_playlist (void);
+GtkWidget* create_intf_preferences (void);
--- /dev/null
+/*****************************************************************************
+ * gtk_menu.c : functions to handle menu items.
+ *****************************************************************************
+ * Copyright (C) 2000, 2001 VideoLAN
+ * $Id: gtk_menu.c,v 1.1 2001/05/15 01:01:44 stef 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * 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 "mtime.h"
+
+#include "stream_control.h"
+#include "input_ext-intf.h"
+
+#include "interface.h"
+#include "intf_playlist.h"
+#include "intf_msg.h"
+
+#include "video.h"
+#include "video_output.h"
+#include "audio_output.h"
+
+#include "gtk_callbacks.h"
+#include "gtk_interface.h"
+#include "gtk_support.h"
+#include "gtk_playlist.h"
+#include "intf_gtk.h"
+
+#include "main.h"
+
+/****************************************************************************
+ * Gtk*Toggle: callbacks to toggle the value of a checkmenuitem
+ ****************************************************************************
+ * We need separate functions for menubar and popup here since we can't use
+ * user_data to transmit intf_*
+ ****************************************************************************/
+
+#define GtkLangToggle( b_update ) \
+ es_descriptor_t * p_es; \
+ \
+ if( !b_update ) \
+ { \
+ p_es = (es_descriptor_t*)user_data; \
+ \
+ input_ToggleES( p_intf->p_input, p_es, menuitem->active ); \
+ \
+ b_update = menuitem->active; \
+ } \
+
+/*
+ * Audio
+ */
+
+void GtkMenubarAudioToggle( GtkCheckMenuItem * menuitem, gpointer user_data )
+{
+ intf_thread_t * p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
+
+ GtkLangToggle( p_intf->p_sys->b_audio_update );
+}
+
+void GtkPopupAudioToggle( GtkCheckMenuItem * menuitem, gpointer user_data )
+{
+ intf_thread_t * p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
+
+ GtkLangToggle( p_intf->p_sys->b_audio_update );
+}
+
+/*
+ * Subtitles
+ */
+
+
+void GtkMenubarSubtitleToggle( GtkCheckMenuItem * menuitem, gpointer user_data )
+{
+ intf_thread_t * p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
+
+ GtkLangToggle( p_intf->p_sys->b_spu_update );
+}
+void GtkPopupSubtitleToggle( GtkCheckMenuItem * menuitem, gpointer user_data )
+{
+ intf_thread_t * p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
+
+ GtkLangToggle( p_intf->p_sys->b_spu_update );
+}
+
+/*
+ * Navigation
+ */
+void GtkPopupNavigationToggle( GtkCheckMenuItem * menuitem,
+ gpointer user_data )
+{
+ intf_thread_t * p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
+
+ if( menuitem->active &&
+ !p_intf->p_sys->b_title_update &&
+ !p_intf->p_sys->b_chapter_update )
+ {
+ input_area_t *p_area = p_intf->p_input->stream.p_selected_area;
+
+ gint i_title = DATA2TITLE( user_data );
+ gint i_chapter = DATA2CHAPTER( user_data );
+
+ if( p_area != p_intf->p_input->stream.pp_areas[i_title] )
+ {
+ p_area = p_intf->p_input->stream.pp_areas[i_title];
+ p_intf->p_sys->b_title_update = 1;
+ }
+
+ p_area->i_part = i_chapter;
+ p_intf->p_sys->b_chapter_update = 1;
+
+ p_intf->p_input->pf_set_area( p_intf->p_input, (input_area_t*)p_area );
+
+ input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY );
+ }
+}
+
+/*
+ * Title
+ */
+
+#define GtkTitleToggle( intf ) \
+ intf_thread_t * p_intf = GetIntf( GTK_WIDGET(menuitem), (intf) ); \
+ \
+ if( menuitem->active && !p_intf->p_sys->b_title_update ) \
+ { \
+ gint i_title = (gint)user_data; \
+ p_intf->p_input->pf_set_area( p_intf->p_input, \
+ p_intf->p_input->stream.pp_areas[i_title] ); \
+ \
+ input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY ); \
+ \
+ p_intf->p_sys->b_title_update = 1; \
+ }
+
+void GtkMenubarTitleToggle( GtkCheckMenuItem * menuitem, gpointer user_data )
+{
+ GtkTitleToggle( "intf_window" );
+}
+
+void GtkPopupTitleToggle( GtkCheckMenuItem * menuitem, gpointer user_data )
+{
+ GtkTitleToggle( "intf_popup" );
+}
+
+/*
+ * Chapter
+ */
+
+#define GtkChapterToggle( intf ) \
+ intf_thread_t * p_intf; \
+ input_area_t * p_area; \
+ gint i_chapter; \
+ char psz_chapter[5]; \
+ \
+ p_intf = GetIntf( GTK_WIDGET(menuitem), (intf) ); \
+ p_area = p_intf->p_input->stream.p_selected_area; \
+ i_chapter = (gint)user_data; \
+ \
+ if( menuitem->active && !p_intf->p_sys->b_chapter_update ) \
+ { \
+ p_area->i_part = i_chapter; \
+ p_intf->p_input->pf_set_area( p_intf->p_input, \
+ (input_area_t*)p_area ); \
+ \
+ snprintf( psz_chapter, 3, "%02d", p_area->i_part ); \
+ gtk_label_set_text( p_intf->p_sys->p_label_chapter, psz_chapter ); \
+ \
+ input_SetStatus( p_intf->p_input, INPUT_STATUS_PLAY ); \
+ \
+ p_intf->p_sys->b_chapter_update = 1; \
+ }
+
+
+void GtkMenubarChapterToggle( GtkCheckMenuItem * menuitem, gpointer user_data )
+{
+ GtkChapterToggle( "intf_window" );
+}
+
+void GtkPopupChapterToggle( GtkCheckMenuItem * menuitem, gpointer user_data )
+{
+ GtkChapterToggle( "intf_popup" );
+}
+
+/*
+ * Angle
+ */
+
+#define GtkAngleToggle( intf ) \
+ intf_thread_t * p_intf; \
+ input_area_t * p_area; \
+ gint i_angle; \
+ \
+ p_intf = GetIntf( GTK_WIDGET(menuitem), (intf) ); \
+ p_area = p_intf->p_input->stream.p_selected_area; \
+ i_angle = (gint)user_data; \
+ \
+ if( menuitem->active && !p_intf->p_sys->b_angle_update ) \
+ { \
+ p_area->i_angle = i_angle; \
+ p_intf->p_input->pf_set_area( p_intf->p_input, \
+ (input_area_t*)p_area ); \
+ \
+ p_intf->p_sys->b_angle_update = 1; \
+ }
+
+void GtkMenubarAngleToggle( GtkCheckMenuItem * menuitem, gpointer user_data )
+{
+ GtkAngleToggle( "intf_window" )
+}
+
+void GtkPopupAngleToggle( GtkCheckMenuItem * menuitem, gpointer user_data )
+{
+ GtkAngleToggle( "intf_popup" )
+}
+
+/****************************************************************************
+ * Functions to generate menus
+ ****************************************************************************/
+
+/*****************************************************************************
+ * GtkRadioMenu: update interactive menus of the interface
+ *****************************************************************************
+ * Sets up menus with information from input
+ * Warning: since this function is designed to be called by management
+ * function, the interface lock has to be taken
+ *****************************************************************************/
+static gint GtkRadioMenu( intf_thread_t * p_intf,
+ GtkWidget * p_root, GSList * p_menu_group,
+ char * psz_item_name,
+ int i_nb, int i_selected,
+ void( *pf_toggle )( GtkCheckMenuItem *, gpointer ) )
+{
+ char psz_name[ GTK_MENU_LABEL_SIZE ];
+ GtkWidget * p_menu;
+ GtkWidget * p_submenu;
+ GtkWidget * p_item_group;
+ GtkWidget * p_item;
+ GtkWidget * p_item_selected;
+ GSList * p_group;
+ gint i_item;
+
+ /* temporary hack to avoid blank menu when an open menu is removed */
+ if( GTK_MENU_ITEM(p_root)->submenu != NULL )
+ {
+ gtk_menu_popdown( GTK_MENU( GTK_MENU_ITEM(p_root)->submenu ) );
+ }
+ /* removes previous menu */
+ gtk_menu_item_remove_submenu( GTK_MENU_ITEM( p_root ) );
+ gtk_widget_set_sensitive( p_root, FALSE );
+
+ p_item_group = NULL;
+ p_submenu = NULL;
+ p_item_selected = NULL;
+ p_group = p_menu_group;
+
+ p_menu = gtk_menu_new();
+
+ for( i_item = 0 ; i_item < i_nb ; i_item++ )
+ {
+ /* we group chapters in packets of ten for small screens */
+ if( ( i_item % 10 == 0 ) && ( i_nb > 20 ) )
+ {
+ if( i_item != 0 )
+ {
+ gtk_menu_item_set_submenu( GTK_MENU_ITEM( p_item_group ),
+ p_submenu );
+ gtk_menu_append( GTK_MENU( p_menu ), p_item_group );
+ }
+
+ snprintf( psz_name, GTK_MENU_LABEL_SIZE,
+ "%ss %d to %d", psz_item_name, i_item + 1, i_item + 10);
+ psz_name[ GTK_MENU_LABEL_SIZE - 1 ] = '\0';
+ p_item_group = gtk_menu_item_new_with_label( psz_name );
+ gtk_widget_show( p_item_group );
+ p_submenu = gtk_menu_new();
+ }
+
+ snprintf( psz_name, GTK_MENU_LABEL_SIZE, "%s %d",
+ psz_item_name, i_item + 1 );
+ psz_name[ GTK_MENU_LABEL_SIZE - 1 ] = '\0';
+
+ p_item = gtk_radio_menu_item_new_with_label( p_group, psz_name );
+ p_group = gtk_radio_menu_item_group( GTK_RADIO_MENU_ITEM( p_item ) );
+
+ if( i_selected == i_item + 1 )
+ {
+ p_item_selected = p_item;
+ }
+
+ gtk_widget_show( p_item );
+
+ /* setup signal hanling */
+ gtk_signal_connect( GTK_OBJECT( p_item ),
+ "toggled",
+ GTK_SIGNAL_FUNC( pf_toggle ),
+ (gpointer)(i_item + 1) );
+
+ if( i_nb > 20 )
+ {
+ gtk_menu_append( GTK_MENU( p_submenu ), p_item );
+ }
+ else
+ {
+ gtk_menu_append( GTK_MENU( p_menu ), p_item );
+ }
+ }
+
+ if( i_nb > 20 )
+ {
+ gtk_menu_item_set_submenu( GTK_MENU_ITEM( p_item_group ), p_submenu );
+ gtk_menu_append( GTK_MENU( p_menu ), p_item_group );
+ }
+
+ /* link the new menu to the title menu item */
+ gtk_menu_item_set_submenu( GTK_MENU_ITEM( p_root ), p_menu );
+
+ /* toggle currently selected chapter */
+ if( p_item_selected != NULL )
+ {
+ gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM( p_item_selected ),
+ TRUE );
+ }
+
+ /* be sure that menu is sensitive, if there are several items */
+ if( i_nb > 1 )
+ {
+ gtk_widget_set_sensitive( p_root, TRUE );
+ }
+
+ return TRUE;
+}
+
+/*****************************************************************************
+ * GtkLanguageMenus: update interactive menus of the interface
+ *****************************************************************************
+ * Sets up menus with information from input:
+ * -languages
+ * -sub-pictures
+ * Warning: since this function is designed to be called by management
+ * function, the interface lock has to be taken
+ *****************************************************************************/
+static gint GtkLanguageMenus( gpointer p_data,
+ GtkWidget * p_root,
+ es_descriptor_t * p_es,
+ gint i_cat,
+ void(*pf_toggle )( GtkCheckMenuItem *, gpointer ) )
+{
+ intf_thread_t * p_intf;
+ GtkWidget * p_menu;
+ GtkWidget * p_separator;
+ GtkWidget * p_item;
+ GtkWidget * p_item_active;
+ GSList * p_group;
+ char psz_name[ GTK_MENU_LABEL_SIZE ];
+ gint i_item;
+ gint i;
+
+
+
+ /* cast */
+ p_intf = (intf_thread_t *)p_data;
+
+ /* temporary hack to avoid blank menu when an open menu is removed */
+ if( GTK_MENU_ITEM(p_root)->submenu != NULL )
+ {
+ gtk_menu_popdown( GTK_MENU( GTK_MENU_ITEM(p_root)->submenu ) );
+ }
+ /* removes previous menu */
+ gtk_menu_item_remove_submenu( GTK_MENU_ITEM( p_root ) );
+ gtk_widget_set_sensitive( p_root, FALSE );
+
+ p_group = NULL;
+
+ /* menu container */
+ p_menu = gtk_menu_new();
+
+ /* special case for "off" item */
+ snprintf( psz_name, GTK_MENU_LABEL_SIZE, "None" );
+ psz_name[ GTK_MENU_LABEL_SIZE - 1 ] = '\0';
+
+ p_item = gtk_radio_menu_item_new_with_label( p_group, psz_name );
+ p_group = gtk_radio_menu_item_group( GTK_RADIO_MENU_ITEM( p_item ) );
+
+ gtk_widget_show( p_item );
+
+ /* signal hanling for off */
+ gtk_signal_connect( GTK_OBJECT( p_item ), "toggled",
+ GTK_SIGNAL_FUNC ( pf_toggle ), NULL );
+
+ gtk_menu_append( GTK_MENU( p_menu ), p_item );
+
+ p_separator = gtk_menu_item_new();
+ gtk_widget_set_sensitive( p_separator, FALSE );
+ gtk_widget_show( p_separator );
+ gtk_menu_append( GTK_MENU( p_menu ), p_separator );
+
+ vlc_mutex_lock( &p_intf->p_input->stream.stream_lock );
+ p_item_active = NULL;
+ i_item = 0;
+
+ /* create a set of language buttons and append them to the container */
+ for( i = 0 ; i < p_intf->p_input->stream.i_es_number ; i++ )
+ {
+ if( p_intf->p_input->stream.pp_es[i]->i_cat == i_cat )
+ {
+ i_item++;
+ strcpy( psz_name, p_intf->p_input->stream.pp_es[i]->psz_desc );
+ if( psz_name[0] == '\0' )
+ {
+ snprintf( psz_name, GTK_MENU_LABEL_SIZE,
+ "Language %d", i_item );
+ psz_name[ GTK_MENU_LABEL_SIZE - 1 ] = '\0';
+ }
+
+ p_item = gtk_radio_menu_item_new_with_label( p_group, psz_name );
+ p_group =
+ gtk_radio_menu_item_group( GTK_RADIO_MENU_ITEM( p_item ) );
+
+ if( p_es == p_intf->p_input->stream.pp_es[i] )
+ {
+ /* don't lose p_item when we append into menu */
+ p_item_active = p_item;
+ }
+
+ gtk_widget_show( p_item );
+
+ /* setup signal hanling */
+ gtk_signal_connect( GTK_OBJECT( p_item ), "toggled",
+ GTK_SIGNAL_FUNC( pf_toggle ),
+ (gpointer)( p_intf->p_input->stream.pp_es[i] ) );
+
+ gtk_menu_append( GTK_MENU( p_menu ), p_item );
+ }
+ }
+
+ vlc_mutex_unlock( &p_intf->p_input->stream.stream_lock );
+
+ /* link the new menu to the menubar item */
+ gtk_menu_item_set_submenu( GTK_MENU_ITEM( p_root ), p_menu );
+
+ /* acitvation will call signals so we can only do it
+ * when submenu is attached to menu - to get intf_window */
+ if( p_item_active != NULL )
+ {
+ gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM( p_item_active ),
+ TRUE );
+ }
+
+ /* be sure that menu is sensitive if non empty */
+ if( i_item > 0 )
+ {
+ gtk_widget_set_sensitive( p_root, TRUE );
+ }
+
+ return TRUE;
+}
+#if 1
+/*****************************************************************************
+ * GtkTitleMenu: sets menus for titles and chapters selection
+ *****************************************************************************
+ * Generates two types of menus:
+ * -simple list of titles
+ * -cascaded lists of chapters for each title
+ *****************************************************************************/
+static gint GtkTitleMenu( gpointer p_data,
+ GtkWidget * p_navigation,
+ void(*pf_toggle )( GtkCheckMenuItem *, gpointer ) )
+{
+ intf_thread_t * p_intf;
+ char psz_name[ GTK_MENU_LABEL_SIZE ];
+ GtkWidget * p_title_menu;
+ GtkWidget * p_title_submenu;
+ GtkWidget * p_title_item;
+ GtkWidget * p_item_active;
+ GtkWidget * p_chapter_menu;
+ GtkWidget * p_chapter_submenu;
+ GtkWidget * p_title_menu_item;
+ GtkWidget * p_chapter_menu_item;
+ GtkWidget * p_item;
+ GSList * p_title_group;
+ GSList * p_chapter_group;
+ gint i_title;
+ gint i_chapter;
+ gint i_title_nb;
+ gint i_chapter_nb;
+
+ /* cast */
+ p_intf = (intf_thread_t*)p_data;
+
+ /* temporary hack to avoid blank menu when an open menu is removed */
+ if( GTK_MENU_ITEM(p_navigation)->submenu != NULL )
+ {
+ gtk_menu_popdown( GTK_MENU( GTK_MENU_ITEM(p_navigation)->submenu ) );
+ }
+ /* removes previous menu */
+ gtk_menu_item_remove_submenu( GTK_MENU_ITEM( p_navigation ) );
+ gtk_widget_set_sensitive( p_navigation, FALSE );
+
+ p_title_menu = gtk_menu_new();
+ p_title_group = NULL;
+ p_title_submenu = NULL;
+ p_title_menu_item = NULL;
+ p_chapter_group = NULL;
+ p_chapter_submenu = NULL;
+ p_chapter_menu_item = NULL;
+ p_item_active = NULL;
+ i_title_nb = p_intf->p_input->stream.i_area_nb;
+
+ /* loop on titles */
+ for( i_title = 1 ; i_title < i_title_nb ; i_title++ )
+ {
+ /* we group titles in packets of ten for small screens */
+ if( ( i_title % 10 == 1 ) && ( i_title_nb > 20 ) )
+ {
+ if( i_title != 1 )
+ {
+ gtk_menu_item_set_submenu( GTK_MENU_ITEM( p_title_menu_item ),
+ p_title_submenu );
+ gtk_menu_append( GTK_MENU( p_title_menu ), p_title_menu_item );
+ }
+
+ snprintf( psz_name, GTK_MENU_LABEL_SIZE,
+ "%d - %d", i_title, i_title + 9 );
+ psz_name[ GTK_MENU_LABEL_SIZE - 1 ] = '\0';
+ p_title_menu_item = gtk_menu_item_new_with_label( psz_name );
+ gtk_widget_show( p_title_menu_item );
+ p_title_submenu = gtk_menu_new();
+ }
+
+ snprintf( psz_name, GTK_MENU_LABEL_SIZE, "Title %d (%d)", i_title,
+ p_intf->p_input->stream.pp_areas[i_title]->i_part_nb );
+ psz_name[ GTK_MENU_LABEL_SIZE - 1 ] = '\0';
+#if 0
+ if( pf_toggle == on_menubar_title_toggle )
+ {
+ p_title_item = gtk_radio_menu_item_new_with_label( p_title_group,
+ psz_name );
+ p_title_group =
+ gtk_radio_menu_item_group( GTK_RADIO_MENU_ITEM( p_title_item ) );
+
+ if( p_intf->p_input->stream.pp_areas[i_title] ==
+ p_intf->p_input->stream.p_selected_area )
+ {
+ p_item_active = p_title_item;
+ }
+
+ /* setup signal hanling */
+ gtk_signal_connect( GTK_OBJECT( p_title_item ),
+ "toggled",
+ GTK_SIGNAL_FUNC( pf_toggle ),
+ (gpointer)(p_intf->p_input->stream.pp_areas[i_title]) );
+
+ if( p_intf->p_input->stream.i_area_nb > 1 )
+ {
+ /* be sure that menu is sensitive */
+ gtk_widget_set_sensitive( p_navigation, TRUE );
+ }
+ }
+ else
+#endif
+ {
+ p_title_item = gtk_menu_item_new_with_label( psz_name );
+
+#if 1
+ p_chapter_menu = gtk_menu_new();
+ i_chapter_nb =
+ p_intf->p_input->stream.pp_areas[i_title]->i_part_nb;
+
+ for( i_chapter = 0 ; i_chapter < i_chapter_nb ; i_chapter++ )
+ {
+ /* we group chapters in packets of ten for small screens */
+ if( ( i_chapter % 10 == 0 ) && ( i_chapter_nb > 20 ) )
+ {
+ if( i_chapter != 0 )
+ {
+ gtk_menu_item_set_submenu(
+ GTK_MENU_ITEM( p_chapter_menu_item ),
+ p_chapter_submenu );
+ gtk_menu_append( GTK_MENU( p_chapter_menu ),
+ p_chapter_menu_item );
+ }
+
+ snprintf( psz_name, GTK_MENU_LABEL_SIZE,
+ "%d - %d", i_chapter + 1, i_chapter + 10 );
+ psz_name[ GTK_MENU_LABEL_SIZE - 1 ] = '\0';
+ p_chapter_menu_item =
+ gtk_menu_item_new_with_label( psz_name );
+ gtk_widget_show( p_chapter_menu_item );
+ p_chapter_submenu = gtk_menu_new();
+ }
+
+ snprintf( psz_name, GTK_MENU_LABEL_SIZE,
+ "Chapter %d", i_chapter + 1 );
+ psz_name[ GTK_MENU_LABEL_SIZE - 1 ] = '\0';
+
+ p_item = gtk_radio_menu_item_new_with_label(
+ p_chapter_group, psz_name );
+ p_chapter_group = gtk_radio_menu_item_group(
+ GTK_RADIO_MENU_ITEM( p_item ) );
+ gtk_widget_show( p_item );
+
+#define p_area p_intf->p_input->stream.pp_areas[i_title]
+ if( ( p_area == p_intf->p_input->stream.p_selected_area ) &&
+ ( p_area->i_part == i_chapter + 1 ) )
+ {
+ p_item_active = p_item;
+ }
+#undef p_area
+
+ /* setup signal hanling */
+ gtk_signal_connect( GTK_OBJECT( p_item ),
+ "toggled",
+ GTK_SIGNAL_FUNC( pf_toggle ),
+ (gpointer)POS2DATA( i_title, i_chapter + 1) );
+
+ if( i_chapter_nb > 20 )
+ {
+ gtk_menu_append( GTK_MENU( p_chapter_submenu ), p_item );
+ }
+ else
+ {
+ gtk_menu_append( GTK_MENU( p_chapter_menu ), p_item );
+ }
+ }
+
+ if( i_chapter_nb > 20 )
+ {
+ gtk_menu_item_set_submenu( GTK_MENU_ITEM( p_chapter_menu_item ),
+ p_chapter_submenu );
+ gtk_menu_append( GTK_MENU( p_chapter_menu ),
+ p_chapter_menu_item );
+ }
+
+ /* link the new menu to the title menu item */
+ gtk_menu_item_set_submenu( GTK_MENU_ITEM( p_title_item ),
+ p_chapter_menu );
+
+ if( p_intf->p_input->stream.pp_areas[i_title]->i_part_nb > 1 )
+ {
+ /* be sure that menu is sensitive */
+ gtk_widget_set_sensitive( p_navigation, TRUE );
+ }
+#else
+ GtkRadioMenu( p_intf, p_title_item, p_chapter_group, "Chapter",
+ p_intf->p_input->stream.pp_areas[i_title]->i_part_nb,
+ i_title * 100,
+ p_intf->p_input->stream.p_selected_area->i_part +
+ p_intf->p_input->stream.p_selected_area->i_id *100,
+ pf_toggle );
+
+#endif
+ }
+ gtk_widget_show( p_title_item );
+
+ if( i_title_nb > 20 )
+ {
+ gtk_menu_append( GTK_MENU( p_title_submenu ), p_title_item );
+ }
+ else
+ {
+ gtk_menu_append( GTK_MENU( p_title_menu ), p_title_item );
+ }
+ }
+
+ if( i_title_nb > 20 )
+ {
+ gtk_menu_item_set_submenu( GTK_MENU_ITEM( p_title_menu_item ),
+ p_title_submenu );
+ gtk_menu_append( GTK_MENU( p_title_menu ), p_title_menu_item );
+ }
+
+ /* be sure that menu is sensitive */
+ gtk_widget_set_sensitive( p_title_menu, TRUE );
+
+ /* link the new menu to the menubar item */
+ gtk_menu_item_set_submenu( GTK_MENU_ITEM( p_navigation ), p_title_menu );
+
+ if( p_item_active != NULL )
+ {
+ gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM( p_item_active ),
+ TRUE );
+ }
+#if 0
+ if( p_intf->p_input->stream.i_area_nb > 1 )
+ {
+ /* be sure that menu is sensitive */
+ gtk_widget_set_sensitive( p_navigation, TRUE );
+ }
+#endif
+
+ return TRUE;
+}
+#endif
+/*****************************************************************************
+ * GtkSetupMenu: function that generates title/chapter/audio/subpic
+ * menus with help from preceding functions
+ *****************************************************************************/
+gint GtkSetupMenu( intf_thread_t * p_intf )
+{
+ es_descriptor_t * p_audio_es;
+ es_descriptor_t * p_spu_es;
+ GtkWidget * p_menubar_menu;
+ GtkWidget * p_popup_menu;
+ gint i;
+
+ p_intf->p_sys->b_chapter_update |= p_intf->p_sys->b_title_update;
+ p_intf->p_sys->b_angle_update |= p_intf->p_sys->b_title_update;
+ 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;
+
+ if( p_intf->p_sys->b_title_update )
+ {
+ char psz_title[5];
+
+ p_menubar_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_window ), "menubar_title" ) );
+ GtkRadioMenu( p_intf, p_menubar_menu, NULL, "Title",
+ p_intf->p_input->stream.i_area_nb - 1,
+ p_intf->p_input->stream.p_selected_area->i_id,
+ GtkMenubarTitleToggle );
+
+ snprintf( psz_title, 4, "%d",
+ p_intf->p_input->stream.p_selected_area->i_id );
+ psz_title[ 4 ] = '\0';
+ gtk_label_set_text( p_intf->p_sys->p_label_title, psz_title );
+
+ p_intf->p_sys->b_title_update = 0;
+ }
+
+ if( p_intf->p_sys->b_chapter_update )
+ {
+ char psz_chapter[5];
+
+ p_popup_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_popup ), "popup_navigation" ) );
+ GtkTitleMenu( p_intf, p_popup_menu, GtkPopupNavigationToggle );
+#if 0
+ GtkRadioMenu( p_intf, p_menubar_menu, NULL, "Title",
+ p_intf->p_input->stream.i_area_nb - 1,
+ p_intf->p_input->stream.p_selected_area->i_id,
+ on_menubar_chapter_toggle );
+#endif
+
+ 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,
+ GtkMenubarChapterToggle );
+
+
+ snprintf( psz_chapter, 4, "%d",
+ p_intf->p_input->stream.p_selected_area->i_part );
+ psz_chapter[ 4 ] = '\0';
+ gtk_label_set_text( p_intf->p_sys->p_label_chapter, psz_chapter );
+
+ p_intf->p_sys->i_part =
+ p_intf->p_input->stream.p_selected_area->i_part;
+
+ p_intf->p_sys->b_chapter_update = 0;
+ }
+
+ if( p_intf->p_sys->b_angle_update )
+ {
+ p_menubar_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_window ), "menubar_angle" ) );
+ GtkRadioMenu( p_intf, p_menubar_menu, NULL, "Angle",
+ p_intf->p_input->stream.p_selected_area->i_angle_nb,
+ p_intf->p_input->stream.p_selected_area->i_angle,
+ GtkMenubarAngleToggle );
+
+ p_popup_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_popup ), "popup_angle" ) );
+ GtkRadioMenu( p_intf, p_popup_menu, NULL, "Angle",
+ p_intf->p_input->stream.p_selected_area->i_angle_nb,
+ p_intf->p_input->stream.p_selected_area->i_angle,
+ GtkPopupAngleToggle );
+
+ p_intf->p_sys->b_angle_update = 0;
+ }
+
+ /* look for selected ES */
+ p_audio_es = NULL;
+ p_spu_es = NULL;
+
+ for( i = 0 ; i < p_intf->p_input->stream.i_selected_es_number ; i++ )
+ {
+ if( p_intf->p_input->stream.pp_selected_es[i]->i_cat == AUDIO_ES )
+ {
+ p_audio_es = p_intf->p_input->stream.pp_selected_es[i];
+ }
+
+ if( p_intf->p_input->stream.pp_selected_es[i]->i_cat == SPU_ES )
+ {
+ p_spu_es = p_intf->p_input->stream.pp_selected_es[i];
+ }
+ }
+
+ /* audio menus */
+ if( p_intf->p_sys->b_audio_update )
+ {
+ /* find audio root menu */
+ p_menubar_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_window ), "menubar_audio" ) );
+
+ p_popup_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_popup ), "popup_audio" ) );
+
+ GtkLanguageMenus( p_intf, p_menubar_menu, p_audio_es, AUDIO_ES,
+ GtkMenubarAudioToggle );
+ GtkLanguageMenus( p_intf, p_popup_menu, p_audio_es, AUDIO_ES,
+ GtkPopupAudioToggle );
+
+ p_intf->p_sys->b_audio_update = 0;
+ }
+
+ /* sub picture menus */
+ if( p_intf->p_sys->b_spu_update )
+ {
+ /* find spu root menu */
+ p_menubar_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_window ), "menubar_subpictures" ) );
+
+ p_popup_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_popup ), "popup_subpictures" ) );
+
+ GtkLanguageMenus( p_intf, p_menubar_menu, p_spu_es, SPU_ES,
+ GtkMenubarSubtitleToggle );
+ GtkLanguageMenus( p_intf, p_popup_menu, p_spu_es, SPU_ES,
+ GtkPopupSubtitleToggle );
+
+ p_intf->p_sys->b_spu_update = 0;
+ }
+
+ /* handle fullscreen check items */
+ if( p_vout_bank->i_count )
+ {
+ p_menubar_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_window ), "menubar_fullscreen" ) );
+
+ p_popup_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_popup ), "popup_fullscreen" ) );
+
+ gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM( p_menubar_menu ),
+ p_vout_bank->pp_vout[0]->b_fullscreen );
+ gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM( p_popup_menu ),
+ p_vout_bank->pp_vout[0]->b_fullscreen );
+
+ }
+
+ return TRUE;
+}
+
--- /dev/null
+/*****************************************************************************
+ * gtk_menu.h: prototypes for menu functions
+ *****************************************************************************
+ * Copyright (C) 1999, 2000 VideoLAN
+ * $Id: gtk_menu.h,v 1.1 2001/05/15 01:01:44 stef 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ *****************************************************************************/
+
+#if 0
+void GtkMenubarAudioToggle ( GtkCheckMenuItem *, gpointer );
+void GtkPopupAudioToggle ( GtkCheckMenuItem *, gpointer );
+void GtkMenubarSubtitleToggle ( GtkCheckMenuItem *, gpointer );
+void GtkPopupSubtitleToggle ( GtkCheckMenuItem *, gpointer );
+void GtkMenubarTitleToggle ( GtkCheckMenuItem *, gpointer );
+void GtkPopupTitleToggle ( GtkCheckMenuItem *, gpointer );
+void GtkMenubarChapterToggle ( GtkCheckMenuItem *, gpointer );
+void GtkPopupChapterToggle ( GtkCheckMenuItem *, gpointer );
+void GtkMenubarAngleToggle ( GtkCheckMenuItem *, gpointer );
+void GtkPopupAngleToggle ( GtkCheckMenuItem *, gpointer );
+#endif
+
+
--- /dev/null
+/*****************************************************************************
+ * gtk_modules.c : functions to build modules configuration boxes.
+ *****************************************************************************
+ * Copyright (C) 2000, 2001 VideoLAN
+ * $Id: gtk_modules.c,v 1.1 2001/05/15 01:01:44 stef 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * 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 "mtime.h"
+
+#include "stream_control.h"
+#include "input_ext-intf.h"
+
+#include "interface.h"
+#include "intf_playlist.h"
+#include "intf_msg.h"
+
+#include "gtk_callbacks.h"
+#include "gtk_interface.h"
+#include "gtk_support.h"
+#include "gtk_playlist.h"
+#include "intf_gtk.h"
+
+#include "main.h"
+
+gboolean GtkModulesShow( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data )
+{
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), "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 );
+
+ return FALSE;
+}
+
+void GtkModulesCancel( 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 );
+}
+
--- /dev/null
+/*****************************************************************************
+ * gtk_modules.h: prototypes for modules functions
+ *****************************************************************************
+ * Copyright (C) 1999, 2000 VideoLAN
+ * $Id: gtk_modules.h,v 1.1 2001/05/15 01:01:44 stef 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ *****************************************************************************/
+
+gboolean GtkModulesShow( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data);
+void GtkModulesCancel ( GtkButton * button, gpointer user_data );
+
--- /dev/null
+/*****************************************************************************
+ * gtk_open.c : functions to handle file/disc/network open widgets.
+ *****************************************************************************
+ * Copyright (C) 2000, 2001 VideoLAN
+ * $Id: gtk_open.c,v 1.1 2001/05/15 01:01:44 stef 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * 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 "mtime.h"
+
+#include "stream_control.h"
+#include "input_ext-intf.h"
+
+#include "interface.h"
+#include "intf_playlist.h"
+#include "intf_msg.h"
+
+#include "gtk_callbacks.h"
+#include "gtk_interface.h"
+#include "gtk_support.h"
+#include "gtk_playlist.h"
+#include "intf_gtk.h"
+
+#include "main.h"
+
+/*****************************************************************************
+ * Fileopen callbacks
+ *****************************************************************************
+ * The following callbacks are related to the file requester.
+ *****************************************************************************/
+#if 0
+void GtkFileOpenShow( GtkMenuItem * menuitem, gpointer user_data)
+{
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), (char*)user_data );
+
+ /* If we have never used the file selector, open it */
+ if( !GTK_IS_WIDGET( p_intf->p_sys->p_fileopen ) )
+ {
+ 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_file_selection_set_filename( GTK_FILE_SELECTION(
+ p_intf->p_sys->p_fileopen ),
+ main_GetPszVariable( INTF_PATH_VAR, INTF_PATH_DEFAULT ) );
+ }
+
+ gtk_widget_show( p_intf->p_sys->p_fileopen );
+ gdk_window_raise( p_intf->p_sys->p_fileopen->window );
+}
+#else
+
+gboolean
+GtkFileOpenShow (GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data)
+{
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+
+ /* If we have never used the file selector, open it */
+ if( !GTK_IS_WIDGET( p_intf->p_sys->p_fileopen ) )
+ {
+ 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_file_selection_set_filename( GTK_FILE_SELECTION(
+ p_intf->p_sys->p_fileopen ),
+ main_GetPszVariable( INTF_PATH_VAR, INTF_PATH_DEFAULT ) );
+ }
+
+ gtk_widget_show( p_intf->p_sys->p_fileopen );
+ gdk_window_raise( p_intf->p_sys->p_fileopen->window );
+
+ return FALSE;
+}
+
+
+#endif
+void GtkFileOpenCancel( GtkButton * button, gpointer user_data)
+{
+ gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
+}
+
+void GtkFileOpenOk( GtkButton * button, gpointer user_data )
+{
+ intf_thread_t * p_intf = GetIntf( GTK_WIDGET(button), "intf_fileopen" );
+ GtkCList * p_playlist_clist;
+ GtkWidget * p_filesel;
+ gchar * psz_filename;
+ int i_end = p_main->p_playlist->i_size;
+
+ /* hide the file selector */
+ p_filesel = gtk_widget_get_toplevel( GTK_WIDGET(button) );
+ gtk_widget_hide( p_filesel );
+
+ /* add the new file to the interface playlist */
+ psz_filename =
+ gtk_file_selection_get_filename( GTK_FILE_SELECTION( p_filesel ) );
+ intf_PlaylistAdd( p_main->p_playlist, PLAYLIST_END, (char*)psz_filename );
+
+ /* 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 plugin display */
+ GtkRebuildCList( p_playlist_clist, p_main->p_playlist );
+
+ /* end current item, select added item */
+ if( p_intf->p_input != NULL )
+ {
+ p_intf->p_input->b_eof = 1;
+ }
+
+ intf_PlaylistJumpto( p_main->p_playlist, i_end - 1 );
+ p_main->p_playlist->b_stopped = 0;
+}
+
+/*****************************************************************************
+ * Open disc callbacks
+ *****************************************************************************
+ * The following callbacks are related to the disc manager.
+ *****************************************************************************/
+#if 0
+void GtkDiscOpenShow( GtkMenuItem * menuitem, gpointer user_data)
+{
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), (char*)user_data );
+
+ if( !GTK_IS_WIDGET( p_intf->p_sys->p_disc ) )
+ {
+ p_intf->p_sys->p_disc = create_intf_disc();
+ gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_disc ),
+ "p_intf", p_intf );
+ }
+
+ gtk_widget_show( p_intf->p_sys->p_disc );
+ gdk_window_raise( p_intf->p_sys->p_disc->window );
+}
+#else
+gboolean
+GtkDiscOpenShow (GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data)
+{
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+
+ if( !GTK_IS_WIDGET( p_intf->p_sys->p_disc ) )
+ {
+ p_intf->p_sys->p_disc = create_intf_disc();
+ gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_disc ),
+ "p_intf", p_intf );
+ }
+
+ gtk_widget_show( p_intf->p_sys->p_disc );
+ gdk_window_raise( p_intf->p_sys->p_disc->window );
+
+ return FALSE;
+}
+
+#endif
+void GtkDiscOpenDvd( GtkToggleButton * togglebutton, gpointer user_data )
+{
+ if( togglebutton->active )
+ {
+ gtk_entry_set_text(
+ GTK_ENTRY( lookup_widget( GTK_WIDGET(togglebutton), "disc_name" ) ),
+ main_GetPszVariable( INPUT_DVD_DEVICE_VAR, INPUT_DVD_DEVICE_DEFAULT )
+ );
+ }
+}
+
+void GtkDiscOpenVcd( GtkToggleButton *togglebutton, gpointer user_data )
+{
+ if( togglebutton->active )
+ {
+ gtk_entry_set_text(
+ GTK_ENTRY( lookup_widget( GTK_WIDGET(togglebutton), "disc_name" ) ),
+ main_GetPszVariable( INPUT_VCD_DEVICE_VAR, INPUT_VCD_DEVICE_DEFAULT )
+ );
+ }
+}
+
+void GtkDiscOpenOk( GtkButton * button, gpointer user_data )
+{
+ intf_thread_t * p_intf = GetIntf( GTK_WIDGET(button), "intf_disc" );
+ GtkCList * p_playlist_clist;
+ char * psz_device, *psz_source, *psz_method;
+ int i_end = p_main->p_playlist->i_size;
+
+ gtk_widget_hide( p_intf->p_sys->p_disc );
+ psz_device = gtk_entry_get_text( GTK_ENTRY( lookup_widget(
+ GTK_WIDGET(button), "disc_name" ) ) );
+
+ /* "dvd:foo" has size 5 + strlen(foo) */
+ psz_source = malloc( 3 /* "dvd" */ + 1 /* ":" */
+ + strlen( psz_device ) + 1 /* "\0" */ );
+ if( psz_source == NULL )
+ {
+ return;
+ }
+
+ /* Check which method was activated */
+ if( GTK_TOGGLE_BUTTON( lookup_widget( GTK_WIDGET(button),
+ "disc_dvd" ) )->active )
+ {
+ psz_method = "dvd";
+ }
+ else if( GTK_TOGGLE_BUTTON( lookup_widget( GTK_WIDGET(button),
+ "disc_vcd" ) )->active )
+ {
+ psz_method = "vcd";
+ }
+ else
+ {
+ intf_ErrMsg( "intf error: unknown disc type toggle button position" );
+ free( psz_source );
+ return;
+ }
+
+ /* Select title and chapter */
+ main_PutIntVariable( INPUT_TITLE_VAR, gtk_spin_button_get_value_as_int(
+ GTK_SPIN_BUTTON( lookup_widget(
+ GTK_WIDGET(button), "disc_title" ) ) ) );
+
+ main_PutIntVariable( INPUT_CHAPTER_VAR, gtk_spin_button_get_value_as_int(
+ GTK_SPIN_BUTTON( lookup_widget(
+ GTK_WIDGET(button), "disc_chapter" ) ) ) );
+
+ /* Build source name and add it to playlist */
+ sprintf( psz_source, "%s:%s", psz_method, psz_device );
+ 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 );
+
+ /* stop current item, select added item */
+ if( p_intf->p_input != NULL )
+ {
+ p_intf->p_input->b_eof = 1;
+ }
+
+// vlc_mutex_lock( &p_main->p_playlist->change_lock );
+
+ intf_PlaylistJumpto( p_main->p_playlist, i_end - 1 );
+ p_main->p_playlist->b_stopped = 0;
+
+// vlc_mutex_unlock( &p_main->p_playlist->change_lock );
+}
+
+void GtkDiscOpenCancel( GtkButton * button, gpointer user_data)
+{
+ gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
+}
+
+/*****************************************************************************
+ * Network stream callbacks
+ *****************************************************************************
+ * The following callbacks are related to the network stream manager.
+ *****************************************************************************/
+#if 0
+void GtkNetworkOpenShow( GtkMenuItem * menuitem, gpointer user_data)
+{
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), (char*)user_data );
+
+ if( !GTK_IS_WIDGET( p_intf->p_sys->p_network ) )
+ {
+ p_intf->p_sys->p_disc = create_intf_network();
+ gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_network ),
+ "p_intf", p_intf );
+ }
+
+ gtk_widget_show( p_intf->p_sys->p_network );
+ gdk_window_raise( p_intf->p_sys->p_network->window );
+}
+#else
+
+gboolean
+GtkNetworkOpenShow (GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data)
+{
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+
+ if( !GTK_IS_WIDGET( p_intf->p_sys->p_network ) )
+ {
+ 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_widget_show( p_intf->p_sys->p_network );
+ gdk_window_raise( p_intf->p_sys->p_network->window );
+
+ return FALSE;
+}
+
+
+
+#endif
+
+void GtkNetworkOpenOk( GtkButton *button, gpointer user_data )
+{
+ intf_thread_t * p_intf = GetIntf( GTK_WIDGET(button), "intf_network" );
+ GtkCList * p_playlist_clist;
+ char * psz_source, *psz_server, *psz_protocol;
+ unsigned int i_port;
+ boolean_t b_broadcast;
+ int i_end = p_main->p_playlist->i_size;
+
+ gtk_widget_hide( p_intf->p_sys->p_network );
+ psz_server = gtk_entry_get_text( GTK_ENTRY( lookup_widget(
+ GTK_WIDGET(button), "network_server" ) ) );
+
+ /* Check which protocol was activated */
+ if( GTK_TOGGLE_BUTTON( lookup_widget( GTK_WIDGET(button),
+ "network_ts" ) )->active )
+ {
+ psz_protocol = "ts";
+ }
+ else if( GTK_TOGGLE_BUTTON( lookup_widget( GTK_WIDGET(button),
+ "network_rtp" ) )->active )
+ {
+ psz_protocol = "rtp";
+ }
+ else
+ {
+ intf_ErrMsg( "intf error: unknown protocol toggle button position" );
+ 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), "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 );
+
+ /* select added item */
+ if( p_intf->p_input != NULL )
+ {
+ p_intf->p_input->b_eof = 1;
+ }
+
+// vlc_mutex_lock( &p_main->p_playlist->change_lock );
+
+ intf_PlaylistJumpto( p_main->p_playlist, i_end - 1 );
+ p_main->p_playlist->b_stopped = 0;
+
+// vlc_mutex_unlock( &p_main->p_playlist->change_lock );
+}
+
+void GtkNetworkOpenCancel( GtkButton * button, gpointer user_data)
+{
+ gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
+}
+
+
+void GtkNetworkOpenBroadcast( GtkToggleButton * togglebutton,
+ gpointer user_data )
+{
+ GtkWidget * p_network;
+
+ p_network = gtk_widget_get_toplevel( GTK_WIDGET (togglebutton) );
+
+ gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_network ),
+ "network_broadcast_combo" ),
+ gtk_toggle_button_get_active( togglebutton ) );
+
+ gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_network ),
+ "network_broadcast" ),
+ gtk_toggle_button_get_active( togglebutton ) );
+}
+
+
+
--- /dev/null
+/*****************************************************************************
+ * gtk_open.h: prototypes for open functions
+ *****************************************************************************
+ * Copyright (C) 1999, 2000 VideoLAN
+ * $Id: gtk_open.h,v 1.1 2001/05/15 01:01:44 stef 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ *****************************************************************************/
+
+gboolean
+GtkFileOpenShow (GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data);
+
+void GtkFileOpenCancel( GtkButton * button, gpointer user_data);
+
+void GtkFileOpenOk( GtkButton * button, gpointer user_data );
+
+
+gboolean
+GtkDiscOpenShow (GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data);
+void GtkDiscOpenDvd( GtkToggleButton * togglebutton, gpointer user_data );
+void GtkDiscOpenVcd( GtkToggleButton *togglebutton, gpointer user_data );
+void GtkDiscOpenOk( GtkButton * button, gpointer user_data );
+void GtkDiscOpenCancel( GtkButton * button, gpointer user_data);
+
+
+
+
+gboolean
+GtkNetworkOpenShow (GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data);
+void GtkNetworkOpenOk( GtkButton *button, gpointer user_data );
+void GtkNetworkOpenCancel( GtkButton * button, gpointer user_data);
+void GtkNetworkOpenBroadcast( GtkToggleButton * togglebutton,
+ gpointer user_data );
+
+
* gtk_playlist.c : Interface for the playlist dialog
*****************************************************************************
* Copyright (C) 2001 VideoLAN
- * $Id: gtk_playlist.c,v 1.11 2001/05/07 03:14:09 stef Exp $
+ * $Id: gtk_playlist.c,v 1.12 2001/05/15 01:01:44 stef Exp $
*
* Authors: Pierre Baillet <oct@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
#include "main.h"
-void
-on_menubar_playlist_activate (GtkMenuItem *menuitem,
- gpointer user_data)
+/****************************************************************************
+ * Playlist window management
+ ****************************************************************************/
+gboolean GtkPlaylistShow( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data )
{
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
- playlist_t * p_playlist ;
- GtkCList * list;
-
if( !GTK_IS_WIDGET( p_intf->p_sys->p_playlist ) )
{
- /* this shoud never happen */
- intf_ErrMsgImm("intf_playlist is not a widget !");
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 );
}
-
- vlc_mutex_lock( &p_main->p_playlist->change_lock );
- if(p_main->p_playlist->i_size > 0 )
- {
- p_playlist = p_main->p_playlist;
- list = GTK_CLIST(lookup_widget( p_intf->p_sys->p_playlist, "playlist_clist" )) ;
- rebuildCList( list, p_playlist );
- }
- vlc_mutex_unlock( &p_main->p_playlist->change_lock );
-
- gtk_widget_show( p_intf->p_sys->p_playlist );
- gdk_window_raise( p_intf->p_sys->p_playlist->window );
-}
-
-void
-on_toolbar_playlist_clicked (GtkButton *button,
- gpointer user_data)
-{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_window" );
-
- if( !GTK_IS_WIDGET( p_intf->p_sys->p_playlist ) )
+ if( GTK_WIDGET_VISIBLE( p_intf->p_sys->p_playlist ) )
{
- /* this should never happen */
- intf_ErrMsgImm("intf_playlist is not a widget !");
-
- 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 );
- }
- if( GTK_WIDGET_VISIBLE(p_intf->p_sys->p_playlist) ) {
- gtk_widget_hide( p_intf->p_sys->p_playlist);
+ gtk_widget_hide( p_intf->p_sys->p_playlist );
}
else
{
- GtkCList * clist;
+ GtkCList * p_clist;
+
+ p_clist = GTK_CLIST( gtk_object_get_data(
+ GTK_OBJECT( p_intf->p_sys->p_playlist ), "playlist_clist" ) );
+ GtkRebuildCList( p_clist , p_main->p_playlist );
gtk_widget_show( p_intf->p_sys->p_playlist );
- clist = GTK_CLIST(lookup_widget( p_intf->p_sys->p_playlist,"playlist_clist" ));
gdk_window_raise( p_intf->p_sys->p_playlist->window );
- rebuildCList( clist , p_main->p_playlist );
}
+
+ return TRUE;
}
-void
-on_playlist_ok_clicked (GtkButton *button,
- gpointer user_data)
+
+void GtkPlaylistOk( GtkButton * button, gpointer user_data )
{
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_playlist" );
- gtk_widget_hide( p_intf->p_sys->p_playlist );
+ gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
}
-void deleteGListItem(gpointer data, gpointer param)
+
+void GtkPlaylistCancel( GtkButton * button, gpointer user_data )
{
- int curRow = ( int )data;
- intf_thread_t * p_intf = param;
-
- intf_PlaylistDelete( p_main->p_playlist, curRow );
+ gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
+}
- /* are we deleting the current played stream */
- if( p_intf->p_sys->i_playing == curRow )
+
+
+gboolean GtkPlaylistPrev( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data )
+{
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+
+ if( p_intf->p_input != NULL )
{
- /* next ! */
+ /* FIXME: temporary hack */
+ intf_PlaylistPrev( p_main->p_playlist );
+ intf_PlaylistPrev( p_main->p_playlist );
p_intf->p_input->b_eof = 1;
- /* this has to set the slider to 0 */
-
- /* step minus one */
- p_intf->p_sys->i_playing-- ;
- p_main->p_playlist->i_index-- ;
}
-}
-gint compareItems(gconstpointer a, gconstpointer b)
-{
- return b - a;
+
+ return TRUE;
}
-void
-rebuildCList(GtkCList * clist, playlist_t * playlist_p)
+
+gboolean GtkPlaylistNext( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data)
{
- int dummy;
- gchar * text[2];
- GdkColor red;
- red.red = 65535;
- red.green = 0;
- red.blue = 0;
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
-
- gtk_clist_freeze( clist );
- gtk_clist_clear( clist );
-
- for( dummy=0; dummy < playlist_p->i_size; dummy++ )
+ if( p_intf->p_input != NULL )
{
-#ifdef WIN32 /* WIN32 HACK */
- text[0] = g_strdup( "" );
-#else
- text[0] = g_strdup( rindex( (char *)(playlist_p->p_item[playlist_p->i_size -1 - dummy].psz_name ), '/' ) + 1 );
-#endif
- text[1] = g_strdup( "no info");
-
- gtk_clist_insert( clist, 0, text );
-
- free(text[0]);
- free(text[1]);
+ /* FIXME: temporary hack */
+ p_intf->p_input->b_eof = 1;
}
- gtk_clist_set_background (
- clist,
- playlist_p->i_index,
- &red);
- gtk_clist_thaw( clist );
+
+ return TRUE;
+}
+
+/****************************************************************************
+ * Menu callbacks for playlist functions
+ ****************************************************************************/
+void GtkNextActivate( GtkMenuItem * menuitem, gpointer user_data )
+{
+ GtkPlaylistNext( GTK_WIDGET( menuitem ), NULL, user_data );
+}
+
+
+void GtkPrevActivate( GtkMenuItem * menuitem, gpointer user_data )
+{
+ GtkPlaylistPrev( GTK_WIDGET( menuitem ), NULL, user_data );
+}
+
+
+/****************************************************************************
+ * Playlist core functions
+ ****************************************************************************/
+void GtkPlaylistAddUrl( GtkMenuItem * menuitem, gpointer user_data )
+{
+
+}
+
+
+void GtkPlaylistDeleteAll( GtkMenuItem * menuitem, gpointer user_data )
+{
+
}
-void
-on_invertselection_clicked (GtkMenuItem *item, gpointer user_data)
+
+void GtkPlaylistDeleteSelected( GtkMenuItem * menuitem, gpointer user_data )
{
- int * selected, sel_l;
- GtkCList * clist;
- playlist_t * playlist_p;
- int dummy;
+ /* user wants to delete a file in the queue */
+ GList * p_selection;
+ GtkCList * p_clist;
+ playlist_t *p_playlist;
/* catch the thread back */
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(item), "intf_playlist" );
- playlist_p = p_main->p_playlist;
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), (char*)user_data );
+
+ p_playlist = p_main->p_playlist;
/* lock the struct */
vlc_mutex_lock( &p_intf->change_lock );
- clist = GTK_CLIST( lookup_widget(p_intf->p_sys->p_playlist,"playlist_clist") );
+
+ p_clist = GTK_CLIST( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_playlist ), "playlist_clist" ) );
- /* have to copy the selection to an int *
- I wasn't able to copy the g_list to another g_list
- glib only does pointer copies, not real copies :( */
+ /* I use UNDOCUMENTED features to retrieve the selection... */
+ p_selection = p_clist->selection;
- selected = malloc(sizeof(int)* g_list_length(clist->selection));
- sel_l = g_list_length(clist->selection);
- for(dummy=0; dummy < sel_l; dummy++)
+ if( g_list_length( p_selection ) > 0 )
{
- selected[dummy] = (int)g_list_nth_data(clist->selection,dummy);
+ /* reverse-sort so that we can delete from the furthest
+ * to the closest item to delete...
+ */
+ p_selection = g_list_sort( p_selection, GtkCompareItems );
+ g_list_foreach( p_selection, GtkDeleteGListItem, p_intf );
+ /* rebuild the CList */
+ GtkRebuildCList( p_clist, p_playlist );
}
- gtk_clist_freeze( clist );
- gtk_clist_select_all( clist );
- for(dummy=0; dummy < sel_l; dummy++)
- {
- gtk_clist_unselect_row( clist, selected[dummy],0);
- gtk_clist_unselect_row( clist, selected[dummy],1);
- }
- free( selected );
- gtk_clist_thaw( clist );
vlc_mutex_unlock( &p_intf->change_lock );
-}
+}
-void
-on_crop_activate (GtkMenuItem *menuitem,
- gpointer user_data)
+void GtkPlaylistCrop( GtkMenuItem * menuitem, gpointer user_data )
{
/* Ok, this is a really small thing, but, hey, it works and
might be useful, who knows ? */
-
- on_invertselection_clicked (menuitem, user_data);
- on_delete_clicked(menuitem, user_data);
+ GtkPlaylistInvert( menuitem, user_data );
+ GtkPlaylistDeleteSelected( menuitem, user_data );
}
-
-void
-on_delete_clicked (GtkMenuItem *item,
- gpointer user_data)
+void GtkPlaylistInvert( GtkMenuItem * menuitem, gpointer user_data )
{
- /* user wants to delete a file in the queue */
- GList * selection;
- GtkCList * clist;
- playlist_t * playlist_p;
+ playlist_t *p_playlist;
+ GtkCList * p_clist;
+ int * pi_selected;
+ int i_sel_l;
+ int i_dummy;
/* catch the thread back */
- intf_thread_t *p_intf = GetIntf( GTK_WIDGET(item), "intf_playlist" );
- playlist_p = p_main->p_playlist;
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), (char*)user_data );
+
+ p_playlist = p_main->p_playlist;
/* lock the struct */
vlc_mutex_lock( &p_intf->change_lock );
- clist = GTK_CLIST( lookup_widget(p_intf->p_sys->p_playlist,"playlist_clist") );
+
+ p_clist = GTK_CLIST( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_playlist ), "playlist_clist" ) );
- /* I use UNDOCUMENTED features to retrieve the selection... */
- selection = clist->selection;
+ /* have to copy the selection to an int *
+ I wasn't able to copy the g_list to another g_list
+ glib only does pointer copies, not real copies :( */
- if( g_list_length(selection)>0 )
+ pi_selected = malloc( sizeof(int) *g_list_length( p_clist->selection ) );
+ i_sel_l = g_list_length( p_clist->selection );
+
+ for( i_dummy = 0 ; i_dummy < i_sel_l ; i_dummy++)
{
- /* reverse-sort so that we can delete from the furthest to the
- closest item to delete...
- */
- selection = g_list_sort( selection, compareItems );
- g_list_foreach( selection,
- deleteGListItem,
- p_intf );
- /* rebuild the CList */
- rebuildCList( clist, playlist_p );
+ pi_selected[i_dummy] = (int)g_list_nth_data( p_clist->selection,
+ i_dummy );
}
+ gtk_clist_freeze( p_clist );
+ gtk_clist_select_all( p_clist );
+
+ for( i_dummy = 0; i_dummy < i_sel_l; i_dummy++)
+ {
+ gtk_clist_unselect_row( p_clist, pi_selected[i_dummy], 0 );
+ gtk_clist_unselect_row( p_clist, pi_selected[i_dummy], 1 );
+ }
+
+ free( pi_selected );
+ gtk_clist_thaw( p_clist );
+
vlc_mutex_unlock( &p_intf->change_lock );
}
-gboolean
-on_intf_playlist_destroy_event (GtkWidget *widget,
- GdkEvent *event,
- gpointer user_data)
+void GtkPlaylistSelect( GtkMenuItem * menuitem, gpointer user_data)
{
- /* hide ! */
- gtk_widget_hide(widget);
- return TRUE;
+
+}
+
+gboolean GtkPlaylistEvent( GtkWidget * widget,
+ GdkEvent * event,
+ gpointer user_data)
+{
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+
+ if( ( event->button ).type == GDK_2BUTTON_PRESS )
+ {
+ GtkCList * p_clist;
+ gint i_row;
+ gint i_col;
+
+ p_clist = GTK_CLIST( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_playlist ), "playlist_clist" ) );
+
+ if( gtk_clist_get_selection_info( p_clist, (event->button).x,
+ (event->button).y, &i_row, &i_col ) == 1 )
+ {
+ /* clicked is in range. */
+ if( p_intf->p_input != NULL )
+ {
+ /* FIXME: temporary hack */
+ p_intf->p_input->b_eof = 1;
+ }
+
+// vlc_mutex_lock( &p_main->p_playlist->change_lock );
+
+ intf_PlaylistJumpto( p_main->p_playlist, i_row - 1 );
+ p_main->p_playlist->b_stopped = 0;
+
+// vlc_mutex_unlock( &p_main->p_playlist->change_lock );
+ }
+ return TRUE;
+ }
+
+ return FALSE;
}
-void
-on_intf_playlist_drag_data_received (GtkWidget *widget,
- GdkDragContext *drag_context,
- gint x,
- gint y,
- GtkSelectionData *data,
- guint info,
- guint time,
- gpointer user_data)
+void GtkPlaylistDragData( GtkWidget *widget,
+ GdkDragContext *drag_context,
+ gint x,
+ gint y,
+ GtkSelectionData *data,
+ guint info,
+ guint time,
+ gpointer user_data )
{
+ intf_thread_t * p_intf;
+ GtkCList * p_clist;
+ gint i_row;
+ gint i_col;
+ int i_end = p_main->p_playlist->i_size;
+
/* catch the interface back */
- intf_thread_t * p_intf = GetIntf( GTK_WIDGET(widget), "intf_playlist" );
- GtkCList * clist;
- gint row, col;
+ p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
- clist = GTK_CLIST(lookup_widget( p_intf->p_sys->p_playlist,"playlist_clist" ));
+ p_clist = GTK_CLIST( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_playlist ), "playlist_clist" ) );
- /* are we dropping somewhere into the clist items ? */
- if( gtk_clist_get_selection_info( clist,
- x,
- y,
- &row,
- &col )== 1)
+ if( gtk_clist_get_selection_info( p_clist, x, y, &i_row, &i_col ) == 1 )
{
- on_generic_drop_data_received( p_intf, data, info, row );
+ /* we are dropping somewhere into the clist items */
+ GtkDropDataReceived( p_intf, data, info, i_row );
}
- /* else, put that at the end of the playlist */
else
{
- on_generic_drop_data_received( p_intf, data, info, PLAYLIST_END);
+ /* else, put that at the end of the playlist */
+ GtkDropDataReceived( p_intf, data, info, PLAYLIST_END );
}
+
+// vlc_mutex_lock( &p_main->p_playlist->change_lock );
+
+ intf_PlaylistJumpto( p_main->p_playlist, i_end - 1 );
+ p_main->p_playlist->b_stopped = 0;
+
+// vlc_mutex_unlock( &p_main->p_playlist->change_lock );
}
+
+
+gboolean GtkPlaylistDragMotion( GtkWidget *widget,
+ GdkDragContext *drag_context,
+ gint x,
+ gint y,
+ guint time,
+ gpointer user_data )
+{
+ intf_thread_t *p_intf;
+ GtkCList * p_clist;
+ gint i_row;
+ gint i_col;
+ int i_dummy;
+ GdkColor color;
+
+ p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+
+ p_clist = GTK_CLIST( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_playlist ), "playlist_clist" ) );
+
+ if( !GTK_WIDGET_TOPLEVEL(widget) )
+ {
+ gdk_window_raise( p_intf->p_sys->p_playlist->window );
+ }
+
+ color.red = 0xffff;
+ color.blue = 0xffff;
+ color.green = 0xffff;
+
+ gtk_clist_freeze( p_clist );
+
+ for( i_dummy = 0; i_dummy < p_clist->rows; i_dummy++)
+ {
+ gtk_clist_set_background ( p_clist, i_dummy , &color);
+ }
+
+ color.red = 0xffff;
+ color.blue = 0;
+ color.green = 0;
+ gtk_clist_set_background( p_clist, p_main->p_playlist->i_index , &color );
+
+ if( gtk_clist_get_selection_info( p_clist, x, y, &i_row, &i_col ) == 1)
+ {
+ color.red = 0;
+ color.blue = 0xf000;
+ color.green = 0x9000;
+ gtk_clist_set_background ( p_clist, i_row - 1, &color);
+ gtk_clist_set_background ( p_clist, i_row, &color);
+ }
+
+ gtk_clist_thaw( p_clist );
-void on_generic_drop_data_received( intf_thread_t * p_intf,
- GtkSelectionData *data, guint info, int position)
+ return TRUE;
+}
+
+void GtkDropDataReceived( intf_thread_t * p_intf,
+ GtkSelectionData * p_data, guint i_info, int i_position)
{
/* first we'll have to split against all the '\n' we have */
- gchar * protocol;
- gchar * temp;
- gchar * string = data->data ;
- GList * files = NULL;
- GtkCList * clist;
+ gchar * p_protocol;
+ gchar * p_temp;
+ gchar * p_string = p_data->data ;
+ GList * p_files = NULL;
+ GtkCList * p_clist;
/* catch the playlist back */
- playlist_t * p_playlist = p_main->p_playlist ;
+ playlist_t * p_playlist = p_main->p_playlist;
/* if this has been URLencoded, decode it
* Is it a good thing to do it in place ?
* probably not...
*/
- if(info == DROP_ACCEPT_TEXT_URI_LIST)
+ if( i_info == DROP_ACCEPT_TEXT_URI_LIST )
{
- urldecode_path( string );
+ urldecode_path( p_string );
}
/* this cuts string into single file drops */
/* this code was borrowed from xmms, thx guys :) */
- while(*string)
+ while( *p_string)
{
- temp = strchr(string, '\n');
- if(temp)
+ p_temp = strchr( p_string, '\n' );
+ if( p_temp )
{
- if (*(temp - 1) == '\r')
- *(temp - 1) = '\0';
- *temp = '\0';
+ if( *( p_temp - 1 ) == '\r' )
+ {
+ *( p_temp - 1) = '\0';
+ }
+ *p_temp = '\0';
}
-
-
+
/* do we have a protocol or something ? */
- protocol = strstr( string, ":/" );
- if( protocol != NULL )
+ p_protocol = strstr( p_string, ":/" );
+ if( p_protocol != NULL )
{
- protocol = calloc( protocol - string + 2 ,
- sizeof(char));
- protocol = strncpy( protocol, string, strstr( string, ":/") + 1 - string );
+ p_protocol = calloc( p_protocol - p_string + 2, sizeof(char) );
+ p_protocol = strncpy( p_protocol, p_string,
+ strstr( p_string, ":/" ) + 1 - p_string );
- intf_WarnMsg(4,"Protocol dropped is %s",protocol);
- string += strlen(protocol) ;
+ intf_WarnMsg( 4, "Protocol dropped is %s", p_protocol );
+ p_string += strlen( p_protocol );
/* Allowed things are proto: or proto:// */
- if(string[0]=='/' && string[1]=='/')
+ if( p_string[0] == '/' && p_string[1] == '/')
{
/* eat one '/' */
- string++;
+ p_string++;
}
- intf_WarnMsg(4,"Dropped %s",string);
-
+ intf_WarnMsg( 4, " Dropped %s", p_string );
}
else
{
- protocol = strdup("");
+ p_protocol = strdup( "" );
}
/* if it uses the file protocol we can do something, else, sorry :(
* ability to read http:// or ftp:// files
* what about adding dvd:// to the list of authorized proto ? */
- if( strcmp(protocol,"file:")==0 )
+ if( strcmp( p_protocol, "file:" ) == 0 )
{
- files = g_list_concat( files, intf_readFiles( string ) );
+ p_files = g_list_concat( p_files, GtkReadFiles( p_string ) );
}
/* free the malloc and go on... */
- free( protocol );
- if (!temp)
+ free( p_protocol );
+ if( !p_temp )
+ {
break;
- string = temp + 1;
+ }
+ p_string = p_temp + 1;
}
/* At this point, we have a nice big list maybe NULL */
- if(files != NULL)
+ if( p_files != NULL )
{
/* lock the interface */
vlc_mutex_lock( &p_intf->change_lock );
- intf_WarnMsg( 4, "List has %d elements",g_list_length( files ) );
- intf_AppendList( p_playlist, position, files );
+
+ intf_WarnMsg( 4, "List has %d elements", g_list_length( p_files ) );
+ GtkAppendList( p_playlist, i_position, p_files );
/* get the CList and rebuild it. */
- clist = GTK_CLIST(
- lookup_widget( p_intf->p_sys->p_playlist,
- "playlist_clist" ) );
- rebuildCList( clist , p_playlist );
+ p_clist = GTK_CLIST( lookup_widget( p_intf->p_sys->p_playlist,
+ "playlist_clist" ) );
+ GtkRebuildCList( p_clist , p_playlist );
/* unlock the interface */
vlc_mutex_unlock( &p_intf->change_lock );
+
+ p_main->p_playlist->b_stopped = 0;
+ }
+}
+
+
+void GtkDeleteGListItem( gpointer data, gpointer param )
+{
+ int i_cur_row = ( int )data;
+ intf_thread_t * p_intf = param;
+
+ intf_PlaylistDelete( p_main->p_playlist, i_cur_row );
+
+ /* are we deleting the current played stream */
+ if( p_intf->p_sys->i_playing == i_cur_row )
+ {
+ /* next ! */
+ p_intf->p_input->b_eof = 1;
+ /* this has to set the slider to 0 */
+
+ /* step minus one */
+ p_intf->p_sys->i_playing-- ;
+
+ vlc_mutex_lock( &p_main->p_playlist->change_lock );
+ p_main->p_playlist->i_index-- ;
+ vlc_mutex_unlock( &p_main->p_playlist->change_lock );
}
}
+
+gint GtkCompareItems( gconstpointer a, gconstpointer b )
+{
+ return b - a;
+}
+
+
/* check a file (string) against supposed valid extension */
-int
-hasValidExtension( gchar * filename )
+int GtkHasValidExtension( gchar * psz_filename )
{
- char * ext[6] = {"mpg","mpeg","vob","mp2","ts","ps"};
+ char * ppsz_ext[6] = { "mpg", "mpeg", "vob", "mp2", "ts", "ps" };
int i_ext = 6;
- int dummy;
- gchar * p_filename = strrchr( filename, '.' ) + sizeof( char );
- for( dummy=0; dummy<i_ext;dummy++ )
+ int i_dummy;
+
+ gchar * psz_ext = strrchr( psz_filename, '.' ) + sizeof( char );
+
+ for( i_dummy = 0 ; i_dummy < i_ext ; i_dummy++ )
{
- if( strcmp( p_filename,ext[dummy] )==0 )
+ if( strcmp( psz_ext, ppsz_ext[i_dummy] ) == 0 )
+ {
return 1;
+ }
}
+
return 0;
}
-/* recursive function: descend into folders and build a list of valid filenames */
-GList *
-intf_readFiles( gchar * fsname )
+/* recursive function: descend into folders and build a list of
+ * valid filenames */
+GList * GtkReadFiles( gchar * psz_fsname )
{
struct stat statbuf;
- GList * current = NULL;
+ GList * p_current = NULL;
/* get the attributes of this file */
- stat(fsname, &statbuf);
+ stat( psz_fsname, &statbuf );
/* is it a regular file ? */
if( S_ISREG( statbuf.st_mode ) )
{
- if( hasValidExtension(fsname) )
+ if( GtkHasValidExtension( psz_fsname ) )
{
- intf_WarnMsg( 2, "%s is a valid file. Stacking on the playlist", fsname );
- return g_list_append( NULL, g_strdup(fsname) );
+ intf_WarnMsg( 2, "%s is a valid file. Stacking on the playlist",
+ psz_fsname );
+ return g_list_append( NULL, g_strdup( psz_fsname ) );
}
else
{
else if( S_ISDIR( statbuf.st_mode ) )
{
/* have to cd into this dir */
- DIR * currentDir = opendir( fsname );
- struct dirent * dirContent;
+ DIR * p_current_dir = opendir( psz_fsname );
+ struct dirent * p_dir_content;
- intf_WarnMsg( 2, "%s is a folder.", fsname );
+ intf_WarnMsg( 2, "%s is a folder.", psz_fsname );
- if( currentDir == NULL )
+ if( p_current_dir == NULL )
{
/* something went bad, get out of here ! */
- return current;
+ return p_current;
}
- dirContent = readdir( currentDir );
+ p_dir_content = readdir( p_current_dir );
/* while we still have entries in the directory */
- while( dirContent != NULL )
+ while( p_dir_content != NULL )
{
/* if it is "." or "..", forget it */
- if(strcmp(dirContent->d_name,".") != 0
- && strcmp(dirContent->d_name,"..") != 0)
+ if( ( strcmp( p_dir_content->d_name, "." ) != 0 ) &&
+ ( strcmp( p_dir_content->d_name, ".." ) != 0 ) )
{
/* else build the new directory by adding
fsname "/" and the current entry name
(kludgy :()
*/
- char * newfs = malloc ( 2 +
- strlen( fsname ) +
- strlen( dirContent->d_name ) * sizeof( char ) );
- strcpy( newfs, fsname );
- strcpy( newfs + strlen( fsname )+1, dirContent->d_name);
- newfs[strlen( fsname )] = '/';
+ char * psz_newfs = malloc ( 2 + strlen( psz_fsname ) +
+ strlen( p_dir_content->d_name ) * sizeof(char) );
+ strcpy( psz_newfs, psz_fsname );
+ strcpy( psz_newfs + strlen( psz_fsname ) + 1,
+ p_dir_content->d_name );
+ psz_newfs[strlen( psz_fsname )] = '/';
- current = g_list_concat( current, intf_readFiles( newfs ) );
+ p_current = g_list_concat( p_current,
+ GtkReadFiles( psz_newfs ) );
- g_free( newfs );
+ g_free( psz_newfs );
}
- dirContent = readdir( currentDir );
+ p_dir_content = readdir( p_current_dir );
}
- return current;
+ return p_current;
}
return NULL;
}
/* add items in a playlist
- when i_pos==-1 add to the end of the list...
+ * when i_pos==-1 add to the end of the list...
*/
-int intf_AppendList( playlist_t * p_playlist, int i_pos, GList * list )
+int GtkAppendList( playlist_t * p_playlist, int i_pos, GList * p_list )
{
- guint length, dummy;
- length = g_list_length( list );
- for( dummy=0; dummy<length; dummy++ )
+ guint i_dummy;
+ guint i_length;
+
+ i_length = g_list_length( p_list );
+
+ for( i_dummy = 0; i_dummy < i_length ; i_dummy++ )
{
intf_PlaylistAdd( p_playlist,
/* ok; this is a really nasty trick to insert
the item where they are suppose to go but, hey
this works :P (btw, you are really nasty too) */
- i_pos==PLAYLIST_END?PLAYLIST_END:( i_pos + dummy ),
- g_list_nth_data(list, dummy));
+ i_pos==PLAYLIST_END?PLAYLIST_END:( i_pos + i_dummy ),
+ g_list_nth_data( p_list, i_dummy ) );
}
return 0;
}
-gboolean
-on_playlist_clist_event (GtkWidget *widget,
- GdkEvent *event,
- gpointer user_data)
-{
- intf_thread_t * p_intf = GetIntf( GTK_WIDGET( widget ), "intf_playlist" );
-
- if( ( event->button ).type == GDK_2BUTTON_PRESS )
- {
- GtkCList * clist;
- gint row, col;
-
- clist = GTK_CLIST(
- lookup_widget(
- p_intf->p_sys->p_playlist,
- "playlist_clist" ) );
-
- if( gtk_clist_get_selection_info( clist,
- (event->button).x,
- (event->button).y,
- &row,
- &col )== 1 )
- {
-
- /* clicked is in range. */
- if( p_intf->p_input != NULL )
- {
- /* FIXME: temporary hack */
- p_intf->p_input->b_eof = 1;
- }
- intf_PlaylistJumpto( p_main->p_playlist, row-1 );
- }
- return TRUE;
- }
- return FALSE;
-}
/* statis timeouted function */
-void GtkPlayListManage( gpointer p_data )
+void GtkPlayListManage( intf_thread_t * p_intf )
{
/* this thing really sucks for now :( */
/* TODO speak more with interface/intf_playlist.c */
- intf_thread_t *p_intf = (void *)p_data;
- playlist_t * p_playlist = p_main->p_playlist ;
+ playlist_t * p_playlist = p_main->p_playlist ;
+ GtkCList * p_clist;
- vlc_mutex_lock( &p_intf->change_lock );
+ p_clist = GTK_CLIST( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_playlist ), "playlist_clist" ) );
if( p_intf->p_sys->i_playing != p_playlist->i_index )
{
GdkColor color;
color.red = 0xffff;
- color.green = 0;
color.blue = 0;
+ color.green = 0;
- gtk_clist_set_background ( GTK_CLIST(
- lookup_widget( p_intf->p_sys->p_playlist,
- "playlist_clist" ) ),
- p_playlist->i_index,
- &color );
+ gtk_clist_set_background( p_clist, p_playlist->i_index, &color );
if( p_intf->p_sys->i_playing != -1 )
{
color.red = 0xffff;
- color.green = 0xffff;
color.blue = 0xffff;
- gtk_clist_set_background (
- GTK_CLIST(lookup_widget( p_intf->p_sys->p_playlist, "playlist_clist" ) ),
- p_intf->p_sys->i_playing,
- &color);
+ color.green = 0xffff;
+ gtk_clist_set_background( p_clist, p_intf->p_sys->i_playing,
+ &color);
}
p_intf->p_sys->i_playing = p_playlist->i_index;
}
- vlc_mutex_unlock( &p_intf->change_lock );
+}
+
+void GtkRebuildCList( GtkCList * p_clist, playlist_t * p_playlist )
+{
+ int i_dummy;
+ gchar * ppsz_text[2];
+ GdkColor red;
+ red.red = 65535;
+ red.blue = 0;
+ red.green = 0;
+
+ gtk_clist_freeze( p_clist );
+ gtk_clist_clear( p_clist );
+
+ for( i_dummy = 0; i_dummy < p_playlist->i_size ; i_dummy++ )
+ {
+#ifdef WIN32 /* WIN32 HACK */
+ ppsz_text[0] = g_strdup( "" );
+#else
+ ppsz_text[0] = g_strdup( rindex( (char *)(p_playlist->p_item[
+ p_playlist->i_size - 1 - i_dummy].psz_name ), '/' ) + 1 );
+#endif
+ ppsz_text[1] = g_strdup( "no info");
+
+ gtk_clist_insert( p_clist, 0, ppsz_text );
+
+ free( ppsz_text[0] );
+ free( ppsz_text[1] );
+ }
+ gtk_clist_set_background( p_clist, p_playlist->i_index, &red);
+ gtk_clist_thaw( p_clist );
}
-void on_generic_drop_data_received( intf_thread_t * p_intf,
- GtkSelectionData *data, guint info, int position);
-void rebuildCList(GtkCList * clist, playlist_t * playlist_p);
-int hasValidExtension(gchar * filename);
-int intf_AppendList( playlist_t * p_playlist, int i_pos, GList * list );
-void GtkPlayListManage( gpointer p_data );
-void on_generic_drop_data_received( intf_thread_t * p_intf,
- GtkSelectionData *data, guint info, int position);
-gint compareItems(gconstpointer a, gconstpointer b);
-GList * intf_readFiles(gchar * fsname );
+/*****************************************************************************
+ * gtk_playlist.h : Playlist functions for the Gtk plugin.
+ *****************************************************************************
+ * Copyright (C) 2000, 2001 VideoLAN
+ * $Id: gtk_playlist.h,v 1.2 2001/05/15 01:01:44 stef Exp $
+ *
+ * Authors: Pierre Baillet <oct@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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ *****************************************************************************/
+
+void GtkPlaylistDeleteAll ( GtkMenuItem *, gpointer );
+void GtkPlaylistDeleteSelected( GtkMenuItem *, gpointer );
+void GtkPlaylistCrop ( GtkMenuItem *, gpointer );
+void GtkPlaylistInvert ( GtkMenuItem *, gpointer );
+void GtkPlaylistSelect ( GtkMenuItem *, gpointer );
+void GtkPlaylistOk ( GtkButton *, gpointer );
+void GtkPlaylistCancel ( GtkButton *, gpointer );
+
+int GtkHasValidExtension ( gchar * );
+gint GtkCompareItems ( gconstpointer, gconstpointer );
+GList * GtkReadFiles ( gchar * );
+
+gboolean GtkPlaylistShow ( GtkWidget *, GdkEventButton *, gpointer );
+gboolean GtkPlaylistPrev ( GtkWidget *, GdkEventButton *, gpointer );
+gboolean GtkPlaylistNext ( GtkWidget *, GdkEventButton *, gpointer );
+gboolean GtkPlaylistDragMotion( GtkWidget *, GdkDragContext *,
+ gint, gint, uint, gpointer );
+gboolean GtkPlaylistEvent ( GtkWidget *, GdkEvent *, gpointer );
+void GtkPlaylistDragData ( GtkWidget *, GdkDragContext *,
+ gint, gint, GtkSelectionData *,
+ guint, guint, gpointer );
+void GtkDeleteGListItem ( gpointer, gpointer );
--- /dev/null
+/*****************************************************************************
+ * gtk_control.c : functions to handle stream control buttons.
+ *****************************************************************************
+ * Copyright (C) 2000, 2001 VideoLAN
+ * $Id: gtk_preferences.c,v 1.1 2001/05/15 01:01:44 stef 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * 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 "mtime.h"
+
+#include "stream_control.h"
+#include "input_ext-intf.h"
+
+#include "interface.h"
+#include "intf_playlist.h"
+#include "intf_msg.h"
+
+#include "gtk_callbacks.h"
+#include "gtk_interface.h"
+#include "gtk_support.h"
+#include "gtk_playlist.h"
+#include "intf_gtk.h"
+
+#include "main.h"
+
+/****************************************************************************
+ * GtkPreferencesShow: display interface window after initialization
+ * if necessary
+ ****************************************************************************/
+
+/* macros to create preference box */
+#define ASSIGN_PSZ_ENTRY( var, default, name ) \
+ gtk_entry_set_text( GTK_ENTRY( gtk_object_get_data( GTK_OBJECT( \
+ p_intf->p_sys->p_preferences ), name ) ), \
+ main_GetPszVariable( var, default ) )
+
+#define ASSIGN_INT_VALUE( var, default, name ) \
+ gtk_spin_button_set_value( GTK_SPIN_BUTTON( gtk_object_get_data( \
+ GTK_OBJECT( p_intf->p_sys->p_preferences ), name ) ), \
+ main_GetIntVariable( var, default ) )
+
+#define ASSIGN_INT_TOGGLE( var, default, name ) \
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( gtk_object_get_data( \
+ GTK_OBJECT( p_intf->p_sys->p_preferences ), name ) ), \
+ main_GetIntVariable( var, default ) )
+
+gboolean GtkPreferencesShow( GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data )
+{
+ intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+
+ /* If we have never used the file selector, open it */
+ if( !GTK_IS_WIDGET( p_intf->p_sys->p_preferences ) )
+ {
+ p_intf->p_sys->p_preferences = create_intf_preferences();
+ gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_preferences ),
+ "p_intf", p_intf );
+
+ /* Default path */
+ ASSIGN_PSZ_ENTRY( INTF_PATH_VAR, INTF_PATH_DEFAULT,
+ "preferences_file_path_entry" );
+
+ /* Default DVD */
+ ASSIGN_PSZ_ENTRY( INPUT_DVD_DEVICE_VAR,INPUT_DVD_DEVICE_DEFAULT,
+ "preferences_disc_dvd_entry" );
+
+ /* Default VCD */
+ ASSIGN_PSZ_ENTRY( INPUT_VCD_DEVICE_VAR, INPUT_VCD_DEVICE_DEFAULT,
+ "preferences_disc_vcd_entry" );
+
+ /* Default server */
+ ASSIGN_PSZ_ENTRY( INPUT_SERVER_VAR, INPUT_SERVER_DEFAULT,
+ "preferences_network_server_entry" );
+
+ /* Default port */
+ ASSIGN_INT_VALUE( INPUT_PORT_VAR, INPUT_PORT_DEFAULT,
+ "preferences_network_port_spinbutton" );
+
+ /* Broadcast address */
+ ASSIGN_PSZ_ENTRY( INPUT_BCAST_ADRR_VAR, INPUT_BCAST_ADDR_DEFAULT,
+ "preferences_network_broadcast_entry" );
+
+ /* Broadcast stream by default ? */
+ ASSIGN_INT_TOGGLE( INPUT_BROADCAST_VAR, INPUT_BROADCAST_DEFAULT,
+ "preferences_network_broadcast_checkbutton" );
+
+ /* XXX Protocol */
+
+ /* Default interface */
+ ASSIGN_PSZ_ENTRY( INTF_METHOD_VAR, INTF_METHOD_DEFAULT,
+ "preferences_interface_entry" );
+
+ /* Default video output */
+ ASSIGN_PSZ_ENTRY( VOUT_METHOD_VAR, VOUT_METHOD_DEFAULT,
+ "preferences_video_output_entry" );
+
+ /* Default output width */
+ ASSIGN_INT_VALUE( VOUT_WIDTH_VAR, VOUT_WIDTH_DEFAULT,
+ "preferences_video_width_spinbutton" );
+
+ /* Default output height */
+ ASSIGN_INT_VALUE( VOUT_HEIGHT_VAR, VOUT_HEIGHT_DEFAULT,
+ "preferences_video_height_spinbutton" );
+
+ /* XXX Default screen depth */
+
+ /* XXX Default fullscreen depth */
+
+ /* XXX Default gamma */
+
+ /* Fullscreen on play */
+ ASSIGN_INT_TOGGLE( VOUT_FULLSCREEN_VAR, VOUT_FULLSCREEN_DEFAULT,
+ "preferences_video_fullscreen_checkbutton" );
+
+ /* Grayscale display */
+ ASSIGN_INT_TOGGLE( VOUT_GRAYSCALE_VAR, VOUT_GRAYSCALE_DEFAULT,
+ "preferences_video_grayscale_checkbutton" );
+
+ /* Default audio output */
+ ASSIGN_PSZ_ENTRY( AOUT_METHOD_VAR, AOUT_METHOD_DEFAULT,
+ "preferences_audio_output_entry" );
+
+ /* Default audio device */
+ ASSIGN_PSZ_ENTRY( AOUT_DSP_VAR, AOUT_DSP_DEFAULT,
+ "preferences_audio_device_entry" );
+
+ /* XXX Default frequency */
+
+ /* XXX Default quality */
+
+ /* XXX Default number of channels */
+
+ /* Use spdif output ? */
+ ASSIGN_INT_TOGGLE( AOUT_SPDIF_VAR, AOUT_SPDIF_DEFAULT,
+ "preferences_audio_spdif_checkbutton" );
+
+ /* Launch playlist on startup */
+ ASSIGN_INT_TOGGLE( PLAYLIST_STARTUP_VAR, PLAYLIST_STARTUP_DEFAULT,
+ "preferences_playlist_startup_checkbutton" );
+
+ /* Enqueue drag'n dropped item as default */
+ ASSIGN_INT_TOGGLE( PLAYLIST_ENQUEUE_VAR, PLAYLIST_ENQUEUE_DEFAULT,
+ "preferences_playlist_enqueue_checkbutton" );
+
+ /* Loop on playlist end */
+ ASSIGN_INT_TOGGLE( PLAYLIST_LOOP_VAR, PLAYLIST_LOOP_DEFAULT,
+ "preferences_playlist_loop_checkbutton" );
+
+ /* Verbosity of warning messages */
+ ASSIGN_INT_VALUE( INTF_WARNING_VAR, INTF_WARNING_DEFAULT,
+ "preferences_misc_messages_spinbutton" );
+#undef ASSIGN_PSZ_ENTRY
+#undef ASSIGN_INT_VALUE
+#undef ASSIGN_INT_TOGGLE
+ }
+
+ gtk_widget_show( p_intf->p_sys->p_preferences );
+ gdk_window_raise( p_intf->p_sys->p_preferences->window );
+
+ return TRUE;
+}
+
+/****************************************************************************
+ * GtkPreferencesApply: store the values into the environnement variables
+ ****************************************************************************/
+
+/* macros to read value frfom preference box */
+#define ASSIGN_PSZ_ENTRY( var, name ) \
+ main_PutPszVariable( var, gtk_entry_get_text( \
+ GTK_ENTRY( gtk_object_get_data( GTK_OBJECT( p_preferences ), name ) ) ) )
+
+#define ASSIGN_INT_VALUE( var, name ) \
+ main_PutIntVariable( var, gtk_spin_button_get_value_as_int( \
+ GTK_SPIN_BUTTON( gtk_object_get_data( GTK_OBJECT( p_preferences ), \
+ name ) ) ) )
+
+#define ASSIGN_INT_TOGGLE( var, name ) \
+ main_PutIntVariable( var, gtk_toggle_button_get_active( \
+ GTK_TOGGLE_BUTTON( gtk_object_get_data( GTK_OBJECT( p_preferences ), \
+ name ) ) ) )
+
+void GtkPreferencesApply( GtkButton * button, gpointer user_data )
+{
+ GtkWidget * p_preferences;
+
+ /* get preferences window */
+ p_preferences = gtk_widget_get_toplevel( GTK_WIDGET( button ) );
+
+ /* Default path */
+ ASSIGN_PSZ_ENTRY( INTF_PATH_VAR, "preferences_file_path_entry" );
+
+ /* Default DVD */
+ ASSIGN_PSZ_ENTRY( INPUT_DVD_DEVICE_VAR, "preferences_disc_dvd_entry" );
+
+ /* Default VCD */
+ ASSIGN_PSZ_ENTRY( INPUT_VCD_DEVICE_VAR, "preferences_disc_vcd_entry" );
+
+ /* Default server */
+ ASSIGN_PSZ_ENTRY( INPUT_SERVER_VAR, "preferences_network_server_entry" );
+
+ /* Default port */
+ ASSIGN_INT_VALUE( INPUT_PORT_VAR, "preferences_network_port_spinbutton" );
+
+ /* Broadcast address */
+ ASSIGN_PSZ_ENTRY( INPUT_BCAST_ADRR_VAR,
+ "preferences_network_broadcast_entry" );
+
+ /* Broadcast stream by default ? */
+ ASSIGN_INT_TOGGLE( INPUT_BROADCAST_VAR,
+ "preferences_network_broadcast_checkbutton" );
+
+ /* XXX Protocol */
+
+ /* Default interface */
+ ASSIGN_PSZ_ENTRY( INTF_METHOD_VAR, "preferences_interface_entry" );
+
+ /* Default video output */
+ ASSIGN_PSZ_ENTRY( VOUT_METHOD_VAR, "preferences_video_output_entry" );
+
+ /* Default output width */
+ ASSIGN_INT_VALUE( VOUT_WIDTH_VAR, "preferences_video_width_spinbutton" );
+
+ /* Default output height */
+ ASSIGN_INT_VALUE( VOUT_HEIGHT_VAR, "preferences_video_height_spinbutton" );
+
+ /* XXX Default screen depth */
+
+ /* XXX Default fullscreen depth */
+
+ /* XXX Default gamma */
+
+ /* Fullscreen on play */
+ ASSIGN_INT_TOGGLE( VOUT_FULLSCREEN_VAR,
+ "preferences_video_fullscreen_checkbutton" );
+
+ /* Grayscale display */
+ ASSIGN_INT_TOGGLE( VOUT_GRAYSCALE_VAR,
+ "preferences_video_grayscale_checkbutton" );
+
+ /* Default audio output */
+ ASSIGN_PSZ_ENTRY( AOUT_METHOD_VAR, "preferences_audio_output_entry" );
+
+ /* Default audio device */
+ ASSIGN_PSZ_ENTRY( AOUT_DSP_VAR, "preferences_audio_device_entry" );
+
+ /* XXX Default frequency */
+
+ /* XXX Default quality */
+
+ /* XXX Default number of channels */
+
+ /* Use spdif output ? */
+ ASSIGN_INT_TOGGLE( AOUT_SPDIF_VAR, "preferences_audio_spdif_checkbutton" );
+
+ /* Launch playlist on startup */
+ ASSIGN_INT_TOGGLE( PLAYLIST_STARTUP_VAR,
+ "preferences_playlist_startup_checkbutton" );
+
+ /* Enqueue drag'n dropped item as default */
+ ASSIGN_INT_TOGGLE( PLAYLIST_ENQUEUE_VAR,
+ "preferences_playlist_enqueue_checkbutton" );
+
+ /* Loop on playlist end */
+ ASSIGN_INT_TOGGLE( PLAYLIST_LOOP_VAR,
+ "preferences_playlist_loop_checkbutton" );
+
+ /* Verbosity of warning messages */
+ ASSIGN_INT_VALUE( INTF_WARNING_VAR,
+ "preferences_misc_messages_spinbutton" );
+}
+#undef ASSIGN_PSZ_ENTRY
+#undef ASSIGN_INT_VALUE
+#undef ASSIGN_INT_TOGGLE
+
+
+void GtkPreferencesOk( GtkButton * button, gpointer user_data )
+{
+ GtkPreferencesApply( button, user_data );
+ gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
+}
+
+
+void GtkPreferencesCancel( GtkButton * button, gpointer user_data )
+{
+ gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
+}
--- /dev/null
+/*****************************************************************************
+ * gtk_control.h: prototypes for control functions
+ *****************************************************************************
+ * Copyright (C) 1999, 2000 VideoLAN
+ * $Id: gtk_preferences.h,v 1.1 2001/05/15 01:01:44 stef 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ *****************************************************************************/
+
+gboolean GtkPreferencesShow ( GtkWidget *, GdkEventButton *, gpointer );
+void GtkPreferencesOk ( GtkButton *, gpointer );
+void GtkPreferencesApply ( GtkButton *, gpointer );
+void GtkPreferencesCancel( GtkButton *, gpointer );
* intf_gtk.c: Gtk+ interface
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
- * $Id: intf_gtk.c,v 1.17 2001/05/07 03:14:09 stef Exp $
+ * $Id: intf_gtk.c,v 1.18 2001/05/15 01:01:44 stef Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Stéphane Borel <stef@via.ecp.fr>
#include "stream_control.h"
#include "input_ext-intf.h"
-#include "intf_msg.h"
#include "interface.h"
+#include "intf_msg.h"
+#include "intf_playlist.h"
+
+#include "video.h"
+#include "video_output.h"
#include "gtk_callbacks.h"
#include "gtk_interface.h"
#include "gtk_support.h"
+#include "gtk_menu.h"
#include "intf_gtk.h"
#include "main.h"
static void intf_Run ( intf_thread_t *p_intf );
static gint GtkManage ( gpointer p_data );
-static gint GtkLanguageMenus( gpointer, GtkWidget *, es_descriptor_t *, gint,
- void (*pf_activate)(GtkMenuItem *, gpointer) );
-static gint GtkChapterMenu ( gpointer, GtkWidget *,
- void (*pf_activate)(GtkMenuItem *, gpointer) );
-static gint GtkTitleMenu ( gpointer, GtkWidget *,
- void (*pf_activate)(GtkMenuItem *, gpointer) );
+static gint GtkModeManage ( intf_thread_t * p_intf );
static void GtkDisplayDate ( GtkAdjustment *p_adj );
-void GtkPlayListManage( gpointer p_data );
-
/*****************************************************************************
* g_atexit: kludge to avoid the Gtk+ thread to segfault at exit
*****************************************************************************
p_intf->p_sys->b_window_changed = 0;
p_intf->p_sys->b_playlist_changed = 0;
- p_intf->p_sys->b_menus_update = 1;
p_intf->p_sys->b_slider_free = 1;
-
- p_intf->p_sys->i_playing = -1;
-
p_intf->p_sys->pf_gtk_callback = NULL;
p_intf->p_sys->pf_gdk_callback = NULL;
/* Create some useful widgets that will certainly be used */
p_intf->p_sys->p_window = create_intf_window( );
p_intf->p_sys->p_popup = create_intf_popup( );
- p_intf->p_sys->p_disc = create_intf_disc( );
- p_intf->p_sys->p_network = create_intf_network( );
p_intf->p_sys->p_playlist = create_intf_playlist( );
-
/* Set the title of the main window */
gtk_window_set_title( GTK_WINDOW(p_intf->p_sys->p_window),
p_intf->p_sys->p_slider_frame = GTK_FRAME( gtk_object_get_data(
GTK_OBJECT(p_intf->p_sys->p_window ), "slider_frame" ) );
+#define P_LABEL( name ) GTK_LABEL( gtk_object_get_data( \
+ GTK_OBJECT( p_intf->p_sys->p_window ), name ) )
+ p_intf->p_sys->p_label_title = P_LABEL( "title_label" );
+ p_intf->p_sys->p_label_chapter = P_LABEL( "chapter_label" );
+#undef P_LABEL
+
/* Connect the date display to the slider */
- #define P_SLIDER GTK_RANGE( gtk_object_get_data( \
+#define P_SLIDER GTK_RANGE( gtk_object_get_data( \
GTK_OBJECT( p_intf->p_sys->p_window ), "slider" ) )
p_intf->p_sys->p_adj = gtk_range_get_adjustment( P_SLIDER );
gtk_signal_connect ( GTK_OBJECT( p_intf->p_sys->p_adj ), "value_changed",
GTK_SIGNAL_FUNC( GtkDisplayDate ), NULL );
p_intf->p_sys->f_adj_oldvalue = 0;
- #undef P_SLIDER
+#undef P_SLIDER
/* We don't create these ones yet because we perhaps won't need them */
p_intf->p_sys->p_about = NULL;
p_intf->p_sys->p_modules = NULL;
p_intf->p_sys->p_fileopen = NULL;
+ p_intf->p_sys->p_disc = NULL;
+ p_intf->p_sys->p_network = NULL;
+ p_intf->p_sys->p_preferences = NULL;
+ p_intf->p_sys->p_jump = NULL;
/* Store p_intf to keep an eye on it */
gtk_object_set_data( GTK_OBJECT(p_intf->p_sys->p_window),
gtk_object_set_data( GTK_OBJECT(p_intf->p_sys->p_playlist),
"p_intf", p_intf );
- gtk_object_set_data( GTK_OBJECT(p_intf->p_sys->p_disc),
- "p_intf", p_intf );
-
- gtk_object_set_data( GTK_OBJECT(p_intf->p_sys->p_network),
- "p_intf", p_intf );
-
gtk_object_set_data( GTK_OBJECT(p_intf->p_sys->p_adj),
"p_intf", p_intf );
{
#define p_intf ((intf_thread_t *)p_data)
- GtkPlayListManage( p_data );
-
vlc_mutex_lock( &p_intf->change_lock );
/* If the "display popup" flag has changed */
p_intf->b_menu_change = 0;
}
- if( p_intf->p_input != NULL )
+ /* update the playlist */
+ GtkPlayListManage( p_data );
+
+ if( p_intf->p_input != NULL && !p_intf->b_die )
{
- /* Used by TS input when PMT changes */
+ /* New input or stream map change */
if( p_intf->p_input->stream.b_changed )
{
- p_intf->p_sys->b_menus_update = 1;
- p_intf->p_input->stream.b_changed = 0;
- intf_WarnMsg( 3,
- "Interface menus refreshed as stream has changed" );
+ GtkModeManage( p_intf );
}
- }
-
- /* Update language/chapter menus after user request */
- if( p_intf->p_input != NULL && p_intf->p_sys->p_window != NULL &&
- p_intf->p_sys->b_menus_update )
- {
- es_descriptor_t * p_audio_es;
- es_descriptor_t * p_spu_es;
- GtkWidget * p_menubar_menu;
- GtkWidget * p_popup_menu;
- gint i;
+ GtkSetupMenu( p_intf );
- p_menubar_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
- p_intf->p_sys->p_window ), "menubar_title" ) );
-
- GtkTitleMenu( p_intf, p_menubar_menu, on_menubar_title_activate );
-
- p_menubar_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
- p_intf->p_sys->p_window ), "menubar_chapter" ) );
-
- GtkChapterMenu( p_intf, p_menubar_menu, on_menubar_chapter_activate );
-
- p_popup_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
- p_intf->p_sys->p_popup ), "popup_navigation" ) );
-
- GtkTitleMenu( p_intf, p_popup_menu, on_popup_navigation_activate );
-
- /* look for selected ES */
- p_audio_es = NULL;
- p_spu_es = NULL;
-
- for( i = 0 ; i < p_intf->p_input->stream.i_selected_es_number ; i++ )
+ /* Manage the slider */
+ if( p_intf->p_input->stream.b_seekable )
{
- if( p_intf->p_input->stream.pp_es[i]->i_cat == AUDIO_ES )
+ float newvalue = p_intf->p_sys->p_adj->value;
+
+#define p_area p_intf->p_input->stream.p_selected_area
+ /* If the user hasn't touched the slider since the last time,
+ * then the input can safely change it */
+ if( newvalue == p_intf->p_sys->f_adj_oldvalue )
{
- p_audio_es = p_intf->p_input->stream.pp_es[i];
- }
+ /* Update the value */
+ p_intf->p_sys->p_adj->value = p_intf->p_sys->f_adj_oldvalue =
+ ( 100. * p_area->i_tell ) / p_area->i_size;
- if( p_intf->p_input->stream.pp_es[i]->i_cat == SPU_ES )
+ gtk_signal_emit_by_name( GTK_OBJECT( p_intf->p_sys->p_adj ),
+ "value_changed" );
+ }
+ /* Otherwise, send message to the input if the user has
+ * finished dragging the slider */
+ else if( p_intf->p_sys->b_slider_free )
{
- p_spu_es = p_intf->p_input->stream.pp_es[i];
+ off_t i_seek = ( newvalue * p_area->i_size ) / 100;
+
+ input_Seek( p_intf->p_input, i_seek );
+
+ /* Update the old value */
+ p_intf->p_sys->f_adj_oldvalue = newvalue;
}
+#undef p_area
}
-
- /* audio menus */
-
- /* find audio root menu */
- p_menubar_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
- p_intf->p_sys->p_window ), "menubar_audio" ) );
-
- p_popup_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
- p_intf->p_sys->p_popup ), "popup_audio" ) );
-
- GtkLanguageMenus( p_intf, p_menubar_menu, p_audio_es, AUDIO_ES,
- on_menubar_audio_activate );
- GtkLanguageMenus( p_intf, p_popup_menu, p_audio_es, AUDIO_ES,
- on_popup_audio_activate );
-
- /* sub picture menus */
-
- /* find spu root menu */
- p_menubar_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
- p_intf->p_sys->p_window ), "menubar_subpictures" ) );
-
- p_popup_menu = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
- p_intf->p_sys->p_popup ), "popup_subpictures" ) );
-
- GtkLanguageMenus( p_intf, p_menubar_menu, p_spu_es, SPU_ES,
- on_menubar_subpictures_activate );
- GtkLanguageMenus( p_intf, p_popup_menu, p_spu_es, SPU_ES,
- on_popup_subpictures_activate );
-
- /* everything is ready */
- p_intf->p_sys->b_menus_update = 0;
}
-
- /* Manage the slider */
- if( p_intf->p_input != NULL && p_intf->p_input->stream.b_seekable )
+ else if( !p_intf->b_die )
{
- float newvalue = p_intf->p_sys->p_adj->value;
-
-#define p_area p_intf->p_input->stream.p_selected_area
- /* If the user hasn't touched the slider since the last time,
- * then the input can safely change it */
- if( newvalue == p_intf->p_sys->f_adj_oldvalue )
- {
- /* Update the value */
- p_intf->p_sys->p_adj->value = p_intf->p_sys->f_adj_oldvalue =
- ( 100. * p_area->i_tell ) / p_area->i_size;
-
- gtk_signal_emit_by_name( GTK_OBJECT( p_intf->p_sys->p_adj ),
- "value_changed" );
- }
- /* Otherwise, send message to the input if the user has
- * finished dragging the slider */
- else if( p_intf->p_sys->b_slider_free )
- {
- off_t i_seek = ( newvalue * p_area->i_size ) / 100;
-
- input_Seek( p_intf->p_input, i_seek );
-
- /* Update the old value */
- p_intf->p_sys->f_adj_oldvalue = newvalue;
- }
-#undef p_area
+ GtkModeManage( p_intf );
}
/* Manage core vlc functions through the callback */
}
/*****************************************************************************
- * GtkMenuRadioItem: give a menu item adapted to language/title selection,
- * ie the menu item is a radio button.
- *****************************************************************************/
-static GtkWidget * GtkMenuRadioItem( GtkWidget * p_menu,
- GSList ** p_button_group,
- gint b_active,
- char * psz_name )
-{
- GtkWidget * p_item;
-
-#if 0
- GtkWidget * p_button;
-
- /* create button */
- p_button =
- gtk_radio_button_new_with_label( *p_button_group, psz_name );
-
- /* add button to group */
- *p_button_group =
- gtk_radio_button_group( GTK_RADIO_BUTTON( p_button ) );
-
- /* prepare button for display */
- gtk_widget_show( p_button );
-
- /* create menu item to store button */
- p_item = gtk_menu_item_new();
-
- /* put button inside item */
- gtk_container_add( GTK_CONTAINER( p_item ), p_button );
-
- /* add item to menu */
- gtk_menu_append( GTK_MENU( p_menu ), p_item );
-
- gtk_signal_connect( GTK_OBJECT( p_item ), "activate",
- GTK_SIGNAL_FUNC( on_audio_toggle ),
- NULL );
-
-
- /* prepare item for display */
- gtk_widget_show( p_item );
-
- /* is it the selected item ? */
- if( b_active )
- {
- gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( p_button ), TRUE );
- }
-#else
- p_item = gtk_menu_item_new_with_label( psz_name );
- gtk_menu_append( GTK_MENU( p_menu ), p_item );
- gtk_widget_show( p_item );
-#endif
-
- return p_item;
-}
-
-/*****************************************************************************
- * GtkLanguageMenus: update interactive menus of the interface
+ * GtkDisplayDate: display stream date
*****************************************************************************
- * Sets up menus with information from input:
- * -languages
- * -sub-pictures
- * Warning: since this function is designed to be called by management
- * function, the interface lock has to be taken
+ * This function displays the current date related to the position in
+ * the stream. It is called whenever the slider changes its value.
*****************************************************************************/
-static gint GtkLanguageMenus( gpointer p_data,
- GtkWidget * p_root,
- es_descriptor_t * p_es,
- gint i_cat,
- void(*pf_activate )( GtkMenuItem *, gpointer ) )
+void GtkDisplayDate( GtkAdjustment *p_adj )
{
- intf_thread_t * p_intf;
- GtkWidget * p_menu;
- GtkWidget * p_separator;
- GtkWidget * p_item;
- GSList * p_button_group;
- char * psz_name;
- gint b_active;
- gint i;
-
-
-
- /* cast */
- p_intf = (intf_thread_t *)p_data;
-
- vlc_mutex_lock( &p_intf->p_input->stream.stream_lock );
-
- p_button_group = NULL;
-
- /* menu container for audio */
- p_menu = gtk_menu_new();
-
- /* create a set of language buttons and append them to the container */
- b_active = ( p_es == NULL );
- psz_name = "Off";
-
- p_item = GtkMenuRadioItem( p_menu, &p_button_group, b_active, psz_name );
-
- /* setup signal hanling */
- gtk_signal_connect( GTK_OBJECT( p_item ), "activate",
- GTK_SIGNAL_FUNC ( pf_activate ), NULL );
-
- p_separator = gtk_menu_item_new();
- gtk_widget_show( p_separator );
- gtk_menu_append( GTK_MENU( p_menu ), p_separator );
- gtk_widget_set_sensitive( p_separator, FALSE );
+ intf_thread_t *p_intf;
+
+ p_intf = gtk_object_get_data( GTK_OBJECT( p_adj ), "p_intf" );
- for( i = 0 ; i < p_intf->p_input->stream.i_es_number ; i++ )
+ if( p_intf->p_input != NULL )
{
- if( p_intf->p_input->stream.pp_es[i]->i_cat == i_cat )
- {
- b_active = ( p_es == p_intf->p_input->stream.pp_es[i] ) ? 1 : 0;
- psz_name = p_intf->p_input->stream.pp_es[i]->psz_desc;
-
- p_item = GtkMenuRadioItem( p_menu, &p_button_group,
- b_active, psz_name );
-
- /* setup signal hanling */
- gtk_signal_connect( GTK_OBJECT( p_item ), "activate",
- GTK_SIGNAL_FUNC( pf_activate ),
- (gpointer)( p_intf->p_input->stream.pp_es[i] ) );
-
- }
- }
-
- /* link the new menu to the menubar item */
- gtk_menu_item_set_submenu( GTK_MENU_ITEM( p_root ), p_menu );
+#define p_area p_intf->p_input->stream.p_selected_area
+ char psz_time[ OFFSETTOTIME_MAX_SIZE ];
- /* be sure that menu is sensitive */
- gtk_widget_set_sensitive( p_root, TRUE );
+ vlc_mutex_lock( &p_intf->p_input->stream.stream_lock );
- vlc_mutex_unlock( &p_intf->p_input->stream.stream_lock );
+ gtk_frame_set_label( GTK_FRAME( p_intf->p_sys->p_slider_frame ),
+ input_OffsetToTime( p_intf->p_input, psz_time,
+ ( p_area->i_size * p_adj->value ) / 100 ) );
- return TRUE;
+ vlc_mutex_unlock( &p_intf->p_input->stream.stream_lock );
+#undef p_area
+ }
}
-/*****************************************************************************
- * GtkChapterMenu: generate chapter menu for current title
- *****************************************************************************/
-static gint GtkChapterMenu( gpointer p_data, GtkWidget * p_chapter,
- void(*pf_activate )( GtkMenuItem *, gpointer ) )
-{
- intf_thread_t * p_intf;
- char psz_name[ GTK_MENU_LABEL_SIZE ];
- GtkWidget * p_chapter_menu;
- GtkWidget * p_item;
- GSList * p_chapter_button_group;
- gint i_title;
- gint i_chapter;
- gint b_active;
-
- /* cast */
- p_intf = (intf_thread_t*)p_data;
-
- i_title = p_intf->p_input->stream.p_selected_area->i_id;
- p_chapter_menu = gtk_menu_new();
-
- for( i_chapter = 0;
- i_chapter < p_intf->p_input->stream.pp_areas[i_title]->i_part_nb ;
- i_chapter++ )
- {
- b_active = ( p_intf->p_input->stream.pp_areas[i_title]->i_part
- == i_chapter + 1 ) ? 1 : 0;
-
- snprintf( psz_name, GTK_MENU_LABEL_SIZE,
- "Chapter %d", i_chapter + 1 );
- psz_name[ GTK_MENU_LABEL_SIZE - 1 ] = '\0';
-
- p_item = GtkMenuRadioItem( p_chapter_menu, &p_chapter_button_group,
- b_active, psz_name );
- /* setup signal hanling */
- gtk_signal_connect( GTK_OBJECT( p_item ),
- "activate",
- GTK_SIGNAL_FUNC( pf_activate ),
- (gpointer)(i_chapter + 1) );
- }
-
- /* link the new menu to the title menu item */
- gtk_menu_item_set_submenu( GTK_MENU_ITEM( p_chapter ),
- p_chapter_menu );
-
- /* be sure that chapter menu is sensitive */
- gtk_widget_set_sensitive( p_chapter, TRUE );
-
- return TRUE;
-}
/*****************************************************************************
- * GtkTitleMenu: sets menus for titles and chapters selection
- *****************************************************************************
- * Generates two type of menus:
- * -simple list of titles
- * -cascaded lists of chapters for each title
+ * GtkModeManage
*****************************************************************************/
-static gint GtkTitleMenu( gpointer p_data,
- GtkWidget * p_navigation,
- void(*pf_activate )( GtkMenuItem *, gpointer ) )
+static gint GtkModeManage( intf_thread_t * p_intf )
{
- intf_thread_t * p_intf;
- char psz_name[ GTK_MENU_LABEL_SIZE ];
- GtkWidget * p_title_menu;
- GtkWidget * p_title_item;
- GtkWidget * p_chapter_menu;
- GtkWidget * p_item;
- GSList * p_title_button_group;
- GSList * p_chapter_button_group;
- gint i_title;
- gint i_chapter;
- gint b_active;
-
- /* cast */
- p_intf = (intf_thread_t*)p_data;
-
- p_title_menu = gtk_menu_new();
- p_title_button_group = NULL;
- p_chapter_button_group = NULL;
-
- /* loop on titles */
- for( i_title = 1 ;
- i_title < p_intf->p_input->stream.i_area_nb ;
- i_title++ )
+ GtkWidget * p_dvd_box;
+ GtkWidget * p_file_box;
+ GtkWidget * p_network_box;
+ GtkWidget * p_slider;
+ GtkWidget * p_label;
+ boolean_t b_control;
+
+#define GETWIDGET( ptr, name ) GTK_WIDGET( gtk_object_get_data( GTK_OBJECT( \
+ p_intf->p_sys->ptr ) , ( name ) ) )
+ /* hide all boxes except default file box */
+ p_file_box = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_window ), "file_box" ) );
+ gtk_widget_hide( GTK_WIDGET( p_file_box ) );
+
+ p_network_box = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_window ), "network_box" ) );
+ gtk_widget_hide( GTK_WIDGET( p_network_box ) );
+
+ p_dvd_box = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_window ), "dvd_box" ) );
+ gtk_widget_hide( GTK_WIDGET( p_dvd_box ) );
+
+ /* hide slider */
+ p_slider = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_window ), "slider_frame" ) );
+ gtk_widget_hide( GTK_WIDGET( p_slider ) );
+
+ /* controls unavailable */
+ b_control = 0;
+
+ /* show the box related to current input mode */
+ if( p_intf->p_input != NULL )
{
- b_active = ( p_intf->p_input->stream.pp_areas[i_title] ==
- p_intf->p_input->stream.p_selected_area ) ? 1 : 0;
- snprintf( psz_name, GTK_MENU_LABEL_SIZE, "Title %d", i_title );
- psz_name[ GTK_MENU_LABEL_SIZE - 1 ] = '\0';
-
- p_title_item = GtkMenuRadioItem( p_title_menu, &p_title_button_group,
- b_active, psz_name );
-
- if( pf_activate == on_menubar_title_activate )
+ switch( p_intf->p_input->stream.i_method & 0xf0 )
{
- /* setup signal hanling */
- gtk_signal_connect( GTK_OBJECT( p_title_item ),
- "activate",
- GTK_SIGNAL_FUNC( pf_activate ),
- (gpointer)(p_intf->p_input->stream.pp_areas[i_title]) );
+ case INPUT_METHOD_FILE:
+ gtk_widget_show( GTK_WIDGET( p_file_box ) );
+ p_label = gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_window ),
+ "label_status" );
+ gtk_label_set_text( GTK_LABEL( p_label ),
+ p_intf->p_input->p_source );
+ break;
+ case INPUT_METHOD_DISC:
+ gtk_widget_show( GTK_WIDGET( p_dvd_box ) );
+ break;
+ case INPUT_METHOD_NETWORK:
+ gtk_widget_show( GTK_WIDGET( p_network_box ) );
+ p_label = gtk_object_get_data( GTK_OBJECT(
+ p_intf->p_sys->p_window ),
+ "network_address_label" );
+ gtk_label_set_text( GTK_LABEL( p_label ),
+ p_intf->p_input->p_source );
+ break;
+ default:
+ intf_ErrMsg( "intf error: can't determine input method" );
+ break;
}
- else
- {
- p_chapter_menu = gtk_menu_new();
- for( i_chapter = 0;
- i_chapter <
- p_intf->p_input->stream.pp_areas[i_title]->i_part_nb ;
- i_chapter++ )
- {
- b_active = ( p_intf->p_input->stream.pp_areas[i_title]->i_part
- == i_chapter + 1 ) ? 1 : 0;
-
- snprintf( psz_name, GTK_MENU_LABEL_SIZE,
- "Chapter %d", i_chapter + 1 );
- psz_name[ GTK_MENU_LABEL_SIZE - 1 ] = '\0';
+ /* slider for seekable streams */
+ if( p_intf->p_input->stream.b_seekable )
+ {
+ gtk_widget_show( GTK_WIDGET( p_slider ) );
+ }
- p_item = GtkMenuRadioItem( p_chapter_menu,
- &p_chapter_button_group,
- b_active, psz_name );
+ /* control buttons for free pace streams */
+ b_control = p_intf->p_input->stream.b_pace_control;
+
+ /* get ready for menu regeneration */
+ p_intf->p_sys->b_title_update = 1;
+ p_intf->p_sys->b_chapter_update = 1;
+ p_intf->p_sys->b_angle_update = 1;
+ p_intf->p_sys->b_audio_update = 1;
+ p_intf->p_sys->b_spu_update = 1;
+ p_intf->p_sys->i_part = 0;
- /* setup signal hanling */
- gtk_signal_connect( GTK_OBJECT( p_item ),
- "activate",
- GTK_SIGNAL_FUNC( pf_activate ),
- (gpointer)( ( i_title * 100 ) + ( i_chapter + 1) ) );
- }
-
- /* link the new menu to the title menu item */
- gtk_menu_item_set_submenu( GTK_MENU_ITEM( p_title_item ),
- p_chapter_menu );
- }
-
- /* be sure that chapter menu is sensitive */
- gtk_widget_set_sensitive( p_title_menu, TRUE );
-
+ p_intf->p_input->stream.b_changed = 0;
+ intf_WarnMsg( 3,
+ "intf info: menus refreshed as stream has changed" );
}
-
- /* link the new menu to the menubar audio item */
- gtk_menu_item_set_submenu( GTK_MENU_ITEM( p_navigation ), p_title_menu );
-
- /* be sure that audio menu is sensitive */
- gtk_widget_set_sensitive( p_navigation, TRUE );
-
-
- return TRUE;
-}
-
-void GtkDisplayDate( GtkAdjustment *p_adj )
-{
- intf_thread_t *p_intf;
-
- p_intf = gtk_object_get_data( GTK_OBJECT( p_adj ), "p_intf" );
-
- if( p_intf->p_input != NULL )
+ else
{
-#define p_area p_intf->p_input->stream.p_selected_area
- char psz_time[ OFFSETTOTIME_MAX_SIZE ];
-
- vlc_mutex_lock( &p_intf->p_input->stream.stream_lock );
-
- gtk_frame_set_label( p_intf->p_sys->p_slider_frame,
- input_OffsetToTime( p_intf->p_input, psz_time,
- ( p_area->i_size * p_adj->value ) / 100 ) );
+ 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 ) );
+ }
- vlc_mutex_unlock( &p_intf->p_input->stream.stream_lock );
-#undef p_area
- }
+ /* set control items */
+ gtk_widget_set_sensitive( GETWIDGET(p_window, "toolbar_back"), FALSE );
+ gtk_widget_set_sensitive( GETWIDGET(p_window, "toolbar_stop"), b_control );
+ gtk_widget_set_sensitive( GETWIDGET(p_window, "toolbar_pause"), b_control );
+ gtk_widget_set_sensitive( GETWIDGET(p_window, "toolbar_slow"), b_control );
+ gtk_widget_set_sensitive( GETWIDGET(p_window, "toolbar_fast"), b_control );
+ gtk_widget_set_sensitive( GETWIDGET(p_popup, "popup_back"), FALSE );
+ gtk_widget_set_sensitive( GETWIDGET(p_popup, "popup_stop"), b_control );
+ gtk_widget_set_sensitive( GETWIDGET(p_popup, "popup_pause"), b_control );
+ gtk_widget_set_sensitive( GETWIDGET(p_popup, "popup_slow"), b_control );
+ gtk_widget_set_sensitive( GETWIDGET(p_popup, "popup_fast"), b_control );
+
+#undef GETWIDGET
+ return TRUE;
}
-
-
<name>intf_window</name>
<signal>
<name>drag_data_received</name>
- <handler>on_intf_window_drag_data_received</handler>
- <last_modification_time>Fri, 16 Feb 2001 01:59:35 GMT</last_modification_time>
+ <handler>GtkWindowDrag</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 17:09:36 GMT</last_modification_time>
</signal>
<signal>
<name>delete_event</name>
- <handler>on_intf_window_destroy</handler>
- <last_modification_time>Thu, 08 Mar 2001 10:33:41 GMT</last_modification_time>
+ <handler>GtkWindowDelete</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 17:09:48 GMT</last_modification_time>
</signal>
<title>VideoLAN Client</title>
<type>GTK_WINDOW_TOPLEVEL</type>
<position>GTK_WIN_POS_NONE</position>
<modal>False</modal>
- <allow_shrink>False</allow_shrink>
+ <allow_shrink>True</allow_shrink>
<allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
+ <auto_shrink>True</auto_shrink>
<widget>
<class>GtkVBox</class>
<child_name>GnomeDock:contents</child_name>
- <name>vbox2</name>
+ <name>window_vbox</name>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<widget>
<class>GtkHandleBox</class>
- <name>handlebox2</name>
+ <name>menubar_handlebox</name>
<shadow_type>GTK_SHADOW_OUT</shadow_type>
<handle_position>GTK_POS_LEFT</handle_position>
<snap_edge>GTK_POS_TOP</snap_edge>
<widget>
<class>GtkMenuBar</class>
- <name>menubar1</name>
+ <name>menubar</name>
<shadow_type>GTK_SHADOW_OUT</shadow_type>
<widget>
</accelerator>
<signal>
<name>activate</name>
- <handler>on_menubar_open_activate</handler>
- <last_modification_time>Sun, 04 Mar 2001 21:00:32 GMT</last_modification_time>
+ <handler>GtkFileOpenActivate</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Mon, 14 May 2001 21:27:36 GMT</last_modification_time>
</signal>
<label>_Open File...</label>
<right_justify>False</right_justify>
</accelerator>
<signal>
<name>activate</name>
- <handler>on_menubar_disc_activate</handler>
- <last_modification_time>Sun, 04 Mar 2001 02:53:25 GMT</last_modification_time>
+ <handler>GtkDiscOpenActivate</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Mon, 14 May 2001 21:27:47 GMT</last_modification_time>
</signal>
<label>Open _Disc...</label>
<right_justify>False</right_justify>
</accelerator>
<signal>
<name>activate</name>
- <handler>on_menubar_network_activate</handler>
- <last_modification_time>Mon, 12 Mar 2001 21:55:15 GMT</last_modification_time>
+ <handler>GtkNetworkOpenActivate</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Mon, 14 May 2001 21:28:06 GMT</last_modification_time>
</signal>
<label>_Network Stream...</label>
<right_justify>False</right_justify>
</accelerator>
<signal>
<name>activate</name>
- <handler>on_menubar_exit_activate</handler>
- <last_modification_time>Wed, 21 Feb 2001 08:29:47 GMT</last_modification_time>
+ <handler>GtkExitActivate</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Mon, 14 May 2001 21:28:20 GMT</last_modification_time>
</signal>
<label>E_xit</label>
<right_justify>False</right_justify>
<class>GtkMenu</class>
<name>menubar_view_menu</name>
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>menubar_interface_hide</name>
+ <tooltip>Hide the main interface window</tooltip>
+ <signal>
+ <name>activate</name>
+ <handler>GtkWindowToggleActivate</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Mon, 14 May 2001 21:32:49 GMT</last_modification_time>
+ </signal>
+ <label>_Hide interface</label>
+ <right_justify>False</right_justify>
+ </widget>
+
<widget>
<class>GtkCheckMenuItem</class>
<name>menubar_fullscreen</name>
<signal>
<name>activate</name>
- <handler>on_menubar_fullscreen_activate</handler>
- <last_modification_time>Tue, 01 May 2001 04:08:56 GMT</last_modification_time>
+ <handler>GtkFullscreenActivate</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Mon, 14 May 2001 21:29:21 GMT</last_modification_time>
</signal>
<label>_Fullscreen</label>
<active>False</active>
<widget>
<class>GtkMenuItem</class>
<name>menubar_angle</name>
- <signal>
- <name>activate</name>
- <handler>on_menubar_angle_activate</handler>
- <last_modification_time>Tue, 01 May 2001 04:10:28 GMT</last_modification_time>
- </signal>
+ <sensitive>False</sensitive>
<label>An_gle</label>
<right_justify>False</right_justify>
</widget>
<tooltip>Open the playlist window</tooltip>
<signal>
<name>activate</name>
- <handler>on_menubar_playlist_activate</handler>
- <last_modification_time>Wed, 21 Feb 2001 08:35:16 GMT</last_modification_time>
+ <handler>GtkPlaylistActivate</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Mon, 14 May 2001 21:29:34 GMT</last_modification_time>
</signal>
<label>_Playlist...</label>
<right_justify>False</right_justify>
<tooltip>Open the plugin manager</tooltip>
<signal>
<name>activate</name>
- <handler>on_menubar_modules_activate</handler>
- <last_modification_time>Wed, 21 Feb 2001 08:35:16 GMT</last_modification_time>
+ <handler>GtkModulesActivate</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Mon, 14 May 2001 21:29:44 GMT</last_modification_time>
</signal>
<label>_Modules...</label>
<right_justify>False</right_justify>
<class>GtkMenu</class>
<name>menubar_settings_menu</name>
- <widget>
- <class>GtkMenuItem</class>
- <name>separator7</name>
- <right_justify>False</right_justify>
- </widget>
-
<widget>
<class>GtkMenuItem</class>
<name>menubar_audio</name>
<widget>
<class>GtkMenuItem</class>
<name>menubar_preferences</name>
- <sensitive>False</sensitive>
<tooltip>Configure the application</tooltip>
<signal>
<name>activate</name>
- <handler>on_menubar_preferences_activate</handler>
- <last_modification_time>Wed, 21 Feb 2001 08:39:39 GMT</last_modification_time>
+ <handler>GtkPreferencesActivate</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Mon, 14 May 2001 21:30:02 GMT</last_modification_time>
</signal>
<label>_Preferences...</label>
<right_justify>False</right_justify>
<tooltip>About this application</tooltip>
<signal>
<name>activate</name>
- <handler>on_menubar_about_activate</handler>
- <last_modification_time>Wed, 21 Feb 2001 08:39:39 GMT</last_modification_time>
+ <handler>GtkAboutActivate</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Mon, 14 May 2001 21:30:15 GMT</last_modification_time>
</signal>
<label>_About...</label>
<right_justify>False</right_justify>
<widget>
<class>GtkHandleBox</class>
- <name>handlebox1</name>
+ <name>toolbar_handlebox</name>
<shadow_type>GTK_SHADOW_OUT</shadow_type>
<handle_position>GTK_POS_LEFT</handle_position>
<snap_edge>GTK_POS_TOP</snap_edge>
<name>toolbar_open</name>
<tooltip>Open a File</tooltip>
<signal>
- <name>clicked</name>
- <handler>on_toolbar_open_clicked</handler>
- <last_modification_time>Sun, 04 Mar 2001 21:01:03 GMT</last_modification_time>
+ <name>button_press_event</name>
+ <handler>GtkFileOpenShow</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 15:10:21 GMT</last_modification_time>
</signal>
<label>File</label>
</widget>
<name>toolbar_disc</name>
<tooltip>Open a DVD or VCD</tooltip>
<signal>
- <name>clicked</name>
- <handler>on_toolbar_disc_clicked</handler>
- <last_modification_time>Sun, 04 Mar 2001 02:55:35 GMT</last_modification_time>
+ <name>button_press_event</name>
+ <handler>GtkDiscOpenShow</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 15:10:30 GMT</last_modification_time>
</signal>
<label>Disc</label>
</widget>
<name>toolbar_network</name>
<tooltip>Select a Network Stream</tooltip>
<signal>
- <name>clicked</name>
- <handler>on_toolbar_network_clicked</handler>
- <last_modification_time>Sun, 04 Mar 2001 02:55:35 GMT</last_modification_time>
+ <name>button_press_event</name>
+ <handler>GtkNetworkOpenShow</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 15:10:37 GMT</last_modification_time>
</signal>
<label>Net</label>
</widget>
<sensitive>False</sensitive>
<tooltip>Go Backwards</tooltip>
<signal>
- <name>clicked</name>
- <handler>on_toolbar_back_clicked</handler>
- <last_modification_time>Sun, 11 Feb 2001 17:06:28 GMT</last_modification_time>
+ <name>button_press_event</name>
+ <handler>GtkControlBack</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 15:10:47 GMT</last_modification_time>
</signal>
<label>Back</label>
<child>
<sensitive>False</sensitive>
<tooltip>Stop Stream</tooltip>
<signal>
- <name>clicked</name>
- <handler>on_toolbar_stop_clicked</handler>
- <last_modification_time>Sun, 11 Feb 2001 17:06:33 GMT</last_modification_time>
+ <name>button_press_event</name>
+ <handler>GtkControlStop</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 15:10:57 GMT</last_modification_time>
</signal>
<label>Stop</label>
</widget>
<name>toolbar_play</name>
<tooltip>Play Stream</tooltip>
<signal>
- <name>clicked</name>
- <handler>on_toolbar_play_clicked</handler>
- <last_modification_time>Sun, 11 Feb 2001 17:06:39 GMT</last_modification_time>
+ <name>button_press_event</name>
+ <handler>GtkControlPlay</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 15:11:06 GMT</last_modification_time>
</signal>
<label>Play</label>
</widget>
<class>GtkButton</class>
<child_name>Toolbar:button</child_name>
<name>toolbar_pause</name>
+ <sensitive>False</sensitive>
<tooltip>Pause Stream</tooltip>
<signal>
- <name>clicked</name>
- <handler>on_toolbar_pause_clicked</handler>
- <last_modification_time>Sun, 11 Feb 2001 17:06:43 GMT</last_modification_time>
+ <name>button_press_event</name>
+ <handler>GtkControlPause</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 15:11:13 GMT</last_modification_time>
</signal>
<label>Pause</label>
</widget>
<class>GtkButton</class>
<child_name>Toolbar:button</child_name>
<name>toolbar_slow</name>
+ <sensitive>False</sensitive>
<tooltip>Play Slower</tooltip>
<signal>
- <name>clicked</name>
- <handler>on_toolbar_slow_clicked</handler>
- <last_modification_time>Mon, 12 Feb 2001 07:20:42 GMT</last_modification_time>
+ <name>button_press_event</name>
+ <handler>GtkControlSlow</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 15:11:20 GMT</last_modification_time>
</signal>
<label>Slow</label>
</widget>
<class>GtkButton</class>
<child_name>Toolbar:button</child_name>
<name>toolbar_fast</name>
+ <sensitive>False</sensitive>
<tooltip>Play Faster</tooltip>
<signal>
- <name>clicked</name>
- <handler>on_toolbar_fast_clicked</handler>
- <last_modification_time>Mon, 12 Feb 2001 07:20:48 GMT</last_modification_time>
+ <name>button_press_event</name>
+ <handler>GtkControlFast</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 15:11:31 GMT</last_modification_time>
</signal>
<label>Fast</label>
</widget>
<name>toolbar_playlist</name>
<tooltip>Open Playlist</tooltip>
<signal>
- <name>clicked</name>
- <handler>on_toolbar_playlist_clicked</handler>
- <last_modification_time>Sun, 11 Feb 2001 17:06:48 GMT</last_modification_time>
+ <name>button_press_event</name>
+ <handler>GtkPlaylistShow</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 15:11:38 GMT</last_modification_time>
</signal>
<label>Playlist</label>
<child>
<name>toolbar_prev</name>
<tooltip>Previous File</tooltip>
<signal>
- <name>clicked</name>
- <handler>on_toolbar_prev_clicked</handler>
- <last_modification_time>Sun, 11 Feb 2001 17:06:52 GMT</last_modification_time>
+ <name>button_press_event</name>
+ <handler>GtkPlaylistPrev</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 15:11:45 GMT</last_modification_time>
</signal>
<label>Prev</label>
</widget>
<name>toolbar_next</name>
<tooltip>Next File</tooltip>
<signal>
- <name>clicked</name>
- <handler>on_toolbar_next_clicked</handler>
- <last_modification_time>Sun, 11 Feb 2001 17:06:56 GMT</last_modification_time>
+ <name>button_press_event</name>
+ <handler>GtkPlaylistNext</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 15:11:58 GMT</last_modification_time>
</signal>
<label>Next</label>
</widget>
</widget>
<widget>
- <class>GtkHandleBox</class>
- <name>handlebox3</name>
- <shadow_type>GTK_SHADOW_OUT</shadow_type>
- <handle_position>GTK_POS_LEFT</handle_position>
- <snap_edge>GTK_POS_TOP</snap_edge>
+ <class>GtkFrame</class>
+ <name>slider_frame</name>
+ <visible>False</visible>
+ <label>-:--:--</label>
+ <label_xalign>0.05</label_xalign>
+ <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
<child>
<padding>0</padding>
<expand>True</expand>
</child>
<widget>
- <class>GtkFrame</class>
- <name>slider_frame</name>
- <visible>False</visible>
- <label>-:--:--</label>
- <label_xalign>0.05</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
-
- <widget>
- <class>GtkHScale</class>
- <name>slider</name>
- <can_focus>True</can_focus>
- <signal>
- <name>button_release_event</name>
- <handler>on_slider_button_release_event</handler>
- <last_modification_time>Wed, 14 Mar 2001 15:58:36 GMT</last_modification_time>
- </signal>
- <signal>
- <name>button_press_event</name>
- <handler>on_slider_button_press_event</handler>
- <last_modification_time>Wed, 14 Mar 2001 15:58:42 GMT</last_modification_time>
- </signal>
- <draw_value>False</draw_value>
- <value_pos>GTK_POS_TOP</value_pos>
- <digits>3</digits>
- <policy>GTK_UPDATE_CONTINUOUS</policy>
- <value>0</value>
- <lower>0</lower>
- <upper>100</upper>
- <step>1</step>
- <page>6.25</page>
- <page_size>0</page_size>
- </widget>
+ <class>GtkHScale</class>
+ <name>slider</name>
+ <width>500</width>
+ <height>15</height>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>button_release_event</name>
+ <handler>GtkSliderRelease</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 14:40:22 GMT</last_modification_time>
+ </signal>
+ <signal>
+ <name>button_press_event</name>
+ <handler>GtkSliderPress</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 14:40:38 GMT</last_modification_time>
+ </signal>
+ <draw_value>False</draw_value>
+ <value_pos>GTK_POS_TOP</value_pos>
+ <digits>3</digits>
+ <policy>GTK_UPDATE_CONTINUOUS</policy>
+ <value>0</value>
+ <lower>0</lower>
+ <upper>100</upper>
+ <step>1</step>
+ <page>6.25</page>
+ <page_size>0</page_size>
</widget>
</widget>
<widget>
- <class>Placeholder</class>
- </widget>
-
- <widget>
- <class>Placeholder</class>
- </widget>
+ <class>GtkHBox</class>
+ <name>file_box</name>
+ <width>500</width>
+ <height>24</height>
+ <homogeneous>False</homogeneous>
+ <spacing>0</spacing>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
- <widget>
- <class>Placeholder</class>
+ <widget>
+ <class>GtkLabel</class>
+ <name>label_status</name>
+ <label></label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
+ </widget>
</widget>
<widget>
- <class>GtkStatusbar</class>
- <name>intf_statusbar</name>
+ <class>GtkHBox</class>
+ <name>dvd_box</name>
+ <width>500</width>
+ <height>24</height>
+ <visible>False</visible>
+ <homogeneous>False</homogeneous>
+ <spacing>0</spacing>
<child>
<padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
+ <expand>True</expand>
+ <fill>True</fill>
</child>
- </widget>
- </widget>
-</widget>
-<widget>
- <class>GtkMenu</class>
- <name>intf_popup</name>
+ <widget>
+ <class>GtkLabel</class>
+ <name>dvd_label</name>
+ <label>DVD</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>False</fill>
+ </child>
+ </widget>
- <widget>
- <class>GtkMenuItem</class>
- <name>popup_play</name>
- <signal>
- <name>activate</name>
- <handler>on_popup_play_activate</handler>
- <last_modification_time>Wed, 21 Feb 2001 08:31:57 GMT</last_modification_time>
- </signal>
- <label>_Play</label>
- <right_justify>False</right_justify>
- </widget>
+ <widget>
+ <class>GtkHBox</class>
+ <name>title_box</name>
+ <homogeneous>False</homogeneous>
+ <spacing>0</spacing>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
- <widget>
- <class>GtkMenuItem</class>
- <name>popup_pause</name>
- <signal>
- <name>activate</name>
- <handler>on_popup_pause_activate</handler>
- <last_modification_time>Wed, 21 Feb 2001 08:41:04 GMT</last_modification_time>
- </signal>
- <label>Pause</label>
- <right_justify>False</right_justify>
- </widget>
+ <widget>
+ <class>GtkLabel</class>
+ <name>title</name>
+ <label>Title: </label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <padding>5</padding>
+ <expand>False</expand>
+ <fill>False</fill>
+ </child>
+ </widget>
- <widget>
- <class>GtkMenuItem</class>
- <name>popup_slow</name>
- <signal>
- <name>activate</name>
- <handler>on_popup_slow_activate</handler>
- <last_modification_time>Wed, 21 Feb 2001 08:41:04 GMT</last_modification_time>
- </signal>
- <label>Slow</label>
- <right_justify>False</right_justify>
- </widget>
+ <widget>
+ <class>GtkLabel</class>
+ <name>title_label</name>
+ <label>--</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <padding>5</padding>
+ <expand>False</expand>
+ <fill>False</fill>
+ </child>
+ </widget>
- <widget>
- <class>GtkMenuItem</class>
- <name>popup_fast</name>
- <signal>
- <name>activate</name>
- <handler>on_popup_fast_activate</handler>
- <last_modification_time>Wed, 21 Feb 2001 08:41:04 GMT</last_modification_time>
- </signal>
- <label>Fast</label>
- <right_justify>False</right_justify>
- </widget>
+ <widget>
+ <class>GtkButton</class>
+ <name>title_prev_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>clicked</name>
+ <handler>GtkTitlePrev</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 14:41:41 GMT</last_modification_time>
+ </signal>
+ <label>Prev</label>
+ <relief>GTK_RELIEF_NONE</relief>
+ <child>
+ <padding>5</padding>
+ <expand>False</expand>
+ <fill>False</fill>
+ </child>
+ </widget>
- <widget>
- <class>GtkMenuItem</class>
- <name>separator6</name>
- <right_justify>False</right_justify>
- </widget>
+ <widget>
+ <class>GtkButton</class>
+ <name>title_next_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>clicked</name>
+ <handler>GtkTitleNext</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 14:42:00 GMT</last_modification_time>
+ </signal>
+ <label>Next</label>
+ <relief>GTK_RELIEF_NONE</relief>
+ <child>
+ <padding>5</padding>
+ <expand>False</expand>
+ <fill>False</fill>
+ </child>
+ </widget>
+ </widget>
- <widget>
- <class>GtkMenuItem</class>
- <name>main_window_toggle</name>
- <signal>
- <name>activate</name>
- <handler>on_main_window_toggle</handler>
- <last_modification_time>Thu, 08 Mar 2001 10:37:08 GMT</last_modification_time>
- </signal>
- <label>Toggle _Interface</label>
- <right_justify>False</right_justify>
- </widget>
+ <widget>
+ <class>GtkVSeparator</class>
+ <name>dvd_separator</name>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
+ </widget>
- <widget>
- <class>GtkMenuItem</class>
- <name>separator5</name>
- <right_justify>False</right_justify>
- </widget>
+ <widget>
+ <class>GtkHBox</class>
+ <name>chapter_box</name>
+ <homogeneous>False</homogeneous>
+ <spacing>0</spacing>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
- <widget>
- <class>GtkMenuItem</class>
- <name>popup_navigation</name>
+ <widget>
+ <class>GtkLabel</class>
+ <name>chapter</name>
+ <label>Chapter: </label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <padding>5</padding>
+ <expand>False</expand>
+ <fill>False</fill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>chapter_label</name>
+ <label>---</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <padding>5</padding>
+ <expand>False</expand>
+ <fill>False</fill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkButton</class>
+ <name>chapter_prev_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>clicked</name>
+ <handler>GtkChapterPrev</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 14:42:25 GMT</last_modification_time>
+ </signal>
+ <label>Prev</label>
+ <relief>GTK_RELIEF_NONE</relief>
+ <child>
+ <padding>5</padding>
+ <expand>False</expand>
+ <fill>False</fill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkButton</class>
+ <name>chapter_next_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>clicked</name>
+ <handler>GtkChapterNext</handler>
+ <data>"intf_window"</data>
+ <last_modification_time>Sun, 13 May 2001 14:42:42 GMT</last_modification_time>
+ </signal>
+ <label>Next</label>
+ <relief>GTK_RELIEF_NONE</relief>
+ <child>
+ <padding>5</padding>
+ <expand>False</expand>
+ <fill>False</fill>
+ </child>
+ </widget>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkHBox</class>
+ <name>network_box</name>
+ <width>500</width>
+ <height>24</height>
+ <visible>False</visible>
+ <homogeneous>False</homogeneous>
+ <spacing>0</spacing>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>network_address</name>
+ <label>No server !</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkHBox</class>
+ <name>network_channel_box</name>
+ <homogeneous>False</homogeneous>
+ <spacing>0</spacing>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>False</fill>
+ </child>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>channel_label</name>
+ <label>Channel: </label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <padding>5</padding>
+ <expand>False</expand>
+ <fill>False</fill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkSpinButton</class>
+ <name>channel_spinbutton</name>
+ <can_focus>True</can_focus>
+ <climb_rate>1</climb_rate>
+ <digits>0</digits>
+ <numeric>False</numeric>
+ <update_policy>GTK_UPDATE_ALWAYS</update_policy>
+ <snap>False</snap>
+ <wrap>False</wrap>
+ <value>1</value>
+ <lower>0</lower>
+ <upper>100</upper>
+ <step>1</step>
+ <page>10</page>
+ <page_size>10</page_size>
+ <child>
+ <padding>0</padding>
+ <expand>False</expand>
+ <fill>True</fill>
+ </child>
+ </widget>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkStatusbar</class>
+ <name>intf_statusbar</name>
+ <width>500</width>
+ <child>
+ <padding>0</padding>
+ <expand>False</expand>
+ <fill>False</fill>
+ </child>
+ </widget>
+ </widget>
+</widget>
+
+<widget>
+ <class>GtkMenu</class>
+ <name>intf_popup</name>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>popup_play</name>
+ <signal>
+ <name>activate</name>
+ <handler>GtkPlayActivate</handler>
+ <data>"intf_popup"</data>
+ <last_modification_time>Mon, 14 May 2001 21:30:37 GMT</last_modification_time>
+ </signal>
+ <label>_Play</label>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>popup_pause</name>
+ <sensitive>False</sensitive>
+ <signal>
+ <name>activate</name>
+ <handler>GtkPauseActivate</handler>
+ <data>"intf_popup"</data>
+ <last_modification_time>Mon, 14 May 2001 21:30:47 GMT</last_modification_time>
+ </signal>
+ <label>Pause</label>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>popup_stop</name>
+ <sensitive>False</sensitive>
+ <signal>
+ <name>activate</name>
+ <handler>GtKStopActivate</handler>
+ <data>"intf_popup"</data>
+ <last_modification_time>Mon, 14 May 2001 21:31:03 GMT</last_modification_time>
+ </signal>
+ <label>Stop</label>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>popup_back</name>
+ <sensitive>False</sensitive>
+ <signal>
+ <name>activate</name>
+ <handler>GtkBackActivate</handler>
+ <data>"intf_popup"</data>
+ <last_modification_time>Mon, 14 May 2001 21:31:13 GMT</last_modification_time>
+ </signal>
+ <label>Back</label>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>popup_slow</name>
+ <sensitive>False</sensitive>
+ <signal>
+ <name>activate</name>
+ <handler>GtkSlowActivate</handler>
+ <data>"intf_popup"</data>
+ <last_modification_time>Mon, 14 May 2001 21:31:22 GMT</last_modification_time>
+ </signal>
+ <label>Slow</label>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>popup_fast</name>
+ <sensitive>False</sensitive>
+ <signal>
+ <name>activate</name>
+ <handler>GtkFastActivate</handler>
+ <data>"intf_popup"</data>
+ <last_modification_time>Mon, 14 May 2001 21:31:33 GMT</last_modification_time>
+ </signal>
+ <label>Fast</label>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>separator6</name>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkCheckMenuItem</class>
+ <name>popup_interface_toggle</name>
+ <signal>
+ <name>activate</name>
+ <handler>GtkWindowToggleActivate</handler>
+ <data>"intf_popup"</data>
+ <last_modification_time>Mon, 14 May 2001 21:32:18 GMT</last_modification_time>
+ </signal>
+ <label>Toggle _Interface</label>
+ <active>True</active>
+ <always_show_toggle>True</always_show_toggle>
+ </widget>
+
+ <widget>
+ <class>GtkCheckMenuItem</class>
+ <name>popup_fullscreen</name>
+ <signal>
+ <name>activate</name>
+ <handler>GtkFullscreenActivate</handler>
+ <data>"intf_popup"</data>
+ <last_modification_time>Mon, 14 May 2001 21:32:30 GMT</last_modification_time>
+ </signal>
+ <label>_Fullscreen</label>
+ <active>False</active>
+ <always_show_toggle>True</always_show_toggle>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>separator5</name>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>popup_next</name>
+ <signal>
+ <name>activate</name>
+ <handler>GtkNextActivate</handler>
+ <data>"intf_popup"</data>
+ <last_modification_time>Mon, 14 May 2001 21:33:12 GMT</last_modification_time>
+ </signal>
+ <label>Next</label>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>popup_prev</name>
+ <signal>
+ <name>activate</name>
+ <handler>GtkPrevActivate</handler>
+ <data>"intf_popup"</data>
+ <last_modification_time>Mon, 14 May 2001 21:33:25 GMT</last_modification_time>
+ </signal>
+ <label>Prev</label>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>popup_jump</name>
+ <signal>
+ <name>activate</name>
+ <handler>GtkJumpActivate</handler>
+ <data>"intf_popup"</data>
+ <last_modification_time>Mon, 14 May 2001 21:33:37 GMT</last_modification_time>
+ </signal>
+ <label>_Jump...</label>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>popup_navigation</name>
<sensitive>False</sensitive>
<label>_Navigation</label>
<right_justify>False</right_justify>
</widget>
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>popup_angle</name>
+ <sensitive>False</sensitive>
+ <label>An_gle</label>
+ <right_justify>False</right_justify>
+ </widget>
+
<widget>
<class>GtkMenuItem</class>
<name>popup_audio</name>
<widget>
<class>GtkMenuItem</class>
- <name>popup_file</name>
+ <name>popup_open</name>
<label>_File</label>
<right_justify>False</right_justify>
<widget>
<class>GtkMenu</class>
- <name>popup_file_menu</name>
+ <name>popup_open_menu</name>
<widget>
<class>GtkMenuItem</class>
- <name>popup_open</name>
+ <name>popup_file</name>
<tooltip>Open a File</tooltip>
<signal>
<name>activate</name>
- <handler>on_popup_open_activate</handler>
- <last_modification_time>Sun, 04 Mar 2001 21:00:48 GMT</last_modification_time>
+ <handler>GtkFileOpenActivate</handler>
+ <data>"intf_popup"</data>
+ <last_modification_time>Mon, 14 May 2001 21:33:55 GMT</last_modification_time>
</signal>
<label>_Open File...</label>
<right_justify>False</right_justify>
<tooltip>Open a DVD or VCD</tooltip>
<signal>
<name>activate</name>
- <handler>on_popup_disc_activate</handler>
- <last_modification_time>Sun, 04 Mar 2001 03:04:11 GMT</last_modification_time>
+ <handler>GtkDiscOpenActivate</handler>
+ <data>"intf_popup"</data>
+ <last_modification_time>Mon, 14 May 2001 21:34:09 GMT</last_modification_time>
</signal>
<label>Open _Disc...</label>
<right_justify>False</right_justify>
<tooltip>Select a Network Stream</tooltip>
<signal>
<name>activate</name>
- <handler>on_popup_network_activate</handler>
- <last_modification_time>Mon, 12 Mar 2001 21:57:31 GMT</last_modification_time>
+ <handler>GtkNetworkOpenActivate</handler>
+ <data>"intf_popup"</data>
+ <last_modification_time>Mon, 14 May 2001 21:34:23 GMT</last_modification_time>
</signal>
<label>_Network Stream...</label>
<right_justify>False</right_justify>
<name>popup_about</name>
<signal>
<name>activate</name>
- <handler>on_popup_about_activate</handler>
- <last_modification_time>Wed, 21 Feb 2001 08:41:04 GMT</last_modification_time>
+ <handler>GtkAboutActivate</handler>
+ <data>"intf_popup"</data>
+ <last_modification_time>Mon, 14 May 2001 21:34:54 GMT</last_modification_time>
</signal>
<label>_About...</label>
<right_justify>False</right_justify>
<widget>
<class>GtkMenuItem</class>
- <name>separator9</name>
- <right_justify>False</right_justify>
- </widget>
+ <name>popup_playlist</name>
+ <signal>
+ <name>activate</name>
+ <handler>GtkPlaylistActivate</handler>
+ <data>"intf_popup"</data>
+ <last_modification_time>Mon, 14 May 2001 21:35:07 GMT</last_modification_time>
+ </signal>
+ <label>Playlist...</label>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>popup_preferences</name>
+ <signal>
+ <name>activate</name>
+ <handler>GtkPreferencesActivate</handler>
+ <data>"intf_popup"</data>
+ <last_modification_time>Mon, 14 May 2001 21:35:18 GMT</last_modification_time>
+ </signal>
+ <label>_Preferences...</label>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>separator9</name>
+ <right_justify>False</right_justify>
+ </widget>
<widget>
<class>GtkMenuItem</class>
<name>popup_exit</name>
<signal>
<name>activate</name>
- <handler>on_popup_exit_activate</handler>
- <last_modification_time>Wed, 21 Feb 2001 08:31:57 GMT</last_modification_time>
+ <handler>GtkExitActivate</handler>
+ <data>"intf_popup"</data>
+ <last_modification_time>Mon, 14 May 2001 21:35:31 GMT</last_modification_time>
</signal>
<label>E_xit</label>
<right_justify>False</right_justify>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
- <handler>on_about_ok_clicked</handler>
- <last_modification_time>Wed, 21 Feb 2001 08:51:07 GMT</last_modification_time>
+ <handler>GtkAboutOk</handler>
+ <data>"intf_about"</data>
+ <last_modification_time>Sun, 13 May 2001 14:47:20 GMT</last_modification_time>
</signal>
<label>OK</label>
<relief>GTK_RELIEF_NORMAL</relief>
<class>GtkFileSelection</class>
<name>intf_fileopen</name>
<border_width>10</border_width>
- <signal>
- <name>destroy</name>
- <handler>on_intf_fileopen_destroy</handler>
- <last_modification_time>Wed, 21 Feb 2001 08:53:18 GMT</last_modification_time>
- </signal>
<title>Select File</title>
<type>GTK_WINDOW_TOPLEVEL</type>
<position>GTK_WIN_POS_NONE</position>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
- <handler>on_fileopen_ok_clicked</handler>
- <last_modification_time>Wed, 21 Feb 2001 08:55:12 GMT</last_modification_time>
+ <handler>GtkFileOpenOk</handler>
+ <data>"intf_fileopen"</data>
+ <last_modification_time>Sun, 13 May 2001 14:47:46 GMT</last_modification_time>
</signal>
<label>OK</label>
<relief>GTK_RELIEF_NORMAL</relief>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
- <handler>on_fileopen_cancel_clicked</handler>
- <last_modification_time>Wed, 21 Feb 2001 08:55:06 GMT</last_modification_time>
+ <handler>GtkFileOpenCancel</handler>
+ <data>"intf_fileopen"</data>
+ <last_modification_time>Sun, 13 May 2001 14:47:55 GMT</last_modification_time>
</signal>
<label>Cancel</label>
<relief>GTK_RELIEF_NORMAL</relief>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
- <handler>on_disc_ok_clicked</handler>
- <last_modification_time>Sun, 04 Mar 2001 02:45:24 GMT</last_modification_time>
+ <handler>GtkDiscOpenOk</handler>
+ <data>"intf_disc"</data>
+ <last_modification_time>Sun, 13 May 2001 14:48:09 GMT</last_modification_time>
</signal>
<label>OK</label>
<relief>GTK_RELIEF_NORMAL</relief>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
- <handler>on_disc_cancel_clicked</handler>
- <last_modification_time>Sun, 04 Mar 2001 02:45:45 GMT</last_modification_time>
+ <handler>GtkDiscOpenCancel</handler>
+ <data>"intf_disc"</data>
+ <last_modification_time>Sun, 13 May 2001 14:48:17 GMT</last_modification_time>
</signal>
<label>Cancel</label>
<relief>GTK_RELIEF_NORMAL</relief>
<can_focus>True</can_focus>
<signal>
<name>toggled</name>
- <handler>on_disc_dvd_toggled</handler>
- <last_modification_time>Sun, 04 Mar 2001 02:50:56 GMT</last_modification_time>
+ <handler>GtkDiscOpenDvd</handler>
+ <data>"intf_disc"</data>
+ <last_modification_time>Sun, 13 May 2001 14:48:29 GMT</last_modification_time>
</signal>
<label>DVD</label>
<active>False</active>
<can_focus>True</can_focus>
<signal>
<name>toggled</name>
- <handler>on_disc_vcd_toggled</handler>
- <last_modification_time>Sun, 04 Mar 2001 02:51:00 GMT</last_modification_time>
+ <handler>GtkDiscOpenVcd</handler>
+ <data>"intf_disc"</data>
+ <last_modification_time>Sun, 13 May 2001 14:48:39 GMT</last_modification_time>
</signal>
<label>VCD</label>
<active>False</active>
</widget>
<widget>
- <class>GtkWindow</class>
- <name>intf_playlist</name>
- <signal>
- <name>delete_event</name>
- <handler>on_intf_playlist_destroy_event</handler>
- <last_modification_time>Thu, 08 Mar 2001 10:16:44 GMT</last_modification_time>
- </signal>
- <title>Playlist</title>
+ <class>GtkDialog</class>
+ <name>intf_network</name>
+ <title>Open Network</title>
<type>GTK_WINDOW_TOPLEVEL</type>
<position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <default_width>386</default_width>
- <default_height>200</default_height>
+ <modal>True</modal>
<allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
+ <allow_grow>False</allow_grow>
<auto_shrink>False</auto_shrink>
<widget>
<class>GtkVBox</class>
- <name>vbox6</name>
+ <child_name>Dialog:vbox</child_name>
+ <name>vbox7</name>
+ <border_width>5</border_width>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<widget>
- <class>GtkMenuBar</class>
- <name>menubar2</name>
- <shadow_type>GTK_SHADOW_OUT</shadow_type>
+ <class>GtkHBox</class>
+ <child_name>Dialog:action_area</child_name>
+ <name>hbox4</name>
+ <border_width>5</border_width>
+ <homogeneous>True</homogeneous>
+ <spacing>5</spacing>
<child>
<padding>0</padding>
<expand>False</expand>
- <fill>False</fill>
+ <fill>True</fill>
+ <pack>GTK_PACK_END</pack>
</child>
<widget>
- <class>GtkMenuItem</class>
- <name>add1</name>
- <label>Add</label>
- <right_justify>False</right_justify>
- </widget>
-
- <widget>
- <class>GtkMenuItem</class>
- <name>delete1</name>
- <label>Delete</label>
- <right_justify>False</right_justify>
+ <class>GtkHBox</class>
+ <name>hbox5</name>
+ <homogeneous>True</homogeneous>
+ <spacing>5</spacing>
+ <child>
+ <padding>0</padding>
+ <expand>False</expand>
+ <fill>True</fill>
+ <pack>GTK_PACK_END</pack>
+ </child>
<widget>
- <class>GtkMenu</class>
- <name>delete1_menu</name>
-
- <widget>
- <class>GtkMenuItem</class>
- <name>crop1</name>
- <signal>
- <name>activate</name>
- <handler>on_crop_activate</handler>
- <last_modification_time>Thu, 08 Mar 2001 15:12:17 GMT</last_modification_time>
- </signal>
- <label>_crop</label>
- <right_justify>False</right_justify>
- </widget>
-
- <widget>
- <class>GtkMenuItem</class>
- <name>invert1</name>
- <signal>
- <name>activate</name>
- <handler>on_invertselection_clicked</handler>
- <last_modification_time>Thu, 08 Mar 2001 15:12:17 GMT</last_modification_time>
- </signal>
- <label>_invert</label>
- <right_justify>False</right_justify>
- </widget>
-
- <widget>
- <class>GtkMenuItem</class>
- <name>selection</name>
- <signal>
- <name>activate</name>
- <handler>on_delete_clicked</handler>
- <last_modification_time>Thu, 08 Mar 2001 11:12:03 GMT</last_modification_time>
- </signal>
- <label>_selection</label>
- <right_justify>False</right_justify>
- </widget>
+ <class>GtkButton</class>
+ <name>network_ok</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>clicked</name>
+ <handler>GtkNetworkOpenOk</handler>
+ <data>"intf_network"</data>
+ <last_modification_time>Sun, 13 May 2001 14:49:35 GMT</last_modification_time>
+ </signal>
+ <label>OK</label>
+ <relief>GTK_RELIEF_NORMAL</relief>
+ <child>
+ <padding>0</padding>
+ <expand>False</expand>
+ <fill>True</fill>
+ </child>
</widget>
- </widget>
- <widget>
- <class>GtkMenuItem</class>
- <name>selection1</name>
- <label>Selection</label>
- <right_justify>False</right_justify>
+ <widget>
+ <class>GtkButton</class>
+ <name>network_cancel</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>clicked</name>
+ <handler>GtkNetworkOpenCancel</handler>
+ <data>"intf_network"</data>
+ <last_modification_time>Sun, 13 May 2001 14:49:44 GMT</last_modification_time>
+ </signal>
+ <label>Cancel</label>
+ <relief>GTK_RELIEF_NORMAL</relief>
+ <child>
+ <padding>0</padding>
+ <expand>False</expand>
+ <fill>True</fill>
+ </child>
+ </widget>
</widget>
</widget>
<widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow1</name>
- <hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
+ <class>GtkVBox</class>
+ <name>vbox8</name>
+ <border_width>5</border_width>
+ <homogeneous>False</homogeneous>
+ <spacing>5</spacing>
<child>
<padding>0</padding>
<expand>True</expand>
</child>
<widget>
- <class>GtkCList</class>
- <name>playlist_clist</name>
- <border_width>1</border_width>
- <can_focus>True</can_focus>
- <signal>
- <name>event</name>
- <handler>on_playlist_clist_event</handler>
- <last_modification_time>Thu, 08 Mar 2001 22:18:03 GMT</last_modification_time>
- </signal>
- <signal>
- <name>drag_data_received</name>
- <handler>on_intf_playlist_drag_data_received</handler>
- <last_modification_time>Thu, 08 Mar 2001 12:00:13 GMT</last_modification_time>
- </signal>
- <signal>
- <name>drag_motion</name>
- <handler>on_playlist_clist_drag_motion</handler>
- <last_modification_time>Fri, 09 Mar 2001 18:32:47 GMT</last_modification_time>
- </signal>
- <columns>2</columns>
- <column_widths>257,80</column_widths>
- <selection_mode>GTK_SELECTION_EXTENDED</selection_mode>
- <show_titles>True</show_titles>
- <shadow_type>GTK_SHADOW_OUT</shadow_type>
+ <class>GtkHBox</class>
+ <name>hbox6</name>
+ <homogeneous>False</homogeneous>
+ <spacing>5</spacing>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
<widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>label22</name>
- <label>File</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
+ <class>GtkFrame</class>
+ <name>frame4</name>
+ <label>Protocol</label>
+ <label_xalign>0</label_xalign>
+ <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>label23</name>
- <label>Duration</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
- </widget>
- </widget>
-</widget>
+ <widget>
+ <class>GtkVBox</class>
+ <name>vbox9</name>
+ <homogeneous>False</homogeneous>
+ <spacing>0</spacing>
-<widget>
- <class>GtkDialog</class>
- <name>intf_network</name>
- <signal>
- <name>destroy</name>
- <handler>on_intf_network_destroy</handler>
- <last_modification_time>Mon, 12 Mar 2001 21:45:22 GMT</last_modification_time>
- </signal>
- <title>Open Disc</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>True</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>False</allow_grow>
- <auto_shrink>False</auto_shrink>
+ <widget>
+ <class>GtkRadioButton</class>
+ <name>network_ts</name>
+ <can_focus>True</can_focus>
+ <label>TS</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ <group>network</group>
+ <child>
+ <padding>0</padding>
+ <expand>False</expand>
+ <fill>False</fill>
+ </child>
+ </widget>
- <widget>
- <class>GtkVBox</class>
- <child_name>Dialog:vbox</child_name>
- <name>vbox7</name>
- <border_width>5</border_width>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
+ <widget>
+ <class>GtkRadioButton</class>
+ <name>network_rtp</name>
+ <sensitive>False</sensitive>
+ <can_focus>True</can_focus>
+ <label>RTP</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ <group>network</group>
+ <child>
+ <padding>0</padding>
+ <expand>False</expand>
+ <fill>False</fill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkRadioButton</class>
+ <name>network_http</name>
+ <sensitive>False</sensitive>
+ <can_focus>True</can_focus>
+ <label>HTTP</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ <group>network</group>
+ <child>
+ <padding>0</padding>
+ <expand>False</expand>
+ <fill>False</fill>
+ </child>
+ </widget>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkFrame</class>
+ <name>frame5</name>
+ <label>Server</label>
+ <label_xalign>0</label_xalign>
+ <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
+
+ <widget>
+ <class>GtkTable</class>
+ <name>table2</name>
+ <border_width>5</border_width>
+ <rows>3</rows>
+ <columns>2</columns>
+ <homogeneous>False</homogeneous>
+ <row_spacing>5</row_spacing>
+ <column_spacing>5</column_spacing>
+
+ <widget>
+ <class>GtkSpinButton</class>
+ <name>network_port</name>
+ <can_focus>True</can_focus>
+ <climb_rate>1</climb_rate>
+ <digits>0</digits>
+ <numeric>False</numeric>
+ <update_policy>GTK_UPDATE_ALWAYS</update_policy>
+ <snap>False</snap>
+ <wrap>False</wrap>
+ <value>1234</value>
+ <lower>0</lower>
+ <upper>65535</upper>
+ <step>1</step>
+ <page>10</page>
+ <page_size>10</page_size>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>label24</name>
+ <label>Port</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>label25</name>
+ <label>Address</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkCheckButton</class>
+ <name>broadcast_check</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>toggled</name>
+ <handler>GtkNetworkOpenBroadcast</handler>
+ <data>"intf_network"</data>
+ <last_modification_time>Sun, 13 May 2001 14:52:49 GMT</last_modification_time>
+ </signal>
+ <label>Broadcast</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>2</top_attach>
+ <bottom_attach>3</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkCombo</class>
+ <name>network_broadcast_combo</name>
+ <sensitive>False</sensitive>
+ <value_in_list>False</value_in_list>
+ <ok_if_empty>True</ok_if_empty>
+ <case_sensitive>False</case_sensitive>
+ <use_arrows>True</use_arrows>
+ <use_arrows_always>False</use_arrows_always>
+ <items></items>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>2</top_attach>
+ <bottom_attach>3</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+
+ <widget>
+ <class>GtkEntry</class>
+ <child_name>GtkCombo:entry</child_name>
+ <name>network_broadcast</name>
+ <sensitive>False</sensitive>
+ <can_focus>True</can_focus>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>0</text_max_length>
+ <text></text>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkCombo</class>
+ <name>network_server_combo</name>
+ <value_in_list>False</value_in_list>
+ <ok_if_empty>True</ok_if_empty>
+ <case_sensitive>False</case_sensitive>
+ <use_arrows>True</use_arrows>
+ <use_arrows_always>False</use_arrows_always>
+ <items>vls
+</items>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+
+ <widget>
+ <class>GtkEntry</class>
+ <child_name>GtkCombo:entry</child_name>
+ <name>network_server</name>
+ <can_focus>True</can_focus>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>0</text_max_length>
+ <text>vls</text>
+ </widget>
+ </widget>
+ </widget>
+ </widget>
+ </widget>
+ </widget>
+ </widget>
+</widget>
+
+<widget>
+ <class>GtkDialog</class>
+ <name>intf_jump</name>
+ <title>Jump</title>
+ <type>GTK_WINDOW_TOPLEVEL</type>
+ <position>GTK_WIN_POS_NONE</position>
+ <modal>False</modal>
+ <allow_shrink>True</allow_shrink>
+ <allow_grow>True</allow_grow>
+ <auto_shrink>False</auto_shrink>
+
+ <widget>
+ <class>GtkVBox</class>
+ <child_name>Dialog:vbox</child_name>
+ <name>dialog-vbox3</name>
+ <homogeneous>False</homogeneous>
+ <spacing>0</spacing>
+
+ <widget>
+ <class>GtkHBox</class>
+ <child_name>Dialog:action_area</child_name>
+ <name>dialog-action_area2</name>
+ <border_width>10</border_width>
+ <homogeneous>True</homogeneous>
+ <spacing>5</spacing>
+ <child>
+ <padding>0</padding>
+ <expand>False</expand>
+ <fill>True</fill>
+ <pack>GTK_PACK_END</pack>
+ </child>
+
+ <widget>
+ <class>GtkButton</class>
+ <name>jump_ok_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>clicked</name>
+ <handler>GtkJumpOk</handler>
+ <data>"intf_jump"</data>
+ <last_modification_time>Sun, 13 May 2001 14:53:19 GMT</last_modification_time>
+ </signal>
+ <label>Ok</label>
+ <relief>GTK_RELIEF_NORMAL</relief>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkButton</class>
+ <name>jump_cancel_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>clicked</name>
+ <handler>GtkJumpCancel</handler>
+ <data>"intf_jump"</data>
+ <last_modification_time>Sun, 13 May 2001 14:53:43 GMT</last_modification_time>
+ </signal>
+ <label>Cancel</label>
+ <relief>GTK_RELIEF_NORMAL</relief>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkFrame</class>
+ <name>jump_frame</name>
+ <border_width>5</border_width>
+ <label>Go to:</label>
+ <label_xalign>0.05</label_xalign>
+ <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
+
+ <widget>
+ <class>GtkHBox</class>
+ <name>hbox13</name>
+ <homogeneous>False</homogeneous>
+ <spacing>0</spacing>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>jump_seconde_label</name>
+ <label>s.</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <padding>5</padding>
+ <expand>False</expand>
+ <fill>False</fill>
+ <pack>GTK_PACK_END</pack>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkSpinButton</class>
+ <name>jump_seconde_spinbutton</name>
+ <can_focus>True</can_focus>
+ <climb_rate>1</climb_rate>
+ <digits>0</digits>
+ <numeric>False</numeric>
+ <update_policy>GTK_UPDATE_ALWAYS</update_policy>
+ <snap>False</snap>
+ <wrap>False</wrap>
+ <value>0</value>
+ <lower>0</lower>
+ <upper>60</upper>
+ <step>1</step>
+ <page>10</page>
+ <page_size>10</page_size>
+ <child>
+ <padding>0</padding>
+ <expand>False</expand>
+ <fill>True</fill>
+ <pack>GTK_PACK_END</pack>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>jump_minute_label</name>
+ <label>m:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <padding>5</padding>
+ <expand>False</expand>
+ <fill>False</fill>
+ <pack>GTK_PACK_END</pack>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkSpinButton</class>
+ <name>jump_minute_spinbutton</name>
+ <can_focus>True</can_focus>
+ <climb_rate>1</climb_rate>
+ <digits>0</digits>
+ <numeric>False</numeric>
+ <update_policy>GTK_UPDATE_ALWAYS</update_policy>
+ <snap>False</snap>
+ <wrap>False</wrap>
+ <value>0</value>
+ <lower>0</lower>
+ <upper>60</upper>
+ <step>1</step>
+ <page>10</page>
+ <page_size>10</page_size>
+ <child>
+ <padding>0</padding>
+ <expand>False</expand>
+ <fill>True</fill>
+ <pack>GTK_PACK_END</pack>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>jump_hour_label</name>
+ <label>h:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <padding>5</padding>
+ <expand>False</expand>
+ <fill>False</fill>
+ <pack>GTK_PACK_END</pack>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkSpinButton</class>
+ <name>jump_hour_spinbutton</name>
+ <can_focus>True</can_focus>
+ <climb_rate>1</climb_rate>
+ <digits>0</digits>
+ <numeric>False</numeric>
+ <update_policy>GTK_UPDATE_ALWAYS</update_policy>
+ <snap>False</snap>
+ <wrap>False</wrap>
+ <value>0</value>
+ <lower>0</lower>
+ <upper>12</upper>
+ <step>1</step>
+ <page>10</page>
+ <page_size>10</page_size>
+ <child>
+ <padding>0</padding>
+ <expand>False</expand>
+ <fill>True</fill>
+ <pack>GTK_PACK_END</pack>
+ </child>
+ </widget>
+ </widget>
+ </widget>
+ </widget>
+</widget>
+
+<widget>
+ <class>GtkDialog</class>
+ <name>intf_playlist</name>
+ <title>Playlist</title>
+ <type>GTK_WINDOW_TOPLEVEL</type>
+ <position>GTK_WIN_POS_NONE</position>
+ <modal>False</modal>
+ <default_width>400</default_width>
+ <default_height>300</default_height>
+ <allow_shrink>True</allow_shrink>
+ <allow_grow>True</allow_grow>
+ <auto_shrink>False</auto_shrink>
+
+ <widget>
+ <class>GtkVBox</class>
+ <child_name>Dialog:vbox</child_name>
+ <name>dialog-vbox4</name>
+ <homogeneous>False</homogeneous>
+ <spacing>5</spacing>
+
+ <widget>
+ <class>GtkHBox</class>
+ <child_name>Dialog:action_area</child_name>
+ <name>dialog-action_area3</name>
+ <border_width>10</border_width>
+ <homogeneous>True</homogeneous>
+ <spacing>5</spacing>
+ <child>
+ <padding>0</padding>
+ <expand>False</expand>
+ <fill>True</fill>
+ <pack>GTK_PACK_END</pack>
+ </child>
+
+ <widget>
+ <class>GtkButton</class>
+ <name>playlist_ok_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>clicked</name>
+ <handler>GtkPlaylistOk</handler>
+ <data>"intf_playlist"</data>
+ <last_modification_time>Sat, 12 May 2001 21:16:09 GMT</last_modification_time>
+ </signal>
+ <label>Ok</label>
+ <relief>GTK_RELIEF_NORMAL</relief>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkButton</class>
+ <name>playlist_cancel_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>clicked</name>
+ <handler>GtkPlaylistCancel</handler>
+ <data>"intf_playlist"</data>
+ <last_modification_time>Sat, 12 May 2001 21:16:20 GMT</last_modification_time>
+ </signal>
+ <label>Cancel</label>
+ <relief>GTK_RELIEF_NORMAL</relief>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkMenuBar</class>
+ <name>playlist_menubar</name>
+ <shadow_type>GTK_SHADOW_OUT</shadow_type>
+ <child>
+ <padding>0</padding>
+ <expand>False</expand>
+ <fill>False</fill>
+ </child>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>playlist_add</name>
+ <label>Add</label>
+ <right_justify>False</right_justify>
+
+ <widget>
+ <class>GtkMenu</class>
+ <name>playlist_add_menu</name>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>playlist_add_disc</name>
+ <signal>
+ <name>activate</name>
+ <handler>GtkDiscOpenActivate</handler>
+ <data>"intf_playlist"</data>
+ <last_modification_time>Mon, 14 May 2001 21:59:32 GMT</last_modification_time>
+ </signal>
+ <label>Disc</label>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>playlist_add_file</name>
+ <signal>
+ <name>activate</name>
+ <handler>GtkFileOpenActivate</handler>
+ <data>"intf_playlist"</data>
+ <last_modification_time>Mon, 14 May 2001 21:59:48 GMT</last_modification_time>
+ </signal>
+ <label>File</label>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>playlist_add_network</name>
+ <signal>
+ <name>activate</name>
+ <handler>GtkNetworkOpenActivate</handler>
+ <data>"intf_playlist"</data>
+ <last_modification_time>Mon, 14 May 2001 22:00:03 GMT</last_modification_time>
+ </signal>
+ <label>Network</label>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>playlist_add_url</name>
+ <signal>
+ <name>activate</name>
+ <handler>GtkPlaylistAddUrl</handler>
+ <data>"intf_playlist"</data>
+ <last_modification_time>Mon, 14 May 2001 22:00:22 GMT</last_modification_time>
+ </signal>
+ <label>Url</label>
+ <right_justify>False</right_justify>
+ </widget>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>playlist_delete</name>
+ <label>Delete</label>
+ <right_justify>False</right_justify>
+
+ <widget>
+ <class>GtkMenu</class>
+ <name>playlist_delete_menu</name>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>playlist_delete_all</name>
+ <signal>
+ <name>activate</name>
+ <handler>GtkPlaylistDeleteAll</handler>
+ <data>"intf_playlist"</data>
+ <last_modification_time>Sat, 12 May 2001 21:13:11 GMT</last_modification_time>
+ </signal>
+ <label>All</label>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>playlist_delete_selected</name>
+ <signal>
+ <name>activate</name>
+ <handler>GtkPlaylistDeleteSelected</handler>
+ <data>"intf_playlist"</data>
+ <last_modification_time>Sat, 12 May 2001 21:12:58 GMT</last_modification_time>
+ </signal>
+ <label>Selected</label>
+ <right_justify>False</right_justify>
+ </widget>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>playlist_selection</name>
+ <label>Selection</label>
+ <right_justify>False</right_justify>
+
+ <widget>
+ <class>GtkMenu</class>
+ <name>playlist_selection_menu</name>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>playlist_selection_crop</name>
+ <signal>
+ <name>activate</name>
+ <handler>GtkPlaylistCrop</handler>
+ <data>"intf_playlist"</data>
+ <last_modification_time>Sat, 12 May 2001 21:13:47 GMT</last_modification_time>
+ </signal>
+ <label>_Crop</label>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>playlist_selection_invert</name>
+ <signal>
+ <name>activate</name>
+ <handler>GtkPlaylistInvert</handler>
+ <data>"intf_playlist"</data>
+ <last_modification_time>Sat, 12 May 2001 21:13:55 GMT</last_modification_time>
+ </signal>
+ <label>_Invert</label>
+ <right_justify>False</right_justify>
+ </widget>
+
+ <widget>
+ <class>GtkMenuItem</class>
+ <name>playlist_selection_select</name>
+ <signal>
+ <name>activate</name>
+ <handler>GtkPlaylistSelect</handler>
+ <data>"intf_playlist"</data>
+ <last_modification_time>Sat, 12 May 2001 21:14:04 GMT</last_modification_time>
+ </signal>
+ <label>_Select</label>
+ <right_justify>False</right_justify>
+ </widget>
+ </widget>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkScrolledWindow</class>
+ <name>scrolledwindow1</name>
+ <hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy>
+ <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
+ <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
+ <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
+
+ <widget>
+ <class>GtkCList</class>
+ <name>playlist_clist</name>
+ <border_width>5</border_width>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>event</name>
+ <handler>GtkPlaylistEvent</handler>
+ <data>"intf_playlist"</data>
+ <last_modification_time>Sat, 12 May 2001 21:25:20 GMT</last_modification_time>
+ </signal>
+ <signal>
+ <name>drag_data_received</name>
+ <handler>GtkPlaylistDragData</handler>
+ <data>"intf_playlist"</data>
+ <last_modification_time>Sat, 12 May 2001 21:25:53 GMT</last_modification_time>
+ </signal>
+ <signal>
+ <name>drag_motion</name>
+ <handler>GtkPlaylistDragMotion</handler>
+ <data>"intf_playlist"</data>
+ <last_modification_time>Sat, 12 May 2001 21:26:23 GMT</last_modification_time>
+ </signal>
+ <columns>2</columns>
+ <column_widths>257,80</column_widths>
+ <selection_mode>GTK_SELECTION_EXTENDED</selection_mode>
+ <show_titles>True</show_titles>
+ <shadow_type>GTK_SHADOW_OUT</shadow_type>
+
+ <widget>
+ <class>GtkLabel</class>
+ <child_name>CList:title</child_name>
+ <name>label22</name>
+ <label>File</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <child_name>CList:title</child_name>
+ <name>label23</name>
+ <label>Duration</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ </widget>
+ </widget>
+ </widget>
+ </widget>
+</widget>
+
+<widget>
+ <class>GtkDialog</class>
+ <name>intf_preferences</name>
+ <title>Preferences</title>
+ <type>GTK_WINDOW_TOPLEVEL</type>
+ <position>GTK_WIN_POS_NONE</position>
+ <modal>False</modal>
+ <allow_shrink>True</allow_shrink>
+ <allow_grow>True</allow_grow>
+ <auto_shrink>False</auto_shrink>
+
+ <widget>
+ <class>GtkVBox</class>
+ <child_name>Dialog:vbox</child_name>
+ <name>dialog-vbox5</name>
+ <border_width>5</border_width>
+ <homogeneous>False</homogeneous>
+ <spacing>5</spacing>
+
+ <widget>
+ <class>GtkHBox</class>
+ <child_name>Dialog:action_area</child_name>
+ <name>dialog-action_area4</name>
+ <border_width>10</border_width>
+ <homogeneous>True</homogeneous>
+ <spacing>5</spacing>
+ <child>
+ <padding>0</padding>
+ <expand>False</expand>
+ <fill>True</fill>
+ <pack>GTK_PACK_END</pack>
+ </child>
+
+ <widget>
+ <class>GtkButton</class>
+ <name>preferences_ok_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>clicked</name>
+ <handler>GtkPreferencesOk</handler>
+ <data>"intf_preferences"</data>
+ <last_modification_time>Mon, 14 May 2001 21:21:39 GMT</last_modification_time>
+ </signal>
+ <label>Ok</label>
+ <relief>GTK_RELIEF_NORMAL</relief>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkButton</class>
+ <name>preferences_apply_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>clicked</name>
+ <handler>GtkPreferencesApply</handler>
+ <data>"intf_preferences"</data>
+ <last_modification_time>Mon, 14 May 2001 21:22:10 GMT</last_modification_time>
+ </signal>
+ <label>Apply</label>
+ <relief>GTK_RELIEF_NORMAL</relief>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkButton</class>
+ <name>preferences_cancel_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>clicked</name>
+ <handler>GtkPreferencesCancel</handler>
+ <data>"intf_preferences"</data>
+ <last_modification_time>Mon, 14 May 2001 21:22:46 GMT</last_modification_time>
+ </signal>
+ <label>Cancel</label>
+ <relief>GTK_RELIEF_NORMAL</relief>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkNotebook</class>
+ <name>preferences_notebook</name>
+ <can_focus>True</can_focus>
+ <show_tabs>True</show_tabs>
+ <show_border>True</show_border>
+ <tab_pos>GTK_POS_TOP</tab_pos>
+ <scrollable>False</scrollable>
+ <tab_hborder>2</tab_hborder>
+ <tab_vborder>2</tab_vborder>
+ <popup_enable>False</popup_enable>
+ <child>
+ <padding>0</padding>
+ <expand>True</expand>
+ <fill>True</fill>
+ </child>
+
+ <widget>
+ <class>GtkTable</class>
+ <name>preferences_file_table</name>
+ <border_width>5</border_width>
+ <rows>1</rows>
+ <columns>3</columns>
+ <homogeneous>False</homogeneous>
+ <row_spacing>5</row_spacing>
+ <column_spacing>5</column_spacing>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preferences_file_path_label</name>
+ <label>Default path:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkCombo</class>
+ <name>preferences_file_path_combo</name>
+ <value_in_list>False</value_in_list>
+ <ok_if_empty>True</ok_if_empty>
+ <case_sensitive>False</case_sensitive>
+ <use_arrows>True</use_arrows>
+ <use_arrows_always>False</use_arrows_always>
+ <items></items>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+
+ <widget>
+ <class>GtkEntry</class>
+ <child_name>GtkCombo:entry</child_name>
+ <name>preferences_file_path_entry</name>
+ <can_focus>True</can_focus>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>0</text_max_length>
+ <text></text>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkButton</class>
+ <name>preferences_file_path_button</name>
+ <can_focus>True</can_focus>
+ <label>Browse</label>
+ <relief>GTK_RELIEF_NORMAL</relief>
+ <child>
+ <left_attach>2</left_attach>
+ <right_attach>3</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <child_name>Notebook:tab</child_name>
+ <name>preferences_file</name>
+ <label>File</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ </widget>
+
+ <widget>
+ <class>GtkTable</class>
+ <name>preferences_disc_table</name>
+ <border_width>5</border_width>
+ <rows>2</rows>
+ <columns>3</columns>
+ <homogeneous>False</homogeneous>
+ <row_spacing>5</row_spacing>
+ <column_spacing>5</column_spacing>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preferences_disc_vcd_label</name>
+ <label>Default VCD path</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preference_disc_dvd_label</name>
+ <label>Default DVD path:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkCombo</class>
+ <name>preferences_disc_dvd_combo</name>
+ <value_in_list>False</value_in_list>
+ <ok_if_empty>True</ok_if_empty>
+ <case_sensitive>False</case_sensitive>
+ <use_arrows>True</use_arrows>
+ <use_arrows_always>False</use_arrows_always>
+ <items>/dev/dvd
+</items>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+
+ <widget>
+ <class>GtkEntry</class>
+ <child_name>GtkCombo:entry</child_name>
+ <name>preferences_disc_dvd_entry</name>
+ <can_focus>True</can_focus>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>0</text_max_length>
+ <text>/dev/dvd</text>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkCombo</class>
+ <name>preferences_disc_vcd_combo</name>
+ <value_in_list>False</value_in_list>
+ <ok_if_empty>True</ok_if_empty>
+ <case_sensitive>False</case_sensitive>
+ <use_arrows>True</use_arrows>
+ <use_arrows_always>False</use_arrows_always>
+ <items>/dev/cdrom
+</items>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+
+ <widget>
+ <class>GtkEntry</class>
+ <child_name>GtkCombo:entry</child_name>
+ <name>preferences_disc_vcd_entry</name>
+ <can_focus>True</can_focus>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>0</text_max_length>
+ <text>/dev/cdrom</text>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkButton</class>
+ <name>preferences_disc_dvd_browse_button</name>
+ <can_focus>True</can_focus>
+ <label>Browse</label>
+ <relief>GTK_RELIEF_NORMAL</relief>
+ <child>
+ <left_attach>2</left_attach>
+ <right_attach>3</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkButton</class>
+ <name>preferences_disc_vcd_browse_button</name>
+ <can_focus>True</can_focus>
+ <label>Browse</label>
+ <relief>GTK_RELIEF_NORMAL</relief>
+ <child>
+ <left_attach>2</left_attach>
+ <right_attach>3</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <child_name>Notebook:tab</child_name>
+ <name>preferences_disc</name>
+ <label>Disc</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ </widget>
+
+ <widget>
+ <class>GtkTable</class>
+ <name>preferences_network_table</name>
+ <border_width>5</border_width>
+ <rows>7</rows>
+ <columns>2</columns>
+ <homogeneous>False</homogeneous>
+ <row_spacing>5</row_spacing>
+ <column_spacing>5</column_spacing>
+
+ <widget>
+ <class>GtkCombo</class>
+ <name>preferences_network_server_combo</name>
+ <value_in_list>False</value_in_list>
+ <ok_if_empty>True</ok_if_empty>
+ <case_sensitive>False</case_sensitive>
+ <use_arrows>True</use_arrows>
+ <use_arrows_always>False</use_arrows_always>
+ <items></items>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+
+ <widget>
+ <class>GtkEntry</class>
+ <child_name>GtkCombo:entry</child_name>
+ <name>preferences_network_server_entry</name>
+ <can_focus>True</can_focus>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>0</text_max_length>
+ <text>vls </text>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkCombo</class>
+ <name>preferences_network_broadcast_combo</name>
+ <value_in_list>False</value_in_list>
+ <ok_if_empty>True</ok_if_empty>
+ <case_sensitive>False</case_sensitive>
+ <use_arrows>True</use_arrows>
+ <use_arrows_always>False</use_arrows_always>
+ <items></items>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>2</top_attach>
+ <bottom_attach>3</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+
+ <widget>
+ <class>GtkEntry</class>
+ <child_name>GtkCombo:entry</child_name>
+ <name>preferences_network_broadcast_entry</name>
+ <can_focus>True</can_focus>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>0</text_max_length>
+ <text></text>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preferences_network_server_label</name>
+ <label>Default server:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preferences_network_port_label</name>
+ <label>Default port:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkSpinButton</class>
+ <name>preferences_network_port_spinbutton</name>
+ <can_focus>True</can_focus>
+ <climb_rate>1</climb_rate>
+ <digits>0</digits>
+ <numeric>False</numeric>
+ <update_policy>GTK_UPDATE_ALWAYS</update_policy>
+ <snap>False</snap>
+ <wrap>False</wrap>
+ <value>1234</value>
+ <lower>0</lower>
+ <upper>65535</upper>
+ <step>1</step>
+ <page>10</page>
+ <page_size>10</page_size>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preferences_network_broadcast_label</name>
+ <label>Broadcast address:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>2</top_attach>
+ <bottom_attach>3</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkCheckButton</class>
+ <name>preferences_network_broadcast_checkbutton</name>
+ <can_focus>True</can_focus>
+ <label>Broadcast mode</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>3</top_attach>
+ <bottom_attach>4</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preferences_network_protocol_label</name>
+ <label>Default protocol:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>4</top_attach>
+ <bottom_attach>7</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkRadioButton</class>
+ <name>preferences_network_ts_radiobutton</name>
+ <can_focus>True</can_focus>
+ <label>TS</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ <group>preferences_network_protocol_group</group>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>4</top_attach>
+ <bottom_attach>5</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkRadioButton</class>
+ <name>preferences_network_rtp_radiobutton</name>
+ <can_focus>True</can_focus>
+ <label>RTP</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ <group>preferences_network_protocol_group</group>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>5</top_attach>
+ <bottom_attach>6</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkRadioButton</class>
+ <name>preferences_network_http_radiobutton</name>
+ <can_focus>True</can_focus>
+ <label>HTTP</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ <group>preferences_network_protocol_group</group>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>6</top_attach>
+ <bottom_attach>7</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <child_name>Notebook:tab</child_name>
+ <name>preferences_network</name>
+ <label>Network</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ </widget>
+
+ <widget>
+ <class>GtkTable</class>
+ <name>preferences_interface_table</name>
+ <border_width>5</border_width>
+ <rows>1</rows>
+ <columns>2</columns>
+ <homogeneous>False</homogeneous>
+ <row_spacing>5</row_spacing>
+ <column_spacing>5</column_spacing>
+
+ <widget>
+ <class>GtkCombo</class>
+ <name>preferences_interface_combo</name>
+ <value_in_list>False</value_in_list>
+ <ok_if_empty>True</ok_if_empty>
+ <case_sensitive>False</case_sensitive>
+ <use_arrows>True</use_arrows>
+ <use_arrows_always>False</use_arrows_always>
+ <items>Gtk+
+Gnome
+</items>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+
+ <widget>
+ <class>GtkEntry</class>
+ <child_name>GtkCombo:entry</child_name>
+ <name>preferences_interface_entry</name>
+ <can_focus>True</can_focus>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>0</text_max_length>
+ <text>Gtk+</text>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preferences_interface_label</name>
+ <label>Default interface:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <child_name>Notebook:tab</child_name>
+ <name>preferences_interface</name>
+ <label>Interface</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ </widget>
+
+ <widget>
+ <class>GtkTable</class>
+ <name>preferences_video_table</name>
+ <border_width>5</border_width>
+ <rows>7</rows>
+ <columns>2</columns>
+ <homogeneous>False</homogeneous>
+ <row_spacing>5</row_spacing>
+ <column_spacing>5</column_spacing>
+
+ <widget>
+ <class>GtkCombo</class>
+ <name>preferences_video_output_combo</name>
+ <value_in_list>False</value_in_list>
+ <ok_if_empty>True</ok_if_empty>
+ <case_sensitive>False</case_sensitive>
+ <use_arrows>True</use_arrows>
+ <use_arrows_always>False</use_arrows_always>
+ <items>sdl
+xvideo
+x11
+</items>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+
+ <widget>
+ <class>GtkEntry</class>
+ <child_name>GtkCombo:entry</child_name>
+ <name>preferences_video_output_entry</name>
+ <can_focus>True</can_focus>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>0</text_max_length>
+ <text>sdl</text>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preferences_video_output_label</name>
+ <label>Default output:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preferences_video_width_label</name>
+ <label>Default width:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkSpinButton</class>
+ <name>preferences_video_height_spinbutton</name>
+ <can_focus>True</can_focus>
+ <climb_rate>1</climb_rate>
+ <digits>0</digits>
+ <numeric>False</numeric>
+ <update_policy>GTK_UPDATE_ALWAYS</update_policy>
+ <snap>False</snap>
+ <wrap>False</wrap>
+ <value>576</value>
+ <lower>0</lower>
+ <upper>1200</upper>
+ <step>1</step>
+ <page>10</page>
+ <page_size>10</page_size>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>2</top_attach>
+ <bottom_attach>3</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkSpinButton</class>
+ <name>preferences_video_width_spinbutton</name>
+ <can_focus>True</can_focus>
+ <climb_rate>1</climb_rate>
+ <digits>0</digits>
+ <numeric>False</numeric>
+ <update_policy>GTK_UPDATE_ALWAYS</update_policy>
+ <snap>False</snap>
+ <wrap>False</wrap>
+ <value>720</value>
+ <lower>100</lower>
+ <upper>1600</upper>
+ <step>1</step>
+ <page>10</page>
+ <page_size>10</page_size>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preferences_video_height_label</name>
+ <label>Default height:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>2</top_attach>
+ <bottom_attach>3</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkOptionMenu</class>
+ <name>preferences_depth_optionmenu</name>
+ <can_focus>True</can_focus>
+ <items>15 bits
+16 bits
+32 bits
+</items>
+ <initial_choice>1</initial_choice>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>3</top_attach>
+ <bottom_attach>4</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preferences_video_depth_label</name>
+ <label>Default depth:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>3</top_attach>
+ <bottom_attach>4</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preferences_video_fullscreen_depth_label</name>
+ <label>Fullscreen depth:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>4</top_attach>
+ <bottom_attach>5</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkOptionMenu</class>
+ <name>preferences_video_fullscreen_depth_optionmenu</name>
+ <can_focus>True</can_focus>
+ <items>15 bits
+16 bits
+32 bits
+</items>
+ <initial_choice>2</initial_choice>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>4</top_attach>
+ <bottom_attach>5</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkSpinButton</class>
+ <name>preferences_video_gamma_spinbutton</name>
+ <can_focus>True</can_focus>
+ <climb_rate>1</climb_rate>
+ <digits>1</digits>
+ <numeric>False</numeric>
+ <update_policy>GTK_UPDATE_ALWAYS</update_policy>
+ <snap>False</snap>
+ <wrap>False</wrap>
+ <value>0</value>
+ <lower>0</lower>
+ <upper>10</upper>
+ <step>0.1</step>
+ <page>1</page>
+ <page_size>1</page_size>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>5</top_attach>
+ <bottom_attach>6</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preferences_video_gamma_label</name>
+ <label>Gamma:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>5</top_attach>
+ <bottom_attach>6</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkCheckButton</class>
+ <name>preferences_video_fullscreen_checkbutton</name>
+ <can_focus>True</can_focus>
+ <label>Fullscreen on play</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>6</top_attach>
+ <bottom_attach>7</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkCheckButton</class>
+ <name>preferences_video_grayscale_checkbutton</name>
+ <can_focus>True</can_focus>
+ <label>Grayscale</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>6</top_attach>
+ <bottom_attach>7</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <child_name>Notebook:tab</child_name>
+ <name>preferences_video</name>
+ <label>Video</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ </widget>
+
+ <widget>
+ <class>GtkTable</class>
+ <name>preferences_audio_table</name>
+ <border_width>5</border_width>
+ <rows>6</rows>
+ <columns>2</columns>
+ <homogeneous>False</homogeneous>
+ <row_spacing>5</row_spacing>
+ <column_spacing>5</column_spacing>
+
+ <widget>
+ <class>GtkOptionMenu</class>
+ <name>preferences_audio_quality_optionmenu</name>
+ <can_focus>True</can_focus>
+ <items>8 bits
+16 bits
+</items>
+ <initial_choice>1</initial_choice>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>2</top_attach>
+ <bottom_attach>3</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkOptionMenu</class>
+ <name>preferences_audio_frequency_optionmenu</name>
+ <can_focus>True</can_focus>
+ <items>48000 Hz
+44100 Hz
+</items>
+ <initial_choice>0</initial_choice>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>3</top_attach>
+ <bottom_attach>4</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkOptionMenu</class>
+ <name>preferences_audio_channels_optionmenu</name>
+ <can_focus>True</can_focus>
+ <items>Mono
+Stereo
+</items>
+ <initial_choice>1</initial_choice>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>4</top_attach>
+ <bottom_attach>5</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preferences_audio_output_label</name>
+ <label>Default output:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preferences_audio_device_label</name>
+ <label>Default device:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preferences_audio_quality_label</name>
+ <label>Quality:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>2</top_attach>
+ <bottom_attach>3</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preferences_audio_frequency_label</name>
+ <label>Frequency:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>3</top_attach>
+ <bottom_attach>4</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>preferences_audio_channel_label</name>
+ <label>Channels:</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>4</top_attach>
+ <bottom_attach>5</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkCheckButton</class>
+ <name>preferences_audio_spdif_checkbutton</name>
+ <can_focus>True</can_focus>
+ <label>Spdif output</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>5</top_attach>
+ <bottom_attach>6</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkCombo</class>
+ <name>preferences_audio_output_combo</name>
+ <value_in_list>False</value_in_list>
+ <ok_if_empty>True</ok_if_empty>
+ <case_sensitive>False</case_sensitive>
+ <use_arrows>True</use_arrows>
+ <use_arrows_always>False</use_arrows_always>
+ <items>dsp
+alsa
+</items>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+
+ <widget>
+ <class>GtkEntry</class>
+ <child_name>GtkCombo:entry</child_name>
+ <name>preferences_audio_output_entry</name>
+ <can_focus>True</can_focus>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>0</text_max_length>
+ <text>dsp</text>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkCombo</class>
+ <name>preferences_audio_device_combo</name>
+ <value_in_list>False</value_in_list>
+ <ok_if_empty>True</ok_if_empty>
+ <case_sensitive>False</case_sensitive>
+ <use_arrows>True</use_arrows>
+ <use_arrows_always>False</use_arrows_always>
+ <items>/dev/dsp
+</items>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+
+ <widget>
+ <class>GtkEntry</class>
+ <child_name>GtkCombo:entry</child_name>
+ <name>preferences_audio_device_entry</name>
+ <can_focus>True</can_focus>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>0</text_max_length>
+ <text>/dev/dsp</text>
+ </widget>
+ </widget>
+ </widget>
- <widget>
- <class>GtkHBox</class>
- <child_name>Dialog:action_area</child_name>
- <name>hbox4</name>
- <border_width>5</border_width>
- <homogeneous>True</homogeneous>
- <spacing>5</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- <pack>GTK_PACK_END</pack>
- </child>
+ <widget>
+ <class>GtkLabel</class>
+ <child_name>Notebook:tab</child_name>
+ <name>preferences_audio</name>
+ <label>Audio</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ </widget>
<widget>
- <class>GtkHBox</class>
- <name>hbox5</name>
- <homogeneous>True</homogeneous>
- <spacing>5</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- <pack>GTK_PACK_END</pack>
- </child>
+ <class>GtkTable</class>
+ <name>preferences_playlist_table</name>
+ <border_width>5</border_width>
+ <rows>3</rows>
+ <columns>1</columns>
+ <homogeneous>False</homogeneous>
+ <row_spacing>5</row_spacing>
+ <column_spacing>5</column_spacing>
<widget>
- <class>GtkButton</class>
- <name>network_ok</name>
+ <class>GtkCheckButton</class>
+ <name>preferences_playlist_startup_checkbutton</name>
<can_focus>True</can_focus>
- <signal>
- <name>clicked</name>
- <handler>on_network_ok_clicked</handler>
- <last_modification_time>Mon, 12 Mar 2001 21:45:01 GMT</last_modification_time>
- </signal>
- <label>OK</label>
- <relief>GTK_RELIEF_NORMAL</relief>
+ <label>Launch on startup</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
<child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
</child>
</widget>
<widget>
- <class>GtkButton</class>
- <name>network_cancel</name>
+ <class>GtkCheckButton</class>
+ <name>preferences_playlist_enqueue_checkbutton</name>
<can_focus>True</can_focus>
- <signal>
- <name>clicked</name>
- <handler>on_network_cancel_clicked</handler>
- <last_modification_time>Mon, 12 Mar 2001 21:44:52 GMT</last_modification_time>
- </signal>
- <label>Cancel</label>
- <relief>GTK_RELIEF_NORMAL</relief>
+ <label>Enqueue as default</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
<child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkCheckButton</class>
+ <name>preferences_playlist_loop_checkbutton</name>
+ <can_focus>True</can_focus>
+ <label>Loop on playlist end</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>2</top_attach>
+ <bottom_attach>3</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
</child>
</widget>
</widget>
- </widget>
- <widget>
- <class>GtkVBox</class>
- <name>vbox8</name>
- <border_width>5</border_width>
- <homogeneous>False</homogeneous>
- <spacing>5</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
+ <widget>
+ <class>GtkLabel</class>
+ <child_name>Notebook:tab</child_name>
+ <name>preferences_playlist</name>
+ <label>Playlist</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ </widget>
<widget>
- <class>GtkHBox</class>
- <name>hbox6</name>
+ <class>GtkTable</class>
+ <name>preferences_misc_table</name>
+ <border_width>5</border_width>
+ <rows>1</rows>
+ <columns>2</columns>
<homogeneous>False</homogeneous>
- <spacing>5</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
+ <row_spacing>5</row_spacing>
+ <column_spacing>5</column_spacing>
<widget>
<class>GtkFrame</class>
- <name>frame4</name>
- <label>Protocol</label>
+ <name>preferences_misc_associated_frame</name>
+ <label>Types associated with vlc</label>
<label_xalign>0</label_xalign>
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
<child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>True</yfill>
</child>
<widget>
- <class>GtkVBox</class>
- <name>vbox9</name>
+ <class>GtkTable</class>
+ <name>preferences_misc_associated_table</name>
+ <rows>4</rows>
+ <columns>1</columns>
<homogeneous>False</homogeneous>
- <spacing>0</spacing>
+ <row_spacing>0</row_spacing>
+ <column_spacing>0</column_spacing>
<widget>
- <class>GtkRadioButton</class>
- <name>network_ts</name>
+ <class>GtkCheckButton</class>
+ <name>preferences_misc_associated_checkbutton</name>
<can_focus>True</can_focus>
- <signal>
- <name>toggled</name>
- <handler>on_disc_dvd_toggled</handler>
- <last_modification_time>Sun, 04 Mar 2001 02:50:56 GMT</last_modification_time>
- </signal>
- <label>TS</label>
+ <label>mpeg</label>
<active>False</active>
<draw_indicator>True</draw_indicator>
- <group>network</group>
<child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
</child>
</widget>
<widget>
- <class>GtkRadioButton</class>
- <name>network_rtp</name>
- <sensitive>False</sensitive>
+ <class>GtkCheckButton</class>
+ <name>preferences_misc_mp2_checkbutton</name>
<can_focus>True</can_focus>
- <signal>
- <name>toggled</name>
- <handler>on_disc_vcd_toggled</handler>
- <last_modification_time>Sun, 04 Mar 2001 02:51:00 GMT</last_modification_time>
- </signal>
- <label>RTP</label>
+ <label>mp2</label>
<active>False</active>
<draw_indicator>True</draw_indicator>
- <group>network</group>
<child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
</child>
</widget>
<widget>
- <class>GtkRadioButton</class>
- <name>network_http</name>
- <sensitive>False</sensitive>
+ <class>GtkCheckButton</class>
+ <name>preferences_misc_vob_checkbutton</name>
<can_focus>True</can_focus>
- <label>HTTP</label>
+ <label>vob</label>
<active>False</active>
<draw_indicator>True</draw_indicator>
- <group>network</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame5</name>
- <label>Server</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkTable</class>
- <name>table2</name>
- <border_width>5</border_width>
- <rows>2</rows>
- <columns>2</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>5</row_spacing>
- <column_spacing>5</column_spacing>
-
- <widget>
- <class>GtkSpinButton</class>
- <name>network_port</name>
- <can_focus>True</can_focus>
- <climb_rate>1</climb_rate>
- <digits>0</digits>
- <numeric>False</numeric>
- <update_policy>GTK_UPDATE_ALWAYS</update_policy>
- <snap>False</snap>
- <wrap>False</wrap>
- <value>1234</value>
- <lower>0</lower>
- <upper>65535</upper>
- <step>1</step>
- <page>10</page>
- <page_size>10</page_size>
<child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>2</top_attach>
+ <bottom_attach>3</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
- <xexpand>True</xexpand>
+ <xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
</widget>
<widget>
- <class>GtkLabel</class>
- <name>label24</name>
- <label>Port</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
+ <class>GtkCheckButton</class>
+ <name>preferences_misc_ts_checkbutton</name>
+ <can_focus>True</can_focus>
+ <label>ts</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
+ <top_attach>3</top_attach>
+ <bottom_attach>4</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yfill>False</yfill>
</child>
</widget>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkFrame</class>
+ <name>preferences_misc_message_frame</name>
+ <label>Messages</label>
+ <label_xalign>0</label_xalign>
+ <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>True</yfill>
+ </child>
+
+ <widget>
+ <class>GtkTable</class>
+ <name>preferences_misc_messages_table</name>
+ <rows>1</rows>
+ <columns>2</columns>
+ <homogeneous>False</homogeneous>
+ <row_spacing>0</row_spacing>
+ <column_spacing>0</column_spacing>
<widget>
<class>GtkLabel</class>
- <name>label25</name>
- <label>Address</label>
+ <name>preferences_misc_messages_label</name>
+ <label>Warning level: </label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>0</xalign>
</widget>
<widget>
- <class>GtkEntry</class>
- <name>network_server</name>
+ <class>GtkSpinButton</class>
+ <name>preferences_misc_messages_spinbutton</name>
<can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text>vls</text>
+ <climb_rate>1</climb_rate>
+ <digits>0</digits>
+ <numeric>False</numeric>
+ <update_policy>GTK_UPDATE_ALWAYS</update_policy>
+ <snap>False</snap>
+ <wrap>False</wrap>
+ <value>0</value>
+ <lower>0</lower>
+ <upper>100</upper>
+ <step>1</step>
+ <page>10</page>
+ <page_size>10</page_size>
<child>
<left_attach>1</left_attach>
<right_attach>2</right_attach>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
- <xfill>True</xfill>
+ <xfill>False</xfill>
<yfill>False</yfill>
</child>
</widget>
</widget>
</widget>
</widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <child_name>Notebook:tab</child_name>
+ <name>preferences_misc</name>
+ <label>Misc</label>
+ <justify>GTK_JUSTIFY_CENTER</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ </widget>
</widget>
</widget>
</widget>
* intf_gtk.h: private Gtk+ interface description
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
- * $Id: intf_gtk.h,v 1.3 2001/05/06 18:32:30 stef Exp $
+ * $Id: intf_gtk.h,v 1.4 2001/05/15 01:01:44 stef Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
*****************************************************************************/
#define GTK_MENU_LABEL_SIZE 64
+/*****************************************************************************
+ * Convert user_data structures to title and chapter information
+ *****************************************************************************/
+#define DATA2TITLE( user_data ) ( (gint)(user_data) >> 16 )
+#define DATA2CHAPTER( user_data ) ( (gint)(user_data) & 0xffff )
+#define POS2DATA( title, chapter ) ( ((title) << 16) | ((chapter) & 0xffff) )
+
/*****************************************************************************
* Useful inline function
****************************************************************************/
boolean_t b_menus_update; /* menus have changed ? */
boolean_t b_slider_free; /* slider status */
- int i_list_timeout;
-
- /* Playlist selected item */
- int i_playing;
+ /* menus handlers */
+ boolean_t b_title_update; /* do we need to update title menus */
+ boolean_t b_chapter_update; /* do we need to update
+ chapter menus */
+ boolean_t b_angle_update; /* do we need to update angle menus */
+ boolean_t b_audio_update; /* do we need to update audio menus */
+ boolean_t b_spu_update; /* do we need to update spu menus */
/* windows and widgets */
GtkWidget * p_window; /* main window */
GtkWidget * p_fileopen; /* file open window */
GtkWidget * p_disc; /* disc selection window */
GtkWidget * p_network; /* network stream window */
+ GtkWidget * p_preferences; /* preferences window */
+ GtkWidget * p_jump; /* jump window */
/* The slider */
GtkFrame * p_slider_frame;
GtkAdjustment * p_adj; /* slider adjustment object */
float f_adj_oldvalue; /* previous value */
+ /* Playlist management */
+ int i_playing; /* playlist selected item */
+
+ /* The window labels for DVD mode */
+ GtkLabel * p_label_title;
+ GtkLabel * p_label_chapter;
+ gint i_part; /* current chapter */
+
/* XXX: Ugly kludge, see intf_gnome.c */
void ( *pf_gtk_callback ) ( void );
void ( *pf_gdk_callback ) ( void );
} intf_sys_t;
+/****************************************************************************
+ * Prototypes
+ ****************************************************************************/
+
+/*
+ * from gtk_menu.c
+ */
+gint GtkSetupMenu( intf_thread_t * );
+
+/*
+ * from gtk_playlist.c
+ */
+void GtkDropDataReceived ( intf_thread_t *, GtkSelectionData *,
+ guint, int );
+int GtkAppendList ( playlist_t *, int, GList * );
+void GtkRebuildCList ( GtkCList *, playlist_t * );
+void GtkPlayListManage ( intf_thread_t * );
+
* aout_spdif: ac3 passthrough output
*****************************************************************************
* Copyright (C) 2001 VideoLAN
- * $Id: aout_spdif.c,v 1.4 2001/05/07 03:14:09 stef Exp $
+ * $Id: aout_spdif.c,v 1.5 2001/05/15 01:01:44 stef Exp $
*
* Authors: Michel Kaempf <maxx@via.ecp.fr>
* Stéphane Borel <stef@via.ecp.fr>
}
else if( !AOUT_FIFO_ISEMPTY( p_aout->fifo[i_fifo] ) )
{
- vlc_mutex_unlock( &p_aout->fifo[i_fifo].data_lock );
+// vlc_mutex_unlock( &p_aout->fifo[i_fifo].data_lock );
+//fprintf(stderr, "delay %lld\n",p_aout->fifo[i_fifo].date[p_aout->fifo[i_fifo].l_start_frame] -mdate() );
+
/* play spdif frame to the external decoder */
p_aout->pf_play( p_aout,
p_aout->fifo[i_fifo].buffer +
* interface, such as command line.
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
- * $Id: interface.c,v 1.77 2001/05/07 03:14:09 stef Exp $
+ * $Id: interface.c,v 1.78 2001/05/15 01:01:44 stef Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
*
/* If no stream is being played, try to find one */
if( p_intf->p_input == NULL && !p_intf->b_die )
{
- /* Select the next playlist item */
- intf_PlaylistNext( p_main->p_playlist );
-
- if( p_main->p_playlist->i_index == -1 )
+ if( !p_main->p_playlist->b_stopped )
{
- /* FIXME: wait for user to add stuff to playlist ? */
-#if 0
- p_intf->b_die = 1;
-#endif
+ /* Select the next playlist item */
+ intf_PlaylistNext( p_main->p_playlist );
+
+ /* don't loop by default: stop at playlist end */
+ if( p_main->p_playlist->i_index == -1 )
+ {
+ p_main->p_playlist->b_stopped = 1;
+ }
+ else
+ {
+ p_main->p_playlist->b_stopped = 0;
+ p_intf->p_input =
+ input_CreateThread( &p_main->p_playlist->current, NULL );
+ }
}
else
{
- p_intf->p_input =
- input_CreateThread( &p_main->p_playlist->current, NULL );
+ /* playing has been stopped: we no longer need outputs */
+ if( p_aout_bank->i_count )
+ {
+ /* FIXME kludge that does not work with several outputs */
+ aout_DestroyThread( p_aout_bank->pp_aout[0], NULL );
+ p_aout_bank->i_count--;
+ }
+ if( p_vout_bank->i_count )
+ {
+ vout_DestroyThread( p_vout_bank->pp_vout[0], NULL );
+ p_vout_bank->i_count--;
+ }
}
}
}
* intf_playlist.c : Playlist management functions
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
- * $Id: intf_playlist.c,v 1.4 2001/05/07 03:14:09 stef Exp $
+ * $Id: intf_playlist.c,v 1.5 2001/05/15 01:01:44 stef Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
p_playlist->i_mode = PLAYLIST_FORWARD;
p_playlist->i_seed = 0;
+ p_playlist->b_stopped = 0;
/* There is no current item */
p_playlist->current.i_type = 0;
}
/*****************************************************************************
- * intf_PlaylistJumpto
+ * intf_PlaylistJumpto: go to a specified position in playlist.
+ *****************************************************************************
+ * Note that this function does NOT take the lock
*****************************************************************************/
void intf_PlaylistJumpto( playlist_t * p_playlist , int i_pos)
{
{
free( p_playlist->current.psz_name );
}
+
p_playlist->current = p_playlist->p_item[ p_playlist->i_index ];
p_playlist->current.psz_name
= strdup( p_playlist->current.psz_name );
- }
+
+ }
vlc_mutex_unlock( &p_playlist->change_lock );
}