How do I abort a handler in OS X???
Jim Carwardine
JimCarwardine at OwnYourFuture-net.com
Tue Jun 27 07:05:02 EDT 2006
An amazingly detailed answer... I did try and beat the loop by clicking ok
and then hitting cmd/period. Couldn't beat it. I like your suggestions for
remedies. I will implement them but, at the same time, I'll put in the on
shiftKey trapdoor as well... Jim
on 6/27/06 6:48 AM, Ben Rubinstein wrote:
> On 26/6/06 22:05, Jim Carwardine wrote:
>> Yes, that's my problem... Cmd-period didn't work... And there appears to be
>> no substitution remedy. I was developing a script and wanted to test a
>> piece of logic inside a repeat loop so I put in an answer variable line as I
>> always do. Then I got an answer dialogue with each iteration of about 1500
>> iterations which was impossible when I couldn't abort the handler. BTW
>> cmd/s doesn't work either... Jim
>
> Hi Jim,
>
> I don't think there's any problem with cmd-period in OS-X; but there is, and
> always has been, a problem that cmd-period doesn't work if you've got a modal
> dialog in the way.
>
> The problem is that the modal dialog (which of course in Rev is really another
> stack, with its own event loop) exists in another thread or "execution layer"
> (I don't know technically how its implemented, I'm just trying to express how
> it behaves.) So cmd-period works perfectly well as an interrupt; but if the
> answer dialog is up, you're just interrupting that, and since it wasn't doing
> anything anyway, nothing happens. Then you click OK, and you're back in the
> stuck loop. If you were really, unfeasibly, quick, you could click OK and
> then type cmd-period to the underlying stack before it throws up the next
> answer dialog, and then you'd stop it OK. But typically in this situation,
> Rev is too fast for you.
>
> This applies as much to Windows and OS 9 as OS X; however, you do have a
> couple more chances saving your data on the Mac, see below.
>
> I've got into this situation many times, typically I have some data-processing
> loop, and I think that I'd like to know if some situation that should never
> occur does so. So I put in a "just in case" alert, click the button - and
> then it turns out that due either to my misunderstanding, or erroneous coding,
> the test fires on every one of 10,000 lines.
>
> If I remember, I put in a 'hold down shift' emergency exit to escape from
> loops like this. Increasingly, I've tried to train myself to put in
> breakpoint for that situation, instead of or just after the "answer" call.
> But of course from time to time I forget and get bit again.
>
> Once when I was working on a shell that was to host a variety of data
> processing scripts, I took a copy of the Rev answer stack, and modified it to
> include a button that would do "exit to top" as a kind of emergency stop
> button. It's so cool that in Rev you can do this... but unfortunately, it
> didn't solve it. Just like cmd-period, "exit to top" when executed from
> inside the modal dialog affected only that 'layer'. There seend as far as I
> could tell to be no way to really halt the underlying script; it's suspended
> when the modal dialog is invoked; but regardless of what happens while the
> modal dialog is open, once closed the underlying script is resumed.
>
> I set off a correspondence on the improve list, wait, let me see... just over
> four years ago!... on exactly this topic, but we never found a good solution.
> Unfortunately, this was before Bugzilla had been opened to the users, and so
> nothing was entered anywhere persistent that might help.
>
> So much for deep background. No doubt you've force-quit by now anyway. But
> for future use:
>
> a) cmd-period works in general just as well in OS-9 as in OS-X. But there's
> no way to abort a script when an answer dialog is showing, unless you coded
> for the possibility (ie 'answer xxx with "Stop" or "Continue"/if it = "Stop"
> then exit to top).
>
> b) I keep an applescript file handy called "Rev Saviours". It has a variety
> of useful expressions in it which I uncomment and try when I'm in a situation
> like this.
>
> The one that helps here looks like this:
>
> tell application "Revolution"
> do script "close stack \"Answer Dialog\" ; save topStack()"
> end tell
>
> You'll still be stuck in your loop - but your stack has been saved, so as long
> as you weren't worried about data in variables, you can force-quit with an
> easy heart.
>
>
> c) If you do have to resort to force-quit, make sure that you can see your
> stack when you do it. In some situations on OS X, when Rev is force-quit it
> briefly offers to save your stack - if you immediately click the button, it
> really does do so.
>
> Ben Rubinstein | Email: benr_mc at cogapp.com
> Cognitive Applications Ltd | Phone: +44 (0)1273-821600
> http://www.cogapp.com | Fax : +44 (0)1273-728866
>
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
--
www.TalentSeeker.ca www.HiringSmart.ca/ns www.KeepingTheBest.ca/ns
<http://www.OwnYourFuture-net.com>
Own Your Future Consulting Services Limited,
23 Shoal Cove Road, Seabright, Nova Scotia, Canada. B3Z 3A9
Phone: 902-823-2339. Fax: 902-823-2139
More information about the use-livecode
mailing list