[etoys-dev] Etoys: Etoys-kfr.12.mcz

commits at source.squeak.org commits at source.squeak.org
Sat May 29 07:57:46 EDT 2010


Karl Ramberg uploaded a new version of Etoys to project Etoys:
http://source.squeak.org/etoys/Etoys-kfr.12.mcz

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

Name: Etoys-kfr.12
Author: kfr
Time: 29 May 2010, 1:57:17 pm
UUID: b39ea6fc-84b9-f944-880d-2adcc2eac659
Ancestors: Etoys-Richo.11

Compute up/down arrow increments in NumberTiles from decimal places

=============== Diff against Etoys-Richo.11 ===============

Item was changed:
  ----- Method: Player>>arrowDeltaFor: (in category 'misc') -----
  arrowDeltaFor: aGetSelector
  	"Answer the arrowDelta to use in conjunction with a readout for aGetSelector, which will be of the form 'getXXX'"
  
+ 	(self slotInfoForGetter: aGetSelector) ifNotNilDo: [ :slotInfo |
+ 				^slotInfo floatPrecision].
  	costume ifNotNil:
  		[^ costume renderedMorph arrowDeltaFor: aGetSelector].
+ 	^ 1!
- 	^ 1
- 	
- 	"For the future, possibly:  If we want the SlotInformation for a user-defined slot to be able to specify a standard arrowDelta for that slot, we'd include something like the following... 
- 	| aSlotName slotInfo |
- 	aSlotName _ Utilities inherentSelectorForGetter: aGetSelector.
- 	(slotInfo _ self slotInfoAt: aSlotName ifAbsent: [nil]) ifNotNil:
- 		[^ slotInfo arrowDelta]."
- !

Item was added:
+ ----- Method: TileMorph>>decimalPlaces (in category 'mouse handling') -----
+ decimalPlaces
+ 	"Answer the number of decimal places of the contained number"
+ 
+ 	| readout |
+ 	(readout _ self findA: UpdatingStringMorph) ifNotNil: [^readout decimalPlaces ].
+ 	^0!

Item was changed:
  ----- Method: Player>>noteDecimalPlaces:forGetter: (in category 'misc') -----
  noteDecimalPlaces: aNumber forGetter: aGetter
  	"Note the given preference of decimal places for the given getter"
+ 	| slotInfo |
+ 	slotInfo _ self slotInfoAt: (Utilities inherentSelectorForGetter: aGetter).
+ 	slotInfo floatPrecision: (Utilities floatPrecisionForDecimalPlaces: aNumber).
- 
  	costume noteDecimalPlaces: aNumber forGetter: aGetter!

Item was changed:
  ----- Method: TileMorph>>arrowDelta (in category 'mouse handling') -----
  arrowDelta
  	"Answer the amount by which a number I display should increase at a time"
  
+ 	| readout |
+ 	(readout _ self findA: UpdatingStringMorph) ifNotNil: [^readout floatPrecision ].
+ 	^1!
- 	^  self valueOfProperty: #arrowDelta ifAbsent: [1]!

Item was changed:
  ----- Method: Player>>setPrecisionFor: (in category 'slots-user') -----
  setPrecisionFor: slotName 
  	"Set the precision for the given slot name"
  
  	| aList aMenu reply val aGetter places |
  	aGetter := Utilities getterSelectorFor: slotName.
+ 	places := Utilities decimalPlacesForFloatPrecision: (self getPrecisionFor: slotName).
- 	places := Utilities 
- 				decimalPlacesForFloatPrecision: (self defaultFloatPrecisionFor: aGetter).
  	aList := #('0' '1' '2' '3' '4' '5' '6' '7' '8' '9' '10').
  	aMenu := SelectionMenu labels: aList
  				selections: (aList collect: [:m | m asNumber]).
  	reply := aMenu 
  				startUpWithCaption: ('How many decimal places? (currently {1})' translated
  						format: {places}).
  	reply ifNotNil: 
  			[(self slotInfo includesKey: slotName) 
  				ifTrue: 
  					["it's a user slot"
  
  					(self slotInfoAt: slotName) 
  						floatPrecision: (Utilities floatPrecisionForDecimalPlaces: reply).
  					self class allInstancesDo: 
  							[:anInst | 
  							reply == 0 
  								ifFalse: 
  									[((val := anInst instVarNamed: slotName asString) isInteger) 
  										ifTrue: [anInst instVarNamed: slotName asString put: val asFloat]].
  							anInst updateAllViewers]]
  				ifFalse: 
  					["it's specifying a preference for precision on a system-defined numeric slot"
  
  					self noteDecimalPlaces: reply forGetter: aGetter.
  					self updateAllViewers]]!

Item was added:
+ ----- Method: Player>>getPrecisionFor: (in category 'slots-user') -----
+ getPrecisionFor: slotName 
+ 	"get the precision for the given slot name"
+ 
+ 	| aGetter places precision |
+ 	precision _ 1.
+ 	(self slotInfo includesKey: slotName) 
+ 				ifTrue: 
+ 					["it's a user slot"
+ 					precision _ (self slotInfoAt: slotName) floatPrecision]
+ 				ifFalse: 
+ 					["reference to system slots"
+ 					aGetter := Utilities getterSelectorFor: slotName.
+ 					self costume renderedMorph ifNotNilDo: [ :morph |
+ 						places _ morph decimalPlacesForGetter: aGetter.
+ 						precision _ Utilities floatPrecisionForDecimalPlaces: places ]].
+ 	^precision!



More information about the etoys-dev mailing list