MODULE window; (* One window with text and a Close button. *) FROM InOut IMPORT WriteString, WriteLn; IMPORT tv; VAR e : tv.Event; quit : BOOLEAN; w, t, b, st : tv.ViewPtr; cmd : INTEGER; BEGIN IF NOT tv.Init() THEN WriteString("not a tty"); WriteLn; HALT END; st := tv.NewView(tv.VText, 0, tv.Rows() - 1, tv.Cols(), 1); tv.SetText(st, " Drag the title bar, click Close or press Esc"); tv.AddView(tv.Desk(), st); w := tv.NewView(tv.VWindow, 6, 3, 46, 10); tv.SetText(w, "Hello"); t := tv.NewView(tv.VText, 8, 5, 42, 1); tv.SetText(t, "This is a TVision-style window."); tv.AddView(w, t); t := tv.NewView(tv.VText, 8, 6, 42, 1); tv.SetText(t, "Move it with the mouse."); tv.AddView(w, t); b := tv.NewView(tv.VButton, 8, 9, 10, 1); tv.SetText(b, "Close"); tv.SetTag(b, tv.cmClose); tv.AddView(w, b); tv.AddView(tv.Desk(), w); tv.FocusView(b); tv.Finish; quit := FALSE; WHILE NOT quit DO IF tv.Resized() THEN tv.Finish END; IF tv.ReadEvent(e) THEN IF (e.kind = tv.evKey) AND (e.key = tv.kEsc) THEN quit := TRUE ELSE cmd := tv.HandleEvent(e); IF (cmd = tv.cmClose) OR (cmd = tv.cmOK) THEN quit := TRUE END END; IF NOT quit THEN tv.Finish END END END; tv.Done END window.