[etoys-dev] Etoys: Etoys-Richo.103.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Feb 6 15:17:46 EST 2012


Ricardo Moran uploaded a new version of Etoys to project Etoys:
http://source.squeak.org/etoys/Etoys-Richo.103.mcz

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

Name: Etoys-Richo.103
Author: Richo
Time: 6 February 2012, 5:16:57 pm
UUID: 84503c98-7c83-064f-957f-5bacf093d22e
Ancestors: Etoys-kfr.102

Sixteen items for Squeakland 2012:

11. On Add Variable: Show options for value type - to make it easier to discover different types besides number (Ex: player, color, etc).

=============== Diff against Etoys-kfr.102 ===============

Item was changed:
  ----- Method: Player>>addInstanceVariable (in category 'slots-user') -----
  addInstanceVariable
  	"Offer the user the opportunity to add an instance variable, and if he goes through with it, actually add it."
  
  	| itsName initialValue typeChosen usedNames initialAnswer setterSelector originalString |
+ 	usedNames := self class instVarNames.
- 	usedNames _ self class instVarNames.
  
+ 	initialAnswer := Utilities keyLike: ('var' translated, (usedNames size + 1) asString)  satisfying: [:aKey | (usedNames includes: aKey) not].
- 	initialAnswer _ Utilities keyLike: ('var' translated, (usedNames size + 1) asString)  satisfying: [:aKey | (usedNames includes: aKey) not].
  
+ 	originalString := FillInTheBlank request: 'name for new variable: ' translated initialAnswer: initialAnswer.
- 	originalString _ FillInTheBlank request: 'name for new variable: ' translated initialAnswer: initialAnswer.
  Cursor wait showWhile: [
  	originalString isEmptyOrNil ifTrue: [^ self].
+ 	itsName := ScriptingSystem acceptableSlotNameFrom: originalString forSlotCurrentlyNamed: nil asSlotNameIn: self world: self costume world.
- 	itsName _ ScriptingSystem acceptableSlotNameFrom: originalString forSlotCurrentlyNamed: nil asSlotNameIn: self world: self costume world.
  
   	itsName size == 0 ifTrue: [^ self].	
  	self assureUniClass.
+ 	typeChosen := self askUserForNewTypeFor: itsName.
- 	typeChosen _ self initialTypeForSlotNamed: itsName.
  	self slotInfo at: itsName put: (SlotInformation new initialize type: typeChosen).
+ 	initialValue := self initialValueForSlotOfType: typeChosen.
- 	initialValue _ self initialValueForSlotOfType: typeChosen.
  	self addInstanceVarNamed: itsName withValue: initialValue.
  	self compileInstVarAccessorsFor: itsName.
+ 	setterSelector := Utilities setterSelectorFor: itsName.
- 	setterSelector _ Utilities setterSelectorFor: itsName.
  	((self class allSubInstances copyWithout: self) reject: [:e | e isSequentialStub]) do:
  		[:anInstance | anInstance perform: setterSelector with: initialValue].
  	self regenerateScripts.
+ 	self updateAllViewersAndForceToShow: ScriptingSystem nameForInstanceVariablesCategory.
- 	self updateAllViewersAndForceToShow: ScriptingSystem nameForInstanceVariablesCategory
  ]!

Item was added:
+ ----- Method: Player>>askUserForNewTypeFor: (in category 'slots-user') -----
+ askUserForNewTypeFor: slotName
+ 	| typeChoices menuCaption |
+ 	typeChoices := Vocabulary typeChoices asOrderedCollection.
+ 	[self costume renderedMorph defaultPatch]
+ 		on:Exception
+ 		do:[ typeChoices remove: #Patch ifAbsent: [typeChoices]].
+ 	menuCaption := 'Choose the TYPE
+ for {1}
+ ' translated, slotName, '
+ (currently {2})' translated format: {slotName. (self slotInfoAt: slotName) type translated}.
+ 	^ (SelectionMenu 
+ 			labelList: (typeChoices collect: [:t | t translated]) 
+ 			lines: #() 
+ 			selections: typeChoices) 
+ 				startUpWithCaption: menuCaption.!

Item was changed:
  ----- Method: Player>>chooseSlotTypeFor: (in category 'slots-user') -----
  chooseSlotTypeFor: aGetter
  	"Let the user designate a type for the slot associated with the given getter"
  
+ 	| typeChosen slotName |
+ 	slotName := Utilities inherentSelectorForGetter: aGetter.
+ 	typeChosen := self askUserForNewTypeFor: slotName.
- 	| typeChoices typeChosen slotName |
- 	slotName _ Utilities inherentSelectorForGetter: aGetter.
- 	typeChoices _ Vocabulary typeChoices asOrderedCollection.
- 	[self costume renderedMorph defaultPatch] on:Exception do:[ typeChoices remove: #Patch ifAbsent: [typeChoices]].
- 	typeChosen _ (SelectionMenu labelList: (typeChoices collect: [:t | t translated]) lines: #() selections: typeChoices) startUpWithCaption: 
- 		('Choose the TYPE
- for {1}
- ' translated, slotName, '
- (currently {2})' translated format: {slotName. (self slotInfoAt: slotName) type translated}).
  	typeChosen isEmptyOrNil ifTrue: [^ self].
  	(self typeForSlot: slotName) capitalized = typeChosen ifTrue: [^ self].
  
  	(self slotInfoAt: slotName) type: typeChosen.
  	self class allInstancesDo:   "allSubInstancesDo:"
  		[:anInst | anInst instVarNamed: slotName asString put: 
  			(anInst valueOfType: typeChosen from: (anInst instVarNamed: slotName))].
  	self updateAllViewers.	"does siblings too"
  	self changeTypesInWatchersOf: slotName.  "does siblings too"
  	
  !



More information about the etoys-dev mailing list