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

World: r3wp

[View] discuss view related issues

Henrik
17-Sep-2006
[5516]
I'm not wondering about it. I used Cyphre's video to kickstart LIST-VIEW 
development. :-) But I think this is an area of VID that remains 
a mystery to most users, as there is very little documentation around 
to explain how it works. Maybe that's why there isn't that many custom 
VID faces around. I seem to remember a ton of custom classes for 
MUI on the Amiga.
Janeks
18-Sep-2006
[5517]
If I am calling (loading) a layout  from web server script  with 
http://someurl?some=cgivarsand then displaying, than I cannot it 
unview:

								info-resp: read browseUrl
								reduce load info-resp

								either viewed? infowin [
									unview infowin ;Does not work!?
									view/options/title/new infowin [all-over] "Info:"
								][
									view/options/title/new infowin [all-over] "Info:"
								]

F.ex. I want that there does not appear  new windows. But I need 
to use /new refinement, because I need possibility for user to go 
back (activate) on another window.
Is it connected with Rebol scopes?
And how to avoid new window?
Graham
18-Sep-2006
[5518]
unview/only infowin .. is the syntax for closing a single named window
Janeks
18-Sep-2006
[5519x2]
I alredy tried it but - no success!
I solved it so that loaded just info win definition block:
								either value? 'infowin [
									unview/only infowin ;Šitais nestrādā nezkāpēc
									infowin: layout info-layout
									view/options/title/new infowin [all-over] "Info:"
								][
									infowin: layout info-layout
									view/options/title/new infowin [all-over] "Info:"
								]
Than it works.
But why it is so?
Anton
18-Sep-2006
[5521]
You must tell us what the value of INFOWIN is.
Janeks
18-Sep-2006
[5522x2]
Info-win is block  for layout definition.
But in first case it was layout
Anton
18-Sep-2006
[5524x2]
Ok, there is confusion between the layout spec block and the resulting 
window face.
A pattern I use very often:

infospec: [ area button ... ] 
infowin: layout infospec

either viewed? infowin [
	; bring the window to the front (or do the taskbar flash thing)
	infowin/changes: [restore activate]
	show infowin
][
	view/new infowin
]
In your first code, UNVIEW does not work because it does not take 
any arguments.
As Graham said, to name the window to close, you must write:

	unview/ONLY your-window
Maxim
18-Sep-2006
[5526x3]
or even better
unview/ONLY find-window face
which closes the window relative to an actual button...
Janeks
19-Sep-2006
[5529x2]
Anton, my first code unview does not wor also with /only. I tried 
it!
The problem was that I could not unview (also with only) if I loded 
layout from remote script formed on web server.
I can unview when I formed layout locally.
Anton
19-Sep-2006
[5531]
How does the remote script look ?
How do you load the layout spec from the remote script ?
Janeks
19-Sep-2006
[5532]
Remote script is mapserver template that returns map layer feature 
data based on coordinates:
Something like:
info-win: layout [
	text "Fld:"

 text "[fldName]" ;this finaly looks just - text "value from table"
	etc
]
Anton
19-Sep-2006
[5533]
Ok, so remote script looks like:
--------------------------
rebol []
info-win: layout [ ...]
--------------------------
Local script looks like:
--------------------------
rebol []
info-win: do remote-script-url
; Now info-win is a FACE object

; Only do the above line once, otherwise you will create a *new* 
face and set 'info-win to it, forgetting the old one !!

; The following code is done more than once:

either viewed? info-win [
	info-win/changes: [restore activate]
	show info-win
][
	view/new info-win
]
Janeks
20-Sep-2006
[5534]
So, did I got idea right:
The remote script is treated as new scope.

Note: In may cases there are some differences remote script is without 
rebol header and is loaded with "reduce load"
Anton
20-Sep-2006
[5535x2]
So remote file looks like this:
-------------------------------
[
	text "Fld:"
	text "[fldName]"
	etc.
]
---------------------------
Local script should maybe look like this:
---------------------------
rebol []
if all [ value? 'info-win   viewed? info-win ][
	unview/only info-win
]
info-resp: read remote-script.r
replace info-resp "[fldName]" "value from table"  ; etc....
spec: load info-resp
info-win: layout spec
view/new info-win 
do-events
There is no "scope" in rebol. When you read from a url, you create 
a new string. That is, READ returns a new string.

