1
/*****************************************************************************
3
*****************************************************************************
4
* Copyright (C) 2000, 2001 VideoLAN
5
* $Id: sout.c 6961 2004-03-05 17:34:23Z sam $
7
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
9
* This program is free software; you can redistribute it and/or modify
10
* it under the terms of the GNU General Public License as published by
11
* the Free Software Foundation; either version 2 of the License, or
12
* (at your option) any later version.
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU General Public License for more details.
19
* You should have received a copy of the GNU General Public License
20
* along with this program; if not, write to the Free Software
21
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
22
*****************************************************************************/
24
/*****************************************************************************
26
*****************************************************************************/
27
#include <sys/types.h> /* off_t */
33
#ifdef MODULE_NAME_IS_gnome
41
#include "gtk_callbacks.h"
42
#include "gtk_interface.h"
43
#include "gtk_support.h"
48
void GtkSoutSettings ( GtkButton *button,
51
void GtkSoutSettingsChanged ( GtkWidget *button, gpointer user_data);
58
void GtkSoutSettingsAccessFile (GtkToggleButton *togglebutton,
63
p_sout = gtk_widget_get_toplevel( GTK_WIDGET (togglebutton) );
64
gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_sout ),
65
"sout_file_path_label" ),
66
gtk_toggle_button_get_active( togglebutton ) );
67
gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_sout ),
69
gtk_toggle_button_get_active( togglebutton ) );
71
gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_sout ),
72
"sout_mux_ts" ), TRUE );
73
gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_sout ),
74
"sout_mux_ps" ), TRUE );
75
gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_sout ),
76
"sout_mux_avi" ), TRUE );
78
GtkSoutSettingsChanged( GTK_WIDGET( togglebutton ), user_data );
82
void GtkSoutSettingsAccessUdp (GtkToggleButton *togglebutton,
87
p_sout = gtk_widget_get_toplevel( GTK_WIDGET (togglebutton) );
88
gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_sout ),
89
"sout_udp_address_label" ),
90
gtk_toggle_button_get_active( togglebutton ) );
91
gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_sout ),
92
"sout_udp_address_combo" ),
93
gtk_toggle_button_get_active( togglebutton ) );
94
gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_sout ),
95
"sout_udp_port_label" ),
96
gtk_toggle_button_get_active( togglebutton ) );
97
gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_sout ),
99
gtk_toggle_button_get_active( togglebutton ) );
101
gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_sout ),
102
"sout_mux_ts" ), TRUE );
103
gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_sout ),
104
"sout_mux_ps" ), FALSE );
105
gtk_widget_set_sensitive( gtk_object_get_data( GTK_OBJECT( p_sout ),
106
"sout_mux_avi" ), FALSE );
108
gtk_toggle_button_set_active( gtk_object_get_data( GTK_OBJECT( p_sout ),
109
"sout_mux_ts" ), TRUE );
111
GtkSoutSettingsChanged( GTK_WIDGET( togglebutton ), user_data );
115
void GtkSoutSettingsChanged ( GtkWidget *button,
118
#define SELECTED( s ) GTK_TOGGLE_BUTTON( lookup_widget( GTK_WIDGET(button), \
120
//intf_thread_t * p_intf = GtkGetIntf( button );
123
p_target = g_string_new( "" );
125
/* first set access */
126
if( SELECTED( "sout_access_file" ) )
128
g_string_append( p_target, "file/" );
130
else if( SELECTED( "sout_access_udp" ) )
132
g_string_append( p_target, "udp/" );
134
else if( SELECTED( "sout_access_rtp" ) )
136
g_string_append( p_target, "rtp/" );
140
if( SELECTED( "sout_mux_ts" ) )
142
g_string_append( p_target, "ts://" );
144
else if( SELECTED( "sout_mux_ps" ) )
146
g_string_append( p_target, "ps://" );
148
else if( SELECTED( "sout_mux_avi" ) )
150
g_string_append( p_target, "avi://" );
153
/* last part of the url */
154
if( SELECTED( "sout_access_file" ) )
156
g_string_append( p_target,
157
gtk_entry_get_text( GTK_ENTRY( lookup_widget(
158
GTK_WIDGET(button), "sout_file_path" ) ) ) );
160
else if( SELECTED( "sout_access_udp" ) || SELECTED( "sout_access_rtp" ) )
162
g_string_append( p_target,
163
gtk_entry_get_text( GTK_ENTRY( lookup_widget(
164
GTK_WIDGET(button), "sout_udp_address" ) ) ) );
165
g_string_append( p_target, ":" );
166
g_string_sprintfa( p_target, "%i",
167
gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( lookup_widget(
168
GTK_WIDGET(button), "sout_udp_port" ) ) ) );
171
gtk_entry_set_text( GTK_ENTRY( lookup_widget(
172
GTK_WIDGET(button), "sout_entry_target" ) ),
174
g_string_free( p_target, TRUE );
178
/****************************************************************************/
179
void GtkSoutSettingsOk ( GtkButton *button,
182
/* Hide the dialog box */
183
gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
187
psz_target = gtk_entry_get_text( GTK_ENTRY( lookup_widget(
188
GTK_WIDGET(button), "sout_entry_target" ) ) );
190
config_PutPsz( p_intf, "sout", psz_target );
194
void GtkSoutSettingsCancel ( GtkButton *button,
197
/* Hide the dialog box */
198
gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
201
void GtkSoutSettings ( GtkButton *button,
204
intf_thread_t * p_intf = GtkGetIntf( button );
206
gtk_widget_show( p_intf->p_sys->p_sout );
207
gdk_window_raise( p_intf->p_sys->p_sout->window );