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