[etoys-dev] Etoys: System-kfr.64.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Oct 24 17:25:16 EDT 2012
Karl Ramberg uploaded a new version of System to project Etoys:
http://source.squeak.org/etoys/System-kfr.64.mcz
==================== Summary ====================
Name: System-kfr.64
Author: kfr
Time: 24 October 2012, 11:24:27 pm
UUID: 6ee1e9a6-b91d-da44-a775-eec897e30213
Ancestors: System-bf.63
Register preferences as a file service and make storing and loading preferences a little more flexible.
=============== Diff against System-bf.63 ===============
Item was added:
+ ----- Method: Preferences class>>fileReaderServicesForFile:suffix: (in category 'services') -----
+ fileReaderServicesForFile: fullName suffix: suffix
+
+ ^(self registeredPreferencesFileSuffixes includes: suffix )
+ ifTrue: [ self services ]
+ ifFalse: [ #() ] !
Item was changed:
----- Method: Preferences class>>loadPreferencesFrom: (in category 'personalization') -----
+ loadPreferencesFrom: aFileName
- loadPreferencesFrom: aFileName
| stream params dict desktopColor |
+ stream := ReferenceStream oldFileNamed: aFileName.
+ params := stream next.
+ self
+ assert: (params isKindOf: IdentityDictionary).
- stream _ ReferenceStream fileNamed: aFileName.
- params _ stream next.
- self assert: (params isKindOf: IdentityDictionary).
params removeKey: #PersonalDictionaryOfPreferences.
+ dict := stream next.
+ self
+ assert: (dict isKindOf: IdentityDictionary).
+ desktopColor := stream next.
- dict _ stream next.
- self assert: (dict isKindOf: IdentityDictionary).
- desktopColor _ stream next.
stream close.
+ dict
+ keysAndValuesDo: [:key :value | (self
+ preferenceAt: key
+ ifAbsent: [])
+ ifNotNilDo: [:pref | pref preferenceValue: value preferenceValue]].
+ params
+ keysAndValuesDo: [:key :value | self setParameter: key to: value].
- dict keysAndValuesDo:
- [:key :value | (self preferenceAt: key ifAbsent: [nil]) ifNotNilDo:
- [:pref | pref preferenceValue: value preferenceValue]].
-
- params keysAndValuesDo: [ :key :value | self setParameter: key to: value ].
-
Smalltalk isMorphic
+ ifTrue: [World fillStyle: desktopColor]
+ ifFalse: [self desktopColor: desktopColor.
+ ScheduledControllers updateGray]!
- ifTrue: [ World fillStyle: desktopColor ]
- ifFalse: [ self desktopColor: desktopColor. ScheduledControllers updateGray ].
- !
Item was added:
+ ----- Method: Preferences class>>registeredPreferencesFileSuffixes (in category 'services') -----
+ registeredPreferencesFileSuffixes
+ ^{'prefs'}!
Item was changed:
----- Method: Preferences class>>restorePreferencesFromDisk (in category 'personalization') -----
restorePreferencesFromDisk
+ | result |
+ result := (FileList2 modalFileSelectorForSuffixes: #('prefs')) .
+ result ifNil: [^ self].
+ self restorePreferencesFromDisk: result fullName
+
- (FileDirectory default fileExists: 'my.prefs')
- ifTrue: [ Cursor wait showWhile: [
- [ self loadPreferencesFrom: 'my.prefs' ] on: Error do: [ :ex | self inform: 'there was an error restoring the preferences' translated]
- ] ]
- ifFalse: [ self inform: 'you haven''t saved your preferences yet!!' translated].
!
Item was added:
+ ----- Method: Preferences class>>restorePreferencesFromDisk: (in category 'personalization') -----
+ restorePreferencesFromDisk: aFile
+ Cursor wait
+ showWhile: [[self loadPreferencesFrom: aFile]
+ on: Error
+ do: [:ex | self inform: 'there was an error restoring the preferences' translated]]!
Item was added:
+ ----- Method: Preferences class>>serviceLoadPreferences (in category 'services') -----
+ serviceLoadPreferences
+ "Answer a service for loading preferences from disk"
+
+ ^ SimpleServiceEntry
+ provider: self
+ label: 'load preferences' translatedNoop
+ selector: #restorePreferencesFromDisk:
+ description: 'load preferences file from disk' translatedNoop
+ buttonLabel: 'load preferences' translatedNoop!
Item was added:
+ ----- Method: Preferences class>>services (in category 'services') -----
+ services
+ "Answer the receiver's services"
+
+ ^ Array with: self serviceLoadPreferences !
Item was changed:
----- Method: Preferences class>>storePreferencesIn: (in category 'personalization') -----
storePreferencesIn: aFileName
| stream |
#(Prevailing PersonalPreferences) do: [ :ea | Parameters removeKey: ea ifAbsent: []].
stream _ ReferenceStream fileNamed: aFileName.
stream nextPut: Parameters.
stream nextPut: DictionaryOfPreferences.
Smalltalk isMorphic
ifTrue: [ stream nextPut: World fillStyle ]
ifFalse: [ stream nextPut: DesktopColor ].
stream close.!
Item was changed:
----- Method: Preferences class>>storePreferencesToDisk (in category 'personalization') -----
storePreferencesToDisk
+ | newName |
+ newName := UIManager default request: 'Please confirm name for save...' initialAnswer: 'myPreferences'.
+ newName isEmpty
+ ifTrue: [^ self].
+ Cursor wait
+ showWhile: [[self storePreferencesIn: newName , '.prefs']
+ on: Error
+ do: [:ex | self inform: 'there was an error storing your preferences to disk. you probably already have stored your preferences' translated]]!
- Cursor wait showWhile: [
- [ self storePreferencesIn: 'my.prefs' ] on: Error do: [ :ex | self inform: 'there was an error storing your preferences to disk' translated]]!
More information about the etoys-dev
mailing list