[squeak-dev] The Trunk: ST80-mt.210.mcz

commits at source.squeak.org commits at source.squeak.org
Mon May 9 11:47:08 UTC 2016


Marcel Taeumel uploaded a new version of ST80 to project The Trunk:
http://source.squeak.org/trunk/ST80-mt.210.mcz

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

Name: ST80-mt.210
Author: mt
Time: 9 May 2016, 1:46:37.619729 pm
UUID: 13ac8010-c5b9-3749-8ab7-6de20cc50a59
Ancestors: ST80-mt.209

Update according to the projects refactoring in System-mt.827

=============== Diff against ST80-mt.209 ===============

Item was changed:
  ----- Method: ControlManager class>>shutDown (in category 'snapshots') -----
  shutDown
  	"Saves space in snapshots"
  
  	Project current isMVC
+ 		ifTrue: [Project current invalidate].!
- 		ifTrue: [ScheduledControllers unCacheWindows].!

Item was changed:
  ----- Method: ControlManager class>>startUp (in category 'snapshots') -----
  startUp
  
  	Project current isMVC
+ 		ifTrue: [Project current restore].!
- 		ifTrue: [ScheduledControllers restore].!

Item was added:
+ ----- Method: ControlManager>>displayWorld (in category 'displaying') -----
+ displayWorld 
+ 
+ 	screenController view window: Display boundingBox; displayDeEmphasized.
+ 	self scheduledWindowControllers reverseDo:
+ 		[:aController | aController view displayDeEmphasized].
+ !

Item was changed:
  ----- Method: ControlManager>>restore (in category 'displaying') -----
  restore 
  	"Clear the screen to gray and then redisplay all the scheduled views.  Try to be a bit intelligent about the view that wants control and not display it twice if possible."
  
+ 	self unCacheWindows.  "assure refresh"
- 	scheduledControllers first view uncacheBits.  "assure refresh"
  	self unschedule: screenController; scheduleOnBottom: screenController.
+ 	self displayWorld.!
- 	screenController view window: Display boundingBox; displayDeEmphasized.
- 	self scheduledWindowControllers reverseDo:
- 		[:aController | aController view displayDeEmphasized].
- !

Item was added:
+ ----- Method: MVCProject class>>releaseProjectReferences: (in category 'utilities') -----
+ releaseProjectReferences: outgoingProject
+ 
+ 	ProjectController allInstancesDo: [:pvc |
+ 		[pvc model == outgoingProject ifTrue: [pvc closeAndUnscheduleNoTerminate]]
+ 			on: Error do: [:ex | 
+ 				"Unschedule the bad controller from all managers."
+ 				ControlManager allInstancesDo: [:m | m unschedule: pvc]]].!

Item was removed:
- ----- Method: MVCProject class>>removeProjectsFromSystem (in category 'shrinking') -----
- removeProjectsFromSystem
- 	"Remove all MVC projects from the system, reorganizing the project hierarchy as needed.
- 	This method was originally implemented as SmalltalkImage>>zapMVCProjects in earlier
- 	versions of Squeak."
- 
- 	"MVCProject removeProjectsFromSystem"
- 	
- 	Smalltalk garbageCollect. "So allInstances is precise"
- 	Project
- 		allSubInstancesDo: [:proj | | window | proj isTopProject
- 				ifTrue: [(proj isKindOf: self)
- 						ifTrue: ["Root project is MVC -- we must become the root"
- 							Project current setParent: Project current.]]
- 				ifFalse: [(proj parent isKindOf: self)
- 						ifTrue: [(proj isKindOf: self)
- 								ifFalse: ["Remove Morphic projects from MVC views "
- 									"... and add them back here."
- 									window := (SystemWindow labelled: proj name)
- 												model: proj.
- 									window
- 										addMorph: (ProjectViewMorph on: proj)
- 										frame: (0 @ 0 corner: 1.0 @ 1.0).
- 									window openInWorld.
- 									proj setParent: Project current]].
- 					(proj isKindOf: self)
- 						ifTrue: ["Remove MVC projects from Morphic views"
- 							Project deletingProject: proj]]]!

