[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
|