use-revolution Digest, Vol 79, Issue 33

Peter Haworth pete at mollysrevenge.com
Sat Apr 17 13:25:50 EDT 2010


Thanks for the pointers Tereza.

I think the cause of most of my problems was the existence of two  
stacks with the same name, as you pointed out.  After fixing that  
issue, I now have this working fine.

Instead of passing in the name of the app stack, I found I could the  
use "the long name of this stack", eg:

set the mainstack of stack "Structures" to the mainstack of the long  
name of this stack

I also figured out what you recommended for the code to create the  
stack.

Pete Haworth








On Apr 17, 2010, at 9:42 AM, use-revolution-request at lists.runrev.com  
wrote:

>
>
> Message: 1
> Date: Fri, 16 Apr 2010 18:13:26 -0500
> From: Tereza Snyder <tereza at califex.com>
> Subject: Re: Referencing a stack from a front script
> To: How to use Revolution <use-revolution at lists.runrev.com>
> Message-ID: <1EAB3310-BBC1-4ED0-B6BD-EC566E9ACC7B at califex.com>
> Content-Type: text/plain; charset=us-ascii
>
>
> On Apr 16, 2010, at 1:50 PM, Peter Haworth wrote:
>
>> My app inserts some front scripts from a separate .rev file, then  
>> calls a handler in the front script that needs to reference the  
>> application's .rev file, specifically to create a stack as a  
>> substack of the application's main stack if it doesn't already  
>> exist , then add several cards to it.
>>
>> Up to now, the front scripts have been in the same .rev file as my  
>> app and the code to achieve the above worked fine. I have now  
>> broken them out into a separate code library .rev file and things  
>> don;t work correctly any more.
>>
>> I've tried so many combinations of "this stack", the long name of  
>> this stack", etc that I've lost track of what happened with each of  
>> them, suffice it to say that none of them had the desired effect.   
>> The .rev file holding the front scripts happens to have a stack  
>> with the same name as the stack I want to create in the  
>> application's .rev file and I have not been able to figure out how  
>> to have the check for the existence of this stack look in the  
>> app's .rev file instead of the front scripts .rev file.
>>
>> In desperation, I created the stack in the app's .rev file in the  
>> IDE, but now how do I tell the create card command in the front  
>> script to put the new card into the stack in the app's .rev file -  
>> that command doesn't seem to have a way to name the stack you want  
>> to create the card in other than what is in the defaultStack and it  
>> appears defaultStack can only be set the a local stack name.
>
> First, having two stacks with the same name in memory is a no-no.  
> Change your strategy so that it never happens.
>
> Second, communicate the app stack's name to the handler.  If  
> possible, send a parameter with the stack's name to the handler, or  
> set a property on the object to which the front script belongs and  
> have the handler check for (something like) "the uTargetStackName"  
> of me", or put the stack's name in a global.
>
>
> Third, in your handler, create your new substack, set its mainStack  
> to the app stack. Store the value of the defaultStack, set the  
> defaultStack to the new substack, create your cards, and reset the  
> defaultStack.
>
> I don't know if it suits your design, but I'd put my library code in  
> a stack script, and make a prototype substack of that library stack  
> and call it something like "xxxTemplate" . Then, in the make-a- 
> substack-and-create-cards handler I would clone that stack with  
> 'clone stack "xxxTemplate"', then set the name of it to "xxx", then  
> set its mainstack as above.
>
>
> t
>
>
>
>
>
>
> -- 
> Tereza Snyder
> Califex Software, Inc.
> <www.califexsoftware.com>
>




More information about the use-livecode mailing list