AltME: R3-GUI

Messages

DocKimbel
Actually, I just wanted to have a look at how R3 implements a style, especially how actors are stored. In Carl's docs, they seemed to be stored in a block, I just wanted to check in the code if that was the case for real or not.
Pekr
>> source load-gui
load-gui: make function! [[
    "Download current GUI module from web. (Temporary)"
    /local data
][
    print "Fetching GUI..."
    either error? data: try [load http://www.rebol.com/r3/gui.r] [
        either data/id = 'protocol [print "Cannot load GUI from web."] [do err]
    ] [
        do data
    ]
    exit
]]
>>
ok, can feed you some docs ....
There are Carl's GUI docs, which implement actors, reactors, and then public Github repo of Saphir docs, which cancelled reactors ...
DocKimbel
I want to check the source code, not the docs.
Pekr
ah ...
DocKimbel
I decompressed the GUI sources from the rebol.com link, so at least I can have a look now. :-)
Pekr
I have somewhere even Gabriele's GUI :-)
What I like about the R3-GUI is on-* actions ...
You can look into Saphir's docs here .... (even that I know you prefer sources :-) http://development.saphirion.com/rebol/r3gui/
I like how facets, options are separated, as well as actors, and whole style is drawn using a draw dialect ...
Pekr
So, I hope we get nice code patterns like follows:
stylize [
    my-progress: [
        about: "Progress bar."
        facets: [
            size: 200x22
            max-size: 1000x22
            edge-color: 96.96.96
            area-color: 80.80.80.128
            area-fill: span-colors area-color [.3 .5 1]
        ]
        options: [
            bar-color: [tuple!]
            size: [pair!]
        ]
        faced: [
            bar-color: teal
            bar-size: 1x1 ; modified by the progress % value
            bar-fill: ; generated from bar-color option
        ]
        draw: [
            pen edge-color
            line-width 1.5
            grad-pen 1x1 0 20 90 area-fill
            box 1x1 area-size 3
            grad-pen 1x1 0 20 90 bar-fill
            box 1x1 bar-size 3
        ]
        actors: [
            on-make: [
                face/facets/bar-fill: span-colors
                get-facet face 'bar-color [1.0 1.5 .6]
            ]
            on-set: [ ; arg: event
                ; Update the bar size from the face value.
                face/state/value: arg/2
                v: clip-face-val face
                size: get-facet face 'area-size
                face/facets/bar-size: as-pair v * size/x size/y
            ]
        ]
    ]
]
view [
    prog: my-progress
    button "Set 50%" set 'prog 50%
]
Notice that facets are shared, whereas faced are private. Also notice the SET VID level reactor ...
Remember - Carl spent 3 months designing it and writing a prototype. That was time spent for good ... and Red gui should aim no less ...
Reichart
:)
DocKimbel
My method is iterative, I don't do tunnel-development. ;-)
Where is that code example coming from?
Henrik
"My method is iterative, I don't do tunnel-development." - which is how VID Junior is meant to be done. :-)
DocKimbel
Ok, found the source of the example:
http://www.rebol.com/r3/docs/gui/styles.html
Pekr
Well, not sure about the styles, if you want to map to native widgets ...

Last message posted 262 weeks ago.