[etoys-dev] Etoys: Etoys-kfr.99.mcz
karl ramberg
karlramberg at gmail.com
Fri Feb 3 18:38:16 EST 2012
On Sat, Feb 4, 2012 at 12:28 AM, Ricardo Moran <richi.moran at gmail.com> wrote:
> I'm *really* glad to see this getting in :)
>
> Also, I've been working on the #batchPenTrails issue and I think I got it
> solved now. I'll commit my changes to Etoys so that you can review them.
Cool.
Karl
>
> Thanks,
> Richo
>
> On Fri, Feb 3, 2012 at 7:41 PM, <commits at source.squeak.org> wrote:
>>
>> Spam detection software, running on the system "europa.mgmt.inetu.net",
>> has
>> identified this incoming email as possible spam. The original message
>> has been attached to this so you can view it (if it isn't spam) or label
>> similar future email. If you have any questions, see
>> the administrator of that system for details.
>>
>> Content preview: Karl Ramberg uploaded a new version of Etoys to project
>> Etoys:
>> http://source.squeak.org/etoys/Etoys-kfr.99.mcz ====================
>> Summary
>> ==================== Name: Etoys-kfr.99 Author: kfr Time: 3 February
>> 2012,
>> 11:41:17 pm UUID: 1b86a282-0433-9448-b74e-579b32ca4e32 Ancestors:
>> Etoys-kfr.98
>> [...]
>>
>> Content analysis details: (5.6 points, 5.0 required)
>>
>> pts rule name description
>> ---- ----------------------
>> --------------------------------------------------
>> 3.5 BAYES_99 BODY: Bayesian spam probability is 99 to 100%
>> [score: 1.0000]
>> 0.0 MISSING_MID Missing Message-Id: header
>> 1.2 INVALID_DATE Invalid Date: header (not RFC 2822)
>> 1.0 DATE_IN_PAST_12_24 Date: is 12 to 24 hours before Received: date
>> 3.8 TVD_STOCK1 BODY: TVD_STOCK1
>> 0.1 RDNS_NONE Delivered to trusted network by a host with no
>> rDNS
>> -3.9 AWL AWL: From: address is in the auto white-list
>>
>>
>>
>>
>> ---------- Forwarded message ----------
>> From: commits at source.squeak.org
>> To: etoys-dev at squeakland.org
>> Cc:
>> Date: Fri, 3 Feb 2012 22:41:56.469 0000
>> Subject: Etoys: Etoys-kfr.99.mcz
>> Karl Ramberg uploaded a new version of Etoys to project Etoys:
>> http://source.squeak.org/etoys/Etoys-kfr.99.mcz
>>
>> ==================== Summary ====================
>>
>> Name: Etoys-kfr.99
>> Author: kfr
>> Time: 3 February 2012, 11:41:17 pm
>> UUID: 1b86a282-0433-9448-b74e-579b32ca4e32
>> Ancestors: Etoys-kfr.98
>>
>> This is Ricardo Moran's implementation of a step-next-phrase feature in
>> etoy Scriptors, with minor curating by Scott Wallace.
>>
>> =============== Diff against Etoys-kfr.98 ===============
>>
>> Item was changed:
>> SystemOrganization addCategory: #'EToys-Kedama'!
>> SystemOrganization addCategory: #'Etoys-Buttons'!
>> SystemOrganization addCategory: #'Etoys-CustomEvents'!
>> SystemOrganization addCategory: #'Etoys-Experimental'!
>> SystemOrganization addCategory: #'Etoys-Help'!
>> SystemOrganization addCategory: #'Etoys-Outliner'!
>> SystemOrganization addCategory: #'Etoys-Protocols'!
>> SystemOrganization addCategory: #'Etoys-Protocols-Type Vocabularies'!
>> SystemOrganization addCategory: #'Etoys-Scratch'!
>> SystemOrganization addCategory: #'Etoys-Scripting'!
>> SystemOrganization addCategory: #'Etoys-Scripting Support'!
>> SystemOrganization addCategory: #'Etoys-Scripting Tiles'!
>> SystemOrganization addCategory: #'Etoys-Stacks'!
>> SystemOrganization addCategory: #'Etoys-StarSqueak'!
>> SystemOrganization addCategory: #'Etoys-Tile Scriptors'!
>> SystemOrganization addCategory: #'Etoys-Widgets'!
>> SystemOrganization addCategory: #'Etoys-SpeechBubbles'!
>> + SystemOrganization addCategory: #'Etoys-Debugger'!
>>
>> Item was added:
>> + ----- Method: CompoundTileMorph>>evaluateOn: (in category
>> '*etoys-debugger') -----
>> + evaluateOn: anEtoysDebugger
>> + ^ anEtoysDebugger evaluateTest: self!
>>
>> Item was added:
>> + ----- Method: CompoundTileMorph>>evaluateTestPart (in category
>> '*etoys-debugger') -----
>> + evaluateTestPart
>> + | condition |
>> + condition := testPart tiles at: 1 ifAbsent: [^ true].
>> + ^ Compiler evaluate: condition codeString
>> + for: condition associatedPlayer
>> + logged: false!
>>
>> Item was added:
>> + ----- Method: CompoundTileMorph>>noPart (in category '*etoys-debugger')
>> -----
>> + noPart
>> + ^ noPart!
>>
>> Item was added:
>> + ----- Method: CompoundTileMorph>>testPart (in category
>> '*etoys-debugger') -----
>> + testPart
>> + ^ testPart!
>>
>> Item was added:
>> + ----- Method: CompoundTileMorph>>yesPart (in category '*etoys-debugger')
>> -----
>> + yesPart
>> + ^ yesPart!
>>
>> Item was added:
>> + Object subclass: #EtoysDebugger
>> + instanceVariableNames: 'scriptEditor next timesToRepeat
>> highlighter'
>> + classVariableNames: ''
>> + poolDictionaries: ''
>> + category: 'Etoys-Debugger'!
>>
>> Item was added:
>> + ----- Method: EtoysDebugger class>>initialize (in category 'class
>> initialization') -----
>> + initialize
>> + "
>> + self initialize
>> + "
>> + | buttonForm buttonPressedForm |
>> + buttonForm := (Form
>> + extent: 30 at 30
>> + depth: 16
>> + fromArray: #( 0 0 0 0 0 26425 1731815225 1731815225 1731815225
>> 1731788800 0 0 0 0 0 0 0 0 0 1731815225 1731821567 2147450879 2147450879
>> 2147450879 2147444537 1731815225 0 0 0 0 0 0 0 26425 2147450879 2147450879
>> 2147450879 2147450879 2147450879 2147450879 2147450879 1731788800 0 0 0 0 0
>> 26425 1731821567 2147450879 2147450879 2147450879 2147450879 2147450879
>> 2147450879 2147450879 2147444537 1731788800 0 0 0 0 1731821567 2147450879
>> 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879
>> 2147450879 2147444537 0 0 0 26425 2147450879 2147450879 2147450879
>> 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879
>> 2147450879 1731788800 0 0 26425 2147450879 2147450879 2147450879 2147450879
>> 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879
>> 1731788800 0 0 1731821567 2147450879 2147450879 2147450879 2147450879
>> 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879
>> 2147444537 0 26425 2147450879 2147450879 2147450879 2147450879 2147418113
>> 98303 2147418113 2147450879 2147450879 2147450879 2147450879 2147450879
>> 2147450879 1731788800 26425 2147450879 2147450879 2147450879 2147450879
>> 2147418113 98303 2147418113 98303 2147450879 2147450879 2147450879
>> 2147450879 2147450879 1731788800 26425 2147450879 2147450879 2147450879
>> 2147450879 2147418113 98303 2147418113 65537 2147450879 2147450879
>> 2147450879 2147450879 2147450879 1731788800 1731821567 2147450879 2147450879
>> 2147450879 2147450879 2147418113 98303 2147418113 65537 98303 2147450879
>> 2147450879 2147450879 2147450879 2147444537 1731821567 2147450879 2147450879
>> 2147450879 2147450879 2147418113 98303 2147418113 65537 65537 2147450879
>> 2147450879 2147450879 2147450879 2147444537 1731821567 2147450879 2147450879
>> 2147450879 2147450879 2147418113 98303 2147418113 65537 65537 98303
>> 2147450879 2147450879 2147450879 2147444537 1731821567 2147450879 2147450879
>> 2147450879 2147450879 2147418113 98303 2147418113 65537 65537 65537
>> 2147450879 2147450879 2147450879 2147444537 1731821567 2147450879 2147450879
>> 2147450879 2147450879 2147418113 98303 2147418113 65537 65537 98303
>> 2147450879 2147450879 2147450879 2147444537 1731821567 2147450879 2147450879
>> 2147450879 2147450879 2147418113 98303 2147418113 65537 65537 2147450879
>> 2147450879 2147450879 2147450879 2147444537 1731821567 2147450879 2147450879
>> 2147450879 2147450879 2147418113 98303 2147418113 65537 98303 2147450879
>> 2147450879 2147450879 2147450879 2147444537 1731821567 2147450879 2147450879
>> 2147450879 2147450879 2147418113 98303 2147418113 65537 2147450879
>> 2147450879 2147450879 2147450879 2147450879 2147444537 26425 2147450879
>> 2147450879 2147450879 2147450879 2147418113 98303 2147418113 98303
>> 2147450879 2147450879 2147450879 2147450879 2147450879 1731788800 26425
>> 2147450879 2147450879 2147450879 2147450879 2147418113 98303 2147418113
>> 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879 1731788800
>> 26425 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879
>> 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879
>> 1731788800 0 1731821567 2147450879 2147450879 2147450879 2147450879
>> 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879
>> 2147444537 0 0 26425 2147450879 2147450879 2147450879 2147450879 2147450879
>> 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879 1731788800
>> 0 0 26425 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879
>> 2147450879 2147450879 2147450879 2147450879 2147450879 1731788800 0 0 0
>> 1731821567 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879
>> 2147450879 2147450879 2147450879 2147444537 0 0 0 0 26425 1731821567
>> 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879 2147450879
>> 2147444537 1731788800 0 0 0 0 0 26425 2147450879 2147450879 2147450879
>> 2147450879 2147450879 2147450879 2147450879 1731788800 0 0 0 0 0 0 0
>> 1731815225 1731821567 2147450879 2147450879 2147450879 2147444537 1731815225
>> 0 0 0 0 0 0 0 0 0 26425 1731815225 1731815225 1731815225 1731788800 0 0 0 0
>> 0)
>> + offset: 0 at 0).
>> + buttonPressedForm := (Form
>> + extent: 30 at 30
>> + depth: 16
>> + fromArray: #( 0 0 0 0 0 19026 1246906962 1246906962 1246906962
>> 1246887936 0 0 0 0 0 0 0 0 0 1246906962 1246911190 1523997398 1523997398
>> 1523997398 1523993170 1246906962 0 0 0 0 0 0 0 19026 1523997398 1523997398
>> 1523997398 1523997398 1523997398 1523997398 1523997398 1246887936 0 0 0 0 0
>> 19026 1246911190 1523997398 1523997398 1523997398 1523997398 1523997398
>> 1523997398 1523997398 1523993170 1246887936 0 0 0 0 1246911190 1523997398
>> 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398
>> 1523997398 1523993170 0 0 0 19026 1523997398 1523997398 1523997398
>> 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398
>> 1523997398 1246887936 0 0 19026 1523997398 1523997398 1523997398 1523997398
>> 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398
>> 1246887936 0 0 1246911190 1523997398 1523997398 1523997398 1523997398
>> 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398
>> 1523993170 0 19026 1523997398 1523997398 1523997398 1523997398 1523974145
>> 88790 1523974145 1523997398 1523997398 1523997398 1523997398 1523997398
>> 1523997398 1246887936 19026 1523997398 1523997398 1523997398 1523997398
>> 1523974145 88790 1523974145 88790 1523997398 1523997398 1523997398
>> 1523997398 1523997398 1246887936 19026 1523997398 1523997398 1523997398
>> 1523997398 1523974145 88790 1523974145 65537 1523997398 1523997398
>> 1523997398 1523997398 1523997398 1246887936 1246911190 1523997398 1523997398
>> 1523997398 1523997398 1523974145 88790 1523974145 65537 88790 1523997398
>> 1523997398 1523997398 1523997398 1523993170 1246911190 1523997398 1523997398
>> 1523997398 1523997398 1523974145 88790 1523974145 65537 65537 1523997398
>> 1523997398 1523997398 1523997398 1523993170 1246911190 1523997398 1523997398
>> 1523997398 1523997398 1523974145 88790 1523974145 65537 65537 88790
>> 1523997398 1523997398 1523997398 1523993170 1246911190 1523997398 1523997398
>> 1523997398 1523997398 1523974145 88790 1523974145 65537 65537 65537
>> 1523997398 1523997398 1523997398 1523993170 1246911190 1523997398 1523997398
>> 1523997398 1523997398 1523974145 88790 1523974145 65537 65537 88790
>> 1523997398 1523997398 1523997398 1523993170 1246911190 1523997398 1523997398
>> 1523997398 1523997398 1523974145 88790 1523974145 65537 65537 1523997398
>> 1523997398 1523997398 1523997398 1523993170 1246911190 1523997398 1523997398
>> 1523997398 1523997398 1523974145 88790 1523974145 65537 88790 1523997398
>> 1523997398 1523997398 1523997398 1523993170 1246911190 1523997398 1523997398
>> 1523997398 1523997398 1523974145 88790 1523974145 65537 1523997398
>> 1523997398 1523997398 1523997398 1523997398 1523993170 19026 1523997398
>> 1523997398 1523997398 1523997398 1523974145 88790 1523974145 88790
>> 1523997398 1523997398 1523997398 1523997398 1523997398 1246887936 19026
>> 1523997398 1523997398 1523997398 1523997398 1523974145 88790 1523974145
>> 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398 1246887936
>> 19026 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398
>> 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398
>> 1246887936 0 1246911190 1523997398 1523997398 1523997398 1523997398
>> 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398
>> 1523993170 0 0 19026 1523997398 1523997398 1523997398 1523997398 1523997398
>> 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398 1246887936
>> 0 0 19026 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398
>> 1523997398 1523997398 1523997398 1523997398 1523997398 1246887936 0 0 0
>> 1246911190 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398
>> 1523997398 1523997398 1523997398 1523993170 0 0 0 0 19026 1246911190
>> 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398 1523997398
>> 1523993170 1246887936 0 0 0 0 0 19026 1523997398 1523997398 1523997398
>> 1523997398 1523997398 1523997398 1523997398 1246887936 0 0 0 0 0 0 0
>> 1246906962 1246911190 1523997398 1523997398 1523997398 1523993170 1246906962
>> 0 0 0 0 0 0 0 0 0 19026 1246906962 1246906962 1246906962 1246887936 0 0 0 0
>> 0)
>> + offset: 0 at 0).
>> + ScriptingSystem saveForm: buttonForm atKey: #StepMe.
>> + ScriptingSystem saveForm: buttonPressedForm atKey: #StepMePressed!
>>
>> Item was added:
>> + ----- Method: EtoysDebugger class>>on: (in category 'instance creation')
>> -----
>> + on: aScriptEditorMorph
>> + ^ self basicNew initializeWith: aScriptEditorMorph!
>>
>> Item was added:
>> + ----- Method: EtoysDebugger>>delete (in category 'as yet unclassified')
>> -----
>> + delete
>> + highlighter ifNotNil: [:h | h delete]!
>>
>> Item was added:
>> + ----- Method: EtoysDebugger>>evaluateNextTile (in category 'evaluating')
>> -----
>> + evaluateNextTile
>> + [next evaluateOn: self]
>> + on: Error do: [:err || newNext |
>> + newNext := scriptEditor tiles at: 1 ifAbsent: [^
>> self].
>> + newNext = next
>> + ifTrue: [err pass]
>> + ifFalse: [next := newNext].
>> + self evaluateNextTile]!
>>
>> Item was added:
>> + ----- Method: EtoysDebugger>>evaluatePhrase: (in category 'evaluating')
>> -----
>> + evaluatePhrase: tile
>> + self highlight: tile.
>> + tile try.
>> + next := tile nextTile!
>>
>> Item was added:
>> + ----- Method: EtoysDebugger>>evaluateRepeat: (in category 'evaluating')
>> -----
>> + evaluateRepeat: tile
>> + self highlight: tile numberOfTimesToRepeatPart;
>> + timesToRepeat: tile calculateTimesToRepeat.
>> + next := tile nextTile!
>>
>> Item was added:
>> + ----- Method: EtoysDebugger>>evaluateTest: (in category 'evaluating')
>> -----
>> + evaluateTest: test
>> + | tile |
>> + test testPart tiles isEmpty
>> + ifTrue: [next := test yesPart tiles at: 1 ifAbsent: [test
>> nextTile].
>> + ^ self evaluateNextTile].
>> + self highlight: test testPart.
>> + tile := test evaluateTestPart
>> + ifTrue: [test yesPart]
>> + ifFalse: [test noPart].
>> + next := tile tiles at: 1 ifAbsent: [test nextTile]!
>>
>> Item was added:
>> + ----- Method: EtoysDebugger>>highlight: (in category 'highlighting')
>> -----
>> + highlight: aMorph
>> + "| rect |
>> + rect := BorderedMorph newBounds: aMorph bounds color: Color
>> transparent.
>> + rect openInWorld.
>> + World addAlarm: #delete
>> + withArguments: #()
>> + for: rect
>> + at: (Time millisecondClockValue + 200)."
>> + highlighter ifNotNil: [highlighter delete].
>> + highlighter := HighlightMorph on: aMorph.
>> + highlighter openInWorld!
>>
>> Item was added:
>> + ----- Method: EtoysDebugger>>initializeWith: (in category
>> 'initialization') -----
>> + initializeWith: aScriptEditorMorph
>> + scriptEditor := aScriptEditorMorph.
>> + next := scriptEditor tiles at: 1 ifAbsent: nil.
>> + self initialize!
>>
>> Item was added:
>> + ----- Method: EtoysDebugger>>timesToRepeat (in category 'accessing')
>> -----
>> + timesToRepeat
>> + ^ timesToRepeat!
>>
>> Item was added:
>> + ----- Method: EtoysDebugger>>timesToRepeat: (in category 'accessing')
>> -----
>> + timesToRepeat: aNumber
>> + timesToRepeat := aNumber!
>>
>> Item was added:
>> + Morph subclass: #HighlightMorph
>> + instanceVariableNames: 'target lastHash stepTime'
>> + classVariableNames: ''
>> + poolDictionaries: ''
>> + category: 'Etoys-Debugger'!
>>
>> Item was added:
>> + ----- Method: HighlightMorph class>>on: (in category 'as yet
>> unclassified') -----
>> + on: targetMorph
>> + ^ self basicNew initializeWith: targetMorph!
>>
>> Item was added:
>> + ----- Method: HighlightMorph>>containsPoint: (in category 'testing')
>> -----
>> + containsPoint: aPoint
>> + ^ (self bounds containsPoint: aPoint) and:
>> + [(self imageForm isTransparentAt: aPoint - bounds origin) not]!
>>
>> Item was added:
>> + ----- Method: HighlightMorph>>incrementStepTime (in category 'stepping')
>> -----
>> + incrementStepTime
>> + stepTime := (stepTime + 1) min: self maximumStepTime!
>>
>> Item was added:
>> + ----- Method: HighlightMorph>>initialize (in category
>> 'initialize-release') -----
>> + initialize
>> + super initialize.
>> + stepTime := self minimumStepTime.
>> + self color: Color transparent;
>> + borderWidth: 2;
>> + borderColor: Color red muchDarker muchDarker!
>>
>> Item was added:
>> + ----- Method: HighlightMorph>>initializeWith: (in category
>> 'initialize-release') -----
>> + initializeWith: targetMorph
>> + target := targetMorph.
>> + self initialize!
>>
>> Item was added:
>> + ----- Method: HighlightMorph>>maximumStepTime (in category 'stepping')
>> -----
>> + maximumStepTime
>> + ^500!
>>
>> Item was added:
>> + ----- Method: HighlightMorph>>minimumStepTime (in category 'stepping')
>> -----
>> + minimumStepTime
>> + ^20!
>>
>> Item was added:
>> + ----- Method: HighlightMorph>>step (in category 'stepping') -----
>> + step
>> + (target isNil or: [lastHash = (lastHash := target
>> boundsSignatureHash)])
>> + ifTrue: [self incrementStepTime]
>> + ifFalse: [stepTime := self minimumStepTime].
>> +
>> + target notNil ifTrue: [
>> + target isInWorld ifFalse: [^self delete].
>> + self bounds: target bounds]!
>>
>> Item was added:
>> + ----- Method: HighlightMorph>>stepTime (in category 'stepping') -----
>> + stepTime
>> + ^ stepTime!
>>
>> Item was changed:
>> ----- Method: Morph class>>helpContributions (in category
>> '*eToys-scripting') -----
>> helpContributions
>> "Answer a list of pairs of the form (<symbol> <help message> ) to
>> contribute to the system help dictionary"
>>
>> "NB: Many of the items here are not needed any more since they're
>> specified as part of command definitions now. Someone needs to take the
>> time to go through the list and remove items no longer needed. But who's
>> got that kind of time?"
>>
>> ^ #(
>> (acceptScript:for:
>> 'submit the contents of the given script editor as
>> the code defining the given selector')
>> (actorState
>> 'return the ActorState object for the receiver,
>> creating it if necessary')
>> (addInstanceVariable
>> 'start the interaction for adding a new variable to
>> the object')
>> (addPlayerMenuItemsTo:hand:
>> 'add player-specific menu items to the given menu,
>> on behalf of the given hand. At present, these are only commands relating
>> to the turtle')
>> (addYesNoToHand
>> 'Press here to tear off a TEST/YES/NO unit which
>> you can drop into your script')
>> (allScriptEditors
>> 'answer a list off the extant ScriptEditors for the
>> receiver')
>> (amount
>> 'The amount of displacement')
>> (angle
>> 'The angular displacement')
>> (anonymousScriptEditorFor:
>> 'answer a new ScriptEditor object to serve as the
>> place for scripting an anonymous (unnamed, unsaved) script for the
>> receiver')
>> (append:
>> 'add an object to this container')
>> (prepend:
>> 'add an object to this container')
>> (assignDecrGetter:setter:amt:
>> 'evaluate the decrement variant of assignment')
>> (assignGetter:setter:amt:
>> 'evaluate the vanilla variant of assignment')
>> (assignIncrGetter:setter:amt:
>> 'evalute the increment version of assignment')
>> (assignMultGetter:setter:amt:
>> 'evaluate the multiplicative version of
>> assignment')
>> (assureEventHandlerRepresentsStatus
>> 'make certain that the event handler associated
>> with my current costume is set up to conform to my current script-status')
>> (assureExternalName
>> 'If I do not currently have an external name
>> assigned, get one now')
>> (assureUniClass
>> 'make certain that I am a member a uniclass (i.e. a
>> unique subclass); if I am not, create one now and become me into an instance
>> of it')
>> (availableCostumeNames
>> 'answer a list of strings representing the names of
>> all costumes currently available for me')
>> (availableCostumesForArrows
>> 'answer a list of actual, instantiated costumes for
>> me, which can be cycled through as the user hits a next-costume or
>> previous-costume button in a viewer')
>> (beep:
>> 'make the specified sound')
>> (borderColor
>> 'The color of the object''s border')
>> (borderWidth
>> 'The width of the object''s border')
>> (bottom
>> 'My bottom edge, measured downward from the top
>> edge of the world')
>> (bounce:
>> 'If object strayed beyond the boundaries of its
>> container, make it reflect back into it, making the specified noise while
>> doing so.')
>> (bounce
>> 'If object strayed beyond the boundaries of its
>> container, make it reflect back into it')
>> (chooseTrigger
>> 'When this script should run.
>> "normal" means "only when called"')
>> (clearTurtleTrails
>> 'Clear all the pen trails in the interior.')
>> (clearOwnersPenTrails
>> 'Clear all the pen trails in my container.')
>> (color
>> 'The object''s interior color')
>> (colorSees
>> 'Whether a given color in the object is over
>> another given color')
>> (colorUnder
>> 'The color under the center of the object')
>> (copy
>> 'Return a new object that is very much like this
>> one')
>> (cursor
>> 'The index of the chosen element')
>> (deleteCard
>> 'Delete the current card.')
>> (dismiss
>> 'Click here to dismiss me')
>> (doMenuItem:
>> 'Do a menu item, the same way as if it were chosen
>> manually')
>> (doScript:
>> 'Perform the given script once, on the next tick.')
>> (elementNumber
>> 'My element number as seen by my owner')
>> (fire
>> 'Run any and all button-firing scripts of this
>> object')
>> (firstPage
>> 'Go to first page of book')
>> (followPath
>> 'Retrace the path the object has memorized,
>> if any.')
>> (forward:
>> 'Moves the object forward in the direction it is
>> heading')
>> (goto:
>> 'Go to the specfied book page')
>> (goToNextCardInStack
>> 'Go to the next card')
>> (goToPreviousCardInStack
>> 'Go to the previous card.')
>> (goToRightOf:
>> 'Align the object just to the right of any
>> specified object.')
>> (heading
>> 'Which direction the object is facing. 0 is
>> straight up')
>> (height
>> 'The distance between the top and bottom edges of
>> the object')
>> (hide
>> 'Make the object so that it does not display and
>> cannot handle input')
>> (initiatePainting
>> 'Initiate painting of a new object in the standard
>> playfield.')
>> (initiatePaintingIn:
>> 'Initiate painting of a new object in the given
>> place.')
>> (isOverColor
>> 'Whether any part of this object is directly over
>> the specified color')
>> (isUnderMouse
>> 'Whether any part of this object is beneath the
>> current mouse-cursor position')
>> (lastPage
>> 'Go to the last page of the book.')
>> (left
>> 'My left edge, measured from the left edge of the
>> World')
>> (leftRight
>> 'The horizontal displacement')
>> (liftAllPens
>> 'Lift the pens on all the objects in my interior.')
>> (lowerAllPens
>> 'Lower the pens on all the objects in my
>> interior.')
>> (mouseX
>> 'The x coordinate of the mouse pointer')
>> (mouseY
>> 'The y coordinate of the mouse pointer')
>> (moveToward:
>> 'Move in the direction of another object.')
>> (insertCard
>> 'Create a new card.')
>> (nextPage
>> 'Go to next page.')
>> (numberAtCursor
>> 'The number held by the object at the chosen
>> element')
>> (objectNameInHalo
>> 'Object''s name -- To change: click here, edit, hit
>> ENTER')
>> (obtrudes
>> 'Whether any part of the object sticks out beyond
>> its container''s borders')
>> (offerScriptorMenu
>> 'The Scriptee.
>> Press here to get a menu')
>> (pauseScript:
>> 'Make a running script become paused.')
>> (penDown
>> 'Whether the object''s pen is down (true) or up
>> (false)')
>> (penColor
>> 'The color of the object''s pen')
>> (penSize
>> 'The size of the object''s pen')
>> (clearPenTrails
>> 'Clear all pen trails in the current playfield')
>> (playerSeeingColorPhrase
>> 'The player who "sees" a given color')
>> (previousPage
>> 'Go to previous page')
>>
>> (show
>> 'If object was hidden, make it show itself again.')
>> (startScript:
>> 'Make a script start running.')
>> (stopScript:
>> 'Make a script stop running.')
>> (top
>> 'My top edge, measured downward from the top edge
>> of the world')
>> (right
>> 'My right edge, measured from the left edge of the
>> world')
>> (roundUpStrays
>> 'Bring all out-of-container subparts back into
>> view.')
>> (scaleFactor
>> 'The amount by which the object is scaled')
>> + (stepMe
>> + 'Run the next phrase in the script.')
>> (stopScript:
>> 'make the specified script stop running')
>> (tellAllSiblings:
>> 'send a message to all of my sibling instances')
>> (try
>> 'Run this command once.' translatedNoop)
>> (tryMe
>> 'Click here to run this script once; hold button
>> down to run repeatedly' translatedNoop)
>> (turn:
>> 'Change the heading of the object by the specified
>> amount')
>> (unhideHiddenObjects
>> 'Unhide all hidden objects.')
>> (upDown
>> 'The vertical displacement')
>> (userScript
>> 'This is a script defined by you.')
>> (userSlot
>> 'This is a variable defined by you. Click here to
>> change its type')
>> (valueAtCursor
>> 'The chosen element')
>> (wearCostumeOf:
>> 'Make this object''s appearance be the same as that
>> of another object')
>> (width
>> 'The distance between the left and right edges of
>> the object')
>> (wrap
>> 'If object has strayed beond the boundaries of its
>> container, make it reappear from the opposite edge.')
>> (x
>> 'The x coordinate, measured from the left of the
>> container')
>> (y
>> 'The y-coordinate, measured upward from the bottom
>> of the container')
>>
>> )
>> !
>>
>> Item was added:
>> + ----- Method: PhraseTileMorph>>evaluateOn: (in category
>> '*etoys-debugger') -----
>> + evaluateOn: anEtoysDebugger
>> + ^ anEtoysDebugger evaluatePhrase: self!
>>
>> Item was changed:
>> ----- Method: PhraseTileMorph>>try (in category 'miscellaneous') -----
>> try
>> "Evaluate the given phrase once"
>>
>> | aPlayer |
>> (userScriptSelector notNil and: [userScriptSelector numArgs = 0])
>> ifTrue:
>> [aPlayer _ self objectViewed player.
>> aPlayer triggerScript: userScriptSelector]
>> ifFalse:
>> [[Compiler evaluate:
>> self codeString
>> + for: (self topEditor
>> + ifNil: [self associatedPlayer]
>> + ifNotNil: [:editor | editor
>> playerScripted])
>> - for: self associatedPlayer
>> logged: false] ifError: [self inform:
>> 'evaluation error' translated]]!
>>
>> Item was changed:
>> ----- Method: ScriptEditorMorph>>buttonRowForEditor (in category
>> 'buttons') -----
>> buttonRowForEditor
>> "Answer a row of buttons that comprise the header at the top of the
>> Scriptor"
>>
>> | aRow aString aStatusMorph aButton aTile aMorph goldBoxButton aBox
>> |
>> aRow _ AlignmentMorph newRow color: ScriptingSystem baseColor;
>> layoutInset: 1.
>> aRow hResizing: #spaceFill.
>> aRow vResizing: #shrinkWrap.
>> self addDismissButtonTo: aRow.
>> aRow addTransparentSpacerOfSize: 9.
>>
>> "Player's name"
>> aString _ playerScripted externalName.
>> aMorph _ StringMorph contents: aString font: ScriptingSystem
>> fontForTiles.
>> aMorph setNameTo: 'title'.
>> aRow addMorphBack: aMorph.
>> aRow addTransparentSpacerOfSize: 6.
>>
>> "Script's name"
>> aBox := AlignmentMorph newRow.
>> aBox hResizing: #shrinkWrap; vResizing: #shrinkWrap.
>> aBox color: (Color r: 0.839 g: 1.0 b: 0.806).
>> aBox borderWidth: 1.
>> aBox borderColor: (Color r: 0.645 g: 0.774 b: 0.613).
>> aButton _ UpdatingStringMorph new.
>> aButton useStringFormat;
>> target: self;
>> getSelector: #scriptTitle;
>> setNameTo: 'script name';
>> font: ScriptingSystem fontForNameEditingInScriptor;
>> putSelector: #setScriptNameTo:;
>> setProperty: #okToTextEdit toValue: true;
>> step;
>> yourself.
>> aBox addMorph: aButton.
>> aRow addMorphBack: aBox.
>> aBox setBalloonText: 'Click here to edit the name of the script.'
>> translated.
>> "aRow addTransparentSpacerOfSize: 9."
>> aRow addVariableTransparentSpacer.
>>
>> "Try It button"
>> self hasParameter ifFalse:
>> [aRow addMorphBack:
>> ((ThreePhaseButtonMorph
>> labelSymbol: #TryIt
>> target: self
>> actionSelector: #tryMe
>> arguments: EmptyArray)
>> actWhen: #whilePressed;
>> balloonTextSelector: #tryMe).
>> aRow addTransparentSpacerOfSize: 3].
>>
>> + "Step button"
>> + self hasParameter ifFalse:
>> + [aRow addMorphBack: (aButton := ThreePhaseButtonMorph
>> + labelSymbol: #StepMe
>> + target: self
>> + actionSelector: #stepMe
>> + arguments: EmptyArray).
>> + aButton balloonTextSelector: #stepMe.
>> + aRow addTransparentSpacerOfSize: 3].
>> +
>> "Status controller"
>> self hasParameter
>> ifTrue:
>> [aTile _ TypeListTile new choices: Vocabulary
>> typeChoices dataType: nil.
>> aTile addArrows.
>> aTile setLiteral: self typeForParameter.
>> aRow addMorphBack: aTile.
>> aTile borderColor: Color red.
>> aTile color: ScriptingSystem
>> uniformTileInteriorColor.
>> aTile setBalloonText: 'Drag from here to get a
>> parameter tile' translated.
>> aTile addCaretsAsAppropriate: true]
>> ifFalse:
>> [aRow addMorphBack: (aStatusMorph _ self
>> scriptInstantiation statusControlMorph)].
>>
>> "aRow addTransparentSpacerOfSize: 3."
>> aRow addVariableTransparentSpacer.
>>
>> "Gold-box"
>> aRow addMorphBack: (goldBoxButton _ IconicButton new).
>> goldBoxButton borderWidth: 0;
>> labelGraphic: (ScriptingSystem formAtKey:
>> 'RoundGoldBox'); color: Color transparent;
>> actWhen: #buttonDown;
>> target: self;
>> actionSelector: #offerGoldBoxMenu;
>> shedSelvedge;
>> setBalloonText: 'click here to get a palette of
>> useful tiles to use in your script.' translated.
>> aRow addTransparentSpacerOfSize: 6 at 1.
>>
>> "Menu Button"
>> aButton _ self menuButton.
>> aButton actionSelector: #offerScriptorMenu.
>> aRow addMorphBack: aButton.
>>
>> (playerScripted existingScriptInstantiationForSelector: scriptName)
>> ifNotNilDo:
>> [:inst | inst updateStatusMorph: aStatusMorph].
>> ^ aRow!
>>
>> Item was added:
>> + ----- Method: ScriptEditorMorph>>deleteEtoysDebugger (in category
>> '*etoys-debugger') -----
>> + deleteEtoysDebugger
>> + (self valueOfProperty: #etoysDebugger ifAbsent: [^ self])
>> + delete.
>> + self removeProperty: #etoysDebugger!
>>
>> Item was added:
>> + ----- Method: ScriptEditorMorph>>etoysDebugger (in category
>> '*etoys-debugger') -----
>> + etoysDebugger
>> + ^ self valueOfProperty: #etoysDebugger ifAbsentPut: [EtoysDebugger
>> on: self]!
>>
>> Item was added:
>> + ----- Method: ScriptEditorMorph>>nextTile (in category
>> '*etoys-debugger') -----
>> + nextTile
>> + ^ (self ownerThatIsA: TileLikeMorph orA: ScriptEditorMorph)
>> + nextTile
>> + !
>>
>> Item was added:
>> + ----- Method: ScriptEditorMorph>>nextTileTo: (in category
>> '*etoys-debugger') -----
>> + nextTileTo: aTileMorph
>> + | tiles index |
>> + tiles := self tiles.
>> + index := (tiles indexOf: aTileMorph) + 1.
>> + index > tiles size
>> + ifTrue: [self = self topEditor
>> + ifTrue: [^ tiles at: 1]
>> + ifFalse: [^ self nextTile]].
>> + ^ tiles at: index!
>>
>> Item was added:
>> + ----- Method: ScriptEditorMorph>>stepMe (in category '*etoys-debugger')
>> -----
>> + stepMe
>> + self etoysDebugger evaluateNextTile !
>>
>> Item was added:
>> + ----- Method: ScriptEditorMorph>>tiles (in category '*etoys-debugger')
>> -----
>> + tiles
>> + ^ self tileRows collect: [:each | each first]!
>>
>> Item was changed:
>> ----- Method: ScriptEditorMorph>>tryMe (in category 'buttons') -----
>> tryMe
>> "Evaluate the given script on behalf of the scripted object"
>>
>> scriptName numArgs = 0
>> ifTrue:
>> + [self deleteEtoysDebugger.
>> + self playerScripted performScriptIfCan: scriptName
>> ]
>> - [self playerScripted performScriptIfCan:
>> scriptName ]
>>
>> !
>>
>> Item was changed:
>> ----- Method: ScriptEditorMorph>>updateStatus (in category 'buttons')
>> -----
>> updateStatus
>> "Update that status in the receiver's header. "
>>
>> (self topEditor == self and: [firstTileRow ~~ 1]) ifTrue:
>> [(submorphs size == 0 or: [(self firstSubmorph findA:
>> ScriptStatusControl) isNil])
>> ifTrue:
>> [self replaceRow1].
>> self updateStatusMorph: (self firstSubmorph findA:
>> ScriptStatusControl)]!
>>
>> Item was changed:
>> ----- Method: ScriptStatusControl>>mouseUpTick:onItem: (in category
>> 'mouse gestures') -----
>> mouseUpTick: evt onItem: aMorph
>> self removeAlarm: #offerTickingMenu:.
>> + (self ownerThatIsA: ScriptEditorMorph) deleteEtoysDebugger.
>> aMorph color: (Color r: 0.767 g: 0.767 b: 1.0).
>> (scriptInstantiation status == #ticking) ifTrue:[
>> scriptInstantiation status: #paused.
>> aMorph color: (Color r: 1.0 g: 0.774 b: 0.774).
>> aMorph isTicking: false.
>> ] ifFalse:[
>> scriptInstantiation status: #ticking.
>> aMorph color: (Color r: 0.767 g: 0.767 b: 1.0).
>> aMorph isTicking: true.
>> ].
>> scriptInstantiation updateAllStatusMorphs.!
>>
>> Item was added:
>> + ----- Method: TileLikeMorph>>nextTile (in category '*etoys-debugger')
>> -----
>> + nextTile
>> + ^ (self ownerThatIsA: ScriptEditorMorph)
>> + nextTileTo: self!
>>
>> Item was added:
>> + ----- Method: TimesRepeatMorph>>evaluateOn: (in category
>> '*etoys-debugger') -----
>> + evaluateOn: anEtoysDebugger
>> + ^ anEtoysDebugger evaluateRepeat: self!
>>
>> Item was added:
>> + ----- Method: TimesRepeatTile>>calculateTimesToRepeat (in category
>> '*etoys-debugger') -----
>> + calculateTimesToRepeat
>> + ^ (Compiler evaluate: (String streamContents: [:stream |
>> + self numberOfTimesToRepeatPart submorphs
>> + ifEmpty: [stream nextPutAll: '0']
>> + ifNotEmpty: [self
>> numberOfTimesToRepeatPart storeCodeOn: stream indent: 0]])
>> + for: self topEditor playerScripted
>> + logged: false)!
>>
>> Item was added:
>> + ----- Method: TimesRepeatTile>>evaluateOn: (in category
>> '*etoys-debugger') -----
>> + evaluateOn: anEtoysDebugger
>> + ^ anEtoysDebugger evaluateRepeat: self!
>>
>> Item was added:
>> + ----- Method: TimesRepeatTile>>nextTile (in category '*etoys-debugger')
>> -----
>> + nextTile
>> + "Instead of just returning my next tile I return my first tile if
>> I haven't been evaluated enough times"
>> + self timesToRepeat <= 0
>> + ifTrue: [^ super nextTile].
>> + self timesToRepeat: self timesToRepeat - 1.
>> + ^ self whatToRepeatPart tiles at: 1 ifAbsent: [super nextTile]!
>>
>> Item was added:
>> + ----- Method: TimesRepeatTile>>timesToRepeat (in category
>> '*etoys-debugger') -----
>> + timesToRepeat
>> + ^ self topEditor etoysDebugger timesToRepeat!
>>
>> Item was added:
>> + ----- Method: TimesRepeatTile>>timesToRepeat: (in category
>> '*etoys-debugger') -----
>> + timesToRepeat: aNumber
>> + ^ self topEditor etoysDebugger timesToRepeat: aNumber!
>>
>> Item was added:
>> + ----- Method: TimesRepeatTile>>whatToRepeatPart (in category
>> '*etoys-debugger') -----
>> + whatToRepeatPart
>> + ^ whatToRepeatPart!
>>
>>
>> _______________________________________________
>> etoys-dev mailing list
>> etoys-dev at squeakland.org
>> http://lists.squeakland.org/mailman/listinfo/etoys-dev
>>
>
>
> _______________________________________________
> etoys-dev mailing list
> etoys-dev at squeakland.org
> http://lists.squeakland.org/mailman/listinfo/etoys-dev
>
More information about the etoys-dev
mailing list