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@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@10). "spacer"
- hotTileForSelf _ ColorTileMorph new showPalette: false;
- | m |
- aRow addMorphBack: (Morph new color: self color; extent: 2@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@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@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@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@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.]].
anArrow ifNotNil: [anArrow step]. ^ aRow![aRow addMorphBack: (self readoutFor: slotName type: aMethodInterface resultType readOnly: setter isNil getSelector: aMethodInterface selector putSelector: setter)]].
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@1)) corner: (self bottomRight) + (2@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@1)) corner: (self bottomRight) + (2@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@1)) corner: ((submorphs at: (2 max: submorphs size)) bottomRight + (2@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].
vpanel := popArrows second. hpanel := popArrows third. (vpanel notNil and: [vpanel containsPoint: evt position])ifAbsent: [^ self].
ifTrue: [^super mouseLeave: evt].
(hpanel notNil and: [hpanel containsPoint: evt position])ifTrue: [^ self].
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@1)) corner: (submorphs last bottomRight) + (2@1)).
- aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem commandFeedback; lock.
- aMorph _ RectangleMorph new bounds: ((submorphs third topLeft - (2@1)) corner: (submorphs last bottomRight) + (2@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@1)) corner: ((endMorph right @ submorphs third bottom) + (2@1))).
- aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem getterFeedback; lock.
- aMorph _ RectangleMorph new bounds: ((submorphs third topLeft - (2@-1)) corner: (endMorph bottomRight + (2@-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@1)) corner: ((submorphs last right @ submorphs third bottom) + (2@1))).
- aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem setterFeedback; lock.
- aMorph _ RectangleMorph new bounds: ((submorphs third topLeft - (2@1)) corner: (submorphs last bottomRight) + (2@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!
Missing methods are in http://source.squeak.org/http://source.squeak.org/etoys/Morphic-kfr.63.mcz etoys/Morphic-kfr.63.mcz http://source.squeak.org/etoys/Morphic-kfr.63.mcz
I'll watch the screencast tonight :-)
Thanks for notifying
Karl
On Mon, May 23, 2011 at 12:49 AM, Bert Freudenberg bert@freudenbergs.dewrote:
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@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@10).
"spacer"
hotTileForSelf _ ColorTileMorph new showPalette: false;
| m |
aRow addMorphBack: (Morph new color: self color; extent: 2@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@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@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@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@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@1))
corner: (self bottomRight) + (2@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@1))
corner: (self bottomRight) + (2@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@1))
corner: ((submorphs at: (2 max: submorphs size)) bottomRight + (2@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@1)) corner: (submorphs last bottomRight) + (2@1)).
aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem
commandFeedback; lock.
aMorph _ RectangleMorph new bounds: ((submorphs third topLeft -
(2@1)) corner: (submorphs last bottomRight) + (2@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@1)) corner: ((endMorph right @ submorphs third bottom) + (2@1))).
aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem
getterFeedback; lock.
aMorph _ RectangleMorph new bounds: ((submorphs third topLeft - (2@-1))
corner: (endMorph bottomRight + (2@-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@1)) corner: ((submorphs last right @ submorphs third bottom) + (2@1 ))).
aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem
setterFeedback; lock.
aMorph _ RectangleMorph new bounds: ((submorphs third topLeft -
(2@1)) corner: (submorphs last bottomRight) + (2@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!
etoys-dev mailing list etoys-dev@squeakland.org http://lists.squeakland.org/mailman/listinfo/etoys-dev
etoys-dev@lists.squeakfoundation.org