home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 8
/
FreshFishVol8-CD1.bin
/
new
/
util
/
cdity
/
hotscreen
/
selectscreen.mod
< prev
Wrap
Text File
|
1994-06-03
|
2KB
|
105 lines
MODULE SelectScreen;
IMPORT
e:Exec,
d:Dos,
I:Intuition,
str:Strings,
y:SYSTEM,
g:Graphics;
TYPE MStr=ARRAY 90 OF CHAR;
VAR wnd:I.WindowPtr;
NList:ARRAY 50 OF MStr;
SList:ARRAY 50 OF I.ScreenPtr;
Sel,siz,LLen:INTEGER;
SelS:I.ScreenPtr;
TxtF:g.TextFontPtr;
CONST VersionString="$VER: HotScreen by HDS 1994 ";
PROCEDURE GetList;
VAR scr:I.ScreenPtr;
BEGIN;
LLen:=0;
scr:=I.base.activeScreen;
SelS:=scr;
WHILE scr#NIL DO
INC(LLen);
NList[LLen]:="No Name !";
IF scr.title#NIL THEN
str.Cut(scr.title^,0,str.Length(scr.title^),NList[LLen]);
IF str.Length(NList[LLen])>30 THEN
str.Cut(scr.title^,0,30,NList[LLen]);
END;END;
SList[LLen]:=scr;
scr:=scr.nextScreen;Sel:=1;
END;
END GetList;
PROCEDURE InitWindow;
VAR nwn:I.NewWindow;
h,w:INTEGER;
BEGIN;
nwn:=I.NewWindow(0,0,10,10,1,1,LONGSET{I.rawKey},
LONGSET{I.activate},NIL,NIL,NIL,NIL,NIL,0,0,400,400,I.customScreen);
nwn.screen:=SList[1];
siz:=nwn.screen.font.ySize+2;
nwn.topEdge:=(SList[1].height-h)DIV 2;
nwn.leftEdge:=(SList[1].width-28*siz) DIV 2;
nwn.height:=10;nwn.width:=10;
wnd:=I.OpenWindow(nwn);
w:=g.TextLength(wnd.rPort,VersionString,32);
siz:=wnd.iFont.ySize;
h:=siz*LLen+siz;
I.SizeWindow(wnd,w-10,h-10);
d.Delay(10);
END InitWindow;
PROCEDURE DrawList;
VAR n:INTEGER;
BEGIN;
FOR n:=1 TO LLen DO
g.SetAPen(wnd.rPort,1);
g.SetBPen(wnd.rPort,0);
IF Sel=n THEN
g.SetAPen(wnd.rPort,0);
g.SetBPen(wnd.rPort,1);END;
g.Move(wnd.rPort,8,siz*n+2);
g.Text(wnd.rPort,NList[n],str.Length(NList[n]));
END;
END DrawList;
PROCEDURE MainLoop;
VAR im:I.IntuiMessagePtr;
ende:BOOLEAN;
BEGIN;
ende:=FALSE;
REPEAT;
im:=e.GetMsg(wnd.userPort);
IF im#NIL THEN
IF im.code=77 THEN INC(Sel);IF Sel>LLen THEN Sel:=1;END;DrawList;END;
IF im.code=76 THEN DEC(Sel);IF Sel<1 THEN Sel:=LLen;END;DrawList;END;
IF im.code=69 THEN ende:=TRUE;END;
IF im.code=68 THEN ende:=TRUE;SelS:=SList[Sel];END;
e.ReplyMsg(im);
END;
UNTIL ende;
END MainLoop;
PROCEDURE DoIt*;
BEGIN;
GetList;
InitWindow;
DrawList;
MainLoop;
I.CloseWindow(wnd);
I.ScreenToFront(SelS);
END DoIt;
END SelectScreen.