cmvbt/src/ClockVBT.m3


 Copyright 1996-2000 Critical Mass, Inc. All Rights Reserved. 
 See file COPYRIGHT-CMASS for details. 

MODULE ClockVBT;
IMPORT Time, FmtTime, IntervalTimer, Font, TextVBT, PaintOp;

REVEAL
  Private = TextVBT.T BRANDED OBJECT END;
  T = Public BRANDED OBJECT
    timer: Timer;
    proc: FmtProc;
  OVERRIDES
    init := Init;
  END;

TYPE
  Timer = IntervalTimer.T OBJECT vbt: T; OVERRIDES wakeup := Wakeup END;

PROCEDURE Wakeup(self: Timer) =
  BEGIN
    TextVBT.Put (self.vbt, FmtTime.Long (Time.Now()));
  END Wakeup;

PROCEDURE Init(v: T; fnt: Font.T; halign: REAL; bgFg: PaintOp.ColorQuad;
               proc: FmtProc): T =
  BEGIN
    EVAL TextVBT.T.init(v, "",
                   fnt := fnt,
                   halign := halign, valign := 0.5,
                   bgFg := bgFg);
    v.timer := NEW(Timer, vbt := v).init(1.0D0);
    v.proc := proc;
    RETURN v;
  END Init;

BEGIN
END ClockVBT.