menus.mod 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. MODULE menus;
  2. (* Menu bar demo: File / Edit / Help with a status line. *)
  3. FROM InOut IMPORT WriteString, WriteLn;
  4. IMPORT tv;
  5. CONST mNew = 100; mQuit = 101; mCut = 102; mCopy = 103; mAbout = 104;
  6. VAR e : tv.Event; quit : BOOLEAN; st : tv.ViewPtr; cmd : INTEGER;
  7. msg, tmp : ARRAY [0..95] OF CHAR;
  8. PROCEDURE Show(s : ARRAY OF CHAR);
  9. BEGIN tv.SetText(st, s); tv.Finish END Show;
  10. BEGIN
  11. IF NOT tv.Init() THEN WriteString("not a tty"); WriteLn; HALT END;
  12. st := tv.NewView(tv.VText, 0, tv.Rows() - 1, tv.Cols(), 1);
  13. tv.AddView(tv.Desk(), st);
  14. tv.MenuBarInit;
  15. tv.MenuAdd("File"); tv.MenuItemAdd("New", mNew);
  16. tv.MenuSep; tv.MenuItemAdd("Quit", mQuit);
  17. tv.MenuAdd("Edit"); tv.MenuItemAdd("Cut", mCut); tv.MenuItemAdd("Copy", mCopy);
  18. tv.MenuAdd("Help"); tv.MenuItemAdd("About", mAbout);
  19. Show(" Choose a menu with the mouse or F10");
  20. quit := FALSE;
  21. WHILE NOT quit DO
  22. IF tv.Resized() THEN tv.Finish END;
  23. IF tv.ReadEvent(e) THEN
  24. IF (e.kind = tv.evKey) AND (e.key = tv.kEsc) THEN quit := TRUE
  25. ELSE
  26. cmd := tv.HandleEvent(e);
  27. IF cmd = mQuit THEN quit := TRUE
  28. ELSIF cmd = mAbout THEN
  29. IF tv.MessageBox("About", "tvision-m2", tv.mbOK) = tv.cmOK THEN END;
  30. Show(" About closed")
  31. ELSIF cmd >= 100 THEN
  32. tv.CopyText(msg, " Command #");
  33. tv.IntToText(tmp, cmd, 0);
  34. tv.AppendText(msg, tmp);
  35. Show(msg)
  36. END
  37. END;
  38. IF NOT quit THEN tv.Finish END
  39. END
  40. END;
  41. tv.Done
  42. END menus.