[squeak-dev] The Trunk: System-mt.706.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Feb 27 10:45:47 UTC 2015


Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-mt.706.mcz

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

Name: System-mt.706
Author: mt
Time: 27 February 2015, 11:45:09.18 am
UUID: 3175d70c-e137-1b40-91aa-4df3c1228235
Ancestors: System-mt.705

Re-activated possibility to have multiple categories for a single preference. Worked for old-style preferences, now works again for pragma-style preferences. Use #categoryList: instead of #category: in the pragma and provide an array of strings (or symbols).

=============== Diff against System-mt.705 ===============

Item was changed:
  ----- Method: Preferences class>>prefEvent: (in category 'dynamic preferences') -----
  prefEvent: anEvent
  	"Check if this system event defines or removes a preference.
  	TODO: Queue the event and handle in background process. 
  	There is zero reason to be so eager here."
  	| aClass aSelector prefSymbol method |
  	(anEvent itemKind = SystemChangeNotifier classKind and: [anEvent isRemoved])
  		ifTrue:[self removePreferencesFor: anEvent item].
  	anEvent itemKind = SystemChangeNotifier methodKind ifTrue:[
  		aClass := anEvent itemClass.
  		aClass isMeta ifFalse:[^self]. "ignore instance methods"
  		aClass := aClass theNonMetaClass.
  		aSelector := anEvent itemSelector.
  		(anEvent isRemoved or:[anEvent isModified]) ifTrue:[
  			prefSymbol := (aClass name,'>>', aSelector) asSymbol.
  			self accessDictionaryOfPreferencesIn: [ :dictionaryOfPreferences |
  				dictionaryOfPreferences removeKey: prefSymbol ifAbsent:[] ] ].
  		(anEvent isAdded or:[anEvent isModified]) ifTrue:[
  			method := anEvent item.
  			method pragmas do:[:pragma| | aPreference aPrefSymbol |
+ 				((pragma keyword == #preference:category:description:type:)
+ 					or: [pragma keyword == #preference:categoryList:description:type:]) ifTrue:[
+ 						aPrefSymbol := (aClass name,'>>', method selector) asSymbol.
+ 						aPreference := self 
+ 							preference: pragma arguments first
+ 							category: pragma arguments second 
+ 							description: pragma arguments third
+ 							type: pragma arguments fourth.
+ 						aPreference 
+ 							provider: aClass 
+ 							getter: method selector 
+ 							setter: method selector asMutator.
+ 						self accessDictionaryOfPreferencesIn: [ :dictionaryOfPreferences |
+ 							dictionaryOfPreferences at: aPrefSymbol put: aPreference ] ] ] ] ].
- 				pragma keyword == #preference:category:description:type: ifTrue:[
- 					aPrefSymbol := (aClass name,'>>', method selector) asSymbol.
- 					aPreference := self 
- 						preference: pragma arguments first
- 						category: pragma arguments second 
- 						description: pragma arguments third
- 						type: pragma arguments fourth.
- 					aPreference 
- 						provider: aClass 
- 						getter: method selector 
- 						setter: method selector asMutator.
- 					self accessDictionaryOfPreferencesIn: [ :dictionaryOfPreferences |
- 						dictionaryOfPreferences at: aPrefSymbol put: aPreference ] ] ] ] ].
  !



More information about the Squeak-dev mailing list