home *** CD-ROM | disk | FTP | other *** search
Text File | 1978-07-26 | 42.2 KB | 2,194 lines |
- Set Buffer 30
- '
- ' ***********************************
- ' *** AMOS Dialog Procedures V3.6 *** Written By John.A.Kinsella
- ' ***********************************
- '
- ' *** SET VARIABLES HERE ****************************************************
- '
- _DIALOGBUTTON$=""
- A#=0.0 : Rem Compiler Fix.
- _WINOX=-1
- _WINOY=-1
- '
- _MAXFILES=200
- _FILES=0
- _PATH$="Ram:"
- _WILD$="**"
- _FILE$=""
- Dim _FILENAME$(_MAXFILES)
- '
- ' *** SET GLOBAL VARIABLES HERE *********************************************
- '
- Global A#,_WINX1,_WINY1,_WINX2,_WINY2,_WINOX,_WINOY
- '
- ' *** Open Default Screen & Set Font.
- '
- _OPENDIALOGSCREEN[0,256,44]
- '
- Limit Mouse 128,44 To 447,298
- '
- Get Rom Fonts
- _SETFONT["Topaz",8]
- '
- ' *** INSERT PROGRAM BELOW THIS LINE ****************************************
- '
- '
- ' *** INSERT PROGRAM ABOVE THIS LINE ****************************************
- '
- Screen Close 0
- End
- '
- Procedure _OPENDIALOGSCREEN[N,H,Y]
- '
- Shared _BACK,_SHADOW,_LIGHT,_COLOUR,_TEXT
- '
- Screen Open N,640,H,4,Hires
- Screen Display N,130,Y,,
- Curs Off
- Flash Off
- Cls 0
- Palette $AAA,$0,$FFF,$58B
- '
- Colour Back Colour(0)
- '
- _BACK=0
- _SHADOW=1
- _LIGHT=2
- _COLOUR=3
- _TEXT=1
- '
- Pen _TEXT
- Paper _BACK
- Ink _TEXT,_BACK
- '
- ' *** Set Mouse Colours.
- '
- Colour 17,$EEC
- Colour 18,$0
- Colour 19,$E44
- '
- End Proc
- '
- Procedure _DRAW3DBOX[X1,Y1,X2,Y2,T$,IN,FC,BC]
- '
- Shared _SHADOW,_LIGHT
- '
- If IN=0 or IN=3
- C1=_SHADOW
- C2=_LIGHT
- Else
- C1=_LIGHT
- C2=_SHADOW
- End If
- '
- If IN<>2
- Ink BC,FC
- Bar X1,Y1 To X2,Y2
- Ink C1
- Box X1,Y1 To X2,Y2
- If IN<3
- Box X1+1,Y1 To X2-1,Y2
- End If
- Ink C2
- Polyline X1+1,Y2 To X2,Y2 To X2,Y1
- If IN<3
- Polyline X1+1,Y2 To X2-1,Y2 To X2-1,Y1+1
- End If
- Else
- Cls BC,X1+2,Y1+1 To X2-1,Y2
- End If
- '
- I=0
- J=0
- B=0
- While I<Len(T$)
- I=Instr(T$,"|",I+1)
- If I=0
- I=Len(T$)+1
- End If
- J=I
- Inc B
- Wend
- '
- If Upper$(Left$(T$,3))="(S)"
- _DRAWUSEROBJECT[X1,Y1,X2,Y2,Mid$(T$,4)]
- Goto FIN
- End If
- '
- H#=((Y2-Y1)-(B*Text Base))/(B+1)
- Y#=Y1+H#+Text Base
- '
- Ink FC,BC
- Gr Writing 0
- '
- I=0
- J=0
- LOP=0
- While LOP<B
- I=Instr(T$,"|",I+1)
- If I=0
- I=Len(T$)+1
- End If
- A$=Mid$(T$,J+1,I-J-1)
- '
- If Left$(A$,1)="'"
- A$=Mid$(A$,2)
- X7=X1+4
- Goto NXT
- End If
- '
- If Left$(A$,1)="^"
- A$=Mid$(A$,2)
- X7=(X2-Text Length(A$))-4
- Goto NXT
- End If
- '
- WID=Text Length(A$)
- X7=(((X2-X1)/2)+X1)-(WID/2)+1
- '
- NXT:
- Text X7,Y#,A$
- '
- Y#=Y#+Text Base+H#
- '
- J=I
- Inc LOP
- Wend
- '
- Gr Writing 1
- '
- FIN:
- '
- End Proc
- '
- Procedure _CHECKZONE[X1,Y1,X2,Y2,WT]
- '
- X=X Screen(X Mouse)
- Y=Y Screen(Y Mouse)
- M=Mouse Key
- AN=0
- '
- If X<X1 or X>X2 or Y<Y1 or Y>Y2 or M=0
- Goto FIN2
- End If
- '
- AN=M
- '
- If WT=0
- Goto FIN2
- End If
- '
- If WT=1
- Gr Writing 2
- Bar X1,Y1 To X2,Y2
- End If
- '
- While X>=X1 and X<=X2 and Y>=Y1 and Y<=Y2
- X=X Screen(X Mouse)
- Y=Y Screen(Y Mouse)
- If Mouse Key=0
- Goto FIN
- End If
- Wend
- '
- AN=0
- '
- FIN:
- If WT=1
- Bar X1,Y1 To X2,Y2
- Gr Writing 1
- End If
- '
- FIN2:
- '
- End Proc[AN]
- '
- Procedure _SETFONT[FT$,FS]
- '
- Shared _FONTNAME$,_FONTSIZE
- '
- FT$=Upper$(FT$)
- '
- OK=0
- POS=1
- '
- While Font$(POS)<>""
- If Upper$(Left$(Font$(POS),Len(FT$)+5))=(FT$+".FONT")
- If Val(Mid$(Font$(POS),30,3))=FS
- Set Font POS
- OK=1
- _FONTNAME$=FT$
- _FONTSIZE=FS
- End If
- End If
- Inc POS
- Wend
- '
- End Proc[OK]
- '
- Procedure _ADDBUTTON[X1,Y1,X2,Y2,T$,BZ]
- '
- Shared _TEXT,_BACK
- '
- _DRAW3DBOX[X1,Y1,X2,Y2,T$,1,_TEXT,_BACK]
- '
- If BZ<>0
- _ADDZONE[X1,Y1,X2,Y2,BZ,"B"]
- End If
- '
- End Proc
- '
- Procedure _CHECKBUTTONS
- '
- Shared _DIALOGBUTTON$
- '
- ZN=0
- I1=1
- I2=1
- '
- While I2<Len(_DIALOGBUTTON$)
- '
- I2=Instr(_DIALOGBUTTON$,";",I1)
- L$=Mid$(_DIALOGBUTTON$,I1,I2-I1)
- '
- AC=Asc(Mid$(L$,1,1))
- X1=Val(Mid$(L$,3,3))
- Y1=Val(Mid$(L$,7,3))
- X2=Val(Mid$(L$,11,3))
- Y2=Val(Mid$(L$,15,3))
- BZ=Val(Mid$(L$,19,4))
- '
- WT=1
- If BZ<0
- BZ=-BZ
- WT=0
- End If
- '
- _CHECKZONE[X1,Y1,X2,Y2,WT]
- If Param and(AC>64 and AC<91) : Rem A to Z.
- ZN=BZ
- Goto FIN
- End If
- '
- I1=I2+1
- '
- Wend
- '
- FIN:
- '
- End Proc[ZN]
- '
- Procedure _CHECKWINBUTTONS
- '
- Shared _DIALOGBUTTON$
- '
- MX=X Screen(X Mouse)
- MY=Y Screen(Y Mouse)
- If(MX<_WINX1 or MX>_WINX2 or MY<_WINY1 or MY>_WINY2) and Mouse Key>0
- _FLASH
- End If
- '
- ZN=0
- I1=1
- I2=1
- '
- While I2<Len(_DIALOGBUTTON$)
- '
- I2=Instr(_DIALOGBUTTON$,";",I1)
- L$=Mid$(_DIALOGBUTTON$,I1,I2-I1)
- '
- AC=Asc(Mid$(L$,1,1))
- X1=Val(Mid$(L$,3,3))
- Y1=Val(Mid$(L$,7,3))
- X2=Val(Mid$(L$,11,3))
- Y2=Val(Mid$(L$,15,3))
- BZ=Val(Mid$(L$,19,4))
- '
- WT=1
- If BZ<0
- BZ=-BZ
- WT=0
- End If
- '
- If BZ<>1
- WX=(X1-_WINOX)
- WY=(Y1-_WINOY)
- '
- BW=(X2-X1)
- BH=(Y2-Y1)
- '
- X1=_WINX1+WX
- Y1=_WINY1+WY
- X2=_WINX1+WX+BW
- Y2=_WINY1+WY+BH
- '
- End If
- '
- _CHECKZONE[X1,Y1,X2,Y2,WT]
- If Param and(AC>64 and AC<91) : Rem A to Z.
- ZN=BZ
- Goto FIN
- End If
- '
- I1=I2+1
- '
- Wend
- '
- FIN:
- '
- End Proc[ZN]
- '
- Procedure _DELETEBUTTON[NO,BC]
- '
- Shared _DIALOGBUTTON$
- '
- I1=1
- I2=1
- '
- If NO<0
- NO=-NO
- End If
- '
- While I2<Len(_DIALOGBUTTON$)
- '
- I2=Instr(_DIALOGBUTTON$,";",I1)
- L$=Mid$(_DIALOGBUTTON$,I1,I2-I1)
- '
- BZ=Val(Mid$(L$,19,3))
- If BZ<0
- BZ=-BZ
- End If
- '
- If BZ=NO
- '
- X1=Val(Mid$(L$,3,3))
- Y1=Val(Mid$(L$,7,3))
- X2=Val(Mid$(L$,11,3))
- Y2=Val(Mid$(L$,15,3))
- '
- _DIALOGBUTTON$=Left$(_DIALOGBUTTON$,I1-1)+Mid$(_DIALOGBUTTON$,I2+1)
- '
- If BC>-1
- Ink BC
- Bar X1,Y1 To X2,Y2
- End If
- '
- End If
- '
- I1=I2+1
- '
- Wend
- '
- End Proc
- '
- Procedure _ADDTICKBOX[X1,Y1,PO,BZ]
- '
- Shared _SHADOW,_TEXT,_BACK
- '
- _DRAW3DBOX[X1,Y1,X1+26,Y1+11,"",1,_TEXT,_BACK]
- '
- If BZ=0
- PO=1-PO
- End If
- '
- If BZ<>0
- _ADDZONE[X1,Y1,X1+26,Y1+11,BZ,"T"]
- End If
- '
- If PO=1
- Ink _SHADOW
- X1=X1+7
- Y1=Y1+2
- Draw X1,Y1+3 To X1+3,Y1+6
- Draw X1+1,Y1+3 To X1+4,Y1+6
- Draw X1+2,Y1+3 To X1+5,Y1+6
- Draw X1+10,Y1 To X1+12,Y1
- Draw X1+10,Y1+1 To X1+6,Y1+5
- Draw X1+9,Y1+1 To X1+5,Y1+5
- End If
- '
- End Proc[PO]
- '
- Procedure _ADDTICKBUTTON[X1,Y1,X2,Y2,T$,PO,BZ]
- '
- Shared _TEXT,_BACK
- '
- _DRAW3DBOX[X1,Y1,X2,Y2,T$,1,_TEXT,_BACK]
- '
- If BZ=0
- PO=1-PO
- End If
- '
- If BZ<>0
- _ADDZONE[X1,Y1,X2,Y2,BZ,"U"]
- End If
- '
- If PO=1
- Gr Writing 2
- Bar X1,Y1 To X2,Y2
- Gr Writing 1
- End If
- '
- End Proc[PO]
- '
- Procedure _ADDCYCLEBUTTON[X1,Y1,X2,Y2,T$,PO,BZ]
- '
- Shared _SHADOW,_LIGHT,_TEXT,_BACK
- '
- T$=T$+"|"
- I1=1
- I2=1
- P=1
- '
- I=0
- IO=0
- B=0
- While I<Len(T$)
- I=Instr(T$,"|",I+1)
- If I=0
- I=Len(T$)+1
- End If
- IO=I
- B=B+1
- Wend
- '
- If BZ=0
- Add PO,1,1 To B
- End If
- '
- While I2<Len(T$)
- I2=Instr(T$,"|",I1)
- If P=PO
- L$=Mid$(T$,I1,I2-I1)
- Exit
- End If
- I1=I2+1
- Inc P
- Wend
- '
- _DRAW3DBOX[X1,Y1,X2,Y2,"",1,_TEXT,_BACK]
- If BZ<>0
- _ADDZONE[X1,Y1,X2,Y2,BZ,"C"]
- End If
- '
- Ink _SHADOW
- X1=X1+6
- Y1=Y1+2
- Y2=Y2-3
- Draw X1+1,Y1 To X1+7,Y1
- Draw X1,Y1+1 To X1,Y2-1
- Draw X1+1,Y1+1 To X1+1,Y2-1
- Draw X1+1,Y2 To X1+7,Y2
- Draw X1+7,Y2-1 To X1+8,Y2-1
- Draw X1+7,Y1+1 To X1+7,Y1+5
- Draw X1+8,Y1+1 To X1+8,Y1+5
- Draw X1+5,Y1+3 To X1+10,Y1+3
- Draw X1+6,Y1+4 To X1+9,Y1+4
- Draw X1+14,Y1 To X1+14,Y2+1
- Ink _LIGHT
- Draw X1+15,Y1 To X1+15,Y2+1
- '
- _DRAW3DBOX[X1+16,Y1-2,X2,Y2+3,L$,2,_TEXT,_BACK]
- '
- End Proc[PO]
- '
- Procedure _ADDINPUTBUTTON[X1,Y1,TXT$,L,ML,BZ]
- '
- Shared _TEXT,_BACK,_FONTNAME$,_FONTSIZE
- '
- XX=X1+2
- YY=Y1+1
- ED$=TXT$
- SX=L
- '
- Ink _TEXT,_BACK
- '
- X1=X1-4
- Y1=Y1-3
- X2=X1+(L*8)+8+4
- Y2=Y1+13
- '
- TEMP2$=_FONTNAME$
- TEMP3=_FONTSIZE
- _SETFONT["Topaz",8]
- '
- If BZ<>0
- If BZ<>999
- _ADDZONE[X1,Y1,X2,Y2,BZ,"I"]
- End If
- _DRAW3DBOX[X1,Y1,X2,Y2,"",1,_TEXT,_BACK]
- _DRAW3DBOX[X1+2,Y1+1,X2-2,Y2-1,"",0,_TEXT,_BACK]
- Gosub _DED
- Goto _END
- End If
- '
- XC=Len(ED$)
- MN=0
- PX=0
- L=XC
- '
- Clear Key
- '
- Do
- Gosub _DED
- '
- If Mouse Key=1
- X=((X Screen(X Mouse)-(X1+5))/8)
- If X>=0 and X<=L
- XC=X
- Gosub _DED
- End If
- End If
- '
- Gr Writing 2
- Bar GRX,GRY To GRX+7,GRY+7
- '
- If Mouse Key
- Repeat
- Until Mouse Key=0
- End If
- '
- Repeat
- A$=Inkey$
- S=Scancode
- K=Key Shift
- Until A$<>"" or Mouse Key or(A$<>"" and K)
- '
- XM=X Screen(X Mouse)
- YM=Y Screen(Y Mouse)
- If Mouse Key and(XM<X1 or XM>X2 or YM<Y1 or YM>Y2)
- A$=Chr$(13)
- End If
- '
- Bar GRX,GRY To GRX+7,GRY+7
- Gr Writing 1
- '
- F=1
- '
- If A$=Chr$(13)
- Exit
- End If
- '
- If A$=Chr$(27)
- ED$=TXT$
- TXT$=""
- Gosub _DED
- Exit
- End If
- '
- If S=65 and K=0 and XC+PX>MN
- ED$=Left$(ED$,XC+PX-1)+Mid$(ED$,PX+XC+1)
- E=1
- Dec L
- S=79
- End If
- '
- If S=65 and K>0 and K<4
- ED$=Mid$(ED$,PX+XC+1)
- L=Len(ED$)
- PX=0
- XC=0
- End If
- '
- If S=70 and K=0 and XC+PX<L
- ED$=Left$(ED$,XC+PX)+Mid$(ED$,PX+XC+2)
- E=1
- Dec L
- End If
- '
- If S=70 and K>0 and K<4
- ED$=Left$(ED$,XC+PX)
- L=Len(ED$)
- F=0
- End If
- '
- If S=79 and PX+XC>MN
- F=0
- If XC=0
- Dec PX
- Else
- Dec XC
- End If
- End If
- '
- If S=79 and K>0 and K<4
- F=0
- PX=0
- XC=0
- End If
- '
- If S=78 and PX+XC<L
- F=0
- If XC=SX
- Inc PX
- Else
- Inc XC
- End If
- End If
- '
- If S=78 and K>0 and K<4
- F=0
- XC=L
- If XC>SX
- XC=SX
- End If
- PX=L-SX
- If PX<0
- PX=0
- End If
- End If
- '
- If F
- If A$>=" " and L<ML
- ED$=Left$(ED$,PX+XC)+A$+Mid$(ED$,PX+XC+1)
- Inc L
- If L>SX
- If XC>=SX
- Inc PX
- Else
- Inc XC
- End If
- Else
- Inc XC
- End If
- End If
- End If
- '
- Loop
- '
- Goto _END
- '
- _DED:
- _DRAW3DBOX[X1+2,Y1+1,X2-2,Y2-1,"'"+Mid$(ED$,PX+1,SX),2,_TEXT,_BACK]
- GRX=X1+(XC*8)+6
- GRY=Y1+3
- Return
- '
- _END:
- _DRAW3DBOX[X1+2,Y1+1,X2-2,Y2-1,"'"+Left$(ED$,SX),2,_TEXT,_BACK]
- '
- _SETFONT[TEMP2$,TEMP3]
- '
- End Proc[ED$]
- '
- Procedure _DRAWUSEROBJECT[X1,Y1,X2,Y2,T$]
- '
- Shared _FONTNAME$,_FONTSIZE,_SHADOW,_LIGHT,_TEXT,_BACK,_COLOUR
- '
- Left$(T$,3)=Upper$(Left$(T$,3))
- '
- ' *** Paste Icon.
- '
- If Mid$(T$,1,3)="ICO"
- NO=Val(Mid$(T$,4,3))
- If Length(2)>=NO
- Paste Icon X1+Val(Mid$(T$,7,3)),Y1+Val(Mid$(T$,10,3)),NO
- End If
- End If
- '
- ' *** Paste Bob.
- '
- If Mid$(T$,1,3)="BOB"
- NO=Val(Mid$(T$,4,3))
- If Length(1)>=NO
- Paste Bob X1+Val(Mid$(T$,7,3)),Y1+Val(Mid$(T$,10,3)),NO
- End If
- End If
- '
- ' *** Up Arrow.
- '
- If T$="UAR"
- Ink _SHADOW
- X=X1+(X2-X1)/2
- Y=Y1+(Y2-Y1)/2
- Polygon X,Y1+2 To X1+4,Y2-2 To X,Y To X2-4,Y2-2 To X,Y1+2
- End If
- '
- ' *** Down Arrow.
- '
- If T$="DAR"
- Ink _SHADOW
- X=X1+(X2-X1)/2
- Y=Y1+(Y2-Y1)/2
- Polygon X,Y2-2 To X1+4,Y1+2 To X,Y To X2-4,Y1+2 To X,Y2-2
- End If
- '
- ' *** Left Arrow.
- '
- If T$="LAR"
- Ink _SHADOW
- X=X1+(X2-X1)/2
- Y=Y1+(Y2-Y1)/2
- Polygon X1+4,Y To X2-4,Y1+2 To X,Y To X2-4,Y2-2 To X1+4,Y
- End If
- '
- ' *** Right Arrow.
- '
- If T$="RAR"
- Ink _SHADOW
- X=X1+(X2-X1)/2
- Y=Y1+(Y2-Y1)/2
- Polygon X2-4,Y To X1+4,Y1+2 To X,Y To X1+4,Y2-2 To X2-4,Y
- End If
- '
- ' *** Group Box.
- '
- If T$="GBX"
- _DRAW3DBOX[X1,Y1,X2,Y2,"",0,0,_BACK]
- _DRAW3DBOX[X1+2,Y1+1,X2-2,Y2-1,"",1,0,_BACK]
- End If
- '
- ' *** Window.
- '
- If Mid$(T$,1,3)="WIN"
- _DRAW3DBOX[X1,Y1,X2,Y2,"",4,0,_COLOUR]
- _DRAW3DBOX[X1+3,Y1+10,X2-3,Y2-1,"",3,_LIGHT,_BACK]
- _DRAW3DBOX[X1,Y1,X2,Y1+10,Mid$(T$,4),4,_LIGHT,_COLOUR]
- End If
- '
- ' *** File Icon.
- '
- If Mid$(T$,1,3)="FIL"
- X1=X1+4
- Y1=Y1+2
- Ink _SHADOW
- Draw X1,Y1+2 To X1,Y1+8
- Draw X1+1,Y1+2 To X1+1,Y1+8
- Draw X1+2,Y1+8 To X1+11,Y1+8
- Draw X1+11,Y1+8 To X1+11,Y1+2
- Plot X1+10,Y1+1
- Plot X1+5,Y1+1
- Draw X1+6,Y1 To X1+9,Y1
- Draw X1+2,Y1+2 To X1+4,Y1+2
- Draw X1+2,Y1+3 To X1+5,Y1+3
- Draw X1+6,Y1+4 To X1+10,Y1+4
- End If
- '
- End Proc
- '
- Procedure _ADDRADIOBUTTON[X,Y,GP,BN,PO,BZ]
- '
- Shared _LIGHT,_SHADOW,_COLOUR,_BACK
- '
- X1=X
- Y1=Y
- '
- If PO=0
- C1=_LIGHT
- C2=_SHADOW
- C3=_COLOUR
- Else
- C1=_SHADOW
- C2=_LIGHT
- C3=_BACK
- End If
- '
- Ink C1
- Draw X1+14,Y1 To X1+14,Y1+1
- Draw X1+15,Y1+1 To X1+15,Y1+7
- Draw X1+16,Y1+2 To X1+16,Y1+6
- Draw X1+14,Y1+7 To X1+15,Y1+7
- Draw X1+14,Y1+8 To X1+3,Y1+8
- Ink C2
- Draw X1+13,Y1 To X1+2,Y1
- Draw X1+2,Y1+1 To X1+1,Y1+1
- Draw X1,Y1+2 To X1,Y1+6
- Draw X1+1,Y1+2 To X1+1,Y1+7
- Draw X1+2,Y1+7 To X1+2,Y1+8
- Ink C3
- Draw X1+4,Y1+3 To X1+4,Y1+5
- Draw X1+12,Y1+3 To X1+12,Y1+5
- Bar X1+5,Y1+2 To X1+11,Y1+6
- '
- If BZ<>0
- '
- L$=Space$(8)
- '
- Mid$(L$,2,2)=Str$(GP)-" "
- Mid$(L$,5,2)=Str$(BN)-" "
- Mid$(L$,8,1)=Str$(PO)-" "
- '
- _ADDZONE[X,Y,X+16,Y+8,BZ,"R"+L$]
- '
- End If
- '
- End Proc
- '
- Procedure _SETRADIO[BZ]
- '
- Shared _DIALOGBUTTON$
- '
- _GETBUTTONSTRING[BZ]
- F$=Param$
- '
- GN=Val(Mid$(F$,24,2))
- BA=Val(Mid$(F$,27,2))
- '
- I1=1
- I2=1
- '
- While I2<Len(_DIALOGBUTTON$)
- '
- I2=Instr(_DIALOGBUTTON$,";",I1)
- L$=Mid$(_DIALOGBUTTON$,I1,I2-I1)
- '
- A$=Left$(L$,1)
- GP=Val(Mid$(L$,24,2))
- '
- If((GP=GN) and((A$="R") or(A$="R")))
- '
- X1=Val(Mid$(L$,3,3))
- Y1=Val(Mid$(L$,7,3))
- BN=Val(Mid$(L$,27,2))
- '
- If BN=BA
- _ADDRADIOBUTTON[X1,Y1,BN,GP,0,0]
- Else
- _ADDRADIOBUTTON[X1,Y1,BN,GP,1,0]
- End If
- End If
- '
- I1=I2+1
- '
- Wend
- '
- End Proc
- '
- Procedure _VERTICALSLIDER[X,Y,W,H,S,P,T$]
- '
- Shared _TEXT,_BACK,_TEXT
- '
- _DRAW3DBOX[X,Y,X+W,Y+H,"",4,_TEXT,_BACK]
- HIG=0
- '
- If S>=1
- T=Y+(H*(P-1))/S
- B=Min(Y+H,T+H/S)
- If B-T<3
- T=Y+((H-3)*(P-1))/S
- B=Min(Y+(H-3),T+(H-3)/S)
- HIG=3
- End If
- Cls _TEXT,X+3,T+1 To X+W-2,B+1+HIG
- End If
- '
- If T$<>""
- _SLIDERROUTINE[T$,P]
- End If
- '
- End Proc
- '
- Procedure _GRABVERTICALSLIDER[X,Y,W,H,S,P,T$]
- '
- If S<1 Then Pop Proc
- '
- T=Y+(H*(P-1))/S
- B=Min(Y+H,T+H/S)
- '
- _CHECKZONE[X,Y,X+W,T-1,2]
- If Param>0 and P>1
- Dec P
- Gosub _DRAWSLIDER
- Goto FIN
- End If
- '
- _CHECKZONE[X,B+1,X+W,Y+H,2]
- If Param and P<S
- Inc P
- Gosub _DRAWSLIDER
- Goto FIN
- End If
- '
- _CHECKZONE[X,T,X+W,B,0]
- If Param>0
- '
- PO=P
- DY=Y Screen(Y Mouse)-T
- '
- Repeat
- '
- YY=Y Screen(Y Mouse)-Y-DY
- PO=((YY*(S+1))/H+1)
- '
- If PO<1
- PO=1
- End If
- If PO>S
- PO=S
- End If
- '
- If PO<>P
- P=PO
- Gosub _DRAWSLIDER
- End If
- '
- Until Mouse Key=0
- End If
- '
- Goto FIN
- '
- _DRAWSLIDER:
- _VERTICALSLIDER[X,Y,W,H,S,P,""]
- Return
- '
- FIN:
- '
- End Proc[P]
- '
- Procedure _HORIZONTALSLIDER[X,Y,W,H,S,P,T$]
- '
- Shared _TEXT,_BACK,_TEXT
- '
- _DRAW3DBOX[X,Y,X+W,Y+H,"",4,_TEXT,_BACK]
- WID=0
- '
- If S>=1
- T=X+(W*(P-1))/S
- B=Min(X+W,T+W/S)
- If B-T<6
- T=X+((W-6)*(P-1))/S
- B=Min(X+(W-6),T+(W-6)/S)
- WID=6
- End If
- Cls _TEXT,T+1,Y+2 To B+1+WID,Y+H-1
- End If
- '
- If T$<>""
- _SLIDERROUTINE[T$,P]
- End If
- '
- End Proc
- '
- Procedure _GRABHORIZONTALSLIDER[X,Y,W,H,S,P,T$]
- '
- If S<1 Then Pop Proc
- '
- T=X+(W*(P-1))/S
- B=Min(X+W,T+W/S)
- '
- _CHECKZONE[X,Y,T-1,Y+H,2]
- If Param>0 and P>1
- Dec P
- Gosub _DRAWSLIDER
- Goto FIN
- End If
- '
- _CHECKZONE[B+1,Y,X+W,Y+H,2]
- If Param>0 and P<S
- Inc P
- Gosub _DRAWSLIDER
- Goto FIN
- End If
- '
- _CHECKZONE[T,Y,B,Y+H,0]
- If Param>0
- '
- PO=P
- DX=X Screen(X Mouse)-T
- '
- Repeat
- '
- XX=X Screen(X Mouse)-X-DX
- PO=((XX*(S+1))/W+1)
- '
- If PO<1
- PO=1
- End If
- If PO>S
- PO=S
- End If
- '
- If PO<>P
- P=PO
- Gosub _DRAWSLIDER
- End If
- '
- Until Mouse Key=0
- End If
- '
- Goto FIN
- '
- _DRAWSLIDER:
- _HORIZONTALSLIDER[X,Y,W,H,S,P,""]
- Return
- '
- FIN:
- '
- End Proc[P]
- '
- Procedure _SLIDERROUTINE[T$,P]
- '
- Shared _FONTNAME$,_FONTSIZE,_COLOUR,_SHADOW,_LIGHT,_BACK,_TEXT
- '
- Goto T$
- Goto FIN
- '
- '
- FIN:
- '
- End Proc
- '
- Procedure _DRAWTITLEBAR[T$]
- '
- Shared _FONTNAME$,_FONTSIZE,_SHADOW,_LIGHT
- '
- B_FT$=_FONTNAME$
- B_FS=_FONTSIZE
- '
- _SETFONT["Topaz",8]
- '
- If T$=""
- T$=T$+"'Amiga Workbench "+Str$(Chip Free)-" "+" graphics mem "
- T$=T$+Str$(Fast Free)-" "+" other mem"
- End If
- _DRAW3DBOX[-1,-1,640,10,T$,1,_SHADOW,_LIGHT]
- '
- _SETFONT[B_FT$,B_FS]
- '
- End Proc
- '
- Procedure _GETBUTTONSTRING[NO]
- '
- Shared _DIALOGBUTTON$
- '
- I1=1
- I2=1
- P=0
- '
- If NO<0
- NO=-NO
- End If
- '
- While I2<Len(_DIALOGBUTTON$) and P<>NO
- '
- I2=Instr(_DIALOGBUTTON$,";",I1)
- L$=Mid$(_DIALOGBUTTON$,I1,I2-I1)
- '
- BZ=Val(Mid$(L$,19,4))
- If BZ<0
- BZ=-BZ
- End If
- '
- If BZ=NO
- Exit
- End If
- '
- I1=I2+1
- '
- Inc P
- Wend
- '
- End Proc[L$]
- '
- Procedure _ENABLEBUTTON[NO]
- '
- Shared _DIALOGBUTTON$
- '
- I1=1
- I2=1
- P=0
- '
- While I2<Len(_DIALOGBUTTON$) and P<>NO
- '
- I2=Instr(_DIALOGBUTTON$,";",I1)
- L$=Mid$(_DIALOGBUTTON$,I1,I2-I1)
- '
- BZ=Val(Mid$(L$,19,4))
- If BZ<0
- BZ=-BZ
- End If
- '
- If BZ=NO
- Mid$(_DIALOGBUTTON$,I1,1)=Upper$(Mid$(_DIALOGBUTTON$,I1,1))
- End If
- '
- I1=I2+1
- '
- Inc P
- Wend
- '
- End Proc
- '
- Procedure _DISABLEBUTTON[NO]
- '
- Shared _DIALOGBUTTON$
- '
- I1=1
- I2=1
- P=0
- '
- While I2<Len(_DIALOGBUTTON$) and P<>NO
- '
- I2=Instr(_DIALOGBUTTON$,";",I1)
- L$=Mid$(_DIALOGBUTTON$,I1,I2-I1)
- '
- BZ=Val(Mid$(L$,19,4))
- If BZ<0
- BZ=-BZ
- End If
- '
- If BZ=NO
- Mid$(_DIALOGBUTTON$,I1,1)=Lower$(Mid$(_DIALOGBUTTON$,I1,1))
- End If
- '
- I1=I2+1
- '
- Inc P
- Wend
- '
- End Proc
- '
- Procedure _ADDZONE[X1,Y1,X2,Y2,BZ,TP$]
- '
- Shared _DIALOGBUTTON$
- '
- L$=Space$(22)+Mid$(TP$,2)+";"
- '
- Mid$(L$,1,1)=Mid$(TP$,1,1)
- Mid$(L$,3,3)=Str$(X1)-" "
- Mid$(L$,7,3)=Str$(Y1)-" "
- Mid$(L$,11,3)=Str$(X2)-" "
- Mid$(L$,15,3)=Str$(Y2)-" "
- Mid$(L$,19,4)=Str$(BZ)-" "
- '
- _DIALOGBUTTON$=_DIALOGBUTTON$+L$
- '
- End Proc
- '
- Procedure _ADDWINDOW[X1,Y1,W,H,T$,BZ]
- '
- Shared _DIALOGBUTTON$
- '
- Get Block 1,X1,Y1,(W*8),(H*8)
- '
- _DRAWUSEROBJECT[X1,Y1,X1+(W*8)-1,Y1+(H*8)-1,"WIN"+T$]
- '
- If BZ<>0
- '
- _DELETEBUTTON[1,-1]
- '
- L$=Space$(22)+Str$(Y1+(H*8))-" "+";"
- '
- Mid$(L$,1,1)="W"
- Mid$(L$,3,3)=Str$(X1)-" "
- Mid$(L$,7,3)=Str$(Y1)-" "
- Mid$(L$,11,3)=Str$(X1+(W*8)-1)-" "
- Mid$(L$,15,3)=Str$(Y1+10)-" "
- Mid$(L$,19,4)=Str$(BZ)-" "
- '
- _DIALOGBUTTON$=L$+_DIALOGBUTTON$
- '
- If _WINOX=-1 and _WINOY=-1
- _WINOX=X1
- _WINOY=Y1
- End If
- End If
- '
- _WINX1=X1
- _WINY1=Y1
- _WINX2=X1+(W*8)-1
- _WINY2=Y1+(H*8)-1
- '
- End Proc
- '
- Procedure _CLOSEWINDOW[BZ]
- '
- Put Block 1
- Del Block 1
- '
- If BZ<>0
- _DELETEBUTTON[BZ,-1]
- If A#=0.0
- _WINOX=-1
- _WINOY=-1
- End If
- End If
- '
- End Proc
- '
- Procedure _MOVEWINDOW[T$,BZ]
- '
- _GETBUTTONSTRING[BZ]
- ED$=Param$
- '
- X1=Val(Mid$(ED$,3,3))
- Y1=Val(Mid$(ED$,7,3))
- W=((Val(Mid$(ED$,11,3))-X1)/8)+1
- H=((Val(Mid$(ED$,23,3))-Y1)/8)
- '
- Get Block 2,X1,Y1,W*8,H*8
- '
- XX=X Screen(X Mouse)-X1
- YY=Y Screen(Y Mouse)-Y1
- '
- Gr Writing 2
- While Mouse Key>0
- '
- X=X Screen(X Mouse)
- Y=Y Screen(Y Mouse)
- '
- If X-XX<0
- X=XX
- X Mouse=X Hard(XX)
- End If
- '
- If Y-YY<0
- Y=YY
- Y Mouse=Y Hard(YY)
- End If
- '
- If(X-XX)+(W*8)>Screen Width-1
- X=XX+(Screen Width-(W*8))-1
- X Mouse=X Hard(XX+(Screen Width-(W*8))-1)
- End If
- '
- If(Y-YY)+(H*8)>Screen Height-1
- Y=YY+(Screen Height-(Y*8))-1
- Y Mouse=Y Hard(YY+(Screen Height-(H*8))-1)
- End If
- '
- Box X-XX,Y-YY To(X-XX)+(W*8)-1,(Y-YY)+(H*8)-1
- '
- Repeat
- Until X<>X Screen(X Mouse) or Y<>Y Screen(Y Mouse) or Mouse Key=0
- '
- Box X-XX,Y-YY To(X-XX)+(W*8)-1,(Y-YY)+(H*8)-1
- '
- Wend
- Gr Writing 1
- '
- A#=1.0
- _CLOSEWINDOW[BZ]
- A#=0.0
- '
- _ADDWINDOW[X-XX,Y-YY,W,H,T$,-BZ]
- '
- Put Block 2,X-XX,Y-YY
- Del Block 2
- '
- End Proc
- '
- Procedure _FLASH
- '
- Shared _BACK
- '
- C=Colour(_BACK)
- '
- R=(Colour(_BACK)/256)/2
- G=(Colour(_BACK)/16 mod 16)/2
- B=(Colour(_BACK) mod 16)/2
- '
- Colour _BACK,R*256+G*16+B
- '
- Wait 10
- '
- Colour _BACK,C
- '
- End Proc
- '
- Procedure _ALERTREQUESTER[M$,BT$]
- '
- Shared _DIALOGBUTTON$,_BACK,_COLOUR,_TEXT,_LIGHT,_SHADOW
- '
- If M$="_Cc_"
- Goto FIN
- End If
- '
- I=0
- J=0
- L=0
- While I<Len(M$)
- I=Instr(M$,"|",I+1)
- If I=0
- I=Len(M$)+1
- End If
- J=I
- Inc L
- Wend
- '
- I=0
- J=0
- B=0
- While I<Len(BT$)
- I=Instr(BT$,"|",I+1)
- If I=0
- I=Len(BT$)+1
- End If
- J=I
- Inc B
- Wend
- '
- B_DLG$=_DIALOGBUTTON$
- _DIALOGBUTTON$=""
- '
- _OPENDIALOGSCREEN[7,50+(L*8),50]
- Get Palette 0
- H=50+(L*8)-1
- '
- _DRAW3DBOX[0,0,639,H-1,"",4,0,_COLOUR]
- Set Pattern 2
- _DRAW3DBOX[3,10,636,H-2,"",3,_LIGHT,_BACK]
- Set Pattern 0
- '
- If BT$=""
- _DRAW3DBOX[0,0,639,10,"",4,0,_COLOUR]
- Ink _TEXT,_COLOUR
- Text 5,7,"Information Requester"
- _DRAW3DBOX[8,13,632,H-3,M$,3,_TEXT,_BACK]
- Goto FIN2
- End If
- '
- _DRAW3DBOX[0,0,18,10,"",4,1,_COLOUR]
- _ADDZONE[0,0,18,10,1,"B"]
- Ink _LIGHT
- Bar 7,3 To 11,7
- Ink _SHADOW
- Box 7,3 To 11,7
- _DRAW3DBOX[19,0,639,10,"",4,0,_COLOUR]
- Ink _TEXT,_COLOUR
- Text 24,7,"Button Requester"
- _DRAW3DBOX[8,13,632,H-20,M$,3,_TEXT,_BACK]
- '
- BB#=B
- D2#=326.0-((BB#*100.0)/2.0)
- '
- I=0
- J=0
- A=0
- While A<B
- I=Instr(BT$,"|",I+1)
- If I=0
- I=Len(BT$)+1
- End If
- _ADDBUTTON[D2#+100*A,H-18,D2#+100*A+86,H-5,Left$(Mid$(BT$,J+1,I-J-1),10),A+2]
- J=I
- Inc A
- Wend
- '
- Repeat
- _CHECKBUTTONS
- Q=Param
- Until Q
- '
- _DIALOGBUTTON$=B_DLG$
- B_DLG$=""
- ZN=0
- '
- FIN:
- Screen Close 7
- '
- FIN2:
- '
- End Proc[Q-1]
- '
- Procedure _EXAMINEFILE[F$]
- '
- Open In 1,F$
- L=Lof(1)
- H$=Input$(1,Min(L,1088))
- Close 1
- '
- Restore DAT
- '
- Repeat
- Read S1,H1$,S2,H2$,FT$
- If(Mid$(H$,S1,Len(H1$))=H1$) and(Mid$(H$,S2,Len(H2$))=H2$)
- OK=1
- Exit
- End If
- Until H1$="END"
- '
- If H1$="END"
- C=0
- For N=1 To Len(H$)
- A=Asc(Mid$(H$,N,1))
- If A>=32 or A=10 or A=9
- Inc C
- End If
- Next N
- P=(C*100)/Len(H$)
- If P>95
- FT$="ASCII TEXT"
- End If
- End If
- '
- DAT:
- Data 1,"FORM",9,"ILBM","IFF PICTURE"
- Data 1,"FORM",9,"SMUS","IFF MUSIC (AEGIS SONIX)"
- Data 1,"FORM",9,"8SVX","IFF SAMPLE"
- Data 1,"FORM",9,"ANIM","IFF ANIMATION"
- Data 1,"FORM",9,"SC3D","SCULPT 3D SCENE"
- Data 1,"AmSp",1,"","AMOS BOB BANK"
- Data 1,"AmIc",1,"","AMOS ICON BANK"
- Data 1,"AmBk",13,"Music","AMOS MUSIC BANK"
- Data 1081,"M.K.",1,"","NOISE/SOUND/PRO TRACKER MODULE"
- Data 1081,"FLT4",1,"","NOISE/SOUND/PRO TRACKER MODULE"
- Data 1,"BeEp",1,"","JAMCRACKER MODULE"
- Data 1,Chr$(65)+Chr$(250)+Chr$(15)+Chr$(250),1,"","SIDMON V1.0 MODULE"
- Data 27,"V.2",1,"","BPSOUNDMON MODULE"
- Data 1,"SMOD",1,"","FUTURE COMPOSER V1.0-V1.3"
- Data 365,"DELTA MUSIC V2.0",0,"","DELTA MUSIC V2.0"
- Data 1,"MMD1",1,"","MED MODULE"
- Data 1,"MMD0",6,Chr$(2),"MED MODULE (4 CHANNELS)"
- Data 1,"MMD0",6,Chr$(1),"MED MODULE (8 CHANNELS)"
- Data 1,"AmBk",13,"Tracker","SOUNDTRACKER MODULE IN AN AMOS BANK"
- Data 1,"AmBk",13,"Pac.Pic","AMOS PAC PIC"
- Data 1,"AmBk",13,"Samples","AMOS SAMPLE BANK"
- Data 1,"AmBk",13,"Menu","AMOS MENU BANK"
- Data 1,"AmBk",13,"Amal","AMOS AMAL BANK"
- Data 1,"AmBk",13,"Data","AMOS DATA BANK"
- Data 1,"AmBk",13,"Resource","AMOS RESOURCE BANK"
- Data 1,"AmBk",1,"","AMOS BANK"
- Data 1,"AmBs",1,"","SET OF AMOS BANKS"
- Data 1,"AMOS Basic",1,"","AMOS 1.3 PROGRAM"
- Data 1,"AMOS Pro",1,"","AMOS PROFESSIONAL PROGRAM"
- Data 1,Chr$(15)+Chr$(0)+Chr$(0),1,"","FONT DATA FILE"
- Data 1,Chr$(0)+Chr$(0)+Chr$(3)+Chr$($F3),33,"pdNu","WORKBENCH FONT"
- Data 1,Chr$(0)+Chr$(0)+Chr$(3)+Chr$($F3),1,"","EXECUTABLE PROGRAM"
- Data 1,"PP20",1,"","POWERPACKEDDATA FILE"
- Data 1,"MED"+Chr$(4),1,"","OCTAMED MODULE"
- Data 1,"MSH"+Chr$(0),1,"","OCTAMED SYNTHSOUND"
- Data 1,Chr$(227)+Chr$(16)+Chr$(0)+Chr$(1),1,"","WORKBENCH ICON"
- Data 1,"PPbk",1,"","AMOS POWERPACKED BANK"
- Data 1,Chr$(255)+Chr$(216)+Chr$(255)+Chr$(224),7,"JFIF","JPEG PICTURE"
- Data 1,"DMS!",1,"","DISKMASHER FILE"
- Data 1,"xSceneEditor",1,"","MOVIESETTER MOVIE WITH DATA"
- Data 1,"FILM",1,"","MOVIESETTER MOVIE WITHOUT DATA"
- Data 1,"DM20",1,"","DATAMASTER V2.0 DATABASE"
- Data 1,"MM"+Chr$(0)+"*",1,"","TIFF PICTURE"
- Data 5,"DEBR",27,"CHAG","FREELANCE V2.0 PRESENTATION"
- Data 1,Chr$(10)+Chr$(5)+Chr$(1),1,"","PCX PICTURE"
- Data 1,"BM",15,"(","BMP PICTURE"
- Data 1,Chr$(0)+Chr$(32)+Chr$(16)+Chr$(34),1,"","CGM METAFILE"
- Data 1,"GIF87",1,"","GIF PICTURE"
- Data 1,"GIF89",1,"","GIF PICTURE"
- Data 1,"/*",1,"","AREXX PROGRAM"
- Data 1,Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0),49,Chr$(128)+Chr$(30),"NEOCHOME PICTURE"
- Data 1,"@D",1,"","AMIGAGUIDE DOCUMENT"
- Data 1,"@d",1,"","AMIGAGUIDE DOCUMENT"
- Data 1,"END",1,"","UNKNOWN FILE TYPE"
- '
- End Proc[FT$]
- '
- Procedure _GETWBPALETTE
- '
- F$=""
- F=0
- '
- If Exist("Env:Sys/Palette.prefs")
- F$="Env:Sys/Palette.prefs"
- F=1
- End If
- '
- If F=0 and Exist("ENVARC:Sys/Palette.prefs")
- F$="EnvArc:Sys/Palette.prefs"
- F=1
- End If
- '
- If F=0 and Exist("Devs:System-Configuration")
- F$="Devs:System-Configuration"
- F=2
- End If
- '
- If F=0
- Palette $999,$0,$FFF,$58A,$F00,$F0,$F,$FF0
- End If
- '
- ' *** Change To WB Colours.
- '
- If F=1
- Open In 1,F$
- L=Lof(1)
- Close 1
- A$=String$(" ",L)
- Bload F$,Varptr(A$)
- For A=0 To 7
- R=Peek(Varptr(A$)+180+A*8)/16
- G=Peek(Varptr(A$)+182+A*8)/16
- B=Peek(Varptr(A$)+184+A*8)/16
- Colour A,(R*256+G*16+B)
- Next A
- A$=""
- End If
- '
- If F=2
- Open In 1,F$
- L=Lof(1)
- Close 1
- A$=Space$(L)
- Bload F$,Varptr(A$)
- For A=0 To 3
- Colour A,Deek(Varptr(A$)+110+A*2)
- Colour A+16,Deek(Varptr(A$)+102+A*2)
- Next A
- A$=""
- End If
- '
- Colour Back Colour(0)
- '
- End Proc
- '
- Procedure _PALETTEREQUESTER[S]
- '
- Shared _DIALOGBUTTON$,_BACK,_SHADOW,_LIGHT,_COLOUR,_TEXT,_FONTNAME$,_FONTSIZE
- '
- _TEMP1$=_DIALOGBUTTON$
- _TEMP2$=_FONTNAME$
- _TEMP3=_FONTSIZE
- _DIALOGBUTTON$=""
- '
- SY=70
- _OPENDIALOGSCREEN[7,80,SY]
- Get Palette 0
- '
- _SETFONT["Topaz",8]
- '
- Screen S
- SC=Screen Colour
- If SC>64
- SC=16
- FF=16
- Else
- FF=SC
- End If
- C=1
- '
- Screen Open 6,320,20,SC,Lowres
- Screen Display 6,,SY+81,,
- Curs Off
- Flash Off
- Cls 0
- Get Palette S
- '
- STP=320/SC
- LOP=0
- While LOP<SC+1
- Ink LOP
- Bar LOP*STP,2 To LOP*STP+STP,20
- Inc LOP
- Wend
- Gosub _LINE
- Screen 7
- '
- _DRAW3DBOX[0,0,639,79,"",,0,3]
- _DRAWTITLEBAR["Palette Requester V1.1"]
- _ADDBUTTON[0,0,44,10,"OK",11]
- '
- _DRAW3DBOX[10,16,38,34,"R",1,_TEXT,_BACK]
- _DRAW3DBOX[10,36,38,54,"G",1,_TEXT,_BACK]
- _DRAW3DBOX[10,56,38,74,"B",1,_TEXT,_BACK]
- '
- _HORIZONTALSLIDER[42,16,418,18,16,1,""]
- _HORIZONTALSLIDER[42,36,418,18,16,1,""]
- _HORIZONTALSLIDER[42,56,418,18,16,1,""]
- '
- _ADDBUTTON[462,19,476,31,"(S)LAR",1]
- _ADDBUTTON[462,39,476,51,"(S)LAR",2]
- _ADDBUTTON[462,59,476,71,"(S)LAR",3]
- _ADDBUTTON[478,19,492,31,"(S)RAR",4]
- _ADDBUTTON[478,39,492,51,"(S)RAR",5]
- _ADDBUTTON[478,59,492,71,"(S)RAR",6]
- '
- _DRAW3DBOX[495,16,521,34,"",0,,_COLOUR]
- _DRAW3DBOX[495,36,521,54,"",0,,_COLOUR]
- _DRAW3DBOX[495,56,521,74,"",0,,_COLOUR]
- _DRAW3DBOX[497,17,519,33,"",1,,_BACK]
- _DRAW3DBOX[497,37,519,53,"",1,,_BACK]
- _DRAW3DBOX[497,57,519,73,"",1,,_BACK]
- '
- _ADDBUTTON[525,16,629,30,"Spread",7]
- _ADDBUTTON[525,31,629,45,"Swap",8]
- _ADDBUTTON[525,46,629,60,"Copy",9]
- _ADDBUTTON[525,61,629,75,"Reset",10]
- '
- Gosub _GET
- Gosub _LINE
- Gosub _R_SLIDER
- Gosub _G_SLIDER
- Gosub _B_SLIDER
- '
- Do
- '
- _CHECKBUTTONS
- ZN=Param
- '
- _CHECKZONE[46,0,639,10,0]
- If Param
- YY=Y Screen(Y Mouse)
- While Mouse Key
- If Y Mouse>42 and Y Mouse<200
- SY=Y Mouse
- Screen Display 7,,SY-YY,,
- Screen Display 6,,SY-YY+81,,
- End If
- Wend
- End If
- '
- If ZN=11
- Goto FIN
- End If
- '
- If ZN=1 and R>0
- Dec R
- Gosub _R_SLIDER
- Gosub _CHANGE
- End If
- '
- If ZN=4 and R<15
- Inc R
- Gosub _R_SLIDER
- Gosub _CHANGE
- End If
- '
- If ZN=2 and G>0
- Dec G
- Gosub _G_SLIDER
- Gosub _CHANGE
- End If
- '
- If ZN=5 and G<15
- Inc G
- Gosub _G_SLIDER
- Gosub _CHANGE
- End If
- '
- If ZN=3 and B>0
- Dec B
- Gosub _B_SLIDER
- Gosub _CHANGE
- End If
- '
- If ZN=6 and B<15
- Inc B
- Gosub _B_SLIDER
- Gosub _CHANGE
- End If
- '
- If ZN=7
- '
- _DRAWTITLEBAR["Select Colour To Spread To (ESC Exits)"]
- CC=C
- Screen 6
- Repeat
- If Mouse Key
- CC=Point(X Screen(6,X Mouse),Y Screen(6,Y Mouse))
- End If
- Until Inkey$=Chr$(27) or(CC<>C and CC<FF)
- '
- If CC<>C
- FIRST=C
- LAST=CC
- Screen 6
- If FIRST>LAST
- Swap FIRST,LAST
- End If
- CF=Colour(FIRST)
- CL=Colour(LAST)
- NCOLS#=LAST-FIRST
- '
- DR#=(((CL/256) mod 16)-((CF/256) mod 16))/NCOLS#
- DG#=(((CL/16) mod 16)-((CF/16) mod 16))/NCOLS#
- DB#=((CL mod 16)-(CF mod 16))/NCOLS#
- '
- N=0
- While N<(LAST-FIRST)+1
- R=((CF/256) mod 16)+DR#*N
- G=((CF/16) mod 16)+DG#*N
- B=(CF mod 16)+DB#*N
- Colour FIRST+N,R*256+G*16+B
- Inc N
- Wend
- End If
- '
- Screen 7
- _DRAWTITLEBAR["Palette Requester V1.1"]
- _ADDBUTTON[0,0,44,10,"OK",0]
- Gosub _GET
- Gosub _R_SLIDER
- Gosub _G_SLIDER
- Gosub _B_SLIDER
- '
- End If
- '
- If ZN=8
- '
- _DRAWTITLEBAR["Select Colour To Swap With (ESC Exits)"]
- CC=C
- Screen 6
- Repeat
- If Mouse Key
- CC=Point(X Screen(6,X Mouse),Y Screen(6,Y Mouse))
- End If
- Until Inkey$=Chr$(27) or(CC<>C and CC<FF)
- '
- TMP=Colour(C)
- Colour C,Colour(CC)
- Colour CC,TMP
- Screen 7
- _DRAWTITLEBAR["Palette Requester V1.1"]
- _ADDBUTTON[0,0,44,10,"OK",0]
- Gosub _GET
- Gosub _R_SLIDER
- Gosub _G_SLIDER
- Gosub _B_SLIDER
- '
- End If
- '
- If ZN=9
- '
- _DRAWTITLEBAR["Select Colour To Copy To (ESC Exits)"]
- CC=C
- Screen 6
- Repeat
- If Mouse Key
- CC=Point(X Screen(6,X Mouse),Y Screen(6,Y Mouse))
- End If
- Until Inkey$=Chr$(27) or(CC<>C and CC<FF)
- '
- Colour CC,Colour(C)
- Screen 7
- _DRAWTITLEBAR["Palette Requester V1.1"]
- _ADDBUTTON[0,0,44,10,"OK",0]
- Gosub _GET
- Gosub _R_SLIDER
- Gosub _G_SLIDER
- Gosub _B_SLIDER
- '
- End If
- '
- If ZN=10
- Screen 6
- Get Palette S
- Screen 7
- Gosub _GET
- Gosub _R_SLIDER
- Gosub _G_SLIDER
- Gosub _B_SLIDER
- End If
- '
- If Scin(X Mouse,Y Mouse)=6
- Gosub _PICK
- End If
- '
- _CHECKZONE[42+(R*26),16,42+(R*26)+24,34,0]
- If Param
- While Mouse Key and X Screen(X Mouse)>46 and X Screen(X Mouse)<454
- R=(X Screen(X Mouse)-42)/26
- Gosub _R_SLIDER
- Gosub _CHANGE
- Wend
- End If
- '
- _CHECKZONE[42+(G*26),36,42+(G*26)+24,54,0]
- If Param
- While Mouse Key and X Screen(X Mouse)>46 and X Screen(X Mouse)<454
- G=(X Screen(X Mouse)-42)/26
- Gosub _G_SLIDER
- Gosub _CHANGE
- Wend
- End If
- '
- _CHECKZONE[42+(B*26),56,42+(B*26)+24,74,0]
- If Param
- While Mouse Key and X Screen(X Mouse)>46 and X Screen(X Mouse)<454
- B=(X Screen(X Mouse)-42)/26
- Gosub _B_SLIDER
- Gosub _CHANGE
- Wend
- End If
- '
- Loop
- '
- FIN:
- Screen S
- Get Palette 6
- Screen Close 7
- Screen Close 6
- _SETFONT[_TEMP2$,_TEMP3]
- _DIALOGBUTTON$=_TEMP1$
- Pop Proc
- '
- _PICK:
- While Scin(X Mouse,Y Mouse)=6
- Screen 6
- If Mouse Key
- C=Point(X Screen(6,X Mouse),Y Screen(6,Y Mouse))
- Gosub _GET
- Gosub _LINE
- Gosub _R_SLIDER
- Gosub _G_SLIDER
- Gosub _B_SLIDER
- End If
- Wend
- Screen 7
- Return
- '
- _LINE:
- Screen 6
- Ink 0
- Draw 0,0 To 319,0
- Ink 1
- Draw C*STP,0 To C*STP+STP,0
- Screen 7
- Return
- '
- _GET:
- R=Colour(C)/256
- G=Colour(C)/16 mod 16
- B=Colour(C) mod 16
- Return
- '
- _R_SLIDER:
- _HORIZONTALSLIDER[42,16,418,18,16,R+1,""]
- _DRAW3DBOX[497,17,519,33,Str$(R)-" ",2,_TEXT,_BACK]
- Return
- '
- _G_SLIDER:
- _HORIZONTALSLIDER[42,36,418,18,16,G+1,""]
- _DRAW3DBOX[496,37,519,53,Str$(G)-" ",2,_TEXT,_BACK]
- Return
- '
- _B_SLIDER:
- _HORIZONTALSLIDER[42,56,418,18,16,B+1,""]
- _DRAW3DBOX[497,57,519,73,Str$(B)-" ",2,_TEXT,_BACK]
- Return
- '
- _CHANGE:
- R$=Hex$(R)
- G$=Mid$(Hex$(G),2,1)
- B$=Mid$(Hex$(B),2,1)
- Screen 6
- Colour C,Val(R$+G$+B$)
- Screen 7
- Return
- '
- End Proc
- '
- 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[360,64,_FILE$,31,31,-3]
- _DRAW3DBOX[356,13,440,27,"Drawer",1,_TEXT,_BACK]
- _ADDINPUTBUTTON[360,32,_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[360,64,_FILE$,31,31,0]
- _FILE$=Param$
- End If
- '
- If _BUTTONZONE=4
- _BPATH$=_PATH$
- _ADDINPUTBUTTON[360,32,_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=1
- '
- 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:
- _ADDINPUTBUTTON[360,32,_PATH$+_WILD$,31,31,999]
- Return
- '
- _DISPLAYFILE:
- _ADDINPUTBUTTON[360,64,_FILE$,31,31,999]
- 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$]
- '
- Procedure _INPUTREQUESTER[M$,TXT$,L,ML]
- '
- Shared _DIALOGBUTTON$,_BACK,_COLOUR,_TEXT,_LIGHT,_SHADOW
- '
- _TEMP1$=_DIALOGBUTTON$
- _TEMP2$=_FONTNAME$
- _TEMP3=_FONTSIZE
- _DIALOGBUTTON$=""
- _OLDTXT$=TXT$
- '
- _OPENDIALOGSCREEN[7,58,50]
- Get Palette 0
- H=57
- '
- _DRAW3DBOX[0,0,639,H-1,"",4,0,_COLOUR]
- Set Pattern 2
- _DRAW3DBOX[3,10,636,H-2,"",3,_LIGHT,_BACK]
- Set Pattern 0
- '
- _DRAW3DBOX[2,1,637,9,M$,2,_TEXT,_COLOUR]
- _DRAW3DBOX[8,13,632,H-20,"",3,,_BACK]
- '
- _ADDBUTTON[20,H-18,120,H-5,"Cancel",1]
- _ADDBUTTON[519,H-18,619,H-5,"OK",2]
- '
- L=Min(L,76)
- XX=(Screen Width/2)-(L*8/2)
- _ADDINPUTBUTTON[XX,24,TXT$,L,ML,-3]
- '
- Do
- '
- _CHECKBUTTONS
- _BUTTONZONE=Param
- '
- If _BUTTONZONE=1
- TXT$=_OLDTXT$
- Exit
- End If
- '
- If _BUTTONZONE=2
- Exit
- End If
- '
- If _BUTTONZONE=3
- _ADDINPUTBUTTON[XX,24,TXT$,L,ML,0]
- TXT$=Param$
- End If
- '
- Loop
- '
- _DIALOGBUTTON$=_TEMP1$
- _SETFONT[_TEMP2$,_TEMP3]
- Screen Close 7
- '
- End Proc[TXT$]
-
-