1 /*****************************************************************************
3 *****************************************************************************
4 * Copyright (C) 2000, 2001 VideoLAN
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 );