Which stack called the library stack ?
Jan Schenkel
janschenkel at yahoo.com
Fri Sep 24 17:25:42 EDT 2010
--- On Fri, 9/24/10, John Dixon <dixonja at hotmail.co.uk> wrote:
>
> How can I find out which stack called a library stack from
> the script of the library stack ?
>
> thanks...
>
> John Dixon
>
Are you wondering which script issued the 'start using' command? Or which script calls one of the handlers in your library stack script?
I'm not sure about the first one, but you can solve the second riddle by looking at the 'executionContexts' local property.
I made a quick test stack "MyMain" with a single button, and a substack "MyLib" with a single scrolling text field.
Then I set the script of stack "MyLib" to:
##
on MyLibHandler
put "<<< MyLibHandler" & return & \
the executioncontexts & return & \
">>>" & return \
after field 1 of me
end MyLibHandler
##
Then I went back to stack "MyMain" and set the script of the button to:
##
on mouseUp
start using stack "MyLib"
MyLibHandler
stop using stack "MyLib"
end mouseUp
##
With all that set up, I clicked the button, and got the following in the scrolling text field of stack "MyLib":
##
<<< MyLibHandler
button id 1004 of card id 1002 of stack "MyMain",mouseUp,3
stack "MyLib" of stack "MyMain",MyLibHandler,17
>>>
##
So the second-to-last line gives you the control that called MyLibHandler, the name of the handler in which MyLibHandler was callezd, and even the line number.
Note that I said 'the second-to-last line' - because if we slightly change the script of the button in stack "MyMain" to:
##
on mouseUp
RunMyLibHandler
end mouseUp
on RunMyLibHandler
start using stack "MyLib"
MyLibHandler
stop using stack "MyLib"
end RunMyLibHandler
##
Then we get the following output instead in the scrolling text field:
##
<<< MyLibHandler
button id 1004 of card id 1002 of stack "MyMain",mouseUp,2
button id 1004 of card id 1002 of stack "MyMain",RunMyLibHandler,7
stack "MyLib" of stack "MyMain",MyLibHandler,17
>>>
##
The 'mouseUp' called 'RunMyLibHandler'; and this in turn loaded the library stack, called 'MyLibHandler' and unloaded it again. So the first line is the originating event, and the second-to-last line gives you the handler that actually called the handler in the library script.
HTH,
Jan Schenkel.
=====
Quartam Reports & PDF Library for LiveCode
www.quartam.com
=====
"As we grow older, we grow both wiser and more foolish at the same time." (La Rochefoucauld)
More information about the use-livecode
mailing list