How to unload Etoys from Squeak 5.2
Last updated at 7:48 am UTC on 21 August 2020
This page tracks the issues involved in separating Etoys into a separate package in
As of August 2020 unloading Etoys from Squeak 5.2 through the Monticello browser only as shown below leaves the mouse responsive but the world menu can not be brought up anymore.
However following the preparatory steps given in How to unload Etoys from Squeak 5.3 and the ones after unloading gives you a fairly good result also in Squeak 5.2.
Steps for unloading Etoys
0. Use the top project and prepare the image by reclassifying the method isVirtualScreen as described in (How to unload Etoys from Squeak 5.3)
1. Open a Monticello browser,
2. Right click on Etoys package
3. select unload
4. Wait until the package is unloaded
5. In a SystemBrowser select class 'Morph' and click in the method categories pane: select 'remove empty categories'.
How to check the result
6. Bring up a halo menu on any Morph, click on viewer (eye) button. I
7. This should open an Inspector instead of an Etoys Viewer
8. Bring up World menu and click on bobjects/b
9. This should open aPartsBin. Check if there are no DNU.
Notes about current problems to review
Tim Felgentreff writes
Etoys unload works in a 5.2 image as well as it did in 5.0, before the merge. Even in a 5.0
image before the merge, unloading Etoys has removed some important methods that are send to all morphs from code in Morphic-Kernel and thus (unless
you are extremely careful), you'll end up in the emergency evaluator after a while.
Just reverting the merge won't help you, even then you'll have to go through and actually fix all
those arguably mis-categorized methods and classes to get Etoys to unload cleanly.
But after moving a few more methods (scale, positionInWorld), the PartsBin also works, now without all the Etoys stuff.
Earlier notes, to check if they are still relevant
Unloading works to a certain extent but problems remain. More tests and fixes needed.
Problem inImage: Squeak5.2alpha latest update: #18074
Menu 'Project' -> 'New project' -> 'New MorphicProject'
"Answer a list of all the morphs that pertain to tile-scripting. A sledge-hammer"
| all morphs |
morphs := IdentitySet new: 400.
self allMorphsAndBookPagesInto: morphs.
all := morphs select: [:s | s isTileScriptingElement].
" self closedViewerFlapTabs do:
[:aTab | all addAll: aTab referent allTileScriptingElements].
^ all asOrderedCollection
The method #isTileScriptingElement is no longer implemented.
There needs to be a guard an then an empty collection returned.
Probably better one method call earlier:
"Set the project's natural language as indicated"
ActiveWorld allTileScriptingElements do: [:viewerOrScriptor |
This does not need to be done if there is no Etoys.