Dave,
I started with an updated trunk image 6.0a-17435.
Then I manually loaded from
MCHttpRepository location: 'http://www.squeaksource.com/EtoysProject' user: '' password: ''
Name: System-dtl.970 Name: Collections-dtl.765 Name: System-dtl.970
I created a new (empty) 'Etoys project' by choosing 'Projects -> New project -> New Etoys project'.
=> an empty pr file was created with an Etoys docking bar, actually called 'Sugar Navigator Flap'.
In a workspace
Project current an EtoysProject (Unnamed2) in a PasteUpMorph(3017056) [world]
Then I dropped a pr-file into that project and was expecting that a EtoysProject will result. But I still got
Project current Project current a MorphicProject (JHexagon2) in a PasteUpMorph<world>(715845) [world]
To load a pr file which contains an Etoys project as an EtoysProject makes sense.
An Etoys project is a MorphicProject (isa-relationship).
MorphicProject subclass: #EtoysProject
So I wonder why the imported project object was not set to be an EtoysProject instance. I do not have the time to further look into the issue at the moment.
--Hannes
On 10/23/17, H. Hirzel hannes.hirzel@gmail.com wrote:
On 10/19/17, David T. Lewis lewis@mail.msen.com wrote:
Hannes,
Thank you for this summary, it helps a lot. I can load the project,
Dave, that implies that you do not have the graphics problem Marcel encountered, is this correct?
and I note that my VM crashes fairly often when playing with this, so that that will give me something to look into :-)
I don't have time to look further now, but the (old) VM I am using at the moment is:
/usr/local/lib/squeak/5.0-201608171728-64/squeak Croquet Closure Cog[Spur] VM [CoInterpreterPrimitives VMMaker.oscog-cb.1919] Unix built on Sep 25 2016 15:59:10 Compiler: 4.6.3 platform sources revision VM: 201608171728 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $ Date: Wed Aug 17 10:28:01 2016 -0700 $ Plugins: 201608171728 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $ CoInterpreter VMMaker.oscog-cb.1919 uuid: 00a8dd2a-bc8d-4552-b400-be781c8aabec Sep 25 2016 StackToRegisterMappingCogit VMMaker.oscog-cb.1919 uuid: 00a8dd2a-bc8d-4552-b400-be781c8aabec Sep 25 2016
Dave
On Thu, Oct 19, 2017 at 08:48:08AM +0200, H. Hirzel wrote:
Update: It is now possible to load a project such as home.pr into the 6.0a trunk image. Drop a pr file (downloaded from https://freudenbergs.de/bert/squeakjs/Etoys/Home.007.pr) onto the desktop and it loads without blocking. This is due to fixes done this month so far.
The following notes are written in a way that you can jump in helping to finalize Etoys project loading and setup without having read the earlier messages in this thread.
Issues:
- Walkback window left on screen after loading
A walk-back window still comes up after home.pr has been loaded. The reason for this still needs to be found out. But just closing the window does not seem to have a negative effect to the functioning of the etoys project.
- Etoys tiles (TileMorph)
Incrementing and decrementing values in tiles has been fixed so that it is possible to use the project. It was a problem related to the Environment code.
More tests using the tiles are needed to see if there are more problems such as this.
- Loading pr files
Please help testing with loading different pr files. Other loading problems are likely to come up. Focus on projects created with Etoys5. ( http://squeakland.org/download/).
Etoys 5.0 uses the image format 6502 (http://wiki.squeak.org/squeak/6502). Loading of this format is done in Smalltalk code (not VM code) in 6.0a trunk (class LegacyImageSegment / ImageSegmentLoader). [1]
SmartRefStream does the conversion of the loaded objects if necessary.
- Cleanup of a loaded project
A loaded project is not yet properly set up. The button 'previous project' does not work.
To fix this
EtoysProject >> #finalEnterActions:
needs to be set up.
The call
self world actionMap removeKey: #aboutToLeaveWorld
as discussed earlier in this thread is one a cleanup actions to be here.
When loading a pr file an instance of MorphicProject is created as currently
MorphicProject->EtoysProject
has not been mapped yet in SmartRefStream initKnownRenames. This needs to be done.
--Hannes
[1] There are quite a number of etoys pr files around which are not in the 6502 format. http://wiki.squeak.org/squeak/6502
To fix this other versions of LegacyImageSegment / ImageSegmentLoader are probably necessary.
On 10/14/17, Marcel Taeumel marcel.taeumel@hpi.de wrote:
Hi Hannes,
if you have project instances that need clean-up, you can put that code at one of several checkpoints:
- entering a project (EtoysProject >> #finalEnterActions:)
- leaving a project (EtoysProject >> #finalExitActions:)
- loading/merging a Monticello package (see postLoad scripts)
- quitting the Squeak image (EtoysProject class >> #shutDown:)
- resuming the Squeak image (EtoysProject class >> #startUp:)
- loading a ChangeSet (see postLoad scripts)
Or if you plan to persist Etoys project in the file system, clean them up manually (e.g. with a workspace and object inspector) and write the clean version back to disk for everybody to share.
Best, Marcel
Am 14.10.2017 12:21:20 schrieb H. Hirzel hannes.hirzel@gmail.com: Thank you Dave for reviewing and merging and committing Morphic-hjh.1349.mcz.
One of the next issues is that the loaded Etoys project has a key
#aboutToLeaveWorld
in the actionMap which causes an error message to appear when leaving the project.
Executing
Project current world actionMap removeKey: #aboutToLeaveWorld
or just
self world actionMap removeKey: #aboutToLeaveWorld
if not called from a workspace
solves that problem.
But I am not sure if this is the right thing to do and where to put this.
The event mechanism is not used much in Squeak6.0a. (see thread: 'PasteUpMorph>>#removeModalWindow has been deprecated --- what do we need to do?', in particular answer by Bob Arning')
Another issue is that
SugarNavigatorBar showSugarNavigator: true.
needs to be called.
A third question: In which directory should the three projects to preload stay? ( Section 3 on http://wiki.squeak.org/squeak/6531)
Smalltalk imagePath
?
--Hannes
On 10/13/17, H. Hirzel wrote:
Thank you Bert for the links to the regular three projects (home, gallery, tutorials) and the background information.
Update
for the most recent trunk image Squeak6.0a-17417 with Morphic-hjh.1349.mcz loaded manually from the inbox:
https://freudenbergs.de/bert/squeakjs/Etoys/Home.007.pr
loads, and works but brings up an error window regarding a #script1.
The car is moving around.
To leave the project you need to open a workspace and paste and execute Project current world actionMap removeKey: #aboutToLeaveWorld
The menu entry 'previous project' works fine.
- Hannes -
On 10/10/17, Bert Freudenberg wrote:
On Sat, Oct 7, 2017 at 2:17 AM, David T. Lewis wrote:
> On Fri, Oct 06, 2017 at 03:48:56PM +0200, Bert Freudenberg wrote: > > It's all class-based. E.g. if the shape of a class changed (new / > > renamed > > inst vars) that class can provide a "conversion method" that > > creates > > an > > instance with the new layout from the old inst vars (that are > > loaded > > as > > a > > dictionary). There still is a preference > > (conversionMethodsAtFileOut) > that > > used to prompt people to provide these conversion methods when > > they > changed > > a class. But it didn't survive the transition to Monticello, we > > now > > have > to > > remember to write conversion methods for instances that may be > > stored > > in > a > > project. > > To check my understanding, the "conversion method" might be > something > like > #storeDataOn: and #readDataFrom:size: like what I described for > DateAndTime, > is that right? >
???No, it's those weirdly-named methods like Hannes just made in Morphic-hjh.1349.mcz. The store / read methods aren't used per-object. This would have been too expensive back in the interpreter days on slow CPUs, that's why the project is stored as an image-segment, and the segment is written to a SmartRefStream with its out-pointers (references to objects outside the segment, e.g. classes).
The SmartRefStream is only used to resolve the class references from the ImageSegment that stores the project.
> This is different from the Etoys home screen (the clouds and > drive-a-car) > > which is simply a project that would be loaded by the deployment > > script > > that creates an Etoys image. It does not have to ship with the > > general > > Squeak image. > > I do not know if it will make sense, but I guess my mental image is > an > Etoys "deployed image" hosted inside my regular Squeak trunk image. > So > I > guess that I am thinking of the "clouds and drive-a-car" project > being > loaded the first time that I create a new EtoysProject from normal > Squeak, > and that somehow the subsequent project navigation within that new > "hosted" > Etoys would behave is if I were in a stand-alone Etoys image. > Finally, > I would want to be able to escape back to my normal Squeak.
???That sounds good :)
- Bert -???