Item was changed:
  ----- Method: MVCProject class>>unloadMVC (in category 'shrinking') -----
  unloadMVC
  	"Completely remove MVC from the system. All MVC projects will be destroyed.
  	To reinstall MVC, load all of the ST80 and MVCToolbuilder packages."
  
  	"MVCProject unloadMVC"
  
+ 	Project current isMVC ifTrue: [
+ 		^ Error signal: 'You can only unload MVC from within another kind of project.'].
+ 
+ 	MVCProject removeProjectsFromSystem.
+ 	
+ 	Smalltalk globals removeKey: #ScheduledControllers.
- 	self removeProjectsFromSystem.
- 	ScheduledControllers := nil.
  	{ 'ToolBuilder-MVC' . 'ST80Tests' . 'ST80Tools' . 'ST80' }
  		do: [ :package | (MCPackage named: package) unload ].
  
  !

Item was added:
+ ----- Method: MVCProject>>addProject: (in category 'as yet unclassified') -----
+ addProject: project
+ 
+ 	| view |
+ 	super addProject: project.
+ 
+ 	view := ProjectView new
+ 		model: project;
+ 		minimumSize: 50 at 30;
+ 		borderWidth: 2;
+ 		resizeInitially;
+ 		yourself.
+ 	view controller status: #open.!

Item was removed:
- ----- Method: MVCProject>>defaultBackgroundColor (in category 'initialize') -----
- defaultBackgroundColor
- 	^ Color white!

Item was added:
+ ----- Method: MVCProject>>deletingProject: (in category 'release') -----
+ deletingProject: outgoingProject
+ 
+ 	"Clean-up my project views."
+ 	(self world controllersSatisfying: [:m | m model = outgoingProject]) 
+ 		do: [:projectController | 
+ 			self world unschedule: projectController.
+ 			projectController view
+ 				model: nil;
+ 				release].
+ 			
+ 	super deletingProject: outgoingProject.!

Item was removed:
- ----- Method: MVCProject>>displaySizeChanged (in category 'display') -----
- displaySizeChanged
- 	"Inform the current project that its display size has changed"
- 	world "ScheduledControllers" restore; searchForActiveController!

Item was added:
+ ----- Method: MVCProject>>finalEnterActions: (in category 'enter') -----
+ finalEnterActions: leavingProject
+ 
+ 	ScheduledControllers := world.!

Item was removed:
- ----- Method: MVCProject>>finalExitActions (in category 'enter') -----
- finalExitActions
- 
- 	self world unCacheWindows.
- 	Sensor flushAllButDandDEvents. "Will be reinstalled by World>>install"
- 	
- 	ScheduledControllers := nil.!

Item was added:
+ ----- Method: MVCProject>>finalExitActions: (in category 'enter') -----
+ finalExitActions: enteringProject
+ 
+ 	super finalExitActions: enteringProject.
+ 
+ 	self world unCacheWindows.
+ 	Sensor flushAllButDandDEvents.
+ 	
+ 	ScheduledControllers := nil.!

Item was changed:
  ----- Method: MVCProject>>invalidate (in category 'display') -----
  invalidate
  	"Invalidate the entire project so that a redraw will be forced later."
+ 
+ 	world
+ 		unCacheWindows;
+ 		unschedule: world screenController;
+ 		scheduleOnBottom: world screenController.!
- 	world "ScheduledControllers" unCacheWindows!

Item was added:
+ ----- Method: MVCProject>>okToChange (in category 'release') -----
+ okToChange
+ 	"If there is no open window, we are fine to close."
+ 	
+ 	^ (self parent ~~ Project current
+ 		or: [self world scheduledControllers size <= 1])
+ 		or: [super okToChange]!

Item was removed:
- ----- Method: MVCProject>>pauseSoundPlayers (in category 'enter') -----
- pauseSoundPlayers
- 	"Pause sound players, subject to preference settings"
- 
- 	Smalltalk at: #ScorePlayer ifPresent:[:playerClass| 
- 		playerClass allSubInstancesDo: [:player | player pause]]!

