'From etoys3.0 of 24 February 2008 [latest update: #1949] on 28 March 2008 at 5:53:15 pm'! !ProjectLoading class methodsFor: 'private' stamp: 'yo 3/28/2008 17:51'! loadSexpProjectDict: dict stream: preStream fromDirectory: aDirectoryOrNil withProjectView: existingView | archive anObject newProj d member b s memberStream members newSet allNames realName oldSet | (self checkStream: preStream) ifTrue: [^ self]. ProgressNotification signal: '0.2'. preStream reset. archive _ preStream isZipArchive ifTrue:[ZipArchive new readFrom: preStream] ifFalse:[nil]. members _ archive membersMatching: '*.cs'. members do: [:e | newSet _ ChangeSorter newChangesFromStream: e contentStream named: 'zzTemp', Time totalSeconds printString]. member _ (archive membersMatching: '*.sexp') first. memberStream _ member contentStream. (self checkSecurity: member name preStream: preStream projStream: memberStream) ifFalse: [^nil]. b _ String new: member uncompressedSize. s _ RWBinaryOrTextStream on: b. s binary. s nextPutAll: memberStream basicUpToEnd. s reset. d _ DataStream on: s. anObject _ d next sissReadObjectsAsEtoysProject. "anObject _ (MSExpParser parse: (archive membersMatching: '*.sexp') first contents with: #ksexp) sissReadObjects." anObject ifNil: [^ self]. (anObject isKindOf: PasteUpMorph) ifFalse: [^ World addMorph: anObject]. preStream close. ProgressNotification signal: '0.7'. newProj _ Project newMorphicOn: anObject. newSet ifNotNil: [oldSet _ newProj changeSet. newProj setChangeSet: newSet. ChangeSorter removeChangeSet: oldSet]. dict at: 'projectname' ifPresent: [:n | allNames _ Project allNames. realName _ Utilities keyLike: n satisfying: [:nn | (allNames includes: nn) not]. newProj renameTo: realName. ]. anObject valueOfProperty: #projectVersion ifPresentDo: [:v | newProj version: v]. ProgressNotification signal: '0.8'. ^ newProj. ! ! !ProjectLoading class methodsFor: 'private' stamp: 'yo 3/28/2008 17:53'! openSexpProjectDict: dict stream: preStream fromDirectory: aDirectoryOrNil withProjectView: existingView | archive anObject newProj d member b s memberStream members newSet allNames realName oldSet | (self checkStream: preStream) ifTrue: [^ self]. ProgressNotification signal: '0.2'. preStream reset. archive _ preStream isZipArchive ifTrue:[ZipArchive new readFrom: preStream] ifFalse:[nil]. members _ archive membersMatching: '*.cs'. members do: [:e | newSet _ ChangeSorter newChangesFromStream: e contentStream named: 'zzTemp', Time totalSeconds printString]. member _ (archive membersMatching: '*.sexp') first. memberStream _ member contentStream. (self checkSecurity: member name preStream: preStream projStream: memberStream) ifFalse: [^nil]. b _ String new: member uncompressedSize. s _ RWBinaryOrTextStream on: b. s binary. s nextPutAll: memberStream basicUpToEnd. s reset. d _ DataStream on: s. anObject _ d next sissReadObjectsAsEtoysProject. "anObject _ (MSExpParser parse: (archive membersMatching: '*.sexp') first contents with: #ksexp) sissReadObjects." anObject ifNil: [^ self]. (anObject isKindOf: PasteUpMorph) ifFalse: [^ World addMorph: anObject]. preStream close. ProgressNotification signal: '0.7'. newProj _ Project newMorphicOn: anObject. newSet ifNotNil: [oldSet _ newProj changeSet. newProj setChangeSet: newSet. ChangeSorter removeChangeSet: oldSet]. dict at: 'projectname' ifPresent: [:n | allNames _ Project allNames. realName _ Utilities keyLike: n satisfying: [:nn | (allNames includes: nn) not]. newProj renameTo: realName. ]. anObject valueOfProperty: #projectVersion ifPresentDo: [:v | newProj version: v]. ProgressNotification signal: '0.8'. ^ newProj ifNil: [self inform: 'No project found in this file' translated] ifNotNil: [ProjectEntryNotification signal: newProj]. ! !