On Oct 4, 2006, at 2:00 PM, J. Landman Gay wrote:


The first way is to simply pass the full file path to the stack. You may not always know this in advance, but there are ways to calculate it. However, the easiest way is the second way, using relative file paths.



There is a related third way: using the "stackfiles" property. "The stackfiles" is a stack property, consisting of a list of stacknames and paths that Rev uses to find stacks that are referred to by name in handlers. In Hypercard, I believe, the stackfiles property was created and maintained by HyperCard itself, though it could be modified by scripts.

From the Rev docs:

When a handler or object refers to an object in a stack other than the current stack, Revolution checks all stacks that are loaded into memory (and their substacks) to find the referenced stack. If the stack cannot be found, Revolution checks the current stack's stackFiles property to locate the stack being referenced, and loads it into memory so that its properties and the objects in it can be used.


I do this: in my standalone stack startup sequence, my scripts get the files in a subdirectory in a defined relationship to my standalone, and from the file list the script creates a list of the stacks I find there, like this:

HEM_Version,/Volumes/Obovoid/TCSDEV/Projects/HFX/HEM/Resources/STK/ HEM_Version.rev HEM_Startup,/Volumes/Obovoid/TCSDEV/Projects/HFX/HEM/Resources/STK/ HEM_Startup.rev HEM_Main,/Volumes/Obovoid/TCSDEV/Projects/HFX/HEM/Resources/STK/ HEM_Main.rev HEM_DEV,/Volumes/Obovoid/TCSDEV/Projects/HFX/HEM/Resources/STK/ HEM_DEV.rev

Then I set the stackfiles of my standalone stack to this list. Because the standalone stack is a "parent" stack to every stack in the application, its stackfiles property is available to every script in the application.

Since I always use the same name for my stacks and their filenames, I can be confident that when I use this in a script:

    toplevel "HEM_Main"

the proper stack will be found and loaded.

I make this stackfiles list every time I start up the application, so the paths are always current. Another strategy might be to fill the stackfiles property once during development using relative paths. But that relies on having "the defaultfolder" correctly set at all times. Of course, I always restore the defaultfolder whenever I change it, but I like the belt and suspenders approach. Besides, doing it the full-path way would permit me to put stack files in more than one directory - application stacks and plugins maybe - and find them seamlessly in scripts.

Always another way...

t



--
Tereza Snyder

   Califex Software, Inc.
   www.califexsoftware.com
_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to