Interesting--what about input? Timing-dependencies? that sort of thing??
While thinking about the consequences of my proposal to use shift-click to get references to objects I got the idea that it would be useful to write all changes to the Self world to a log file so you can later use this information to create module information, return to earlier stages by using only the part before some error occured, ...
To do this you have to store all top messages send by the user to objects, i.e. only that from an evaluator or triggered by a menu or a button, not the resulting messages.
For this you need the references to the receiver objects of all the top messages. Here you can use the global names of the well-known objects. The problem is how to refer to not-well-known objects. As you can only send messages to those not-well-known objects which are visible in your GUI you can maintain symbolic references to all those objects e.g in an appropriate dictionary or in that one already used by the GUI system. In order to be independent from the absolut value of the object reference you have to use symbolic references in the log file.
Every time you show an object (morph or arbitrary outliner) you register under an unique symbolic reference
- the message that led to this grafical appearance
- the concrete object-reference(s) of the created morph object (and of
the object that receives messages through this morph object in the case of an outliner).
You have to distinguish between messages sent to the outliner and messages sent to the object that the outliner stands for. I think if you enlarge the functionality of the evaluator or other GUI specific stuff that starts sending of messages to the object behind it you get it very easy.
When you dismiss the grafical object than you remove the object-references of both outliner and reflectee and they may rest in peace if not longer needed.
Pointer grabbing and argument picking (great word!) make no problems because the referenced object are handled in absolute the same way as the receiver objects.