| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- MODULE menus;
- (* Menu bar demo: File / Edit / Help with a status line. *)
- FROM InOut IMPORT WriteString, WriteLn;
- IMPORT tv;
- CONST mNew = 100; mQuit = 101; mCut = 102; mCopy = 103; mAbout = 104;
- VAR e : tv.Event; quit : BOOLEAN; st : tv.ViewPtr; cmd : INTEGER;
- msg, tmp : ARRAY [0..95] OF CHAR;
- PROCEDURE Show(s : ARRAY OF CHAR);
- BEGIN tv.SetText(st, s); tv.Finish END Show;
- 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.AddView(tv.Desk(), st);
- tv.MenuBarInit;
- tv.MenuAdd("File"); tv.MenuItemAdd("New", mNew);
- tv.MenuSep; tv.MenuItemAdd("Quit", mQuit);
- tv.MenuAdd("Edit"); tv.MenuItemAdd("Cut", mCut); tv.MenuItemAdd("Copy", mCopy);
- tv.MenuAdd("Help"); tv.MenuItemAdd("About", mAbout);
- Show(" Choose a menu with the mouse or F10");
- 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 = mQuit THEN quit := TRUE
- ELSIF cmd = mAbout THEN
- IF tv.MessageBox("About", "tvision-m2", tv.mbOK) = tv.cmOK THEN END;
- Show(" About closed")
- ELSIF cmd >= 100 THEN
- tv.CopyText(msg, " Command #");
- tv.IntToText(tmp, cmd, 0);
- tv.AppendText(msg, tmp);
- Show(msg)
- END
- END;
- IF NOT quit THEN tv.Finish END
- END
- END;
- tv.Done
- END menus.
|