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

World: r3wp

[Rebol School] Rebol School

PatrickP61
25-Feb-2009
[2454x4]
Try this:
REBOL []
; Assignments ------------------------------------
k-prefix:	[http://www.]
k-suffix:	[.com]
txt-site:	[hulu]
url-site:	to-url ajoin [k-prefix txt-site k-suffix]

; Main-procedure ---------------------------------
load-gui
view [
    title "WebSite Selector" 
    text "Please choose a website you would like to open" 
    panel 2 [
        label "URL:" 
        txt-site: field "Hulu"
        label "WebSites:" 
        area 
    ] 
    group [
        button "Open"	browse url-site 
        button "Reset" 	reset 
        button "Cancel"	close 
]	]
When you press Open, it will open the browser to Hulu.com
But I need to modify the code so that I can change the HULU to another 
site like GOOGLE
So, I need to replace button "Open" browse url-site with something 
that will evaluate the url-site AT THAT TIME, rather than what I 
have it defaulted to
Henrik
25-Feb-2009
[2458]
As I said, you need a DO block (I think you missed that). Then you 
create a function to create the URL-SITE url. Then you use that as 
input with BROWSE and that will work.
PatrickP61
25-Feb-2009
[2459]
Thanks Henrik, I'll give it a try
Henrik
25-Feb-2009
[2460]
inspiration:

view [group [f: field] group [button do [probe get-face f]]]
PatrickP61
25-Feb-2009
[2461x2]
Henrik,  I added the following code:

    eval-url-site:	does [to-url ajoin [k-prefix txt-site k-suffix]]
and then after the button "open" i have:
    button "Open"	browse eval-url-site
I get a ***GUI Error: Cannot parse the GUI dialect

But if I type browse eval-url-site at the console, it works -- What 
am I missing?
Henrik
25-Feb-2009
[2463x2]
Patrick, it is still incorrect WRT to the DO block. Try reading my 
inspiration line.
you must DO right at the button.
PatrickP61
25-Feb-2009
[2465]
Ohhhh, I missed that
kib2
26-Feb-2009
[2466]
How to solve such problem ?
It seems like input-file is evaluated with none as infile value.

REBOL []

container: make object! [
    infile: none
    input-file: read join infile ".txt"
]

c: make container [infile: %rme/test]
PeterWood
26-Feb-2009
[2467x2]
When you are making the container Rebol evaluates the code in the 
argument block. So in this case, it first  sets infile to none and 
then tries to set input-file to the result of evaluting read join 
infile ".txt".
To achieve what I think you want you need to make input-file a function!:

container: make object! [
	infile: none
	input-file: make function! [] [read join infile ".txt"]
]
Geomol
26-Feb-2009
[2469]
Or use DOES again:
input-file: does [read join infile ".txt"]


When stuff is evaluated can be a bit difficult to figure out. The 
more you use and learn about REBOL, the more clear it will become.
kib2
26-Feb-2009
[2470x2]
So "input-file: does [read join infile ".txt"]" is the same I suppose.
Geomol: sorry, too late :)
Pekr
26-Feb-2009
[2472]
what about 'construct? It does not evaluate anything :-)
kib2
26-Feb-2009
[2473]
I've just tried this :

REBOL []

container: make object! [
    infile: none
    content: none
    input-file: does [content: read join infile ".txt"]
]

c: make container [infile: %user]

But it fails.
Geomol
26-Feb-2009
[2474x2]
construct doesn't work in this case, because then input-file just 
become the word READ.
Kib, what fails? You have to call input-file, before you have the 
result in content.
kib2
26-Feb-2009
[2476x2]
I named my script "ooo.r" and I have a "user.r" file inside that 
directory too.
sorry : "user.txt"
Geomol
26-Feb-2009
[2478]
c: make container [infile: %user]
d/input-file

now c/content should hold your file content.
kib2
26-Feb-2009
[2479]
>> do %ooo1.r
Script: "Untitled" (none)
>> c/infile
== %user
>> c/content
== none
Geomol
26-Feb-2009
[2480]
You have to call input-file. :-)
kib2
26-Feb-2009
[2481x3]
Geomol: hoops!!! my fault, I was calling "infile" not "input-file" 
!
works fine now !
I'm mising something here :

#!/usr/bin/rebol -q

REBOL [
    Title: "Tests with oo programming"
    Date: 26-Feb-2009
    Author: "Kib"
    File: "ooo1.r"
    Purpose: "nothing interesting"
]

son: make object! [
    parent: none
    name: "object b"
    get-parent: does [print parent]
]

mother: make object! [
    name: "object a"
    son-instance: make son [parent: self]
]

pony-mum: make mother []
print ["object name: " pony-mum/name]
print ["instance name: " pony-mum/son-instance/name]

print ["instance name:(other method) " pony-mum/son-instance/get-parent]

What's wrong with the last call ?
Graham
26-Feb-2009
[2484]
son-instance: make son [parent: self] 

self refers to son-instance
kib2
26-Feb-2009
[2485]
Graham : as i'm inside mother, self refers to a mother no ?
Graham
26-Feb-2009
[2486x2]
It looks like you're inside son-instance
mother: make object! [ name: "object a" myparent: self son-instance: 
make son [ parent: myparent ]]
kib2
26-Feb-2009
[2488]
>>it looks like you're inside son-instance


I don't understand why, sorry. I'm inside mother (I mean, when I 
write it "son-instance", but maybe it's a bad Python habit). 
 
mother: make object! [
    name: "object a"
    son-instance: make son [parent: self]
]
Graham
26-Feb-2009
[2489x2]
http://rebol.com/r3/docs/concepts/objects-self.html
you're creating a new object son-instance so self now refers to son-instance
kib2
26-Feb-2009
[2491x2]
You mean when I write "make son ..." I'm already inside the son object 
?
that may explain my problem
Graham
26-Feb-2009
[2493]
I think so.
kib2
26-Feb-2009
[2494x2]
ok: thanks !
Is there any lib somewhere to encode or decode a file to utf-8 ?
Anton
27-Feb-2009
[2496x2]
Test it:
>> son: context [parent: self]
>> son/parent = son
== true
You could do:

	mother: context [
		son: context compose [parent: (self)]
	]

so now

	>> mother/son/parent = mother
	== true
Graham
27-Feb-2009
[2498]
better idea :)
Anton
27-Feb-2009
[2499]
Oldes did some work with unicode, if I remember correctly.
kib2
27-Feb-2009
[2500]
Anton: hi! thanks a lot: what's the meaning of the parenthesis here 
?
Anton
27-Feb-2009
[2501x3]
The COMPOSE rebuilds the block, with anything in parens evaluated 
first.
So SELF will be evaluated before the second CONTEXT has a chance 
to see it.
But, if you're curious, you can always have a look yourself, using 
PROBE, eg:

	mother: context [son: context compose probe [parent: (self)]]

	mother: context [son: context probe compose [parent: (self)]]