comparison Gui/mplayer/gtk/fs.c @ 6794:77980ab4e296

- add preferences support (first try) - fix some playlist bug - fix some equ bug - fix some redraw bug - fix dvd playing - fix file open dialog box - etc.
author pontscho
date Thu, 25 Jul 2002 20:26:38 +0000
parents a31b9f15cbff
children ed02bae611d5
comparison
equal deleted inserted replaced
6793:48d432a8d531 6794:77980ab4e296
18 #include "../../../help_mp.h" 18 #include "../../../help_mp.h"
19 #include "../../../libmpdemux/stream.h" 19 #include "../../../libmpdemux/stream.h"
20 20
21 #include "../widgets.h" 21 #include "../widgets.h"
22 #include "fs.h" 22 #include "fs.h"
23 #include "opts.h"
23 24
24 #ifndef __linux__ 25 #ifndef __linux__
25 #define get_current_dir_name() getcwd(NULL, PATH_MAX) 26 #define get_current_dir_name() getcwd(NULL, PATH_MAX)
26 #endif 27 #endif
27 28
72 #define fsNumberOfAudioFilterNames 3 73 #define fsNumberOfAudioFilterNames 3
73 char * fsAudioFileNames[fsNumberOfAudioFilterNames+1][2] = 74 char * fsAudioFileNames[fsNumberOfAudioFilterNames+1][2] =
74 { { "WAV files (*.wav)", "*.wav" }, 75 { { "WAV files (*.wav)", "*.wav" },
75 { "MP3 files (*.mp2, *.mp3)", "*.mp2,*.mp3" }, 76 { "MP3 files (*.mp2, *.mp3)", "*.mp2,*.mp3" },
76 { "Audio files (*.wav,*.mp2,*.mp3)", "*.wav,*.mp2,*.mp3" }, 77 { "Audio files (*.wav,*.mp2,*.mp3)", "*.wav,*.mp2,*.mp3" },
78 { "All files ( * )", "*" } };
79
80 #define fsNumberOfFontFilterNames 1
81 char * fsFontFileNames[fsNumberOfFontFilterNames+1][2] =
82 { { "font files (*.desc)", "*.desc" },
77 { "All files ( * )", "*" } }; 83 { "All files ( * )", "*" } };
78 84
79 GtkWidget * fsFileNamesList; 85 GtkWidget * fsFileNamesList;
80 GtkWidget * fsFNameList; 86 GtkWidget * fsFNameList;
81 GtkWidget * fsFileSelect; 87 GtkWidget * fsFileSelect;
118 strcpy( str[0][1],".." ); gtk_clist_append( GTK_CLIST( list ),str[0] ); gtk_clist_set_pixmap( GTK_CLIST( list ),1,0,pixmap,mask ); 124 strcpy( str[0][1],".." ); gtk_clist_append( GTK_CLIST( list ),str[0] ); gtk_clist_set_pixmap( GTK_CLIST( list ),1,0,pixmap,mask );
119 free( str[0][0] ); 125 free( str[0][0] );
120 126
121 glob( "*",0,NULL,&gg ); 127 glob( "*",0,NULL,&gg );
122 // glob( ".*",GLOB_NOSORT | GLOB_APPEND,NULL,&gg ); 128 // glob( ".*",GLOB_NOSORT | GLOB_APPEND,NULL,&gg );
123 for( i=0;i<gg.gl_pathc;i++ ) 129 for( i=0;(unsigned)i<gg.gl_pathc;i++ )
124 { 130 {
125 stat( gg.gl_pathv[i],&fs ); 131 stat( gg.gl_pathv[i],&fs );
126 if( !S_ISDIR( fs.st_mode ) ) continue; 132 if( !S_ISDIR( fs.st_mode ) ) continue;
127 133
128 str[0][1]=(gchar *)malloc( strlen( gg.gl_pathv[i] ) + 1 ); 134 str[0][1]=(gchar *)malloc( strlen( gg.gl_pathv[i] ) + 1 );
169 } 175 }
170 #endif 176 #endif
171 177
172 // glob( ".*",GLOB_NOSORT | GLOB_APPEND,NULL,&gg ); 178 // glob( ".*",GLOB_NOSORT | GLOB_APPEND,NULL,&gg );
173 pixmap=fpixmap; mask=fmask; 179 pixmap=fpixmap; mask=fmask;
174 for( i=0;i<gg.gl_pathc;i++ ) 180 for( i=0;(unsigned)i<gg.gl_pathc;i++ )
175 { 181 {
176 stat( gg.gl_pathv[i],&fs ); 182 stat( gg.gl_pathv[i],&fs );
177 if( S_ISDIR( fs.st_mode ) ) continue; 183 if( S_ISDIR( fs.st_mode ) ) continue;
178 184
179 str[0][1]=(gchar *)malloc( strlen( gg.gl_pathv[i] ) + 1 ); 185 str[0][1]=(gchar *)malloc( strlen( gg.gl_pathv[i] ) + 1 );
187 gtk_clist_set_column_width( GTK_CLIST( list ),0,17 ); 193 gtk_clist_set_column_width( GTK_CLIST( list ),0,17 );
188 gtk_clist_select_row( GTK_CLIST( list ),0,1 ); 194 gtk_clist_select_row( GTK_CLIST( list ),0,1 );
189 gtk_widget_show( list ); 195 gtk_widget_show( list );
190 } 196 }
191 197
192 static int FirstInit = 1;
193
194 void ShowFileSelect( int type,int modal ) 198 void ShowFileSelect( int type,int modal )
195 { 199 {
196 int i; 200 int i;
201 char * tmp = NULL;
197 202
198 if ( gtkVFileSelect ) gtkActive( fsFileSelect ); 203 if ( gtkVFileSelect ) gtkActive( fsFileSelect );
199 else fsFileSelect=create_FileSelect(); 204 else fsFileSelect=create_FileSelect();
200 205
201 if ( FirstInit )
202 {
203 fsTopList_items=g_list_append( fsTopList_items,(gchar *)get_current_dir_name() );
204 if ( getenv( "HOME" ) ) fsTopList_items=g_list_append( fsTopList_items,getenv( "HOME" ) );
205 fsTopList_items=g_list_append( fsTopList_items,"/home" );
206 fsTopList_items=g_list_append( fsTopList_items,"/mnt" );
207 fsTopList_items=g_list_append( fsTopList_items,"/" );
208 FirstInit=0;
209 }
210 gtk_combo_set_popdown_strings( GTK_COMBO( fsCombo4 ),fsTopList_items );
211
212 fsType=type; 206 fsType=type;
213 switch ( type ) 207 switch ( type )
214 { 208 {
215 case fsVideoSelector: 209 case fsVideoSelector:
216 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_FileSelect ); 210 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_FileSelect );
218 for( i=0;i<fsNumberOfVideoFilterNames + 1;i++ ) 212 for( i=0;i<fsNumberOfVideoFilterNames + 1;i++ )
219 fsList_items=g_list_append( fsList_items,fsVideoFilterNames[i][0] ); 213 fsList_items=g_list_append( fsList_items,fsVideoFilterNames[i][0] );
220 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); 214 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items );
221 g_list_free( fsList_items ); 215 g_list_free( fsList_items );
222 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsVideoFilterNames[fsNumberOfVideoFilterNames - 1][0] ); 216 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsVideoFilterNames[fsNumberOfVideoFilterNames - 1][0] );
217 tmp=guiIntfStruct.Filename;
223 break; 218 break;
224 case fsSubtitleSelector: 219 case fsSubtitleSelector:
225 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_SubtitleSelect ); 220 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_SubtitleSelect );
226 fsList_items=NULL; 221 fsList_items=NULL;
227 for( i=0;i<fsNumberOfSubtitleFilterNames + 1;i++ ) 222 for( i=0;i<fsNumberOfSubtitleFilterNames + 1;i++ )
228 fsList_items=g_list_append( fsList_items,fsSubtitleFilterNames[i][0] ); 223 fsList_items=g_list_append( fsList_items,fsSubtitleFilterNames[i][0] );
229 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); 224 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items );
230 g_list_free( fsList_items ); 225 g_list_free( fsList_items );
231 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsSubtitleFilterNames[fsNumberOfSubtitleFilterNames - 1][0] ); 226 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsSubtitleFilterNames[fsNumberOfSubtitleFilterNames - 1][0] );
227 tmp=guiIntfStruct.Subtitlename;
232 break; 228 break;
233 case fsOtherSelector: 229 case fsOtherSelector:
234 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_OtherSelect ); 230 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_OtherSelect );
235 fsList_items=NULL; 231 fsList_items=NULL;
236 for( i=0;i<fsNumberOfSubtitleFilterNames + 1;i++ ) 232 for( i=0;i<fsNumberOfSubtitleFilterNames + 1;i++ )
237 fsList_items=g_list_append( fsList_items,fsOtherFilterNames[i][0] ); 233 fsList_items=g_list_append( fsList_items,fsOtherFilterNames[i][0] );
238 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); 234 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items );
239 g_list_free( fsList_items ); 235 g_list_free( fsList_items );
240 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsOtherFilterNames[fsNumberOfOtherFilterNames][0] ); 236 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsOtherFilterNames[fsNumberOfOtherFilterNames][0] );
237 tmp=guiIntfStruct.Othername;
241 break; 238 break;
242 case fsAudioSelector: 239 case fsAudioSelector:
243 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_AudioFileSelect ); 240 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_AudioFileSelect );
244 fsList_items=NULL; 241 fsList_items=NULL;
245 for( i=0;i<fsNumberOfAudioFilterNames + 1;i++ ) 242 for( i=0;i<fsNumberOfAudioFilterNames + 1;i++ )
246 fsList_items=g_list_append( fsList_items,fsAudioFileNames[i][0] ); 243 fsList_items=g_list_append( fsList_items,fsAudioFileNames[i][0] );
247 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); 244 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items );
248 g_list_free( fsList_items ); 245 g_list_free( fsList_items );
249 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsAudioFileNames[fsNumberOfAudioFilterNames - 1][0] ); 246 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsAudioFileNames[fsNumberOfAudioFilterNames - 1][0] );
247 tmp=guiIntfStruct.AudioFile;
250 break; 248 break;
249 case fsFontSelector:
250 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_FontSelect );
251 fsList_items=NULL;
252 for( i=0;i<fsNumberOfFontFilterNames + 1;i++ )
253 fsList_items=g_list_append( fsList_items,fsFontFileNames[i][0] );
254 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items );
255 g_list_free( fsList_items );
256 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsFontFileNames[fsNumberOfFontFilterNames - 1][0] );
257 tmp=guiIntfStruct.Fontname;
258 break;
259 }
260
261 if ( tmp && tmp[0] )
262 {
263 struct stat f;
264 char * dir = strdup( tmp );
265
266 do
267 {
268 char * c = strrchr( dir,'/' );
269 stat( dir,&f );
270 if ( S_ISDIR( f.st_mode ) ) break;
271 if ( c ) *c=0;
272 } while ( strrchr( dir,'/' ) );
273
274 if ( dir[0] ) chdir( dir );
275
276 free( dir );
251 } 277 }
252 278
279 if ( fsTopList_items ) g_list_free( fsTopList_items ); fsTopList_items=NULL;
280 fsTopList_items=g_list_append( fsTopList_items,(gchar *)get_current_dir_name() );
281 if ( getenv( "HOME" ) ) fsTopList_items=g_list_append( fsTopList_items,getenv( "HOME" ) );
282 fsTopList_items=g_list_append( fsTopList_items,"/home" );
283 fsTopList_items=g_list_append( fsTopList_items,"/mnt" );
284 fsTopList_items=g_list_append( fsTopList_items,"/" );
285 gtk_combo_set_popdown_strings( GTK_COMBO( fsCombo4 ),fsTopList_items );
286
253 gtk_window_set_modal( GTK_WINDOW( fsFileSelect ),modal ); 287 gtk_window_set_modal( GTK_WINDOW( fsFileSelect ),modal );
254 288
255 gtk_widget_show( fsFileSelect ); gtkVisible++; 289 gtk_widget_show( fsFileSelect ); gtkVisible++;
256 } 290 }
257 291
299 case fsAudioSelector: 333 case fsAudioSelector:
300 for( i=0;i<fsNumberOfAudioFilterNames+1;i++ ) 334 for( i=0;i<fsNumberOfAudioFilterNames+1;i++ )
301 if( !strcmp( str,fsAudioFileNames[i][0] ) ) 335 if( !strcmp( str,fsAudioFileNames[i][0] ) )
302 { strcpy( fsFilter,fsAudioFileNames[i][1] ); break; } 336 { strcpy( fsFilter,fsAudioFileNames[i][1] ); break; }
303 break; 337 break;
338 case fsFontSelector:
339 for( i=0;i<fsNumberOfFontFilterNames+1;i++ )
340 if( !strcmp( str,fsFontFileNames[i][0] ) )
341 { strcpy( fsFilter,fsFontFileNames[i][1] ); break; }
342 break;
304 default: return; 343 default: return;
305 } 344 }
306 CheckDir( fsFNameList,get_current_dir_name() ); 345 CheckDir( fsFNameList,get_current_dir_name() );
307 } 346 }
308 347
383 { 422 {
384 case fsVideoSelector: 423 case fsVideoSelector:
385 guiSetDF( guiIntfStruct.Filename,fsSelectedDirectory,fsSelectedFile ); 424 guiSetDF( guiIntfStruct.Filename,fsSelectedDirectory,fsSelectedFile );
386 guiIntfStruct.StreamType=STREAMTYPE_FILE; 425 guiIntfStruct.StreamType=STREAMTYPE_FILE;
387 guiIntfStruct.FilenameChanged=1; 426 guiIntfStruct.FilenameChanged=1;
388 if ( guiIntfStruct.AudioFile ) free( guiIntfStruct.AudioFile ); 427 gfree( &guiIntfStruct.AudioFile );
389 guiIntfStruct.AudioFile=NULL; 428 gfree( &guiIntfStruct.Subtitlename );
390 break; 429 break;
391 case fsSubtitleSelector: 430 case fsSubtitleSelector:
392 guiSetDF( guiIntfStruct.Subtitlename,fsSelectedDirectory,fsSelectedFile ); 431 guiSetDF( guiIntfStruct.Subtitlename,fsSelectedDirectory,fsSelectedFile );
393 guiIntfStruct.SubtitleChanged=1; 432 guiIntfStruct.SubtitleChanged=1;
394 break; 433 break;
396 guiSetDF( guiIntfStruct.Othername,fsSelectedDirectory,fsSelectedFile ); 435 guiSetDF( guiIntfStruct.Othername,fsSelectedDirectory,fsSelectedFile );
397 break; 436 break;
398 case fsAudioSelector: 437 case fsAudioSelector:
399 guiSetDF( guiIntfStruct.AudioFile,fsSelectedDirectory,fsSelectedFile ); 438 guiSetDF( guiIntfStruct.AudioFile,fsSelectedDirectory,fsSelectedFile );
400 break; 439 break;
440 case fsFontSelector:
441 guiSetDF( guiIntfStruct.Fontname,fsSelectedDirectory,fsSelectedFile );
442 #if defined( USE_OSD ) || defined( USE_SUB )
443 guiLoadFont();
444 #endif
445 if ( gtkVPreferences ) gtk_entry_set_text( GTK_ENTRY( prEFontName ),guiIntfStruct.Fontname );
446 break;
401 } 447 }
402 448
403 HideFileSelect(); 449 HideFileSelect();
404 450
405 item=fsTopList_items; 451 item=fsTopList_items;
672 gtk_widget_show( fsCancel ); 718 gtk_widget_show( fsCancel );
673 719
674 gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"destroy",GTK_SIGNAL_FUNC( fs_fsFileSelect_destroy ),NULL ); 720 gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"destroy",GTK_SIGNAL_FUNC( fs_fsFileSelect_destroy ),NULL );
675 gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"key_release_event",GTK_SIGNAL_FUNC( on_FileSelect_key_release_event ),NULL ); 721 gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"key_release_event",GTK_SIGNAL_FUNC( on_FileSelect_key_release_event ),NULL );
676 722
677 gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"show",GTK_SIGNAL_FUNC( fs_FileSelect_show ),1 ); 723 gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"show",GTK_SIGNAL_FUNC( fs_FileSelect_show ),(void *)1 );
678 gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"hide",GTK_SIGNAL_FUNC( fs_FileSelect_show ),0 ); 724 gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"hide",GTK_SIGNAL_FUNC( fs_FileSelect_show ),0 );
679 725
680 gtk_signal_connect( GTK_OBJECT( fsFilterCombo ),"changed",GTK_SIGNAL_FUNC( fs_fsFilterCombo_changed ),fsFilterCombo ); 726 gtk_signal_connect( GTK_OBJECT( fsFilterCombo ),"changed",GTK_SIGNAL_FUNC( fs_fsFilterCombo_changed ),fsFilterCombo );
681 gtk_signal_connect( GTK_OBJECT( fsFilterCombo ),"activate",GTK_SIGNAL_FUNC( fs_fsFilterCombo_activate ),fsFilterCombo ); 727 gtk_signal_connect( GTK_OBJECT( fsFilterCombo ),"activate",GTK_SIGNAL_FUNC( fs_fsFilterCombo_activate ),fsFilterCombo );
682 gtk_signal_connect( GTK_OBJECT( fsPathCombo ),"changed",GTK_SIGNAL_FUNC( fs_fsPathCombo_changed ),fsPathCombo ); 728 gtk_signal_connect( GTK_OBJECT( fsPathCombo ),"changed",GTK_SIGNAL_FUNC( fs_fsPathCombo_changed ),fsPathCombo );