Item was removed:
- ----- Method: MVCProject>>resetDisplay (in category 'display') -----
- resetDisplay 
- 	"Bring the display to a usable state after handling primitiveError."
- 
- 	world searchForActiveController!

Item was changed:
  ----- Method: MVCProject>>restore (in category 'display') -----
  restore
+ 	"Redraw the entire Project. Ignore errors to keep system responsive."
+ 
+ 	[world displayWorld] on: Error do: [:ex | "Ignore."].!
- 	"Redraw the entire Project"
- 	world "ScheduledControllers" restore.!

Item was removed:
- ----- Method: MVCProject>>restoreDisplay (in category 'display') -----
- restoreDisplay 
- 	"Clear the screen to gray and then redisplay all the scheduled views."
- 
- 	Display extent = DisplayScreen actualScreenSize
- 		ifFalse:
- 			[DisplayScreen startUp.
- 			world unCacheWindows].
- 	world restore!

Item was added:
+ ----- Method: MVCProject>>scheduleProcessForEnter (in category 'enter') -----
+ scheduleProcessForEnter
+ 	"Complete the enter: by launching a new process. Note that we have to use a helper process because MVC will terminate the current process immediately when searching for an active controller. There might, however, be other code to be executed when returning from this call."
+ 
+ 	[world searchForActiveController] newProcess
+ 		priority: Processor userSchedulingPriority;
+ 		resume.!

Item was removed:
- ----- Method: MVCProject>>scheduleProcessForEnter: (in category 'enter') -----
- scheduleProcessForEnter: showZoom
- 	"Complete the enter: by launching a new process"
- 
- 	| newProcess |
- 	SystemWindow clearTopWindow.	"break external ref to this project"
- 	newProcess := [	
- 		world resetActiveController.	"in case of walkback in #restore"
- 		showZoom ifFalse: [world restore].
- 		world searchForActiveController
- 	] newProcess priority: Processor userSchedulingPriority.
- 	newProcess resume.		"lose the current process and its referenced morphs"
- !

Item was changed:
  ----- Method: MVCProject>>setAsBackground: (in category 'utilities') -----
  setAsBackground: aForm
+ 	"Set aForm as a background image."
- 	"Set  aForm as a background image."
  
  	world screenController model form: aForm.
+ 	Display restore.!
- 	Display restoreAfter: []!

Item was removed:
- ----- Method: MVCProject>>setWorldForEmergencyRecovery (in category 'enter') -----
- setWorldForEmergencyRecovery
- 	"Prepare world for enter with an absolute minimum of mechanism.
- 	An unrecoverable error has been detected in an isolated project."
- 
- 	World := nil.
- 	Smalltalk at: #ScheduledControllers put: world.
- 	ScheduledControllers restore
- !

Item was removed:
- ----- Method: MVCProject>>setWorldForEnterFrom:recorder: (in category 'enter') -----
- setWorldForEnterFrom: old recorder: recorderOrNil
- 	"Prepare world for enter."
- 
- 	Smalltalk at: #ScheduledControllers put: world.!

Item was changed:
  ----- Method: MVCProject>>subProjects (in category 'utilities') -----
  subProjects
  	"Answer a list of all the subprojects  of the receiver. "
+ 	
+ 	^ (self world controllersSatisfying: [:m | m model isKindOf: Project]) 
+ 		collect: [:controller | controller model]!
- 	^(world controllersSatisfying: [:m | m model isKindOf: Project]) 
- 		collect: [:c | c model]!

Item was changed:
  ----- Method: MVCProject>>viewLocFor: (in category 'display') -----
  viewLocFor: exitedProject 
  	"Look for a view of the exitedProject, and return its center"
  
+ 	^ (world controllerWhoseModelSatisfies: [:p | p == exitedProject])
+ 		ifNil: [super viewLocFor: exitedProject]
+ 		ifNotNil: [:ctlr | ^ctlr view windowBox center]!
- 	(world controllerWhoseModelSatisfies: [:p | p == exitedProject])
- 		ifNotNil: [:ctlr | ^ctlr view windowBox center].
- 	^Sensor cursorPoint	"default result"!

