(********************************************************************** :Program. Msg.mod :Contents. Display any messages from M2CED :Author. Steffen Reith :Address. Hessenstr. 64, D-8700 Würzburg :Copyright. Shareware :Language. Modula-2 :Translator. M2Amiga A+L V3.2d :Imports. CED, req :History. V1.0 15.June 1990 **********************************************************************) (* $S- $F- $N- $R- $V- *) IMPLEMENTATION MODULE Msg; FROM req IMPORT TRStructure,TextRequest; FROM SYSTEM IMPORT ADR,ADDRESS; FROM Arts IMPORT Terminate; FROM Intuition IMPORT IntuitionBase,IntuitionBasePtr,SetWindowTitles; FROM Intuition IMPORT ScreenPtr,WindowPtr,Screen,Window,WBenchToFront,DisplayBeep; FROM Intuition IMPORT MenuPtr,Menu; FROM CED IMPORT PutMsg2CED,Ergeb,TalkCED; FROM Str IMPORT Compare; IMPORT Intuition; VAR TR:TRStructure; (* req will es global *) PROCEDURE SearchCEDWindow():WindowPtr; (* Suche CED Window in Systemliste *) CONST First='Project'; Second=' Environment'; TYPE StringPtr=POINTER TO ARRAY[0..63] OF CHAR; VAR CEDWidth,CEDHeight:INTEGER; Flag:BOOLEAN; IBasePtr:IntuitionBasePtr; Scr:ScreenPtr; Win:WindowPtr; menu:MenuPtr; a,b:StringPtr; BEGIN Flag:=TalkCED('Status 53'); IF NOT(Flag) THEN RETURN NIL END; CEDWidth:=Ergeb; Flag:=TalkCED('Status 54'); IF NOT(Flag) THEN RETURN NIL END; CEDHeight:=Ergeb; IBasePtr:=ADR(Intuition); Scr:=IBasePtr^.firstScreen; REPEAT Win:=Scr^.firstWindow; REPEAT IF (Win^.width=CEDWidth) AND (Win^.height=CEDHeight) THEN menu:=Win^.menuStrip; a:=menu^.menuName; menu:=menu^.nextMenu; b:=menu^.menuName; IF (Compare(a^,First)=0) AND (Compare(b^,Second)=0) THEN RETURN Win END END; Win:=Win^.nextWindow UNTIL Win=NIL; Scr:=Scr^.nextScreen UNTIL Scr=NIL; RETURN NIL END SearchCEDWindow; PROCEDURE Request(Text:ARRAY OF CHAR); VAR GadNo:INTEGER; Flag:BOOLEAN; BEGIN WITH TR DO text:=ADR(Text); controls:=NIL; middleText:=NIL; positivText:=NIL; negativText:=ADR('Weiter'); title:=ADR('FATAL'); window:=NIL END; Flag:=WBenchToFront(); GadNo:=TextRequest(TR); Flag:=PutMsg2CED('CEDToFront'); END Request; PROCEDURE EndRequest(Text:ARRAY OF CHAR); BEGIN Request(Text); DisplayBeep(NIL); Terminate(0) END EndRequest; PROCEDURE TitleMsg(Text:ARRAY OF CHAR); VAR Flag:BOOLEAN; Win:WindowPtr; OldWinTitle,OldScrTitle:ADDRESS; BEGIN Win:=SearchCEDWindow(); IF Win#NIL THEN OldWinTitle:=Win^.title; OldScrTitle:=Win^.wScreen^.title; Flag:=TalkCED('Status 3'); (* Window oder Screen ?? *) IF Ergeb=1 THEN SetWindowTitles(Win,ADDRESS(-1),ADR(Text)) (* Screen *) ELSE SetWindowTitles(Win,ADR(Text),ADDRESS(-1)) (* Window *) END; Win^.wScreen^.title:=OldScrTitle; Win^.title:=OldWinTitle; ELSE Request(Text) (* Kein CED Window da *) END END TitleMsg; BEGIN END Msg.