[squeak-dev] The Trunk: EToys-tfel.256.mcz

Levente Uzonyi leves at caesar.elte.hu
Tue Sep 27 23:26:59 UTC 2016


On Tue, 27 Sep 2016, commits at source.squeak.org wrote:

> Tim Felgentreff uploaded a new version of EToys to project The Trunk:
> http://source.squeak.org/trunk/EToys-tfel.256.mcz
>
> ==================== Summary ====================
>
> Name: EToys-tfel.256
> Author: tfel
> Time: 27 September 2016, 3:48:35.810629 pm
> UUID: 67cc3cc0-a391-2e4e-af52-dd6bbc2e1f03
> Ancestors: EToys-tfel.255
>
> - various fixes for the mentoring event recorder
> - utility methods for etoys course
>
> =============== Diff against EToys-tfel.255 ===============
>
> Item was changed:
>  ----- Method: InteriorSolidSugarSuppliesTab>>mouseMove: (in category 'event handling') -----
>  mouseMove: evt
>  	"Handle a mouse-move within the solid tab."
>
>  	| aPosition newReferentThickness adjustedPosition thick aWorldlet |
> + 	true ifTrue: [^ self].
>  	dragged ifFalse: [(thick := self referentThickness) > 0
>  		ifTrue: [lastReferentThickness := thick]].
>
>  	aWorldlet := self ownerThatIsA: Worldlet.
>  	aPosition := evt cursorPoint - aWorldlet position.
>  	edgeToAdhereTo == #top
>  		ifTrue:
>  			[adjustedPosition := aPosition - evt hand targetOffset.
>  			newReferentThickness := adjustedPosition y - self navBarHeight]
>  		ifFalse:
>  			[adjustedPosition := aPosition - evt hand targetOffset.
>  			newReferentThickness := aWorldlet height - (adjustedPosition y + self navBarHeight + self height)].
>
>  	self applyThickness: newReferentThickness.
>  	dragged := true.
>  	self fitOnScreen!
>
> Item was changed:
>  ----- Method: MentoringEventRecorder>>handleListenEvent: (in category 'events-processing') -----
>  handleListenEvent: anEvent
>  	"Process a listen event."
>
>  	anEvent hand == recHand ifFalse: [^ self].	"not for me"
>  	(#(recording recordingWithSound) includes: self state)  ifFalse:
>  		["If user got an error while recording and deleted recorder, will still be listening"
>  		recHand ifNotNil: [recHand removeEventListener: self].
>  		^ self].
> + 	anEvent timeStamp: Time millisecondClockValue. "Workaround a bug in Windows VM"

That shoud be Time >> #eventMillisecondClock.

Levente

>  	anEvent = lastEvent ifTrue: [^ self].
>  	(anEvent isKeyboard and: [anEvent keyValue = 27 "esc"])
>  		ifTrue: [^ self handleEscape].
>  	time := anEvent timeStamp.
>  	tapeStream ifNotNil:
>  		[tapeStream nextPut: (anEvent copy setHand: nil)].
>  	lastEvent := anEvent!
>
> Item was changed:
>  ----- Method: MentoringEventRecorder>>pauseIn: (in category 'pause/resume') -----
>  pauseIn: aWorld
>  	"Suspend -- a stop command, typically because an EOF event was found on the event tape being played."
>
>  	(#(recordingWithSound playbackAddingVoiceover) includes: self state) ifTrue:
>  		[self terminateVoiceRecording.
>  		self state: #atEndOfPlayback.
>  		recHand ifNotNil: [recHand removeEventListener: self].
>  		recHand := nil.].
>
>  	(#(playback) includes: self state) ifTrue:
>  		[self state: #suspendedPlay.
>  		playHand ifNotNil:
>  			[playHand halo ifNotNil: [playHand halo delete].
>  			playHand delete].
>  		aWorld removeHand: playHand.
>  		self removeProperty: #suspendedContentArea.
>  		playHand := nil.
> + 		recordingSpace playingEnded.
> + 		aWorld firstHand showHardwareCursor: true]
> - 		recordingSpace playingEnded]
>  	!
>
> Item was changed:
>  ----- Method: MentoringEventRecorder>>resumePlayIn: (in category 'pause/resume') -----
>  resumePlayIn: aWorld
>  	"Playback"
>
>  	| anEvent aPosition |
>  	recordingSpace abandonReplayHandsAndHalos.
>  	self flag: #deferred.  "I guess it's the above line that messes up the nesting of these guys..."
>
>  	self state: #playback.
>  	recordingSpace populateControlsPanel.
>  	aWorld doOneCycle.
>
>  	playHand := HandMorphForReplay new recorder: self.
>  	[((anEvent := tapeStream next) notNil and: [(anEvent isKindOf: UserInputEvent) not])]
>  		whileTrue: [].
>  	aPosition := anEvent
>  		ifNil:
>  			[recordingSpace contentArea center]
>  		ifNotNil:
>  			[anEvent position].
>  	tapeStream reset.
>  	playHand position: aPosition + recordingSpace areaOffset.
>  	aWorld addHand: playHand.
>  	playHand newKeyboardFocus: aWorld.
> + 	playHand userInitials: '' andPicture: nil.
> - 	playHand userInitials: 'play' andPicture: nil.
>
>  	lastEvent := nil.
>  	lastDelta := 0 at 0.
>  	startPlaybackTime := Time millisecondClockValue.
>  	millisecondsIntoPlayback := 0.
>  	self findPlayOffset.
>
>  	self synchronize
>  !
>
> Item was changed:
>  ----- Method: PasteUpMorph>>impartPrivatePresenter (in category '*Etoys-playfield') -----
>  impartPrivatePresenter
>  	presenter ifNil:
>  		[presenter := EtoysPresenter new associatedMorph: self.
> + 		"presenter standardPlayer"]!
> - 		presenter standardPlayer]!
>
> Item was added:
> + ----- Method: Project class>>cleanUpEtoysGarbage (in category '*Etoys-Squeakland-utilities') -----
> + cleanUpEtoysGarbage
> + 	"Project cleanUpEtoysGarbage"
> + 	"All these should eventuall go away and be fixed, but for now we have this here."
> + 	Smalltalk garbageCollect.
> + 	"Clear weak message sends to remove modal windows from worlds that are closing."
> + 	(WeakMessageSend allInstances select: [:wm  |
> + 		(wm receiver isKindOf: PasteUpMorph) and: [wm selector = #removeModalWindow]]) do: [:wm | wm receiver: nil].
> + 	"Clear the weak dictionary on the class side that keeps node state around in the rewriter"
> + 	KedamaEvaluatorNodeState initialize.
> + 	"Clear the KedamaEvaluator that holds on to the last Kedama world"
> + 	ScriptEditorMorph setDefaultEvaluator.
> + 	"Clear the hard references to player classes, "
> + 	(Smalltalk organization listAtCategoryNamed:  'UserObjects') do: [:name |
> + 	    Smalltalk forgetClass: (Smalltalk classNamed: name) logged: false].
> + 	Player withAllSubclasses
> + 	    select: [:c | c isSystemDefined not]
> + 	    thenDo: [:c  | c superclass removeSubclass: c].
> + 	"Clear the paste buffer"
> + 	HandMorph initialize.
> + 	"Clear the reference to the project tree in SkObject"
> + 	SkObject initialize.
> + 	Smalltalk garbageCollect.!
>
> Item was added:
> + ----- Method: Project class>>makeANewLocalGallery (in category '*Etoys-Squeakland-utilities') -----
> + makeANewLocalGallery
> + 	| m pvm |
> + 	m := Morph new
> + 		changeTableLayout;
> + 		listDirection: #leftToRight;
> + 		wrapDirection: #topToBottom;
> + 		yourself.
> + 	(((FileDirectory default fileNamesMatching: '*.pr')
> + 		collect: [:name | (Project parseProjectFileName: name) first]) asSet sorted) do: [:name |
> + 			pvm := ProjectViewMorph new.
> + 			m addMorph: (pvm
> + 				project: (DiskProxy global: #Project selector: #named: args: {name}))].
> + 	m openInHand!
>
>
>


More information about the Squeak-dev mailing list