[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