home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / totallyamos / issue4 / source_progs / 3dreq / 3dreq.amos / 3dreq.amosSourceCode
Encoding:
AMOS Source Code  |  1992-04-25  |  7.3 KB  |  288 lines

  1. '
  2. 'If you move this prog off the ta disk remove the line below or  
  3. 'change it to the name of the new disk.
  4. '
  5. Dir$="Totally_amos_may_92:source_progs/3dreq"
  6. '
  7. Rem ************************************************** 
  8. Rem ** David Boucher's WorkBench 2 style requesters ** 
  9. Rem ************************************************** 
  10. Rem
  11. Rem (C) 1991 David Boucher use these routines in you own program as  
  12. Rem long as I get a credit 
  13. Rem
  14. Dim FILE$(50) : Rem ****Required for LIST_REQ **** 
  15. Screen Open 1,320,255,4,Lowres
  16. Rem **** Required for ALL requester routines ****
  17. Procedure BX[X,Y,XX,YY,T]
  18.    If T=1 Then Ink 1 Else Ink 3
  19.    Box X,Y To XX-1,YY-1
  20.    If T=1 Then Ink 3 Else Ink 1
  21.    Box X+1,Y+1 To XX,YY
  22.    If T<3 Then Ink 2 : Else Ink 0
  23.    Bar X+1,Y+1 To XX-1,YY-1
  24. End Proc
  25. Rem **** Required for STRING_REQ ****
  26. Procedure XINPUT[TXT$,ML,POS,CX,CY,MD]
  27.    Shared ER,POS
  28.    Do 
  29.       Home 
  30.       NOC=Len(TXT$)
  31.       Locate CX,CY
  32.       Print TXT$+Space$(ML-(NOC-1))
  33.       Locate CX+POS,CY
  34.       Do 
  35.          LTR$=Inkey$
  36.          Exit If LTR$<>""
  37.          If Mouse Click=1 and MD=1 Then ER=3 : Exit 2
  38.       Loop 
  39.       CC=Asc(LTR$)
  40.       SC=Scancode
  41.       If CC=13 Then ER=1 : Exit 
  42.       If CC=27 and MD=1 Then ER=2 : Exit 
  43.       If Mouse Click=1 and MD=1 Then ER=3 : Exit 
  44.       If CC>31 and NOC<=ML-1
  45.          If POS=NOC
  46.             TXT$=TXT$+LTR$
  47.          Else 
  48.             TXT$=Left$(TXT$,POS)+LTR$+Right$(TXT$,NOC-POS)
  49.          End If 
  50.          Inc POS
  51.       End If 
  52.       If CC=29 and POS>0
  53.          Dec POS
  54.       End If 
  55.       If CC=28 and POS<NOC
  56.          Inc POS
  57.       End If 
  58.       If CC=8 and POS>0 and NOC>0
  59.          If POS=NOC
  60.             TXT$=Left$(TXT$,NOC-1)
  61.          Else 
  62.             TXT$=Left$(TXT$,POS-1)+Right$(TXT$,NOC-POS)
  63.          End If 
  64.          Dec POS
  65.       End If 
  66.       If SC=70 and POS<NOC and NOC>0
  67.          If POS=0
  68.             TXT$=Right$(TXT$,NOC-1)
  69.          Else 
  70.             TXT$=Left$(TXT$,POS)+Right$(TXT$,NOC-(POS+1))
  71.          End If 
  72.       End If 
  73.    Loop 
  74. End Proc[TXT$]
  75. Rem **** Continue/Cancel type requester **** 
  76. Procedure REQUEST[T1$,T2$,T3$,B1$,B2$]
  77.    If Len(T1$)>25 Then T1$=Left$(T1$,25)
  78.    If Len(T2$)>25 Then T2$=Left$(T2$,25)
  79.    If Len(T3$)>25 Then T3$=Left$(T3$,25)
  80.    If Len(B1$)>10 Then B1$=Left$(B1$,10)
  81.    If Len(B2$)>10 Then B2$=Left$(B2$,10)
  82.    If B1$<>"" Then B1=1
  83.    If B2$<>"" Then B2=1
  84.    If B1=0 and B2=0 Then Pop Proc
  85.    TEMP=Screen
  86.    Screen Open 7,640,61,4,Hires
  87.    Screen Display 7,128,120,640,64
  88.    Curs Off 
  89.    Flash Off 
  90.    Palette 0,$FFF,$888,$333
  91.    Pen 1
  92.    Paper 0
  93.    Cls 
  94.    BX[200,0,440,60,1]
  95.    If B1=1 Then BX[210,40,310,55,1]
  96.    If B2=1 Then BX[330,40,430,55,1]
  97.    BX[210,5,430,35,2]
  98.    Ink 0,2,2
  99.    Text 220,15,T1$
  100.    Text 220,23,T2$
  101.    Text 220,31,T3$
  102.    O=(80-Len(B1$)*8)/2
  103.    Text 220+O,50,B1$
  104.    O=(80-Len(B2$)*8)/2
  105.    Text 340+O,50,B2$
  106.    D=0
  107.    Do 
  108.       Do 
  109.          Z=Mouse Click
  110.          X=X Screen(X Mouse)
  111.          Y=Y Screen(Y Mouse)
  112.          Z$=Inkey$
  113.          Exit If Z$<>""
  114.          Exit If Z=1
  115.       Loop 
  116.       If Z$=Chr$(13) and B1=1 Then D=1
  117.       If Z$=Chr$(27) and B2=1 Then D=2
  118.       If X>210 and X<310 and Y>40 and Y<55 and Z=1 and B1=1 Then D=1
  119.       If X>330 and X<430 and Y>40 and Y<55 and Z=1 and B2=1 Then D=2
  120.       Exit If D>0
  121.    Loop 
  122.    If D=1
  123.       BX[210,40,310,55,2]
  124.       Ink 0,2,2
  125.       O=(80-Len(B1$)*8)/2
  126.       Text 220+O,50,B1$
  127.    Else 
  128.       BX[330,40,430,55,2]
  129.       Ink 0,2,2
  130.       O=(80-Len(B2$)*8)/2
  131.       Text 340+O,50,B2$
  132.    End If 
  133.    Wait 10
  134.    Screen Close 7
  135.    Screen TEMP
  136. End Proc[D]
  137. Rem **** File Type requester ****
  138. Procedure LIST_REQ[T$,B1$,B2$]
  139.    Shared FILE$()
  140.    If Len(T$)>10 Then T$=Left$(T$,25)
  141.    If Len(B1$)>10 Then B1$=Left$(B1$,10)
  142.    If Len(B2$)>10 Then B2$=Left$(B2$,10)
  143.    If B1$<>"" Then B1=1
  144.    If B2$<>"" Then B2=1
  145.    If B1=0 and B2=0 Then Pop Proc
  146.    TEMP=Screen
  147.    Screen Open 7,640,61,4,Hires
  148.    Screen Display 7,128,120,640,64
  149.    Curs Off 
  150.    Flash Off 
  151.    Palette 0,$FFF,$888,$333
  152.    Pen 1
  153.    Paper 0
  154.    Cls 
  155.    BX[200,0,440,60,1]
  156.    BX[210,10,400,35,3]
  157.    BX[410,5,430,15,2]
  158.    BX[410,25,430,35,2]
  159.    If B1=1 Then BX[210,40,310,55,1]
  160.    If B2=1 Then BX[330,40,430,55,1]
  161.    Ink 3
  162.    Polygon 414,13 To 420,7 To 426,13
  163.    Polygon 414,27 To 420,33 To 426,27
  164.    Ink 0,2,2
  165.    O=(80-Len(B1$)*8)/2
  166.    Text 220+O,50,B1$
  167.    O=(80-Len(B2$)*8)/2
  168.    Text 340+O,50,B2$
  169.    O=(200-Len(T$)*8)/2
  170.    Text 210+O,8,T$
  171.    ITEM=1
  172.    Do 
  173.       Ink 2,0,0
  174.       DUMMY=Free
  175.       Text 215,17,Left$(FILE$(ITEM-1)+Space$(22),22)
  176.       Text 215,33,Left$(FILE$(ITEM+1)+Space$(22),22)
  177.       Ink 1,0,0
  178.       Text 215,25,Left$(FILE$(ITEM)+Space$(22),22)
  179.       If FILE$(ITEM+1)="" Then LAST=1 : Else LAST=0
  180.       D=0
  181.       Do 
  182.          Z=Mouse Click
  183.          X=X Screen(X Mouse)
  184.          Y=Y Screen(Y Mouse)
  185.          Z$=Inkey$
  186.          Exit If Z$<>""
  187.          Exit If Z=1
  188.       Loop 
  189.       If Z$=Chr$(31) and LAST=0 Then Inc ITEM
  190.       If Z$=Chr$(30) and ITEM>1 Then Dec ITEM
  191.       If Z$=Chr$(13) and B1=1 Then D=1
  192.       If Z$=Chr$(27) and B2=1 Then D=2
  193.       If X>210 and X<310 and Y>40 and Y<55 and Z=1 and B1=1 Then D=1
  194.       If X>330 and X<430 and Y>40 and Y<55 and Z=1 and B2=1 Then D=2
  195.       If X>410 and X<430 and Y>5 and Y<15 and Z=1 and ITEM>1 Then Dec ITEM
  196.       If X>410 and X<430 and Y>25 and Y<35 and Z=1 and LAST=0 Then Inc ITEM
  197.       Exit If D>0
  198.    Loop 
  199.    If D=1
  200.       BX[210,40,310,55,2]
  201.       Ink 0,2,2
  202.       O=(80-Len(B1$)*8)/2
  203.       Text 220+O,50,B1$
  204.       FILE$=FILE$(ITEM)
  205.    Else 
  206.       BX[330,40,430,55,2]
  207.       Ink 0,2,2
  208.       O=(80-Len(B2$)*8)/2
  209.       Text 340+O,50,B2$
  210.    End If 
  211.    Wait 10
  212.    Screen Close 7
  213.    Screen TEMP
  214. End Proc[FILE$]
  215. Rem **** String Requester **** 
  216. Procedure STRING_REQ[T$,B1$,B2$,TXT$]
  217.    Shared POS,ER
  218.    If Len(T$)>25 Then T$=Left$(T$,25)
  219.    If Len(TXT$)>24 Then TXT$=Left$(TXT$,24)
  220.    If Len(B1$)>10 Then B1$=Left$(B1$,10)
  221.    If Len(B2$)>10 Then B2$=Left$(B2$,10)
  222.    If B1$<>"" Then B1=1
  223.    If B2$<>"" Then B2=1
  224.    If B1=0 and B2=0 Then Pop Proc
  225.    TEMP=Screen
  226.    Screen Open 7,640,61,4,Hires
  227.    Screen Display 7,128,120,640,64
  228.    Curs Off 
  229.    Flash Off 
  230.    Palette 0,$FFF,$888,$333
  231.    Pen 1
  232.    Paper 0
  233.    Cls 
  234.    BX[200,0,440,60,1]
  235.    BX[210,22,430,33,3]
  236.    If B1=1 Then BX[210,40,310,55,1]
  237.    If B2=1 Then BX[330,40,430,55,1]
  238.    Ink 0,2,2
  239.    O=(200-Len(T$)*8)/2
  240.    Text 220+O,15,T$
  241.    O=(80-Len(B1$)*8)/2
  242.    Text 220+O,50,B1$
  243.    O=(80-Len(B2$)*8)/2
  244.    Text 340+O,50,B2$
  245.    POS=0
  246.    Curs On 
  247.    Do 
  248.       XINPUT[TXT$,25,POS,27,3,1]
  249.       TXT$=Param$
  250.       X=X Screen(X Mouse)
  251.       Y=Y Screen(Y Mouse)
  252.       If X>210 and X<310 and Y>40 and Y<55 and ER=3 and B1=1 Then ER=1
  253.       If X>330 and X<430 and Y>40 and Y<55 and ER=3 and B2=1 Then ER=2
  254.       If ER=1
  255.          Curs Off 
  256.          BX[210,40,310,55,2]
  257.          Ink 0,2,2
  258.          O=(80-Len(B1$)*8)/2
  259.          Text 220+O,50,B1$
  260.          Exit 
  261.       End If 
  262.       If ER=2
  263.          Curs Off 
  264.          BX[330,40,430,55,2]
  265.          Ink 0,2,2
  266.          O=(80-Len(B2$)*8)/2
  267.          Text 340+O,50,B2$
  268.          TXT$=""
  269.          Exit 
  270.       End If 
  271.    Loop 
  272.    Wait 10
  273.    Screen Close 7
  274.    Screen TEMP
  275. End Proc[TXT$]
  276. Rem
  277. Rem **** A Little Demo ****
  278. Rem
  279. For A=1 To 10
  280.    FILE$(A)="FILE NUMBER"+Str$(A)
  281. Next 
  282. LIST_REQ["FILE REQUESTER","LOAD!",""]
  283. F$=Param$
  284. If F$="" Then REQUEST["ERROR:","NO FILE SELECTED","","PROCEED",""] : End 
  285. REQUEST["Load "+F$+"?","Are you sure?","","YES!","NO!"]
  286. P=Param
  287. If P=1 Then STRING_REQ["STRING REQUESTER","OK!","",F$] : Print Param$
  288. If P=2 Then REQUEST["ERROR:","OPERATION CANCELED","","PROCEED",""] : End