[Morphic] Nebraska removal

Lic. Edgar J. De Cleene edgardec2001 at yahoo.com.ar
Wed Dec 28 12:34:53 CET 2005


I hope this address the previous questions by Cees and Juan.

Edgar

-------------- next part --------------
'From Squeak3.9alpha of 4 July 2005 [latest update: #6705] on 28 December 2005 at 8:15:10 am'!
"Change Set:		ReleaseBuilder-unloadNebraska
Date:			28 December 2005
Author:			Edgar J. De Cleene

Second try. I hope I address the questions by Cess and Juan.
Still think what if we have a ReleaseBuilder class, we should use it for downloading things"!

WorldState subclass: #NebraskaWorldState
	instanceVariableNames: ''
	classVariableNames: ''
	poolDictionaries: ''
	category: 'Morphic-Worlds'!

!ClassDescription methodsFor: 'accessing method dictionary' stamp: 'edc 11/10/2005 08:35'!
allMethodsInCategorybeginsWith: aName 
	"Answer a list of all the method categories of the receiver and all its 
	superclasses"
	| aColl categorybeginsWith |
	aColl := OrderedCollection new.
	self withAllSuperclasses
		do: [:aClass | categorybeginsWith := aClass organization categories
										select: [:c | c beginsWith: aName]
										thenCollect: [:any | any].
							categorybeginsWith isEmptyOrNil
								ifFalse: [categorybeginsWith
										do: [:cat | aColl
				addAll: (aClass organization listAtCategoryNamed: cat)]]].
	^ aColl asSet asSortedArray! !


!ReleaseBuilder methodsFor: 'unloading' stamp: 'edc 12/28/2005 08:02'!
unloadNebraska
	"Safe unload of StarSqueak from 3.9a 6703 image"
	"ReleaseBuilder new unloadNebraska"
	| toRemove selectorList actualClass |
	SystemOrganization classifyAll: #(#EToyCommunicatorMorph ) under: 'Nebraska-Network-EToy Communications'.
	toRemove := SystemOrganization categoriesMatching: 'Nebraska*'.
	toRemove
		do: [:each | SystemOrganization removeSystemCategory: each].
	selectorList := SystemNavigation default allMethodsInCategorybeginsWith: '*nebraska'.
	selectorList
		do: [:each | 
			actualClass := Smalltalk
						atOrBelow: (each findTokens: ' ') first asSymbol
						ifAbsent: [].
			actualClass removeSelector: (each findTokens: ' ') last asSymbol].
	ReleaseBuilder new fixObsoleteReferences.
	SystemOrganization removeEmptyCategories.
	Smalltalk garbageCollect.! !


!SystemNavigation methodsFor: 'browse' stamp: 'edc 11/10/2005 07:00'!
allMethodsInCategorybeginsWith: category 
	| aCollection |
	aCollection _ SortedCollection new.
	Cursor wait showWhile:
		[self allBehaviorsDo:
			[:x | (x allMethodsInCategorybeginsWith: category) do:
				[:sel | aCollection add: x name , ' ' , sel]]].
	^aCollection.
	! !


!WorldState methodsFor: 'update cycle' stamp: 'edc 12/28/2005 07:45'!
forceDamageToScreen: allDamage

	Display forceDamageToScreen: allDamage.! !


!NebraskaWorldState methodsFor: 'canvas' stamp: 'ar 10/26/2000 14:11'!
addRemoteCanvas: c
	self canvas: nil. "force recomputation"! !

!NebraskaWorldState methodsFor: 'canvas' stamp: 'ar 10/26/2000 14:17'!
assuredRemoteCanvas
	| newCanvas |
	(self canvas notNil) ifTrue: [ ^self canvas ].
	newCanvas := MultiCanvas new.
	newCanvas depth: 32.
	newCanvas extent: viewBox extent.
	self remoteCanvasesDo: [ :c | newCanvas addCanvas: c ].
	newCanvas addCanvas: Display getCanvas.

	"newCanvas := CachingCanvas on: newCanvas."
	self canvas: newCanvas.
	^newCanvas! !

!NebraskaWorldState methodsFor: 'canvas' stamp: 'sd 11/20/2005 21:25'!
releaseRemoteServer
	"My server has been transferred to some other world. Release pending references"
	remoteServer := nil.
	self canvas: nil.! !

!NebraskaWorldState methodsFor: 'canvas' stamp: 'ar 10/26/2000 14:15'!
remoteCanvasesDo: aBlock
	remoteServer ifNil:[^self].
	^remoteServer clients do:[:client| aBlock value: client canvas]! !

!NebraskaWorldState methodsFor: 'canvas' stamp: 'ar 10/26/2000 14:08'!
remoteServer
	^remoteServer! !

!NebraskaWorldState methodsFor: 'canvas' stamp: 'sd 11/20/2005 21:25'!
remoteServer: aNebraskaServer
	remoteServer ifNotNil:[remoteServer destroy].
	remoteServer := aNebraskaServer.
	self canvas: nil.! !

!NebraskaWorldState methodsFor: 'canvas' stamp: 'ar 10/26/2000 14:17'!
removeRemoteCanvas: c
	self canvas: nil.	"force withdrawal of remote from MultiCanvas"
! !

!NebraskaWorldState methodsFor: 'update cycle' stamp: 'edc 12/28/2005 07:45'!
forceDamageToScreen: allDamage

	"here for the convenience of NebraskaWorldState"
	super forceDamageToScreen: allDamage.
	self remoteCanvasesDo: [ :each | 
		allDamage do: [:r | each forceToScreen: r].
		each displayIsFullyUpdated.
	].! !


!WorldState reorganize!
('alarms' addAlarm:withArguments:for:at: adjustAlarmTimes: alarmSortBlock alarms removeAlarm:for: triggerAlarmsBefore:)
('canvas' assuredCanvas canvas canvas: doFullRepaint recordDamagedRect: resetDamageRecorder viewBox viewBox:)
('hands' activeHand addHand: hands handsDo: handsReverseDo: removeHand: selectHandsToDrawForDamage:)
('initialization' initialize stepListSize stepListSortBlock)
('object fileIn' convertAlarms convertStepList)
('objects from disk' convertToCurrentVersion:refStream:)
('stepping' adjustWakeupTimesIfNecessary adjustWakeupTimes: cleanseStepListForWorld: isStepping: isStepping:selector: listOfSteppingMorphs runLocalStepMethodsIn: runStepMethodsIn: startStepping:at:selector:arguments:stepTime: stopStepping: stopStepping:selector:)
('undo' commandHistory)
('undo support' clearCommandHistory)
('update cycle' checkIfUpdateNeeded displayWorldSafely: displayWorld:submorphs: doDeferredUpdatingFor: doOneCycleFor: doOneCycleNowFor: doOneSubCycleFor: drawWorld:submorphs:invalidAreasOn: forceDamageToScreen: handleFatalDrawingError: interCyclePause:)
('*MorphicExtras-hands' activeHand:)
('*nebraska-*nebraska-Nebraska support' addRemoteCanvas: assuredRemoteCanvas releaseRemoteServer remoteCanvasesDo: remoteServer remoteServer: removeRemoteCanvas:)
('*MorphicExtras-update cycle' displayWorldAsTwoTone:submorphs:color: doOneCycleInBackground startBackgroundProcess)
('*MorphicExtras-initialization' stepListSummary)
!



More information about the Morphic mailing list