[squeak-dev] The Trunk: System-dtl.191.mcz

commits at source.squeak.org commits at source.squeak.org
Sun Dec 6 22:35:27 UTC 2009


David T. Lewis uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-dtl.191.mcz

==================== Summary ====================

Name: System-dtl.191
Author: dtl
Time: 6 December 2009, 5:32 am
UUID: ed35f630-3035-4ddd-b8fc-93630b6bb0f7
Ancestors: System-bp.190

Remove explicit Morphic dependencies from ProjectLoader

=============== Diff against System-bp.190 ===============

Item was changed:
  ----- Method: ProjectLoading class>>openFromDirectory:andFileName: (in category 'loading') -----
  openFromDirectory: aDirectory andFileName: aFileName
  
  	| fileAndDir |
+ 	Project current
+ 		do: [ProgressNotification signal: '1:foundMostRecent'.
- 
- 	ComplexProgressIndicator new 
- 		targetMorph: nil;
- 		historyCategory: 'project loading';
- 		withProgressDo: [
- 			ProgressNotification signal: '1:foundMostRecent'.
  			fileAndDir := self bestAccessToFileName: aFileName andDirectory: aDirectory.
  			self 
  				openName: aFileName 
  				stream: fileAndDir first 
  				fromDirectory: fileAndDir second
+ 				withProjectView: nil]
+ 		withProgressInfoOn: nil
+ 		label: 'project loading'
+ 		!
- 				withProjectView: nil.
- 		]!

Item was changed:
  ----- Method: ProjectLoading class>>thumbnailFromUrl: (in category 'accessing') -----
  thumbnailFromUrl: urlString
  
  	| fileName fileAndDir |
  
  	"Load the project, and make a thumbnail to it in the current project.
  ProjectLoading thumbnailFromUrl: 'http://www.squeak.org/Squeak2.0/2.7segments/SqueakEasy.extSeg'.
  "
  
  	Project canWeLoadAProjectNow ifFalse: [^ self].
+ 	Project current
+ 		do: [ProgressNotification signal: '1:foundMostRecent'.
- 	ComplexProgressIndicator new 
- 		targetMorph: nil;
- 		historyCategory: 'project loading';
- 		withProgressDo: [
- 			ProgressNotification signal: '1:foundMostRecent'.
  			fileName := (urlString findTokens: '/') last.
  			fileAndDir := self bestAccessToFileName: fileName andDirectory: urlString.
  			self
  				openName: fileName 
  				stream: fileAndDir first 
  				fromDirectory: fileAndDir second
+ 				withProjectView: nil]
+ 		withProgressInfoOn: nil
+ 		label: 'project loading'
- 				withProjectView: nil.
- 		]
- 
  !

