1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
#include "url.h"
#include "common.h"
#include "../interface.h"
#include "../app.h"
#include "../widgets.h"
#include "../help_mp.h"
GtkWidget * URL = NULL;
static GtkWidget * URLCombo;
static GtkWidget * URLEntry;
static GList * URLComboEntrys = NULL;
void ShowURLDialogBox( void )
{
if ( URL ) gtkActive( URL );
else URL=create_URL();
if ( URLList )
{
URLItem * item = URLList;
g_list_free( URLComboEntrys );
URLComboEntrys=NULL;
while( item )
{
URLComboEntrys=g_list_append( URLComboEntrys,(gchar *)item->url );
item=item->next;
}
}
if ( URLComboEntrys )
{
gtk_entry_set_text( GTK_ENTRY( URLEntry ),URLComboEntrys->data );
gtk_combo_set_popdown_strings( GTK_COMBO( URLCombo ),URLComboEntrys );
}
gtk_widget_show( URL );
}
void HideURLDialogBox( void )
{
if ( !URL ) return;
gtk_widget_hide( URL );
gtk_widget_destroy( URL );
URL=0;
}
static void on_Button_pressed( GtkButton * button,gpointer user_data )
{
URLItem * item;
if ( (int)user_data )
{
gchar * str= strdup( gtk_entry_get_text( GTK_ENTRY( URLEntry ) ) );
if ( str )
{
if ( strncmp( str,"http://",7 )
&& strncmp( str,"ftp://",6 )
&& strncmp( str,"mms://",6 )
&& strncmp( str,"pnm://",6 )
&& strncmp( str,"rtsp://",7 ) )
{
gchar * tmp;
tmp=malloc( strlen( str ) + 8 );
sprintf( tmp,"http://%s",str );
free( str ); str=tmp;
}
URLComboEntrys=g_list_prepend( URLComboEntrys,(gchar *)str );
item=calloc( 1,sizeof( URLItem ) );
item->url=gstrdup( str );
gtkSet( gtkAddURLItem,0,(void *)item );
guiSetFilename( guiIntfStruct.Filename,str ); guiIntfStruct.FilenameChanged=1;
mplEventHandling( evPlayNetwork,0 );
}
}
HideURLDialogBox();
}
GtkWidget * create_URL( void )
{
GtkWidget * vbox1;
GtkWidget * hbox1;
GtkWidget * hbuttonbox1;
GtkWidget * Ok;
GtkWidget * Cancel;
GtkAccelGroup * accel_group;
accel_group=gtk_accel_group_new();
URL=gtk_window_new( GTK_WINDOW_TOPLEVEL );
gtk_widget_set_name( URL,"URL" );
gtk_object_set_data( GTK_OBJECT( URL ),"URL",URL );
gtk_widget_set_usize( URL,384,70 );
GTK_WIDGET_SET_FLAGS( URL,GTK_CAN_DEFAULT );
gtk_window_set_title( GTK_WINDOW( URL ),MSGTR_Network );
gtk_window_set_position( GTK_WINDOW( URL ),GTK_WIN_POS_CENTER );
gtk_window_set_policy( GTK_WINDOW( URL ),TRUE,TRUE,FALSE );
gtk_window_set_wmclass( GTK_WINDOW( URL ),"Network","MPlayer" );
gtk_widget_realize( URL );
gtkAddIcon( URL );
vbox1=AddVBox( AddDialogFrame( URL ),0 );
hbox1=AddHBox( vbox1,1 );
AddLabel( "URL: ",hbox1 );
URLCombo=AddComboBox( hbox1 );
/*
gtk_combo_new();
gtk_widget_set_name( URLCombo,"URLCombo" );
gtk_widget_show( URLCombo );
gtk_box_pack_start( GTK_BOX( hbox1 ),URLCombo,TRUE,TRUE,0 );
*/
URLEntry=GTK_COMBO( URLCombo )->entry;
gtk_widget_set_name( URLEntry,"URLEntry" );
gtk_widget_show( URLEntry );
AddHSeparator( vbox1 );
hbuttonbox1=AddHButtonBox( vbox1 );
gtk_button_box_set_layout( GTK_BUTTON_BOX( hbuttonbox1 ),GTK_BUTTONBOX_END );
gtk_button_box_set_spacing( GTK_BUTTON_BOX( hbuttonbox1 ),10 );
Ok=AddButton( MSGTR_Ok,hbuttonbox1 );
Cancel=AddButton( MSGTR_Cancel,hbuttonbox1 );
gtk_widget_add_accelerator( Ok,"clicked",accel_group,GDK_Return,0,GTK_ACCEL_VISIBLE );
gtk_widget_add_accelerator( Cancel,"clicked",accel_group,GDK_Escape,0,GTK_ACCEL_VISIBLE );
gtk_signal_connect( GTK_OBJECT( URL ),"destroy",GTK_SIGNAL_FUNC( WidgetDestroy ),&URL );
gtk_signal_connect( GTK_OBJECT( Ok ),"clicked",GTK_SIGNAL_FUNC( on_Button_pressed ),(void *)1 );
gtk_signal_connect( GTK_OBJECT( Cancel ),"clicked",GTK_SIGNAL_FUNC( on_Button_pressed ),NULL );
gtk_widget_grab_focus( URLEntry );
gtk_window_add_accel_group( GTK_WINDOW( URL ),accel_group );
return URL;
}
|