Mercurial > mplayer.hg
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 ); |