home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 601-625 / apd616 / source / requester_proc_addon.amos / requester_proc_addon.amosSourceCode
AMOS Source Code  |  1994-06-03  |  7KB  |  371 lines

  1. '
  2. ' *** Insert These Lines After The SET VARIABLES & STRINGS Heading.  
  3. '
  4. _MAX_LIST=200
  5. Dim FILE$(_MAX_LIST,1)
  6. CPATH$="Ram Disk:"
  7. POS=0
  8. PATH$="Ram:"
  9. WILD$="**"
  10. '
  11. ' *** Insert This Line After The SET GLOBAL VARIABLES & STRINGS heading. 
  12. '
  13. Global _MAX_LIST,PATH$,CPATH$,POS,FILE$(),FIL$,FILES,DEVS,WILD$
  14. '
  15. ' *** File Requester Procedure.
  16. '
  17. Procedure _FILEREQUESTER[T$]
  18.    '
  19.    '  T$  -  This contains the title displayed at the top of the requester. 
  20.    '
  21.    ' *** Backup Dialog & Font Info. 
  22.    '
  23.    B_DLG$=_DIALOGBUTTON$
  24.    B_FNT$=_FONTNAME$
  25.    B_FS=_FONTSIZE
  26.    _DIALOGBUTTON$=""
  27.    '
  28.    ' *** Open Screen. 
  29.    '
  30.    _OPENDIALOGSCREEN[7,110,50]
  31.    _DRAWTITLEBAR[T$]
  32.    '
  33.    ' *** Set Font.
  34.    '
  35.    _SETFONT["Topaz",8]
  36.    '
  37.    ' *** Draw Surrounding Box.
  38.    '
  39.    _DRAW3DBOX[0,11,639,108,"",1,,_COLOUR]
  40.    _DRAW3DBOX[8,13,334,106,"",1,,_BACK]
  41.    '
  42.    ' *** Draw Slider & Arrows.
  43.    '
  44.    _ADDBUTTON[337,89,352,97,"(S)UAR",-7]
  45.    _DRAW3DBOX[337,13,352,87,"",1,0,_BACK]
  46.    _ADDBUTTON[337,98,352,106,"(S)DAR",-8]
  47.    '
  48.    ' *** Draw File & Path Box.  
  49.    '
  50.    _DRAW3DBOX[356,45,440,59,"File",1,_TEXT,_BACK]
  51.    _ADDINPUTBUTTON[45,8,FIL$,31,31,2]
  52.    _DRAW3DBOX[356,13,440,27,"Drawer",1,_TEXT,_BACK]
  53.    _ADDINPUTBUTTON[45,4,PATH$+WILD$,31,120,1]
  54.    '
  55.    ' *** Draw Buttons.
  56.    '
  57.    _ADDBUTTON[356,77,490,91,"Parent",5]
  58.    _ADDBUTTON[356,92,490,106,"Volumes",6]
  59.    _ADDBUTTON[497,77,631,91,"Cancel",3]
  60.    _ADDBUTTON[497,92,631,106,"OK",4]
  61.    '
  62.    ' *** Set Requester Variables. 
  63.    '
  64.    FIL$=""
  65.    SWITCH=0
  66.    '
  67.    ' *** Check For Different Directory. 
  68.    '
  69.    If PATH$<>CPATH$
  70.       Gosub _GET_DIR
  71.    End If 
  72.    '
  73.    ' *** Get List Of Devices. 
  74.    '
  75.    Gosub _GET_DEV
  76.    '
  77.    ' *** Display List, Filename & Path.   
  78.    '
  79.    Gosub _DISPLAY_LIST
  80.    Gosub _DISPLAY_FILE
  81.    Gosub _DISPLAY_PATH
  82.    '
  83.    ' *** MAIN LOOP. 
  84.    '
  85.    Do 
  86.       '
  87.       ' *** Check Dialog Buttons.
  88.       '
  89.       _CHECKBUTTONS
  90.       _BUTTONZONE=Param
  91.       '  
  92.       ' *** Scroll Up A File.
  93.       '  
  94.       If _BUTTONZONE=7 and POS>0
  95.          Dec POS
  96.          Gosub _DISPLAY_LIST
  97.       End If 
  98.       '
  99.       ' *** Scroll Down A File.
  100.       '
  101.       If _BUTTONZONE=8 and POS<FILES-10
  102.          Inc POS
  103.          Gosub _DISPLAY_LIST
  104.       End If 
  105.       '
  106.       ' *** Select File. 
  107.       '
  108.       LOP=0
  109.       While LOP<11
  110.          _CHECKZONE[8+2,13+(LOP*8)+3,334-2,13+(LOP*8)+10,1]
  111.          If Param
  112.             FIL$=FILE$(POS+LOP,SWITCH)
  113.             Gosub _CUT_FIL
  114.             Gosub _DISPLAY_FILE
  115.          End If 
  116.          Inc LOP
  117.       Wend 
  118.       '
  119.       ' *** Grab Slider. 
  120.       '
  121.       _GRABVERTICALSLIDER[337,13,352,87,Min(FILES,FILES-11),POS+1,""]
  122.       If Param>0
  123.          POS=Param-1
  124.          Gosub _DISPLAY_LIST
  125.       End If 
  126.       '
  127.       ' *** Ok Button. 
  128.       '
  129.       If _BUTTONZONE=4
  130.          FIL$=PATH$+FIL$
  131.          Goto FIN
  132.       End If 
  133.       '
  134.       ' *** Parent Button. 
  135.       '
  136.       If _BUTTONZONE=5
  137.          Gosub _PARENT
  138.          Gosub _DISPLAY_PATH
  139.       End If 
  140.       '
  141.       ' *** Cancel 
  142.       '
  143.       If _BUTTONZONE=3
  144.          FIL$=""
  145.          Goto FIN
  146.       End If 
  147.       '
  148.       ' *** Volumes Button.
  149.       '
  150.       If _BUTTONZONE=6 and SWITCH=0
  151.          SWITCH=1
  152.          Gosub _GET_DEV
  153.          FILES=DEVS
  154.          Gosub _DISPLAY_LIST
  155.          Gosub _DISPLAY_PATH
  156.          Gosub _DISPLAY_FILE
  157.       End If 
  158.       '
  159.       ' *** Edit Path. 
  160.       '
  161.       If _BUTTONZONE=1
  162.          _ADDINPUTBUTTON[45,4,PATH$+WILD$,31,120,0]
  163.          PATH$=Param$
  164.          Gosub _CUT_WILD
  165.          If(Right$(PATH$,1)<>"/") and(Right$(PATH$,1)<>":")
  166.             PATH$=PATH$+"/"
  167.          End If 
  168.          Gosub _GET_DIR
  169.          Gosub _DISPLAY_LIST
  170.          Gosub _DISPLAY_FILE
  171.          Gosub _DISPLAY_PATH
  172.       End If 
  173.       '
  174.       ' *** Edit Filename. 
  175.       '
  176.       If _BUTTONZONE=2
  177.          _ADDINPUTBUTTON[45,8,FIL$,31,31,0]
  178.          FIL$=Param$
  179.          Gosub _DISPLAY_FILE
  180.       End If 
  181.       '
  182.    Loop 
  183.    '
  184.    ' *** Get Parent Directory.
  185.    '
  186.    _PARENT:
  187.    If Len(PATH$)>2
  188.       LOP=Len(PATH$)-1
  189.       While LOP>1
  190.          A$=Mid$(PATH$,LOP,1)
  191.          If(A$="/") or(A$=":")
  192.             PATH$=Left$(PATH$,LOP)
  193.             Gosub _GET_DIR
  194.             Gosub _DISPLAY_LIST
  195.             Exit 
  196.          End If 
  197.          Dec LOP
  198.       Wend 
  199.    End If 
  200.    Return 
  201.    '
  202.    ' *** Cut Up Path & Wildcard.
  203.    '
  204.    _CUT_WILD:
  205.    LOP=Len(PATH$)
  206.    While LOP>1
  207.       A$=Mid$(PATH$,LOP,1)
  208.       If(A$=":") or(A$="/")
  209.          WILD$=Right$(PATH$,Len(PATH$)-LOP)
  210.          PATH$=Left$(PATH$,LOP)
  211.          Exit 
  212.       End If 
  213.       Dec LOP
  214.    Wend 
  215.    Return 
  216.    '
  217.    ' *** Tidy Up Selected Name. 
  218.    '
  219.    _CUT_FIL:
  220.    '
  221.    LOP=30
  222.    While LOP>1
  223.       If Mid$(FIL$,LOP,1)<>" "
  224.          FIL$=Left$(FIL$,LOP)
  225.          Exit 
  226.       End If 
  227.       Dec LOP
  228.    Wend 
  229.    '
  230.    A$=Left$(FIL$,1)
  231.    FIL$=Mid$(FIL$,2)
  232.    '
  233.    If A$="*"
  234.       PATH$=PATH$+FIL$+"/"
  235.       Gosub _GET_DIR
  236.    End If 
  237.    '
  238.    If Right$(FIL$,1)=":"
  239.       PATH$=FIL$
  240.       Gosub _GET_DIR
  241.    End If 
  242.    '
  243.    Gosub _DISPLAY_LIST
  244.    Gosub _DISPLAY_FILE
  245.    Gosub _DISPLAY_PATH
  246.    '
  247.    Return 
  248.    '
  249.    ' *** Get List Of Files. 
  250.    '
  251.    _GET_DIR:
  252.    '
  253.    If Not Exist(PATH$)
  254.       PATH$=CPATH$
  255.       SWITCH=0
  256.       Gosub _GET_DEV
  257.       Gosub _DISPLAY_PATH
  258.       Return 
  259.    End If 
  260.    '
  261.    LOP=0
  262.    While LOP<_MAX_LIST-1
  263.       FILE$(LOP,0)=""
  264.       Inc LOP
  265.    Wend 
  266.    '
  267.    Set Dir 31
  268.    '
  269.    FILES=0
  270.    FILE$(FILES,0)=Dir First$(PATH$+WILD$)
  271.    '
  272.    While FILE$(FILES,0)<>"" and FILES<_MAX_LIST
  273.       If Mid$(FILE$(FILES,0),1,1)="*"
  274.          Mid$(FILE$(FILES,0),31,5)="(Dir)"
  275.       End If 
  276.       Inc FILES
  277.       FILE$(FILES,0)=Dir Next$
  278.    Wend 
  279.    Dec FILES
  280.    '
  281.    If FILES<0
  282.       FILES=0
  283.    End If 
  284.    '
  285.    CPATH$=PATH$
  286.    '
  287.    FIL$=""
  288.    POS=0
  289.    SWITCH=0
  290.    '
  291.    Gosub _GET_DEV
  292.    '
  293.    Return 
  294.    '
  295.    ' *** Get List Of Devices. 
  296.    '
  297.    _GET_DEV:
  298.    '
  299.    LOP=0
  300.    While LOP<_MAX_LIST-1
  301.       FILE$(LOP,1)=""
  302.       Inc LOP
  303.    Wend 
  304.    '
  305.    Set Dir 31
  306.    '
  307.    DEVS=0
  308.    FILE$(DEVS,1)=Dev First$("**")
  309.    '
  310.    While FILE$(DEVS,1)<>""
  311.       Mid$(FILE$(DEVS,1),31,5)="(Dev)"
  312.       Inc DEVS
  313.       FILE$(DEVS,1)=Dir Next$
  314.    Wend 
  315.    Dec DEVS
  316.    '
  317.    If DEVS<0
  318.       DEVS=0
  319.    End If 
  320.    '
  321.    FIL$=""
  322.    POS=0
  323.    '
  324.    Return 
  325.    '
  326.    ' *** Display Path.
  327.    '
  328.    _DISPLAY_PATH:
  329.    Pen _TEXT
  330.    Print At(45,4)+Space$(31);
  331.    Print At(45,4)+Left$(PATH$+WILD$,31);
  332.    Return 
  333.    '
  334.    ' *** Display Filename.
  335.    '
  336.    _DISPLAY_FILE:
  337.    Pen _TEXT
  338.    Print At(45,8)+Space$(31);
  339.    Print At(45,8)+Left$(FIL$,31);
  340.    Return 
  341.    '
  342.    ' *** Display File List & Slider.
  343.    '
  344.    _DISPLAY_LIST:
  345.    '
  346.    LOP=POS
  347.    While LOP<POS+11
  348.       Locate 2,LOP-POS+2
  349.       If FILE$(LOP,SWITCH)<>""
  350.          If Left$(FILE$(LOP,SWITCH),1)="*"
  351.             Pen _LIGHT
  352.          Else 
  353.             Pen _TEXT
  354.          End If 
  355.          Print FILE$(LOP,SWITCH);
  356.       Else 
  357.          Print Space$(38);
  358.       End If 
  359.       Inc LOP
  360.    Wend 
  361.    '
  362.    _VERTICALSLIDER[337,13,352,87,Min(FILES,FILES-11),POS+1,""]
  363.    '
  364.    Return 
  365.    '
  366.    FIN:
  367.    Screen Close 7
  368.    _DIALOGBUTTON$=B_DLG$
  369.    _SETFONT[B_FNT$,B_FS]
  370.    '
  371. End Proc[FIL$]