Item was changed:
  ----- Method: ProjectLoading class>>openName:stream:fromDirectory:withProjectView: (in category 'loading') -----
  openName: aFileName stream: preStream fromDirectory: aDirectoryOrNil
  withProjectView: existingView
  	"Reconstitute a Morph from the selected file, presumed to be
  represent a Morph saved via the SmartRefStream mechanism, and open it
  in an appropriate Morphic world."
  
     	| morphOrList proj trusted localDir projStream archive mgr
  projectsToBeDeleted baseChangeSet enterRestricted substituteFont
  numberOfFontSubstitutes exceptions |
  	(preStream isNil or: [preStream size = 0]) ifTrue: [
  		ProgressNotification  signal: '9999 about to enter
  project'.		"the hard part is over"
  		^self inform:
  'It looks like a problem occurred while
  getting this project. It may be temporary,
  so you may want to try again,' translated
  	].
  	ProgressNotification signal: '2:fileSizeDetermined
  ',preStream size printString.
  	preStream isZipArchive
  		ifTrue:[	archive := ZipArchive new readFrom: preStream.
  				projStream := self
  projectStreamFromArchive: archive]
  		ifFalse:[projStream := preStream].
  	trusted := SecurityManager default positionToSecureContentsOf:
  projStream.
  	trusted ifFalse:
  		[enterRestricted := (preStream isTypeHTTP or:
  [aFileName isNil])
  			ifTrue: [Preferences securityChecksEnabled]
  			ifFalse: [Preferences standaloneSecurityChecksEnabled].
  		enterRestricted
  			ifTrue: [SecurityManager default enterRestrictedMode
  				ifFalse:
  					[preStream close.
  					^ self]]].
  
  	localDir := Project squeakletDirectory.
  	aFileName ifNotNil: [
  		(aDirectoryOrNil isNil or: [aDirectoryOrNil pathName
  ~= localDir pathName]) ifTrue: [
  			localDir deleteFileNamed: aFileName.
  			(localDir fileNamed: aFileName) binary
  				nextPutAll: preStream contents;
  				close.
  		].
  	].
  	morphOrList := projStream asUnZippedStream.
  	preStream sleep.		"if ftp, let the connection close"
  	ProgressNotification  signal: '3:unzipped'.
  	ResourceCollector current: ResourceCollector new.
  	baseChangeSet := ChangeSet current.
  	self useTempChangeSet.		"named zzTemp"
  	"The actual reading happens here"
  	substituteFont := Preferences standardEToysFont copy.
  	numberOfFontSubstitutes := 0.
  	exceptions := Set new.
  	[[morphOrList := morphOrList fileInObjectAndCodeForProject]
  		on: FontSubstitutionDuringLoading do: [ :ex |
  				exceptions add: ex.
  				numberOfFontSubstitutes :=
  numberOfFontSubstitutes + 1.
  				ex resume: substituteFont ]]
  			ensure: [ ChangeSet  newChanges: baseChangeSet].
  	mgr := ResourceManager new initializeFrom: ResourceCollector current.
  	mgr fixJISX0208Resource.
  	mgr registerUnloadedResources.
  	archive ifNotNil:[mgr preLoadFromArchive: archive cacheName:
  aFileName].
  	(preStream respondsTo: #close) ifTrue:[preStream close].
  	ResourceCollector current: nil.
  	ProgressNotification  signal: '4:filedIn'.
  	ProgressNotification  signal: '9999 about to enter project'.
  		"the hard part is over"
  	(morphOrList isKindOf: ImageSegment) ifTrue: [
  		proj := morphOrList arrayOfRoots
  			detect: [:mm | mm isKindOf: Project]
  			ifNone: [^self inform: 'No project found in
  this file'].
  		proj projectParameters at: #substitutedFont put: (
  			numberOfFontSubstitutes > 0
  				ifTrue: [substituteFont]
  				ifFalse: [#none]).
  		proj projectParameters at: #MultiSymbolInWrongPlace put: false.
  			"Yoshiki did not put MultiSymbols into
  outPointers in older images!!"
  		morphOrList arrayOfRoots do: [:obj |
  			obj fixUponLoad: proj seg: morphOrList "imageSegment"].
  		(proj projectParameters at: #MultiSymbolInWrongPlace) ifTrue: [
  			morphOrList arrayOfRoots do: [:obj | (obj
  isKindOf: Set) ifTrue: [obj rehash]]].
  
  		proj resourceManager: mgr.
  		"proj versionFrom: preStream."
  		proj lastDirectory: aDirectoryOrNil.
  		proj setParent: Project current.
  		projectsToBeDeleted := OrderedCollection new.
  		existingView ifNil: [
  			ChangeSet allChangeSets add: proj changeSet.
  			Project current openProject: proj.
  				"Note: in MVC we get no further than the above"
  		] ifNotNil: [
  			(existingView project isKindOf: DiskProxy) ifFalse: [
  				existingView project changeSet name: 
  ChangeSet defaultName.
  				projectsToBeDeleted add: existingView project.
  			].
  			(existingView owner isSystemWindow) ifTrue: [
  				existingView owner model: proj
  			].
  			existingView project: proj.
  		].
  		ChangeSet allChangeSets add: proj changeSet.
  		Project current projectParameters
  			at: #deleteWhenEnteringNewProject
  			ifPresent: [ :ignored |
  				projectsToBeDeleted add: Project current.
  				Project current removeParameter:
  #deleteWhenEnteringNewProject.
  			].
  		projectsToBeDeleted isEmpty ifFalse: [
  			proj projectParameters
  				at: #projectsToBeDeleted
  				put: projectsToBeDeleted.
  		].
  		^ ProjectEntryNotification signal: proj
  	].
+ 	Project current openViewAndEnter: morphOrList
- 
- 	(morphOrList isKindOf: SqueakPage) ifTrue: [
- 		morphOrList := morphOrList contentsMorph
- 	].
- 	(morphOrList isKindOf: PasteUpMorph) ifFalse:
- 		[^ self inform: 'This is not a PasteUpMorph or
- exported Project.' translated].
- 	(MorphicProject openViewOn: morphOrList) enter
  !




More information about the Squeak-dev mailing list