The Trunk: ST80-dtl.204.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: ST80-dtl.204.mcz

commits-2
David T. Lewis uploaded a new version of ST80 to project The Trunk:
http://source.squeak.org/trunk/ST80-dtl.204.mcz

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

Name: ST80-dtl.204
Author: dtl
Time: 30 April 2016, 3:19:53.457686 pm
UUID: acbcf1f1-f922-49b2-a551-cc7bcec09d61
Ancestors: ST80-mt.203

Simplify unloading and reloading MVC.

Originally described circa Squeak 4.1: http://lists.squeakfoundation.org/pipermail/squeak-dev/2010-February/144305.html

The original SystemImage>>zapMVCProjects method is reimplemented as MVCProject class>>removeProjectsFromSystem.

To completely remove MVC: "MVCProject unloadMVC".

To reinstall MVC, load packages ST80, ST880Tools, ST80Tests, and ToolBuild-MVC from the trunk repository.

Note - unloading MVC when the current project is MVC should work, but does not.

=============== Diff against ST80-mt.203 ===============

Item was added:
+ ----- 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 added:
+ ----- 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"
+
+ self removeProjectsFromSystem.
+ ScheduledControllers := nil.
+ { 'ToolBuilder-MVC' . 'ST80Tests' . 'ST80Tools' . 'ST80' }
+ do: [ :package | (MCPackage named: package) unload ].
+
+ !