home *** CD-ROM | disk | FTP | other *** search
- 10 ! ******************************************************************
- 20 ! Example: SLIDER Test
- 30 !
- 40 ! This program consists of a SLIDER and a LABEL in a PANEL with
- 50 ! a pulldown menu system. You set the SLIDER to a value, and the
- 60 ! LABEL shows the value.
- 70 !
- 80 ! ******************************************************************
- 90 !
- 100 ! Define colors
- 110 !
- 120 INTEGER Black,White,Red,Yellow,Green,Cyan,Blue,Magenta
- 130 DATA 0,1,2,3,4,5,6,7
- 140 READ Black,White,Red,Yellow,Green,Cyan,Blue,Magenta
- 150 !
- 160 ! Log and Direct are flags for LOGARITHMIC and DIRECT MOVE mode
- 170 ! settings. V is the value returned from the SLIDER.
- 180 !
- 190 INTEGER Log,Direct
- 200 REAL V
- 210 !
- 220 ! Variables for display handling
- 230 !
- 240 INTEGER Nlines,D(1:4),Dw,Dh,Iw,Ih,Gx,Gy! Display size parameters
- 250 INTEGER Pw,Ph,Px,Py ! PANEL parameters
- 260 INTEGER Lx,Ly,Lw,Lh,Sx,Sy,Sw,Sh ! LABEL & SLIDER parameters
- 270 !
- 280 ! Get display size
- 290 !
- 300 STATUS CRT,13;Nlines
- 310 GESCAPE CRT,3;D(*)
- 320 Dw=D(3)-D(1)
- 330 Dh=(D(4)-D(2))*((Nlines-7)/Nlines)
- 340 !
- 350 ! Set main PANEL dimensions and origin
- 360 !
- 370 Pw=Dw*.35
- 380 Ph=Dh*.8
- 390 Px=(Dw-Pw)/2
- 400 Py=(Dh-Ph)/2
- 410 !
- 420 ! Build main PANEL
- 430 !
- 440 CLEAR SCREEN
- 450 ASSIGN @Main TO WIDGET "PANEL";SET ("VISIBLE":0)
- 460 CONTROL @Main;SET ("X":Px,"Y":Py,"WIDTH":Pw,"HEIGHT":Ph)
- 470 CONTROL @Main;SET ("RESIZABLE":0,"MAXIMIZABLE":0)
- 480 CONTROL @Main;SET ("BACKGROUND":9,"TITLE":" Example: SLIDER Test")
- 490 !
- 500 ! Build menu
- 510 !
- 520 ASSIGN @Menu TO WIDGET "PULLDOWN MENU";PARENT @Main
- 530 CONTROL @Menu;SET ("LABEL":" Menu")
- 540 ASSIGN @Log TO WIDGET "MENU BUTTON";PARENT @Menu
- 550 CONTROL @Log;SET ("LABEL":" Set LOG mode")
- 560 Log=0
- 570 ASSIGN @Direct TO WIDGET "MENU BUTTON";PARENT @Menu
- 580 CONTROL @Direct;SET ("LABEL":" Set DIRECT MOVE")
- 590 Direct=0
- 600 ASSIGN @S1 TO WIDGET "MENU SEPARATOR";PARENT @Menu
- 610 ASSIGN @Quit TO WIDGET "MENU BUTTON";PARENT @Menu
- 620 CONTROL @Quit;SET ("LABEL":" Quit")
- 630 !
- 640 ! PANEL done, get inside dimensions
- 650 !
- 660 STATUS @Main;RETURN ("INSIDE WIDTH":Iw,"INSIDE HEIGHT":Ih)
- 670 !
- 680 ! Set widget parameters
- 690 !
- 700 Gx=Iw*.1 ! Set gaps
- 710 Gy=Ih*.05
- 720 Lx=Gx ! Position & size LABEL
- 730 Ly=Gy
- 740 Lw=Iw*.4
- 750 Lh=Iw*.2
- 760 Sx=Lx+Lw+Gx ! Position & size SLIDER
- 770 Sy=Gy
- 780 Sw=Iw-(Sx+Gx)
- 790 Sh=Ih-(2*Gy)
- 800 !
- 810 ! Create LABEL widget
- 820 !
- 830 ASSIGN @Label TO WIDGET "LABEL";PARENT @Main
- 840 CONTROL @Label;SET ("X":Lx,"Y":Ly,"WIDTH":Lw,"HEIGHT":Lh)
- 850 CONTROL @Label;SET ("BACKGROUND":1,"PEN":Black)
- 860 !
- 870 ! Create SLIDER widget
- 880 !
- 890 ASSIGN @Slider TO WIDGET "SLIDER";PARENT @Main
- 900 CONTROL @Slider;SET ("X":Sx,"Y":Sy,"WIDTH":Sw,"HEIGHT":Sh)
- 910 CONTROL @Slider;SET ("AUTO REPEAT":1,"LOGARITHMIC":0)
- 920 CONTROL @Slider;SET ("MAXIMUM":100,"MINIMUM":1)
- 930 CONTROL @Slider;SET ("MAJOR INCREMENT":10,"MINOR INCREMENT":1)
- 940 !
- 950 ! Enable events
- 960 !
- 970 ON EVENT @Log,"ACTIVATED" GOSUB Set_log
- 980 ON EVENT @Direct,"ACTIVATED" GOSUB Set_direct
- 990 ON EVENT @Slider,"CHANGED" GOSUB Set_label
- 1000 ON EVENT @Quit,"ACTIVATED" GOTO Finis
- 1010 !
- 1020 ! Initialize menu labels, make all widgets visible
- 1030 !
- 1040 GOSUB Set_label
- 1050 CONTROL @Main;SET ("VISIBLE":1)
- 1060 !
- 1070 ! Wait for event to happen
- 1080 !
- 1090 LOOP
- 1100 WAIT FOR EVENT
- 1110 END LOOP
- 1120 STOP
- 1130 !
- 1140 ! ********* Subroutines *****************
- 1150 !
- 1160 ! Toggle between log and linear mode
- 1170 !
- 1180 Set_log:!
- 1190 SELECT Log
- 1200 CASE 0
- 1210 CONTROL @Slider;SET ("LOGARITHMIC":1)
- 1220 CONTROL @Log;SET ("LABEL":"Set LINEAR Mode")
- 1230 Log=1
- 1240 CASE 1
- 1250 CONTROL @Slider;SET ("LOGARITHMIC":0)
- 1260 CONTROL @Log;SET ("LABEL":"Set LOG Mode")
- 1270 Log=0
- 1280 END SELECT
- 1290 RETURN
- 1300 !
- 1310 ! Toggle DIRECT MOVE on or off
- 1320 !
- 1330 Set_direct:!
- 1340 SELECT Direct
- 1350 CASE 0
- 1360 CONTROL @Slider;SET ("DIRECT MOVE":1)
- 1370 CONTROL @Direct;SET ("LABEL":"Clear DIRECT MOVE")
- 1380 Direct=1
- 1390 CASE 1
- 1400 CONTROL @Slider;SET ("DIRECT MOVE":0)
- 1410 CONTROL @Direct;SET ("LABEL":"Set DIRECT MOVE")
- 1420 Direct=0
- 1430 END SELECT
- 1440 RETURN
- 1450 !
- 1460 ! Set label value from SLIDER widget
- 1470 !
- 1480 Set_label:!
- 1490 STATUS @Slider;RETURN ("VALUE":V)
- 1500 CONTROL @Label;SET ("VALUE":V)
- 1510 RETURN
- 1520 !
- 1530 Finis:!
- 1540 ASSIGN @Main TO *! Delete PANEL widget
- 1550 END
-