AltME: R3-GUI

Messages

yoffset
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 ]
]
GrahamC
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
yoffset
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.
yoffset
Well, that's interesting.
enter   ? system/contexts/user     and it looks like a handle on most everything.

GrahamC
Carl had a habit of writing blogs instead of formal docs
GrahamC
@Cyphre, I have a suggestion on implementing externs in action blocks
https://github.com/saphirion/r3-gui/blob/master/source/layout-dialect.r3#L80
change to:
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?

Cyphre
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?
Cyphre
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.

Bo
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
Is there a different way of doing this?
Cyphre
yes, you can do it like:
lay: layout [text "Test"]
write %layout.png encode 'png to-image lay/gob
Andreas
And instead of the `write %layout.png encode 'png ...` you should also be able to use just `save %layout.png ...`.
Cyphre
yes, using SAVE is shorter :)

Bo
Great!  This is going to help with the ability to display GUI elements and graphics on the ODROID-Show module (320x240x16 screen controlled through USB - retail price $25).  I've written a dialect to make using the screen easier via the text-based commands, and wanted to add a component to get the graphics to work as well.
amacleod
Bo, Thats a cool (and affordable) screen. Is there a touch solution that works with it that you know of?
Bo
No, I don't know of any touch ability.  However, there are companies that make overlays that use USB, although I don't know if you could find one that is 2.2 inches in size.

GrahamC
@cyphre, I was suggesting that we could look at different syntaxes eg.
on-action/extern [ action-block-here ] [ extern words here ]
on-action /extern [ action-block-here ] [ extern words here ]
on-actioin [ [ extern words here ] and rest of action block here ] <= this is the implementation I provided
on-action [ extern: [ extern words here ] rest of action block here ]
and was wondering what is most consistent with the r3-gui dialect as well as funct/extern

Cyphre
Graham, the implementation you provided looks like most convenient from the user's pov

GrahamC
I'm okay with that though it looks a little opaque

Last message posted 31 weeks ago.