[REBOL] Re: [view] Problems with /new and not /new
From: nitsch-lists:netcologne at: 14-Aug-2004 23:54
A few words about view/ view/new and event-loop:
On Samstag, 14. August 2004 01:05, Izkata wrote:
> Using view/new works just fine.. The script continues as it should..
> But for some reason, even if I hadn't used view/new in the script yet,
> using only view layout [blah blah] causes the script to continue on and not
> It usually happens when I click a button in a layout that calls a function
> opens another. (Did that make sense?)
Makes sense :)
Thats because 'view checks if any windows are open. It is not meant to block,
but somebody has to start the event-loop. And there is no way to check if
events are running already. So by convention, if there are open windows,
there is a running event-loop too.
Another difference between view and view/new: view closes the current window.
view/new adds another one.
In combination you can make kind of "browser" where you do go to other scripts
when the user presses a button:
as convention each script makes a layout and ends with
now the first script runs. it sees there is no open window, so starts the
now the user presses button, we do second script.
This script does its view, and now a window is open:
1) view closes the old window. Thats good. otherwise we would have lots of
death, uninteresting windows some clicks later.
2) it sees a window is open, so there should be a event-loop. So it does not
start a new one (means does no 'wait, 'do-events or such).
3) does not block. so the script returns. 'view was the last command, so that
makes no difference.
So rebol does some returns, to the button-press, then to the first event-loop.
There are no more information about doing the new script on the return-stack.
So you can do an unlimited amount of scripts.
You can also do the same script alot of times. button-press -> change data,
save data, do script again. No stack-flooding. Kind of tail-recursion.
Or you can use that like a browser: a script is a "page", has some content and
some links (buttons with "do other page"). The other page has some links too.
All pages have a "do %main-menu.r". And you have a flexible application where
you quickly can add funtions.
Only problem are the jumping windows, but for a prototype ok.
> -Izzy boy ^.^ (Thanx for any help if you understood my request)