r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[View] discuss view related issues

Henrik
24-Aug-2005
[2291]
I'm working on a different implementation with a more advanced list 
system instead
Henrik
25-Aug-2005
[2292x2]
pekr, have you any private solution to the face accessor problem 
you mention so often?
gabriele, thanks. it works now :-)
Pekr
25-Aug-2005
[2294x2]
Henrik - no, I don't have any ....
I am more busy implementing some solutions so I only think loud from 
time to time :-)
Henrik
25-Aug-2005
[2296x2]
ok, but I'm anxious for a patch solution right here, mostly so that 
I can access numerous face/text's through a single object
it would be nice to find a working equivalent to:
>>a: make object! [b: 1]
>>c: a/b
>>c: 2
>>a/b
== 2 ; but actually returns 1...
Ladislav
25-Aug-2005
[2298]
c: in a 'b
set c 2
Henrik
25-Aug-2005
[2299x2]
ah, wonderful
not so wonderful:
>>layout [a: field "rebol" b: field "rules"]


>>fields: make object! [atext: in a 'text btext: in a 'text] ; how 
to bind a/text and b/text correctly?
>>fields/atext
== text ; word! incorrect

or:

>> fields: make object! compose [atext: (in a 'text)  btext: (in 
b 'text)]
>> fields/atext
== "rebol"

but then:
>>set in fields 'atext "test" ; incorrect way, apparently
>>fields/atext
== "test" ; good

>>a/text
=="rebol" ; but it didn't propagate back to the face....
Ladislav
25-Aug-2005
[2301]
layout [a: field "rebol" b: field "rules"]

fields: make object! [atext: in a 'text btext: in a 'text]

get fields/atext
Henrik
25-Aug-2005
[2302]
ok, that works, and if I would want to traverse all textfields in 
one go I started with:

>> set fields/atext "test" ; which works for one field

for multiple fields, I want to set each fields from an object:

>> inserts: make object! [atext: "rebol" btext: "rocks!"]

>> foreach i next first fields [attempt [set get in fields i get 
in inserts i]]
>> show [a b]


Fields are now changed properly in one go. Now I need to show the 
values in the foreach loop. I also need to allow the elements in 
the inserts object to be of arbitrary order.
Gabriele
25-Aug-2005
[2303]
>> view/new layout [a: text "Hello" b: text "World"]
>> fields: reduce [in a 'text in b 'text]
== [text text]
>> set fields "New" show [a b]
Henrik
25-Aug-2005
[2304x4]
Gabriele, interesting, but if I run
set fields "New" show [a b]
and do it multiple times with different strings, only the last one 
is set
hm... something with string lengths and the size of the textfield. 
:-) forget it.
Anton
25-Aug-2005
[2308x2]
set [a b c d] 1  ; this sets all of A B C and D to the same value, 
1.
set [a b c d] [1 2 3]   ; this sets A == 1, B == 2, C == 3, D == 
none.
Henrik
25-Aug-2005
[2310]
ok, not thoroghly tested but:

set-faces: func [faces data] [
  set

    reduce foreach var faces [insert tail [] compose [in (var) 'text]]
    get data
  show faces
]

view layout [a: field b: field c: field d: field]
faces: copy [a b c d] ; generate this from the layout?

data: make object! [a: "Eeny" b: "Meeny" c: "Miney" d: "Mo"]

set-faces data faces ; whammo!
Gabriele
25-Aug-2005
[2311x3]
hmm, i think what your are trying to do is what the panel accessors 
do by default (warning: a bit bugged, but easily fixable)
>> layout [pan: panel [a: field "something" b: field "else"]]
>> print mold get-face pan
[a: "something" b: "else"]
>> set-face pan ["Hello" "World"]
>> print mold get-face pan
[a: "Hello" b: "World"]
set-face does not allow [a: ...] while it should. I have a fix for 
it if you are interested.
Henrik
25-Aug-2005
[2314x2]
ok, I have to read up on 'panel first :-)
if it's documented...
Gabriele
25-Aug-2005
[2316x2]
you could set the window accessor object to the default panel accessor 
objects, so that you can do the above with the window directly too.
using panel is useful if you have more than one panel in the window.
Henrik
25-Aug-2005
[2318x2]
hmm... it actually does exactly what I need
basically I'm interested in taking the contents of an object and 
put it in various faces in a layout in one go
Gabriele
25-Aug-2005
[2320x2]
what i do exactly.
my-access: make ctx-access/panel [
    set-face*: func [face value /local val][
        if all [block? face/pane block? value][
            either set-word? value/1 [
                foreach [word val] value [
                    set-find-var face/pane to word! word val
                ]
            ] [
                foreach f face/pane [

                    if any [find f/flags 'input find f/flags 'panel] [
                        if not empty? value [
                            set-face f value/1
                            value: next value
                        ]
                    ]
                ]
            ]
        ]
    ]
]
JaimeVargas
25-Aug-2005
[2322]
Gabriele should your fix make it to the default distribution ?
Gabriele
25-Aug-2005
[2323x5]
then use Panel with [access: my-access]
Jaime: it should. as soon as I get the chance to work on mezz code 
again.
with that you can do:   set-face panel third object
context get-face panel    gives you back the  object.
(or better make template-obj get-face panel)
Chris
25-Aug-2005
[2328]
; Here's a quickie:
ctx-busy: context load http://www.ross-gill.com/r/busy-style.r

view center-face layout [backcolor snow origin 200x150 busy true 
coal]
JaimeVargas
25-Aug-2005
[2329]
Hey that came form OSX! Nice.
Henrik
25-Aug-2005
[2330]
nice :-)
Graham
25-Aug-2005
[2331]
Why not use the firefox busy style ... open source.
Geomol
25-Aug-2005
[2332]
That's really cute, Chris! :-)
BrianW
26-Aug-2005
[2333]
hrm. Having issues getting "show" to work right for me. Time to dig 
a little and see what I can find out...
james_nak
26-Aug-2005
[2334]
Ok, I've tried... I have a list of toggles with a scroller attached. 
For the life of me I can't get the "dragger" to size properly. The 
slider button is not proportional to the what is being shown in the 
list. In my case, I'm seeing about 20 of the 24 rows so the dragger 
should be about 80% the size of the panel, no? Thanks in advance 
to anyone who knows.
MikeL
27-Aug-2005
[2335]
James,  The code?
james_nak
27-Aug-2005
[2336x2]
Rebol Lesson #3:  "An object can contain variables that refer to 
functions that are defined within the context of the object." Therefore, 
don't assume an object's path leads one to having a value '"shoved 
into" it replacing the current value. In other words, sometimes all 
it takes is noticing that there isn't a ":" (colon) following the 
path. In Judeo-Christian lingo: "Thou shall not murder a function 
held in an object."  Man, I didn't notice that scroller_object/redrag 
holds a function and just requires a value to be passed to it!  When 
will I ever learn? Thanks MikeL. The phrase, "The code?" caused me 
to notice that.
Almost there. What controls the amount of scroll when the user drags 
the bar up or down. I want my bar to move in increments of one row 
at a time but it seems like I have way too fine of a value in there 
to the point where the program has to catch up to the user's movements 
after a while. I would think it would be obj/step.
Anton
28-Aug-2005
[2338x3]
The code ? :)
I'm expecting you're doing a show every time there is a scroller 
movement. What you want to do is check if the current row (ie. the 
one at the top of your list) has changed If so, show the list. If 
not, ignore. Not all the shows are necessary.
James, this example might help:

do http://www.lexicon.net/antonr/rebol/gui/iterated/demo-vid-list-scroller.r