Copyright (C) 1994, Digital Equipment Corp.
by Steve Glassman, Mark Manasse and Greg Nelson
<*PRAGMA LL*>
MODULE MenuBtnVBT;
IMPORT VBT, Filter, ButtonVBT, BtnVBTClass, TextVBT;
FROM VBT IMPORT ClickType;
REVEAL
T = ButtonVBT.T BRANDED OBJECT
OVERRIDES
mouse := Mouse;
init := Be
END;
PROCEDURE Be(v: T; ch: VBT.T; p: ButtonVBT.Proc;
ref: REFANY := NIL): ButtonVBT.T =
BEGIN
EVAL ButtonVBT.T.init(v, ch, p, ref);
v.armed := TRUE;
RETURN v
END Be;
PROCEDURE New(
ch: VBT.T;
action: ButtonVBT.Proc;
ref: REFANY := NIL): T RAISES {} =
BEGIN
RETURN Be(NEW(T), ch, action, ref)
END New;
PROCEDURE Mouse(v: T; READONLY cd: VBT.MouseRec) RAISES {} =
BEGIN
Filter.T.mouse(v, cd);
IF cd.clickType # ClickType.FirstDown THEN
IF (cd.clickType = ClickType.LastUp) AND NOT cd.cp.gone
THEN
IF NOT v.ready THEN v.pre() END;
v.action(v, cd);
v.post()
ELSIF v.ready THEN
v.cancel()
END;
v.ready := FALSE
END
END Mouse;
PROCEDURE TextItem(name: TEXT;
action: ButtonVBT.Proc;
ref: REFANY := NIL): T RAISES {} =
BEGIN
RETURN
New(TextVBT.New(name, 0.0, 0.5, 3.0, 0.5),
action := action,
ref := ref)
END TextItem;
BEGIN
END MenuBtnVBT.