[squeak-dev] The Inbox: Morphic-dtl.1360.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Nov 11 21:04:49 UTC 2017


David T. Lewis uploaded a new version of Morphic to project The Inbox:
http://source.squeak.org/inbox/Morphic-dtl.1360.mcz

==================== Summary ====================

Name: Morphic-dtl.1360
Author: dtl
Time: 11 November 2017, 4:04:34.153784 pm
UUID: 0e1f3870-5f57-4dc6-a1e7-5d8ce68b71b5
Ancestors: Morphic-dtl.1359

World global elimination. Once the current project has been entered, Project current world == World. Begin eliminating references to the global variable World in cases where it is not required.

=============== Diff against Morphic-dtl.1359 ===============

Item was changed:
  ----- Method: ComplexProgressIndicator>>backgroundWorldDisplay (in category 'as yet unclassified') -----
  backgroundWorldDisplay
  
  	self flag: #bob.		"really need a better way to do this"
  
  			"World displayWorldSafely."
  
  	"ugliness to try to track down a possible error"
  
  
+ 	[Project current world displayWorld] ifError: [ :a :b |
- 	[World displayWorld] ifError: [ :a :b |
  		| f |
  		stageCompleted := 999.
  		f := FileDirectory default fileNamed: 'bob.errors'.
  		f nextPutAll: a printString,'  ',b printString; cr; cr.
  		f nextPutAll: 'worlds equal ',(formerWorld == World) printString; cr; cr.
  		f nextPutAll: thisContext longStack; cr; cr.
  		f nextPutAll: formerProcess suspendedContext longStack; cr; cr.
  		f close. Beeper beep.
  	].
  !

Item was changed:
  ----- Method: Debugger class>>morphicOpenInterrupt:onProcess: (in category '*Morphic-opening') -----
  morphicOpenInterrupt: aString onProcess: interruptedProcess
  	"Open a notifier in response to an interrupt. An interrupt occurs when the user types the interrupt key (cmd-. on Macs, ctrl-c or alt-. on other systems) or when the low-space watcher detects that memory is low."
  	| debugger |
  	<primitive: 19> "Simulation guard"
  	debugger := self new.
  	debugger
  		process: interruptedProcess
  		controller: nil
  		context: interruptedProcess suspendedContext.
  	debugger externalInterrupt: true.
  
  	Preferences logDebuggerStackToFile ifTrue:
  		[(aString includesSubstring: 'Space') & (aString includesSubstring: 'low')
  			ifTrue: [Smalltalk logError: aString inContext: debugger interruptedContext to: 'LowSpaceDebug.log']
  			"logging disabled for 4.3 release, see
  				http://lists.squeak.org/pipermail/squeak-dev/2011-December/162503.html"
  			"ifFalse: [Smalltalk logSqueakError: aString inContext: debugger interruptedContext]"].
  
+ 	Preferences eToyFriendly ifTrue: [Project current world stopRunningAll].
- 	Preferences eToyFriendly ifTrue: [World stopRunningAll].
  	^debugger
  		openNotifierContents: nil label: aString;
  		yourself
  !

Item was changed:
  ----- Method: Morph>>updateFromResource (in category 'fileIn/out') -----
  updateFromResource
  	| pathName newMorph f |
  	(pathName := self valueOfProperty: #resourceFilePath) ifNil: [^self].
  	(pathName asLowercase endsWith: '.morph') 
  		ifTrue: 
  			[newMorph := (FileStream readOnlyFileNamed: pathName) fileInObjectAndCode.
  			(newMorph isMorph) 
  				ifFalse: [^self error: 'Resource not a single morph']]
  		ifFalse: 
  			[f := Form fromFileNamed: pathName.
  			f ifNil: [^self error: 'unrecognized image file format'].
+ 			newMorph := Project current world drawingClass withForm: f].
- 			newMorph := World drawingClass withForm: f].
  	newMorph setProperty: #resourceFilePath toValue: pathName.
  	self owner replaceSubmorph: self by: newMorph!

Item was changed:
  ----- Method: MorphHierarchyListMorph>>createContainer (in category 'private') -----
  createContainer
  	"Private - Create a container"
  	| container |
  	container := BorderedMorph new.
+ 	container extent: (Project current world extent * (1 / 4 @ (2 / 3))) rounded.
- 	container extent: (World extent * (1 / 4 @ (2 / 3))) rounded.
  	container layoutPolicy: TableLayout new.
  	container hResizing: #rigid.
  	container vResizing: #rigid.
  	container
  		setColor: (Color gray: 0.9)
  		borderWidth: 1
  		borderColor: Color gray.
  	container layoutInset: 0.
  	"container useRoundedCorners."
  	""
  	container setProperty: #morphHierarchy toValue: true.
  	container setNameTo: 'Objects Hierarchy' translated.
  	""
  	^ container!

Item was changed:
  ----- Method: MorphicProject>>storeSegment (in category 'file in/out') -----
  storeSegment
  	"Store my project out on the disk as an ImageSegment.  Keep the outPointers in memory.  Name it <project name>.seg.  *** Caller must be holding (Project alInstances) to keep subprojects from going out. ***"
  
  	| is sizeHint |
+ 	(Project current world == world) ifTrue: [^ false]. 
- 	(World == world) ifTrue: [^ false]. 
  		"self inform: 'Can''t send the current world out'."
  	world isInMemory ifFalse: [^ false].  "already done"
  	world ifNil: [^ false].  world presenter ifNil: [^ false].
  
  	ScrapBook default emptyScrapBook.
  	World checkCurrentHandForObjectToPaste.
  	world releaseSqueakPages.
  	sizeHint := self projectParameters at: #segmentSize ifAbsent: [0].
  
  	is := ImageSegment
  			copyFromRootsLocalFileFor: {world presenter. world}	"world, and all Players"
  			sizeHint: sizeHint.
  
  	is state = #tooBig ifTrue: [^ false].
  	is segment size < 2000 ifTrue: ["debugging" 
  		Transcript show: self name, ' only ', is segment size printString, 
  			'bytes in Segment.'; cr].
  	self projectParameters at: #segmentSize put: is segment size.
  	is extract; writeToFile: self name.
  	^ true!

Item was changed:
  ----- Method: MorphicProject>>storeSegmentNoFile (in category 'file in/out') -----
  storeSegmentNoFile
  	"For testing.  Make an ImageSegment.  Keep the outPointers in memory.  Also useful if you want to enumerate the objects in the segment afterwards (allObjectsDo:)"
  
  	| is |
+ 	(Project current world == world) ifTrue: [^ self].		" inform: 'Can''t send the current world out'."
- 	(World == world) ifTrue: [^ self].		" inform: 'Can''t send the current world out'."
  	world isInMemory ifFalse: [^ self].  "already done"
  	world ifNil: [^ self].  world presenter ifNil: [^ self].
  
  	"Do this on project enter"
  	World flapTabs do: [:ft | ft referent adaptToWorld: World].
  		"Hack to keep the Menu flap from pointing at my project"
  	"Preferences setPreference: #useGlobalFlaps toValue: false."
  	"Utilities globalFlapTabsIfAny do:
  		[:aFlapTab | Utilities removeFlapTab: aFlapTab keepInList: false].
  	Utilities clobberFlapTabList.	"
  	"project world deleteAllFlapArtifacts."
  	"self currentWorld deleteAllFlapArtifacts.	"
  	ScrapBook default emptyScrapBook.
  	World checkCurrentHandForObjectToPaste2.
  
  	is := ImageSegment
  			copyFromRootsLocalFileFor: {world presenter. world}	"world, and all Players"
  			sizeHint: 0.
  
  	is segment size < 800 ifTrue: ["debugging" 
  		Transcript show: self name, ' did not get enough objects'; cr.  ^ Beeper beep].
  
  	is extract.
  	"is instVarAt: 2 put: is segment clone."		"different memory"!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>startMessageTally (in category 'menu actions') -----
  startMessageTally
+ 	| world |
+ 	world := Project current world.
  	(self confirm: 'MessageTally will start now,
  and stop when the cursor goes
  to the top of the screen') ifTrue:
  		[MessageTally spyOn:
+ 			[[Sensor peekPosition y > 0] whileTrue: [world doOneCycle]]]!
- 			[[Sensor peekPosition y > 0] whileTrue: [World doOneCycle]]]!

Item was changed:
  ----- Method: TheWorldMenu>>startMessageTally (in category 'commands') -----
  startMessageTally
+ 	| world |
+ 	world := Project current world.
- 
  	(self confirm: 'MessageTally will start now,
  and stop when the cursor goes
  to the top of the screen') ifTrue:
  		[MessageTally spyOn:
+ 			[[Sensor peekPosition y > 0] whileTrue: [world doOneCycle]]]!
- 			[[Sensor peekPosition y > 0] whileTrue: [World doOneCycle]]]!



More information about the Squeak-dev mailing list