below is a template for gtk3's signal connect
template connect(w: Widget, cmd: expr, p: stmt) =
discard w.gSignalConnect(cmd, cast[Gcallback](proc() = p), nil)
a problem here: the variable val is not local
button.connect "clicked":
let val = 10
echo "hello", val
echo "b2 clicked"
echo "val = ", val
# if button clicked => output val = 10
# else => output val = 0
add a block here, but ugly:
b2.connect "clicked":
block:
let val = 10
echo "hello", val
echo "b2 clicked"
How to add a block to that template?
Does this help?
template connect(obj: RootObj, cmd: expr, p: expr) =
block: p
let a = RootObj()
a.connect "clicked":
let val = 10
echo "hello", val
echo "b2 clicked"
#echo "val = ", val # undefined