Mercurial > mplayer.hg
comparison Gui/mplayer/gtk/fs.c @ 7203:69cc665855dc
- add None to audio/video family selection
- add *.divx and case insensitive search to fs
author | pontscho |
---|---|
date | Sat, 31 Aug 2002 15:55:03 +0000 |
parents | b212f74e14ec |
children | 7527dc997596 |
comparison
equal
deleted
inserted
replaced
7202:b414c2e34b2e | 7203:69cc665855dc |
---|---|
38 int fsPressed = 0; | 38 int fsPressed = 0; |
39 int fsType = 0; | 39 int fsType = 0; |
40 | 40 |
41 int gtkVFileSelect = 0; | 41 int gtkVFileSelect = 0; |
42 | 42 |
43 #define fsNumberOfVideoFilterNames 9 | 43 char * fsVideoFilterNames[][2] = |
44 char * fsVideoFilterNames[fsNumberOfVideoFilterNames+1][2] = | |
45 { { "MPEG files (*.mpg,*.mpeg)", "*.mpg,*.mpeg" }, | 44 { { "MPEG files (*.mpg,*.mpeg)", "*.mpg,*.mpeg" }, |
46 { "VOB files (*.vob)", "*.vob" }, | 45 { "VOB files (*.vob)", "*.vob" }, |
47 { "AVI files (*.avi)", "*.avi" }, | 46 { "AVI files (*.avi)", "*.avi" }, |
47 { "DiVX files (*.divx)", "*.divx" }, | |
48 { "QT files (*.mov)", "*.mov" }, | 48 { "QT files (*.mov)", "*.mov" }, |
49 { "ASF files (*.asf)", "*.asf" }, | 49 { "ASF files (*.asf)", "*.asf" }, |
50 { "VIVO files (*.viv)", "*.viv" }, | 50 { "VIVO files (*.viv)", "*.viv" }, |
51 { "Windows Media Video (*.wmv)", "*.wmv" }, | 51 { "Windows Media Video (*.wmv)", "*.wmv" }, |
52 { "MP3 files (*.mp3,mp2)", "*.mp3,*.mp2" }, | |
53 { "Wave files (*.wav)", "*.wav" }, | |
54 { "WMA files (*.wma)", "*.wma" }, | |
52 { "Audio files (*.wav,*.mp2,*.mp3,*.wma)", "*.wav,*.mp2,*.mp3,*.wma" }, | 55 { "Audio files (*.wav,*.mp2,*.mp3,*.wma)", "*.wav,*.mp2,*.mp3,*.wma" }, |
53 { "Video files (*.mpg,*.mpeg,*.vob,*.avi,*.mov,*.asf,*.viv,*.wmv)", "*.mpg,*.mpeg,*.vob,*.avi,*.mov,*.asf,*.viv,*.wmv" }, | 56 { "All video files", "*.mpg,*.mpeg,*.vob,*.avi,*.divx,*.mov,*.asf,*.viv,*.wmv" }, |
54 { "All files (*)", "*" } }; | 57 { "All files (*)", "*" }, |
55 | 58 { NULL,NULL } |
56 #define fsNumberOfSubtitleFilterNames 9 | 59 }; |
57 char * fsSubtitleFilterNames[fsNumberOfSubtitleFilterNames+1][2] = | 60 |
61 char * fsSubtitleFilterNames[][2] = | |
58 { { "UTF (*.utf)", "*.utf" }, | 62 { { "UTF (*.utf)", "*.utf" }, |
59 { "SUB (*.sub)", "*.sub" }, | 63 { "SUB (*.sub)", "*.sub" }, |
60 { "SRT (*.srt)", "*.str" }, | 64 { "SRT (*.srt)", "*.str" }, |
61 { "SMI (*.smi)", "*.smi" }, | 65 { "SMI (*.smi)", "*.smi" }, |
62 { "RT (*.rt) ", "*.rt" }, | 66 { "RT (*.rt) ", "*.rt" }, |
63 { "TXT (*.txt)", "*.txt" }, | 67 { "TXT (*.txt)", "*.txt" }, |
64 { "SSA (*.ssa)", "*.ssa" }, | 68 { "SSA (*.ssa)", "*.ssa" }, |
65 { "AQT (*.aqt)", "*.aqt" }, | 69 { "AQT (*.aqt)", "*.aqt" }, |
66 { "Subtitles (*.utf,*.sub,*.srt,*.smi,*.rt,*.txt,*.ssa,*.aqt)", "*.utf,*.sub,*.srt,*.smi,*.rt,*.txt,*.ssa,*.aqt" }, | 70 { "Subtitles (*.utf,*.sub,*.srt,*.smi,*.rt,*.txt,*.ssa,*.aqt)", "*.utf,*.sub,*.srt,*.smi,*.rt,*.txt,*.ssa,*.aqt" }, |
67 { "All files ( * )", "*" } }; | 71 { "All files ( * )", "*" }, |
68 | 72 { NULL,NULL } |
69 #define fsNumberOfOtherFilterNames 0 | 73 }; |
70 char * fsOtherFilterNames[fsNumberOfOtherFilterNames+1][2] = | 74 |
71 { { "All files ( * )", "*" } }; | 75 char * fsOtherFilterNames[][2] = |
76 { | |
77 { "All files ( * )", "*" }, | |
78 { NULL,NULL } | |
79 }; | |
72 | 80 |
73 #define fsNumberOfAudioFilterNames 3 | 81 char * fsAudioFileNames[][2] = |
74 char * fsAudioFileNames[fsNumberOfAudioFilterNames+1][2] = | 82 { |
75 { { "WAV files (*.wav)", "*.wav" }, | 83 { "WAV files (*.wav)", "*.wav" }, |
76 { "MP3 files (*.mp2, *.mp3)", "*.mp2,*.mp3" }, | 84 { "MP3 files (*.mp2, *.mp3)", "*.mp2,*.mp3" }, |
77 { "Audio files (*.wav,*.mp2,*.mp3)", "*.wav,*.mp2,*.mp3" }, | 85 { "Audio files (*.wav,*.mp2,*.mp3)", "*.wav,*.mp2,*.mp3" }, |
78 { "All files ( * )", "*" } }; | 86 { "All files ( * )", "*" }, |
79 | 87 { NULL, NULL } |
80 #define fsNumberOfFontFilterNames 1 | 88 }; |
81 char * fsFontFileNames[fsNumberOfFontFilterNames+1][2] = | 89 |
90 char * fsFontFileNames[][2] = | |
91 { | |
82 #ifdef HAVE_FREETYPE | 92 #ifdef HAVE_FREETYPE |
83 { { "font files (*.ttf)", "*.ttf" }, | 93 { "font files (*.ttf)", "*.ttf" }, |
84 #else | 94 #else |
85 { { "font files (*.desc)", "*.desc" }, | 95 { "font files (*.desc)", "*.desc" }, |
86 #endif | 96 #endif |
87 { "All files ( * )", "*" } }; | 97 { "All files ( * )", "*" }, |
98 { NULL,NULL } | |
99 }; | |
88 | 100 |
89 GtkWidget * fsFileNamesList; | 101 GtkWidget * fsFileNamesList; |
90 GtkWidget * fsFNameList; | 102 GtkWidget * fsFNameList; |
91 GtkWidget * fsFileSelect; | 103 GtkWidget * fsFileSelect; |
92 GdkColormap * fsColorMap; | 104 GdkColormap * fsColorMap; |
98 GList * fsList_items = NULL; | 110 GList * fsList_items = NULL; |
99 GList * fsTopList_items = NULL; | 111 GList * fsTopList_items = NULL; |
100 GtkWidget * List; | 112 GtkWidget * List; |
101 GtkWidget * fsFilterCombo; | 113 GtkWidget * fsFilterCombo; |
102 | 114 |
103 | |
104 GtkStyle * style; | 115 GtkStyle * style; |
105 GdkPixmap * dpixmap; | 116 GdkPixmap * dpixmap; |
106 GdkPixmap * fpixmap; | 117 GdkPixmap * fpixmap; |
107 GdkBitmap * dmask; | 118 GdkBitmap * dmask; |
108 GdkBitmap * fmask; | 119 GdkBitmap * fmask; |
120 | |
121 static char * Filter( char * name ) | |
122 { | |
123 char tmp[32]; | |
124 int i,c; | |
125 for ( i=0,c=0;i < strlen( name );i++ ) | |
126 { | |
127 if ( ( name[i] >='a' )&&( name[i] <= 'z' ) ) { tmp[c++]='['; tmp[c++]=name[i]; tmp[c++]=name[i] - 32; tmp[c++]=']'; } | |
128 else tmp[c++]=name[i]; | |
129 } | |
130 tmp[c]=0; | |
131 return tmp; | |
132 } | |
109 | 133 |
110 void CheckDir( GtkWidget * list,char * directory ) | 134 void CheckDir( GtkWidget * list,char * directory ) |
111 { | 135 { |
112 struct stat fs; | 136 struct stat fs; |
113 int i,c=2; | 137 int i,c=2; |
155 tmp[c]=fsFilter[i]; | 179 tmp[c]=fsFilter[i]; |
156 if ( ( tmp[c] == ',' )||( tmp[c] == '\0' ) ) | 180 if ( ( tmp[c] == ',' )||( tmp[c] == '\0' ) ) |
157 { | 181 { |
158 tmp[c]=0; c=-1; | 182 tmp[c]=0; c=-1; |
159 // printf( "substr: %s\n",tmp ); | 183 // printf( "substr: %s\n",tmp ); |
160 glob( tmp,glob_param,NULL,&gg ); | 184 glob( Filter( tmp ),glob_param,NULL,&gg ); |
161 glob_param=GLOB_APPEND; | 185 glob_param=GLOB_APPEND; |
162 } | 186 } |
163 } | 187 } |
164 } else glob( fsFilter,0,NULL,&gg ); | 188 } else glob( Filter( fsFilter ),0,NULL,&gg ); |
165 | 189 |
166 #if 0 | 190 #if 0 |
167 if ( !strcmp( fsFilter,"*" ) ) | 191 if ( !strcmp( fsFilter,"*" ) ) |
168 { | 192 { |
169 char * f = strdup( fsFilter ); | 193 char * f = strdup( fsFilter ); |
211 switch ( type ) | 235 switch ( type ) |
212 { | 236 { |
213 case fsVideoSelector: | 237 case fsVideoSelector: |
214 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_FileSelect ); | 238 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_FileSelect ); |
215 fsList_items=NULL; | 239 fsList_items=NULL; |
216 for( i=0;i<fsNumberOfVideoFilterNames + 1;i++ ) | 240 for( i=0;fsVideoFilterNames[i][0];i++ ) |
217 fsList_items=g_list_append( fsList_items,fsVideoFilterNames[i][0] ); | 241 fsList_items=g_list_append( fsList_items,fsVideoFilterNames[i][0] ); |
218 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); | 242 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); |
219 g_list_free( fsList_items ); | 243 g_list_free( fsList_items ); |
220 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsVideoFilterNames[fsNumberOfVideoFilterNames - 1][0] ); | 244 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsVideoFilterNames[i-2][0] ); |
221 tmp=guiIntfStruct.Filename; | 245 tmp=guiIntfStruct.Filename; |
222 break; | 246 break; |
223 case fsSubtitleSelector: | 247 case fsSubtitleSelector: |
224 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_SubtitleSelect ); | 248 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_SubtitleSelect ); |
225 fsList_items=NULL; | 249 fsList_items=NULL; |
226 for( i=0;i<fsNumberOfSubtitleFilterNames + 1;i++ ) | 250 for( i=0;fsSubtitleFilterNames[i][0];i++ ) |
227 fsList_items=g_list_append( fsList_items,fsSubtitleFilterNames[i][0] ); | 251 fsList_items=g_list_append( fsList_items,fsSubtitleFilterNames[i][0] ); |
228 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); | 252 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); |
229 g_list_free( fsList_items ); | 253 g_list_free( fsList_items ); |
230 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsSubtitleFilterNames[fsNumberOfSubtitleFilterNames - 1][0] ); | 254 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsSubtitleFilterNames[i-2][0] ); |
231 tmp=guiIntfStruct.Subtitlename; | 255 tmp=guiIntfStruct.Subtitlename; |
232 break; | 256 break; |
233 case fsOtherSelector: | 257 case fsOtherSelector: |
234 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_OtherSelect ); | 258 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_OtherSelect ); |
235 fsList_items=NULL; | 259 fsList_items=NULL; |
236 for( i=0;i<fsNumberOfSubtitleFilterNames + 1;i++ ) | 260 for( i=0;fsOtherFilterNames[i][0];i++ ) |
237 fsList_items=g_list_append( fsList_items,fsOtherFilterNames[i][0] ); | 261 fsList_items=g_list_append( fsList_items,fsOtherFilterNames[i][0] ); |
238 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); | 262 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); |
239 g_list_free( fsList_items ); | 263 g_list_free( fsList_items ); |
240 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsOtherFilterNames[fsNumberOfOtherFilterNames][0] ); | 264 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsOtherFilterNames[0][0] ); |
241 tmp=guiIntfStruct.Othername; | 265 tmp=guiIntfStruct.Othername; |
242 break; | 266 break; |
243 case fsAudioSelector: | 267 case fsAudioSelector: |
244 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_AudioFileSelect ); | 268 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_AudioFileSelect ); |
245 fsList_items=NULL; | 269 fsList_items=NULL; |
246 for( i=0;i<fsNumberOfAudioFilterNames + 1;i++ ) | 270 for( i=0;fsAudioFileNames[i][0];i++ ) |
247 fsList_items=g_list_append( fsList_items,fsAudioFileNames[i][0] ); | 271 fsList_items=g_list_append( fsList_items,fsAudioFileNames[i][0] ); |
248 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); | 272 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); |
249 g_list_free( fsList_items ); | 273 g_list_free( fsList_items ); |
250 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsAudioFileNames[fsNumberOfAudioFilterNames - 1][0] ); | 274 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsAudioFileNames[i-2][0] ); |
251 tmp=guiIntfStruct.AudioFile; | 275 tmp=guiIntfStruct.AudioFile; |
252 break; | 276 break; |
253 case fsFontSelector: | 277 case fsFontSelector: |
254 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_FontSelect ); | 278 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_FontSelect ); |
255 fsList_items=NULL; | 279 fsList_items=NULL; |
256 for( i=0;i<fsNumberOfFontFilterNames + 1;i++ ) | 280 for( i=0;fsFontFileNames[i][0];i++ ) |
257 fsList_items=g_list_append( fsList_items,fsFontFileNames[i][0] ); | 281 fsList_items=g_list_append( fsList_items,fsFontFileNames[i][0] ); |
258 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); | 282 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); |
259 g_list_free( fsList_items ); | 283 g_list_free( fsList_items ); |
260 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsFontFileNames[fsNumberOfFontFilterNames - 1][0] ); | 284 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsFontFileNames[i-2][0] ); |
261 tmp=font_name; | 285 tmp=font_name; |
262 break; | 286 break; |
263 } | 287 } |
264 | 288 |
265 if ( tmp && tmp[0] ) | 289 if ( tmp && tmp[0] ) |
318 str=gtk_entry_get_text( GTK_ENTRY(user_data ) ); | 342 str=gtk_entry_get_text( GTK_ENTRY(user_data ) ); |
319 | 343 |
320 switch ( fsType ) | 344 switch ( fsType ) |
321 { | 345 { |
322 case fsVideoSelector: | 346 case fsVideoSelector: |
323 for( i=0;i<fsNumberOfVideoFilterNames+1;i++ ) | 347 for( i=0;fsVideoFilterNames[i][0];i++ ) |
324 if( !strcmp( str,fsVideoFilterNames[i][0] ) ) | 348 if( !strcmp( str,fsVideoFilterNames[i][0] ) ) |
325 { strcpy( fsFilter,fsVideoFilterNames[i][1] ); break; } | 349 { strcpy( fsFilter,fsVideoFilterNames[i][1] ); break; } |
326 break; | 350 break; |
327 case fsSubtitleSelector: | 351 case fsSubtitleSelector: |
328 for( i=0;i<fsNumberOfSubtitleFilterNames+1;i++ ) | 352 for( i=0;fsSubtitleFilterNames[i][0];i++ ) |
329 if( !strcmp( str,fsSubtitleFilterNames[i][0] ) ) | 353 if( !strcmp( str,fsSubtitleFilterNames[i][0] ) ) |
330 { strcpy( fsFilter,fsSubtitleFilterNames[i][1] ); break; } | 354 { strcpy( fsFilter,fsSubtitleFilterNames[i][1] ); break; } |
331 break; | 355 break; |
332 case fsOtherSelector: | 356 case fsOtherSelector: |
333 for( i=0;i<fsNumberOfOtherFilterNames+1;i++ ) | 357 for( i=0;fsOtherFilterNames[i][0];i++ ) |
334 if( !strcmp( str,fsOtherFilterNames[i][0] ) ) | 358 if( !strcmp( str,fsOtherFilterNames[i][0] ) ) |
335 { strcpy( fsFilter,fsOtherFilterNames[i][1] ); break; } | 359 { strcpy( fsFilter,fsOtherFilterNames[i][1] ); break; } |
336 break; | 360 break; |
337 case fsAudioSelector: | 361 case fsAudioSelector: |
338 for( i=0;i<fsNumberOfAudioFilterNames+1;i++ ) | 362 for( i=0;fsAudioFileNames[i][0];i++ ) |
339 if( !strcmp( str,fsAudioFileNames[i][0] ) ) | 363 if( !strcmp( str,fsAudioFileNames[i][0] ) ) |
340 { strcpy( fsFilter,fsAudioFileNames[i][1] ); break; } | 364 { strcpy( fsFilter,fsAudioFileNames[i][1] ); break; } |
341 break; | 365 break; |
342 case fsFontSelector: | 366 case fsFontSelector: |
343 for( i=0;i<fsNumberOfFontFilterNames+1;i++ ) | 367 for( i=0;fsFontFileNames[i][0];i++ ) |
344 if( !strcmp( str,fsFontFileNames[i][0] ) ) | 368 if( !strcmp( str,fsFontFileNames[i][0] ) ) |
345 { strcpy( fsFilter,fsFontFileNames[i][1] ); break; } | 369 { strcpy( fsFilter,fsFontFileNames[i][1] ); break; } |
346 break; | 370 break; |
347 default: return; | 371 default: return; |
348 } | 372 } |
674 gtk_widget_ref( List ); | 698 gtk_widget_ref( List ); |
675 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"List",List,(GtkDestroyNotify)gtk_widget_unref ); | 699 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"List",List,(GtkDestroyNotify)gtk_widget_unref ); |
676 gtk_widget_show( List ); | 700 gtk_widget_show( List ); |
677 gtk_box_pack_start( GTK_BOX( vbox4 ),List,FALSE,FALSE,0 ); | 701 gtk_box_pack_start( GTK_BOX( vbox4 ),List,FALSE,FALSE,0 ); |
678 gtk_widget_set_usize( List,-2,20 ); | 702 gtk_widget_set_usize( List,-2,20 ); |
679 fsList_items=NULL; | |
680 for( i=0;i<fsNumberOfVideoFilterNames + 1;i++ ) | |
681 fsList_items=g_list_append( fsList_items,fsVideoFilterNames[i][0] ); | |
682 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); | |
683 g_list_free( fsList_items ); | |
684 | 703 |
685 fsFilterCombo=GTK_COMBO( List )->entry; | 704 fsFilterCombo=GTK_COMBO( List )->entry; |
686 gtk_widget_set_name( fsFilterCombo,"fsFilterCombo" ); | 705 gtk_widget_set_name( fsFilterCombo,"fsFilterCombo" ); |
687 gtk_widget_ref( fsFilterCombo ); | 706 gtk_widget_ref( fsFilterCombo ); |
688 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"fsFilterCombo",fsFilterCombo,(GtkDestroyNotify)gtk_widget_unref ); | 707 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"fsFilterCombo",fsFilterCombo,(GtkDestroyNotify)gtk_widget_unref ); |
689 gtk_widget_show( fsFilterCombo ); | 708 gtk_widget_show( fsFilterCombo ); |
690 gtk_entry_set_editable (GTK_ENTRY( fsFilterCombo ),FALSE ); | 709 gtk_entry_set_editable (GTK_ENTRY( fsFilterCombo ),FALSE ); |
691 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsVideoFilterNames[fsNumberOfVideoFilterNames - 1][0] ); | |
692 | 710 |
693 hseparator3=gtk_hseparator_new(); | 711 hseparator3=gtk_hseparator_new(); |
694 gtk_widget_set_name( hseparator3,"hseparator3" ); | 712 gtk_widget_set_name( hseparator3,"hseparator3" ); |
695 gtk_widget_ref( hseparator3 ); | 713 gtk_widget_ref( hseparator3 ); |
696 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"hseparator3",hseparator3,(GtkDestroyNotify)gtk_widget_unref ); | 714 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"hseparator3",hseparator3,(GtkDestroyNotify)gtk_widget_unref ); |