[etoys-dev] Etoys: Etoys-kfr.99.mcz
Ricardo Moran
richi.moran at gmail.com
Fri Feb 3 18:28:02 EST 2012
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.
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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakland.org/pipermail/etoys-dev/attachments/20120203/2b195485/attachment-0001.html>
More information about the etoys-dev
mailing list