TGC Codebase Backup



Free Simple File Selector Dialogue Box by Santman

22nd 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