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

on new (flHidden=false, title=nil, adradrwindow=nil) {
		<<4/16/02; 12:19:19 AM by JES
			<<Set the window's lineEnding attribute to the line ending for the current platform.
		<<12/2/01; 7:07:19 PM by JES
			<<if is defined, and true, open the serial number page.
		<<11/11/01; 1:41:33 PM by JES
			<<Put the new outline in text mode, so that you can start typing immediately.
		<<07/04/01; 1:25:13 AM by JES
			<<Rewrite for the windowTypes/Tools framework.
			<<12/26/00; 4:00:31 PM by PBS
				<<Call the new bottleneck script at pike.newWindow.
			<<12/12/00; 10:03:16 PM by PBS
				<<Set the window title in the call to edit -- so the title doesn't flash, first with the path name, then with the window title.
			<<11/30/00; 12:13:55 AM by JES
				<<Dereference callback addresses in a try block in case a tool's odb is not opened
			<<09/30/00; 12:45:13 PM by PBS
				<<Call callback scripts.
			<<07/26/00; 10:01:52 PM by PBS
				<<New outlines open in text mode, so you can start typing automatically.
			<<07/24/00; 12:31:47 PM by PBS
				<<Created. Create a new XML outlineDocument document.
	if defined ( {
		if {
			radio.menuCommands.openPage (;
			return (true)}}; ();
	on runCallbacks (adrCallback) {
		if defined (adrCallback^) {
			local (flConsumed = false);
			local (adrScript);
			for adrScript in adrCallback {
				try { //11/30/00 JES
					while typeOf (adrScript^) == addressType { //follow addresses
						adrScript = adrScript^};
					flConsumed = adrScript^ ()}; //no parameters
				if flConsumed {
					return (true)}}};
		return (false)};
	if runCallbacks ( {
		return (true)};
	if system.environment.isRadio {
		if defined (user.pike.commandCallbacks) {
			if runCallbacks ( {
				return (true)}}};
	if title == nil { //get next file number and title string -- Untitled-xxx
		if not defined (temp.windowTypes.nextFileNum) {
			temp.windowTypes.nextFileNum = 1};
		nextFileNum = temp.windowTypes.nextFileNum;
		if nextFileNum == 1 {
			title = "Untitled"}
		else {
			title = "Untitled-" + nextFileNum}};
	local (adr = ("outlinerFile", flHidden, title));
	window.attributes.setOne ("flOutlineDocument", true, adr);
	window.attributes.setOne ("title", title, adr);
	bundle { //set lineEnding attribute
		if system.environment.isMac {
			if system.environment.isCarbon {
				window.attributes.setOne ("lineEnding", "\r", adr)}
			else { //classic
				window.attributes.setOne ("lineEnding", "\n", adr)}}
		else { //windows
			window.attributes.setOne ("lineEnding", "\r\n", adr)}};
	local (oldTarget = target.set (adr));
	wp.setTextMode (true);
	try {target.set (oldTarget)};
	if adradrwindow != nil {
		adradrwindow^ = adr};
	return (true);
	<<bundle //old code
		<<local (nextFileNum, titleString)
		<<bundle //get next file number and title string -- Untitled-xxx
			<<if not defined (temp.pike)
				<<new (tableType, @temp.pike)
			<<if not defined (temp.pike.nextFileNum)
				<<temp.pike.nextFileNum = 1
			<<nextFileNum = temp.pike.nextFileNum
			<<if nextFileNum == 1
				<<titleString = "Untitled"
				<<titleString = "Untitled-" + nextFileNum
		<<bundle //create a new outline document
			<<Old code, moved to pike.newWindow:
				<<if not defined (temp.pike.outlines)
					<<new (tableType, @temp.pike.outlines)
				<<local (adrOutlinesTable = @temp.pike.outlines)
				<<local (adrTable = @adrOutlinesTable^.[titleString])
				<<new (tableType, adrTable)
				<<new (outlineType, @adrTable^.outline)
				<<edit (@adrTable^.outline, windowTitle:titleString) //PBS 12/12/00: set title in call to edit
				<<wp.setTextMode (true) //PBS 07/26/00: new outlines should be in text mode, so you can start typing automatically
				<<window.setTitle (@adrTable^.outline, titleString) //PBS 12/12/00: commented this line out -- see call to edit, above, that sets the title
				<<adrTable^.flSaved = false
				<<adrTable^.timeCreated = ()
				<<adrTable^.title = titleString
				<<adrTable^.flLocal = true
			<<pike.newWindow (titleString) //PBS 12/26/00: call new bottleneck script
		<<return (true)

<<bundle //debugging
	<<new ()

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.