MODULE Main;
IMPORT Trestle, VBT, ShadowedVBT, ButtonVBT, TextVBT, RigidVBT;
IMPORT HVSplit, Axis, Shadow, PaintOp, Region;
FROM Colors IMPORT grey, dgrey, lgrey;
TYPE
TintVBT = VBT.Leaf OBJECT
tint: PaintOp.T := PaintOp.Bg;
OVERRIDES
repaint := Repaint;
END;
PROCEDURE Repaint (v: TintVBT; READONLY rgn: Region.T) RAISES {} =
BEGIN
VBT.PaintTint(v, rgn.r, v.tint);
END Repaint;
PROCEDURE NoAction (v: ButtonVBT.T; READONLY cd: VBT.MouseRec) =
BEGIN (* Do nothing *)
END NoAction;
PROCEDURE Button (text: TEXT): ButtonVBT.T =
BEGIN
RETURN (ButtonVBT.New(TextVBT.New(text), NoAction));
END Button;
CONST
flex = RigidVBT.SizeRange{lo := 0.0, pref := 8.0, hi := 9999.0};
shape = RigidVBT.Shape{flex, flex};
VAR
sh := Shadow.New(size := 7.0, bg := grey, light := lgrey, dark := dgrey);
flat := ShadowedVBT.New(Button("FlatStyle"), sh, Shadow.Style.Flat);
raise := ShadowedVBT.New(Button("RaisedStyle"), sh, Shadow.Style.Raised);
lower := ShadowedVBT.New(
Button("LoweredStyle"), sh, Shadow.Style.Lowered);
ridge := ShadowedVBT.New(Button("RidgedStyle"), sh, Shadow.Style.Ridged);
chisel := ShadowedVBT.New(
Button("ChiseledSTyle"), sh, Shadow.Style.Chiseled);
l := NEW(RigidVBT.T).init(NEW(TintVBT, tint := grey), shape);
m := NEW(RigidVBT.T).init(NEW(TintVBT, tint := grey), shape);
u := NEW(RigidVBT.T).init(NEW(TintVBT, tint := grey), shape);
v := NEW(RigidVBT.T).init(NEW(TintVBT, tint := grey), shape);
w := NEW(RigidVBT.T).init(NEW(TintVBT, tint := grey), shape);
x := NEW(RigidVBT.T).init(NEW(TintVBT, tint := grey), shape);
y := NEW(RigidVBT.T).init(NEW(TintVBT, tint := grey), shape);
z := NEW(RigidVBT.T).init(NEW(TintVBT, tint := grey), shape);
ch := ARRAY [1 .. 11] OF
VBT.T{u, flat, v, raise, w, lower, x, ridge, y, chisel, z};
main := HVSplit.Cons(Axis.T.Hor, l, HVSplit.ConsArray(Axis.T.Ver, ch), m);
BEGIN
Trestle.Install(main);
Trestle.AwaitDelete(main);
END Main.