"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