Free Simple File Selector Dialogue Box by Santman22nd Mar 2012 16:55
|
---|
Summary A free, graphical file browser (for picking files etc). Can be found here: http://forum.thegamecreators.com/?m=forum_view&t=194580&b=6 Description A simple file selector. Made to suit my purposes, but is a good groundwork for improvement - see the notes at the link. Has basic functions - can be filtered to certain types of files, mouse control etc. Very simple though. Code ` This code was downloaded from The Game Creators ` It is reproduced here with full permission ` http://www.thegamecreators.com function fileselector(types,custom$) rem type 0=everything, 1=no directories & all files, 2=images, 3=sounds & music, 4=executables, 5=directories only, 6=custom filter (defaults to all if empty) dim files$(1000,2) count=0 selectorstart: oldmousez=mousez() find first if get file type()<>-1 homedir$=get dir$() offset=0 selection$="" find first repeat if get file type()<>-1 if types=0 count=count+1 files$(count,1)=get file name$() files$(count,2)=str$(get file type()) if files$(count,2)="1" then files$(count,1)="<DIR> " + files$(count,1) endif if types=1 or types=2 or types=3 or types=4 or types=6 if get file type()=0 if types=1 count=count+1 files$(count,1)=get file name$() files$(count,2)=str$(get file type()) endif if types=2 if len(get file name$())>3 if lower$(right$(get file name$(),4))=".jpg" or lower$(right$(get file name$(),4))=".png" or lower$(right$(get file name$(),4))=".tga" or lower$(right$(get file name$(),4))=".bmp" or lower$(right$(get file name$(),4))=".dds" or lower$(right$(get file name$(),4))=".dib" count=count+1 files$(count,1)=get file name$() files$(count,2)=str$(get file type()) endif endif if len(get file name$())>4 if lower$(right$(get file name$(),4))=".jpeg" count=count+1 files$(count,1)=get file name$() files$(count,2)=str$(get file type()) endif endif endif if types=3 if len(get file name$())>3 if lower$(right$(get file name$(),4))=".mp3" or lower$(right$(get file name$(),4))=".wav" count=count+1 files$(count,1)=get file name$() files$(count,2)=str$(get file type()) endif endif if len(get file name$())>4 if lower$(right$(get file name$(),4))=".midi" count=count+1 files$(count,1)=get file name$() files$(count,2)=str$(get file type()) endif endif endif if types=4 if len(get file name$())>3 if lower$(right$(get file name$(),4))=".exe" count=count+1 files$(count,1)=get file name$() files$(count,2)=str$(get file type()) endif endif endif if types=6 if custom$<>"" if len(get file name$())>=len(custom$) if lower$(right$(get file name$(),4))=custom$ count=count+1 files$(count,1)=get file name$() files$(count,2)=str$(get file type()) endif endif else types=0 goto selectorstart endif endif endif endif if types=5 if get file type()=1 count=count+1 files$(count,1)="<DIR> " + get file name$() files$(count,2)=str$(get file type()) endif endif find next endif until get file type()=-1 endif sprite 48,820,538,48 sync on do ycur=sprite y(48)+9 if count>0 if count<14 for a=1 to count set cursor sprite x(48)+9,ycur if len(files$(a,1))<51 print files$(a,1) else print left$(files$(a,1),50) endif ycur=ycur+16 next a else for a=1+offset to 13+offset set cursor sprite x(48)+9,ycur if len(files$(a,1))<51 print files$(a,1) else print left$(files$(a,1),50) endif ycur=ycur+16 next a endif endif if mouseclick()=1 if mousex()>=sprite x(48) and mousex()<=(sprite x(48)+sprite width(48)) and mousey()>=sprite y(48) and mousey()<=(sprite y(48)+sprite height(48)) xm=mousex()-sprite x(48) ym=mousey()-sprite y(48) if xm>=416 and xm<=455 and ym>=195 and ym<=224 and (offset+14)<=count' down scroll offset=offset+1 wait 50 endif if xm>=416 and xm<=455 and ym>=0 and ym<=29 and offset>0' up scroll offset=offset-1 wait 50 endif if xm>=416 and xm<=455 and ym>=224 and ym<=253' cancel button selection$="" goto selectend: endif if xm>=378 and xm<=415 and ym>=224 and ym<=253' ok button goto selectend: endif if xm>=9 and xm<=407 and ym>=9 and ym<=215' and ym>0 file list ym=ym+5 ym=ym/16 selection$=files$(ym+offset,1) endif endif endif if mousemovez()<>0 for a=1 to 3 if mousez()<oldmousez and (offset+14)<=count offset=offset+1 endif if mousez()>oldmousez and offset>0 offset=offset-1 endif next a wait 50 endif oldmousez=mousez() set cursor (sprite x(48)+9),(sprite y(48)+230) if selection$<>"" if len(selection$)<51 print selection$; else print left$(selection$,50); endif endif sync loop selectend: delete sprite 48 sync off endfunction |