Monday, November 08, 2010 at 12:02 AM.

system.verbs.builtins.Frontier.tools.init

on init () {
	<<Changes:
		<<9/17/10; 11:08:22 PM by DW
			<<New pref, user.tools.prefs.flUseScheduler2, initialized to false. If set true, we use the new scheduler. Eventually this will be set true in userland.cleanroot.
		<<1/18/10; 9:47:39 AM by DW
			<<Don't install the Frontier.tools thread, new pref user.tools.prefs.flCheckToolsFolder, defaults true.
		<<7/17/09; 6:08:29 PM by DW
			<<Make sure that user.callbacks.opInsert has an element named "tools" that points to Frontier.tools.windowTypes.callbacks.opInsert.
		<<11/26/01; 5:55:25 PM by JES
			<<Create callback tables at user.tools.callbacks. Right now, there are four callbacks, beforeInstall, beforeUninstall, afterInstall, and afterUninstall.
		<<9/19/01; 5:41:45 PM by JES
			<<Create an empty table at system.temp.Frontier.tools, for storing temporary information about Tools.
		<<7/1/01; 7:01:01 PM by JES
			<<Added initialization of windowTypes-related items.
		<<6/21/01; 1:20:57 AM by JES
			<<If this is Radio, only check to see if user.menus.tools == @playlist.tools.menu, if playlist.tools.menu is defined.
		<<04/22/01; 8:58:49 PM by JES
			<<Be sure the user.html.callbacks.fileWriters.ftp table exists.
		<<4/18/01; 1:20:35 AM by JES
			<<Cribbed from playlist.tools from Radio.root.
	on installCallback (adrcode, name, replaceIfEqualsString=nil, adrCallbacks=@user.callbacks) {
		local (adrtable = @adrCallbacks^.[name]);
		if not defined (adrtable^) {
			new (tableType, adrtable)};
		local (adrscript = @adrtable^.tools);
		if replaceIfEqualsString != nil {
			if defined (adrscript^) {
				if string (adrscript^) == replaceIfEqualsString {
					delete (adrscript)}}};
		if not defined (adrscript^) {
			adrscript^ = @adrcode^.[name]}};
	
	bundle { //init user.tools
		if not defined (user.tools) {
			new (tableType, @user.tools)};
		if not defined (user.tools.databases) {
			new (tableType, @user.tools.databases)};
		bundle { //prefs
			if not defined (user.tools.prefs) {
				new (tableType, @user.tools.prefs)};
			if not defined (user.tools.prefs.flCheckToolsFolder) { //1/18/10 by DW
				user.tools.prefs.flCheckToolsFolder = true};
			if not defined (user.tools.prefs.flUseScheduler2) { //9/17/10 by DW
				user.tools.prefs.flUseScheduler2 = false}};
		if system.environment.isPike and defined (playlist.tools.menu) {
			if user.menus.tools == @playlist.tools.menu {
				delete (@user.menus.tools)}};
		if not defined (user.menus.tools) {
			user.menus.tools = @Frontier.tools.menu}};
	bundle { //init temp.Frontier.tools
		if not defined (system.temp.Frontier) {
			new (tableType, @system.temp.Frontier)};
		if not defined (system.temp.Frontier.tools) {
			new (tableType, @system.temp.Frontier.tools)}};
	<<bundle //set up Frontier.tools.thread, commented -- 1/18/10 by DW
		<<if not defined (user.scheduler.threads.tools)
			<<user.scheduler.threads.tools = @Frontier.tools.thread
	bundle { //init user.tools.menus
		if not defined (user.tools.menus) {
			new (tabletype, @user.tools.menus)};
		if not defined (user.tools.menus.rightClickMenu) {
			new (menubartype, @user.tools.menus.rightClickMenu)}};
	bundle { //init user.tools.nodeTypes
		if not defined (user.tools.nodeTypes) {
			new (tabletype, @user.tools.nodeTypes)}};
	bundle { //make sure nodeTypes-related callbacks are installed
		local (adrcode = @Frontier.tools.nodeTypes.callbacks);
		installCallback (adrcode, "opCollapse", "return (Frontier.tools.opExpandCallback ())");
		installCallback (adrcode, "opExpand", "return (Frontier.tools.opExpandCallback ())");
		installCallback (adrcode, "opRightClick", "on tools (adrmenu) {\r\treturn (Frontier.tools.opRightClickCallback (adrmenu))}")};
		<<bundle //old code
			<<bundle //opCollapse
				<<local (adrtable = @user.callbacks.opCollapse)
				<<if not defined (adrtable^)
					<<new (tableType, adrtable)
				<<local (adrscript = @adrtable^.tools)
				<<if defined (adrscript^)
					<<if string (adrscript^) == "return (Frontier.tools.opExpandCallback ())"
						<<delete (adrscript)
				<<if not defined (adrscript^)
					<<adrscript^ = @adrcode^.opCollapse
			<<bundle //opExpand
				<<local (adrtable = @user.callbacks.opExpand)
				<<if not defined (adrtable^)
					<<new (tableType, adrtable)
				<<local (adrscript = @adrtable^.tools)
				<<if defined (adrscript^)
					<<if string (adrscript^) == "return (Frontier.tools.opExpandCallback ())"
						<<delete (adrscript)
				<<if not defined (adrscript^)
					<<adrscript^ = @adrcode^.opExpand
			<<bundle //opRightClick
				<<local (adrtable = @user.callbacks.opRightClick)
				<<if not defined (adrtable^)
					<<new (tableType, adrtable)
				<<local (adrscript = @adrtable^.tools)
				<<if defined (adrscript^)
					<<if string (adrscript^) == "on tools (adrmenu) {\r\treturn (Frontier.tools.opRightClickCallback (adrmenu))}"
						<<delete (adrscript)
				<<if not defined (adrscript^)
					<<adrscript^ = @adrcode^.opRightClick
	bundle { //make sure the html fileWriters callbacks table exists
		if not defined (user.html.callbacks) {
			new (tableType, @user.html.callbacks)};
		if not defined (user.html.callbacks.fileWriters) {
			new (tableType, @user.html.callbacks.fileWriters)};
		if not defined (user.html.callbacks.fileWriters.ftp) {
			new (tableType, @user.html.callbacks.fileWriters.ftp)}};
	bundle { //init user.tools.windowTypes
		if not defined (user.tools.windowTypes) {
			new (tabletype, @user.tools.windowTypes)}};
	bundle { //make sure windowTypes-related callbacks are installed
		local (adrcode = @Frontier.tools.windowTypes.callbacks);
		
		<<Builtin callbacks
		installCallback (adrcode, "closeWindow");
		installCallback (adrcode, "openWindow");
		installCallback (adrcode, "saveWindow");
		
		
		<<Outline callbacks
		installCallback (adrcode, "opReturnKey");
		installCallback (adrcode, "opCursorMoved");
		installCallback (adrcode, "opInsert"); //7/17/09 by DW
		};
	bundle { //install commandCallbacks, and create user.tools.callbacks tables
		on sureTable (adrparent, name) {
			if not defined (adrparent^.[name]) {
				new (tableType, @adrparent^.[name])}};
		local (adrcallbacks = @user.tools.commandCallbacks);
		if not defined (adrcallbacks^) {
			new (tableType, adrcallbacks)};
		
		sureTable (adrcallbacks, "isMenuItemEnabled");
		sureTable (adrcallbacks, "close");
		sureTable (adrcallbacks, "new");
		sureTable (adrcallbacks, "open");
		sureTable (adrcallbacks, "openUrl");
		sureTable (adrcallbacks, "revert");
		sureTable (adrcallbacks, "save");
		sureTable (adrcallbacks, "saveAs");
		sureTable (adrcallbacks, "saveAsHtml");
		sureTable (adrcallbacks, "saveAsPlainText");
		sureTable (adrcallbacks, "viewInBrowser");
		
		adrcallbacks = @user.tools.callbacks;
		if not defined (adrcallbacks^) {
			new (tableType, adrcallbacks)};
		sureTable (adrcallbacks, "beforeInstall");
		sureTable (adrcallbacks, "afterInstall");
		sureTable (adrcallbacks, "beforeUninstall");
		sureTable (adrcallbacks, "afterUninstall")};
	bundle { //init manila windowTypes, nodeTypes and editResponder
		if defined (manila.windowTypes) {
			manila.windowTypes.init ()};
		if defined (manila.nodeTypes) {
			manila.nodeTypes.init ()};
		if system.environment.isRadio {
			if defined (manila.editResponder) {
				manila.editResponder.init ()}}};
	bundle { //init chatClient, xmlStorageSystem, and bookmarksMenu
		if defined (chatClient) {
			chatClient.init ()};
		if defined (xmlStorageSystem) {
			xmlStorageSystem.init ()};
		if defined (bookmarksMenu) {
			bookmarksMenu.init ()}};
	bundle { //finish installation
		if not defined (Frontier.tools.data.flInstalled) {
			Frontier.tools.data.flInstalled = false};
		if not Frontier.tools.data.flInstalled { //install wrapper scripts for file and edit menu calls, and isFileMenuItemChecked/Enabled
			if system.environment.isRadio {
				if defined (system.verbs.builtins.pike) {
					delete (@pike.isFileMenuItemChecked);
					script.newScriptObject ("on isFileMenuItemChecked (cmd) {return (Frontier.tools.windowTypes.isFileMenuItemChecked (cmd))}", @pike.isFileMenuItemChecked);
					delete (@pike.isFileMenuItemEnabled);
					script.newScriptObject ("on isFileMenuItemEnabled (cmd) {return (Frontier.tools.windowTypes.isFileMenuItemEnabled (cmd))}", @pike.isFileMenuItemEnabled);
					delete (@pike.runFileMenuScript);
					script.newScriptObject ("on runFileMenuScript (itemname) {return (Frontier.tools.windowTypes.runFileMenuScript (itemname))}", @pike.runFileMenuScript);
					delete (@pike.runEditMenuScript);
					script.newScriptObject ("on runEditMenuScript (itemname) {return (Frontier.tools.windowTypes.runEditMenuScript (itemname))}", @pike.runEditMenuScript)}}};
		bundle { //delete old callback entries
			local (adr);
			for adr in @user.callbacks {
				if defined (adr^.pike) {
					delete (@adr^.pike)};
				if defined (adr^.playlist) {
					delete (@adr^.playlist)}}};
		Frontier.tools.data.flInstalled = true}}; //only do this once
bundle { //test code
	init ()}



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.