Item was changed:
  ----- Method: ModalController>>closeAndUnscheduleNoTerminate (in category 'as yet unclassified') -----
  closeAndUnscheduleNoTerminate
  	"Erase the receiver's view and remove it from the collection of scheduled views, but do not terminate the current process."
  
+ 	ScheduledControllers unschedule: self.
  	view erase.
+ 	view release.!
- 	view release.
- 	ScheduledControllers unschedule: self.!

Item was added:
+ ----- Method: Project class>>allMVCProjects (in category '*ST80-Support') -----
+ allMVCProjects
+ 
+ 	^ self allProjects select: [:p | p isMVC]!

Item was changed:
+ ----- Method: Project>>isMVC (in category '*ST80-Testing') -----
- ----- Method: Project>>isMVC (in category '*ST80-testing') -----
  isMVC
  
  	^ false!

Item was changed:
  ----- Method: ScreenController>>closeUnchangedWindows (in category 'menu messages') -----
  closeUnchangedWindows
  	"Close any window that doesn't have unaccepted input."
  
  	| clean |
  	(SelectionMenu confirm:
  'Do you really want to close all windows
  except those with unaccepted edits?')
  		ifFalse: [^ self].
  
  	clean := ScheduledControllers scheduledControllers select:
  		[:c | c model canDiscardEdits and: [(c isKindOf: ScreenController) not]].
  	clean do: [:c | c closeAndUnscheduleNoTerminate].
+ 
+ 	Project current restoreDisplay.
- 	self restoreDisplay.
  !

Item was changed:
  ----- Method: ScreenController>>restoreDisplay (in category 'menu messages') -----
  restoreDisplay 
  	"Clear the screen to gray and then redisplay all the scheduled views."
  
+ 	Project current restoreDisplay.!
- 	Project current restoreDisplay
- !

Item was changed:
  ----- Method: StandardSystemController>>closeAndUnschedule (in category 'scheduling') -----
  closeAndUnschedule
  	"Erase the receiver's view and remove it from the collection of scheduled 
  	views."
  
  	status := #closed.
+ 	ScheduledControllers unschedule: self.
  	view erase.
  	view release.
+ 	ScheduledControllers searchForActiveController.!
- 	ScheduledControllers unschedule: self; searchForActiveController
- !

Item was changed:
  ----- Method: StandardSystemController>>closeAndUnscheduleNoErase (in category 'scheduling') -----
  closeAndUnscheduleNoErase
  	"Remove the scheduled view from the collection of scheduled views. Set 
  	its status to closed but do not erase."
  
  	status := #closed.
+ 	ScheduledControllers unschedule: self.
+ 	view release.!
- 	view release.
- 	ScheduledControllers unschedule: self!

Item was changed:
  ----- Method: StandardSystemController>>closeAndUnscheduleNoTerminate (in category 'scheduling') -----
  closeAndUnscheduleNoTerminate
  	"Erase the receiver's view and remove it from the collection of scheduled views, but do not terminate the current process."
  
  	status := #closed.
+ 	ScheduledControllers unschedule: self.	
  	view erase.
  	view release.
- 	ScheduledControllers unschedule: self.
  !

Item was changed:
  ----- Method: StandardSystemController>>controlTerminate (in category 'basic control sequence') -----
  controlTerminate
  	status == #closed
+ 		ifTrue: [
- 		ifTrue: 
- 			[view ~~ nil ifTrue: [view release].
  			ScheduledControllers unschedule: self.
+ 			view ~~ nil ifTrue: [view release].
  			^self].
  	view deEmphasize; cacheBits.
  	view isCollapsed ifFalse: [model modelSleep].!

Item was changed:
  ----- Method: StandardSystemView>>release (in category 'initialize-release') -----
  release
  
+ 	model windowIsClosing; release.
- 	model windowIsClosing.
  	self isCollapsed ifTrue: [savedSubViews do: [:v | v release]].
  	super release.
  !



More information about the Squeak-dev mailing list