[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