'From etoys3.0 of 24 February 2008 [latest update: #1921] on 16 March 2008 at 4:01:23 am'! "Change Set: SISSAvoidNameCrash-yo Date: 16 March 2008 Author: Yoshiki Ohshima Loaded project will have suffix if there is already one with the same name."! !ProjectLoading class methodsFor: 'private' stamp: 'yo 3/16/2008 03:58'! loadSexpProjectDict: dict stream: preStream fromDirectory: aDirectoryOrNil withProjectView: existingView | archive anObject newProj d member b s memberStream members newSet allNames realName | (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. newProj setChangeSet: newSet. newSet ifNotNil: [newProj setChangeSet: newSet]. 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/16/2008 03:58'! openSexpProjectDict: dict stream: preStream fromDirectory: aDirectoryOrNil withProjectView: existingView | archive anObject newProj d member b s memberStream members newSet allNames realName | (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: [newProj setChangeSet: newSet]. 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]. ! !