[etoys-dev] Etoys: Etoys-kfr.70.mcz
Bert Freudenberg
bert at freudenbergs.de
Sun May 22 18:49:52 EDT 2011
Hi Karl,
this breaks all viewers because the method ScriptingSystem>>commandFeedback is missing. PLease try updating from a clean Etoys-To-Go to witness.
I just published an update, which unfortunately is broken because of this. Luckily, I wrote up what I did so far so you can do the next one :)
http://etoys.squeak.org/svn/trunk/Documentation/Release-HowTo.txt
I also made a screen cast:
http://www.youtube.com/watch?v=rUzrfjP4Jck
This takes only 10 minutes, and you can do it even quicker if you don't have to talk while doing it ;)
- Bert -
On 22.05.2011, at 18:00, commits at source.squeak.org wrote:
> Karl Ramberg uploaded a new version of Etoys to project Etoys:
> http://source.squeak.org/etoys/Etoys-kfr.70.mcz
>
> ==================== Summary ====================
>
> Name: Etoys-kfr.70
> Author: kfr
> Time: 22 May 2011, 8:00:42 pm
> UUID: cdee253f-af6d-9b46-8493-464179d48432
> Ancestors: Etoys-kfr.69
>
> Mouseover Feedback of a phrase tile is wrong
> http://tracker.squeakland.org/browse/SQ-62
>
> =============== Diff against Etoys-kfr.69 ===============
>
> Item was changed:
> ----- Method: CategoryViewer>>addColorSeesDetailTo: (in category 'entries') -----
> addColorSeesDetailTo: aRow
> "Special-casee code for the boolean-valued phrase variously known as is-over-color or sees-color."
> + | hotTileForSelf colorMorph |
> - | hotTileForSelf m |
> (aRow submorphs last) delete.
> aRow addMorphBack: (hotTileForSelf _ ColorSeerTile new showPalette: false; yourself).
> + aRow addMorphBack: (colorMorph _ ColorTileMorph new showPalette: false;
> - aRow addMorphBack: (m _ ColorTileMorph new showPalette: false;
> typeColor: (ScriptingSystem colorForType: #Color); yourself).
> + colorMorph colorSwatch color: Color blue.
> + hotTileForSelf on: #mouseEnter send: #addGetterFeedback to: aRow.
> - m colorSwatch color: Color blue.
> - hotTileForSelf on: #mouseEnter send: #addGetterFeedback to: aRow.
> hotTileForSelf on: #mouseLeave send: #removeHighlightFeedback to: aRow.
> hotTileForSelf on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
>
> hotTileForSelf on: #mouseDown send: #makeGetter:event:from:
> to: self
> withValue: (Array with: #color:sees: with: #Boolean).
>
> + colorMorph on: #mouseEnter send: #addGetterFeedback to: aRow.
> + colorMorph on: #mouseLeave send: #removeHighlightFeedback to: aRow.
> + colorMorph on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
> +
> + colorMorph on: #mouseDown send: #makeGetter:event:from:
> + to: self
> + withValue: (Array with: #color:sees: with: #Boolean).
> +
> aRow addMorphBack: (Morph new extent: 0@(aRow height)).
> !
>
> Item was changed:
> ----- Method: CategoryViewer>>addIsOverColorDetailTo: (in category 'entries') -----
> addIsOverColorDetailTo: aRow
> "Special-casee code for the boolean-valued phrase variously known as is-over-color or sees-color."
>
> + | hotTileForSelf |
> + aRow addMorphBack: (Morph new color: self color; extent: 0 at 10). "spacer"
> + hotTileForSelf _ ColorTileMorph new showPalette: false;
> - | m |
> - aRow addMorphBack: (Morph new color: self color; extent: 2 at 10). "spacer"
> - m _ ColorTileMorph new showPalette: false;
> typeColor: (ScriptingSystem colorForType: #Color); yourself.
> + hotTileForSelf colorSwatch color: Color blue.
> + hotTileForSelf on: #mouseEnter send: #addGetterFeedback to: aRow.
> + hotTileForSelf on: #mouseLeave send: #removeHighlightFeedback to: aRow.
> + hotTileForSelf on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
> + hotTileForSelf on: #mouseDown send: #makeGetter:event:from:
> + to: self
> + withValue: (Array with: #seesColor: with: #Color).
> + aRow addMorphBack: hotTileForSelf.
> - m colorSwatch color: Color blue.
> - aRow addMorphBack: (m _ ColorTileMorph new showPalette: false;
> - typeColor: (ScriptingSystem colorForType: #Color); yourself).
>
>
>
> -
> "The following commented-out code put a readout up; the readout was very nice, but was very consumptive of cpu time, which is why the is-over-color tile got removed from the viewer long ago. Now is-over-color is reinstated to the viewer, minus the expensive readout..."
>
> " aRow addMorphBack: (AlignmentMorph new beTransparent).
> readout _ UpdatingStringMorphWithArgument new
> target: scriptedPlayer; getSelector: #seesColor:; growable: false; putSelector: nil;
> argumentTarget: clrTile colorSwatch argumentGetSelector: #color.
> readout useDefaultFormat.
> aTile _ StringReadoutTile new typeColor: Color lightGray lighter.
> aTile addMorphBack: readout.
> aRow addMorphBack: aTile.
> aTile setLiteralTo: (scriptedPlayer seesColor: clrTile colorSwatch color) printString width: 30"!
>
> Item was changed:
> ----- Method: CategoryViewer>>addPlayerArgumentTo: (in category 'entries') -----
> addPlayerArgumentTo: aRow
> "Add, delimited by spacer morphs, a player-valued TileMorph to the row provided."
>
> + | aTileToRefer |
> aRow addMorphBack: (Morph new extent: 0 at 0). "spacer (Is this spacer really needed??? - takashi)"
> + aTileToRefer := self presenter standardPlayer tileToRefer.
> + aTileToRefer on: #mouseEnter send: #addGetterFeedback to: aRow.
> + aTileToRefer on: #mouseLeave send: #removeHighlightFeedback to: aRow.
> + aTileToRefer on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
> + aRow addMorphBack: aTileToRefer .
> - aRow addMorphBack: self presenter standardPlayer tileToRefer.
> aRow addMorphBack: (AlignmentMorph new beTransparent). "flexible spacer"
>
> !
>
> Item was changed:
> ----- Method: CategoryViewer>>phraseForVariableFrom: (in category 'entries') -----
> phraseForVariableFrom: aMethodInterface
> "Return a structure consisting of tiles and controls and a readout representing a 'variable' belonging to the player, complete with an appropriate readout when indicated. Slightly misnamed in that this path is used for any methodInterface that indicates an interesting resultType."
>
> + | anArrow slotName getterButton aRow doc setter hotTileForSelf spacer readOut aTileToRefer |
> - | anArrow slotName getterButton aRow doc setter hotTileForSelf spacer |
> Preferences universalTiles ifTrue: [^ self universalTilesPhraseForVariableFrom: aMethodInterface].
>
> aRow _ ViewerLine newRow
> elementSymbol: (slotName _ aMethodInterface selector);
> wrapCentering: #center;
> cellPositioning: #leftCenter.
>
> (self wantsInfoButtonFor: slotName)
> ifFalse:
> [aRow addMorphBack: ScriptingSystem buttonSpacer]
> ifTrue:
> [aRow addMorphBack: (self infoButtonFor: slotName)].
>
> aRow addMorphBack: self spacerAfterButton.
>
> hotTileForSelf _ self tileForSelf bePossessive.
> hotTileForSelf on: #mouseDown send: #makeGetter:event:from:
> to: self
> withValue: (Array with: aMethodInterface selector with: aMethodInterface resultType).
> aRow addMorphBack: hotTileForSelf.
>
> aRow addMorphBack: (spacer _ Morph new color: self color; extent: 0 at 0).
> spacer on: #mouseEnter send: #addGetterFeedback to: aRow.
> spacer on: #mouseLeave send: #removeHighlightFeedback to: aRow.
> spacer on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
> spacer on: #mouseDown send: #makeGetter:event:from:
> to: self
> withValue: (Array with: aMethodInterface selector with: aMethodInterface resultType).
> hotTileForSelf on: #mouseEnter send: #addGetterFeedback to: aRow.
> hotTileForSelf on: #mouseLeave send: #removeHighlightFeedback to: aRow.
> hotTileForSelf on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
>
> getterButton _ self getterButtonFor: aMethodInterface selector type: aMethodInterface resultType.
> aRow addMorphBack: getterButton.
> getterButton on: #mouseEnter send: #addGetterFeedback to: aRow.
> getterButton on: #mouseLeave send: #removeHighlightFeedback to: aRow.
> getterButton on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
> (doc _ aMethodInterface documentation) ifNotNil:
> [getterButton setBalloonText: doc].
>
> (slotName == #seesColor:) ifTrue:
> [self addIsOverColorDetailTo: aRow.
> ^ aRow].
>
> (slotName == #color:sees:) ifTrue:
> [self addColorSeesDetailTo: aRow.
> ^ aRow].
>
> (#(touchesA: overlaps: overlapsAny: distanceToPlayer: bearingTo: bearingFrom:) includes: slotName) ifTrue:
> + [aRow addMorphBack: (Morph new extent: 0 at 0). "spacer (Is this spacer really needed??? - takashi)"
> + aTileToRefer := self presenter standardPlayer tileToRefer.
> + aTileToRefer on: #mouseEnter send: #addGetterFeedback to: aRow.
> + aTileToRefer on: #mouseLeave send: #removeHighlightFeedback to: aRow.
> + aTileToRefer on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
> + aTileToRefer on: #mouseDown send: #makeGetter:event:from:
> + to: self
> + withValue: (Array with: aMethodInterface selector with: aMethodInterface resultType).
> + aRow addMorphBack: aTileToRefer .
> + aRow addMorphBack: (AlignmentMorph new beTransparent). "flexible spacer"
> - [self addPlayerArgumentTo: aRow.
> ^ aRow].
>
> aRow addMorphBack: VariableSpacer new.
> (setter _ aMethodInterface companionSetterSelector) ifNotNil:
> [aRow addMorphBack: (Morph new color: self color; extent: 2 at 10). " spacer"
> anArrow _ self arrowSetterButton: #makeSetter:from:forPart:
> args: (Array with: slotName with: aMethodInterface resultType).
> anArrow beTransparent.
> anArrow on: #mouseEnter send: #addSetterFeedback to: aRow.
> anArrow on: #mouseLeave send: #removeHighlightFeedback to: aRow.
> anArrow on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
> aRow addMorphBack: anArrow].
>
> (#(color:sees: copy touchesA: overlaps: overlapsAny: getTurtleAt: getTurtleOf:) includes: slotName) ifFalse:
> [aMethodInterface wantsReadoutInViewer ifTrue:
> + [readOut := (self readoutFor: slotName type: aMethodInterface resultType readOnly: setter isNil getSelector: aMethodInterface selector putSelector: setter).
> + readOut on: #mouseEnter send: #addSetterFeedback to: aRow.
> + readOut on: #mouseLeave send: #removeHighlightFeedback to: aRow.
> + readOut on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
> + readOut on: #mouseDown send: #makeGetter:event:from:
> + to: self
> + withValue: (Array with: aMethodInterface selector with: aMethodInterface resultType).
> + aRow addMorphBack: readOut.]].
> - [aRow addMorphBack: (self readoutFor: slotName type: aMethodInterface resultType readOnly: setter isNil getSelector: aMethodInterface selector putSelector: setter)]].
> anArrow ifNotNil: [anArrow step].
> ^ aRow!
>
> Item was changed:
> ----- Method: CompoundTileMorph>>addCommandFeedback: (in category 'miscellaneous') -----
> addCommandFeedback: evt
> "Add screen feedback showing what would be torn off in a drag"
>
> | aMorph |
> +
> aMorph _ RectangleMorph new bounds: (self bounds).
> + aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem commandFeedback; lock.
> - aMorph beTransparent; borderWidth: 2; borderColor: (Color r: 1.0 g: 0.548 b: 0.452); lock.
> ActiveWorld addHighlightMorph: aMorph for: self outmostScriptEditor!
>
> Item was changed:
> ----- Method: PhraseTileForTest>>addCommandFeedback: (in category 'as yet unclassified') -----
> addCommandFeedback: evt
> "Add screen feedback showing what would be torn off in a drag"
>
> + | aMorph |
> - | aMorph rect |
> (self owner owner isMemberOf: PhraseTileMorph) ifTrue: [self owner owner addCommandFeedback: evt. ^ self].
> + aMorph _ RectangleMorph new bounds: ((self topLeft - (2 at 1)) corner: (self bottomRight) + (2 at 1)).
> + aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem commandFeedback; lock.
> - rect _ self bounds.
> - aMorph _ RectangleMorph new bounds: rect.
> - aMorph beTransparent; borderWidth: 2; borderColor: (Color r: 1.0 g: 0.548 b: 0.452); lock.
> ActiveWorld addHighlightMorph: aMorph for: self outmostScriptEditor!
>
> Item was changed:
> ----- Method: PhraseTileForTimesRepeat>>addCommandFeedback: (in category 'hilighting') -----
> addCommandFeedback: evt
> "Add screen feedback showing what would be torn off in a drag"
>
> + | aMorph |
> +
> - | aMorph rect |
> (self owner owner isMemberOf: PhraseTileMorph) ifTrue: [self owner owner addCommandFeedback: evt. ^ self].
> + aMorph _ RectangleMorph new bounds: ((self topLeft - (2 at 1)) corner: (self bottomRight) + (2 at 1)).
> + aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem commandFeedback; lock.
> - rect _ self bounds.
> - aMorph _ RectangleMorph new bounds: rect.
> - aMorph beTransparent; borderWidth: 2; borderColor: (Color r: 1.0 g: 0.548 b: 0.452); lock.
> ActiveWorld addHighlightMorph: aMorph for: self outmostScriptEditor!
>
> Item was changed:
> ----- Method: PhraseTileMorph>>addCommandFeedback: (in category 'hilighting') -----
> addCommandFeedback: evt
> "Add screen feedback showing what would be torn off in a drag"
>
> + | aMorph |
> - | aMorph rect inHotZone |
> (self owner owner isMemberOf: PhraseTileMorph)
> ifTrue: [self owner owner addCommandFeedback: evt. ^ self].
> + aMorph _ RectangleMorph new bounds: ((self topLeft - (2 at 1)) corner: ((submorphs at: (2 max: submorphs size)) bottomRight + (2 at 1))).
> + "inHotZone _ evt ifNil: [true] ifNotNil: [rect containsPoint: evt cursorPoint]."
> + aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem commandFeedback; lock.
> - rect _ self topLeft corner: (submorphs at: (2 min: submorphs size)) bottomRight.
> - inHotZone _ evt ifNil: [true] ifNotNil: [rect containsPoint: evt cursorPoint].
> - aMorph _ RectangleMorph new bounds: rect; beTransparent; borderWidth: 2.
> - aMorph borderColor: (Color r: 1.0 g: 0.548 b: 0.452); lock.
> ActiveWorld addHighlightMorph: aMorph for: self outmostScriptEditor!
>
> Item was changed:
> ----- Method: TileMorph>>handlesMouseOver: (in category 'event handling') -----
> handlesMouseOver: evt
> ^ self isPopArrowNeeded
> + or: [^super handlesMouseOver: evt]!
> - or: [super handlesMouseOver: evt]!
>
> Item was changed:
> ----- Method: TileMorph>>mouseEnter: (in category 'event handling') -----
> mouseEnter: evt
> +
> + .
> + super mouseEnter:evt.
> + ^self showPopArrows!
> - self showPopArrows!
>
> Item was changed:
> ----- Method: TileMorph>>mouseLeave: (in category 'event handling') -----
> mouseLeave: evt
> "When the mouse is leaving and next object is not a pop arrow, remove
> pop arrows."
> | popArrows vpanel hpanel |
> popArrows := evt hand
> valueOfProperty: #popArrows
> + ifAbsent: [^super mouseLeave: evt].
> - ifAbsent: [^ self].
> vpanel := popArrows second.
> hpanel := popArrows third.
> (vpanel notNil
> and: [vpanel containsPoint: evt position])
> + ifTrue: [^super mouseLeave: evt].
> - ifTrue: [^ self].
> (hpanel notNil
> and: [hpanel containsPoint: evt position])
> + ifTrue: [^super mouseLeave: evt].
> + self hidePopArrows.
> + ^super mouseLeave: evt!
> - ifTrue: [^ self].
> - self hidePopArrows!
>
> Item was changed:
> ----- Method: TimesRepeatTile>>numberOfTimesToRepeatPart (in category 'access') -----
> numberOfTimesToRepeatPart
> "Answer the TilePadMorph which holds the tiles defining the number of times to repeat"
>
> ^ timesRow timesPad !
>
> Item was changed:
> ----- Method: TimesRepeatTile>>storeCodeOn:indent: (in category 'code generation') -----
> storeCodeOn: aStream indent: tabCount
> "Store code representing the receiver on the stream, obeying the tab state."
>
> aStream nextPutAll: '(('.
> self numberOfTimesToRepeatPart submorphs
> ifEmpty:
> [aStream nextPutAll: '0']
> ifNotEmpty:
> [self numberOfTimesToRepeatPart storeCodeOn: aStream indent: tabCount + 2].
> aStream nextPutAll: ' ) asInteger max: 0) timesRepeat:'.
> tabCount + 1 timesRepeat: [aStream tab].
> aStream nextPutAll: '['; cr.
> self storeCodeBlockFor: whatToRepeatPart on: aStream indent: tabCount + 2.
> aStream nextPut: $].
> !
>
> Item was changed:
> ----- Method: TimesRepeatTile>>targetPartFor: (in category 'initialization') -----
> targetPartFor: aMorph
> "Return the row into which the given morph should be inserted."
>
> | centerY |
> centerY _ aMorph fullBounds center y.
> {self numberOfTimesToRepeatPart, whatToRepeatPart} do: [:m |
> (centerY <= m bounds bottom) ifTrue: [^ m]].
> ^ noPart
> !
>
> Item was changed:
> ----- Method: ViewerLine>>addCommandFeedback: (in category 'slot') -----
> addCommandFeedback: evt
> "Add screen feedback showing what would be torn off in a drag"
>
> | aMorph |
> + aMorph _ RectangleMorph new bounds: ((submorphs third topLeft - (2 at 1)) corner: (submorphs last bottomRight) + (2 at 1)).
> + aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem commandFeedback; lock.
> - aMorph _ RectangleMorph new bounds: ((submorphs third topLeft - (2 at 1)) corner: (submorphs last bottomRight) + (2 at 0)).
> - aMorph beTransparent; borderWidth: 2; borderColor: (Color r: 1.0 g: 0.548 b: 0.452); lock.
> ActiveWorld addHighlightMorph: aMorph for: nil!
>
> Item was changed:
> ----- Method: ViewerLine>>addGetterFeedback (in category 'slot') -----
> addGetterFeedback
> "Add feedback during mouseover of a getter"
>
> | aMorph endMorph |
> +
> endMorph _
> (#(touchesA: #seesColor: #overlaps: color:sees: overlapsAny: bearingTo: bearingFrom: distanceToPlayer:) includes: self elementSymbol)
> ifTrue:
> [submorphs seventh]
> ifFalse:
> [submorphs fifth].
> + aMorph _ RectangleMorph new bounds: ((submorphs third topLeft - (2 at 1)) corner: ((endMorph right @ submorphs third bottom) + (2 at 1))).
> + aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem getterFeedback; lock.
> - aMorph _ RectangleMorph new bounds: ((submorphs third topLeft - (2 at -1)) corner: (endMorph bottomRight + (2 at -1))).
> - aMorph height:(submorphs third height + 1).
> - aMorph beTransparent; borderWidth: 2; borderColor: (Color r: 1.0 g: 0.355 b: 0.839); lock.
> ActiveWorld addHighlightMorph: aMorph for: nil.
>
> "
> Color fromUser (Color r: 1.0 g: 0.355 b: 0.839)
> "!
>
> Item was changed:
> ----- Method: ViewerLine>>addSetterFeedback (in category 'slot') -----
> addSetterFeedback
> "Add screen feedback showing what would be torn off to make a setter"
>
> | aMorph |
> + aMorph _ RectangleMorph new bounds: ((submorphs third topLeft - (2 at 1)) corner: ((submorphs last right @ submorphs third bottom) + (2 at 1))).
> + aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem setterFeedback; lock.
> - aMorph _ RectangleMorph new bounds: ((submorphs third topLeft - (2 at 1)) corner: (submorphs last bottomRight) + (2 at 0)).
> - aMorph height:(submorphs third height + 1).
> - aMorph beTransparent; borderWidth: 2; borderColor: (Color r: 1.0 g: 0.548 b: 0.452); lock.
> ActiveWorld addHighlightMorph: aMorph for: nil!
More information about the etoys-dev
mailing list