# HG changeset patch # User Claus Gittinger # Date 841756592 -7200 # Node ID 8b68fdf7c870fb845716785934276b09613a20bd # Parent 7b048cdcc856146f1842f2525a84ca2bbebab58c better looking; show command output diff -r 7b048cdcc856 -r 8b68fdf7c870 STXInstaller.st --- a/STXInstaller.st Tue Sep 03 13:50:53 1996 +0200 +++ b/STXInstaller.st Tue Sep 03 15:16:32 1996 +0200 @@ -1,5 +1,6 @@ Object subclass:#STXInstaller - instanceVariableNames:'stxLibDir stxBinDir actionPercentageHolder actionTextHolder' + instanceVariableNames:'stxLibDir stxBinDir actionPercentageHolder actionTextHolder + commandTraceView' classVariableNames:'LastBinDir LastLibDir' poolDictionaries:'' category:'eXept-tools' @@ -75,7 +76,7 @@ msg := #('ST/X Installation' '' 'copying:' '' 'to:' '') asStringCollection. fileSpec := #( - "/ name destination subDir required + "/ name destination subDir required mode ( 'stc/stc' #bin nil false '755' ) ( 'rules/stmkmp' #bin nil false '755' ) @@ -145,34 +146,43 @@ nDone := 0. filesToCopy do:[:entry | - |fileName destDir cmd p text| - - actionPercentageHolder value:(nDone / numFiles * 100) rounded. + |fileName destDir cmd p text line| fileName := entry key. destDir := entry value. - msg at:4 put:' ' , (fileName asText allBold). - msg at:6 put:' ' , (destDir asText allBold). - actionTextHolder value:nil. - actionTextHolder value:msg. + ('../../' , fileName) asFilename exists ifTrue:[ + actionPercentageHolder value:(nDone / numFiles * 100) rounded. - cmd := 'cp -r ../../' , fileName , ' ' , destDir. + msg at:4 put:' ' , (fileName asText allBold). + msg at:6 put:' ' , (destDir asText allBold). + actionTextHolder value:nil. + actionTextHolder value:msg. + + cmd := 'cp -r ../../' , fileName , ' ' , destDir. + commandTraceView showCR:cmd , ' ...'. + cmd := 'sh -c "echo ; ' , cmd , ' 2>&1"' . - p := PipeStream readingFrom:cmd. - p isNil ifTrue:[ - self warn:('command error. Could not execute:\\' , cmd) withCRs. - ] ifFalse:[ - text := OrderedCollection new. - [p atEnd] whileFalse:[ - text add:p nextLine + p := PipeStream readingFrom:cmd. + p isNil ifTrue:[ + self warn:('command error. Could not execute:\\' , cmd) withCRs. + ] ifFalse:[ + "/ text := OrderedCollection new. + [p atEnd] whileFalse:[ + p readWaitWithTimeout:0.1. + line := p nextLine. + (line notNil and:[line notEmpty]) ifTrue:[ + commandTraceView showCR:((' ' , line) asText emphasizeAllWith:(#color->Color red)). + "/ text add:line + ] + ]. + p close. ]. - p close. + "/ (OperatingSystem executeCommand:('cp -r ../../' , fileName , ' ' , destDir)) + "/ ifFalse:[ + "/ self warn:('error while copying ' , fileName , '\\Please check manually.') withCRs. + "/ ]. ]. -"/ (OperatingSystem executeCommand:('cp -r ../../' , fileName , ' ' , destDir)) -"/ ifFalse:[ -"/ self warn:('error while copying ' , fileName , '\\Please check manually.') withCRs. -"/ ]. nDone := nDone + 1 ]. @@ -207,12 +217,14 @@ actionPercentageHolder value:(nDone / numDirs * 100) rounded. - msg at:4 put:' ' , dirName. + msg at:4 put:' ' , (dirName asText allBold). actionTextHolder value:nil. actionTextHolder value:msg. d := dirName asFilename. + commandTraceView showCR:'creating ' , d pathName , ' ...'. + d exists ifFalse:[ OperatingSystem recursiveCreateDirectory:d pathName ]. @@ -400,25 +412,38 @@ doInstall "install ST/X; return true if ok, false if not" - |progressView ok| + |progressView ok textView| + + textView := HVScrollableView for:TextCollector. + textView preferredExtent:(100 @ 250). + commandTraceView := textView scrolledView. progressView := ProgressIndicator - inBoxWithLabel:'ST/X Installation' + inBoxWithLabel:'ST/X Installation' icon:(Depth8Image fromImage:NewLauncher aboutIcon) text:#('ST/X Installation' '' '' '' '' '' '' '') asStringCollection - abortable:true. - progressView topView extent:400@300. + abortable:true + view:textView + closeWhenDone:false. + progressView topView extent:(500 min:Display width) @ 300. ok := false. progressView showProgressOf: - [:progressValue :currentAction | + [:progressValue :currentAction| |msg| + + Processor activeProcess withPriority:7 do:[ + actionPercentageHolder := progressValue. + actionTextHolder := currentAction. - actionPercentageHolder := progressValue. - actionTextHolder := currentAction. - - (self createDirectories) ifTrue:[ - ok := self copyFiles - ] + (self createDirectories) ifTrue:[ + ok := self copyFiles + ]. + progressView topView abortButton label:'continue'. + progressView topView abortButton action:[progressView topView hide]. + msg := #('ST/X Installation finished.' '' 'press continue ...' '' '' '') asStringCollection. + actionTextHolder value:nil. + actionTextHolder value:msg. + ] ]. ^ ok @@ -437,10 +462,7 @@ postInstall "some messages at the end ..." - |shInfo cshInfo msg stxBinDir stxLibDir havePath| - -stxBinDir := '/home2/stx/bin'. -stxLibDir := '/home2/stx/lib'. + |shInfo cshInfo msg havePath| msg := 'ST/X Installation complete.\\' withCRs. shInfo := ''.