Unloading Etoys from Squeak 5.2
Last updated at 6:50 am UTC on 13 June 2018
This page tracks the issues involved in separating Etoys into a separate package in
Steps for unloading Etyos
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 ...
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.
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.
And then the next problem is
aButton label: 'save' translated font: (aFont := ScriptingSystem fontForTiles).
The method #fontForTiles is not known anymore.
Re-test the unloading process and do fixes until it runs smoothly. Report the results on this page.