home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Vectronix 2
/
VECTRONIX2.iso
/
FILES_07
/
LATTIC_3.ZIP
/
WTEST
/
WTEST.MOD
< prev
next >
Wrap
Text File
|
1988-08-31
|
6KB
|
210 lines
MODULE WercTest;
FROM Object IMPORT Object,ObjectStates,PObject,TEDINFO,G_BUTTON,objc_draw,
SELECTED;
FROM MenuLib IMPORT menu_icheck,menu_bar,menu_tnormal;
FROM Forms IMPORT form_dial,form_do,form_center,form_alert,
ReserveSpace,ExpandBox,ShrinkBox,FreeSpace;
FROM Resource IMPORT rsrc_gaddr,rsrc_free,tree,string;
FROM AesSupport IMPORT ApplicationControl;
FROM Window IMPORT wind_get,wind_set_long;
FROM SYSTEM IMPORT ADR,ADDRESS,TSIZE,BYTE;
FROM Application IMPORT appl_exit;
FROM Activity IMPORT EventRecord,GetActivity,EventClass,ExternalMouseControl;
FROM Event IMPORT Message,EventSet,MN_SELECTED;
FROM Strings IMPORT Length;
FROM Graphics IMPORT graf_mouse;
IMPORT WRSC;
CONST
WF_WORKXYWH=4;
WF_NEWDESK=14;
TYPE
PTEDINFO=POINTER TO TEDINFO;
PCHAR=POINTER TO CHAR;
PObjectArray=POINTER TO ARRAY[0..999] OF Object;
VAR
screenx,screeny,screenw,screenh:CARDINAL;
e:EventRecord;
DeskFlag,Finished,Checked:BOOLEAN;
MenuAdr:PObjectArray;
junk:CARDINAL;
TempAdr:PObject;
EditString:ARRAY[0..40] OF CHAR;
AlertString:ARRAY[0..80] OF CHAR;
RadioButton:CARDINAL;
PROCEDURE Initialise;
BEGIN
ExternalMouseControl:=TRUE;
ApplicationControl('WRSC');
junk:=graf_mouse(0,NIL);
junk:=rsrc_gaddr(tree,WRSC.Menu1,MenuAdr);
junk:=menu_bar(PObject(MenuAdr),TRUE);
junk:=wind_get(0,WF_WORKXYWH,screenx,screeny,screenw,screenh)
DeskFlag:=FALSE;
END Initialise;
(* set or reset the desktop pattern *)
PROCEDURE SetDesk(newdesk:ADDRESS);
BEGIN
junk:=wind_set_long(0,WF_NEWDESK,newdesk,ADDRESS(LONG(0)));
(* cause the AES to re-draw the whole screen *)
junk:=form_dial(FreeSpace,0,0,0,0,screenx,screeny,screenw,screenh);
END SetDesk;
PROCEDURE DeInitialise;
BEGIN
IF DeskFlag THEN
SetDesk(ADDRESS(LONG(0)));
DeskFlag:=FALSE;
END;
junk:=menu_bar(PObject(MenuAdr),FALSE);
junk:=rsrc_free();
junk:=appl_exit();
END DeInitialise;
PROCEDURE HandleDialog(Dialog:PObjectArray;DefaultItem:CARDINAL):CARDINAL;
VAR x,y,w,h,but:CARDINAL;
BEGIN
form_center(Dialog,x,y,w,h);
junk:=form_dial(ReserveSpace,0,0,0,0,x,y,w,h);
junk:=form_dial(ExpandBox,x+w DIV 2,y+h DIV 2,0,0,x,y,w,h)
junk:=objc_draw(PObject(Dialog),0,10,x,y,w,h);
but:=form_do(Dialog,DefaultItem);
junk:=form_dial(ShrinkBox,x+w DIV 2,y+h DIV 2,0,0,x,y,w,h);
junk:=form_dial(FreeSpace,0,0,0,0,x,y,w,h);
WITH Dialog^[but] DO
IF ob_type=G_BUTTON THEN EXCL(ob_state,SELECTED); END;
END;
RETURN but;
END HandleDialog;
PROCEDURE PcharToString(from:ADDRESS;VAR newstr:ARRAY OF CHAR);
VAR pc:PCHAR;i:CARDINAL;
BEGIN
i:=0;
pc:=from;
WHILE (pc^<>0c) AND (i<HIGH(newstr)) DO
newstr[i]:=pc^;
pc:=PCHAR(LONGCARD(pc)+1);
INC(i);
END;
newstr[i]:=0c; (* ensure null terminated *)
END PcharToString;
PROCEDURE SetTedinfo(Dialog:PObjectArray;object:CARDINAL;VAR newted:ARRAY OF CHAR);
VAR ted:PTEDINFO;
pc:PCHAR;
i:CARDINAL
BEGIN
ted:=PTEDINFO(Dialog^[object].ob_spec);
pc:=PCHAR(ted^.te_ptext);
FOR i:=1 TO Length(newted) DO
pc^:=newted[i-1];
pc:=PCHAR(LONGCARD(pc)+1);
END;
pc^:=0c; (* ensure null terminated *)
END SetTedinfo;
PROCEDURE GetTedinfo(Dialog:PObjectArray;object:CARDINAL;VAR newted:ARRAY OF CHAR);
VAR ted:PTEDINFO;
pc:PCHAR;
i:CARDINAL;
BEGIN
ted:=PTEDINFO(Dialog^[object].ob_spec);
PcharToString(ted^.te_ptext,newted);
END GetTedinfo;
PROCEDURE SetButton(Dialog:PObjectArray; parent,button:CARDINAL);
VAR Cur:CARDINAL;
BEGIN
Cur:=Dialog^[parent].ob_head;
WHILE Cur<>parent DO
WITH Dialog^[Cur] DO
IF Cur=button THEN
INCL(ob_state,SELECTED);
ELSE
EXCL(ob_state,SELECTED);
END;
Cur:=ob_next;
END;
END;
END SetButton;
PROCEDURE GetButton(Dialog:PObjectArray; parent:CARDINAL):CARDINAL;
VAR Cur:CARDINAL;
BEGIN
Cur:=Dialog^[parent].ob_head;
WHILE Cur<>parent DO
WITH Dialog^[Cur] DO
IF SELECTED IN ob_state THEN
RETURN Cur;
END;
Cur:=ob_next;
END;
END;
END GetButton;
PROCEDURE TestDialog;
VAR dialog:PObjectArray;
BEGIN
junk:=rsrc_gaddr(tree,WRSC.TestDialog,TempAdr);
dialog:=ADDRESS(TempAdr);
SetTedinfo(dialog,WRSC.DEditable,EditString);
SetButton(dialog,WRSC.DParent,RadioButton);
IF HandleDialog(dialog,WRSC.DEditable)=WRSC.DOK THEN
GetTedinfo(dialog,WRSC.DEditable,EditString);
RadioButton:=GetButton(dialog,WRSC.DParent);
END;
END TestDialog;
PROCEDURE HandleMenu(title,item:CARDINAL);
BEGIN
CASE item OF
WRSC.MAbout:
junk:=rsrc_gaddr(string,WRSC.AAlert,TempAdr);
PcharToString(TempAdr,AlertString);
junk:=form_alert(1,AlertString); |
WRSC.MQuit: Finished:=TRUE;|
WRSC.MCheckme:
Checked:=NOT Checked;
junk:=menu_icheck(PObject(MenuAdr),WRSC.MCheckme,Checked);|
WRSC.MDialog:
TestDialog;|
WRSC.MInstall:
IF DeskFlag THEN
SetDesk(ADDRESS(LONG(0)));
DeskFlag:=FALSE;
ELSE
junk:=rsrc_gaddr(tree,WRSC.NewDesktop,TempAdr);
WITH TempAdr^ DO
ob_x:=screenx; ob_y:=screeny;
ob_width:=screenw; ob_height:=screenh;
END;
SetDesk(TempAdr);
DeskFlag:=TRUE;
END;|
END;
junk:=menu_tnormal(PObject(MenuAdr),title,TRUE); (* normal state *)
END HandleMenu;
BEGIN
Initialise;
Finished:=FALSE;
Checked:=FALSE;
REPEAT
GetActivity(e);
WITH e DO
CASE Event OF
MessageEvent:
WITH Mess DO
CASE MessageType OF
MN_SELECTED: HandleMenu(Message[0],Message[1]);|
(* other messages here *)
END;
END;|
(* other types of event here *)
END;
END;
UNTIL Finished;
DeInitialise;
END WercTest.