The toggle suggests another approach I hadn't thought about. Thanks. However, it doesn't solve my original problem. Here is some obvious pseudo-code that doesn't work. Any ideas/
num: 3 view [ when [enter] on-action [ while [num = 3] [ print num wait 1 ] ] button on-action [ num: 2 ] ]
All action blocks in r3-gui are closures. Set-words will access the local context only. But when searching for a the value of a word, the system/contexts/user is searched after a word is not found in the local context.. So, the enter action block accesses num from system/contexts/user but the button action block is setting a new local of num to 2.
To fix the issue, change num: 2 to set 'num 2, or system/contexts/user/num: 2
Ie. when the closure is created, the action block searches for set-words and creates locals. This is the same as what we used to call 'funct, and now 'function
system/contexts/user/num: 2 works. I knew it was a closure problem, but I don't recall seeing this path in any docs. Thanks.
Well, that's interesting. enter ? system/contexts/user and it looks like a handle on most everything.
extend-face last-face 'actors reduce either block? body/1 [ extern: take body [act funct/extern/closure [face arg] body extern] ][ [act funct/closure [face arg] body] ]
If one wanted it more literate, you could make it
on-action [ extern: [ list of external words ] rest of action block ]
What do you think?
Graham, you mean more like:
on-action [[ list of external words ] rest of action block ]
at least that's what the change does.
I'm ok with that change as it shouldn't break older actors code. It should be very rare to start actor with a block definiton.
Anyone else here who is against that change?
yoffset: regarding "his code does call the draw dialect, and doesn't work, for some unknown reason." - yes, that's a bug. The SKEW command arg syntax changed (form decimal! to pair!) in the late aplhas but the parser definition remained old in one place. I uploaded the fix to github and also made new build so LOAD-GUI should give you correct behaviour as well.
Back in the old days on Rebol2/View, it was possible to do something like this:
save/png %myimage.png to-image layout [box 100x100 green text "Hello World!" image %flower.jpg]
I just tried something like that on Rebol3/View, and I get:
>> to-image layout [text "Test"] ** Script error: object! type is not allowed here ** Where: to to-image ** Near: to image! :value