'From etoys3.0 of 24 February 2008 [latest update: #2153] on 28 October 2008 at 3:32:02 pm'! "Change Set: newDatastore-bf Date: 28 October 2008 Author: Bert Freudenberg Cope with new Datastore using ByteArrays for Strings"! !SugarLauncher methodsFor: 'datastore' stamp: 'bf 10/28/2008 15:29'! getProperties: objectId | props | props := self dataStore getProperties: objectId. "Make sure the props we care about are strings" props at: 'title' ifPresent: [:value | props at: 'title' put: value asString utf8ToSqueak composeAccents]. props at: 'mime_type' ifPresent: [:value | props at: 'mime_type' put: value asString]. ^props! ! !SugarLauncher methodsFor: 'datastore' stamp: 'bf 10/28/2008 15:16'! resumeJournalEntry: id | props file title project mimetype | props := self getProperties: id. title := props at: 'title' ifAbsent: ['untitled' translated]. mimetype := props at: 'mime_type' ifAbsent: ['']. mimetype isEmpty ifTrue: [^self welcome: '']. mimetype = 'application/x-squeak-project' ifFalse: [ "Do not modify original non-project journal entry when later saving this project" parameters removeKey: 'OBJECT_ID' ifAbsent: []. "reuse drop code" WorldState addDeferredUIMessage: [ self open: id title: title mimetype: mimetype]. ^Project enterNew]. ProjectLoading showProgressBarDuring: [ Display fillWhite;forceToScreen. file := self getFile: id. "load project and close temp file (which will thus be deleted)" project := ProjectLoading loadName: ((title copyReplaceAll: '/' with: '\') contractTo: 64) stream: file fromDirectory: nil withProjectView: nil. file close. self monitorJournalEntry. self keepProperties: props for: project. project name: title. project projectParameterAt: #sugarAutoSave put: true. project enter]. ! ! !SugarLauncher methodsFor: 'datastore' stamp: 'bf 10/28/2008 15:16'! updatedJournalEntry: objectId "sent from DBus in background process" | props title | (self parameterAt: 'OBJECT_ID' ifAbsent: [^self]) = objectId ifTrue: [ props := [self getProperties: objectId] on: DBusError do: [^self]. title := props at: 'title' ifAbsent: [^self]. Project current name: title. self keepProperties: props for: Project current] ! ! !SugarLauncher methodsFor: 'chooser' stamp: 'bf 10/28/2008 15:17'! chooser: chooserId response: objectId self chooserDone: chooserId. WorldState addDeferredUIMessage: [ | props title mimetype | props := self getProperties: objectId. title := props at: 'title' ifAbsent: ['untitled' translated]. mimetype := props at: 'mime_type' ifAbsent: ['']. self open: objectId title: title mimetype: mimetype].! !