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 );