Mercurial > mplayer.hg
comparison Gui/mplayer/gtk/fs.c @ 2901:f77f8379f28f
rewrite ...
author | pontscho |
---|---|
date | Wed, 14 Nov 2001 16:04:25 +0000 |
parents | |
children | b7c361557a61 |
comparison
equal
deleted
inserted
replaced
2900:7345a10e6012 | 2901:f77f8379f28f |
---|---|
1 | |
2 #include <stdlib.h> | |
3 #include <stdio.h> | |
4 #include <string.h> | |
5 #include <sys/stat.h> | |
6 #include <glob.h> | |
7 #include <unistd.h> | |
8 | |
9 #include "./mplayer.h" | |
10 #include "psignal.h" | |
11 #include "../error.h" | |
12 | |
13 #include "pixmaps/up.xpm" | |
14 #include "pixmaps/dir.xpm" | |
15 #include "pixmaps/file.xpm" | |
16 | |
17 #include "../../events.h" | |
18 #include "../../../config.h" | |
19 #include "../../../help_mp.h" | |
20 | |
21 #include "../widgets.h" | |
22 #include "fs.h" | |
23 | |
24 #ifndef __linux__ | |
25 #define get_current_dir_name() getcwd(NULL, PATH_MAX) | |
26 #endif | |
27 | |
28 #ifndef get_current_dir_name | |
29 extern char * get_current_dir_name( void ); | |
30 #endif | |
31 | |
32 gchar * fsSelectedFile = NULL; | |
33 gchar * fsSelectedDirectory = NULL; | |
34 unsigned char * fsThatDir = "."; | |
35 gchar * fsFilter = NULL; | |
36 | |
37 int fsPressed = 0; | |
38 int fsLastFilterNames = 2; | |
39 unsigned char * fsFilterNames[3][2] = { { "MPEG files( *.mpg )", "*.mpg" }, | |
40 { "AVI files( *.avi )", "*.avi" }, | |
41 { "All files( *)", "*" } }; | |
42 | |
43 GtkWidget * fsFileNamesList; | |
44 GtkWidget * fsFNameList; | |
45 GtkWidget * fsFileSelect; | |
46 GdkColormap * fsColorMap; | |
47 GtkWidget * fsOk; | |
48 GtkWidget * fsUp; | |
49 GtkWidget * fsCancel; | |
50 GtkWidget * fsCombo4; | |
51 GtkWidget * fsComboEntry2; | |
52 GList * fsList_items = NULL; | |
53 GList * fsTopList_items = NULL; | |
54 | |
55 void CheckDir( GtkWidget * list,unsigned char * directory ) | |
56 { | |
57 struct stat fs; | |
58 int i,c=2; | |
59 gchar * str[1][2]; | |
60 GdkPixmap * dpixmap,*fpixmap,*pixmap; | |
61 GdkBitmap * dmask,*fmask,*mask; | |
62 GtkStyle * style; | |
63 glob_t gg; | |
64 | |
65 gtk_widget_hide( list ); | |
66 str[0][0]=NULL; | |
67 style=gtk_widget_get_style( fsFileSelect ); | |
68 dpixmap=gdk_pixmap_colormap_create_from_xpm_d( fsFileSelect->window,fsColorMap,&dmask,&style->bg[GTK_STATE_NORMAL],(gchar **)dir_xpm ); | |
69 fpixmap=gdk_pixmap_colormap_create_from_xpm_d( fsFileSelect->window,fsColorMap,&fmask,&style->bg[GTK_STATE_NORMAL],(gchar **)file_xpm ); | |
70 pixmap=dpixmap; mask=dmask; | |
71 str[0][0]=NULL; str[0][1]=(gchar *)malloc( 3 ); | |
72 strcpy( str[0][1],"." ); | |
73 gtk_clist_append( GTK_CLIST( list ),str[0] ); gtk_clist_set_pixmap( GTK_CLIST( list ),0,0,pixmap,mask ); | |
74 strcpy( str[0][1],".." ); | |
75 gtk_clist_append( GTK_CLIST( list ),str[0] ); gtk_clist_set_pixmap( GTK_CLIST( list ),1,0,pixmap,mask ); | |
76 free( str[0][0] ); | |
77 | |
78 glob( "*",GLOB_NOSORT,NULL,&gg ); | |
79 // glob( ".*",GLOB_NOSORT | GLOB_APPEND,NULL,&gg ); | |
80 for( i=0;i<gg.gl_pathc;i++ ) | |
81 { | |
82 if( !strcmp( gg.gl_pathv[i],"." ) || !strcmp( gg.gl_pathv[i],".." ) ) continue; | |
83 stat( gg.gl_pathv[i],&fs ); | |
84 if( S_ISDIR( fs.st_mode ) ) | |
85 { | |
86 str[0][1]=(gchar *)malloc( strlen( gg.gl_pathv[i] ) + 2 ); | |
87 strcpy( str[0][1],"" ); | |
88 strcat( str[0][1],gg.gl_pathv[i] ); | |
89 pixmap=dpixmap; mask=dmask; | |
90 gtk_clist_append( GTK_CLIST( list ),str[0] ); | |
91 gtk_clist_set_pixmap( GTK_CLIST( list ),c,0,pixmap,mask ); | |
92 free( str[0][1] ); | |
93 c++; | |
94 } | |
95 } | |
96 globfree( &gg ); | |
97 glob( fsFilter,GLOB_NOSORT,NULL,&gg ); | |
98 // glob( ".*",GLOB_NOSORT | GLOB_APPEND,NULL,&gg ); | |
99 pixmap=fpixmap; mask=fmask; | |
100 for( i=0;i<gg.gl_pathc;i++ ) | |
101 { | |
102 if( !strcmp( gg.gl_pathv[i],"." ) || !strcmp( gg.gl_pathv[i],".." ) ) continue; | |
103 stat( gg.gl_pathv[i],&fs ); | |
104 if( S_ISDIR( fs.st_mode ) ) continue; | |
105 str[0][1]=(gchar *)malloc( strlen( gg.gl_pathv[i] ) + 2 ); | |
106 strcpy( str[0][1],"" ); strcat( str[0][1],gg.gl_pathv[i] ); | |
107 gtk_clist_append( GTK_CLIST( list ),str[0] ); | |
108 gtk_clist_set_pixmap( GTK_CLIST( list ),c,0,pixmap,mask ); | |
109 free( str[0][1] ); | |
110 c++; | |
111 } | |
112 globfree( &gg ); | |
113 | |
114 gtk_clist_set_sort_type( GTK_CLIST( list ),GTK_SORT_ASCENDING ); | |
115 gtk_clist_set_compare_func( GTK_CLIST( list ),NULL ); | |
116 gtk_clist_set_sort_column( GTK_CLIST( list ),1 ); | |
117 gtk_clist_sort( GTK_CLIST( list ) ); | |
118 gtk_clist_set_column_width( GTK_CLIST( list ),0,17 ); | |
119 gtk_clist_select_row( GTK_CLIST( list ),0,1 ); | |
120 gtk_widget_show( list ); | |
121 } | |
122 | |
123 void HideFileSelect( void ) | |
124 { | |
125 gtk_widget_hide( fsFileSelect ); | |
126 gtkVisibleFileSelect=0; | |
127 gtkShMem->vs.window=evLoad; | |
128 gtkSendMessage( evHideWindow ); | |
129 } | |
130 | |
131 void fs_fsFileSelect_destroy( GtkObject * object,gpointer user_data ) | |
132 { HideFileSelect(); } | |
133 | |
134 void fs_combo_entry1_activate( GtkEditable * editable,gpointer user_data ) | |
135 { | |
136 unsigned char * str; | |
137 | |
138 str=gtk_entry_get_text( GTK_ENTRY(user_data ) ); | |
139 gtk_clist_clear( GTK_CLIST( fsFNameList ) ); | |
140 if( fsFilter ) free( fsFilter ); | |
141 if( ( fsFilter=(unsigned char *)malloc( strlen( str ) + 1 ) ) == NULL ) | |
142 { | |
143 dbprintf( 0,"[gtk] not enough memory.\n" ); | |
144 exit( 0 ); | |
145 } | |
146 strcpy( fsFilter,str ); | |
147 CheckDir( fsFNameList,(unsigned char *)get_current_dir_name() ); | |
148 } | |
149 | |
150 void fs_combo_entry1_changed( GtkEditable * editable,gpointer user_data ) | |
151 { | |
152 unsigned char * str; | |
153 int i; | |
154 | |
155 str=gtk_entry_get_text( GTK_ENTRY(user_data ) ); | |
156 | |
157 for( i=0;i<fsLastFilterNames+1;i++ ) | |
158 { | |
159 if( !strcmp( str,fsFilterNames[i][0] ) ) | |
160 { | |
161 if( fsFilter ) free( fsFilter ); | |
162 if( ( fsFilter=(unsigned char *)malloc( 6 ) ) == NULL ) | |
163 { | |
164 dbprintf( 0,"[gtk] not enough memory.\n" ); | |
165 exit( 0 ); | |
166 } | |
167 strcpy( fsFilter,fsFilterNames[i][1] ); | |
168 } | |
169 } | |
170 gtk_clist_clear( GTK_CLIST( fsFNameList ) ); | |
171 CheckDir( fsFNameList,(unsigned char *)get_current_dir_name() ); | |
172 } | |
173 | |
174 void fs_fsComboEntry2_activate( GtkEditable * editable,gpointer user_data ) | |
175 { | |
176 unsigned char * str; | |
177 | |
178 str=gtk_entry_get_text( GTK_ENTRY( user_data ) ); | |
179 if ( chdir( str ) != -1 ) | |
180 { | |
181 gtk_clist_clear( GTK_CLIST( fsFNameList ) ); | |
182 CheckDir( fsFNameList,(unsigned char *)get_current_dir_name() ); | |
183 } | |
184 } | |
185 | |
186 void fs_fsComboEntry2_changed( GtkEditable * editable,gpointer user_data ) | |
187 { | |
188 unsigned char * str; | |
189 | |
190 str=gtk_entry_get_text( GTK_ENTRY( user_data ) ); | |
191 fsPressed=2; | |
192 // if ( | |
193 // tmp=(unsigned char *)malloc( strlen( fsSelectedDirectory ) + 5 ); | |
194 // strcpy( tmp,fsSelectedDirectory ); strcat( tmp,"/*" ); | |
195 // fprintf( stderr,"str: %s\n",tmp ); | |
196 // free( tmp ); | |
197 if ( chdir( str ) != -1 ) | |
198 { | |
199 gtk_clist_clear( GTK_CLIST( fsFNameList ) ); | |
200 CheckDir( fsFNameList,(unsigned char *)get_current_dir_name() ); | |
201 } | |
202 } | |
203 | |
204 void fs_Up_released( GtkButton * button,gpointer user_data ) | |
205 { | |
206 chdir( ".." ); | |
207 fsSelectedFile=fsThatDir; | |
208 gtk_clist_clear( GTK_CLIST( user_data ) ); | |
209 CheckDir( fsFNameList,(unsigned char *)get_current_dir_name() ); | |
210 gtk_entry_set_text( GTK_ENTRY( fsComboEntry2 ),(unsigned char *)get_current_dir_name() ); | |
211 return; | |
212 } | |
213 | |
214 int fsFileExist( unsigned char * fname ) | |
215 { | |
216 FILE * f = fopen( fname,"r" ); | |
217 if ( f == NULL ) return 0; | |
218 fclose( f ); | |
219 return 1; | |
220 } | |
221 | |
222 void fs_Ok_released( GtkButton * button,gpointer user_data ) | |
223 { | |
224 unsigned char * str; | |
225 GList * item; | |
226 int size,j,i = 1; | |
227 struct stat fs; | |
228 | |
229 stat( fsSelectedFile,&fs ); | |
230 if( S_ISDIR(fs.st_mode ) ) | |
231 { | |
232 chdir( fsSelectedFile ); | |
233 fsSelectedFile=fsThatDir; | |
234 if( fsFNameList != NULL ) gtk_clist_clear( GTK_CLIST( fsFNameList ) ); | |
235 CheckDir( fsFNameList,(unsigned char *)get_current_dir_name() ); | |
236 gtk_entry_set_text( GTK_ENTRY( fsComboEntry2 ),(unsigned char *)get_current_dir_name() ); | |
237 return; | |
238 } | |
239 | |
240 HideFileSelect(); | |
241 | |
242 switch( fsPressed ) | |
243 { | |
244 case 1: | |
245 fsSelectedDirectory=(unsigned char *)get_current_dir_name(); | |
246 printf("[gtk-fs] 1-fsSelectedFile: %s\n",fsSelectedFile); | |
247 #ifdef DEBUG | |
248 dbprintf( 1,"[gtk-fs] fsSelectedFile: %s\n",fsSelectedFile ); | |
249 #endif | |
250 break; | |
251 case 2: | |
252 str=gtk_entry_get_text( GTK_ENTRY( fsComboEntry2 ) ); | |
253 fsSelectedFile=str; | |
254 printf("[gtk-fs] 2-fsSelectedFile: '%s' \n",fsSelectedFile); | |
255 #ifdef DEBUG | |
256 dbprintf( 1,"[gtk-fs] fsSelectedFile: %s\n",fsSelectedFile ); | |
257 #endif | |
258 if ( !fsFileExist( fsSelectedFile ) ) return; | |
259 fsSelectedDirectory=fsSelectedFile; | |
260 size=strlen( fsSelectedDirectory ); | |
261 for ( j=0;j<size;j++ ) | |
262 { | |
263 if ( fsSelectedDirectory[ size - j ] == '/' ) | |
264 { | |
265 fsSelectedFile+=size - j + 1; | |
266 fsSelectedDirectory[ size - j ]=0; | |
267 break; | |
268 } | |
269 } | |
270 printf("[gtk-fs-xxx] fsSelectedFile: '%s' \n",fsSelectedFile); | |
271 printf("[gtk-fs-xxx] fsSelectedDirectory: '%s' \n",fsSelectedDirectory); | |
272 break; | |
273 } | |
274 strcpy( gtkShMem->fs.dir,fsSelectedDirectory ); | |
275 strcpy( gtkShMem->fs.filename,fsSelectedFile ); | |
276 printf( "----gtk---> directory: %s\n",fsSelectedDirectory ); | |
277 printf( "----gtk---> filename: %s\n",fsSelectedFile ); | |
278 printf( "----gtksm-> directory: %s\n",gtkShMem->fs.dir ); | |
279 printf( "----gtksm-> filename: %s\n",gtkShMem->fs.filename ); | |
280 item=fsTopList_items; | |
281 while( item ) | |
282 { | |
283 if ( !strcmp( item->data,fsSelectedDirectory ) ) i=0; | |
284 item=item->next; | |
285 } | |
286 if ( i ) | |
287 { | |
288 fsTopList_items=g_list_prepend( fsTopList_items,(gchar *)get_current_dir_name() ); | |
289 gtk_combo_set_popdown_strings( GTK_COMBO( user_data ),fsTopList_items ); | |
290 } | |
291 gtkSendMessage( evFileLoaded ); | |
292 } | |
293 | |
294 void fs_Cancel_released( GtkButton * button,gpointer user_data ) | |
295 { HideFileSelect(); } | |
296 | |
297 void fs_fsFNameList_select_row( GtkWidget * widget,gint row,gint column,GdkEventButton *bevent,gpointer user_data ) | |
298 { | |
299 gtk_clist_get_text( GTK_CLIST(widget ),row,1,&fsSelectedFile ); fsSelectedFile++; | |
300 fsPressed=1; | |
301 if( !bevent ) return; | |
302 if( bevent->type == GDK_2BUTTON_PRESS ) gtk_button_released( GTK_BUTTON( fsOk ) ); | |
303 } | |
304 | |
305 gboolean on_FileSelect_key_release_event( GtkWidget * widget,GdkEventKey * event,gpointer user_data ) | |
306 { | |
307 switch ( event->keyval ) | |
308 { | |
309 case GDK_Escape: | |
310 gtk_button_released( GTK_BUTTON( fsCancel ) ); | |
311 break; | |
312 case GDK_Return: | |
313 gtk_button_released( GTK_BUTTON( fsOk ) ); | |
314 break; | |
315 case GDK_BackSpace: | |
316 gtk_button_released( GTK_BUTTON( fsUp ) ); | |
317 break; | |
318 } | |
319 return FALSE; | |
320 } | |
321 | |
322 GtkWidget * create_FileSelect( void ) | |
323 { | |
324 GtkWidget * FSFrame; | |
325 GtkWidget * frame2; | |
326 GtkWidget * frame3; | |
327 GtkWidget * frame4; | |
328 GtkWidget * vbox4; | |
329 GtkWidget * hbox4; | |
330 GtkWidget * vseparator1; | |
331 GtkWidget * hseparator1; | |
332 GtkWidget * hbox6; | |
333 GtkWidget * fsFNameListWindow; | |
334 GtkWidget * label1; | |
335 GtkWidget * hseparator2; | |
336 GtkWidget * List; | |
337 GtkWidget * combo_entry1; | |
338 GtkWidget * hseparator3; | |
339 GtkWidget * hbuttonbox3; | |
340 int i; | |
341 | |
342 // GtkWidget * okpixmapwid,*uppixmapwid,*cancelpixmapwid; | |
343 // GdkPixmap * okpixmap,*uppixmap,*cancelpixmap; | |
344 // GdkBitmap * okmask,*upmask,*cancelmask; | |
345 // GtkStyle * okstyle,*upstyle,*cancelstyle; | |
346 | |
347 GtkWidget * uppixmapwid; | |
348 GdkPixmap * uppixmap; | |
349 GdkBitmap * upmask; | |
350 GtkStyle * upstyle; | |
351 | |
352 if( ( fsFilter=(unsigned char *)malloc( 3 ) ) == NULL ) | |
353 { | |
354 dbprintf( 0,"[gtk] not enough memory.\n" ); | |
355 exit( 0 ); | |
356 } | |
357 strcpy( fsFilter,"*" ); | |
358 | |
359 fsFileSelect=gtk_window_new( GTK_WINDOW_DIALOG ); | |
360 gtk_widget_set_name( fsFileSelect,"fsFileSelect" ); | |
361 gtk_object_set_data( GTK_OBJECT( fsFileSelect ),"fsFileSelect",fsFileSelect ); | |
362 gtk_widget_set_usize( fsFileSelect,416,256 ); | |
363 GTK_WIDGET_SET_FLAGS( fsFileSelect,GTK_CAN_DEFAULT ); | |
364 gtk_widget_set_events( fsFileSelect,GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_FOCUS_CHANGE_MASK | GDK_STRUCTURE_MASK | GDK_PROPERTY_CHANGE_MASK | GDK_VISIBILITY_NOTIFY_MASK ); | |
365 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_FileSelect ); | |
366 gtk_window_set_position( GTK_WINDOW( fsFileSelect ),GTK_WIN_POS_CENTER ); | |
367 gtk_window_set_policy( GTK_WINDOW( fsFileSelect ),FALSE,FALSE,TRUE ); | |
368 fsColorMap=gdk_colormap_get_system(); | |
369 | |
370 FSFrame=gtk_frame_new( NULL ); | |
371 gtk_widget_set_name( FSFrame,"FSFrame" ); | |
372 gtk_widget_ref( FSFrame ); | |
373 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"FSFrame",FSFrame, | |
374 ( GtkDestroyNotify ) gtk_widget_unref ); | |
375 gtk_widget_show( FSFrame ); | |
376 gtk_container_add( GTK_CONTAINER( fsFileSelect ),FSFrame ); | |
377 gtk_container_set_border_width( GTK_CONTAINER( FSFrame ),1 ); | |
378 gtk_frame_set_shadow_type( GTK_FRAME( FSFrame ),GTK_SHADOW_IN ); | |
379 | |
380 frame2=gtk_frame_new( NULL ); | |
381 gtk_widget_set_name( frame2,"frame2" ); | |
382 gtk_widget_ref( frame2 ); | |
383 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"frame2",frame2, | |
384 ( GtkDestroyNotify ) gtk_widget_unref ); | |
385 gtk_widget_show( frame2 ); | |
386 gtk_container_add( GTK_CONTAINER( FSFrame ),frame2 ); | |
387 gtk_frame_set_shadow_type( GTK_FRAME( frame2 ),GTK_SHADOW_NONE ); | |
388 | |
389 frame3=gtk_frame_new( NULL ); | |
390 gtk_widget_set_name( frame3,"frame3" ); | |
391 gtk_widget_ref( frame3 ); | |
392 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"frame3",frame3, | |
393 ( GtkDestroyNotify ) gtk_widget_unref ); | |
394 gtk_widget_show( frame3 ); | |
395 gtk_container_add( GTK_CONTAINER( frame2 ),frame3 ); | |
396 gtk_frame_set_shadow_type( GTK_FRAME( frame3 ),GTK_SHADOW_ETCHED_OUT ); | |
397 | |
398 frame4=gtk_frame_new( NULL ); | |
399 gtk_widget_set_name( frame4,"frame4" ); | |
400 gtk_widget_ref( frame4 ); | |
401 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"frame4",frame4, | |
402 ( GtkDestroyNotify ) gtk_widget_unref ); | |
403 gtk_widget_show( frame4 ); | |
404 gtk_container_add( GTK_CONTAINER( frame3 ),frame4 ); | |
405 gtk_container_set_border_width( GTK_CONTAINER( frame4 ),1 ); | |
406 gtk_frame_set_shadow_type( GTK_FRAME( frame4 ),GTK_SHADOW_NONE ); | |
407 | |
408 vbox4=gtk_vbox_new( FALSE,0 ); | |
409 gtk_widget_set_name( vbox4,"vbox4" ); | |
410 gtk_widget_ref( vbox4 ); | |
411 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"vbox4",vbox4, | |
412 ( GtkDestroyNotify ) gtk_widget_unref ); | |
413 gtk_widget_show( vbox4 ); | |
414 gtk_container_add( GTK_CONTAINER( frame4 ),vbox4 ); | |
415 | |
416 hbox4=gtk_hbox_new( FALSE,0 ); | |
417 gtk_widget_set_name( hbox4,"hbox4" ); | |
418 gtk_widget_ref( hbox4 ); | |
419 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"hbox4",hbox4, | |
420 ( GtkDestroyNotify ) gtk_widget_unref ); | |
421 gtk_widget_show( hbox4 ); | |
422 gtk_box_pack_start( GTK_BOX( vbox4 ),hbox4,TRUE,TRUE,0 ); | |
423 | |
424 fsCombo4=gtk_combo_new(); | |
425 gtk_widget_set_name( fsCombo4,"fsCombo4" ); | |
426 gtk_widget_ref( fsCombo4 ); | |
427 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"fsCombo4",fsCombo4, | |
428 ( GtkDestroyNotify ) gtk_widget_unref ); | |
429 gtk_widget_show( fsCombo4 ); | |
430 gtk_box_pack_start( GTK_BOX( hbox4 ),fsCombo4,TRUE,TRUE,0 ); | |
431 gtk_widget_set_usize( fsCombo4,-2,20 ); | |
432 | |
433 fsTopList_items=g_list_append( fsTopList_items,(gchar *)get_current_dir_name() ); | |
434 if ( getenv( "HOME" ) ) fsTopList_items=g_list_append( fsTopList_items,getenv( "HOME" ) ); | |
435 fsTopList_items=g_list_append( fsTopList_items,"/home" ); | |
436 fsTopList_items=g_list_append( fsTopList_items,"/mnt" ); | |
437 fsTopList_items=g_list_append( fsTopList_items,"/" ); | |
438 gtk_combo_set_popdown_strings( GTK_COMBO( fsCombo4 ),fsTopList_items ); | |
439 | |
440 fsComboEntry2=GTK_COMBO( fsCombo4 )->entry; | |
441 gtk_widget_set_name( fsComboEntry2,"fsComboEntry2" ); | |
442 gtk_widget_ref( fsComboEntry2 ); | |
443 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"fsComboEntry2",fsComboEntry2,( GtkDestroyNotify ) gtk_widget_unref ); | |
444 gtk_widget_show( fsComboEntry2 ); | |
445 gtk_widget_set_usize( fsComboEntry2,-2,20 ); | |
446 | |
447 vseparator1=gtk_vseparator_new(); | |
448 gtk_widget_set_name( vseparator1,"vseparator1" ); | |
449 gtk_widget_ref( vseparator1 ); | |
450 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"vseparator1",vseparator1, | |
451 ( GtkDestroyNotify ) gtk_widget_unref ); | |
452 gtk_widget_show( vseparator1 ); | |
453 gtk_box_pack_start( GTK_BOX( hbox4 ),vseparator1,FALSE,TRUE,0 ); | |
454 gtk_widget_set_usize( vseparator1,7,20 ); | |
455 | |
456 upstyle=gtk_widget_get_style( fsFileSelect ); | |
457 uppixmap=gdk_pixmap_colormap_create_from_xpm_d( fsFileSelect->window,fsColorMap,&upmask,&upstyle->bg[GTK_STATE_NORMAL],(gchar **)up_xpm ); | |
458 uppixmapwid=gtk_pixmap_new( uppixmap,upmask ); | |
459 gtk_widget_show( uppixmapwid ); | |
460 | |
461 fsUp=gtk_button_new(); | |
462 gtk_container_add( GTK_CONTAINER(fsUp ),uppixmapwid ); | |
463 gtk_widget_show( fsUp ); | |
464 gtk_box_pack_start( GTK_BOX( hbox4 ),fsUp,FALSE,FALSE,0 ); | |
465 gtk_widget_set_usize( fsUp,65,15 ); | |
466 | |
467 hseparator1=gtk_hseparator_new(); | |
468 gtk_widget_set_name( hseparator1,"hseparator1" ); | |
469 gtk_widget_ref( hseparator1 ); | |
470 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"hseparator1",hseparator1, | |
471 ( GtkDestroyNotify ) gtk_widget_unref ); | |
472 gtk_widget_show( hseparator1 ); | |
473 gtk_box_pack_start( GTK_BOX( vbox4 ),hseparator1,FALSE,TRUE,0 ); | |
474 gtk_widget_set_usize( hseparator1,-2,8 ); | |
475 | |
476 hbox6=gtk_hbox_new( FALSE,0 ); | |
477 gtk_widget_set_name( hbox6,"hbox6" ); | |
478 gtk_widget_ref( hbox6 ); | |
479 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"hbox6",hbox6, | |
480 ( GtkDestroyNotify ) gtk_widget_unref ); | |
481 gtk_widget_show( hbox6 ); | |
482 gtk_box_pack_start( GTK_BOX( vbox4 ),hbox6,TRUE,TRUE,0 ); | |
483 | |
484 fsFNameListWindow=gtk_scrolled_window_new( NULL,NULL ); | |
485 gtk_widget_set_name( fsFNameListWindow,"fsFNameListWindow" ); | |
486 gtk_widget_ref( fsFNameListWindow ); | |
487 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"fsFNameListWindow",fsFNameListWindow, | |
488 ( GtkDestroyNotify ) gtk_widget_unref ); | |
489 gtk_widget_show( fsFNameListWindow ); | |
490 gtk_box_pack_start( GTK_BOX( hbox6 ),fsFNameListWindow,TRUE,TRUE,0 ); | |
491 gtk_widget_set_usize( fsFNameListWindow,-2,145 ); | |
492 gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( fsFNameListWindow ),GTK_POLICY_NEVER,GTK_POLICY_AUTOMATIC ); | |
493 | |
494 fsFNameList=gtk_clist_new( 2 ); | |
495 gtk_widget_set_name( fsFNameList,"fsFNameList" ); | |
496 gtk_widget_ref( fsFNameList ); | |
497 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"fsFNameList",fsFNameList, | |
498 ( GtkDestroyNotify ) gtk_widget_unref ); | |
499 gtk_container_add( GTK_CONTAINER( fsFNameListWindow ),fsFNameList ); | |
500 gtk_clist_set_column_width( GTK_CLIST( fsFNameList ),0,80 ); | |
501 gtk_clist_set_selection_mode( GTK_CLIST( fsFNameList ),GTK_SELECTION_BROWSE ); | |
502 gtk_clist_column_titles_hide( GTK_CLIST( fsFNameList ) ); | |
503 gtk_clist_set_shadow_type( GTK_CLIST( fsFNameList ),GTK_SHADOW_ETCHED_OUT ); | |
504 CheckDir( fsFNameList,(unsigned char *)get_current_dir_name() ); | |
505 | |
506 label1=gtk_label_new( "label1" ); | |
507 gtk_widget_set_name( label1,"label1" ); | |
508 gtk_widget_ref( label1 ); | |
509 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"label1",label1, | |
510 ( GtkDestroyNotify ) gtk_widget_unref ); | |
511 gtk_widget_show( label1 ); | |
512 gtk_clist_set_column_widget( GTK_CLIST( fsFNameList ),0,label1 ); | |
513 | |
514 hseparator2=gtk_hseparator_new(); | |
515 gtk_widget_set_name( hseparator2,"hseparator2" ); | |
516 gtk_widget_ref( hseparator2 ); | |
517 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"hseparator2",hseparator2, | |
518 ( GtkDestroyNotify ) gtk_widget_unref ); | |
519 gtk_widget_show( hseparator2 ); | |
520 gtk_box_pack_start( GTK_BOX( vbox4 ),hseparator2,FALSE,TRUE,0 ); | |
521 gtk_widget_set_usize( hseparator2,-2,9 ); | |
522 | |
523 List=gtk_combo_new(); | |
524 gtk_widget_set_name( List,"List" ); | |
525 gtk_widget_ref( List ); | |
526 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"List",List, | |
527 ( GtkDestroyNotify ) gtk_widget_unref ); | |
528 gtk_widget_show( List ); | |
529 gtk_box_pack_start( GTK_BOX( vbox4 ),List,FALSE,FALSE,0 ); | |
530 gtk_widget_set_usize( List,-2,20 ); | |
531 fsList_items=NULL; | |
532 for( i=0;i<fsLastFilterNames + 1;i++ ) | |
533 fsList_items=g_list_append( fsList_items,fsFilterNames[i][0] ); | |
534 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); | |
535 g_list_free( fsList_items ); | |
536 | |
537 combo_entry1=GTK_COMBO( List )->entry; | |
538 gtk_widget_set_name( combo_entry1,"combo_entry1" ); | |
539 gtk_widget_ref( combo_entry1 ); | |
540 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"combo_entry1",combo_entry1, | |
541 ( GtkDestroyNotify ) gtk_widget_unref ); | |
542 gtk_widget_show( combo_entry1 ); | |
543 gtk_entry_set_text( GTK_ENTRY( combo_entry1 ),fsFilterNames[fsLastFilterNames][0] ); | |
544 | |
545 hseparator3=gtk_hseparator_new(); | |
546 gtk_widget_set_name( hseparator3,"hseparator3" ); | |
547 gtk_widget_ref( hseparator3 ); | |
548 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"hseparator3",hseparator3, | |
549 ( GtkDestroyNotify ) gtk_widget_unref ); | |
550 gtk_widget_show( hseparator3 ); | |
551 gtk_box_pack_start( GTK_BOX( vbox4 ),hseparator3,FALSE,TRUE,0 ); | |
552 gtk_widget_set_usize( hseparator3,-2,7 ); | |
553 | |
554 hbuttonbox3=gtk_hbutton_box_new(); | |
555 gtk_widget_set_name( hbuttonbox3,"hbuttonbox3" ); | |
556 gtk_widget_ref( hbuttonbox3 ); | |
557 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"hbuttonbox3",hbuttonbox3, | |
558 ( GtkDestroyNotify ) gtk_widget_unref ); | |
559 gtk_widget_show( hbuttonbox3 ); | |
560 gtk_box_pack_start( GTK_BOX( vbox4 ),hbuttonbox3,FALSE,TRUE,0 ); | |
561 gtk_button_box_set_layout( GTK_BUTTON_BOX( hbuttonbox3 ),GTK_BUTTONBOX_END ); | |
562 gtk_button_box_set_spacing( GTK_BUTTON_BOX( hbuttonbox3 ),10 ); | |
563 gtk_button_box_set_child_size( GTK_BUTTON_BOX( hbuttonbox3 ),85,20 ); | |
564 gtk_button_box_set_child_ipadding( GTK_BUTTON_BOX( hbuttonbox3 ),0,0 ); | |
565 | |
566 // okstyle=gtk_widget_get_style( fsFileSelect ); | |
567 // okpixmap=gdk_pixmap_colormap_create_from_xpm_d( fsFileSelect->window,fsColorMap,&okmask,&okstyle->bg[GTK_STATE_NORMAL],(gchar **)ok_xpm ); | |
568 // okpixmapwid=gtk_pixmap_new( okpixmap,okmask ); | |
569 // gtk_widget_show( okpixmapwid ); | |
570 // fsOk=gtk_button_new(); | |
571 // gtk_container_add( GTK_CONTAINER(fsOk ),okpixmapwid ); | |
572 // gtk_container_add( GTK_CONTAINER( hbuttonbox3 ),fsOk ); | |
573 // gtk_widget_show( fsOk ); | |
574 | |
575 fsOk=gtk_button_new_with_label( MSGTR_Ok ); | |
576 gtk_widget_set_name( fsOk,MSGTR_Ok ); | |
577 gtk_widget_ref( fsOk ); | |
578 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),MSGTR_Ok,fsOk,( GtkDestroyNotify )gtk_widget_unref ); | |
579 gtk_container_add( GTK_CONTAINER( hbuttonbox3 ),fsOk ); | |
580 gtk_widget_show( fsOk ); | |
581 | |
582 // cancelstyle=gtk_widget_get_style( fsFileSelect ); | |
583 // cancelpixmap=gdk_pixmap_colormap_create_from_xpm_d( fsFileSelect->window,fsColorMap,&cancelmask,&cancelstyle->bg[GTK_STATE_NORMAL],(gchar **)cancel_xpm ); | |
584 // cancelpixmapwid=gtk_pixmap_new( cancelpixmap,cancelmask ); | |
585 // gtk_widget_show( cancelpixmapwid ); | |
586 // fsCancel=gtk_button_new(); | |
587 // gtk_widget_show( fsCancel ); | |
588 // gtk_container_add( GTK_CONTAINER( fsCancel ),cancelpixmapwid ); | |
589 // gtk_container_add( GTK_CONTAINER( hbuttonbox3 ),fsCancel ); | |
590 // gtk_widget_show( fsCancel ); | |
591 | |
592 fsCancel=gtk_button_new_with_label( MSGTR_Cancel ); | |
593 gtk_widget_set_name( fsCancel,MSGTR_Cancel ); | |
594 gtk_widget_ref( fsCancel ); | |
595 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),MSGTR_Cancel,fsCancel,( GtkDestroyNotify )gtk_widget_unref ); | |
596 gtk_container_add( GTK_CONTAINER( hbuttonbox3 ),fsCancel ); | |
597 gtk_widget_show( fsCancel ); | |
598 | |
599 gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"destroy", | |
600 GTK_SIGNAL_FUNC( fs_fsFileSelect_destroy ), | |
601 NULL ); | |
602 gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"key_release_event", | |
603 GTK_SIGNAL_FUNC( on_FileSelect_key_release_event ), | |
604 NULL ); | |
605 gtk_signal_connect( GTK_OBJECT( combo_entry1 ),"changed", | |
606 GTK_SIGNAL_FUNC( fs_combo_entry1_changed ), | |
607 combo_entry1 ); | |
608 gtk_signal_connect( GTK_OBJECT( combo_entry1 ),"activate", | |
609 GTK_SIGNAL_FUNC( fs_combo_entry1_activate ), | |
610 combo_entry1 ); | |
611 gtk_signal_connect( GTK_OBJECT( fsComboEntry2 ),"changed", | |
612 GTK_SIGNAL_FUNC( fs_fsComboEntry2_changed ), | |
613 fsComboEntry2 ); | |
614 gtk_signal_connect( GTK_OBJECT( fsComboEntry2 ),"activate", | |
615 GTK_SIGNAL_FUNC( fs_fsComboEntry2_activate ), | |
616 fsComboEntry2 ); | |
617 gtk_signal_connect( GTK_OBJECT( fsUp ),"released", | |
618 GTK_SIGNAL_FUNC( fs_Up_released ), | |
619 fsFNameList ); | |
620 gtk_signal_connect( GTK_OBJECT( fsOk ),"released", | |
621 GTK_SIGNAL_FUNC( fs_Ok_released ), | |
622 fsCombo4 ); | |
623 gtk_signal_connect( GTK_OBJECT( fsCancel ),"released", | |
624 GTK_SIGNAL_FUNC( fs_Cancel_released ), | |
625 NULL ); | |
626 | |
627 gtk_signal_connect( GTK_OBJECT( fsFNameList ),"select_row", | |
628 ( GtkSignalFunc ) fs_fsFNameList_select_row, | |
629 NULL ); | |
630 | |
631 gtk_widget_grab_focus( fsFNameList ); | |
632 | |
633 return fsFileSelect; | |
634 } | |
635 |