Mercurial > mplayer.hg
comparison Gui/mplayer/gtk/fs.c @ 4818:3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
author | pontscho |
---|---|
date | Sat, 23 Feb 2002 15:12:55 +0000 |
parents | 5c844c0d1d7f |
children | effab9f7da71 |
comparison
equal
deleted
inserted
replaced
4817:1e46f40dcd0e | 4818:3473ca9ef158 |
---|---|
5 #include <sys/stat.h> | 5 #include <sys/stat.h> |
6 #include <glob.h> | 6 #include <glob.h> |
7 #include <unistd.h> | 7 #include <unistd.h> |
8 | 8 |
9 #include "./mplayer.h" | 9 #include "./mplayer.h" |
10 #include "psignal.h" | |
11 #include "../error.h" | |
12 | 10 |
13 #include "pixmaps/up.xpm" | 11 #include "pixmaps/up.xpm" |
14 #include "pixmaps/dir.xpm" | 12 #include "pixmaps/dir.xpm" |
15 #include "pixmaps/file.xpm" | 13 #include "pixmaps/file.xpm" |
16 | 14 |
17 #include "../../events.h" | 15 #include "../../events.h" |
16 #include "../../interface.h" | |
18 #include "../../../config.h" | 17 #include "../../../config.h" |
19 #include "../../../help_mp.h" | 18 #include "../../../help_mp.h" |
20 | 19 |
21 #include "../widgets.h" | 20 #include "../widgets.h" |
22 #include "fs.h" | 21 #include "fs.h" |
33 gchar * fsSelectedDirectory = NULL; | 32 gchar * fsSelectedDirectory = NULL; |
34 unsigned char * fsThatDir = "."; | 33 unsigned char * fsThatDir = "."; |
35 gchar fsFilter[8] = "*"; | 34 gchar fsFilter[8] = "*"; |
36 | 35 |
37 int fsPressed = 0; | 36 int fsPressed = 0; |
38 int fsMessage = -1; | 37 int fsMessage = -1; |
39 int fsType = 0; | 38 int fsType = 0; |
40 | 39 |
41 #define fsNumberOfVideoFilterNames 6 | 40 #define fsNumberOfVideoFilterNames 6 |
42 char * fsVideoFilterNames[fsNumberOfVideoFilterNames+1][2] = | 41 char * fsVideoFilterNames[fsNumberOfVideoFilterNames+1][2] = |
43 { { "MPEG files ( *.mpg )", "*.mpg" }, | 42 { { "MPEG files ( *.mpg )", "*.mpg" }, |
44 { "VOB files ( *.vob )", "*.vob" }, | 43 { "VOB files ( *.vob )", "*.vob" }, |
45 { "AVI files ( *.avi )", "*.avi" }, | 44 { "AVI files ( *.avi )", "*.avi" }, |
46 { "QT files ( *.mov )", "*.mov" }, | 45 { "QT files ( *.mov )", "*.mov" }, |
47 { "ASF files ( *.asf )", "*.asf" }, | 46 { "ASF files ( *.asf )", "*.asf" }, |
48 { "VIVO files ( *.viv )", "*.viv" }, | 47 { "VIVO files ( *.viv )", "*.viv" }, |
49 { "All files ( * )", "*" } }; | 48 { "All files ( * )", "*" } }; |
50 | 49 |
51 #define fsNumberOfSubtitleFilterNames 8 | 50 #define fsNumberOfSubtitleFilterNames 8 |
52 char * fsSubtitleFilterNames[fsNumberOfSubtitleFilterNames+1][2] = | 51 char * fsSubtitleFilterNames[fsNumberOfSubtitleFilterNames+1][2] = |
53 { { "UTF ( *.utf )", "*.utf" }, | 52 { { "UTF ( *.utf )", "*.utf" }, |
54 { "SUB ( *.sub )", "*.sub" }, | 53 { "SUB ( *.sub )", "*.sub" }, |
55 { "SRT ( *.srt )", "*.str" }, | 54 { "SRT ( *.srt )", "*.str" }, |
56 { "SMI ( *.smi )", "*.smi" }, | 55 { "SMI ( *.smi )", "*.smi" }, |
57 { "RT ( *.rt )", "*.rt" }, | 56 { "RT ( *.rt )", "*.rt" }, |
58 { "TXT ( *.txt )", "*.txt" }, | 57 { "TXT ( *.txt )", "*.txt" }, |
59 { "SSA ( *.ssa )", "*.ssa" }, | 58 { "SSA ( *.ssa )", "*.ssa" }, |
60 { "AQT ( *.aqt )", "*.aqt" }, | 59 { "AQT ( *.aqt )", "*.aqt" }, |
61 { "All files ( * )", "*" } }; | 60 { "All files ( * )", "*" } }; |
62 | 61 |
63 #define fsNumberOfOtherFilterNames 0 | 62 #define fsNumberOfOtherFilterNames 0 |
64 char * fsOtherFilterNames[fsNumberOfOtherFilterNames+1][2] = | 63 char * fsOtherFilterNames[fsNumberOfOtherFilterNames+1][2] = |
65 { { "All files ( * )", "*" } }; | 64 { { "All files ( * )", "*" } }; |
66 | 65 |
97 if ( !fsFilter[0] ) return; | 96 if ( !fsFilter[0] ) return; |
98 | 97 |
99 gtk_widget_hide( list ); | 98 gtk_widget_hide( list ); |
100 gtk_clist_clear( GTK_CLIST( list ) ); | 99 gtk_clist_clear( GTK_CLIST( list ) ); |
101 str[0][0]=NULL; | 100 str[0][0]=NULL; |
102 | 101 |
103 pixmap=dpixmap; mask=dmask; | 102 pixmap=dpixmap; mask=dmask; |
104 str[0][0]=NULL; str[0][1]=(gchar *)malloc( 3 ); | 103 str[0][0]=NULL; str[0][1]=(gchar *)malloc( 3 ); |
105 strcpy( str[0][1],"." ); gtk_clist_append( GTK_CLIST( list ),str[0] ); gtk_clist_set_pixmap( GTK_CLIST( list ),0,0,pixmap,mask ); | 104 strcpy( str[0][1],"." ); gtk_clist_append( GTK_CLIST( list ),str[0] ); gtk_clist_set_pixmap( GTK_CLIST( list ),0,0,pixmap,mask ); |
106 strcpy( str[0][1],".." ); gtk_clist_append( GTK_CLIST( list ),str[0] ); gtk_clist_set_pixmap( GTK_CLIST( list ),1,0,pixmap,mask ); | 105 strcpy( str[0][1],".." ); gtk_clist_append( GTK_CLIST( list ),str[0] ); gtk_clist_set_pixmap( GTK_CLIST( list ),1,0,pixmap,mask ); |
107 free( str[0][0] ); | 106 free( str[0][0] ); |
119 gtk_clist_append( GTK_CLIST( list ),str[0] ); | 118 gtk_clist_append( GTK_CLIST( list ),str[0] ); |
120 gtk_clist_set_pixmap( GTK_CLIST( list ),c++,0,pixmap,mask ); | 119 gtk_clist_set_pixmap( GTK_CLIST( list ),c++,0,pixmap,mask ); |
121 free( str[0][1] ); | 120 free( str[0][1] ); |
122 } | 121 } |
123 globfree( &gg ); | 122 globfree( &gg ); |
124 | 123 |
125 glob( fsFilter,0,NULL,&gg ); | 124 glob( fsFilter,0,NULL,&gg ); |
126 | 125 |
127 #if 0 | 126 #if 0 |
128 if ( !strcmp( fsFilter,"*" ) ) | 127 if ( !strcmp( fsFilter,"*" ) ) |
129 { | 128 { |
130 char * f = strdup( fsFilter ); | 129 char * f = strdup( fsFilter ); |
131 int i; | 130 int i; |
132 for( i=0;i<strlen( f );i++ ) | 131 for( i=0;i<strlen( f );i++ ) |
133 if ( ( f[i] >= 'A' )&&( f[i] <= 'Z' ) ) f[i]+=32; | 132 if ( ( f[i] >= 'A' )&&( f[i] <= 'Z' ) ) f[i]+=32; |
134 glob( f,GLOB_APPEND,NULL,&gg ); | 133 glob( f,GLOB_APPEND,NULL,&gg ); |
135 | 134 |
136 for( i=0;i<strlen( f );i++ ) | 135 for( i=0;i<strlen( f );i++ ) |
137 if ( ( f[i] >= 'a' )&&( f[i] <= 'z' ) ) f[i]-=32; | 136 if ( ( f[i] >= 'a' )&&( f[i] <= 'z' ) ) f[i]-=32; |
138 glob( f,GLOB_APPEND,NULL,&gg ); | 137 glob( f,GLOB_APPEND,NULL,&gg ); |
139 free( f ); | 138 free( f ); |
140 } | 139 } |
161 } | 160 } |
162 | 161 |
163 void ShowFileSelect( int type ) | 162 void ShowFileSelect( int type ) |
164 { | 163 { |
165 int i; | 164 int i; |
166 if ( gtkVisibleFileSelect ) gtk_widget_hide( FileSelect ); | 165 gtk_widget_hide( FileSelect ); |
167 fsType=type; | 166 fsType=type; |
168 switch ( type ) | 167 switch ( type ) |
169 { | 168 { |
170 case fsVideoSelector: | 169 case fsVideoSelector: |
171 fsMessage=evFileLoaded; | 170 fsMessage=evFileLoaded; |
172 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_FileSelect ); | 171 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_FileSelect ); |
173 fsList_items=NULL; | 172 fsList_items=NULL; |
174 for( i=0;i<fsNumberOfVideoFilterNames + 1;i++ ) | 173 for( i=0;i<fsNumberOfVideoFilterNames + 1;i++ ) |
175 fsList_items=g_list_append( fsList_items,fsVideoFilterNames[i][0] ); | 174 fsList_items=g_list_append( fsList_items,fsVideoFilterNames[i][0] ); |
176 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); | 175 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); |
177 g_list_free( fsList_items ); | 176 g_list_free( fsList_items ); |
178 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsVideoFilterNames[fsNumberOfVideoFilterNames][0] ); | 177 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsVideoFilterNames[fsNumberOfVideoFilterNames][0] ); |
179 break; | 178 break; |
180 case fsSubtitleSelector: | 179 case fsSubtitleSelector: |
181 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_SubtitleSelect ); | 180 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_SubtitleSelect ); |
182 fsList_items=NULL; | 181 fsList_items=NULL; |
183 for( i=0;i<fsNumberOfSubtitleFilterNames + 1;i++ ) | 182 for( i=0;i<fsNumberOfSubtitleFilterNames + 1;i++ ) |
184 fsList_items=g_list_append( fsList_items,fsSubtitleFilterNames[i][0] ); | 183 fsList_items=g_list_append( fsList_items,fsSubtitleFilterNames[i][0] ); |
185 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); | 184 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); |
186 g_list_free( fsList_items ); | 185 g_list_free( fsList_items ); |
187 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsSubtitleFilterNames[fsNumberOfSubtitleFilterNames][0] ); | 186 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsSubtitleFilterNames[fsNumberOfSubtitleFilterNames][0] ); |
188 break; | 187 break; |
189 case fsOtherSelector: | 188 case fsOtherSelector: |
190 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_OtherSelect ); | 189 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_OtherSelect ); |
191 fsList_items=NULL; | 190 fsList_items=NULL; |
192 for( i=0;i<fsNumberOfSubtitleFilterNames + 1;i++ ) | 191 for( i=0;i<fsNumberOfSubtitleFilterNames + 1;i++ ) |
193 fsList_items=g_list_append( fsList_items,fsOtherFilterNames[i][0] ); | 192 fsList_items=g_list_append( fsList_items,fsOtherFilterNames[i][0] ); |
194 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); | 193 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); |
195 g_list_free( fsList_items ); | 194 g_list_free( fsList_items ); |
196 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsOtherFilterNames[fsNumberOfOtherFilterNames][0] ); | 195 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsOtherFilterNames[fsNumberOfOtherFilterNames][0] ); |
197 break; | 196 break; |
198 } | 197 } |
199 gtk_widget_show( FileSelect ); | 198 gtk_widget_show( FileSelect ); |
200 gtkVisibleFileSelect=1; | |
201 } | 199 } |
202 | 200 |
203 void HideFileSelect( void ) | 201 void HideFileSelect( void ) |
204 { | 202 { |
205 gtk_widget_hide( fsFileSelect ); | 203 gtk_widget_hide( fsFileSelect ); |
206 gtkVisibleFileSelect=0; | |
207 gtkShMem->vs.window=evLoad; | |
208 gtkSendMessage( evHideWindow ); | |
209 } | 204 } |
210 | 205 |
211 void fs_fsFileSelect_destroy( GtkObject * object,gpointer user_data ) | 206 void fs_fsFileSelect_destroy( GtkObject * object,gpointer user_data ) |
212 { HideFileSelect(); } | 207 { HideFileSelect(); } |
213 | 208 |
221 { | 216 { |
222 char * str; | 217 char * str; |
223 int i; | 218 int i; |
224 | 219 |
225 str=gtk_entry_get_text( GTK_ENTRY(user_data ) ); | 220 str=gtk_entry_get_text( GTK_ENTRY(user_data ) ); |
226 | 221 |
227 switch ( fsType ) | 222 switch ( fsType ) |
228 { | 223 { |
229 case fsVideoSelector: | 224 case fsVideoSelector: |
230 for( i=0;i<fsNumberOfVideoFilterNames+1;i++ ) | 225 for( i=0;i<fsNumberOfVideoFilterNames+1;i++ ) |
231 if( !strcmp( str,fsVideoFilterNames[i][0] ) ) | 226 if( !strcmp( str,fsVideoFilterNames[i][0] ) ) |
232 { | 227 { |
233 strcpy( fsFilter,fsVideoFilterNames[i][1] ); | 228 strcpy( fsFilter,fsVideoFilterNames[i][1] ); |
234 CheckDir( fsFNameList,get_current_dir_name() ); | 229 CheckDir( fsFNameList,get_current_dir_name() ); |
235 break; | 230 break; |
236 } | 231 } |
237 break; | 232 break; |
238 case fsSubtitleSelector: | 233 case fsSubtitleSelector: |
239 for( i=0;i<fsNumberOfSubtitleFilterNames+1;i++ ) | 234 for( i=0;i<fsNumberOfSubtitleFilterNames+1;i++ ) |
240 if( !strcmp( str,fsSubtitleFilterNames[i][0] ) ) | 235 if( !strcmp( str,fsSubtitleFilterNames[i][0] ) ) |
241 { | 236 { |
242 strcpy( fsFilter,fsSubtitleFilterNames[i][1] ); | 237 strcpy( fsFilter,fsSubtitleFilterNames[i][1] ); |
243 CheckDir( fsFNameList,get_current_dir_name() ); | 238 CheckDir( fsFNameList,get_current_dir_name() ); |
244 break; | 239 break; |
245 } | 240 } |
246 break; | 241 break; |
247 case fsOtherSelector: | 242 case fsOtherSelector: |
248 for( i=0;i<fsNumberOfOtherFilterNames+1;i++ ) | 243 for( i=0;i<fsNumberOfOtherFilterNames+1;i++ ) |
249 if( !strcmp( str,fsOtherFilterNames[i][0] ) ) | 244 if( !strcmp( str,fsOtherFilterNames[i][0] ) ) |
250 { | 245 { |
251 strcpy( fsFilter,fsOtherFilterNames[i][1] ); | 246 strcpy( fsFilter,fsOtherFilterNames[i][1] ); |
252 CheckDir( fsFNameList,get_current_dir_name() ); | 247 CheckDir( fsFNameList,get_current_dir_name() ); |
253 break; | 248 break; |
254 } | 249 } |
255 break; | 250 break; |
256 } | 251 } |
257 } | 252 } |
258 | 253 |
259 void fs_fsPathCombo_activate( GtkEditable * editable,gpointer user_data ) | 254 void fs_fsPathCombo_activate( GtkEditable * editable,gpointer user_data ) |
311 | 306 |
312 switch( fsPressed ) | 307 switch( fsPressed ) |
313 { | 308 { |
314 case 1: | 309 case 1: |
315 fsSelectedDirectory=(unsigned char *)get_current_dir_name(); | 310 fsSelectedDirectory=(unsigned char *)get_current_dir_name(); |
316 // printf("[gtk-fs] 1-fsSelectedFile: %s\n",fsSelectedFile); | |
317 // #ifdef DEBUG | |
318 // dbprintf( 1,"[gtk-fs] fsSelectedFile: %s\n",fsSelectedFile ); | |
319 // #endif | |
320 break; | 311 break; |
321 case 2: | 312 case 2: |
322 str=gtk_entry_get_text( GTK_ENTRY( fsPathCombo ) ); | 313 str=gtk_entry_get_text( GTK_ENTRY( fsPathCombo ) ); |
323 fsSelectedFile=str; | 314 fsSelectedFile=str; |
324 // printf("[gtk-fs] 2-fsSelectedFile: '%s' \n",fsSelectedFile); | |
325 // #ifdef DEBUG | |
326 // dbprintf( 1,"[gtk-fs] fsSelectedFile: %s\n",fsSelectedFile ); | |
327 // #endif | |
328 if ( !fsFileExist( fsSelectedFile ) ) return; | 315 if ( !fsFileExist( fsSelectedFile ) ) return; |
329 fsSelectedDirectory=fsSelectedFile; | 316 fsSelectedDirectory=fsSelectedFile; |
330 size=strlen( fsSelectedDirectory ); | 317 size=strlen( fsSelectedDirectory ); |
331 for ( j=0;j<size;j++ ) | 318 for ( j=0;j<size;j++ ) |
332 { | 319 { |
335 fsSelectedFile+=size - j + 1; | 322 fsSelectedFile+=size - j + 1; |
336 fsSelectedDirectory[ size - j ]=0; | 323 fsSelectedDirectory[ size - j ]=0; |
337 break; | 324 break; |
338 } | 325 } |
339 } | 326 } |
340 // printf("[gtk-fs-xxx] fsSelectedFile: '%s' \n",fsSelectedFile); | 327 break; |
341 // printf("[gtk-fs-xxx] fsSelectedDirectory: '%s' \n",fsSelectedDirectory); | 328 } |
342 break; | |
343 } | |
344 // printf( "----gtk---> directory: %s\n",fsSelectedDirectory ); | |
345 // printf( "----gtk---> filename: %s\n",fsSelectedFile ); | |
346 switch ( fsType ) | 329 switch ( fsType ) |
347 { | 330 { |
348 case fsVideoSelector: | 331 case fsVideoSelector: |
349 strcpy( gtkShMem->fs.dir,fsSelectedDirectory ); | 332 guiSetDF( guiIntfStruct.Filename,fsSelectedDirectory,fsSelectedFile ); |
350 strcpy( gtkShMem->fs.filename,fsSelectedFile ); | 333 guiIntfStruct.StreamType=STREAMTYPE_FILE; |
351 // printf( "----gtksm-> directory: %s\n",gtkShMem->fs.dir ); | 334 guiIntfStruct.FilenameChanged=1; |
352 // printf( "----gtksm-> filename: %s\n",gtkShMem->fs.filename ); | 335 break; |
353 gtkSendMessage( evFileLoaded ); | |
354 break; | |
355 case fsSubtitleSelector: | 336 case fsSubtitleSelector: |
356 strcpy( gtkShMem->fs.subtitlename,fsSelectedDirectory ); | 337 guiSetDF( guiIntfStruct.Subtitlename,fsSelectedDirectory,fsSelectedFile ); |
357 strcat( gtkShMem->fs.subtitlename,"/" ); | 338 guiIntfStruct.SubtitleChanged=1; |
358 strcat( gtkShMem->fs.subtitlename,fsSelectedFile ); | |
359 gtkSendMessage( evSubtitleLoaded ); | |
360 break; | 339 break; |
361 case fsOtherSelector: | 340 case fsOtherSelector: |
362 strcpy( gtkShMem->fs.otherfilename,fsSelectedDirectory ); | 341 guiSetDF( guiIntfStruct.Othername,fsSelectedDirectory,fsSelectedFile ); |
363 strcat( gtkShMem->fs.subtitlename,"/" ); | |
364 strcat( gtkShMem->fs.otherfilename,fsSelectedFile ); | |
365 break; | 342 break; |
366 } | 343 } |
367 item=fsTopList_items; | 344 item=fsTopList_items; |
368 while( item ) | 345 while( item ) |
369 { | 346 { |
373 if ( i ) | 350 if ( i ) |
374 { | 351 { |
375 fsTopList_items=g_list_prepend( fsTopList_items,(gchar *)get_current_dir_name() ); | 352 fsTopList_items=g_list_prepend( fsTopList_items,(gchar *)get_current_dir_name() ); |
376 gtk_combo_set_popdown_strings( GTK_COMBO( user_data ),fsTopList_items ); | 353 gtk_combo_set_popdown_strings( GTK_COMBO( user_data ),fsTopList_items ); |
377 } | 354 } |
355 if ( mplMainAutoPlay ) mplEventHandling( evPlay,0 ); | |
378 } | 356 } |
379 | 357 |
380 void fs_Cancel_released( GtkButton * button,gpointer user_data ) | 358 void fs_Cancel_released( GtkButton * button,gpointer user_data ) |
381 { HideFileSelect(); } | 359 { HideFileSelect(); } |
382 | 360 |
383 void fs_fsFNameList_select_row( GtkWidget * widget,gint row,gint column,GdkEventButton *bevent,gpointer user_data ) | 361 void fs_fsFNameList_select_row( GtkWidget * widget,gint row,gint column,GdkEventButton *bevent,gpointer user_data ) |
384 { | 362 { |
385 gtk_clist_get_text( GTK_CLIST(widget ),row,1,&fsSelectedFile ); | 363 gtk_clist_get_text( GTK_CLIST(widget ),row,1,&fsSelectedFile ); |
386 fsPressed=1; | 364 fsPressed=1; |
387 if( !bevent ) return; | 365 if( !bevent ) return; |
388 if( bevent->type == GDK_2BUTTON_PRESS ) gtk_button_released( GTK_BUTTON( fsOk ) ); | 366 if( bevent->type == GDK_2BUTTON_PRESS ) gtk_button_released( GTK_BUTTON( fsOk ) ); |
389 } | 367 } |
390 | 368 |