
TIPS FOR CREATING YOUR OWN TOOL
Are you a ToolBook OpenScript programmer and interested in creating a LiveXtension Tool?
The following information is intended to give an experienced OpenScript programmer the necessary details needed in order to successfully create a LiveXtension.

What is a LiveXtension?
A LiveXtension is just a regular .TBK file that does some task. However it is important for you to understand how your tool is shown.

What can a Developers Exchange Tool do?
A LiveXtension can do virtually anything a normal book can do. For example a very simple tool to show the current date would be a one page book with a single button in it with the following code on the button.
to handle buttonClick
request sysDate
endA slightly more complex task would be to show the user how many Pages and Backgrounds are in their book. This is more complex because your Tool has to access information about their book. Here is a sample of one way to do this:
-- Show the PageCount and BackgroundCount of the user's book
to handle buttonClick
userBook = parent of mainWindow
tp = pagecount of userBook
tb = backgroundcount of userBook
request tp & CRLF & tb
endNotice the need to tell the code to fetch the information from the parent of the mainWindow (which is essentially the user's loaded book). If you fail to include such logic the code would instead fetch the information from your tool, which is not the desired effect in this case.
-- Show the PageCount and BackgroundCount of the Tool itself
to handle buttonClick
tp = pagecount of this book
tb = backgroundcount of this book
request tp & CRLF & tb
end
Special Settings Needed for your Tool
SUMMARY TAB
On the Summary tab of the Book Properties there are several values which need to be populated in order for your Tool to properly import as a local tool.
Book Title
This is the name of your tool (not the file name).
For example: Automatic ButtonizerAuthor
Your NameDescription
A summary description of what the tool doesMODAL VS NON-MODAL
You can choose to have your Tool shown in a Modal or Non-Modal window. By default your tool will appear in a Modal window. If you wish to make this a non-modal window, set the following book user property of your tool:devex_modal = false
EXITING YOUR BOOK
Recall that your tool is being shown in a Viewer of another book (_index.tbk). When exiting your tool, all you need to do is close the window you are in. You would not want to perform an EXIT command.-- programmatically closing the window
to handle buttonClick
close this window
endLetting the user click the X in the corner of the tool's window is a valid way to allow them to exit, which works well in a stand-alone tool or as a LiveXtension. However if you wish to provide an Exit button, use this code in the Exit button.
-- programmatically closing the window (or exiting)
to handle buttonClick
if shownBy of objectContainer(self,"page") = mainWindow
send exit
else
close this window
end
endADDING YOUR TOOL AS A SYSTEM BOOK
When you launch a LiveXtension, the tool is shown in a viewer of _index.tbk, as discussed above. This way of showing another book has a unique side effect in that normal messages sent up through the ToolBook messaging hierarchy from the users book (the MainWindow) are never sent to your tool.This may not be an important consideration for your tool but in the case of the Web Safe Color Tray (for example), it is a requirement of the tool to be able to not only be Non-Modal, but also be able to tell what is happening in the MainWindow. For example, in the case of the Web Safe Color Tray, it is critical that the Color Tray know when the user selects an object in the MainWindow.
The way to get your Tool into the normal messaging hierarchy is to push your tool onto the SYSBOOK stack (note this does not mean your tool has to have a .SBK extension). This is a little tricky to do as you have to essentially override the normal opening mechanism of the LiveXtensions, and then handle the removal of your tool from the SYSBOOK stack when your tool closes.
Below is our recommended way to create a Non-Modal Tool which pushes itself onto the SYSBOOK stack and then properly removes itself when the tool closes. You may find other approaches which work equally well for you.
Create your tool, giving it a normal .TBK extension. Do Not set the NON-MODAL setting outlined earlier in this article. Create a Viewer in your book to host your tool, having the default page of your viewer point to the proper page of your book to show your tool's users interface (likely page 1). Add the script below to your book (a portion goes in your Book Script and a portion in your Viewer Script).-- this script goes in your book script
-- you'll need to modify ONE line of the script below
to handle enterBook
if (self is in TARGET) AND (parent of this window) IS NOT (this book)
close this window
sysSuspend = false
in mainWindow
push (name of self) onto sysbooks
end
sysSuspend = true
--> specify your viewer name on this next line
show viewer "tray" of self
end
forward
end-- this script goes in your viewer script
-- you should not need to modify any of the code below
to handle closeWindow
forward
fileRef = name of this book
step k from 1 to itemCount(sysbooks)
curSysbook = item k of sysbooks
if curSysbook = fileRef
clear item k of sysbooks
end
end
end
| Contact Us | Legal | Privacy | Careers | +1-352-264-2800 | 866-768-6825 | Copyright © 2011, SumTotal Systems, Inc. |