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
---------------------------------------------------------------------------------------------