Set Buffer 25 Rem ************************** Rem ** CREATED WITH GUIAmos ** Rem ** By Andrew Fisher ** rem ** LEVEL 9 Software ** Rem ** CopyRight©® 1995 ** Rem ************************** Rem Screen Close 0 Assign"FONTS:"To"GUIAmos:newfonts/" Get Disc Fonts Rem Setup Variables xTBS= 13:YTBS= 13:WID=7 DimTYPE( 35),X1( 35),y1( 35),X2( 35),y2( 35),_ONOF( 35),ty( 35),_TOT( 35),pos( 35),_len( 35),_maxlen( 35),_def$( 35),file$( 35),tgles( 35),TX$( 35,10),ps( 35) Gosub Setup Rem ***** Main Loop ***** Do MZ=Mouse Zone : MS=Mouse Screen : MK=Mouse Key Rem Check Mouse key 1 If MK=1 Rem Check If gadget is a Button If MZ<>0 and TYPE(MZ)=1 or type(mz)=80 : Z=MZ : Gosub DEFINE : While Mouse Key=1 : If Mouse Zone<>Z : Gosub OFF : Exit : End If : Wend : Gosub OFF : End If Z=MZ Rem Check If gadget is a Toggle If TYPE(MZ)=22 : Gosub DEFINE : While Mouse Key=1 : If Mouse Zone=0 : Gosub OFF : Exit : End If : Wend : Gosub OFF : Gosub SHIFT : End If Rem Check If gadget is a Horozontal Slider if type(mz)=6:gosub hslide:endif Rem Check If gadget is a Vertical Slider if type(mz)=7:gosub vslide:endif Rem Check If gadget is a Vertical Scroller If TYPE(MZ)=35 : Gosub _VSCROLLER : End If Rem Check If gadget is a Horozontal Scroller If TYPE(MZ)=34 : Gosub _hscroller : End If Rem Check for File selection gad If TYPE(MZ)=23 : Z=MZ : Gosub DEFINE : While Mouse Key=1 : If Mouse Zone<>Z : Gosub OFF : Exit : End If : Wend : Gosub OFF : Gosub FILE : End If Rem Check If gadget is a Tick Box If MZ<>0 And TYPE(MZ)=4: Z=MZ Rem Check If tick Box is ticked/ not ticked If _ONOF(z)=0 : Gosub _TICK : _ONOF(z)=1 : Else Gosub _UNTICK : _ONOF(z)=0 : Endif : While Mouse Key=1 : Wend : Endif End If Wait Vbl Clear Key Loop SHIFT: Set Font 1 Rem Draw over previous text Ink 0 : Bar X1(MZ)+1+ 17,Y1(MZ)+1 To X2(MZ)-1,Y2(MZ)-1 Rem Add one to the current toggle position Add PS(MZ),1,1 To TGLES(MZ) Rem find the centre of the box in both x & y CENX=Abs(((X2(MZ)-X1(MZ)+ 17)-((Len(TX$(MZ,PS(MZ))))*5))/2) CENY=(Abs(Y2(MZ)-Y1(MZ))/2)+3 Rem place text on screen Ink 1,0 : Text CENX+X1(MZ)+1,CENY+Y1(MZ),TX$(MZ,PS(MZ)) Return rem file selection gadget FILE: FILE$(MZ)=Fsel$("","","","") Return rem return button to original state OFF: Ink 2 : Polyline X1(Z),Y2(Z) To X1(Z),Y1(Z) To X2(Z),Y1(Z) If TYPE(MZ)=80 : Polyline X1(Z)+1,Y2(Z)-1 To X1(Z)+1,Y1(Z)+1 To X2(Z)-1,Y1(Z)+1 : End If Ink 1 : Polyline X2(Z),Y1(Z) To X2(Z),Y2(Z) To X1(Z),Y2(Z) If TYPE(MZ)=80 : Polyline X1(Z)+1,Y2(Z)-1 To X2(Z)-1,Y2(Z)-1 To X2(Z)-1,Y1(Z)+1 : End If Return Rem Place button on screen (3d) DEFINE: Ink 1 : Polyline X1(Z),Y2(Z) To X1(Z),Y1(Z) To X2(Z),Y1(Z) If TYPE(MZ)=80 : Polyline X1(Z)+1,Y2(Z)-1 To X1(Z)+1,Y1(Z)+1 To X2(Z)-1,Y1(Z)+1 : End If Ink 2 : Polyline X2(Z),Y1(Z) To X2(Z),Y2(Z) To X1(Z),Y2(Z) If TYPE(MZ)=80 : Polyline X1(Z)+1,Y2(Z)-1 To X2(Z)-1,Y2(Z)-1 To X2(Z)-1,Y1(Z)+1 : End If Return Rem Place Tick on the screen _TICK: Ink 1 : If TY(Z)=0 : Polyline X1(Z)+(xTBS-2),Y1(Z)+2 To X1(Z)+4,Y1(Z)+(yTBS-2) To X1(Z)+2,Y1(Z)+(yTBS-5) : Else Ink 3 : Bar X1(Z)+1,Y1(Z)+1 To X2(Z)-1,Y2(Z)-1 : End If Return Rem take tick off the screen _UNTICK: Ink 0 : Bar X1(Z)+1,Y1(Z)+1 To X2(Z)-1,Y2(Z)-1 Return Hslide: Set Slider 0,0,1,1,0,0,1,0 rem maths to get position of slider XM#=X Screen(X Mouse) : MZ=Mouse Zone : _VAL#=X1(MZ) : SZ#=X2(MZ)-X1(MZ) : TPOS#=(XM#-_VAL#)/(SZ#/_TOT(MZ)) tpos=tpos# If TPOS=POS(MZ) Then Return POS(MZ)=TPOS# rem update slider If POS(MZ)=<_TOT(MZ) : Hslider X1(MZ),Y1(MZ) To X2(MZ),Y2(MZ),_TOT(MZ),POS(MZ),1 : Else POS(MZ)=_TOT(MZ) : End If Return Rem Move the position of Horozontal slider Vslide: Set Slider 0,0,1,1,0,0,1,0 YM#=Y Screen(Y Mouse) : MZ=Mouse Zone : _VAL#=Y1(MZ) : SZ#=Y2(MZ)-Y1(MZ) : TPOS#=(YM#-_VAL#)/(SZ#/_TOT(MZ)) tpos=tpos# If TPOS=POS(MZ) Then Return POS(MZ)=TPOS# If POS(MZ)=<_TOT(MZ) : Vslider X1(MZ),Y1(MZ) To X2(MZ),Y2(MZ),_TOT(MZ),POS(MZ),1 : Else POS(MZ)=_TOT(MZ) : End If Return _HScroller: rem Find out which side of the slider the mouse is on either <> Rem because I have only use one zone hers instead of two Rem (it saves zones anyway) XM=X Screen(X Mouse) : YM=Y Screen(Y Mouse) : X=XM-X1(MZ) If X=>WID : XOFF=WID : XOFF2=0 : Add POS(MZ-1),1 : Else XOFF=0 : XOFF2=-WID : If POS(MZ-1)-1=>0 : Add POS(MZ-1),-1 : End If : End If Screen 1 Ink 1 : Polyline X2(MZ)+XOFF2,Y1(MZ) To X1(MZ)+XOFF,Y1(MZ) To X1(MZ)+XOFF,Y2(MZ) Ink 2 : Polyline X1(MZ)+XOFF,Y2(MZ) To X2(MZ)+XOFF2,Y2(MZ) To X2(MZ)+XOFF2,Y1(MZ) While Mouse Key=1 : Wend Ink 2 : Polyline X2(MZ)+XOFF2,Y1(MZ) To X1(MZ)+XOFF,Y1(MZ) To X1(MZ)+XOFF,Y2(MZ) Ink 1 : Polyline X1(MZ)+XOFF,Y2(MZ) To X2(MZ)+XOFF2,Y2(MZ) To X2(MZ)+XOFF2,Y1(MZ) MZ=MZ-1 If POS(MZ)=<_TOT(MZ) : Hslider X1(MZ),Y1(MZ) To X2(MZ),Y2(MZ),_TOT(MZ),POS(MZ),1 : Else POS(MZ)=_TOT(MZ) : End If Return _VSCROLLER: XM=X Screen(X Mouse) : YM=Y Screen(Y Mouse) : Y=YM-Y1(MZ) If Y=0 : Add POS(MZ-1),-1 : End If : Else YOFF=0 : YOFF2=WID+1 : Add POS(MZ-1),1 : End If Screen 1 Ink 1 : Polyline X2(MZ),Y1(MZ)+YOFF2 To X1(MZ),Y1(MZ)+YOFF2 To X1(MZ),Y2(MZ)-YOFF Ink 2 : Polyline X1(MZ),Y2(MZ)-YOFF To X2(MZ),Y2(MZ)-YOFF To X2(MZ),Y1(MZ)+YOFF2 While Mouse Key=1 : Wend Ink 2 : Polyline X2(MZ),Y1(MZ)+YOFF2 To X1(MZ),Y1(MZ)+YOFF2 To X1(MZ),Y2(MZ)-YOFF Ink 1 : Polyline X1(MZ),Y2(MZ)-YOFF To X2(MZ),Y2(MZ)-YOFF To X2(MZ),Y1(MZ)+YOFF2 MZ=MZ-1 If POS(MZ)=<_TOT(MZ) : Vslider X1(MZ),Y1(MZ) To X2(MZ),Y2(MZ),_TOT(MZ),POS(MZ),1 : Else POS(MZ)=_TOT(MZ) : End If Return Setup: Rem Open data file and load all info! Open In 1,"DF0:Example.DAT" For I=1 To 14 : Input #1,NUL : Next I For I=1 To 35 : Input #1,TYPE(I) : Next I For I=1 To 35 : Input #1,_ONOF(I): Next I For I=1 To 35 : input #1,ty(I) : Next I for i=1 to 35 : input #1,_tot(i): Next i for i=1 to 35 : input #1,pos(i): next i For I=1 To 35 : Input #1,x1(I): Next I For I=1 To 35 : Input #1,y1(I): Next I For I=1 To 35 : Input #1,x2(I): Next I For I=1 To 35 : Input #1,y2(I): Next I for i=1 to 35 : input #1,_len(I): Next I For I=1 To 35 : input #1,_MAXLEN(I) : Next I For I=1 To 35 : input #1,_DEF$(I) : Next I for i=1 to 35 If TYPE(I)=22 for no=1 to 10 input #1,tx$(I,no) next no endif next i For I=1 To 35:If TYPE(I)=22 : input #1,tgles(I) :endif :Next I For i=1 to 35 Ps(i)=1 next i Close 1 Rem load the iff background Load Iff"DF0:Examplegui",1 Limit mouse xhard(0),yhard(0) to xhard(2*screen width),yhard(screen height) curs off Reserve Zone 35 Rem Setup Some Zones! For I=1 To 35 If TYPE(I)=1 or TYPE(I)=4 or TYPE(I)=6 or TYPE(I)=7 or TYPE(I)=23 or type(i)=22 or type(i)=34 or type(i)=35 or type(i)=80 Set Zone i,X1(i),Y1(i) To X2(i),Y2(i) End If Next I For I=1 To 35 If _ONOF(I)=1 : Ink 1 If TY(I)=0 Polyline X1(I)+(xTBS-2),Y1(I)+2 To X1(I)+4,Y1(I)+(yTBS-2) To X1(I)+2,Y1(I)+(yTBS-5) Else Ink 3 : Bar X1(i)+1,Y1(i)+1 To X2(i)-1,Y2(i)-1 End If End If next i Set Slider 0,0,1,1,0,0,1,0 For i=1 to 35 if type(i)=6 Hslider X1(i),Y1(i) To X2(i),Y2(i),_TOT(i),POS(i),1 endif Next i For i=1 to 35 if type(i)=7 vslider X1(i),Y1(i) To X2(i),Y2(i),_TOT(i),POS(i),1 endif next i For I=1 To 35 If TYPE(I)=20 or type(i)=21 Inc _TEXTZ D$=_DEF$(I)-" " if type(i)=20:ty$="ED": DEF$="'"+_def$(i)+"'": Else TY$="DI ": If D$="0": DEF$="2" Else _maxlen(i)=val(_def$(i)):def$="1":endif :end If A$=A$+ty$+str$(_textz)+","+Str$(X1(I))+","+Str$(y1(I))+","+Str$(_LEN(I)-1)+","+str$(_maxlen(i))+","+DEF$ a$=A$+",0,1;" Endif Next I _TEXTZ=0 a$=a$+"EXit;" Dialog Open 1,a$,32, 1348 B=Dialog Run(1) Gr Writing 1 rem Setup Menus Menu$( 1)="Project Menu$( 2)="Colours Menu$( 3)="Help! Menu$( 4)="GuiAmos Menu$( 1, 1)="A Menu$( 1, 1, 1)="Quick Menu$( 1, 1, 2)="Demo Menu$( 1, 1, 3)="Example Menu$( 1, 1, 4)="To Menu$( 1, 1, 5)="Show Menu$( 1, 1, 6)="GuiAmos Menu$( 1, 1, 7)="At Menu$( 1, 1, 8)="Work menu on Return