"exit to top" within modal: bug or misconception?

Ben Rubinstein benr_mc at cogapp.com
Thu Mar 12 05:30:47 EDT 2009


Kay C Lan wrote:
...
> In my case I considered that it had been an error on my part to not provide
> a "Cancel" button as an option.
> 
> So I'd rephrase the question, in what circumstances do you consider you NEED
> to provide the option to 'exit to top' but CAN'T provide a Cancel button to
> do so.

I think it's not so much that you CAN'T script around this; it's just that 
we've all got caught in the situation where we haven't done so.   (This does 
come up on the list from time to time.)  Most of us have probably lost 
data/work in some instances.  And yes, in each case we could recognise that it 
had been an error on our part.

But if such superb and experienced programmers as us can make such mistakes, 
it seems like it might be a benefit if there was a way of letting us out of 
those mistakes gently.  One of the ways in which Rev makes us more productive 
is by being gentle with us - we've recently been reviving an old C 
application, and starting a new one in C++, and I'd really forgotten how many 
easy ways there are to crash, which Rev protects us from.  The difference is 
that when you crash your C/C++ app, you've got to go round that long 
code/compile/test cycle again (another way that Rev makes us more productive); 
but your code is unaffected.  If you crash, or have to force quit, your Rev 
app, you may have lost work on the code as well.

The fundamental issue is that while Rev is generally described as not being 
threaded, actually it does have separate threads of execution (but nested, not 
parallel); new threads being invoked by messages, modal, and script.  Although 
there are these threads, the language more or less ignores their existence, 
they're not well supported; so there is (AFAIK) no way for a thread to address 
other threads, and no way to 'exit to top' in all threads.

The threads play to our advantage in some ways; I have a set of AppleScript 
statements I keep handy under the name "RunRevSaviours",  that do things like 
close the open modal dialog and send 'mouseup' to my 'Backup and Save' toolbar 
button.  But one thing I can't do from these scripts is to cancel my running 
stack; I can do "exit to top" but that's in the thread that's executing my 
applescript.

It would be great if there was an "exit to top in all threads" variant. 
Perhaps even more to the point, command-period should behave in that way.

- Ben




More information about the use-livecode mailing list