Monday, November 08, 2010 at 12:06 AM.
system.verbs.builtins.table.newSuite
on newSuite (adrSuite) {
<<Creates a new suite of scripts in Frontier's database
<<and then creates a sub-table in the suites table
<<it creates:
<<a starter menu
<<an installMenu script
<<an empty readMe text window
<<thanks to:
<<Peter Dako, for writing the 1st version of this script
<<8/31/99; 12:19:36 PM by DW
<<Call system.menus.buildSuitesSubmenu when we're finished to update the Suites sub-menu of the Main menu.
local (suiteName = nameOf (adrSuite^));
local (prettySuiteName = string.upper (suiteName [1]) + string.mid (suiteName, 2, sizeof (suiteName)));
new (tableType, adrSuite);
adrSuite^.suiteName = prettySuiteName;
bundle { //build the menubar
local (adrMenubar = @adrSuite^.menu);
new (menubarType, adrMenubar);
target.set (adrMenubar);
op.setLineText (prettySuiteName);
on addCommand (name, script) {
menu.addMenuCommand (adrMenubar, prettySuiteName, name, script)};
addCommand ("Read Me", "edit (@" + suiteName + ".readMe)");
addCommand ("-", "");
addCommand ("Edit Menu", "edit (@" + suiteName + ".menu)");
addCommand ("Edit Table", "edit (@" + suiteName + ")");
bundle { <<work around an apparent bug in the Windows version, 11/3/97 DW
op.firstSummit ();
if op.getLineText () == "" {
op.deleteLine ()}};
target.clear ()};
bundle { //build the readme
local (adrReadMe = @adrSuite^.readMe);
new (wptextType, adrReadMe);
target.set (adrReadMe);
wp.insert ("This is the " + suiteName + " suite." + cr + cr);
with user.prefs {
wp.insert ("Created by " + name + " of " + organization + " on " + string.dateString () + " at " + string.timeString () + "." + cr + cr)};
wp.insert ("[Why I Wrote It]" + cr + cr);
wp.insert ("[What It Does]" + cr + cr);
wp.insert ("[Things To Watch Out For]" + cr + cr);
window.zoom (adrReadMe);
target.clear ()};
<<bundle //build the installMenu script
<<local (adrInstallMenuScript = @adrSuite^.installMenu)
<<new (scriptType, adrInstallMenuScript)
<<target.set (adrInstallMenuScript)
<<op.setLineText ("return (menu.install (@" + suiteName + ".menu))")
<<target.clear ()
bundle { //build the init script
local (adrInitScript = @adrSuite^.init);
new (scriptType, adrInitScript);
target.set (adrInitScript);
op.setLineText ("if not defined (user." + suitename + ")");
op.insert ("new (tableType, @user." + suitename + ")", right);
target.clear ()};
<<menu.importSuite (adrSuite, prettySuiteName) //add a command to the Suites menu
<<menu.addSuite (adrSuite) <<it appears in the menubar now
system.menus.buildSuitesSubmenu (); //add DG to Suites sub-menu of the Main menu
return (true)}
<<bundle //test code
<<newSuite (@suites.blagooey)
<<edit (@suites.blagooey)
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.