AltME: R3-GUI

Messages

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 ...
I still remember Cyphre's remark in Brno - how many usefull widgets are there in the OS anyway? How cross platform are they? So we have fields, areas, buttons, images, radio buttons, check boxes. What about more complex ones, as grids? Win32 API apps look uglier, than old 70ish unix clone. And - design sells. Let's hope, that this time, we are going to dress that :-)

Last message posted 30 weeks ago.