Sunday, July 27, 2014

Working with Library Stacks

Pre-Conditions

This tutorial is written explicitly for LiveCode 6.6.2 Stable and might not work with other versions. The tutorial will not be updated!

Using Mainstacks as Libraries

When you work on a large Livecode project you'll want to include libraries that contain re-usable commands and functions. You can do this by adding a mainstack to your project as substack. This is neat but when an update has been added to the library stack you'll have to delete the Substack and add it again.

The better solution is to load the libraries in as Mainstacks. This way each time you open your stack the library stacks will be loaded on demand. The Mainstacks will only be loaded if you have loaded them using the "start using" command. Otherwise they'll not be loaded.

To tell the Mainstack to load in other Mainstacks as libraries open the Property Inspector of the Mainstack and choose Stack Files. Click on to the small folder icon to choose Mainstacks that should be loaded if you open your stack.

inspector-stacks

Once you've added the stack files you can load them with the the start using command:

on preOpenStack 
  start using "LibJson" 
  start using "LibUuid" 
  start using "GenericCouchDb" 
end preOpenStack

Once you've loaded the Mainstacks with the start using commands and re-open your stack you'll see that the other stack files are loaded in automatically:

project-explorer

Including the stacks in to your application when building

The above works nice in development mode. But you'll also have to make sure that the stacks are built in to your standalone application. To do this you'll have to copy the files in to your application folder.

Click on to File -> Standalone Application Settings -> Copy Files

standalone-app-settings-copy

If all the files are in a lib directory for example you can choose Add Folder and choose the lib folder. But you can also add single stack files by clicking on to Add File.

Using relative paths

If you want to open the stacks from a relative directory as for example ../lib you will have to load the stacks over script.

put the effective filename of this stack into tPath
set the itemDel to slash
delete the last item of tPath -- deleting the stack file name
delete the last item of tPath -- deleting the folder the stack is in
put tPath & "/lib" into tPath
set the defaultFolder to tPath -- sets the default folder to the new path

open stack "YourStack.livecode"
start using "YourStack"

As an alternative you can use following command:

set the stackFiles of this stack to "My Dialog,Custom Dialogs.rev,..."

No comments:

Post a Comment