# HG changeset patch # User Claus Gittinger # Date 922815895 -7200 # Node ID 7efff9ca044f5de9c082d5600f0c13846110ee9b # Parent 660185e022243d8844047a4722c4d518dd09e7cc checkin from browser diff -r 660185e02224 -r 7efff9ca044f ProjectBrowser.st --- a/ProjectBrowser.st Tue Mar 30 11:58:48 1999 +0200 +++ b/ProjectBrowser.st Tue Mar 30 19:44:55 1999 +0200 @@ -2225,6 +2225,35 @@ self selectedProjectInPrerequisites value:nil. ! +browseClasses + |ns p classes nBad| + + p := self currentProject. + classes := p classes + collect:[:clsOrName | + |cls| + + clsOrName isSymbol ifTrue:[ + cls := Smalltalk at:clsOrName + ] ifFalse:[ + cls := clsOrName + ]. + cls + ]. + nBad := classes inject:0 into:[:sum :el | el isNil ifTrue:[sum+1] ifFalse:[sum]]. + nBad ~~ 0 ifTrue:[ + classes := classes select:[:cls | cls notNil]. + self warn:('Oops - %1 classes could not be found.' bindWith:nBad). + ]. + + + SystemBrowser + browseClasses:classes title:('Classes in ' , p name) sort:true. + + + +! + cancel "reload aspects from the project" @@ -2252,24 +2281,46 @@ p := self currentProject. ns := p defaultNameSpace. - p classInfo do:[:clsInfo | - |clsName clsFileName| - - clsName := clsInfo className. - clsFileName := clsInfo classFileName. - clsFileName isNil ifTrue:[clsFileName := clsName , '.st']. - - clsName isSymbol ifTrue:[ - cls := ns at:clsName. - cls isNil ifTrue:[ - "/ ok - really not yet loaded. + + self withReadCursorDo:[ + "/ read once ... + p classInfo do:[:clsInfo | + |clsName clsFileName| + + clsName := clsInfo className. + clsFileName := clsInfo classFileName. + clsFileName isNil ifTrue:[clsFileName := clsName , '.st']. + + clsName isSymbol ifTrue:[ + cls := ns at:clsName. + cls isNil ifTrue:[ + "/ ok - really not yet loaded. + Transcript showCR:'loading ' , (p directory asFilename construct:clsFileName) pathName , ' ...'. + Smalltalk fileIn:(p directory asFilename construct:clsFileName) + ] ifFalse:[ + self halt + ]. + ] ifFalse:[ + self halt + ]. + ]. + + "/ read again; if the load order was not correct, + "/ this will fix things (i.e. nil superclasses ...) + + p classInfo do:[:clsInfo | + |clsName clsFileName| + + clsName := clsInfo className. + clsFileName := clsInfo classFileName. + clsFileName isNil ifTrue:[clsFileName := clsName , '.st']. + + clsName isSymbol ifTrue:[ Transcript showCR:'loading ' , (p directory asFilename construct:clsFileName) pathName , ' ...'. Smalltalk fileIn:(p directory asFilename construct:clsFileName) ] ifFalse:[ self halt ]. - ] ifFalse:[ - self halt ]. ]. @@ -2280,9 +2331,11 @@ loadFromProjectFile:aFilenameString |newProject| - newProject := Project new loadFromProjectFile:aFilenameString. - newProject notNil ifTrue:[ - self newProject:newProject + self withReadCursorDo:[ + newProject := Project new loadFromProjectFile:aFilenameString. + newProject notNil ifTrue:[ + self newProject:newProject + ] ] !