Import help

Blitz3D Forums/Blitz3D Beginners Area/Import help

Jippi! i made this "C: Explorer thing" that i will use for importing stuff in my program. It works pretty good i think :)


; Title

AppTitle "Cermit Explorer"

Const screen_x = 640, screen_y = 480, bit = 16, mode = 2


; Graphics

Graphics screen_x, screen_y, bit, mode

SetBuffer BackBuffer()



; Import Type

Type import

Field import_nr, import_name$

End Type


; Globals

Global current_dir$ = "C:";Games";CurrentDir$

Global first_s = 3 ; First Slash In Current_Dir$ String
Global lasta_s = 3 ; Last Slash In Current_Dir$ String
Global list_y = 0 ; List Top In Current_Dir$
Global list_select = 5 ; Selected File In Current_Dir$
Global list_nr = 0 ; Number Of Files In Current_Dir$

Gosub get_file ; Read Current Dir

; The Code Is Obvious If You Understand What The Variables Are For :)



; Main Program

While KeyHit(1) = False


; Move List

If KeyHit(200) Then

list_select = list_select - 1

list_y = list_select - 5

If list_select < 0 Then list_select = 0

If list_y > list_nr - 10 Then list_y = list_nr - 10

If list_y < 0 Then list_y = 0

EndIf

If KeyHit(208) Then

list_select = list_select + 1

list_y = list_select - 5

If list_select > list_nr - 1 Then list_select = list_nr - 1

If list_y > list_nr - 10 Then list_y = list_nr - 10

If list_y < 0 Then list_y = 0

EndIf


; Sub Dir

If KeyHit(28) Then

For i.import = Each import

If i\import_nr = list_select Then

; If Dir

If FileType(current_dir$ + i\import_name$) = 2 Then

current_dir$ = current_dir$ + i\import_name$ + ""

Gosub get_file

list_select = 2
list_y = 0

Exit

EndIf

; If File

If FileType(current_dir$ + i\import_name$) = 1 Then

ExecFile(current_dir$ + i\import_name$)

Exit

EndIf

EndIf

Next

EndIf


; Above Dir

If KeyHit(14) Then

list_select = 2
list_y = 0

For x = 1 To Len(current_dir$)

If Mid$( current_dir$, x, 1 ) = "" Then first_s = lasta_s : lasta_s = x

Next

current_dir$ = Left$( current_dir$, first_s )

Gosub get_file

EndIf


; Clear Screen

Cls


; Draw Import

For i.import = Each import

For y = 0 To 9

If i\import_nr => y + list_y And i\import_nr <= list_y + 9

If list_select = i\import_nr Then

Color 255, 0, 0

Rect (screen_x / 2) - ((Len( i\import_name) / 2 * 10)), 16 + (i\import_nr - list_y) * 12, Len( i\import_name$ ) * 10, 12, 1

EndIf

Color 0, 255, 0

Text screen_x / 2, 16 + (i\import_nr - list_y) * 12, i\import_name$, 1

EndIf

Next

Next


; Current Dir

Text screen_x / 2, screen_y / 2, current_dir$, 1



; Flip

Flip


; Program End

Wend


End



; Get Import List

.get_file

For i.import = Each import : Delete i : Next


dir = ReadDir( current_dir$ )

list_nr = 0

.read_again

file$ = NextFile$( dir )

If Len(file$) >  0 Then

i.import = New import
i\import_nr = list_nr
i\import_name$ = file$

list_nr = list_nr + 1

Goto read_again

EndIf


Return


Maybe not the best but it works :)

Press Enter To Open a Folder or File
Press Backspace To 'Go Back'
Scroll List By Pressing Up or Down Cursor