[etoys-dev] Etoys: Etoys-kfr.70.mcz
commits at source.squeak.org
commits at source.squeak.org
Sun May 22 14:01:20 EDT 2011
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