When you set a word to that new string, you "switch" the word away 
from its old value (if it had one.) Eg:


 At the beginning of this example, the word  'info-resp  has no value 
 (It is unset!).
	Now, we set its value to the string returned by READ:

		info-resp: read url

	Now,  'info-resp  points to a string  "[ text ... ]"
	Let's do it again:

		info-resp: read url


 We have re-set  'info-resp  to a new string!  (even though old string 
 and new string look exactly same.)

 The old string may still exist as a value somewhere, but  'info-resp 
  does not know about it anymore.
	Normally this is not a problem.
--
	However, look at this example:
	
	1)	window: layout [box red]
	2)	view/new window
	3)	window: layout [box red]
	4)	unview/only window


 On line 1, LAYOUT creates a face object which we assign to the word 
  'window . (So  'window  points to a face.)
	On line 2, VIEW opens the value of  'window  as a window.

 On line 3, LAYOUT creates a *new* face object which we assign to 
 the word  'window.

  So  'window  points to a *new* face, and it has forgotten about the 
  old face.
		However, the old face is **still open as a window**.

  So we have lost our reference to the old window face, and it is now 
  more difficult for us to close it.
		So line 3 has created a problem.

 On line 4, we try to close the new window face, but we are unsuccessful 
 because the new window face is not open.
Janeks
20-Sep-2006
[5537]
Now I believe, that I understood.

If it is just a variable with a value, than there is not problem, 
but layout are not doing just a face value assignment to a variable, 
but <b>creates new</b> one face and add reference to that face to 
variable.
Anton
20-Sep-2006
[5538x3]
No, LAYOUT only creates a face. It does not add a reference to a 
variable. The set-word (eg.  info-win: )  takes the value that LAYOUT 
returns, and associates it with the word (eg.  'info-win ).
Actually, I think you understand ok. Yes, LAYOUT creates a *new* 
face every time.
For those creating documentation involving a face hierarchy, here's 
a function which may help to visualise it:
do http://anton.wildit.net.au/rebol/doc/demo-to-3d-layout-image.r
Graham
21-Sep-2006
[5541]
Anyone any ideas of how to take a plain paper form and turn it into 
an electronic form that can have text entered into it and then print 
it ?
Henrik
21-Sep-2006
[5542x2]
as in X-forms?
in open office you can create X-forms that can be converted to PDF, 
opened in adobe reader as a form which then can be printed
Graham
21-Sep-2006
[5544x3]
Looking for a Rebol solution :)
But interesting ..
So, open office can create a pdf form ?
Henrik
21-Sep-2006
[5547]
yes, straight out of the box
Graham
21-Sep-2006
[5548]
So, how then to prepopulate the form ?
Henrik
21-Sep-2006
[5549]
I haven't played too much with that, but I think it's possible.
Graham
21-Sep-2006
[5550]
So, you create an xml form which acrobat can read??
Henrik
21-Sep-2006
[5551x3]
yes
if you export it as PDF
http://www.openoffice.org/dev_docs/features/2.0/images/xforms.jpg
Graham
21-Sep-2006
[5554x2]
Say you scan an existing paper form into jpg.
how to go from there ?
Henrik
21-Sep-2006
[5556]
you'd place it as a background image on the document page and then 
place the text fields where you want them.
Graham
21-Sep-2006
[5557x2]
How to print it though?
save as PNG and print?
Henrik
21-Sep-2006
[5559x2]
no, you'd export it as PDF, open it in adobe reader and print it 
there
you can fill the form inside adobe reader
Graham
21-Sep-2006
[5561]
So, if you export as pdf... you can then do a search and replace 
for the prepopulated text and then present this to acrobat?
Henrik
21-Sep-2006
[5562x2]
I'm not sure I follow you there...
is the form not meant to be populated manually by a user?
Graham
21-Sep-2006
[5564]
I want to take an existing paper form .. prefill it with some default 
values that vary for each user... get the user to fill in the rest 
and then print.
Henrik
21-Sep-2006
[5565]
those default values will vary with the user?