home *** CD-ROM | disk | FTP | other *** search
- '
- Procedure _FILEREQUESTER[H$]
- '
- Shared _DIALOGBUTTON$,_FONTNAME$,_FONTSIZE,_TEXT,_COLOUR,_LIGHT,_BACK
- Shared _MAXFILES,_FILES,_PATH$,_WILD$,_FILENAME$(),_FILE$
- '
- TEMP1$=_DIALOGBUTTON$
- _DIALOGBUTTON$=""
- '
- TEMP2$=_FONTNAME$
- TEMP3=_FONTSIZE
- '
- _SETFONT["Topaz",8]
- '
- _OPENDIALOGSCREEN[7,110,44]
- Get Palette 0
- _DRAWTITLEBAR[H$]
- '
- _DRAW3DBOX[0,11,639,108,"",1,,_COLOUR]
- _DRAW3DBOX[8,13,334,106,"",1,,_BACK]
- '
- _ADDBUTTON[337,89,352,97,"(S)UAR",-1]
- _DRAW3DBOX[337,13,352,87,"",1,,_BACK]
- _ADDBUTTON[337,98,352,106,"(S)DAR",-2]
- '
- _DRAW3DBOX[356,45,440,59,"File",1,_TEXT,_BACK]
- _ADDINPUTBUTTON[45,8,_FILE$,31,31,-3]
- _DRAW3DBOX[356,13,440,27,"Drawer",1,_TEXT,_BACK]
- _ADDINPUTBUTTON[45,4,_PATH$+_WILD$,31,120,-4]
- '
- _ADDBUTTON[356,77,490,91,"Parent",5]
- _ADDBUTTON[356,92,490,106,"Volumes",6]
- _ADDBUTTON[497,77,631,91,"Cancel",7]
- _ADDBUTTON[497,92,631,106,"OK",8]
- '
- _BPATH$=_PATH$+_WILD$
- _SWITCH=0
- _POSITION=1
- '
- If _FILES=0
- Gosub _GETDIRECTORY
- End If
- '
- Gosub _DISPLAYLIST
- Gosub _DISPLAYPATH
- Gosub _DISPLAYFILE
- '
- Do
- '
- _CHECKBUTTONS
- _BUTTONZONE=Param
- '
- If _BUTTONZONE=1 and _POSITION>1
- Dec _POSITION
- Gosub _DISPLAYLIST
- End If
- '
- If _BUTTONZONE=2 and _POSITION<_FILES-11
- Inc _POSITION
- Gosub _DISPLAYLIST
- End If
- '
- If _BUTTONZONE=3
- _ADDINPUTBUTTON[45,8,_FILE$,31,31,0]
- _FILE$=Param$
- End If
- '
- If _BUTTONZONE=4
- _BPATH$=_PATH$
- _ADDINPUTBUTTON[45,4,_PATH$+_WILD$,31,120,0]
- _PATH$=Param$
- Gosub _CUTWILD
- _TEMP$=_PATH$
- Gosub _CHECKFILE
- End If
- '
- If _BUTTONZONE=5
- Gosub _PARENT
- End If
- '
- If _BUTTONZONE=6
- SWITCH=1
- Gosub _GETDIRECTORY
- Gosub _DISPLAYLIST
- Gosub _DISPLAYPATH
- Gosub _DISPLAYFILE
- End If
- '
- If _BUTTONZONE=7
- _FILE$=""
- Goto FIN
- End If
- '
- If _BUTTONZONE=8
- _TEMP$=_PATH$+_FILE$
- Goto FIN
- End If
- '
- _COUNT=0
- While _COUNT<11
- _CHECKZONE[10,16+(_COUNT*8),332,23+(_COUNT*8),1]
- If(Param>0) and(_FILENAME$(_POSITION+_COUNT)<>"")
- _TEMP$=_FILENAME$(_POSITION+_COUNT)
- Gosub _CHECKFILE
- Gosub _DISPLAYFILE
- End If
- Inc _COUNT
- Wend
- '
- _GRABVERTICALSLIDER[337,13,15,74,Min(_FILES,_FILES-11),_POSITION,""]
- If Param<>_POSITION
- _POSITION=Param
- Gosub _DISPLAYLIST
- End If
- '
- Loop
- '
- _GETDIRECTORY:
- '
- If Not Exist(_PATH$)
- _PATH$=_BPATH$
- End If
- '
- _COUNT=1
- While _COUNT<_MAXFILES+1
- _FILENAME$(_COUNT)=""
- Inc _COUNT
- Wend
- '
- Set Dir 31
- _FILES=0
- '
- If SWITCH=0
- '
- _FILENAME$(FILES)=Dir First$(_PATH$+_WILD$)
- While _FILENAME$(_FILES)<>"" and _FILES<_MAXFILES
- If Mid$(_FILENAME$(_FILES),1,1)="*"
- Mid$(_FILENAME$(_FILES),31,5)="(Dir)"
- End If
- Inc _FILES
- _FILENAME$(_FILES)=Dir Next$
- Wend
- '
- Else
- '
- _FILENAME$(FILES)=Dev First$("**")
- While _FILENAME$(_FILES)<>"" and _FILES<_MAXFILES
- Mid$(_FILENAME$(_FILES),31,5)="(Dev)"
- Inc _FILES
- _FILENAME$(_FILES)=Dev Next$
- Wend
- '
- End If
- '
- _BPATH$=_PATH$
- _POSITION=1
- SWITCH=0
- '
- Return
- '
- _DISPLAYPATH:
- '
- Pen _TEXT
- Print At(45,4)+Space$(31);
- Print At(45,4)+Left$(_PATH$+_WILD$,31);
- Return
- '
- _DISPLAYFILE:
- '
- Pen _TEXT
- Print At(45,8)+Space$(31);
- Print At(45,8)+Left$(_FILE$,31);
- Return
- '
- _DISPLAYLIST:
- '
- _COUNT=_POSITION
- While _COUNT<_POSITION+11
- Locate 2,_COUNT-_POSITION+2
- If _FILENAME$(_COUNT)<>""
- If Left$(_FILENAME$(_COUNT),1)="*"
- Pen _LIGHT
- Else
- Pen _TEXT
- End If
- Print _FILENAME$(_COUNT);
- Else
- Print Space$(38);
- End If
- Inc _COUNT
- Wend
- '
- _VERTICALSLIDER[337,13,15,74,Min(_FILES,_FILES-11),_POSITION,""]
- '
- Return
- '
- _PARENT:
- '
- If Len(_PATH$)>2
- _COUNT=Len(_PATH$)-1
- While _COUNT>1
- A$=Mid$(_PATH$,_COUNT,1)
- If(A$="/") or(A$=":")
- _PATH$=Left$(_PATH$,_COUNT)
- Gosub _GETDIRECTORY
- Gosub _DISPLAYPATH
- Gosub _DISPLAYLIST
- Exit
- End If
- Dec _COUNT
- Wend
- End If
- Return
- '
- _CUTWILD:
- '
- _COUNT=Len(_PATH$)
- While _COUNT>1
- A$=Mid$(_PATH$,_COUNT,1)
- If(A$="/") or(A$=":")
- _WILD$=Right$(_PATH$,Len(_PATH$)-_COUNT)
- _PATH$=Left$(_PATH$,_COUNT)
- Exit
- End If
- Dec _COUNT
- Wend
- Return
- '
- _CHECKFILE:
- '
- _COUNT=30
- While _COUNT>1
- If Mid$(_TEMP$,_COUNT,1)<>" "
- _TEMP$=Left$(_TEMP$,_COUNT)
- Exit
- End If
- Dec _COUNT
- Wend
- '
- If(Right$(_TEMP$,1)=":") or(Right$(_TEMP$,1)="/")
- If Left$(_TEMP$,1)=" "
- _PATH$=Mid$(_TEMP$,2)
- Else
- _PATH$=_TEMP$
- End If
- Gosub _GETDIRECTORY
- SWITCH=0
- Gosub _DISPLAYPATH
- Gosub _DISPLAYLIST
- Goto OK1
- End If
- '
- A$=Left$(_TEMP$,1)
- _TEMP$=Mid$(_TEMP$,2)
- '
- If A$="*"
- _PATH$=_PATH$+_TEMP$+"/"
- Gosub _GETDIRECTORY
- Gosub _DISPLAYPATH
- Gosub _DISPLAYLIST
- Goto OK1
- End If
- '
- _FILE$=_TEMP$
- Gosub _DISPLAYFILE
- '
- OK1:
- Return
- '
- FIN:
- '
- _SETFONT[TEMP2$,TEMP3]
- _DIALOGBUTTON$=TEMP1$
- Screen Close 7
- '
- End Proc[_TEMP$]
-