<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><span style="font-family:arial,sans-serif;color:rgb(34,34,34)">On Fri, Oct 6, 2017 at 2:44 PM, David T. Lewis </span><span dir="ltr" style="font-family:arial,sans-serif;color:rgb(34,34,34)"><<a href="mailto:lewis@mail.msen.com" target="_blank">lewis@mail.msen.com</a>></span><span style="font-family:arial,sans-serif;color:rgb(34,34,34)"> wrote:</span><br></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
So we might have some kind of rule in project loading that says "if<br>
the current project is an EtoysProject, and if I am loading a *.pr for<br>
a MorphicProject, then make it an EtoysProject". And perhaps when saving<br>
a project, we could reverse the rule and always save a project as<br>
MorphicProject, because we know that a loader in EtoysProject will know<br>
how to do the right thing with it.<br></blockquote><div><br></div><div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">​Actually, projects saved from the Squeakland image store a class named "Project​". Since this has been made abstract now, we instead load it as MorphicProject.</div></div><div><br></div><div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">​The logic is mostly in SmartRefStream, in this case, #initKnownRenames.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">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.</div></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I can see now that I misunderstood one important thing. I was assuming that<br>
a new EtoysProject would open up with a playfield like the one I see when<br>
I first start a normal Etoys image. But I see now this is wrong, an Etoys<br>
project should initially have an empty playfield, but perhaps there is a<br>
one-time setup that happens the very first time that I enter a new EtoysProject<br>
from the world of "normal Squeak". So maybe if I enter a new EtoysProject<br>
from a MorphicProject or MVCProject, it will automatically load some<br>
initial project that sets up the welcoming playfield with a car driving<br>
around, but when I load or create new EtoysProjects from there, the new<br>
projects would just start with empty playfields.<br>
<br>
Am I guessing right?<br></blockquote><div><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">The only difference in an Etoys project is the initial screen layout, yes. Basically, the menu bar should be replaced with the navigator bar. In theory this should just flip a couple of preferences. I'm not sure why a special "EtoysProject" class would be useful.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">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.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">UI-wise I'd think in any kind of project there should just be a plain "new project" menu item that would create the same kind of project (MVC/Morphic/etc) as the current one. And only in addition to that would I add items to create other kinds of projects.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">- Bert -​</div></div></div></div>