Copyright (C) 1994, Digital Equipment Corporation.       
 All rights reserved.                                     
 See the file COPYRIGHT for a full description.           
                                                          
 Last modified on Tue Nov  1 09:40:54 PST 1994 by kalsow  
      modified on Fri Jul 22 11:03:28 PDT 1994 by bharat  
MODULE  Main;
IMPORT FormsVBT, Rd, Stdio, Thread, Trestle, TrestleComm,  VBT,  Wr;
<* FATAL FormsVBT.Error, FormsVBT.Unimplemented *>
<* FATAL Rd.EndOfFile, Rd.Failure,  Thread.Alerted,  TrestleComm.Failure *>
CONST
  popup = "(Rim (Pen 10)" &
  "(LabelFont \"-*-helvetica-medium-r-*-*-*-240-*-*-*-*-*-*\")" &
  "(VBox " &
   " (Text %msg \"No Message Yet\")" &
   " (Glue 50) " &
   " (HBox Fill (Button %y \"Yes\") (Glue 100) " &
   "     (Button %n \"No\") Fill ) " &
   " ))";
VAR
  fv := NEW(FormsVBT.T).init(popup);
  z := NEW(MUTEX);
  c := NEW(Thread.Condition);
PROCEDURE AnswerProc (    fv  : FormsVBT.T;
                                                 name: TEXT;
                       <* UNUSED *> data: REFANY;
                       <* UNUSED *> time: VBT.TimeStamp) =
  BEGIN
    TRY
      Wr.PutText(Stdio.stdout, name);
      Wr.Flush(Stdio.stdout);
    EXCEPT ELSE
    END;
    Trestle.Delete(fv);
    Thread.Signal(c);
  END AnswerProc;
BEGIN
  FormsVBT.AttachProc (fv, "y", AnswerProc);
  FormsVBT.AttachProc (fv, "n", AnswerProc);
  LOOP
    WITH message =Rd.GetLine(Stdio.stdin) DO
      FormsVBT.PutText(fv, "msg", message);
      Trestle.Install(fv);
      LOCK  z DO
        Thread.Wait(z, c);
      END
    END
  END;
END Main.