href=http://www.son.washington.edu/~brianp>brianp@u.washington.edu
------------------------------------------------------------------
--																--
--																--
--					Script exporter								--
--																--
--																--
------------------------------------------------------------------





to handle p_ExportScripts

system BookRef,exportFile

BookRef 		= p_SubjectFile()
exportFile 		= p_exportFile()
exportOptions 	= p_getOptions()

doBackground = item 1 of exportOptions
DoObjects = item 2 of exportOptions
doPages = item 3 of exportOptions
doPageObjects = item 4 of exportOptions
doViewers = item 5 of exportOptions

get p_initFile(exportFile)

get p_writeFile("Script(s) of "&BookRef)
get p_writeFile("Exported on       : "&sysDate)
get p_writeFile("Time              : "&sysTime)
get p_writeFile()

get p_writeFile("Book Script")
get p_writeFile("===========")
get p_writeFile()
get p_writeFile (script of bookRef)
get p_writeFile()
get p_writeFile("	----	End of Book Script	----")
get p_writeFile()

if DoBackground then

	send doBackgroundScripts doObjects
	
end if

if DoPages then

	send doPageScripts doPageObjects
	
end if

if DoViewers then

	send doViewers
	
end if


closeFile ExportFile

run ExportFile

end p_exportScripts

---------------------------------------------------------------------------------------------

to handle doBackgroundScripts  doObjects

local stack BackList
system BookRef

get p_writeFile("Background information")
get p_writeFile("======================")
get p_writeFile()

BC = backgroundCount of bookRef
get p_writeFile (BC&&"background(s) detected")
BackList = null

i = 1
counter = 0

while counter<>BC

	if parent of page i of bookref is not in Backlist then
	
		push parent of page i of bookRef onto BackList
		increment i
		increment counter
		
	else
	
		increment i
		
	end if

end while

-- backlist is now a stack of all the background lists.  With explicit book references

step i from 1 to itemCount(backlist)

	get p_writeFile("Background script for "&item i of backlist)
	get p_writeFile("Background name "&(name of item i of backlist))
	get p_writeFile(script of item i of backlist)
	get p_writeFile("	---	End of script for background "&i&"	---")
	get p_writeFile()
	
	-- do objects?
	
	if doObjects then
	
	objList = getObjectList(item i of backlist,"",true)
	get p_writeFile("Objects with script : "&objList)
	
	if objList is not null then
	
		step a from 1 to itemCount(objList)
		
			get p_writeFile("Script for "&item a of objList)
			get p_writeFile("Name : "&(name of item a of objList))
			get p_writeFile(script of item a of objList)
			get p_writeFile()
			get p_writeFile("	---	End of script for "&(item a of objList)&"	---")
		
		end step
		
	end if
	
	
	end if
	
end step

end DoBackgroundScripts

---------------------------------------------------------------------------------------------

to handle doPageScripts doPageObjects

system BookRef

pc = pageCount of bookRef

get p_WriteFile()
get p_WriteFile("Page information")
get p_WriteFile()

step i from 1 to pC

	get p_writeFile("Page number "&i)
	get p_writeFile("Page name "&(name of page i of bookRef))
	get p_writeFile("Script")
	get p_writeFile()
	get p_writeFile(script of page i of bookRef)
	get p_writeFile()
	get p_writeFile("	---	End of script for "&(name of page i of bookRef)&"	---")
	get p_writeFile()
	
	if doPageObjects then

		objList = getObjectList(page i of bookRef,"",true)
		get p_writeFile("Objects with script : "&objList)
	
		if objList is not null then
	
			step a from 1 to itemCount(objList)
		
				get p_writeFile("Script for "&item a of objList)
				get p_writeFile("Name : "&(name of item a of objList))
				get p_writeFile(script of item a of objList)
				get p_writeFile()
				
			end step
		
		end if
	
	end if
	
end step

end doPageScripts

---------------------------------------------------------------------------------------------
	
to handle doViewers

system bookRef

ViewCount = itemCount(windows of bookRef)

get p_writeFile()
get p_writeFile("Viewers : "&ViewCount)
get p_writeFile()

step i from 1 to ViewCount

	get p_WriteFile("Viewer : "&i)
	get p_writeFile("Name   : "&(name of item i of (windows of bookRef)))
	get p_writeFile("Script ")
	get p_writeFile("======")
	get p_writeFile()
	get p_writeFile(script of item i of (windows of bookRef))
	get p_writeFile("	--- End of script for viewer "&i&"	---")
	get p_writeFile()
		
end step

end doViewers

---------------------------------------------------------------------------------------------

to get p_subjectFile

