trestle_by_example/src/script/Script1.m3


MODULE Script EXPORTS Main;
IMPORT Trestle, VBT, ButtonVBT, TextVBT, HVSplit, TypescriptVBT;
IMPORT Axis;
IMPORT Wr;

PROCEDURE QuitAction (self: ButtonVBT.T; READONLY cd: VBT.MouseRec) =
  BEGIN
    Trestle.Delete(main);
  END QuitAction;

PROCEDURE DoAction (self: ButtonVBT.T; READONLY cd: VBT.MouseRec) =
  BEGIN
    Wr.PutText(wr, "More lines.\n");
    Wr.PutText(wr, "Some more lines.\n");
  END DoAction;

VAR
  port := NEW(TypescriptVBT.Port).init(readOnly := TRUE);
  scr  := NEW(TypescriptVBT.T);
  wr: TypescriptVBT.Writer;
  do                       := ButtonVBT.New(TextVBT.New("do"), DoAction);
  quit := ButtonVBT.New(TextVBT.New("quit"), QuitAction);
  bs   := HVSplit.Cons(Axis.T.Hor, do, quit);
  main := HVSplit.Cons(Axis.T.Ver, scr, bs);

BEGIN
  scr.port := port;
  EVAL scr.init();
  wr := TypescriptVBT.GetWr(scr);
  Wr.PutText(wr, "Line one\n");
  Wr.PutText(wr, "Line two\n");
  Wr.PutText(wr, "Line one\n");
  Wr.PutText(wr, "Line two\n");
  Wr.PutText(wr, "Line one\n");
  Wr.PutText(wr, "Line two\n");
  Wr.PutText(wr, "Line one\n");
  Wr.PutText(wr, "Line two\n");
  Wr.Flush(wr);
  Trestle.Install(main);
  Trestle.AwaitDelete(main);
END Script.