linkDll "tb30dlg.dll"
	
	STRING openFileDlg(STRING,STRING,STRING,STRING,INT)
		
end linkDLL

filterlist="Toolbook,*.TBK,System Books,*.SBK"
get OpenFileDlg("Export Script(s) of book...",null,null,filterlist,1)

unlinkDLL "tb30Dlg.DLL"

if It is null then 

	request "User cancelled"
	break to system
	
end if

BookDone = Book It
return BookDone

end p_subjectFile

---------------------------------------------------------------------------------------------

to get p_exportFile

linkDLL "TB30DLG.DLL"

	STRING saveAsDlg(STRING,STRING,STRING,STRING,INT)
		
end linkDLL
	
filterList = "Text file (*.txt),*.txt"
get saveAsDlg("Save Data As","temp.txt",null,filterList,1)
unlinkDll "TB30DLG.DLL"
	
if It is null
		
	break to system
		
else
		
	ExportFileRef = It
		
end if

return ExportFileRef


end p_exportFile

---------------------------------------------------------------------------------------------

to get p_getOptions

linkDLL "tb30dlg.dll"
	
	string dialog(string, string)
	string setValue(string, string, string)
	string getValue(string, string)
	
end

optionsBox =	"524480,13,25,25,237,178,,,Script options"&\
				",8,MS Sans Serif,,178,11,53,15,5,1342373889"&\
				",128,OK,0,,178,30,53,14,6,1342242816,128,Cancel"&\
				",0,,9,9,158,55,7,1342177287,128,Background options"&\
				",0,,9,65,158,48,11,1342177287,128,Page options"&\
				",0,,7,119,159,42,14,1342177287,128,Viewers,0,NoBackground"&\
				",21,24,136,12,17,1342308361,128,No scripts,0,BackgroundOnly"&\
				",21,37,134,11,18,1342177289,128,Background only,0,BackgroundObjects"&\
				",21,49,139,12,19,1342177289,128,Background objects included,"&\
				"0,Noviewers,21,134,131,14,22,1342308361,128,No viewer scripts,"&\
				"0,Viewers,21,148,121,9,23,1342177289,128,Viewer scripts,0,Nopages"&\
				",21,79,118,8,20,1342308361,128,No scripts,0,PagesOnly,21,87,118,14,"&\
				"21,1342177289,128,Pages only,0,doPageObjects,21,102,97,9,24,1342177289,128,"&\
				"Objects on page included,0"
			
init = ",B5,TRUE,B6,FALSE,G7,Background options,G11,"&\
		"Page options,G14,ViewersBUTTON NoBackground,B17,"&\
		"TRUEBUTTON BackgroundOnly,B18,FALSEBUTTON BackgroundObjects"&\
		",B19,FALSEBUTTON Noviewers,B22,TRUEBUTTON Viewers,B23,FALSEBUTTON
"&\
		" Nopages,B20,TRUEBUTTON"&\
		" PagesOnly,B21,FALSEBUTTON doPageObjects,B24,FALSE"	
		
set retValue to dialog(OptionsBox, init)

if retValue = null then 

	break to system
	
end if

DoBackground = getValue(retValue, "NoBackground")
DoBackground = 
NOT DoBackground
DoObjects = getValue(retValue, "BackgroundObjects")
DoPages = getValue(retValue, "NoPages")
DoPages = NOT DoPages
doPageObjects = getValue(retValue, "doPageObjects")
DoViewers = getValue(retValue, "Viewers") 
DoViewers = NOT DoViewers

unlinkDLL "TB30DLG.DLL"

retString = DoBackground&","&DoObjects&","&DoPages&","&DoPageObjects&","&DoViewers

return retString

end p_getOptions

---------------------------------------------------------------------------------------------

to get p_initFile ExportFileRef

-- openUp the text file

createFile ExportFileRef
sysSuspend = false

if sysError = "read only" or sysErrorNumber = 8053 -- no other errors, unless 10 files open at present time
	
	if sysErrorNumber = 8053 
	
		request "Too many files open.  Close some files, then try again."
		
	else
	
		request "That is a read only DOS file.  Try again."
		
	end if
	
	closeFile ExportFileRef
	sysSuspend = true
	break to system
	
end if

sysSuspend = true
return true

end p_initFile

---------------------------------------------------------------------------------------------

to get p_writeFile writeString

system exportFile

writeFile writeString&crlf to exportFile
return true

end p_writeFile

---------------------------------------------------------------------------------------------

Revised 9/7/94
brianp@u.washington.edu (Brian Parkhurst)
University of Washington
Box 357260
Seattle, WA 98195-7260
206/543-9175