MorphicProject subclass: #EtoysProject

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
74 messages Options
1234
Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

David T. Lewis
Hannes,

You did not cause the problem. It may have been me, I saved the squeaksource.com
image from a VNC session (because I wanted to make an up to date backup of it),
and I am now unable to log in to squeaksource. Maybe I triggered a bug :-/

Can you please tell me if you are able to log in to your http://squeaksource.com
page? I am getting authorization errors, and I suspect it is a problem that affects
everyone.

Thanks,
Dave

On Thu, Oct 05, 2017 at 01:52:35AM +0200, H. Hirzel wrote:

> Dave,
>
> Yes, I encounter problems. They might be related to what I just tried to do:
>
> I wanted to save an updated version of Morphic to the ProjectEtoys
> repository  but by mistake I tried to commit it to the trunk. As I do
> not have commit rights to trunk this prevented me from changing it
> inadvertently. Later on I wanted to commit that version to
> ProjectEtoys. It did not work.
>
> --Hannes
>
>
>
> On 10/5/17, David T. Lewis <[hidden email]> wrote:
> > I'm seeing problems with SqueakSource right now, trying to figure out
> > what is wrong. So the project may not be accessible right now :-/
> >
> > Dave
> >
> >
> > On Thu, Oct 05, 2017 at 01:17:58AM +0200, H. Hirzel wrote:
> >> Karl,
> >>
> >> So far entering and existing the Etoys project works smoothly.
> >>
> >> Load mcz from into current Squeak 6.0a
> >>
> >> MCHttpRepository
> >>     location: 'http://www.squeaksource.com/EtoysProject'
> >>     user: ''
> >>     password: ''
> >>
> >> The issue is about providing more settings when entering.
> >>
> >> Karl, do you want to be added to the list of developers?
> >>
> >> --HH
> >>
> >> On 10/5/17, H. Hirzel <[hidden email]> wrote:
> >> > PasteUpMorph is useful and the functions have to be maintained.
> >> >
> >> > However adding more functions to Morph does not make sense.
> >> >
> >> > Squeak 6.0a
> >> > Morph selectors size  1345
> >> > PasteUpMorph selectors size  530
> >> >
> >> > --Hannes
> >> >
> >> > On 10/4/17, karl ramberg <[hidden email]> wrote:
> >> >> I'm not sure anybody uses Etoys anymore, but PasteUpMorph is very
> >> >> useful
> >> >> in
> >> >> direct manipulation because of it's various layout and event handling
> >> >> options.  It also act as a container of other morphs, with automatic
> >> >> layout, enumeration etc.
> >> >> I'm sure most of this could be refactored into Morph class or another
> >> >> class.
> >> >>
> >> >> Best,
> >> >> Karl
> >> >>
> >> >> On Tue, Oct 3, 2017 at 3:03 PM, Marcel Taeumel <[hidden email]>
> >> >> wrote:
> >> >>
> >> >>> +1 :)
> >> >>>
> >> >>> And then later: Rename PasteUpMorph to WorldMorph, and keep an empty
> >> >>> PasteUpMorph subclass around for compatibility reasons. So many ideas
> >> >>> have
> >> >>> been ported down to Morph class over the past years. New applications
> >> >>> have
> >> >>> no reason to ever use other instances of PasteUpMorph.
> >> >>>
> >> >>> Best,
> >> >>> Marcel
> >> >>>
> >> >>> Am 03.10.2017 14:57:55 schrieb H. Hirzel <[hidden email]>:
> >> >>> On 10/3/17, H. Hirzel wrote:
> >> >>> > Dave
> >> >>> >
> >> >>> > your change set contains the class EtoysProject with
> >> >>> >
> >> >>> > EtoysProject selectors
> >> >>> >
> >> >>> > #(#finalEnterActions: #restoreGlobalPreferences
> >> >>> > #saveGlobalPreferences
> >> >>> > #initializeProjectPreferences #configureOnFirstEntry
> >> >>> > #finalExitActions:)
> >> >>> >
> >> >>> > For complete configuration of a EtoysProject it might be necessary
> >> >>> > to
> >> >>> > do
> >> >>> >
> >> >>> > PasteUpMorph subclass: EtoysPasteUpMorph
> >> >>> >
> >> >>> > as well. http://wiki.squeak.org/squeak/6461
> >> >>> >
> >> >>> > Then Etoys related methods may be pushed down to EtoysPasteUpMorph.
> >> >>>
> >> >>> See screen shot attached.
> >> >>>
> >> >>> > And probably an Etoys specific subclass of WorldMenu would be fine
> >> >>> > as
> >> >>> well
> >> >>> > http://wiki.squeak.org/squeak/6461
> >> >>> >
> >> >>> >
> >> >>> > there is a test project [2] and some more information about
> >> >>> > adaptions
> >> >>> > needed because of the UI changes in the thread 'Etoys in 2017?' - UI
> >> >>> > preferences [3]. And it would be good to have Etoys methods /
> >> >>> > configuration separate [4].
> >> >>> >
> >> >>> > I suggest that you start go ahead and start implementing this while
> >> >>> > using a test Etoys project dropped onto the desktop.
> >> >>> >
> >> >>> > --Hannes
> >> >>> >
> >> >>> >
> >> >>> > [2] > You simply drop it in. E.g. download this project
> >> >>> >> http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
> >> >>> >
> >> >>> > [3] Hannes Hirzel, 'Etoys in 2017?' mail, Wed, Feb 22, 2017 at 11:01
> >> >>> > AM
> >> >>> >
> >> >>> > [4] David T. Lewis, Sep 4, 2016 at 3:34 PM
> >> >>> > "I think it would be great if both Etoys and Scratch were easily
> >> >>> > loadable and unloadable in trunk."
> >> >>> >
> >> >>> > On 10/2/17, David T. Lewis wrote:
> >> >>> >> An EtoysProject is a project that is configured for running Etoys.
> >> >>> >> On
> >> >>> >> first entry to a new EtoysProject, the playground and project
> >> >>> preferences
> >> >>> >> are initialized to provide an environment similar to that of a
> >> >>> >> traditional
> >> >>> >> standalone Etoys image.
> >> >>> >>
> >> >>> >> Certain preferences that are required for Etoys are initialized on
> >> >>> >> project
> >> >>> >> entry, overriding their global preference values while this
> >> >>> EtoysProject
> >> >>> >> is active. On leaving the project, these preferences are restored
> >> >>> >> to
> >> >>> >> their
> >> >>> >> previous values.
> >> >>> >>
> >> >>> >> "ProjectViewMorph openOn: EtoysProject new"
> >> >>> >>
> >> >>> >> Change set attached for a minimal implementation.
> >> >>> >>
> >> >>> >> Anyone with Etoys knowledge care to help? I do not know enough
> >> >>> >> about
> >> >>> >> Etoys
> >> >>> >> to fill in the rest of the initialization that will be required,
> >> >>> >> but
> >> >>> >> it
> >> >>> >> should not be hard to do.
> >> >>> >>
> >> >>> >> Dave
> >> >>> >>
> >> >>> >>
> >> >>> >
> >> >>>
> >> >>>
> >> >>>
> >> >>>
> >> >>>
> >> >>
> >> >
> >
> >
> >>
> >
> >
> >
>

Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

Hannes Hirzel
Dave

Earlier today login worked. Currently it does not.

--Hannes

On 10/5/17, David T. Lewis <[hidden email]> wrote:

> Hannes,
>
> You did not cause the problem. It may have been me, I saved the
> squeaksource.com
> image from a VNC session (because I wanted to make an up to date backup of
> it),
> and I am now unable to log in to squeaksource. Maybe I triggered a bug :-/
>
> Can you please tell me if you are able to log in to your
> http://squeaksource.com
> page? I am getting authorization errors, and I suspect it is a problem that
> affects
> everyone.
>
> Thanks,
> Dave
>
> On Thu, Oct 05, 2017 at 01:52:35AM +0200, H. Hirzel wrote:
>> Dave,
>>
>> Yes, I encounter problems. They might be related to what I just tried to
>> do:
>>
>> I wanted to save an updated version of Morphic to the ProjectEtoys
>> repository  but by mistake I tried to commit it to the trunk. As I do
>> not have commit rights to trunk this prevented me from changing it
>> inadvertently. Later on I wanted to commit that version to
>> ProjectEtoys. It did not work.
>>
>> --Hannes
>>
>>
>>
>> On 10/5/17, David T. Lewis <[hidden email]> wrote:
>> > I'm seeing problems with SqueakSource right now, trying to figure out
>> > what is wrong. So the project may not be accessible right now :-/
>> >
>> > Dave
>> >
>> >
>> > On Thu, Oct 05, 2017 at 01:17:58AM +0200, H. Hirzel wrote:
>> >> Karl,
>> >>
>> >> So far entering and existing the Etoys project works smoothly.
>> >>
>> >> Load mcz from into current Squeak 6.0a
>> >>
>> >> MCHttpRepository
>> >>     location: 'http://www.squeaksource.com/EtoysProject'
>> >>     user: ''
>> >>     password: ''
>> >>
>> >> The issue is about providing more settings when entering.
>> >>
>> >> Karl, do you want to be added to the list of developers?
>> >>
>> >> --HH
>> >>
>> >> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>> >> > PasteUpMorph is useful and the functions have to be maintained.
>> >> >
>> >> > However adding more functions to Morph does not make sense.
>> >> >
>> >> > Squeak 6.0a
>> >> > Morph selectors size  1345
>> >> > PasteUpMorph selectors size  530
>> >> >
>> >> > --Hannes
>> >> >
>> >> > On 10/4/17, karl ramberg <[hidden email]> wrote:
>> >> >> I'm not sure anybody uses Etoys anymore, but PasteUpMorph is very
>> >> >> useful
>> >> >> in
>> >> >> direct manipulation because of it's various layout and event
>> >> >> handling
>> >> >> options.  It also act as a container of other morphs, with automatic
>> >> >> layout, enumeration etc.
>> >> >> I'm sure most of this could be refactored into Morph class or
>> >> >> another
>> >> >> class.
>> >> >>
>> >> >> Best,
>> >> >> Karl
>> >> >>
>> >> >> On Tue, Oct 3, 2017 at 3:03 PM, Marcel Taeumel
>> >> >> <[hidden email]>
>> >> >> wrote:
>> >> >>
>> >> >>> +1 :)
>> >> >>>
>> >> >>> And then later: Rename PasteUpMorph to WorldMorph, and keep an
>> >> >>> empty
>> >> >>> PasteUpMorph subclass around for compatibility reasons. So many
>> >> >>> ideas
>> >> >>> have
>> >> >>> been ported down to Morph class over the past years. New
>> >> >>> applications
>> >> >>> have
>> >> >>> no reason to ever use other instances of PasteUpMorph.
>> >> >>>
>> >> >>> Best,
>> >> >>> Marcel
>> >> >>>
>> >> >>> Am 03.10.2017 14:57:55 schrieb H. Hirzel <[hidden email]>:
>> >> >>> On 10/3/17, H. Hirzel wrote:
>> >> >>> > Dave
>> >> >>> >
>> >> >>> > your change set contains the class EtoysProject with
>> >> >>> >
>> >> >>> > EtoysProject selectors
>> >> >>> >
>> >> >>> > #(#finalEnterActions: #restoreGlobalPreferences
>> >> >>> > #saveGlobalPreferences
>> >> >>> > #initializeProjectPreferences #configureOnFirstEntry
>> >> >>> > #finalExitActions:)
>> >> >>> >
>> >> >>> > For complete configuration of a EtoysProject it might be
>> >> >>> > necessary
>> >> >>> > to
>> >> >>> > do
>> >> >>> >
>> >> >>> > PasteUpMorph subclass: EtoysPasteUpMorph
>> >> >>> >
>> >> >>> > as well. http://wiki.squeak.org/squeak/6461
>> >> >>> >
>> >> >>> > Then Etoys related methods may be pushed down to
>> >> >>> > EtoysPasteUpMorph.
>> >> >>>
>> >> >>> See screen shot attached.
>> >> >>>
>> >> >>> > And probably an Etoys specific subclass of WorldMenu would be
>> >> >>> > fine
>> >> >>> > as
>> >> >>> well
>> >> >>> > http://wiki.squeak.org/squeak/6461
>> >> >>> >
>> >> >>> >
>> >> >>> > there is a test project [2] and some more information about
>> >> >>> > adaptions
>> >> >>> > needed because of the UI changes in the thread 'Etoys in 2017?' -
>> >> >>> > UI
>> >> >>> > preferences [3]. And it would be good to have Etoys methods /
>> >> >>> > configuration separate [4].
>> >> >>> >
>> >> >>> > I suggest that you start go ahead and start implementing this
>> >> >>> > while
>> >> >>> > using a test Etoys project dropped onto the desktop.
>> >> >>> >
>> >> >>> > --Hannes
>> >> >>> >
>> >> >>> >
>> >> >>> > [2] > You simply drop it in. E.g. download this project
>> >> >>> >> http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>> >> >>> >
>> >> >>> > [3] Hannes Hirzel, 'Etoys in 2017?' mail, Wed, Feb 22, 2017 at
>> >> >>> > 11:01
>> >> >>> > AM
>> >> >>> >
>> >> >>> > [4] David T. Lewis, Sep 4, 2016 at 3:34 PM
>> >> >>> > "I think it would be great if both Etoys and Scratch were easily
>> >> >>> > loadable and unloadable in trunk."
>> >> >>> >
>> >> >>> > On 10/2/17, David T. Lewis wrote:
>> >> >>> >> An EtoysProject is a project that is configured for running
>> >> >>> >> Etoys.
>> >> >>> >> On
>> >> >>> >> first entry to a new EtoysProject, the playground and project
>> >> >>> preferences
>> >> >>> >> are initialized to provide an environment similar to that of a
>> >> >>> >> traditional
>> >> >>> >> standalone Etoys image.
>> >> >>> >>
>> >> >>> >> Certain preferences that are required for Etoys are initialized
>> >> >>> >> on
>> >> >>> >> project
>> >> >>> >> entry, overriding their global preference values while this
>> >> >>> EtoysProject
>> >> >>> >> is active. On leaving the project, these preferences are
>> >> >>> >> restored
>> >> >>> >> to
>> >> >>> >> their
>> >> >>> >> previous values.
>> >> >>> >>
>> >> >>> >> "ProjectViewMorph openOn: EtoysProject new"
>> >> >>> >>
>> >> >>> >> Change set attached for a minimal implementation.
>> >> >>> >>
>> >> >>> >> Anyone with Etoys knowledge care to help? I do not know enough
>> >> >>> >> about
>> >> >>> >> Etoys
>> >> >>> >> to fill in the rest of the initialization that will be required,
>> >> >>> >> but
>> >> >>> >> it
>> >> >>> >> should not be hard to do.
>> >> >>> >>
>> >> >>> >> Dave
>> >> >>> >>
>> >> >>> >>
>> >> >>> >
>> >> >>>
>> >> >>>
>> >> >>>
>> >> >>>
>> >> >>>
>> >> >>
>> >> >
>> >
>> >
>> >>
>> >
>> >
>> >
>>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

David T. Lewis
On Thu, Oct 05, 2017 at 02:03:47AM +0200, H. Hirzel wrote:
> Dave
>
> Earlier today login worked. Currently it does not.

Hannes,

Thanks for confirming.

I sent some updates to the box-admins list and a notification to squeak-dev.

Dave


>
> On 10/5/17, David T. Lewis <[hidden email]> wrote:
> > Hannes,
> >
> > You did not cause the problem. It may have been me, I saved the
> > squeaksource.com
> > image from a VNC session (because I wanted to make an up to date backup of
> > it),
> > and I am now unable to log in to squeaksource. Maybe I triggered a bug :-/
> >
> > Can you please tell me if you are able to log in to your
> > http://squeaksource.com
> > page? I am getting authorization errors, and I suspect it is a problem that
> > affects
> > everyone.
> >
> > Thanks,
> > Dave
> >
> > On Thu, Oct 05, 2017 at 01:52:35AM +0200, H. Hirzel wrote:
> >> Dave,
> >>
> >> Yes, I encounter problems. They might be related to what I just tried to
> >> do:
> >>
> >> I wanted to save an updated version of Morphic to the ProjectEtoys
> >> repository  but by mistake I tried to commit it to the trunk. As I do
> >> not have commit rights to trunk this prevented me from changing it
> >> inadvertently. Later on I wanted to commit that version to
> >> ProjectEtoys. It did not work.
> >>
> >> --Hannes
> >>
> >>
> >>
> >> On 10/5/17, David T. Lewis <[hidden email]> wrote:
> >> > I'm seeing problems with SqueakSource right now, trying to figure out
> >> > what is wrong. So the project may not be accessible right now :-/
> >> >
> >> > Dave
> >> >
> >> >
> >> > On Thu, Oct 05, 2017 at 01:17:58AM +0200, H. Hirzel wrote:
> >> >> Karl,
> >> >>
> >> >> So far entering and existing the Etoys project works smoothly.
> >> >>
> >> >> Load mcz from into current Squeak 6.0a
> >> >>
> >> >> MCHttpRepository
> >> >>     location: 'http://www.squeaksource.com/EtoysProject'
> >> >>     user: ''
> >> >>     password: ''
> >> >>
> >> >> The issue is about providing more settings when entering.
> >> >>
> >> >> Karl, do you want to be added to the list of developers?
> >> >>
> >> >> --HH
> >> >>
> >> >> On 10/5/17, H. Hirzel <[hidden email]> wrote:
> >> >> > PasteUpMorph is useful and the functions have to be maintained.
> >> >> >
> >> >> > However adding more functions to Morph does not make sense.
> >> >> >
> >> >> > Squeak 6.0a
> >> >> > Morph selectors size  1345
> >> >> > PasteUpMorph selectors size  530
> >> >> >
> >> >> > --Hannes
> >> >> >
> >> >> > On 10/4/17, karl ramberg <[hidden email]> wrote:
> >> >> >> I'm not sure anybody uses Etoys anymore, but PasteUpMorph is very
> >> >> >> useful
> >> >> >> in
> >> >> >> direct manipulation because of it's various layout and event
> >> >> >> handling
> >> >> >> options.  It also act as a container of other morphs, with automatic
> >> >> >> layout, enumeration etc.
> >> >> >> I'm sure most of this could be refactored into Morph class or
> >> >> >> another
> >> >> >> class.
> >> >> >>
> >> >> >> Best,
> >> >> >> Karl
> >> >> >>
> >> >> >> On Tue, Oct 3, 2017 at 3:03 PM, Marcel Taeumel
> >> >> >> <[hidden email]>
> >> >> >> wrote:
> >> >> >>
> >> >> >>> +1 :)
> >> >> >>>
> >> >> >>> And then later: Rename PasteUpMorph to WorldMorph, and keep an
> >> >> >>> empty
> >> >> >>> PasteUpMorph subclass around for compatibility reasons. So many
> >> >> >>> ideas
> >> >> >>> have
> >> >> >>> been ported down to Morph class over the past years. New
> >> >> >>> applications
> >> >> >>> have
> >> >> >>> no reason to ever use other instances of PasteUpMorph.
> >> >> >>>
> >> >> >>> Best,
> >> >> >>> Marcel
> >> >> >>>
> >> >> >>> Am 03.10.2017 14:57:55 schrieb H. Hirzel <[hidden email]>:
> >> >> >>> On 10/3/17, H. Hirzel wrote:
> >> >> >>> > Dave
> >> >> >>> >
> >> >> >>> > your change set contains the class EtoysProject with
> >> >> >>> >
> >> >> >>> > EtoysProject selectors
> >> >> >>> >
> >> >> >>> > #(#finalEnterActions: #restoreGlobalPreferences
> >> >> >>> > #saveGlobalPreferences
> >> >> >>> > #initializeProjectPreferences #configureOnFirstEntry
> >> >> >>> > #finalExitActions:)
> >> >> >>> >
> >> >> >>> > For complete configuration of a EtoysProject it might be
> >> >> >>> > necessary
> >> >> >>> > to
> >> >> >>> > do
> >> >> >>> >
> >> >> >>> > PasteUpMorph subclass: EtoysPasteUpMorph
> >> >> >>> >
> >> >> >>> > as well. http://wiki.squeak.org/squeak/6461
> >> >> >>> >
> >> >> >>> > Then Etoys related methods may be pushed down to
> >> >> >>> > EtoysPasteUpMorph.
> >> >> >>>
> >> >> >>> See screen shot attached.
> >> >> >>>
> >> >> >>> > And probably an Etoys specific subclass of WorldMenu would be
> >> >> >>> > fine
> >> >> >>> > as
> >> >> >>> well
> >> >> >>> > http://wiki.squeak.org/squeak/6461
> >> >> >>> >
> >> >> >>> >
> >> >> >>> > there is a test project [2] and some more information about
> >> >> >>> > adaptions
> >> >> >>> > needed because of the UI changes in the thread 'Etoys in 2017?' -
> >> >> >>> > UI
> >> >> >>> > preferences [3]. And it would be good to have Etoys methods /
> >> >> >>> > configuration separate [4].
> >> >> >>> >
> >> >> >>> > I suggest that you start go ahead and start implementing this
> >> >> >>> > while
> >> >> >>> > using a test Etoys project dropped onto the desktop.
> >> >> >>> >
> >> >> >>> > --Hannes
> >> >> >>> >
> >> >> >>> >
> >> >> >>> > [2] > You simply drop it in. E.g. download this project
> >> >> >>> >> http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
> >> >> >>> >
> >> >> >>> > [3] Hannes Hirzel, 'Etoys in 2017?' mail, Wed, Feb 22, 2017 at
> >> >> >>> > 11:01
> >> >> >>> > AM
> >> >> >>> >
> >> >> >>> > [4] David T. Lewis, Sep 4, 2016 at 3:34 PM
> >> >> >>> > "I think it would be great if both Etoys and Scratch were easily
> >> >> >>> > loadable and unloadable in trunk."
> >> >> >>> >
> >> >> >>> > On 10/2/17, David T. Lewis wrote:
> >> >> >>> >> An EtoysProject is a project that is configured for running
> >> >> >>> >> Etoys.
> >> >> >>> >> On
> >> >> >>> >> first entry to a new EtoysProject, the playground and project
> >> >> >>> preferences
> >> >> >>> >> are initialized to provide an environment similar to that of a
> >> >> >>> >> traditional
> >> >> >>> >> standalone Etoys image.
> >> >> >>> >>
> >> >> >>> >> Certain preferences that are required for Etoys are initialized
> >> >> >>> >> on
> >> >> >>> >> project
> >> >> >>> >> entry, overriding their global preference values while this
> >> >> >>> EtoysProject
> >> >> >>> >> is active. On leaving the project, these preferences are
> >> >> >>> >> restored
> >> >> >>> >> to
> >> >> >>> >> their
> >> >> >>> >> previous values.
> >> >> >>> >>
> >> >> >>> >> "ProjectViewMorph openOn: EtoysProject new"
> >> >> >>> >>
> >> >> >>> >> Change set attached for a minimal implementation.
> >> >> >>> >>
> >> >> >>> >> Anyone with Etoys knowledge care to help? I do not know enough
> >> >> >>> >> about
> >> >> >>> >> Etoys
> >> >> >>> >> to fill in the rest of the initialization that will be required,
> >> >> >>> >> but
> >> >> >>> >> it
> >> >> >>> >> should not be hard to do.
> >> >> >>> >>
> >> >> >>> >> Dave
> >> >> >>> >>
> >> >> >>> >>
> >> >> >>> >
> >> >> >>>
> >> >> >>>
> >> >> >>>
> >> >> >>>
> >> >> >>>
> >> >> >>
> >> >> >
> >> >
> >> >
> >> >>
> >> >
> >> >
> >> >
> >>
> >
> >
>

Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

David T. Lewis
In reply to this post by Hannes Hirzel
We did have a problem on squeaksource.com, but I think it is mostly resolved now.

Hannes,

The password reset for your HJH account was lost, so I set it back to the
new password that I sent to you earlier in private email. Hopefully your
access is working again now.

Marcel,

Your new account disappeared when squeaksource recovered from some internal
problem. Sorry, I do not know the cause. But could I ask you to please register
again on squeaksource.com, and I will then add you back to EtoysProject?

Sorry for the disruption,
Dave


On Thu, Oct 05, 2017 at 02:03:47AM +0200, H. Hirzel wrote:

> Dave
>
> Earlier today login worked. Currently it does not.
>
> --Hannes
>
> On 10/5/17, David T. Lewis <[hidden email]> wrote:
> > Hannes,
> >
> > You did not cause the problem. It may have been me, I saved the
> > squeaksource.com
> > image from a VNC session (because I wanted to make an up to date backup of
> > it),
> > and I am now unable to log in to squeaksource. Maybe I triggered a bug :-/
> >
> > Can you please tell me if you are able to log in to your
> > http://squeaksource.com
> > page? I am getting authorization errors, and I suspect it is a problem that
> > affects
> > everyone.
> >
> > Thanks,
> > Dave
> >
> > On Thu, Oct 05, 2017 at 01:52:35AM +0200, H. Hirzel wrote:
> >> Dave,
> >>
> >> Yes, I encounter problems. They might be related to what I just tried to
> >> do:
> >>
> >> I wanted to save an updated version of Morphic to the ProjectEtoys
> >> repository  but by mistake I tried to commit it to the trunk. As I do
> >> not have commit rights to trunk this prevented me from changing it
> >> inadvertently. Later on I wanted to commit that version to
> >> ProjectEtoys. It did not work.
> >>
> >> --Hannes
> >>
> >>
> >>
> >> On 10/5/17, David T. Lewis <[hidden email]> wrote:
> >> > I'm seeing problems with SqueakSource right now, trying to figure out
> >> > what is wrong. So the project may not be accessible right now :-/
> >> >
> >> > Dave
> >> >
> >> >
> >> > On Thu, Oct 05, 2017 at 01:17:58AM +0200, H. Hirzel wrote:
> >> >> Karl,
> >> >>
> >> >> So far entering and existing the Etoys project works smoothly.
> >> >>
> >> >> Load mcz from into current Squeak 6.0a
> >> >>
> >> >> MCHttpRepository
> >> >>     location: 'http://www.squeaksource.com/EtoysProject'
> >> >>     user: ''
> >> >>     password: ''
> >> >>
> >> >> The issue is about providing more settings when entering.
> >> >>
> >> >> Karl, do you want to be added to the list of developers?
> >> >>
> >> >> --HH
> >> >>
> >> >> On 10/5/17, H. Hirzel <[hidden email]> wrote:
> >> >> > PasteUpMorph is useful and the functions have to be maintained.
> >> >> >
> >> >> > However adding more functions to Morph does not make sense.
> >> >> >
> >> >> > Squeak 6.0a
> >> >> > Morph selectors size  1345
> >> >> > PasteUpMorph selectors size  530
> >> >> >
> >> >> > --Hannes
> >> >> >
> >> >> > On 10/4/17, karl ramberg <[hidden email]> wrote:
> >> >> >> I'm not sure anybody uses Etoys anymore, but PasteUpMorph is very
> >> >> >> useful
> >> >> >> in
> >> >> >> direct manipulation because of it's various layout and event
> >> >> >> handling
> >> >> >> options.  It also act as a container of other morphs, with automatic
> >> >> >> layout, enumeration etc.
> >> >> >> I'm sure most of this could be refactored into Morph class or
> >> >> >> another
> >> >> >> class.
> >> >> >>
> >> >> >> Best,
> >> >> >> Karl
> >> >> >>
> >> >> >> On Tue, Oct 3, 2017 at 3:03 PM, Marcel Taeumel
> >> >> >> <[hidden email]>
> >> >> >> wrote:
> >> >> >>
> >> >> >>> +1 :)
> >> >> >>>
> >> >> >>> And then later: Rename PasteUpMorph to WorldMorph, and keep an
> >> >> >>> empty
> >> >> >>> PasteUpMorph subclass around for compatibility reasons. So many
> >> >> >>> ideas
> >> >> >>> have
> >> >> >>> been ported down to Morph class over the past years. New
> >> >> >>> applications
> >> >> >>> have
> >> >> >>> no reason to ever use other instances of PasteUpMorph.
> >> >> >>>
> >> >> >>> Best,
> >> >> >>> Marcel
> >> >> >>>
> >> >> >>> Am 03.10.2017 14:57:55 schrieb H. Hirzel <[hidden email]>:
> >> >> >>> On 10/3/17, H. Hirzel wrote:
> >> >> >>> > Dave
> >> >> >>> >
> >> >> >>> > your change set contains the class EtoysProject with
> >> >> >>> >
> >> >> >>> > EtoysProject selectors
> >> >> >>> >
> >> >> >>> > #(#finalEnterActions: #restoreGlobalPreferences
> >> >> >>> > #saveGlobalPreferences
> >> >> >>> > #initializeProjectPreferences #configureOnFirstEntry
> >> >> >>> > #finalExitActions:)
> >> >> >>> >
> >> >> >>> > For complete configuration of a EtoysProject it might be
> >> >> >>> > necessary
> >> >> >>> > to
> >> >> >>> > do
> >> >> >>> >
> >> >> >>> > PasteUpMorph subclass: EtoysPasteUpMorph
> >> >> >>> >
> >> >> >>> > as well. http://wiki.squeak.org/squeak/6461
> >> >> >>> >
> >> >> >>> > Then Etoys related methods may be pushed down to
> >> >> >>> > EtoysPasteUpMorph.
> >> >> >>>
> >> >> >>> See screen shot attached.
> >> >> >>>
> >> >> >>> > And probably an Etoys specific subclass of WorldMenu would be
> >> >> >>> > fine
> >> >> >>> > as
> >> >> >>> well
> >> >> >>> > http://wiki.squeak.org/squeak/6461
> >> >> >>> >
> >> >> >>> >
> >> >> >>> > there is a test project [2] and some more information about
> >> >> >>> > adaptions
> >> >> >>> > needed because of the UI changes in the thread 'Etoys in 2017?' -
> >> >> >>> > UI
> >> >> >>> > preferences [3]. And it would be good to have Etoys methods /
> >> >> >>> > configuration separate [4].
> >> >> >>> >
> >> >> >>> > I suggest that you start go ahead and start implementing this
> >> >> >>> > while
> >> >> >>> > using a test Etoys project dropped onto the desktop.
> >> >> >>> >
> >> >> >>> > --Hannes
> >> >> >>> >
> >> >> >>> >
> >> >> >>> > [2] > You simply drop it in. E.g. download this project
> >> >> >>> >> http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
> >> >> >>> >
> >> >> >>> > [3] Hannes Hirzel, 'Etoys in 2017?' mail, Wed, Feb 22, 2017 at
> >> >> >>> > 11:01
> >> >> >>> > AM
> >> >> >>> >
> >> >> >>> > [4] David T. Lewis, Sep 4, 2016 at 3:34 PM
> >> >> >>> > "I think it would be great if both Etoys and Scratch were easily
> >> >> >>> > loadable and unloadable in trunk."
> >> >> >>> >
> >> >> >>> > On 10/2/17, David T. Lewis wrote:
> >> >> >>> >> An EtoysProject is a project that is configured for running
> >> >> >>> >> Etoys.
> >> >> >>> >> On
> >> >> >>> >> first entry to a new EtoysProject, the playground and project
> >> >> >>> preferences
> >> >> >>> >> are initialized to provide an environment similar to that of a
> >> >> >>> >> traditional
> >> >> >>> >> standalone Etoys image.
> >> >> >>> >>
> >> >> >>> >> Certain preferences that are required for Etoys are initialized
> >> >> >>> >> on
> >> >> >>> >> project
> >> >> >>> >> entry, overriding their global preference values while this
> >> >> >>> EtoysProject
> >> >> >>> >> is active. On leaving the project, these preferences are
> >> >> >>> >> restored
> >> >> >>> >> to
> >> >> >>> >> their
> >> >> >>> >> previous values.
> >> >> >>> >>
> >> >> >>> >> "ProjectViewMorph openOn: EtoysProject new"
> >> >> >>> >>
> >> >> >>> >> Change set attached for a minimal implementation.
> >> >> >>> >>
> >> >> >>> >> Anyone with Etoys knowledge care to help? I do not know enough
> >> >> >>> >> about
> >> >> >>> >> Etoys
> >> >> >>> >> to fill in the rest of the initialization that will be required,
> >> >> >>> >> but
> >> >> >>> >> it
> >> >> >>> >> should not be hard to do.
> >> >> >>> >>
> >> >> >>> >> Dave
> >> >> >>> >>
> >> >> >>> >>
> >> >> >>> >
> >> >> >>>
> >> >> >>>
> >> >> >>>
> >> >> >>>
> >> >> >>>
> >> >> >>
> >> >> >
> >> >
> >> >
> >> >>
> >> >
> >> >
> >> >
> >>
> >
> >
>

Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

marcel.taeumel
Done. :)

Best,
Marcel

Am 05.10.2017 06:21:44 schrieb David T. Lewis <[hidden email]>:

We did have a problem on squeaksource.com, but I think it is mostly resolved now.

Hannes,

The password reset for your HJH account was lost, so I set it back to the
new password that I sent to you earlier in private email. Hopefully your
access is working again now.

Marcel,

Your new account disappeared when squeaksource recovered from some internal
problem. Sorry, I do not know the cause. But could I ask you to please register
again on squeaksource.com, and I will then add you back to EtoysProject?

Sorry for the disruption,
Dave


On Thu, Oct 05, 2017 at 02:03:47AM +0200, H. Hirzel wrote:
> Dave
>
> Earlier today login worked. Currently it does not.
>
> --Hannes
>
> On 10/5/17, David T. Lewis wrote:
> > Hannes,
> >
> > You did not cause the problem. It may have been me, I saved the
> > squeaksource.com
> > image from a VNC session (because I wanted to make an up to date backup of
> > it),
> > and I am now unable to log in to squeaksource. Maybe I triggered a bug :-/
> >
> > Can you please tell me if you are able to log in to your
> > http://squeaksource.com
> > page? I am getting authorization errors, and I suspect it is a problem that
> > affects
> > everyone.
> >
> > Thanks,
> > Dave
> >
> > On Thu, Oct 05, 2017 at 01:52:35AM +0200, H. Hirzel wrote:
> >> Dave,
> >>
> >> Yes, I encounter problems. They might be related to what I just tried to
> >> do:
> >>
> >> I wanted to save an updated version of Morphic to the ProjectEtoys
> >> repository but by mistake I tried to commit it to the trunk. As I do
> >> not have commit rights to trunk this prevented me from changing it
> >> inadvertently. Later on I wanted to commit that version to
> >> ProjectEtoys. It did not work.
> >>
> >> --Hannes
> >>
> >>
> >>
> >> On 10/5/17, David T. Lewis wrote:
> >> > I'm seeing problems with SqueakSource right now, trying to figure out
> >> > what is wrong. So the project may not be accessible right now :-/
> >> >
> >> > Dave
> >> >
> >> >
> >> > On Thu, Oct 05, 2017 at 01:17:58AM +0200, H. Hirzel wrote:
> >> >> Karl,
> >> >>
> >> >> So far entering and existing the Etoys project works smoothly.
> >> >>
> >> >> Load mcz from into current Squeak 6.0a
> >> >>
> >> >> MCHttpRepository
> >> >> location: 'http://www.squeaksource.com/EtoysProject'
> >> >> user: ''
> >> >> password: ''
> >> >>
> >> >> The issue is about providing more settings when entering.
> >> >>
> >> >> Karl, do you want to be added to the list of developers?
> >> >>
> >> >> --HH
> >> >>
> >> >> On 10/5/17, H. Hirzel wrote:
> >> >> > PasteUpMorph is useful and the functions have to be maintained.
> >> >> >
> >> >> > However adding more functions to Morph does not make sense.
> >> >> >
> >> >> > Squeak 6.0a
> >> >> > Morph selectors size 1345
> >> >> > PasteUpMorph selectors size 530
> >> >> >
> >> >> > --Hannes
> >> >> >
> >> >> > On 10/4/17, karl ramberg wrote:
> >> >> >> I'm not sure anybody uses Etoys anymore, but PasteUpMorph is very
> >> >> >> useful
> >> >> >> in
> >> >> >> direct manipulation because of it's various layout and event
> >> >> >> handling
> >> >> >> options. It also act as a container of other morphs, with automatic
> >> >> >> layout, enumeration etc.
> >> >> >> I'm sure most of this could be refactored into Morph class or
> >> >> >> another
> >> >> >> class.
> >> >> >>
> >> >> >> Best,
> >> >> >> Karl
> >> >> >>
> >> >> >> On Tue, Oct 3, 2017 at 3:03 PM, Marcel Taeumel
> >> >> >>
> >> >> >> wrote:
> >> >> >>
> >> >> >>> +1 :)
> >> >> >>>
> >> >> >>> And then later: Rename PasteUpMorph to WorldMorph, and keep an
> >> >> >>> empty
> >> >> >>> PasteUpMorph subclass around for compatibility reasons. So many
> >> >> >>> ideas
> >> >> >>> have
> >> >> >>> been ported down to Morph class over the past years. New
> >> >> >>> applications
> >> >> >>> have
> >> >> >>> no reason to ever use other instances of PasteUpMorph.
> >> >> >>>
> >> >> >>> Best,
> >> >> >>> Marcel
> >> >> >>>
> >> >> >>> Am 03.10.2017 14:57:55 schrieb H. Hirzel :
> >> >> >>> On 10/3/17, H. Hirzel wrote:
> >> >> >>> > Dave
> >> >> >>> >
> >> >> >>> > your change set contains the class EtoysProject with
> >> >> >>> >
> >> >> >>> > EtoysProject selectors
> >> >> >>> >
> >> >> >>> > #(#finalEnterActions: #restoreGlobalPreferences
> >> >> >>> > #saveGlobalPreferences
> >> >> >>> > #initializeProjectPreferences #configureOnFirstEntry
> >> >> >>> > #finalExitActions:)
> >> >> >>> >
> >> >> >>> > For complete configuration of a EtoysProject it might be
> >> >> >>> > necessary
> >> >> >>> > to
> >> >> >>> > do
> >> >> >>> >
> >> >> >>> > PasteUpMorph subclass: EtoysPasteUpMorph
> >> >> >>> >
> >> >> >>> > as well. http://wiki.squeak.org/squeak/6461
> >> >> >>> >
> >> >> >>> > Then Etoys related methods may be pushed down to
> >> >> >>> > EtoysPasteUpMorph.
> >> >> >>>
> >> >> >>> See screen shot attached.
> >> >> >>>
> >> >> >>> > And probably an Etoys specific subclass of WorldMenu would be
> >> >> >>> > fine
> >> >> >>> > as
> >> >> >>> well
> >> >> >>> > http://wiki.squeak.org/squeak/6461
> >> >> >>> >
> >> >> >>> >
> >> >> >>> > there is a test project [2] and some more information about
> >> >> >>> > adaptions
> >> >> >>> > needed because of the UI changes in the thread 'Etoys in 2017?' -
> >> >> >>> > UI
> >> >> >>> > preferences [3]. And it would be good to have Etoys methods /
> >> >> >>> > configuration separate [4].
> >> >> >>> >
> >> >> >>> > I suggest that you start go ahead and start implementing this
> >> >> >>> > while
> >> >> >>> > using a test Etoys project dropped onto the desktop.
> >> >> >>> >
> >> >> >>> > --Hannes
> >> >> >>> >
> >> >> >>> >
> >> >> >>> > [2] > You simply drop it in. E.g. download this project
> >> >> >>> >> http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
> >> >> >>> >
> >> >> >>> > [3] Hannes Hirzel, 'Etoys in 2017?' mail, Wed, Feb 22, 2017 at
> >> >> >>> > 11:01
> >> >> >>> > AM
> >> >> >>> >
> >> >> >>> > [4] David T. Lewis, Sep 4, 2016 at 3:34 PM
> >> >> >>> > "I think it would be great if both Etoys and Scratch were easily
> >> >> >>> > loadable and unloadable in trunk."
> >> >> >>> >
> >> >> >>> > On 10/2/17, David T. Lewis wrote:
> >> >> >>> >> An EtoysProject is a project that is configured for running
> >> >> >>> >> Etoys.
> >> >> >>> >> On
> >> >> >>> >> first entry to a new EtoysProject, the playground and project
> >> >> >>> preferences
> >> >> >>> >> are initialized to provide an environment similar to that of a
> >> >> >>> >> traditional
> >> >> >>> >> standalone Etoys image.
> >> >> >>> >>
> >> >> >>> >> Certain preferences that are required for Etoys are initialized
> >> >> >>> >> on
> >> >> >>> >> project
> >> >> >>> >> entry, overriding their global preference values while this
> >> >> >>> EtoysProject
> >> >> >>> >> is active. On leaving the project, these preferences are
> >> >> >>> >> restored
> >> >> >>> >> to
> >> >> >>> >> their
> >> >> >>> >> previous values.
> >> >> >>> >>
> >> >> >>> >> "ProjectViewMorph openOn: EtoysProject new"
> >> >> >>> >>
> >> >> >>> >> Change set attached for a minimal implementation.
> >> >> >>> >>
> >> >> >>> >> Anyone with Etoys knowledge care to help? I do not know enough
> >> >> >>> >> about
> >> >> >>> >> Etoys
> >> >> >>> >> to fill in the rest of the initialization that will be required,
> >> >> >>> >> but
> >> >> >>> >> it
> >> >> >>> >> should not be hard to do.
> >> >> >>> >>
> >> >> >>> >> Dave
> >> >> >>> >>
> >> >> >>> >>
> >> >> >>> >
> >> >> >>>
> >> >> >>>
> >> >> >>>
> >> >> >>>
> >> >> >>>
> >> >> >>
> >> >> >
> >> >
> >> >
> >> >>
> >> >
> >> >
> >> >
> >>
> >
> >
>



Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

Hannes Hirzel
I added a demo file Morphic-hjh.1354 [11] to the repository

MCHttpRepository
        location: 'http://www.squeaksource.com/EtoysProject'
        user: ''
        password: ''

This file should be loaded into a fully updated trunk test image.

I agree with what Tobias noted earlier in this thread that it is
probably better to avoid renaming PasteUpMorph. I see as a solution to
easier deal with PasteUpMorph functions the insertion of superclasses
of PasteUpMorph (and thus subclasses of BorderedMorph) [12]

The next thing I will come up with is a class
    MorphWithDnD

a morph class which supports drag and drop.
As a superclass of MorphWithGrid

A third class would be PlayField which contains all the Etoys selectors.
In an image without Etoys that class would then be just empty.

--Hannes


--------------------

[11]
Name: Morphic-hjh.1354
Author: hjh
Time: 5 October 2017, 11:51:21.903338 am
UUID: e96d5a46-453f-418c-b95f-26f1674ca329
Ancestors: Morphic-hjh.1353

Demo which shows how to remove selectors from PasteUpMorph and insert
them into a newy created superclass

Inserted
     MorphWithGrid
as a subclass of BorderedMorph and superclass of
    PasteUpMorph

gridding protocol was moved from
    PasteUpMorph
to
    MorphWithGrid


Morphic-hjh.1353:
        Ancestors: Morphic-hjh.1352

Note: I tried to save this update several times. That accounts for the
empty updates in between.


---------
[12]
After filing in Morphic-hjh.1354
PasteUpMorph printHierarchy '
ProtoObject #()
        Object #()
                Morph #()
                        BorderedMorph #()
                                MorphWithGrid #(''griddingOn'')
                                        PasteUpMorph #(...)
                                                ComponentLayout #(...)
                                                EventTimeline #(...)
                                                GeeBookPageMorph #(...)
                                                IndexTabs #(...)
                                                MouseEventEditor #(...)
                                                PartsBin #(...)
                                                QuickGuideHolderMorph #(...)
                                                SyntaxTestMethods #(...)
                                                TetrisBoard #(...)
                                                TextPlusPasteUpMorph #(...)
                                                WiWPasteUpMorph #(...)
                                                        MVCWiWPasteUpMorph #(...)
                                                Worldlet #(...)
                                                ZASMScriptMorph #(...)
                                                ZoomAndScrollMorph #(...)'

On 10/5/17, Marcel Taeumel <[hidden email]> wrote:

> Done. :)
>
> Best,
> Marcel
> Am 05.10.2017 06:21:44 schrieb David T. Lewis <[hidden email]>:
> We did have a problem on squeaksource.com, but I think it is mostly resolved
> now.
>
> Hannes,
>
> The password reset for your HJH account was lost, so I set it back to the
> new password that I sent to you earlier in private email. Hopefully your
> access is working again now.
>
> Marcel,
>
> Your new account disappeared when squeaksource recovered from some internal
> problem. Sorry, I do not know the cause. But could I ask you to please
> register
> again on squeaksource.com, and I will then add you back to EtoysProject?
>
> Sorry for the disruption,
> Dave
>
>
> On Thu, Oct 05, 2017 at 02:03:47AM +0200, H. Hirzel wrote:
>> Dave
>>
>> Earlier today login worked. Currently it does not.
>>
>> --Hannes
>>
>> On 10/5/17, David T. Lewis wrote:
>> > Hannes,
>> >
>> > You did not cause the problem. It may have been me, I saved the
>> > squeaksource.com
>> > image from a VNC session (because I wanted to make an up to date backup
>> > of
>> > it),
>> > and I am now unable to log in to squeaksource. Maybe I triggered a bug
>> > :-/
>> >
>> > Can you please tell me if you are able to log in to your
>> > http://squeaksource.com
>> > page? I am getting authorization errors, and I suspect it is a problem
>> > that
>> > affects
>> > everyone.
>> >
>> > Thanks,
>> > Dave
>> >
>> > On Thu, Oct 05, 2017 at 01:52:35AM +0200, H. Hirzel wrote:
>> >> Dave,
>> >>
>> >> Yes, I encounter problems. They might be related to what I just tried
>> >> to
>> >> do:
>> >>
>> >> I wanted to save an updated version of Morphic to the ProjectEtoys
>> >> repository but by mistake I tried to commit it to the trunk. As I do
>> >> not have commit rights to trunk this prevented me from changing it
>> >> inadvertently. Later on I wanted to commit that version to
>> >> ProjectEtoys. It did not work.
>> >>
>> >> --Hannes
>> >>
>> >>
>> >>
>> >> On 10/5/17, David T. Lewis wrote:
>> >> > I'm seeing problems with SqueakSource right now, trying to figure
>> >> > out
>> >> > what is wrong. So the project may not be accessible right now :-/
>> >> >
>> >> > Dave
>> >> >
>> >> >
>> >> > On Thu, Oct 05, 2017 at 01:17:58AM +0200, H. Hirzel wrote:
>> >> >> Karl,
>> >> >>
>> >> >> So far entering and existing the Etoys project works smoothly.
>> >> >>
>> >> >> Load mcz from into current Squeak 6.0a
>> >> >>
>> >> >> MCHttpRepository
>> >> >> location: 'http://www.squeaksource.com/EtoysProject'
>> >> >> user: ''
>> >> >> password: ''
>> >> >>
>> >> >> The issue is about providing more settings when entering.
>> >> >>
>> >> >> Karl, do you want to be added to the list of developers?
>> >> >>
>> >> >> --HH
>> >> >>
>> >> >> On 10/5/17, H. Hirzel wrote:
>> >> >> > PasteUpMorph is useful and the functions have to be maintained.
>> >> >> >
>> >> >> > However adding more functions to Morph does not make sense.
>> >> >> >
>> >> >> > Squeak 6.0a
>> >> >> > Morph selectors size 1345
>> >> >> > PasteUpMorph selectors size 530
>> >> >> >
>> >> >> > --Hannes
>> >> >> >
>> >> >> > On 10/4/17, karl ramberg wrote:
>> >> >> >> I'm not sure anybody uses Etoys anymore, but PasteUpMorph is
>> >> >> >> very
>> >> >> >> useful
>> >> >> >> in
>> >> >> >> direct manipulation because of it's various layout and event
>> >> >> >> handling
>> >> >> >> options. It also act as a container of other morphs, with
>> >> >> >> automatic
>> >> >> >> layout, enumeration etc.
>> >> >> >> I'm sure most of this could be refactored into Morph class or
>> >> >> >> another
>> >> >> >> class.
>> >> >> >>
>> >> >> >> Best,
>> >> >> >> Karl
>> >> >> >>
>> >> >> >> On Tue, Oct 3, 2017 at 3:03 PM, Marcel Taeumel
>> >> >> >>
>> >> >> >> wrote:
>> >> >> >>
>> >> >> >>> +1 :)
>> >> >> >>>
>> >> >> >>> And then later: Rename PasteUpMorph to WorldMorph, and keep an
>> >> >> >>> empty
>> >> >> >>> PasteUpMorph subclass around for compatibility reasons. So many
>> >> >> >>> ideas
>> >> >> >>> have
>> >> >> >>> been ported down to Morph class over the past years. New
>> >> >> >>> applications
>> >> >> >>> have
>> >> >> >>> no reason to ever use other instances of PasteUpMorph.
>> >> >> >>>
>> >> >> >>> Best,
>> >> >> >>> Marcel
>> >> >> >>>
>> >> >> >>> Am 03.10.2017 14:57:55 schrieb H. Hirzel :
>> >> >> >>> On 10/3/17, H. Hirzel wrote:
>> >> >> >>> > Dave
>> >> >> >>> >
>> >> >> >>> > your change set contains the class EtoysProject with
>> >> >> >>> >
>> >> >> >>> > EtoysProject selectors
>> >> >> >>> >
>> >> >> >>> > #(#finalEnterActions: #restoreGlobalPreferences
>> >> >> >>> > #saveGlobalPreferences
>> >> >> >>> > #initializeProjectPreferences #configureOnFirstEntry
>> >> >> >>> > #finalExitActions:)
>> >> >> >>> >
>> >> >> >>> > For complete configuration of a EtoysProject it might be
>> >> >> >>> > necessary
>> >> >> >>> > to
>> >> >> >>> > do
>> >> >> >>> >
>> >> >> >>> > PasteUpMorph subclass: EtoysPasteUpMorph
>> >> >> >>> >
>> >> >> >>> > as well. http://wiki.squeak.org/squeak/6461
>> >> >> >>> >
>> >> >> >>> > Then Etoys related methods may be pushed down to
>> >> >> >>> > EtoysPasteUpMorph.
>> >> >> >>>
>> >> >> >>> See screen shot attached.
>> >> >> >>>
>> >> >> >>> > And probably an Etoys specific subclass of WorldMenu would be
>> >> >> >>> > fine
>> >> >> >>> > as
>> >> >> >>> well
>> >> >> >>> > http://wiki.squeak.org/squeak/6461
>> >> >> >>> >
>> >> >> >>> >
>> >> >> >>> > there is a test project [2] and some more information about
>> >> >> >>> > adaptions
>> >> >> >>> > needed because of the UI changes in the thread 'Etoys in
>> >> >> >>> > 2017?' -
>> >> >> >>> > UI
>> >> >> >>> > preferences [3]. And it would be good to have Etoys methods /
>> >> >> >>> > configuration separate [4].
>> >> >> >>> >
>> >> >> >>> > I suggest that you start go ahead and start implementing this
>> >> >> >>> > while
>> >> >> >>> > using a test Etoys project dropped onto the desktop.
>> >> >> >>> >
>> >> >> >>> > --Hannes
>> >> >> >>> >
>> >> >> >>> >
>> >> >> >>> > [2] > You simply drop it in. E.g. download this project
>> >> >> >>> >> http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>> >> >> >>> >
>> >> >> >>> > [3] Hannes Hirzel, 'Etoys in 2017?' mail, Wed, Feb 22, 2017
>> >> >> >>> > at
>> >> >> >>> > 11:01
>> >> >> >>> > AM
>> >> >> >>> >
>> >> >> >>> > [4] David T. Lewis, Sep 4, 2016 at 3:34 PM
>> >> >> >>> > "I think it would be great if both Etoys and Scratch were
>> >> >> >>> > easily
>> >> >> >>> > loadable and unloadable in trunk."
>> >> >> >>> >
>> >> >> >>> > On 10/2/17, David T. Lewis wrote:
>> >> >> >>> >> An EtoysProject is a project that is configured for running
>> >> >> >>> >> Etoys.
>> >> >> >>> >> On
>> >> >> >>> >> first entry to a new EtoysProject, the playground and
>> >> >> >>> >> project
>> >> >> >>> preferences
>> >> >> >>> >> are initialized to provide an environment similar to that of
>> >> >> >>> >> a
>> >> >> >>> >> traditional
>> >> >> >>> >> standalone Etoys image.
>> >> >> >>> >>
>> >> >> >>> >> Certain preferences that are required for Etoys are
>> >> >> >>> >> initialized
>> >> >> >>> >> on
>> >> >> >>> >> project
>> >> >> >>> >> entry, overriding their global preference values while this
>> >> >> >>> EtoysProject
>> >> >> >>> >> is active. On leaving the project, these preferences are
>> >> >> >>> >> restored
>> >> >> >>> >> to
>> >> >> >>> >> their
>> >> >> >>> >> previous values.
>> >> >> >>> >>
>> >> >> >>> >> "ProjectViewMorph openOn: EtoysProject new"
>> >> >> >>> >>
>> >> >> >>> >> Change set attached for a minimal implementation.
>> >> >> >>> >>
>> >> >> >>> >> Anyone with Etoys knowledge care to help? I do not know
>> >> >> >>> >> enough
>> >> >> >>> >> about
>> >> >> >>> >> Etoys
>> >> >> >>> >> to fill in the rest of the initialization that will be
>> >> >> >>> >> required,
>> >> >> >>> >> but
>> >> >> >>> >> it
>> >> >> >>> >> should not be hard to do.
>> >> >> >>> >>
>> >> >> >>> >> Dave
>> >> >> >>> >>
>> >> >> >>> >>
>> >> >> >>> >
>> >> >> >>>
>> >> >> >>>
>> >> >> >>>
>> >> >> >>>
>> >> >> >>>
>> >> >> >>
>> >> >> >
>> >> >
>> >> >
>> >> >>
>> >> >
>> >> >
>> >> >
>> >>
>> >
>> >
>>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

Hannes Hirzel
Note: MorphWithGrid does not really make sense unless you have a
superclass MorphWithDnD (Drag and Drop) which handles the morph droped
and makes them 'sticky'.

Though refactoring PastUpMorph by inserting superclasses is an issue I
suggest to put this on the backburner at the moment and focus on
getting the Etoys setting straight as Dave suggests in the initial
mail.

A use case to follow: What happens when you drop  the exapme project

    http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr

on to the desktop.

ExternalDropHandler>>handleDroppedItem:event:  [21]

is called in this case and then dispatches to do the necessary things
to deal with the
    ExampleEtoys/CarAndPen.014.pr
file.

There is a message box which needs attention.

And I assume that in the course of these events some settings are
necessary. Most prominently to choose EtoysProject and no longer
MorphicProject

--Hannes

[21] http://wiki.squeak.org/squeak/4283

On 10/5/17, H. Hirzel <[hidden email]> wrote:

> I added a demo file Morphic-hjh.1354 [11] to the repository
>
> MCHttpRepository
> location: 'http://www.squeaksource.com/EtoysProject'
> user: ''
> password: ''
>
> This file should be loaded into a fully updated trunk test image.
>
> I agree with what Tobias noted earlier in this thread that it is
> probably better to avoid renaming PasteUpMorph. I see as a solution to
> easier deal with PasteUpMorph functions the insertion of superclasses
> of PasteUpMorph (and thus subclasses of BorderedMorph) [12]
>
> The next thing I will come up with is a class
>     MorphWithDnD
>
> a morph class which supports drag and drop.
> As a superclass of MorphWithGrid
>
> A third class would be PlayField which contains all the Etoys selectors.
> In an image without Etoys that class would then be just empty.
>
> --Hannes
>
>
> --------------------
>
> [11]
> Name: Morphic-hjh.1354
> Author: hjh
> Time: 5 October 2017, 11:51:21.903338 am
> UUID: e96d5a46-453f-418c-b95f-26f1674ca329
> Ancestors: Morphic-hjh.1353
>
> Demo which shows how to remove selectors from PasteUpMorph and insert
> them into a newy created superclass
>
> Inserted
>      MorphWithGrid
> as a subclass of BorderedMorph and superclass of
>     PasteUpMorph
>
> gridding protocol was moved from
>     PasteUpMorph
> to
>     MorphWithGrid
>
>
> Morphic-hjh.1353:
> Ancestors: Morphic-hjh.1352
>
> Note: I tried to save this update several times. That accounts for the
> empty updates in between.
>
>
> ---------
> [12]
> After filing in Morphic-hjh.1354
> PasteUpMorph printHierarchy '
> ProtoObject #()
> Object #()
> Morph #()
> BorderedMorph #()
> MorphWithGrid #(''griddingOn'')
> PasteUpMorph #(...)
> ComponentLayout #(...)
> EventTimeline #(...)
> GeeBookPageMorph #(...)
> IndexTabs #(...)
> MouseEventEditor #(...)
> PartsBin #(...)
> QuickGuideHolderMorph #(...)
> SyntaxTestMethods #(...)
> TetrisBoard #(...)
> TextPlusPasteUpMorph #(...)
> WiWPasteUpMorph #(...)
> MVCWiWPasteUpMorph #(...)
> Worldlet #(...)
> ZASMScriptMorph #(...)
> ZoomAndScrollMorph #(...)'
>
> On 10/5/17, Marcel Taeumel <[hidden email]> wrote:
>> Done. :)
>>
>> Best,
>> Marcel
>> Am 05.10.2017 06:21:44 schrieb David T. Lewis <[hidden email]>:
>> We did have a problem on squeaksource.com, but I think it is mostly
>> resolved
>> now.
>>
>> Hannes,
>>
>> The password reset for your HJH account was lost, so I set it back to the
>> new password that I sent to you earlier in private email. Hopefully your
>> access is working again now.
>>
>> Marcel,
>>
>> Your new account disappeared when squeaksource recovered from some
>> internal
>> problem. Sorry, I do not know the cause. But could I ask you to please
>> register
>> again on squeaksource.com, and I will then add you back to EtoysProject?
>>
>> Sorry for the disruption,
>> Dave
>>
>>
>> On Thu, Oct 05, 2017 at 02:03:47AM +0200, H. Hirzel wrote:
>>> Dave
>>>
>>> Earlier today login worked. Currently it does not.
>>>
>>> --Hannes
>>>
>>> On 10/5/17, David T. Lewis wrote:
>>> > Hannes,
>>> >
>>> > You did not cause the problem. It may have been me, I saved the
>>> > squeaksource.com
>>> > image from a VNC session (because I wanted to make an up to date
>>> > backup
>>> > of
>>> > it),
>>> > and I am now unable to log in to squeaksource. Maybe I triggered a bug
>>> > :-/
>>> >
>>> > Can you please tell me if you are able to log in to your
>>> > http://squeaksource.com
>>> > page? I am getting authorization errors, and I suspect it is a problem
>>> > that
>>> > affects
>>> > everyone.
>>> >
>>> > Thanks,
>>> > Dave
>>> >
>>> > On Thu, Oct 05, 2017 at 01:52:35AM +0200, H. Hirzel wrote:
>>> >> Dave,
>>> >>
>>> >> Yes, I encounter problems. They might be related to what I just tried
>>> >> to
>>> >> do:
>>> >>
>>> >> I wanted to save an updated version of Morphic to the ProjectEtoys
>>> >> repository but by mistake I tried to commit it to the trunk. As I do
>>> >> not have commit rights to trunk this prevented me from changing it
>>> >> inadvertently. Later on I wanted to commit that version to
>>> >> ProjectEtoys. It did not work.
>>> >>
>>> >> --Hannes
>>> >>
>>> >>
>>> >>
>>> >> On 10/5/17, David T. Lewis wrote:
>>> >> > I'm seeing problems with SqueakSource right now, trying to figure
>>> >> > out
>>> >> > what is wrong. So the project may not be accessible right now :-/
>>> >> >
>>> >> > Dave
>>> >> >
>>> >> >
>>> >> > On Thu, Oct 05, 2017 at 01:17:58AM +0200, H. Hirzel wrote:
>>> >> >> Karl,
>>> >> >>
>>> >> >> So far entering and existing the Etoys project works smoothly.
>>> >> >>
>>> >> >> Load mcz from into current Squeak 6.0a
>>> >> >>
>>> >> >> MCHttpRepository
>>> >> >> location: 'http://www.squeaksource.com/EtoysProject'
>>> >> >> user: ''
>>> >> >> password: ''
>>> >> >>
>>> >> >> The issue is about providing more settings when entering.
>>> >> >>
>>> >> >> Karl, do you want to be added to the list of developers?
>>> >> >>
>>> >> >> --HH
>>> >> >>
>>> >> >> On 10/5/17, H. Hirzel wrote:
>>> >> >> > PasteUpMorph is useful and the functions have to be maintained.
>>> >> >> >
>>> >> >> > However adding more functions to Morph does not make sense.
>>> >> >> >
>>> >> >> > Squeak 6.0a
>>> >> >> > Morph selectors size 1345
>>> >> >> > PasteUpMorph selectors size 530
>>> >> >> >
>>> >> >> > --Hannes
>>> >> >> >
>>> >> >> > On 10/4/17, karl ramberg wrote:
>>> >> >> >> I'm not sure anybody uses Etoys anymore, but PasteUpMorph is
>>> >> >> >> very
>>> >> >> >> useful
>>> >> >> >> in
>>> >> >> >> direct manipulation because of it's various layout and event
>>> >> >> >> handling
>>> >> >> >> options. It also act as a container of other morphs, with
>>> >> >> >> automatic
>>> >> >> >> layout, enumeration etc.
>>> >> >> >> I'm sure most of this could be refactored into Morph class or
>>> >> >> >> another
>>> >> >> >> class.
>>> >> >> >>
>>> >> >> >> Best,
>>> >> >> >> Karl
>>> >> >> >>
>>> >> >> >> On Tue, Oct 3, 2017 at 3:03 PM, Marcel Taeumel
>>> >> >> >>
>>> >> >> >> wrote:
>>> >> >> >>
>>> >> >> >>> +1 :)
>>> >> >> >>>
>>> >> >> >>> And then later: Rename PasteUpMorph to WorldMorph, and keep an
>>> >> >> >>> empty
>>> >> >> >>> PasteUpMorph subclass around for compatibility reasons. So
>>> >> >> >>> many
>>> >> >> >>> ideas
>>> >> >> >>> have
>>> >> >> >>> been ported down to Morph class over the past years. New
>>> >> >> >>> applications
>>> >> >> >>> have
>>> >> >> >>> no reason to ever use other instances of PasteUpMorph.
>>> >> >> >>>
>>> >> >> >>> Best,
>>> >> >> >>> Marcel
>>> >> >> >>>
>>> >> >> >>> Am 03.10.2017 14:57:55 schrieb H. Hirzel :
>>> >> >> >>> On 10/3/17, H. Hirzel wrote:
>>> >> >> >>> > Dave
>>> >> >> >>> >
>>> >> >> >>> > your change set contains the class EtoysProject with
>>> >> >> >>> >
>>> >> >> >>> > EtoysProject selectors
>>> >> >> >>> >
>>> >> >> >>> > #(#finalEnterActions: #restoreGlobalPreferences
>>> >> >> >>> > #saveGlobalPreferences
>>> >> >> >>> > #initializeProjectPreferences #configureOnFirstEntry
>>> >> >> >>> > #finalExitActions:)
>>> >> >> >>> >
>>> >> >> >>> > For complete configuration of a EtoysProject it might be
>>> >> >> >>> > necessary
>>> >> >> >>> > to
>>> >> >> >>> > do
>>> >> >> >>> >
>>> >> >> >>> > PasteUpMorph subclass: EtoysPasteUpMorph
>>> >> >> >>> >
>>> >> >> >>> > as well. http://wiki.squeak.org/squeak/6461
>>> >> >> >>> >
>>> >> >> >>> > Then Etoys related methods may be pushed down to
>>> >> >> >>> > EtoysPasteUpMorph.
>>> >> >> >>>
>>> >> >> >>> See screen shot attached.
>>> >> >> >>>
>>> >> >> >>> > And probably an Etoys specific subclass of WorldMenu would
>>> >> >> >>> > be
>>> >> >> >>> > fine
>>> >> >> >>> > as
>>> >> >> >>> well
>>> >> >> >>> > http://wiki.squeak.org/squeak/6461
>>> >> >> >>> >
>>> >> >> >>> >
>>> >> >> >>> > there is a test project [2] and some more information about
>>> >> >> >>> > adaptions
>>> >> >> >>> > needed because of the UI changes in the thread 'Etoys in
>>> >> >> >>> > 2017?' -
>>> >> >> >>> > UI
>>> >> >> >>> > preferences [3]. And it would be good to have Etoys methods
>>> >> >> >>> > /
>>> >> >> >>> > configuration separate [4].
>>> >> >> >>> >
>>> >> >> >>> > I suggest that you start go ahead and start implementing
>>> >> >> >>> > this
>>> >> >> >>> > while
>>> >> >> >>> > using a test Etoys project dropped onto the desktop.
>>> >> >> >>> >
>>> >> >> >>> > --Hannes
>>> >> >> >>> >
>>> >> >> >>> >
>>> >> >> >>> > [2] > You simply drop it in. E.g. download this project
>>> >> >> >>> >> http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>>> >> >> >>> >
>>> >> >> >>> > [3] Hannes Hirzel, 'Etoys in 2017?' mail, Wed, Feb 22, 2017
>>> >> >> >>> > at
>>> >> >> >>> > 11:01
>>> >> >> >>> > AM
>>> >> >> >>> >
>>> >> >> >>> > [4] David T. Lewis, Sep 4, 2016 at 3:34 PM
>>> >> >> >>> > "I think it would be great if both Etoys and Scratch were
>>> >> >> >>> > easily
>>> >> >> >>> > loadable and unloadable in trunk."
>>> >> >> >>> >
>>> >> >> >>> > On 10/2/17, David T. Lewis wrote:
>>> >> >> >>> >> An EtoysProject is a project that is configured for running
>>> >> >> >>> >> Etoys.
>>> >> >> >>> >> On
>>> >> >> >>> >> first entry to a new EtoysProject, the playground and
>>> >> >> >>> >> project
>>> >> >> >>> preferences
>>> >> >> >>> >> are initialized to provide an environment similar to that
>>> >> >> >>> >> of
>>> >> >> >>> >> a
>>> >> >> >>> >> traditional
>>> >> >> >>> >> standalone Etoys image.
>>> >> >> >>> >>
>>> >> >> >>> >> Certain preferences that are required for Etoys are
>>> >> >> >>> >> initialized
>>> >> >> >>> >> on
>>> >> >> >>> >> project
>>> >> >> >>> >> entry, overriding their global preference values while this
>>> >> >> >>> EtoysProject
>>> >> >> >>> >> is active. On leaving the project, these preferences are
>>> >> >> >>> >> restored
>>> >> >> >>> >> to
>>> >> >> >>> >> their
>>> >> >> >>> >> previous values.
>>> >> >> >>> >>
>>> >> >> >>> >> "ProjectViewMorph openOn: EtoysProject new"
>>> >> >> >>> >>
>>> >> >> >>> >> Change set attached for a minimal implementation.
>>> >> >> >>> >>
>>> >> >> >>> >> Anyone with Etoys knowledge care to help? I do not know
>>> >> >> >>> >> enough
>>> >> >> >>> >> about
>>> >> >> >>> >> Etoys
>>> >> >> >>> >> to fill in the rest of the initialization that will be
>>> >> >> >>> >> required,
>>> >> >> >>> >> but
>>> >> >> >>> >> it
>>> >> >> >>> >> should not be hard to do.
>>> >> >> >>> >>
>>> >> >> >>> >> Dave
>>> >> >> >>> >>
>>> >> >> >>> >>
>>> >> >> >>> >
>>> >> >> >>>
>>> >> >> >>>
>>> >> >> >>>
>>> >> >> >>>
>>> >> >> >>>
>>> >> >> >>
>>> >> >> >
>>> >> >
>>> >> >
>>> >> >>
>>> >> >
>>> >> >
>>> >> >
>>> >>
>>> >
>>> >
>>>
>>
>>
>



Dialog_After_Dropping_CarAndPen.014.pr_onto_desktop_2017-10-05.png (50K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

Hannes Hirzel
A few steps more: when I drop a project file onto the desktop the
following methods are called

PasteUpMorph handleDroppedItem: anItem event: anEvent
ExternalDropHandler lookupExternalDropHandler: anItem
ExternalDropHandler handle: dropStream in: pasteUp dropEvent: anEvent
ExternalDropHandler class defaultProjectHandler

ProjectLoading openOn: aMultiByteFileStream:
"'/home/user/Downloads/CarAndPen.014(2).pr'"

So we have to fix ProjectLoading


On 10/5/17, H. Hirzel <[hidden email]> wrote:

> Note: MorphWithGrid does not really make sense unless you have a
> superclass MorphWithDnD (Drag and Drop) which handles the morph droped
> and makes them 'sticky'.
>
> Though refactoring PastUpMorph by inserting superclasses is an issue I
> suggest to put this on the backburner at the moment and focus on
> getting the Etoys setting straight as Dave suggests in the initial
> mail.
>
> A use case to follow: What happens when you drop  the exapme project
>
>     http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>
> on to the desktop.
>
> ExternalDropHandler>>handleDroppedItem:event:  [21]
>
> is called in this case and then dispatches to do the necessary things
> to deal with the
>     ExampleEtoys/CarAndPen.014.pr
> file.
>
> There is a message box which needs attention.
>
> And I assume that in the course of these events some settings are
> necessary. Most prominently to choose EtoysProject and no longer
> MorphicProject
>
> --Hannes
>
> [21] http://wiki.squeak.org/squeak/4283
>
> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>> I added a demo file Morphic-hjh.1354 [11] to the repository
>>
>> MCHttpRepository
>> location: 'http://www.squeaksource.com/EtoysProject'
>> user: ''
>> password: ''
>>
>> This file should be loaded into a fully updated trunk test image.
>>
>> I agree with what Tobias noted earlier in this thread that it is
>> probably better to avoid renaming PasteUpMorph. I see as a solution to
>> easier deal with PasteUpMorph functions the insertion of superclasses
>> of PasteUpMorph (and thus subclasses of BorderedMorph) [12]
>>
>> The next thing I will come up with is a class
>>     MorphWithDnD
>>
>> a morph class which supports drag and drop.
>> As a superclass of MorphWithGrid
>>
>> A third class would be PlayField which contains all the Etoys selectors.
>> In an image without Etoys that class would then be just empty.
>>
>> --Hannes
>>
>>
>> --------------------
>>
>> [11]
>> Name: Morphic-hjh.1354
>> Author: hjh
>> Time: 5 October 2017, 11:51:21.903338 am
>> UUID: e96d5a46-453f-418c-b95f-26f1674ca329
>> Ancestors: Morphic-hjh.1353
>>
>> Demo which shows how to remove selectors from PasteUpMorph and insert
>> them into a newy created superclass
>>
>> Inserted
>>      MorphWithGrid
>> as a subclass of BorderedMorph and superclass of
>>     PasteUpMorph
>>
>> gridding protocol was moved from
>>     PasteUpMorph
>> to
>>     MorphWithGrid
>>
>>
>> Morphic-hjh.1353:
>> Ancestors: Morphic-hjh.1352
>>
>> Note: I tried to save this update several times. That accounts for the
>> empty updates in between.
>>
>>
>> ---------
>> [12]
>> After filing in Morphic-hjh.1354
>> PasteUpMorph printHierarchy '
>> ProtoObject #()
>> Object #()
>> Morph #()
>> BorderedMorph #()
>> MorphWithGrid #(''griddingOn'')
>> PasteUpMorph #(...)
>> ComponentLayout #(...)
>> EventTimeline #(...)
>> GeeBookPageMorph #(...)
>> IndexTabs #(...)
>> MouseEventEditor #(...)
>> PartsBin #(...)
>> QuickGuideHolderMorph #(...)
>> SyntaxTestMethods #(...)
>> TetrisBoard #(...)
>> TextPlusPasteUpMorph #(...)
>> WiWPasteUpMorph #(...)
>> MVCWiWPasteUpMorph #(...)
>> Worldlet #(...)
>> ZASMScriptMorph #(...)
>> ZoomAndScrollMorph #(...)'
>>
>> On 10/5/17, Marcel Taeumel <[hidden email]> wrote:
>>> Done. :)
>>>
>>> Best,
>>> Marcel
>>> Am 05.10.2017 06:21:44 schrieb David T. Lewis <[hidden email]>:
>>> We did have a problem on squeaksource.com, but I think it is mostly
>>> resolved
>>> now.
>>>
>>> Hannes,
>>>
>>> The password reset for your HJH account was lost, so I set it back to
>>> the
>>> new password that I sent to you earlier in private email. Hopefully your
>>> access is working again now.
>>>
>>> Marcel,
>>>
>>> Your new account disappeared when squeaksource recovered from some
>>> internal
>>> problem. Sorry, I do not know the cause. But could I ask you to please
>>> register
>>> again on squeaksource.com, and I will then add you back to EtoysProject?
>>>
>>> Sorry for the disruption,
>>> Dave
>>>
>>>
>>> On Thu, Oct 05, 2017 at 02:03:47AM +0200, H. Hirzel wrote:
>>>> Dave
>>>>
>>>> Earlier today login worked. Currently it does not.
>>>>
>>>> --Hannes
>>>>
>>>> On 10/5/17, David T. Lewis wrote:
>>>> > Hannes,
>>>> >
>>>> > You did not cause the problem. It may have been me, I saved the
>>>> > squeaksource.com
>>>> > image from a VNC session (because I wanted to make an up to date
>>>> > backup
>>>> > of
>>>> > it),
>>>> > and I am now unable to log in to squeaksource. Maybe I triggered a
>>>> > bug
>>>> > :-/
>>>> >
>>>> > Can you please tell me if you are able to log in to your
>>>> > http://squeaksource.com
>>>> > page? I am getting authorization errors, and I suspect it is a
>>>> > problem
>>>> > that
>>>> > affects
>>>> > everyone.
>>>> >
>>>> > Thanks,
>>>> > Dave
>>>> >
>>>> > On Thu, Oct 05, 2017 at 01:52:35AM +0200, H. Hirzel wrote:
>>>> >> Dave,
>>>> >>
>>>> >> Yes, I encounter problems. They might be related to what I just
>>>> >> tried
>>>> >> to
>>>> >> do:
>>>> >>
>>>> >> I wanted to save an updated version of Morphic to the ProjectEtoys
>>>> >> repository but by mistake I tried to commit it to the trunk. As I do
>>>> >> not have commit rights to trunk this prevented me from changing it
>>>> >> inadvertently. Later on I wanted to commit that version to
>>>> >> ProjectEtoys. It did not work.
>>>> >>
>>>> >> --Hannes
>>>> >>
>>>> >>
>>>> >>
>>>> >> On 10/5/17, David T. Lewis wrote:
>>>> >> > I'm seeing problems with SqueakSource right now, trying to figure
>>>> >> > out
>>>> >> > what is wrong. So the project may not be accessible right now :-/
>>>> >> >
>>>> >> > Dave
>>>> >> >
>>>> >> >
>>>> >> > On Thu, Oct 05, 2017 at 01:17:58AM +0200, H. Hirzel wrote:
>>>> >> >> Karl,
>>>> >> >>
>>>> >> >> So far entering and existing the Etoys project works smoothly.
>>>> >> >>
>>>> >> >> Load mcz from into current Squeak 6.0a
>>>> >> >>
>>>> >> >> MCHttpRepository
>>>> >> >> location: 'http://www.squeaksource.com/EtoysProject'
>>>> >> >> user: ''
>>>> >> >> password: ''
>>>> >> >>
>>>> >> >> The issue is about providing more settings when entering.
>>>> >> >>
>>>> >> >> Karl, do you want to be added to the list of developers?
>>>> >> >>
>>>> >> >> --HH
>>>> >> >>
>>>> >> >> On 10/5/17, H. Hirzel wrote:
>>>> >> >> > PasteUpMorph is useful and the functions have to be maintained.
>>>> >> >> >
>>>> >> >> > However adding more functions to Morph does not make sense.
>>>> >> >> >
>>>> >> >> > Squeak 6.0a
>>>> >> >> > Morph selectors size 1345
>>>> >> >> > PasteUpMorph selectors size 530
>>>> >> >> >
>>>> >> >> > --Hannes
>>>> >> >> >
>>>> >> >> > On 10/4/17, karl ramberg wrote:
>>>> >> >> >> I'm not sure anybody uses Etoys anymore, but PasteUpMorph is
>>>> >> >> >> very
>>>> >> >> >> useful
>>>> >> >> >> in
>>>> >> >> >> direct manipulation because of it's various layout and event
>>>> >> >> >> handling
>>>> >> >> >> options. It also act as a container of other morphs, with
>>>> >> >> >> automatic
>>>> >> >> >> layout, enumeration etc.
>>>> >> >> >> I'm sure most of this could be refactored into Morph class or
>>>> >> >> >> another
>>>> >> >> >> class.
>>>> >> >> >>
>>>> >> >> >> Best,
>>>> >> >> >> Karl
>>>> >> >> >>
>>>> >> >> >> On Tue, Oct 3, 2017 at 3:03 PM, Marcel Taeumel
>>>> >> >> >>
>>>> >> >> >> wrote:
>>>> >> >> >>
>>>> >> >> >>> +1 :)
>>>> >> >> >>>
>>>> >> >> >>> And then later: Rename PasteUpMorph to WorldMorph, and keep
>>>> >> >> >>> an
>>>> >> >> >>> empty
>>>> >> >> >>> PasteUpMorph subclass around for compatibility reasons. So
>>>> >> >> >>> many
>>>> >> >> >>> ideas
>>>> >> >> >>> have
>>>> >> >> >>> been ported down to Morph class over the past years. New
>>>> >> >> >>> applications
>>>> >> >> >>> have
>>>> >> >> >>> no reason to ever use other instances of PasteUpMorph.
>>>> >> >> >>>
>>>> >> >> >>> Best,
>>>> >> >> >>> Marcel
>>>> >> >> >>>
>>>> >> >> >>> Am 03.10.2017 14:57:55 schrieb H. Hirzel :
>>>> >> >> >>> On 10/3/17, H. Hirzel wrote:
>>>> >> >> >>> > Dave
>>>> >> >> >>> >
>>>> >> >> >>> > your change set contains the class EtoysProject with
>>>> >> >> >>> >
>>>> >> >> >>> > EtoysProject selectors
>>>> >> >> >>> >
>>>> >> >> >>> > #(#finalEnterActions: #restoreGlobalPreferences
>>>> >> >> >>> > #saveGlobalPreferences
>>>> >> >> >>> > #initializeProjectPreferences #configureOnFirstEntry
>>>> >> >> >>> > #finalExitActions:)
>>>> >> >> >>> >
>>>> >> >> >>> > For complete configuration of a EtoysProject it might be
>>>> >> >> >>> > necessary
>>>> >> >> >>> > to
>>>> >> >> >>> > do
>>>> >> >> >>> >
>>>> >> >> >>> > PasteUpMorph subclass: EtoysPasteUpMorph
>>>> >> >> >>> >
>>>> >> >> >>> > as well. http://wiki.squeak.org/squeak/6461
>>>> >> >> >>> >
>>>> >> >> >>> > Then Etoys related methods may be pushed down to
>>>> >> >> >>> > EtoysPasteUpMorph.
>>>> >> >> >>>
>>>> >> >> >>> See screen shot attached.
>>>> >> >> >>>
>>>> >> >> >>> > And probably an Etoys specific subclass of WorldMenu would
>>>> >> >> >>> > be
>>>> >> >> >>> > fine
>>>> >> >> >>> > as
>>>> >> >> >>> well
>>>> >> >> >>> > http://wiki.squeak.org/squeak/6461
>>>> >> >> >>> >
>>>> >> >> >>> >
>>>> >> >> >>> > there is a test project [2] and some more information about
>>>> >> >> >>> > adaptions
>>>> >> >> >>> > needed because of the UI changes in the thread 'Etoys in
>>>> >> >> >>> > 2017?' -
>>>> >> >> >>> > UI
>>>> >> >> >>> > preferences [3]. And it would be good to have Etoys methods
>>>> >> >> >>> > /
>>>> >> >> >>> > configuration separate [4].
>>>> >> >> >>> >
>>>> >> >> >>> > I suggest that you start go ahead and start implementing
>>>> >> >> >>> > this
>>>> >> >> >>> > while
>>>> >> >> >>> > using a test Etoys project dropped onto the desktop.
>>>> >> >> >>> >
>>>> >> >> >>> > --Hannes
>>>> >> >> >>> >
>>>> >> >> >>> >
>>>> >> >> >>> > [2] > You simply drop it in. E.g. download this project
>>>> >> >> >>> >> http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>>>> >> >> >>> >
>>>> >> >> >>> > [3] Hannes Hirzel, 'Etoys in 2017?' mail, Wed, Feb 22, 2017
>>>> >> >> >>> > at
>>>> >> >> >>> > 11:01
>>>> >> >> >>> > AM
>>>> >> >> >>> >
>>>> >> >> >>> > [4] David T. Lewis, Sep 4, 2016 at 3:34 PM
>>>> >> >> >>> > "I think it would be great if both Etoys and Scratch were
>>>> >> >> >>> > easily
>>>> >> >> >>> > loadable and unloadable in trunk."
>>>> >> >> >>> >
>>>> >> >> >>> > On 10/2/17, David T. Lewis wrote:
>>>> >> >> >>> >> An EtoysProject is a project that is configured for
>>>> >> >> >>> >> running
>>>> >> >> >>> >> Etoys.
>>>> >> >> >>> >> On
>>>> >> >> >>> >> first entry to a new EtoysProject, the playground and
>>>> >> >> >>> >> project
>>>> >> >> >>> preferences
>>>> >> >> >>> >> are initialized to provide an environment similar to that
>>>> >> >> >>> >> of
>>>> >> >> >>> >> a
>>>> >> >> >>> >> traditional
>>>> >> >> >>> >> standalone Etoys image.
>>>> >> >> >>> >>
>>>> >> >> >>> >> Certain preferences that are required for Etoys are
>>>> >> >> >>> >> initialized
>>>> >> >> >>> >> on
>>>> >> >> >>> >> project
>>>> >> >> >>> >> entry, overriding their global preference values while
>>>> >> >> >>> >> this
>>>> >> >> >>> EtoysProject
>>>> >> >> >>> >> is active. On leaving the project, these preferences are
>>>> >> >> >>> >> restored
>>>> >> >> >>> >> to
>>>> >> >> >>> >> their
>>>> >> >> >>> >> previous values.
>>>> >> >> >>> >>
>>>> >> >> >>> >> "ProjectViewMorph openOn: EtoysProject new"
>>>> >> >> >>> >>
>>>> >> >> >>> >> Change set attached for a minimal implementation.
>>>> >> >> >>> >>
>>>> >> >> >>> >> Anyone with Etoys knowledge care to help? I do not know
>>>> >> >> >>> >> enough
>>>> >> >> >>> >> about
>>>> >> >> >>> >> Etoys
>>>> >> >> >>> >> to fill in the rest of the initialization that will be
>>>> >> >> >>> >> required,
>>>> >> >> >>> >> but
>>>> >> >> >>> >> it
>>>> >> >> >>> >> should not be hard to do.
>>>> >> >> >>> >>
>>>> >> >> >>> >> Dave
>>>> >> >> >>> >>
>>>> >> >> >>> >>
>>>> >> >> >>> >
>>>> >> >> >>>
>>>> >> >> >>>
>>>> >> >> >>>
>>>> >> >> >>>
>>>> >> >> >>>
>>>> >> >> >>
>>>> >> >> >
>>>> >> >
>>>> >> >
>>>> >> >>
>>>> >> >
>>>> >> >
>>>> >> >
>>>> >>
>>>> >
>>>> >
>>>>
>>>
>>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

Hannes Hirzel
This later on goes to


ProjectLoading class>>

openName: aFileName stream: preStream fromDirectory: aDirectoryOrNil
withProjectView: existingView clearOriginFlag: clearOriginFlag
        "Reconstitute a Morph from the selected file, presumed to
represent a Morph saved via the SmartRefStream mechanism, and open it
in an appropriate Morphic world."

    | morphOrList archive mgr substituteFont numberOfFontSubstitutes
resultArray anObject project manifests dict |
        (self checkStream: preStream) ifTrue: [^ self].
        ProgressNotification signal: '0.2'.
        archive := preStream isZipArchive
                ifTrue:[ZipArchive new readFrom: preStream]
                ifFalse:[nil].
        archive ifNotNil:[
        manifests := (archive membersMatching: '*manifest').
        (manifests size = 1 and: [((dict := self parseManifest: manifests
first contents) at: 'Project-Format' ifAbsent: []) = 'S-Expression'])
                ifTrue: [
                        ^ (self respondsTo:
#openSexpProjectDict:stream:fromDirectory:withProjectView:)
                                ifTrue: [self openSexpProjectDict: dict stream: preStream
fromDirectory: aDirectoryOrNil withProjectView: existingView]
                                ifFalse: [self inform: 'Cannot load S-Expression format projects
without Etoys' translated]]].

        morphOrList := self morphOrList: aFileName stream: preStream
fromDirectory: aDirectoryOrNil archive: archive.
        morphOrList ifNil: [^ self].
        ProgressNotification  signal: '0.4'.
        resultArray := self fileInName: aFileName archive: archive
morphOrList: morphOrList.
        anObject := resultArray first.
        numberOfFontSubstitutes := resultArray second.
        substituteFont := resultArray third.
        mgr := resultArray fourth.
        preStream close.
        ProgressNotification  signal: '0.7'.
                "the hard part is over"
        (anObject isKindOf: ImageSegment) ifTrue: [
                project := self loadImageSegment: anObject
                        fromDirectory: aDirectoryOrNil
                        withProjectView: existingView
                        numberOfFontSubstitutes: numberOfFontSubstitutes
                        substituteFont: substituteFont
                        mgr: mgr.
                project noteManifestDetailsIn: dict.
                project removeParameter: #sugarProperties.
                Smalltalk at: #SugarPropertiesNotification ifPresent: [:sp |
                        sp signal ifNotNil: [:props |
                                project keepSugarProperties: props monitor: true]].
                clearOriginFlag ifTrue: [project forgetExistingURL].
                ProgressNotification  signal: '0.8'.
                        ^ project
                                ifNil: [self inform: 'No project found in this file' translated]
                                ifNotNil: [ProjectEntryNotification signal: project]].
        Project current openViewAndEnter: anObject

On 10/5/17, H. Hirzel <[hidden email]> wrote:

> A few steps more: when I drop a project file onto the desktop the
> following methods are called
>
> PasteUpMorph handleDroppedItem: anItem event: anEvent
> ExternalDropHandler lookupExternalDropHandler: anItem
> ExternalDropHandler handle: dropStream in: pasteUp dropEvent: anEvent
> ExternalDropHandler class defaultProjectHandler
>
> ProjectLoading openOn: aMultiByteFileStream:
> "'/home/user/Downloads/CarAndPen.014(2).pr'"
>
> So we have to fix ProjectLoading
>
>
> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>> Note: MorphWithGrid does not really make sense unless you have a
>> superclass MorphWithDnD (Drag and Drop) which handles the morph droped
>> and makes them 'sticky'.
>>
>> Though refactoring PastUpMorph by inserting superclasses is an issue I
>> suggest to put this on the backburner at the moment and focus on
>> getting the Etoys setting straight as Dave suggests in the initial
>> mail.
>>
>> A use case to follow: What happens when you drop  the exapme project
>>
>>     http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>>
>> on to the desktop.
>>
>> ExternalDropHandler>>handleDroppedItem:event:  [21]
>>
>> is called in this case and then dispatches to do the necessary things
>> to deal with the
>>     ExampleEtoys/CarAndPen.014.pr
>> file.
>>
>> There is a message box which needs attention.
>>
>> And I assume that in the course of these events some settings are
>> necessary. Most prominently to choose EtoysProject and no longer
>> MorphicProject
>>
>> --Hannes
>>
>> [21] http://wiki.squeak.org/squeak/4283
>>
>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>> I added a demo file Morphic-hjh.1354 [11] to the repository
>>>
>>> MCHttpRepository
>>> location: 'http://www.squeaksource.com/EtoysProject'
>>> user: ''
>>> password: ''
>>>
>>> This file should be loaded into a fully updated trunk test image.
>>>
>>> I agree with what Tobias noted earlier in this thread that it is
>>> probably better to avoid renaming PasteUpMorph. I see as a solution to
>>> easier deal with PasteUpMorph functions the insertion of superclasses
>>> of PasteUpMorph (and thus subclasses of BorderedMorph) [12]
>>>
>>> The next thing I will come up with is a class
>>>     MorphWithDnD
>>>
>>> a morph class which supports drag and drop.
>>> As a superclass of MorphWithGrid
>>>
>>> A third class would be PlayField which contains all the Etoys selectors.
>>> In an image without Etoys that class would then be just empty.
>>>
>>> --Hannes
>>>
>>>
>>> --------------------
>>>
>>> [11]
>>> Name: Morphic-hjh.1354
>>> Author: hjh
>>> Time: 5 October 2017, 11:51:21.903338 am
>>> UUID: e96d5a46-453f-418c-b95f-26f1674ca329
>>> Ancestors: Morphic-hjh.1353
>>>
>>> Demo which shows how to remove selectors from PasteUpMorph and insert
>>> them into a newy created superclass
>>>
>>> Inserted
>>>      MorphWithGrid
>>> as a subclass of BorderedMorph and superclass of
>>>     PasteUpMorph
>>>
>>> gridding protocol was moved from
>>>     PasteUpMorph
>>> to
>>>     MorphWithGrid
>>>
>>>
>>> Morphic-hjh.1353:
>>> Ancestors: Morphic-hjh.1352
>>>
>>> Note: I tried to save this update several times. That accounts for the
>>> empty updates in between.
>>>
>>>
>>> ---------
>>> [12]
>>> After filing in Morphic-hjh.1354
>>> PasteUpMorph printHierarchy '
>>> ProtoObject #()
>>> Object #()
>>> Morph #()
>>> BorderedMorph #()
>>> MorphWithGrid #(''griddingOn'')
>>> PasteUpMorph #(...)
>>> ComponentLayout #(...)
>>> EventTimeline #(...)
>>> GeeBookPageMorph #(...)
>>> IndexTabs #(...)
>>> MouseEventEditor #(...)
>>> PartsBin #(...)
>>> QuickGuideHolderMorph #(...)
>>> SyntaxTestMethods #(...)
>>> TetrisBoard #(...)
>>> TextPlusPasteUpMorph #(...)
>>> WiWPasteUpMorph #(...)
>>> MVCWiWPasteUpMorph #(...)
>>> Worldlet #(...)
>>> ZASMScriptMorph #(...)
>>> ZoomAndScrollMorph #(...)'
>>>
>>> On 10/5/17, Marcel Taeumel <[hidden email]> wrote:
>>>> Done. :)
>>>>
>>>> Best,
>>>> Marcel
>>>> Am 05.10.2017 06:21:44 schrieb David T. Lewis <[hidden email]>:
>>>> We did have a problem on squeaksource.com, but I think it is mostly
>>>> resolved
>>>> now.
>>>>
>>>> Hannes,
>>>>
>>>> The password reset for your HJH account was lost, so I set it back to
>>>> the
>>>> new password that I sent to you earlier in private email. Hopefully
>>>> your
>>>> access is working again now.
>>>>
>>>> Marcel,
>>>>
>>>> Your new account disappeared when squeaksource recovered from some
>>>> internal
>>>> problem. Sorry, I do not know the cause. But could I ask you to please
>>>> register
>>>> again on squeaksource.com, and I will then add you back to
>>>> EtoysProject?
>>>>
>>>> Sorry for the disruption,
>>>> Dave
>>>>
>>>>
>>>> On Thu, Oct 05, 2017 at 02:03:47AM +0200, H. Hirzel wrote:
>>>>> Dave
>>>>>
>>>>> Earlier today login worked. Currently it does not.
>>>>>
>>>>> --Hannes
>>>>>
>>>>> On 10/5/17, David T. Lewis wrote:
>>>>> > Hannes,
>>>>> >
>>>>> > You did not cause the problem. It may have been me, I saved the
>>>>> > squeaksource.com
>>>>> > image from a VNC session (because I wanted to make an up to date
>>>>> > backup
>>>>> > of
>>>>> > it),
>>>>> > and I am now unable to log in to squeaksource. Maybe I triggered a
>>>>> > bug
>>>>> > :-/
>>>>> >
>>>>> > Can you please tell me if you are able to log in to your
>>>>> > http://squeaksource.com
>>>>> > page? I am getting authorization errors, and I suspect it is a
>>>>> > problem
>>>>> > that
>>>>> > affects
>>>>> > everyone.
>>>>> >
>>>>> > Thanks,
>>>>> > Dave
>>>>> >
>>>>> > On Thu, Oct 05, 2017 at 01:52:35AM +0200, H. Hirzel wrote:
>>>>> >> Dave,
>>>>> >>
>>>>> >> Yes, I encounter problems. They might be related to what I just
>>>>> >> tried
>>>>> >> to
>>>>> >> do:
>>>>> >>
>>>>> >> I wanted to save an updated version of Morphic to the ProjectEtoys
>>>>> >> repository but by mistake I tried to commit it to the trunk. As I
>>>>> >> do
>>>>> >> not have commit rights to trunk this prevented me from changing it
>>>>> >> inadvertently. Later on I wanted to commit that version to
>>>>> >> ProjectEtoys. It did not work.
>>>>> >>
>>>>> >> --Hannes
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >> On 10/5/17, David T. Lewis wrote:
>>>>> >> > I'm seeing problems with SqueakSource right now, trying to figure
>>>>> >> > out
>>>>> >> > what is wrong. So the project may not be accessible right now :-/
>>>>> >> >
>>>>> >> > Dave
>>>>> >> >
>>>>> >> >
>>>>> >> > On Thu, Oct 05, 2017 at 01:17:58AM +0200, H. Hirzel wrote:
>>>>> >> >> Karl,
>>>>> >> >>
>>>>> >> >> So far entering and existing the Etoys project works smoothly.
>>>>> >> >>
>>>>> >> >> Load mcz from into current Squeak 6.0a
>>>>> >> >>
>>>>> >> >> MCHttpRepository
>>>>> >> >> location: 'http://www.squeaksource.com/EtoysProject'
>>>>> >> >> user: ''
>>>>> >> >> password: ''
>>>>> >> >>
>>>>> >> >> The issue is about providing more settings when entering.
>>>>> >> >>
>>>>> >> >> Karl, do you want to be added to the list of developers?
>>>>> >> >>
>>>>> >> >> --HH
>>>>> >> >>
>>>>> >> >> On 10/5/17, H. Hirzel wrote:
>>>>> >> >> > PasteUpMorph is useful and the functions have to be
>>>>> >> >> > maintained.
>>>>> >> >> >
>>>>> >> >> > However adding more functions to Morph does not make sense.
>>>>> >> >> >
>>>>> >> >> > Squeak 6.0a
>>>>> >> >> > Morph selectors size 1345
>>>>> >> >> > PasteUpMorph selectors size 530
>>>>> >> >> >
>>>>> >> >> > --Hannes
>>>>> >> >> >
>>>>> >> >> > On 10/4/17, karl ramberg wrote:
>>>>> >> >> >> I'm not sure anybody uses Etoys anymore, but PasteUpMorph is
>>>>> >> >> >> very
>>>>> >> >> >> useful
>>>>> >> >> >> in
>>>>> >> >> >> direct manipulation because of it's various layout and event
>>>>> >> >> >> handling
>>>>> >> >> >> options. It also act as a container of other morphs, with
>>>>> >> >> >> automatic
>>>>> >> >> >> layout, enumeration etc.
>>>>> >> >> >> I'm sure most of this could be refactored into Morph class or
>>>>> >> >> >> another
>>>>> >> >> >> class.
>>>>> >> >> >>
>>>>> >> >> >> Best,
>>>>> >> >> >> Karl
>>>>> >> >> >>
>>>>> >> >> >> On Tue, Oct 3, 2017 at 3:03 PM, Marcel Taeumel
>>>>> >> >> >>
>>>>> >> >> >> wrote:
>>>>> >> >> >>
>>>>> >> >> >>> +1 :)
>>>>> >> >> >>>
>>>>> >> >> >>> And then later: Rename PasteUpMorph to WorldMorph, and keep
>>>>> >> >> >>> an
>>>>> >> >> >>> empty
>>>>> >> >> >>> PasteUpMorph subclass around for compatibility reasons. So
>>>>> >> >> >>> many
>>>>> >> >> >>> ideas
>>>>> >> >> >>> have
>>>>> >> >> >>> been ported down to Morph class over the past years. New
>>>>> >> >> >>> applications
>>>>> >> >> >>> have
>>>>> >> >> >>> no reason to ever use other instances of PasteUpMorph.
>>>>> >> >> >>>
>>>>> >> >> >>> Best,
>>>>> >> >> >>> Marcel
>>>>> >> >> >>>
>>>>> >> >> >>> Am 03.10.2017 14:57:55 schrieb H. Hirzel :
>>>>> >> >> >>> On 10/3/17, H. Hirzel wrote:
>>>>> >> >> >>> > Dave
>>>>> >> >> >>> >
>>>>> >> >> >>> > your change set contains the class EtoysProject with
>>>>> >> >> >>> >
>>>>> >> >> >>> > EtoysProject selectors
>>>>> >> >> >>> >
>>>>> >> >> >>> > #(#finalEnterActions: #restoreGlobalPreferences
>>>>> >> >> >>> > #saveGlobalPreferences
>>>>> >> >> >>> > #initializeProjectPreferences #configureOnFirstEntry
>>>>> >> >> >>> > #finalExitActions:)
>>>>> >> >> >>> >
>>>>> >> >> >>> > For complete configuration of a EtoysProject it might be
>>>>> >> >> >>> > necessary
>>>>> >> >> >>> > to
>>>>> >> >> >>> > do
>>>>> >> >> >>> >
>>>>> >> >> >>> > PasteUpMorph subclass: EtoysPasteUpMorph
>>>>> >> >> >>> >
>>>>> >> >> >>> > as well. http://wiki.squeak.org/squeak/6461
>>>>> >> >> >>> >
>>>>> >> >> >>> > Then Etoys related methods may be pushed down to
>>>>> >> >> >>> > EtoysPasteUpMorph.
>>>>> >> >> >>>
>>>>> >> >> >>> See screen shot attached.
>>>>> >> >> >>>
>>>>> >> >> >>> > And probably an Etoys specific subclass of WorldMenu would
>>>>> >> >> >>> > be
>>>>> >> >> >>> > fine
>>>>> >> >> >>> > as
>>>>> >> >> >>> well
>>>>> >> >> >>> > http://wiki.squeak.org/squeak/6461
>>>>> >> >> >>> >
>>>>> >> >> >>> >
>>>>> >> >> >>> > there is a test project [2] and some more information
>>>>> >> >> >>> > about
>>>>> >> >> >>> > adaptions
>>>>> >> >> >>> > needed because of the UI changes in the thread 'Etoys in
>>>>> >> >> >>> > 2017?' -
>>>>> >> >> >>> > UI
>>>>> >> >> >>> > preferences [3]. And it would be good to have Etoys
>>>>> >> >> >>> > methods
>>>>> >> >> >>> > /
>>>>> >> >> >>> > configuration separate [4].
>>>>> >> >> >>> >
>>>>> >> >> >>> > I suggest that you start go ahead and start implementing
>>>>> >> >> >>> > this
>>>>> >> >> >>> > while
>>>>> >> >> >>> > using a test Etoys project dropped onto the desktop.
>>>>> >> >> >>> >
>>>>> >> >> >>> > --Hannes
>>>>> >> >> >>> >
>>>>> >> >> >>> >
>>>>> >> >> >>> > [2] > You simply drop it in. E.g. download this project
>>>>> >> >> >>> >> http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>>>>> >> >> >>> >
>>>>> >> >> >>> > [3] Hannes Hirzel, 'Etoys in 2017?' mail, Wed, Feb 22,
>>>>> >> >> >>> > 2017
>>>>> >> >> >>> > at
>>>>> >> >> >>> > 11:01
>>>>> >> >> >>> > AM
>>>>> >> >> >>> >
>>>>> >> >> >>> > [4] David T. Lewis, Sep 4, 2016 at 3:34 PM
>>>>> >> >> >>> > "I think it would be great if both Etoys and Scratch were
>>>>> >> >> >>> > easily
>>>>> >> >> >>> > loadable and unloadable in trunk."
>>>>> >> >> >>> >
>>>>> >> >> >>> > On 10/2/17, David T. Lewis wrote:
>>>>> >> >> >>> >> An EtoysProject is a project that is configured for
>>>>> >> >> >>> >> running
>>>>> >> >> >>> >> Etoys.
>>>>> >> >> >>> >> On
>>>>> >> >> >>> >> first entry to a new EtoysProject, the playground and
>>>>> >> >> >>> >> project
>>>>> >> >> >>> preferences
>>>>> >> >> >>> >> are initialized to provide an environment similar to that
>>>>> >> >> >>> >> of
>>>>> >> >> >>> >> a
>>>>> >> >> >>> >> traditional
>>>>> >> >> >>> >> standalone Etoys image.
>>>>> >> >> >>> >>
>>>>> >> >> >>> >> Certain preferences that are required for Etoys are
>>>>> >> >> >>> >> initialized
>>>>> >> >> >>> >> on
>>>>> >> >> >>> >> project
>>>>> >> >> >>> >> entry, overriding their global preference values while
>>>>> >> >> >>> >> this
>>>>> >> >> >>> EtoysProject
>>>>> >> >> >>> >> is active. On leaving the project, these preferences are
>>>>> >> >> >>> >> restored
>>>>> >> >> >>> >> to
>>>>> >> >> >>> >> their
>>>>> >> >> >>> >> previous values.
>>>>> >> >> >>> >>
>>>>> >> >> >>> >> "ProjectViewMorph openOn: EtoysProject new"
>>>>> >> >> >>> >>
>>>>> >> >> >>> >> Change set attached for a minimal implementation.
>>>>> >> >> >>> >>
>>>>> >> >> >>> >> Anyone with Etoys knowledge care to help? I do not know
>>>>> >> >> >>> >> enough
>>>>> >> >> >>> >> about
>>>>> >> >> >>> >> Etoys
>>>>> >> >> >>> >> to fill in the rest of the initialization that will be
>>>>> >> >> >>> >> required,
>>>>> >> >> >>> >> but
>>>>> >> >> >>> >> it
>>>>> >> >> >>> >> should not be hard to do.
>>>>> >> >> >>> >>
>>>>> >> >> >>> >> Dave
>>>>> >> >> >>> >>
>>>>> >> >> >>> >>
>>>>> >> >> >>> >
>>>>> >> >> >>>
>>>>> >> >> >>>
>>>>> >> >> >>>
>>>>> >> >> >>>
>>>>> >> >> >>>
>>>>> >> >> >>
>>>>> >> >> >
>>>>> >> >
>>>>> >> >
>>>>> >> >>
>>>>> >> >
>>>>> >> >
>>>>> >> >
>>>>> >>
>>>>> >
>>>>> >
>>>>>
>>>>
>>>>
>>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

Hannes Hirzel
If you drop

    http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr

on to the desktop Squeak asks you for a replacement for
'MultiNewParagraph' as this class was removed in April (The Trunk:
EToys-nice.292.mcz)

Answer 'NewParagraph'. Then the Etoys project loads and gives some
error messages. Some are related to preferences. An issue to fix
first.

Another issue is that actually a MorphicProject is created instead of
the new #EtoysProject type we want.

I do not now yet where to do this.
The call chain passes through

MultiByteBinaryOrTextStream>>fileInObjectAndCodeForProject [1]

The stream [2] has code and an  object to be read by a SmartRefStream.

More investigation needed.

--Hannes






[1] MultiByteBinaryOrTextStream>>fileInObjectAndCodeForProject

fileInObjectAndCodeForProject
        "This file may contain:
1) a fileIn of code
2) just an object in SmartReferenceStream format
3) both code and an object.
        File it in and return the object.  Note that self must be a
FileStream or RWBinaryOrTextStream.  Maybe ReadWriteStream incorporate
RWBinaryOrTextStream?"
        | refStream object |
        self halt.
        self text.
        self peek asciiValue = 4
                ifTrue: [  "pure object file"
                        self binary.
                        refStream := SmartRefStream on: self.
                        object := refStream nextAndClose]
                ifFalse: [  "objects mixed with a fileIn"
                        self fileInProject.  "reads code and objects, then closes the file"
                        self binary.
                        object := SmartRefStream scannedObject]. "set by side effect of one
of the chunks"
        SmartRefStream scannedObject: nil.  "clear scannedObject"
        ^ object






[2] Content of the Etoys pr file readstream

'''From etoys4.0 of 9 October 2008 [latest update: #2319] on 18
September 2009 at 3:39:18 pm''!
 | cont | (Smalltalk includesKey: #MorphExtensionPlus) ifFalse: [self
inform: ''This project cannot be loaded into an older system.\Please
use an OLPC Etoys compatible image.'' translated withCRs.
                cont _ thisContext.
                [cont notNil] whileTrue: [
                        cont selector == #handleEvent: ifTrue: [cont return: nil].
                        cont _ cont sender.
                ]]!

!ObjectScanner new initialize!



!self smartRefStream!

On 10/5/17, H. Hirzel <[hidden email]> wrote:

> This later on goes to
>
>
> ProjectLoading class>>
>
> openName: aFileName stream: preStream fromDirectory: aDirectoryOrNil
> withProjectView: existingView clearOriginFlag: clearOriginFlag
> "Reconstitute a Morph from the selected file, presumed to
> represent a Morph saved via the SmartRefStream mechanism, and open it
> in an appropriate Morphic world."
>
>     | morphOrList archive mgr substituteFont numberOfFontSubstitutes
> resultArray anObject project manifests dict |
> (self checkStream: preStream) ifTrue: [^ self].
> ProgressNotification signal: '0.2'.
> archive := preStream isZipArchive
> ifTrue:[ZipArchive new readFrom: preStream]
> ifFalse:[nil].
> archive ifNotNil:[
> manifests := (archive membersMatching: '*manifest').
> (manifests size = 1 and: [((dict := self parseManifest: manifests
> first contents) at: 'Project-Format' ifAbsent: []) = 'S-Expression'])
> ifTrue: [
> ^ (self respondsTo:
> #openSexpProjectDict:stream:fromDirectory:withProjectView:)
> ifTrue: [self openSexpProjectDict: dict stream: preStream
> fromDirectory: aDirectoryOrNil withProjectView: existingView]
> ifFalse: [self inform: 'Cannot load S-Expression format projects
> without Etoys' translated]]].
>
> morphOrList := self morphOrList: aFileName stream: preStream
> fromDirectory: aDirectoryOrNil archive: archive.
> morphOrList ifNil: [^ self].
> ProgressNotification  signal: '0.4'.
> resultArray := self fileInName: aFileName archive: archive
> morphOrList: morphOrList.
> anObject := resultArray first.
> numberOfFontSubstitutes := resultArray second.
> substituteFont := resultArray third.
> mgr := resultArray fourth.
> preStream close.
> ProgressNotification  signal: '0.7'.
> "the hard part is over"
> (anObject isKindOf: ImageSegment) ifTrue: [
> project := self loadImageSegment: anObject
> fromDirectory: aDirectoryOrNil
> withProjectView: existingView
> numberOfFontSubstitutes: numberOfFontSubstitutes
> substituteFont: substituteFont
> mgr: mgr.
> project noteManifestDetailsIn: dict.
> project removeParameter: #sugarProperties.
> Smalltalk at: #SugarPropertiesNotification ifPresent: [:sp |
> sp signal ifNotNil: [:props |
> project keepSugarProperties: props monitor: true]].
> clearOriginFlag ifTrue: [project forgetExistingURL].
> ProgressNotification  signal: '0.8'.
> ^ project
> ifNil: [self inform: 'No project found in this file' translated]
> ifNotNil: [ProjectEntryNotification signal: project]].
> Project current openViewAndEnter: anObject
>
> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>> A few steps more: when I drop a project file onto the desktop the
>> following methods are called
>>
>> PasteUpMorph handleDroppedItem: anItem event: anEvent
>> ExternalDropHandler lookupExternalDropHandler: anItem
>> ExternalDropHandler handle: dropStream in: pasteUp dropEvent: anEvent
>> ExternalDropHandler class defaultProjectHandler
>>
>> ProjectLoading openOn: aMultiByteFileStream:
>> "'/home/user/Downloads/CarAndPen.014(2).pr'"
>>
>> So we have to fix ProjectLoading
>>
>>
>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>> Note: MorphWithGrid does not really make sense unless you have a
>>> superclass MorphWithDnD (Drag and Drop) which handles the morph droped
>>> and makes them 'sticky'.
>>>
>>> Though refactoring PastUpMorph by inserting superclasses is an issue I
>>> suggest to put this on the backburner at the moment and focus on
>>> getting the Etoys setting straight as Dave suggests in the initial
>>> mail.
>>>
>>> A use case to follow: What happens when you drop  the exapme project
>>>
>>>     http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>>>
>>> on to the desktop.
>>>
>>> ExternalDropHandler>>handleDroppedItem:event:  [21]
>>>
>>> is called in this case and then dispatches to do the necessary things
>>> to deal with the
>>>     ExampleEtoys/CarAndPen.014.pr
>>> file.
>>>
>>> There is a message box which needs attention.
>>>
>>> And I assume that in the course of these events some settings are
>>> necessary. Most prominently to choose EtoysProject and no longer
>>> MorphicProject
>>>
>>> --Hannes
>>>
>>> [21] http://wiki.squeak.org/squeak/4283
>>>
>>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>>> I added a demo file Morphic-hjh.1354 [11] to the repository
>>>>
>>>> MCHttpRepository
>>>> location: 'http://www.squeaksource.com/EtoysProject'
>>>> user: ''
>>>> password: ''
>>>>
>>>> This file should be loaded into a fully updated trunk test image.
>>>>
>>>> I agree with what Tobias noted earlier in this thread that it is
>>>> probably better to avoid renaming PasteUpMorph. I see as a solution to
>>>> easier deal with PasteUpMorph functions the insertion of superclasses
>>>> of PasteUpMorph (and thus subclasses of BorderedMorph) [12]
>>>>
>>>> The next thing I will come up with is a class
>>>>     MorphWithDnD
>>>>
>>>> a morph class which supports drag and drop.
>>>> As a superclass of MorphWithGrid
>>>>
>>>> A third class would be PlayField which contains all the Etoys
>>>> selectors.
>>>> In an image without Etoys that class would then be just empty.
>>>>
>>>> --Hannes
>>>>
>>>>
>>>> --------------------
>>>>
>>>> [11]
>>>> Name: Morphic-hjh.1354
>>>> Author: hjh
>>>> Time: 5 October 2017, 11:51:21.903338 am
>>>> UUID: e96d5a46-453f-418c-b95f-26f1674ca329
>>>> Ancestors: Morphic-hjh.1353
>>>>
>>>> Demo which shows how to remove selectors from PasteUpMorph and insert
>>>> them into a newy created superclass
>>>>
>>>> Inserted
>>>>      MorphWithGrid
>>>> as a subclass of BorderedMorph and superclass of
>>>>     PasteUpMorph
>>>>
>>>> gridding protocol was moved from
>>>>     PasteUpMorph
>>>> to
>>>>     MorphWithGrid
>>>>
>>>>
>>>> Morphic-hjh.1353:
>>>> Ancestors: Morphic-hjh.1352
>>>>
>>>> Note: I tried to save this update several times. That accounts for the
>>>> empty updates in between.
>>>>
>>>>
>>>> ---------
>>>> [12]
>>>> After filing in Morphic-hjh.1354
>>>> PasteUpMorph printHierarchy '
>>>> ProtoObject #()
>>>> Object #()
>>>> Morph #()
>>>> BorderedMorph #()
>>>> MorphWithGrid #(''griddingOn'')
>>>> PasteUpMorph #(...)
>>>> ComponentLayout #(...)
>>>> EventTimeline #(...)
>>>> GeeBookPageMorph #(...)
>>>> IndexTabs #(...)
>>>> MouseEventEditor #(...)
>>>> PartsBin #(...)
>>>> QuickGuideHolderMorph #(...)
>>>> SyntaxTestMethods #(...)
>>>> TetrisBoard #(...)
>>>> TextPlusPasteUpMorph #(...)
>>>> WiWPasteUpMorph #(...)
>>>> MVCWiWPasteUpMorph #(...)
>>>> Worldlet #(...)
>>>> ZASMScriptMorph #(...)
>>>> ZoomAndScrollMorph #(...)'
>>>>
>>>> On 10/5/17, Marcel Taeumel <[hidden email]> wrote:
>>>>> Done. :)
>>>>>
>>>>> Best,
>>>>> Marcel
>>>>> Am 05.10.2017 06:21:44 schrieb David T. Lewis <[hidden email]>:
>>>>> We did have a problem on squeaksource.com, but I think it is mostly
>>>>> resolved
>>>>> now.
>>>>>
>>>>> Hannes,
>>>>>
>>>>> The password reset for your HJH account was lost, so I set it back to
>>>>> the
>>>>> new password that I sent to you earlier in private email. Hopefully
>>>>> your
>>>>> access is working again now.
>>>>>
>>>>> Marcel,
>>>>>
>>>>> Your new account disappeared when squeaksource recovered from some
>>>>> internal
>>>>> problem. Sorry, I do not know the cause. But could I ask you to please
>>>>> register
>>>>> again on squeaksource.com, and I will then add you back to
>>>>> EtoysProject?
>>>>>
>>>>> Sorry for the disruption,
>>>>> Dave
>>>>>
>>>>>
>>>>> On Thu, Oct 05, 2017 at 02:03:47AM +0200, H. Hirzel wrote:
>>>>>> Dave
>>>>>>
>>>>>> Earlier today login worked. Currently it does not.
>>>>>>
>>>>>> --Hannes
>>>>>>
>>>>>> On 10/5/17, David T. Lewis wrote:
>>>>>> > Hannes,
>>>>>> >
>>>>>> > You did not cause the problem. It may have been me, I saved the
>>>>>> > squeaksource.com
>>>>>> > image from a VNC session (because I wanted to make an up to date
>>>>>> > backup
>>>>>> > of
>>>>>> > it),
>>>>>> > and I am now unable to log in to squeaksource. Maybe I triggered a
>>>>>> > bug
>>>>>> > :-/
>>>>>> >
>>>>>> > Can you please tell me if you are able to log in to your
>>>>>> > http://squeaksource.com
>>>>>> > page? I am getting authorization errors, and I suspect it is a
>>>>>> > problem
>>>>>> > that
>>>>>> > affects
>>>>>> > everyone.
>>>>>> >
>>>>>> > Thanks,
>>>>>> > Dave
>>>>>> >
>>>>>> > On Thu, Oct 05, 2017 at 01:52:35AM +0200, H. Hirzel wrote:
>>>>>> >> Dave,
>>>>>> >>
>>>>>> >> Yes, I encounter problems. They might be related to what I just
>>>>>> >> tried
>>>>>> >> to
>>>>>> >> do:
>>>>>> >>
>>>>>> >> I wanted to save an updated version of Morphic to the ProjectEtoys
>>>>>> >> repository but by mistake I tried to commit it to the trunk. As I
>>>>>> >> do
>>>>>> >> not have commit rights to trunk this prevented me from changing it
>>>>>> >> inadvertently. Later on I wanted to commit that version to
>>>>>> >> ProjectEtoys. It did not work.
>>>>>> >>
>>>>>> >> --Hannes
>>>>>> >>
>>>>>> >>
>>>>>> >>
>>>>>> >> On 10/5/17, David T. Lewis wrote:
>>>>>> >> > I'm seeing problems with SqueakSource right now, trying to
>>>>>> >> > figure
>>>>>> >> > out
>>>>>> >> > what is wrong. So the project may not be accessible right now
>>>>>> >> > :-/
>>>>>> >> >
>>>>>> >> > Dave
>>>>>> >> >
>>>>>> >> >
>>>>>> >> > On Thu, Oct 05, 2017 at 01:17:58AM +0200, H. Hirzel wrote:
>>>>>> >> >> Karl,
>>>>>> >> >>
>>>>>> >> >> So far entering and existing the Etoys project works smoothly.
>>>>>> >> >>
>>>>>> >> >> Load mcz from into current Squeak 6.0a
>>>>>> >> >>
>>>>>> >> >> MCHttpRepository
>>>>>> >> >> location: 'http://www.squeaksource.com/EtoysProject'
>>>>>> >> >> user: ''
>>>>>> >> >> password: ''
>>>>>> >> >>
>>>>>> >> >> The issue is about providing more settings when entering.
>>>>>> >> >>
>>>>>> >> >> Karl, do you want to be added to the list of developers?
>>>>>> >> >>
>>>>>> >> >> --HH
>>>>>> >> >>
>>>>>> >> >> On 10/5/17, H. Hirzel wrote:
>>>>>> >> >> > PasteUpMorph is useful and the functions have to be
>>>>>> >> >> > maintained.
>>>>>> >> >> >
>>>>>> >> >> > However adding more functions to Morph does not make sense.
>>>>>> >> >> >
>>>>>> >> >> > Squeak 6.0a
>>>>>> >> >> > Morph selectors size 1345
>>>>>> >> >> > PasteUpMorph selectors size 530
>>>>>> >> >> >
>>>>>> >> >> > --Hannes
>>>>>> >> >> >
>>>>>> >> >> > On 10/4/17, karl ramberg wrote:
>>>>>> >> >> >> I'm not sure anybody uses Etoys anymore, but PasteUpMorph is
>>>>>> >> >> >> very
>>>>>> >> >> >> useful
>>>>>> >> >> >> in
>>>>>> >> >> >> direct manipulation because of it's various layout and event
>>>>>> >> >> >> handling
>>>>>> >> >> >> options. It also act as a container of other morphs, with
>>>>>> >> >> >> automatic
>>>>>> >> >> >> layout, enumeration etc.
>>>>>> >> >> >> I'm sure most of this could be refactored into Morph class
>>>>>> >> >> >> or
>>>>>> >> >> >> another
>>>>>> >> >> >> class.
>>>>>> >> >> >>
>>>>>> >> >> >> Best,
>>>>>> >> >> >> Karl
>>>>>> >> >> >>
>>>>>> >> >> >> On Tue, Oct 3, 2017 at 3:03 PM, Marcel Taeumel
>>>>>> >> >> >>
>>>>>> >> >> >> wrote:
>>>>>> >> >> >>
>>>>>> >> >> >>> +1 :)
>>>>>> >> >> >>>
>>>>>> >> >> >>> And then later: Rename PasteUpMorph to WorldMorph, and keep
>>>>>> >> >> >>> an
>>>>>> >> >> >>> empty
>>>>>> >> >> >>> PasteUpMorph subclass around for compatibility reasons. So
>>>>>> >> >> >>> many
>>>>>> >> >> >>> ideas
>>>>>> >> >> >>> have
>>>>>> >> >> >>> been ported down to Morph class over the past years. New
>>>>>> >> >> >>> applications
>>>>>> >> >> >>> have
>>>>>> >> >> >>> no reason to ever use other instances of PasteUpMorph.
>>>>>> >> >> >>>
>>>>>> >> >> >>> Best,
>>>>>> >> >> >>> Marcel
>>>>>> >> >> >>>
>>>>>> >> >> >>> Am 03.10.2017 14:57:55 schrieb H. Hirzel :
>>>>>> >> >> >>> On 10/3/17, H. Hirzel wrote:
>>>>>> >> >> >>> > Dave
>>>>>> >> >> >>> >
>>>>>> >> >> >>> > your change set contains the class EtoysProject with
>>>>>> >> >> >>> >
>>>>>> >> >> >>> > EtoysProject selectors
>>>>>> >> >> >>> >
>>>>>> >> >> >>> > #(#finalEnterActions: #restoreGlobalPreferences
>>>>>> >> >> >>> > #saveGlobalPreferences
>>>>>> >> >> >>> > #initializeProjectPreferences #configureOnFirstEntry
>>>>>> >> >> >>> > #finalExitActions:)
>>>>>> >> >> >>> >
>>>>>> >> >> >>> > For complete configuration of a EtoysProject it might be
>>>>>> >> >> >>> > necessary
>>>>>> >> >> >>> > to
>>>>>> >> >> >>> > do
>>>>>> >> >> >>> >
>>>>>> >> >> >>> > PasteUpMorph subclass: EtoysPasteUpMorph
>>>>>> >> >> >>> >
>>>>>> >> >> >>> > as well. http://wiki.squeak.org/squeak/6461
>>>>>> >> >> >>> >
>>>>>> >> >> >>> > Then Etoys related methods may be pushed down to
>>>>>> >> >> >>> > EtoysPasteUpMorph.
>>>>>> >> >> >>>
>>>>>> >> >> >>> See screen shot attached.
>>>>>> >> >> >>>
>>>>>> >> >> >>> > And probably an Etoys specific subclass of WorldMenu
>>>>>> >> >> >>> > would
>>>>>> >> >> >>> > be
>>>>>> >> >> >>> > fine
>>>>>> >> >> >>> > as
>>>>>> >> >> >>> well
>>>>>> >> >> >>> > http://wiki.squeak.org/squeak/6461
>>>>>> >> >> >>> >
>>>>>> >> >> >>> >
>>>>>> >> >> >>> > there is a test project [2] and some more information
>>>>>> >> >> >>> > about
>>>>>> >> >> >>> > adaptions
>>>>>> >> >> >>> > needed because of the UI changes in the thread 'Etoys in
>>>>>> >> >> >>> > 2017?' -
>>>>>> >> >> >>> > UI
>>>>>> >> >> >>> > preferences [3]. And it would be good to have Etoys
>>>>>> >> >> >>> > methods
>>>>>> >> >> >>> > /
>>>>>> >> >> >>> > configuration separate [4].
>>>>>> >> >> >>> >
>>>>>> >> >> >>> > I suggest that you start go ahead and start implementing
>>>>>> >> >> >>> > this
>>>>>> >> >> >>> > while
>>>>>> >> >> >>> > using a test Etoys project dropped onto the desktop.
>>>>>> >> >> >>> >
>>>>>> >> >> >>> > --Hannes
>>>>>> >> >> >>> >
>>>>>> >> >> >>> >
>>>>>> >> >> >>> > [2] > You simply drop it in. E.g. download this project
>>>>>> >> >> >>> >> http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>>>>>> >> >> >>> >
>>>>>> >> >> >>> > [3] Hannes Hirzel, 'Etoys in 2017?' mail, Wed, Feb 22,
>>>>>> >> >> >>> > 2017
>>>>>> >> >> >>> > at
>>>>>> >> >> >>> > 11:01
>>>>>> >> >> >>> > AM
>>>>>> >> >> >>> >
>>>>>> >> >> >>> > [4] David T. Lewis, Sep 4, 2016 at 3:34 PM
>>>>>> >> >> >>> > "I think it would be great if both Etoys and Scratch were
>>>>>> >> >> >>> > easily
>>>>>> >> >> >>> > loadable and unloadable in trunk."
>>>>>> >> >> >>> >
>>>>>> >> >> >>> > On 10/2/17, David T. Lewis wrote:
>>>>>> >> >> >>> >> An EtoysProject is a project that is configured for
>>>>>> >> >> >>> >> running
>>>>>> >> >> >>> >> Etoys.
>>>>>> >> >> >>> >> On
>>>>>> >> >> >>> >> first entry to a new EtoysProject, the playground and
>>>>>> >> >> >>> >> project
>>>>>> >> >> >>> preferences
>>>>>> >> >> >>> >> are initialized to provide an environment similar to
>>>>>> >> >> >>> >> that
>>>>>> >> >> >>> >> of
>>>>>> >> >> >>> >> a
>>>>>> >> >> >>> >> traditional
>>>>>> >> >> >>> >> standalone Etoys image.
>>>>>> >> >> >>> >>
>>>>>> >> >> >>> >> Certain preferences that are required for Etoys are
>>>>>> >> >> >>> >> initialized
>>>>>> >> >> >>> >> on
>>>>>> >> >> >>> >> project
>>>>>> >> >> >>> >> entry, overriding their global preference values while
>>>>>> >> >> >>> >> this
>>>>>> >> >> >>> EtoysProject
>>>>>> >> >> >>> >> is active. On leaving the project, these preferences are
>>>>>> >> >> >>> >> restored
>>>>>> >> >> >>> >> to
>>>>>> >> >> >>> >> their
>>>>>> >> >> >>> >> previous values.
>>>>>> >> >> >>> >>
>>>>>> >> >> >>> >> "ProjectViewMorph openOn: EtoysProject new"
>>>>>> >> >> >>> >>
>>>>>> >> >> >>> >> Change set attached for a minimal implementation.
>>>>>> >> >> >>> >>
>>>>>> >> >> >>> >> Anyone with Etoys knowledge care to help? I do not know
>>>>>> >> >> >>> >> enough
>>>>>> >> >> >>> >> about
>>>>>> >> >> >>> >> Etoys
>>>>>> >> >> >>> >> to fill in the rest of the initialization that will be
>>>>>> >> >> >>> >> required,
>>>>>> >> >> >>> >> but
>>>>>> >> >> >>> >> it
>>>>>> >> >> >>> >> should not be hard to do.
>>>>>> >> >> >>> >>
>>>>>> >> >> >>> >> Dave
>>>>>> >> >> >>> >>
>>>>>> >> >> >>> >>
>>>>>> >> >> >>> >
>>>>>> >> >> >>>
>>>>>> >> >> >>>
>>>>>> >> >> >>>
>>>>>> >> >> >>>
>>>>>> >> >> >>>
>>>>>> >> >> >>
>>>>>> >> >> >
>>>>>> >> >
>>>>>> >> >
>>>>>> >> >>
>>>>>> >> >
>>>>>> >> >
>>>>>> >> >
>>>>>> >>
>>>>>> >
>>>>>> >
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

Hannes Hirzel
Later on in


ProjectLoading class>>loadImageSegment: morphOrList  fromDirectory:
aDirectoryOrNil withProjectView: existingView numberOfFontSubstitutes:
numberOfFontSubstitutes substituteFont: substituteFont mgr: mgr



        | proj projectsToBeDeleted ef f |
        (f := (Flaps globalFlapTabWithID: 'Navigator' translated)) ifNotNil:
[f hideFlap].
        proj := morphOrList arrayOfRoots
                        detect: [:mm | mm isKindOf: Project]
                        ifNone: [^ nil].


The project 'proj' is read which is a MorphicProject.

We need to convert this into an EtoysProject if we want to follow the
path of upgrading MorphicProjects to EtoysProjects.

Probably a good idea but a matter of discussion.

On 10/5/17, H. Hirzel <[hidden email]> wrote:

> If you drop
>
>     http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>
> on to the desktop Squeak asks you for a replacement for
> 'MultiNewParagraph' as this class was removed in April (The Trunk:
> EToys-nice.292.mcz)
>
> Answer 'NewParagraph'. Then the Etoys project loads and gives some
> error messages. Some are related to preferences. An issue to fix
> first.
>
> Another issue is that actually a MorphicProject is created instead of
> the new #EtoysProject type we want.
>
> I do not now yet where to do this.
> The call chain passes through
>
> MultiByteBinaryOrTextStream>>fileInObjectAndCodeForProject [1]
>
> The stream [2] has code and an  object to be read by a SmartRefStream.
>
> More investigation needed.
>
> --Hannes
>
>
>
>
>
>
> [1] MultiByteBinaryOrTextStream>>fileInObjectAndCodeForProject
>
> fileInObjectAndCodeForProject
> "This file may contain:
> 1) a fileIn of code
> 2) just an object in SmartReferenceStream format
> 3) both code and an object.
> File it in and return the object.  Note that self must be a
> FileStream or RWBinaryOrTextStream.  Maybe ReadWriteStream incorporate
> RWBinaryOrTextStream?"
> | refStream object |
> self halt.
> self text.
> self peek asciiValue = 4
> ifTrue: [  "pure object file"
> self binary.
> refStream := SmartRefStream on: self.
> object := refStream nextAndClose]
> ifFalse: [  "objects mixed with a fileIn"
> self fileInProject.  "reads code and objects, then closes the file"
> self binary.
> object := SmartRefStream scannedObject]. "set by side effect of one
> of the chunks"
> SmartRefStream scannedObject: nil.  "clear scannedObject"
> ^ object
>
>
>
>
>
>
> [2] Content of the Etoys pr file readstream
>
> '''From etoys4.0 of 9 October 2008 [latest update: #2319] on 18
> September 2009 at 3:39:18 pm''!
>  | cont | (Smalltalk includesKey: #MorphExtensionPlus) ifFalse: [self
> inform: ''This project cannot be loaded into an older system.\Please
> use an OLPC Etoys compatible image.'' translated withCRs.
> cont _ thisContext.
> [cont notNil] whileTrue: [
> cont selector == #handleEvent: ifTrue: [cont return: nil].
> cont _ cont sender.
> ]]!
>
> !ObjectScanner new initialize!
>
>
>
> !self smartRefStream!
>
> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>> This later on goes to
>>
>>
>> ProjectLoading class>>
>>
>> openName: aFileName stream: preStream fromDirectory: aDirectoryOrNil
>> withProjectView: existingView clearOriginFlag: clearOriginFlag
>> "Reconstitute a Morph from the selected file, presumed to
>> represent a Morph saved via the SmartRefStream mechanism, and open it
>> in an appropriate Morphic world."
>>
>>     | morphOrList archive mgr substituteFont numberOfFontSubstitutes
>> resultArray anObject project manifests dict |
>> (self checkStream: preStream) ifTrue: [^ self].
>> ProgressNotification signal: '0.2'.
>> archive := preStream isZipArchive
>> ifTrue:[ZipArchive new readFrom: preStream]
>> ifFalse:[nil].
>> archive ifNotNil:[
>> manifests := (archive membersMatching: '*manifest').
>> (manifests size = 1 and: [((dict := self parseManifest: manifests
>> first contents) at: 'Project-Format' ifAbsent: []) = 'S-Expression'])
>> ifTrue: [
>> ^ (self respondsTo:
>> #openSexpProjectDict:stream:fromDirectory:withProjectView:)
>> ifTrue: [self openSexpProjectDict: dict stream: preStream
>> fromDirectory: aDirectoryOrNil withProjectView: existingView]
>> ifFalse: [self inform: 'Cannot load S-Expression format projects
>> without Etoys' translated]]].
>>
>> morphOrList := self morphOrList: aFileName stream: preStream
>> fromDirectory: aDirectoryOrNil archive: archive.
>> morphOrList ifNil: [^ self].
>> ProgressNotification  signal: '0.4'.
>> resultArray := self fileInName: aFileName archive: archive
>> morphOrList: morphOrList.
>> anObject := resultArray first.
>> numberOfFontSubstitutes := resultArray second.
>> substituteFont := resultArray third.
>> mgr := resultArray fourth.
>> preStream close.
>> ProgressNotification  signal: '0.7'.
>> "the hard part is over"
>> (anObject isKindOf: ImageSegment) ifTrue: [
>> project := self loadImageSegment: anObject
>> fromDirectory: aDirectoryOrNil
>> withProjectView: existingView
>> numberOfFontSubstitutes: numberOfFontSubstitutes
>> substituteFont: substituteFont
>> mgr: mgr.
>> project noteManifestDetailsIn: dict.
>> project removeParameter: #sugarProperties.
>> Smalltalk at: #SugarPropertiesNotification ifPresent: [:sp |
>> sp signal ifNotNil: [:props |
>> project keepSugarProperties: props monitor: true]].
>> clearOriginFlag ifTrue: [project forgetExistingURL].
>> ProgressNotification  signal: '0.8'.
>> ^ project
>> ifNil: [self inform: 'No project found in this file' translated]
>> ifNotNil: [ProjectEntryNotification signal: project]].
>> Project current openViewAndEnter: anObject
>>
>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>> A few steps more: when I drop a project file onto the desktop the
>>> following methods are called
>>>
>>> PasteUpMorph handleDroppedItem: anItem event: anEvent
>>> ExternalDropHandler lookupExternalDropHandler: anItem
>>> ExternalDropHandler handle: dropStream in: pasteUp dropEvent: anEvent
>>> ExternalDropHandler class defaultProjectHandler
>>>
>>> ProjectLoading openOn: aMultiByteFileStream:
>>> "'/home/user/Downloads/CarAndPen.014(2).pr'"
>>>
>>> So we have to fix ProjectLoading
>>>
>>>
>>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>>> Note: MorphWithGrid does not really make sense unless you have a
>>>> superclass MorphWithDnD (Drag and Drop) which handles the morph droped
>>>> and makes them 'sticky'.
>>>>
>>>> Though refactoring PastUpMorph by inserting superclasses is an issue I
>>>> suggest to put this on the backburner at the moment and focus on
>>>> getting the Etoys setting straight as Dave suggests in the initial
>>>> mail.
>>>>
>>>> A use case to follow: What happens when you drop  the exapme project
>>>>
>>>>     http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>>>>
>>>> on to the desktop.
>>>>
>>>> ExternalDropHandler>>handleDroppedItem:event:  [21]
>>>>
>>>> is called in this case and then dispatches to do the necessary things
>>>> to deal with the
>>>>     ExampleEtoys/CarAndPen.014.pr
>>>> file.
>>>>
>>>> There is a message box which needs attention.
>>>>
>>>> And I assume that in the course of these events some settings are
>>>> necessary. Most prominently to choose EtoysProject and no longer
>>>> MorphicProject
>>>>
>>>> --Hannes
>>>>
>>>> [21] http://wiki.squeak.org/squeak/4283
>>>>
>>>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>>>> I added a demo file Morphic-hjh.1354 [11] to the repository
>>>>>
>>>>> MCHttpRepository
>>>>> location: 'http://www.squeaksource.com/EtoysProject'
>>>>> user: ''
>>>>> password: ''
>>>>>
>>>>> This file should be loaded into a fully updated trunk test image.
>>>>>
>>>>> I agree with what Tobias noted earlier in this thread that it is
>>>>> probably better to avoid renaming PasteUpMorph. I see as a solution to
>>>>> easier deal with PasteUpMorph functions the insertion of superclasses
>>>>> of PasteUpMorph (and thus subclasses of BorderedMorph) [12]
>>>>>
>>>>> The next thing I will come up with is a class
>>>>>     MorphWithDnD
>>>>>
>>>>> a morph class which supports drag and drop.
>>>>> As a superclass of MorphWithGrid
>>>>>
>>>>> A third class would be PlayField which contains all the Etoys
>>>>> selectors.
>>>>> In an image without Etoys that class would then be just empty.
>>>>>
>>>>> --Hannes
>>>>>
>>>>>
>>>>> --------------------
>>>>>
>>>>> [11]
>>>>> Name: Morphic-hjh.1354
>>>>> Author: hjh
>>>>> Time: 5 October 2017, 11:51:21.903338 am
>>>>> UUID: e96d5a46-453f-418c-b95f-26f1674ca329
>>>>> Ancestors: Morphic-hjh.1353
>>>>>
>>>>> Demo which shows how to remove selectors from PasteUpMorph and insert
>>>>> them into a newy created superclass
>>>>>
>>>>> Inserted
>>>>>      MorphWithGrid
>>>>> as a subclass of BorderedMorph and superclass of
>>>>>     PasteUpMorph
>>>>>
>>>>> gridding protocol was moved from
>>>>>     PasteUpMorph
>>>>> to
>>>>>     MorphWithGrid
>>>>>
>>>>>
>>>>> Morphic-hjh.1353:
>>>>> Ancestors: Morphic-hjh.1352
>>>>>
>>>>> Note: I tried to save this update several times. That accounts for the
>>>>> empty updates in between.
>>>>>
>>>>>
>>>>> ---------
>>>>> [12]
>>>>> After filing in Morphic-hjh.1354
>>>>> PasteUpMorph printHierarchy '
>>>>> ProtoObject #()
>>>>> Object #()
>>>>> Morph #()
>>>>> BorderedMorph #()
>>>>> MorphWithGrid #(''griddingOn'')
>>>>> PasteUpMorph #(...)
>>>>> ComponentLayout #(...)
>>>>> EventTimeline #(...)
>>>>> GeeBookPageMorph #(...)
>>>>> IndexTabs #(...)
>>>>> MouseEventEditor #(...)
>>>>> PartsBin #(...)
>>>>> QuickGuideHolderMorph #(...)
>>>>> SyntaxTestMethods #(...)
>>>>> TetrisBoard #(...)
>>>>> TextPlusPasteUpMorph #(...)
>>>>> WiWPasteUpMorph #(...)
>>>>> MVCWiWPasteUpMorph #(...)
>>>>> Worldlet #(...)
>>>>> ZASMScriptMorph #(...)
>>>>> ZoomAndScrollMorph #(...)'
>>>>>
>>>>> On 10/5/17, Marcel Taeumel <[hidden email]> wrote:
>>>>>> Done. :)
>>>>>>
>>>>>> Best,
>>>>>> Marcel
>>>>>> Am 05.10.2017 06:21:44 schrieb David T. Lewis <[hidden email]>:
>>>>>> We did have a problem on squeaksource.com, but I think it is mostly
>>>>>> resolved
>>>>>> now.
>>>>>>
>>>>>> Hannes,
>>>>>>
>>>>>> The password reset for your HJH account was lost, so I set it back to
>>>>>> the
>>>>>> new password that I sent to you earlier in private email. Hopefully
>>>>>> your
>>>>>> access is working again now.
>>>>>>
>>>>>> Marcel,
>>>>>>
>>>>>> Your new account disappeared when squeaksource recovered from some
>>>>>> internal
>>>>>> problem. Sorry, I do not know the cause. But could I ask you to
>>>>>> please
>>>>>> register
>>>>>> again on squeaksource.com, and I will then add you back to
>>>>>> EtoysProject?
>>>>>>
>>>>>> Sorry for the disruption,
>>>>>> Dave
>>>>>>
>>>>>>
>>>>>> On Thu, Oct 05, 2017 at 02:03:47AM +0200, H. Hirzel wrote:
>>>>>>> Dave
>>>>>>>
>>>>>>> Earlier today login worked. Currently it does not.
>>>>>>>
>>>>>>> --Hannes
>>>>>>>
>>>>>>> On 10/5/17, David T. Lewis wrote:
>>>>>>> > Hannes,
>>>>>>> >
>>>>>>> > You did not cause the problem. It may have been me, I saved the
>>>>>>> > squeaksource.com
>>>>>>> > image from a VNC session (because I wanted to make an up to date
>>>>>>> > backup
>>>>>>> > of
>>>>>>> > it),
>>>>>>> > and I am now unable to log in to squeaksource. Maybe I triggered a
>>>>>>> > bug
>>>>>>> > :-/
>>>>>>> >
>>>>>>> > Can you please tell me if you are able to log in to your
>>>>>>> > http://squeaksource.com
>>>>>>> > page? I am getting authorization errors, and I suspect it is a
>>>>>>> > problem
>>>>>>> > that
>>>>>>> > affects
>>>>>>> > everyone.
>>>>>>> >
>>>>>>> > Thanks,
>>>>>>> > Dave
>>>>>>> >
>>>>>>> > On Thu, Oct 05, 2017 at 01:52:35AM +0200, H. Hirzel wrote:
>>>>>>> >> Dave,
>>>>>>> >>
>>>>>>> >> Yes, I encounter problems. They might be related to what I just
>>>>>>> >> tried
>>>>>>> >> to
>>>>>>> >> do:
>>>>>>> >>
>>>>>>> >> I wanted to save an updated version of Morphic to the
>>>>>>> >> ProjectEtoys
>>>>>>> >> repository but by mistake I tried to commit it to the trunk. As I
>>>>>>> >> do
>>>>>>> >> not have commit rights to trunk this prevented me from changing
>>>>>>> >> it
>>>>>>> >> inadvertently. Later on I wanted to commit that version to
>>>>>>> >> ProjectEtoys. It did not work.
>>>>>>> >>
>>>>>>> >> --Hannes
>>>>>>> >>
>>>>>>> >>
>>>>>>> >>
>>>>>>> >> On 10/5/17, David T. Lewis wrote:
>>>>>>> >> > I'm seeing problems with SqueakSource right now, trying to
>>>>>>> >> > figure
>>>>>>> >> > out
>>>>>>> >> > what is wrong. So the project may not be accessible right now
>>>>>>> >> > :-/
>>>>>>> >> >
>>>>>>> >> > Dave
>>>>>>> >> >
>>>>>>> >> >
>>>>>>> >> > On Thu, Oct 05, 2017 at 01:17:58AM +0200, H. Hirzel wrote:
>>>>>>> >> >> Karl,
>>>>>>> >> >>
>>>>>>> >> >> So far entering and existing the Etoys project works smoothly.
>>>>>>> >> >>
>>>>>>> >> >> Load mcz from into current Squeak 6.0a
>>>>>>> >> >>
>>>>>>> >> >> MCHttpRepository
>>>>>>> >> >> location: 'http://www.squeaksource.com/EtoysProject'
>>>>>>> >> >> user: ''
>>>>>>> >> >> password: ''
>>>>>>> >> >>
>>>>>>> >> >> The issue is about providing more settings when entering.
>>>>>>> >> >>
>>>>>>> >> >> Karl, do you want to be added to the list of developers?
>>>>>>> >> >>
>>>>>>> >> >> --HH
>>>>>>> >> >>
>>>>>>> >> >> On 10/5/17, H. Hirzel wrote:
>>>>>>> >> >> > PasteUpMorph is useful and the functions have to be
>>>>>>> >> >> > maintained.
>>>>>>> >> >> >
>>>>>>> >> >> > However adding more functions to Morph does not make sense.
>>>>>>> >> >> >
>>>>>>> >> >> > Squeak 6.0a
>>>>>>> >> >> > Morph selectors size 1345
>>>>>>> >> >> > PasteUpMorph selectors size 530
>>>>>>> >> >> >
>>>>>>> >> >> > --Hannes
>>>>>>> >> >> >
>>>>>>> >> >> > On 10/4/17, karl ramberg wrote:
>>>>>>> >> >> >> I'm not sure anybody uses Etoys anymore, but PasteUpMorph
>>>>>>> >> >> >> is
>>>>>>> >> >> >> very
>>>>>>> >> >> >> useful
>>>>>>> >> >> >> in
>>>>>>> >> >> >> direct manipulation because of it's various layout and
>>>>>>> >> >> >> event
>>>>>>> >> >> >> handling
>>>>>>> >> >> >> options. It also act as a container of other morphs, with
>>>>>>> >> >> >> automatic
>>>>>>> >> >> >> layout, enumeration etc.
>>>>>>> >> >> >> I'm sure most of this could be refactored into Morph class
>>>>>>> >> >> >> or
>>>>>>> >> >> >> another
>>>>>>> >> >> >> class.
>>>>>>> >> >> >>
>>>>>>> >> >> >> Best,
>>>>>>> >> >> >> Karl
>>>>>>> >> >> >>
>>>>>>> >> >> >> On Tue, Oct 3, 2017 at 3:03 PM, Marcel Taeumel
>>>>>>> >> >> >>
>>>>>>> >> >> >> wrote:
>>>>>>> >> >> >>
>>>>>>> >> >> >>> +1 :)
>>>>>>> >> >> >>>
>>>>>>> >> >> >>> And then later: Rename PasteUpMorph to WorldMorph, and
>>>>>>> >> >> >>> keep
>>>>>>> >> >> >>> an
>>>>>>> >> >> >>> empty
>>>>>>> >> >> >>> PasteUpMorph subclass around for compatibility reasons. So
>>>>>>> >> >> >>> many
>>>>>>> >> >> >>> ideas
>>>>>>> >> >> >>> have
>>>>>>> >> >> >>> been ported down to Morph class over the past years. New
>>>>>>> >> >> >>> applications
>>>>>>> >> >> >>> have
>>>>>>> >> >> >>> no reason to ever use other instances of PasteUpMorph.
>>>>>>> >> >> >>>
>>>>>>> >> >> >>> Best,
>>>>>>> >> >> >>> Marcel
>>>>>>> >> >> >>>
>>>>>>> >> >> >>> Am 03.10.2017 14:57:55 schrieb H. Hirzel :
>>>>>>> >> >> >>> On 10/3/17, H. Hirzel wrote:
>>>>>>> >> >> >>> > Dave
>>>>>>> >> >> >>> >
>>>>>>> >> >> >>> > your change set contains the class EtoysProject with
>>>>>>> >> >> >>> >
>>>>>>> >> >> >>> > EtoysProject selectors
>>>>>>> >> >> >>> >
>>>>>>> >> >> >>> > #(#finalEnterActions: #restoreGlobalPreferences
>>>>>>> >> >> >>> > #saveGlobalPreferences
>>>>>>> >> >> >>> > #initializeProjectPreferences #configureOnFirstEntry
>>>>>>> >> >> >>> > #finalExitActions:)
>>>>>>> >> >> >>> >
>>>>>>> >> >> >>> > For complete configuration of a EtoysProject it might be
>>>>>>> >> >> >>> > necessary
>>>>>>> >> >> >>> > to
>>>>>>> >> >> >>> > do
>>>>>>> >> >> >>> >
>>>>>>> >> >> >>> > PasteUpMorph subclass: EtoysPasteUpMorph
>>>>>>> >> >> >>> >
>>>>>>> >> >> >>> > as well. http://wiki.squeak.org/squeak/6461
>>>>>>> >> >> >>> >
>>>>>>> >> >> >>> > Then Etoys related methods may be pushed down to
>>>>>>> >> >> >>> > EtoysPasteUpMorph.
>>>>>>> >> >> >>>
>>>>>>> >> >> >>> See screen shot attached.
>>>>>>> >> >> >>>
>>>>>>> >> >> >>> > And probably an Etoys specific subclass of WorldMenu
>>>>>>> >> >> >>> > would
>>>>>>> >> >> >>> > be
>>>>>>> >> >> >>> > fine
>>>>>>> >> >> >>> > as
>>>>>>> >> >> >>> well
>>>>>>> >> >> >>> > http://wiki.squeak.org/squeak/6461
>>>>>>> >> >> >>> >
>>>>>>> >> >> >>> >
>>>>>>> >> >> >>> > there is a test project [2] and some more information
>>>>>>> >> >> >>> > about
>>>>>>> >> >> >>> > adaptions
>>>>>>> >> >> >>> > needed because of the UI changes in the thread 'Etoys in
>>>>>>> >> >> >>> > 2017?' -
>>>>>>> >> >> >>> > UI
>>>>>>> >> >> >>> > preferences [3]. And it would be good to have Etoys
>>>>>>> >> >> >>> > methods
>>>>>>> >> >> >>> > /
>>>>>>> >> >> >>> > configuration separate [4].
>>>>>>> >> >> >>> >
>>>>>>> >> >> >>> > I suggest that you start go ahead and start implementing
>>>>>>> >> >> >>> > this
>>>>>>> >> >> >>> > while
>>>>>>> >> >> >>> > using a test Etoys project dropped onto the desktop.
>>>>>>> >> >> >>> >
>>>>>>> >> >> >>> > --Hannes
>>>>>>> >> >> >>> >
>>>>>>> >> >> >>> >
>>>>>>> >> >> >>> > [2] > You simply drop it in. E.g. download this project
>>>>>>> >> >> >>> >> http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>>>>>>> >> >> >>> >
>>>>>>> >> >> >>> > [3] Hannes Hirzel, 'Etoys in 2017?' mail, Wed, Feb 22,
>>>>>>> >> >> >>> > 2017
>>>>>>> >> >> >>> > at
>>>>>>> >> >> >>> > 11:01
>>>>>>> >> >> >>> > AM
>>>>>>> >> >> >>> >
>>>>>>> >> >> >>> > [4] David T. Lewis, Sep 4, 2016 at 3:34 PM
>>>>>>> >> >> >>> > "I think it would be great if both Etoys and Scratch
>>>>>>> >> >> >>> > were
>>>>>>> >> >> >>> > easily
>>>>>>> >> >> >>> > loadable and unloadable in trunk."
>>>>>>> >> >> >>> >
>>>>>>> >> >> >>> > On 10/2/17, David T. Lewis wrote:
>>>>>>> >> >> >>> >> An EtoysProject is a project that is configured for
>>>>>>> >> >> >>> >> running
>>>>>>> >> >> >>> >> Etoys.
>>>>>>> >> >> >>> >> On
>>>>>>> >> >> >>> >> first entry to a new EtoysProject, the playground and
>>>>>>> >> >> >>> >> project
>>>>>>> >> >> >>> preferences
>>>>>>> >> >> >>> >> are initialized to provide an environment similar to
>>>>>>> >> >> >>> >> that
>>>>>>> >> >> >>> >> of
>>>>>>> >> >> >>> >> a
>>>>>>> >> >> >>> >> traditional
>>>>>>> >> >> >>> >> standalone Etoys image.
>>>>>>> >> >> >>> >>
>>>>>>> >> >> >>> >> Certain preferences that are required for Etoys are
>>>>>>> >> >> >>> >> initialized
>>>>>>> >> >> >>> >> on
>>>>>>> >> >> >>> >> project
>>>>>>> >> >> >>> >> entry, overriding their global preference values while
>>>>>>> >> >> >>> >> this
>>>>>>> >> >> >>> EtoysProject
>>>>>>> >> >> >>> >> is active. On leaving the project, these preferences
>>>>>>> >> >> >>> >> are
>>>>>>> >> >> >>> >> restored
>>>>>>> >> >> >>> >> to
>>>>>>> >> >> >>> >> their
>>>>>>> >> >> >>> >> previous values.
>>>>>>> >> >> >>> >>
>>>>>>> >> >> >>> >> "ProjectViewMorph openOn: EtoysProject new"
>>>>>>> >> >> >>> >>
>>>>>>> >> >> >>> >> Change set attached for a minimal implementation.
>>>>>>> >> >> >>> >>
>>>>>>> >> >> >>> >> Anyone with Etoys knowledge care to help? I do not know
>>>>>>> >> >> >>> >> enough
>>>>>>> >> >> >>> >> about
>>>>>>> >> >> >>> >> Etoys
>>>>>>> >> >> >>> >> to fill in the rest of the initialization that will be
>>>>>>> >> >> >>> >> required,
>>>>>>> >> >> >>> >> but
>>>>>>> >> >> >>> >> it
>>>>>>> >> >> >>> >> should not be hard to do.
>>>>>>> >> >> >>> >>
>>>>>>> >> >> >>> >> Dave
>>>>>>> >> >> >>> >>
>>>>>>> >> >> >>> >>
>>>>>>> >> >> >>> >
>>>>>>> >> >> >>>
>>>>>>> >> >> >>>
>>>>>>> >> >> >>>
>>>>>>> >> >> >>>
>>>>>>> >> >> >>>
>>>>>>> >> >> >>
>>>>>>> >> >> >
>>>>>>> >> >
>>>>>>> >> >
>>>>>>> >> >>
>>>>>>> >> >
>>>>>>> >> >
>>>>>>> >> >
>>>>>>> >>
>>>>>>> >
>>>>>>> >
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

Hannes Hirzel
To adapt

#fixUponLoad:seg:

is the issue here if we want to change MorphicProjects to
EtoysProjects when loading old Etoys pr projects.

As
    MorphicProject subclass: #EtoysProject
holds an now new instance variables the changes should be minimal.
Have all objects from aMorphicProject added to a new EtoysProject and
then a become:

Comments?



On 10/5/17, H. Hirzel <[hidden email]> wrote:

> Later on in
>
>
> ProjectLoading class>>loadImageSegment: morphOrList  fromDirectory:
> aDirectoryOrNil withProjectView: existingView numberOfFontSubstitutes:
> numberOfFontSubstitutes substituteFont: substituteFont mgr: mgr
>
>
>
> | proj projectsToBeDeleted ef f |
> (f := (Flaps globalFlapTabWithID: 'Navigator' translated)) ifNotNil:
> [f hideFlap].
> proj := morphOrList arrayOfRoots
> detect: [:mm | mm isKindOf: Project]
> ifNone: [^ nil].
>
>
> The project 'proj' is read which is a MorphicProject.
>
> We need to convert this into an EtoysProject if we want to follow the
> path of upgrading MorphicProjects to EtoysProjects.
>
> Probably a good idea but a matter of discussion.
>
> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>> If you drop
>>
>>     http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>>
>> on to the desktop Squeak asks you for a replacement for
>> 'MultiNewParagraph' as this class was removed in April (The Trunk:
>> EToys-nice.292.mcz)
>>
>> Answer 'NewParagraph'. Then the Etoys project loads and gives some
>> error messages. Some are related to preferences. An issue to fix
>> first.
>>
>> Another issue is that actually a MorphicProject is created instead of
>> the new #EtoysProject type we want.
>>
>> I do not now yet where to do this.
>> The call chain passes through
>>
>> MultiByteBinaryOrTextStream>>fileInObjectAndCodeForProject [1]
>>
>> The stream [2] has code and an  object to be read by a SmartRefStream.
>>
>> More investigation needed.
>>
>> --Hannes
>>
>>
>>
>>
>>
>>
>> [1] MultiByteBinaryOrTextStream>>fileInObjectAndCodeForProject
>>
>> fileInObjectAndCodeForProject
>> "This file may contain:
>> 1) a fileIn of code
>> 2) just an object in SmartReferenceStream format
>> 3) both code and an object.
>> File it in and return the object.  Note that self must be a
>> FileStream or RWBinaryOrTextStream.  Maybe ReadWriteStream incorporate
>> RWBinaryOrTextStream?"
>> | refStream object |
>> self halt.
>> self text.
>> self peek asciiValue = 4
>> ifTrue: [  "pure object file"
>> self binary.
>> refStream := SmartRefStream on: self.
>> object := refStream nextAndClose]
>> ifFalse: [  "objects mixed with a fileIn"
>> self fileInProject.  "reads code and objects, then closes the file"
>> self binary.
>> object := SmartRefStream scannedObject]. "set by side effect of one
>> of the chunks"
>> SmartRefStream scannedObject: nil.  "clear scannedObject"
>> ^ object
>>
>>
>>
>>
>>
>>
>> [2] Content of the Etoys pr file readstream
>>
>> '''From etoys4.0 of 9 October 2008 [latest update: #2319] on 18
>> September 2009 at 3:39:18 pm''!
>>  | cont | (Smalltalk includesKey: #MorphExtensionPlus) ifFalse: [self
>> inform: ''This project cannot be loaded into an older system.\Please
>> use an OLPC Etoys compatible image.'' translated withCRs.
>> cont _ thisContext.
>> [cont notNil] whileTrue: [
>> cont selector == #handleEvent: ifTrue: [cont return: nil].
>> cont _ cont sender.
>> ]]!
>>
>> !ObjectScanner new initialize!
>>
>>
>>
>> !self smartRefStream!
>>
>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>> This later on goes to
>>>
>>>
>>> ProjectLoading class>>
>>>
>>> openName: aFileName stream: preStream fromDirectory: aDirectoryOrNil
>>> withProjectView: existingView clearOriginFlag: clearOriginFlag
>>> "Reconstitute a Morph from the selected file, presumed to
>>> represent a Morph saved via the SmartRefStream mechanism, and open it
>>> in an appropriate Morphic world."
>>>
>>>     | morphOrList archive mgr substituteFont numberOfFontSubstitutes
>>> resultArray anObject project manifests dict |
>>> (self checkStream: preStream) ifTrue: [^ self].
>>> ProgressNotification signal: '0.2'.
>>> archive := preStream isZipArchive
>>> ifTrue:[ZipArchive new readFrom: preStream]
>>> ifFalse:[nil].
>>> archive ifNotNil:[
>>> manifests := (archive membersMatching: '*manifest').
>>> (manifests size = 1 and: [((dict := self parseManifest: manifests
>>> first contents) at: 'Project-Format' ifAbsent: []) = 'S-Expression'])
>>> ifTrue: [
>>> ^ (self respondsTo:
>>> #openSexpProjectDict:stream:fromDirectory:withProjectView:)
>>> ifTrue: [self openSexpProjectDict: dict stream: preStream
>>> fromDirectory: aDirectoryOrNil withProjectView: existingView]
>>> ifFalse: [self inform: 'Cannot load S-Expression format projects
>>> without Etoys' translated]]].
>>>
>>> morphOrList := self morphOrList: aFileName stream: preStream
>>> fromDirectory: aDirectoryOrNil archive: archive.
>>> morphOrList ifNil: [^ self].
>>> ProgressNotification  signal: '0.4'.
>>> resultArray := self fileInName: aFileName archive: archive
>>> morphOrList: morphOrList.
>>> anObject := resultArray first.
>>> numberOfFontSubstitutes := resultArray second.
>>> substituteFont := resultArray third.
>>> mgr := resultArray fourth.
>>> preStream close.
>>> ProgressNotification  signal: '0.7'.
>>> "the hard part is over"
>>> (anObject isKindOf: ImageSegment) ifTrue: [
>>> project := self loadImageSegment: anObject
>>> fromDirectory: aDirectoryOrNil
>>> withProjectView: existingView
>>> numberOfFontSubstitutes: numberOfFontSubstitutes
>>> substituteFont: substituteFont
>>> mgr: mgr.
>>> project noteManifestDetailsIn: dict.
>>> project removeParameter: #sugarProperties.
>>> Smalltalk at: #SugarPropertiesNotification ifPresent: [:sp |
>>> sp signal ifNotNil: [:props |
>>> project keepSugarProperties: props monitor: true]].
>>> clearOriginFlag ifTrue: [project forgetExistingURL].
>>> ProgressNotification  signal: '0.8'.
>>> ^ project
>>> ifNil: [self inform: 'No project found in this file' translated]
>>> ifNotNil: [ProjectEntryNotification signal: project]].
>>> Project current openViewAndEnter: anObject
>>>
>>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>>> A few steps more: when I drop a project file onto the desktop the
>>>> following methods are called
>>>>
>>>> PasteUpMorph handleDroppedItem: anItem event: anEvent
>>>> ExternalDropHandler lookupExternalDropHandler: anItem
>>>> ExternalDropHandler handle: dropStream in: pasteUp dropEvent: anEvent
>>>> ExternalDropHandler class defaultProjectHandler
>>>>
>>>> ProjectLoading openOn: aMultiByteFileStream:
>>>> "'/home/user/Downloads/CarAndPen.014(2).pr'"
>>>>
>>>> So we have to fix ProjectLoading
>>>>
>>>>
>>>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>>>> Note: MorphWithGrid does not really make sense unless you have a
>>>>> superclass MorphWithDnD (Drag and Drop) which handles the morph droped
>>>>> and makes them 'sticky'.
>>>>>
>>>>> Though refactoring PastUpMorph by inserting superclasses is an issue I
>>>>> suggest to put this on the backburner at the moment and focus on
>>>>> getting the Etoys setting straight as Dave suggests in the initial
>>>>> mail.
>>>>>
>>>>> A use case to follow: What happens when you drop  the exapme project
>>>>>
>>>>>     http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>>>>>
>>>>> on to the desktop.
>>>>>
>>>>> ExternalDropHandler>>handleDroppedItem:event:  [21]
>>>>>
>>>>> is called in this case and then dispatches to do the necessary things
>>>>> to deal with the
>>>>>     ExampleEtoys/CarAndPen.014.pr
>>>>> file.
>>>>>
>>>>> There is a message box which needs attention.
>>>>>
>>>>> And I assume that in the course of these events some settings are
>>>>> necessary. Most prominently to choose EtoysProject and no longer
>>>>> MorphicProject
>>>>>
>>>>> --Hannes
>>>>>
>>>>> [21] http://wiki.squeak.org/squeak/4283
>>>>>
>>>>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>>>>> I added a demo file Morphic-hjh.1354 [11] to the repository
>>>>>>
>>>>>> MCHttpRepository
>>>>>> location: 'http://www.squeaksource.com/EtoysProject'
>>>>>> user: ''
>>>>>> password: ''
>>>>>>
>>>>>> This file should be loaded into a fully updated trunk test image.
>>>>>>
>>>>>> I agree with what Tobias noted earlier in this thread that it is
>>>>>> probably better to avoid renaming PasteUpMorph. I see as a solution
>>>>>> to
>>>>>> easier deal with PasteUpMorph functions the insertion of superclasses
>>>>>> of PasteUpMorph (and thus subclasses of BorderedMorph) [12]
>>>>>>
>>>>>> The next thing I will come up with is a class
>>>>>>     MorphWithDnD
>>>>>>
>>>>>> a morph class which supports drag and drop.
>>>>>> As a superclass of MorphWithGrid
>>>>>>
>>>>>> A third class would be PlayField which contains all the Etoys
>>>>>> selectors.
>>>>>> In an image without Etoys that class would then be just empty.
>>>>>>
>>>>>> --Hannes
>>>>>>
>>>>>>
>>>>>> --------------------
>>>>>>
>>>>>> [11]
>>>>>> Name: Morphic-hjh.1354
>>>>>> Author: hjh
>>>>>> Time: 5 October 2017, 11:51:21.903338 am
>>>>>> UUID: e96d5a46-453f-418c-b95f-26f1674ca329
>>>>>> Ancestors: Morphic-hjh.1353
>>>>>>
>>>>>> Demo which shows how to remove selectors from PasteUpMorph and insert
>>>>>> them into a newy created superclass
>>>>>>
>>>>>> Inserted
>>>>>>      MorphWithGrid
>>>>>> as a subclass of BorderedMorph and superclass of
>>>>>>     PasteUpMorph
>>>>>>
>>>>>> gridding protocol was moved from
>>>>>>     PasteUpMorph
>>>>>> to
>>>>>>     MorphWithGrid
>>>>>>
>>>>>>
>>>>>> Morphic-hjh.1353:
>>>>>> Ancestors: Morphic-hjh.1352
>>>>>>
>>>>>> Note: I tried to save this update several times. That accounts for
>>>>>> the
>>>>>> empty updates in between.
>>>>>>
>>>>>>
>>>>>> ---------
>>>>>> [12]
>>>>>> After filing in Morphic-hjh.1354
>>>>>> PasteUpMorph printHierarchy '
>>>>>> ProtoObject #()
>>>>>> Object #()
>>>>>> Morph #()
>>>>>> BorderedMorph #()
>>>>>> MorphWithGrid #(''griddingOn'')
>>>>>> PasteUpMorph #(...)
>>>>>> ComponentLayout #(...)
>>>>>> EventTimeline #(...)
>>>>>> GeeBookPageMorph #(...)
>>>>>> IndexTabs #(...)
>>>>>> MouseEventEditor #(...)
>>>>>> PartsBin #(...)
>>>>>> QuickGuideHolderMorph #(...)
>>>>>> SyntaxTestMethods #(...)
>>>>>> TetrisBoard #(...)
>>>>>> TextPlusPasteUpMorph #(...)
>>>>>> WiWPasteUpMorph #(...)
>>>>>> MVCWiWPasteUpMorph #(...)
>>>>>> Worldlet #(...)
>>>>>> ZASMScriptMorph #(...)
>>>>>> ZoomAndScrollMorph #(...)'
>>>>>>
>>>>>> On 10/5/17, Marcel Taeumel <[hidden email]> wrote:
>>>>>>> Done. :)
>>>>>>>
>>>>>>> Best,
>>>>>>> Marcel
>>>>>>> Am 05.10.2017 06:21:44 schrieb David T. Lewis <[hidden email]>:
>>>>>>> We did have a problem on squeaksource.com, but I think it is mostly
>>>>>>> resolved
>>>>>>> now.
>>>>>>>
>>>>>>> Hannes,
>>>>>>>
>>>>>>> The password reset for your HJH account was lost, so I set it back
>>>>>>> to
>>>>>>> the
>>>>>>> new password that I sent to you earlier in private email. Hopefully
>>>>>>> your
>>>>>>> access is working again now.
>>>>>>>
>>>>>>> Marcel,
>>>>>>>
>>>>>>> Your new account disappeared when squeaksource recovered from some
>>>>>>> internal
>>>>>>> problem. Sorry, I do not know the cause. But could I ask you to
>>>>>>> please
>>>>>>> register
>>>>>>> again on squeaksource.com, and I will then add you back to
>>>>>>> EtoysProject?
>>>>>>>
>>>>>>> Sorry for the disruption,
>>>>>>> Dave
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Oct 05, 2017 at 02:03:47AM +0200, H. Hirzel wrote:
>>>>>>>> Dave
>>>>>>>>
>>>>>>>> Earlier today login worked. Currently it does not.
>>>>>>>>
>>>>>>>> --Hannes
>>>>>>>>
>>>>>>>> On 10/5/17, David T. Lewis wrote:
>>>>>>>> > Hannes,
>>>>>>>> >
>>>>>>>> > You did not cause the problem. It may have been me, I saved the
>>>>>>>> > squeaksource.com
>>>>>>>> > image from a VNC session (because I wanted to make an up to date
>>>>>>>> > backup
>>>>>>>> > of
>>>>>>>> > it),
>>>>>>>> > and I am now unable to log in to squeaksource. Maybe I triggered
>>>>>>>> > a
>>>>>>>> > bug
>>>>>>>> > :-/
>>>>>>>> >
>>>>>>>> > Can you please tell me if you are able to log in to your
>>>>>>>> > http://squeaksource.com
>>>>>>>> > page? I am getting authorization errors, and I suspect it is a
>>>>>>>> > problem
>>>>>>>> > that
>>>>>>>> > affects
>>>>>>>> > everyone.
>>>>>>>> >
>>>>>>>> > Thanks,
>>>>>>>> > Dave
>>>>>>>> >
>>>>>>>> > On Thu, Oct 05, 2017 at 01:52:35AM +0200, H. Hirzel wrote:
>>>>>>>> >> Dave,
>>>>>>>> >>
>>>>>>>> >> Yes, I encounter problems. They might be related to what I just
>>>>>>>> >> tried
>>>>>>>> >> to
>>>>>>>> >> do:
>>>>>>>> >>
>>>>>>>> >> I wanted to save an updated version of Morphic to the
>>>>>>>> >> ProjectEtoys
>>>>>>>> >> repository but by mistake I tried to commit it to the trunk. As
>>>>>>>> >> I
>>>>>>>> >> do
>>>>>>>> >> not have commit rights to trunk this prevented me from changing
>>>>>>>> >> it
>>>>>>>> >> inadvertently. Later on I wanted to commit that version to
>>>>>>>> >> ProjectEtoys. It did not work.
>>>>>>>> >>
>>>>>>>> >> --Hannes
>>>>>>>> >>
>>>>>>>> >>
>>>>>>>> >>
>>>>>>>> >> On 10/5/17, David T. Lewis wrote:
>>>>>>>> >> > I'm seeing problems with SqueakSource right now, trying to
>>>>>>>> >> > figure
>>>>>>>> >> > out
>>>>>>>> >> > what is wrong. So the project may not be accessible right now
>>>>>>>> >> > :-/
>>>>>>>> >> >
>>>>>>>> >> > Dave
>>>>>>>> >> >
>>>>>>>> >> >
>>>>>>>> >> > On Thu, Oct 05, 2017 at 01:17:58AM +0200, H. Hirzel wrote:
>>>>>>>> >> >> Karl,
>>>>>>>> >> >>
>>>>>>>> >> >> So far entering and existing the Etoys project works
>>>>>>>> >> >> smoothly.
>>>>>>>> >> >>
>>>>>>>> >> >> Load mcz from into current Squeak 6.0a
>>>>>>>> >> >>
>>>>>>>> >> >> MCHttpRepository
>>>>>>>> >> >> location: 'http://www.squeaksource.com/EtoysProject'
>>>>>>>> >> >> user: ''
>>>>>>>> >> >> password: ''
>>>>>>>> >> >>
>>>>>>>> >> >> The issue is about providing more settings when entering.
>>>>>>>> >> >>
>>>>>>>> >> >> Karl, do you want to be added to the list of developers?
>>>>>>>> >> >>
>>>>>>>> >> >> --HH
>>>>>>>> >> >>
>>>>>>>> >> >> On 10/5/17, H. Hirzel wrote:
>>>>>>>> >> >> > PasteUpMorph is useful and the functions have to be
>>>>>>>> >> >> > maintained.
>>>>>>>> >> >> >
>>>>>>>> >> >> > However adding more functions to Morph does not make sense.
>>>>>>>> >> >> >
>>>>>>>> >> >> > Squeak 6.0a
>>>>>>>> >> >> > Morph selectors size 1345
>>>>>>>> >> >> > PasteUpMorph selectors size 530
>>>>>>>> >> >> >
>>>>>>>> >> >> > --Hannes
>>>>>>>> >> >> >
>>>>>>>> >> >> > On 10/4/17, karl ramberg wrote:
>>>>>>>> >> >> >> I'm not sure anybody uses Etoys anymore, but PasteUpMorph
>>>>>>>> >> >> >> is
>>>>>>>> >> >> >> very
>>>>>>>> >> >> >> useful
>>>>>>>> >> >> >> in
>>>>>>>> >> >> >> direct manipulation because of it's various layout and
>>>>>>>> >> >> >> event
>>>>>>>> >> >> >> handling
>>>>>>>> >> >> >> options. It also act as a container of other morphs, with
>>>>>>>> >> >> >> automatic
>>>>>>>> >> >> >> layout, enumeration etc.
>>>>>>>> >> >> >> I'm sure most of this could be refactored into Morph class
>>>>>>>> >> >> >> or
>>>>>>>> >> >> >> another
>>>>>>>> >> >> >> class.
>>>>>>>> >> >> >>
>>>>>>>> >> >> >> Best,
>>>>>>>> >> >> >> Karl
>>>>>>>> >> >> >>
>>>>>>>> >> >> >> On Tue, Oct 3, 2017 at 3:03 PM, Marcel Taeumel
>>>>>>>> >> >> >>
>>>>>>>> >> >> >> wrote:
>>>>>>>> >> >> >>
>>>>>>>> >> >> >>> +1 :)
>>>>>>>> >> >> >>>
>>>>>>>> >> >> >>> And then later: Rename PasteUpMorph to WorldMorph, and
>>>>>>>> >> >> >>> keep
>>>>>>>> >> >> >>> an
>>>>>>>> >> >> >>> empty
>>>>>>>> >> >> >>> PasteUpMorph subclass around for compatibility reasons.
>>>>>>>> >> >> >>> So
>>>>>>>> >> >> >>> many
>>>>>>>> >> >> >>> ideas
>>>>>>>> >> >> >>> have
>>>>>>>> >> >> >>> been ported down to Morph class over the past years. New
>>>>>>>> >> >> >>> applications
>>>>>>>> >> >> >>> have
>>>>>>>> >> >> >>> no reason to ever use other instances of PasteUpMorph.
>>>>>>>> >> >> >>>
>>>>>>>> >> >> >>> Best,
>>>>>>>> >> >> >>> Marcel
>>>>>>>> >> >> >>>
>>>>>>>> >> >> >>> Am 03.10.2017 14:57:55 schrieb H. Hirzel :
>>>>>>>> >> >> >>> On 10/3/17, H. Hirzel wrote:
>>>>>>>> >> >> >>> > Dave
>>>>>>>> >> >> >>> >
>>>>>>>> >> >> >>> > your change set contains the class EtoysProject with
>>>>>>>> >> >> >>> >
>>>>>>>> >> >> >>> > EtoysProject selectors
>>>>>>>> >> >> >>> >
>>>>>>>> >> >> >>> > #(#finalEnterActions: #restoreGlobalPreferences
>>>>>>>> >> >> >>> > #saveGlobalPreferences
>>>>>>>> >> >> >>> > #initializeProjectPreferences #configureOnFirstEntry
>>>>>>>> >> >> >>> > #finalExitActions:)
>>>>>>>> >> >> >>> >
>>>>>>>> >> >> >>> > For complete configuration of a EtoysProject it might
>>>>>>>> >> >> >>> > be
>>>>>>>> >> >> >>> > necessary
>>>>>>>> >> >> >>> > to
>>>>>>>> >> >> >>> > do
>>>>>>>> >> >> >>> >
>>>>>>>> >> >> >>> > PasteUpMorph subclass: EtoysPasteUpMorph
>>>>>>>> >> >> >>> >
>>>>>>>> >> >> >>> > as well. http://wiki.squeak.org/squeak/6461
>>>>>>>> >> >> >>> >
>>>>>>>> >> >> >>> > Then Etoys related methods may be pushed down to
>>>>>>>> >> >> >>> > EtoysPasteUpMorph.
>>>>>>>> >> >> >>>
>>>>>>>> >> >> >>> See screen shot attached.
>>>>>>>> >> >> >>>
>>>>>>>> >> >> >>> > And probably an Etoys specific subclass of WorldMenu
>>>>>>>> >> >> >>> > would
>>>>>>>> >> >> >>> > be
>>>>>>>> >> >> >>> > fine
>>>>>>>> >> >> >>> > as
>>>>>>>> >> >> >>> well
>>>>>>>> >> >> >>> > http://wiki.squeak.org/squeak/6461
>>>>>>>> >> >> >>> >
>>>>>>>> >> >> >>> >
>>>>>>>> >> >> >>> > there is a test project [2] and some more information
>>>>>>>> >> >> >>> > about
>>>>>>>> >> >> >>> > adaptions
>>>>>>>> >> >> >>> > needed because of the UI changes in the thread 'Etoys
>>>>>>>> >> >> >>> > in
>>>>>>>> >> >> >>> > 2017?' -
>>>>>>>> >> >> >>> > UI
>>>>>>>> >> >> >>> > preferences [3]. And it would be good to have Etoys
>>>>>>>> >> >> >>> > methods
>>>>>>>> >> >> >>> > /
>>>>>>>> >> >> >>> > configuration separate [4].
>>>>>>>> >> >> >>> >
>>>>>>>> >> >> >>> > I suggest that you start go ahead and start
>>>>>>>> >> >> >>> > implementing
>>>>>>>> >> >> >>> > this
>>>>>>>> >> >> >>> > while
>>>>>>>> >> >> >>> > using a test Etoys project dropped onto the desktop.
>>>>>>>> >> >> >>> >
>>>>>>>> >> >> >>> > --Hannes
>>>>>>>> >> >> >>> >
>>>>>>>> >> >> >>> >
>>>>>>>> >> >> >>> > [2] > You simply drop it in. E.g. download this project
>>>>>>>> >> >> >>> >> http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>>>>>>>> >> >> >>> >
>>>>>>>> >> >> >>> > [3] Hannes Hirzel, 'Etoys in 2017?' mail, Wed, Feb 22,
>>>>>>>> >> >> >>> > 2017
>>>>>>>> >> >> >>> > at
>>>>>>>> >> >> >>> > 11:01
>>>>>>>> >> >> >>> > AM
>>>>>>>> >> >> >>> >
>>>>>>>> >> >> >>> > [4] David T. Lewis, Sep 4, 2016 at 3:34 PM
>>>>>>>> >> >> >>> > "I think it would be great if both Etoys and Scratch
>>>>>>>> >> >> >>> > were
>>>>>>>> >> >> >>> > easily
>>>>>>>> >> >> >>> > loadable and unloadable in trunk."
>>>>>>>> >> >> >>> >
>>>>>>>> >> >> >>> > On 10/2/17, David T. Lewis wrote:
>>>>>>>> >> >> >>> >> An EtoysProject is a project that is configured for
>>>>>>>> >> >> >>> >> running
>>>>>>>> >> >> >>> >> Etoys.
>>>>>>>> >> >> >>> >> On
>>>>>>>> >> >> >>> >> first entry to a new EtoysProject, the playground and
>>>>>>>> >> >> >>> >> project
>>>>>>>> >> >> >>> preferences
>>>>>>>> >> >> >>> >> are initialized to provide an environment similar to
>>>>>>>> >> >> >>> >> that
>>>>>>>> >> >> >>> >> of
>>>>>>>> >> >> >>> >> a
>>>>>>>> >> >> >>> >> traditional
>>>>>>>> >> >> >>> >> standalone Etoys image.
>>>>>>>> >> >> >>> >>
>>>>>>>> >> >> >>> >> Certain preferences that are required for Etoys are
>>>>>>>> >> >> >>> >> initialized
>>>>>>>> >> >> >>> >> on
>>>>>>>> >> >> >>> >> project
>>>>>>>> >> >> >>> >> entry, overriding their global preference values while
>>>>>>>> >> >> >>> >> this
>>>>>>>> >> >> >>> EtoysProject
>>>>>>>> >> >> >>> >> is active. On leaving the project, these preferences
>>>>>>>> >> >> >>> >> are
>>>>>>>> >> >> >>> >> restored
>>>>>>>> >> >> >>> >> to
>>>>>>>> >> >> >>> >> their
>>>>>>>> >> >> >>> >> previous values.
>>>>>>>> >> >> >>> >>
>>>>>>>> >> >> >>> >> "ProjectViewMorph openOn: EtoysProject new"
>>>>>>>> >> >> >>> >>
>>>>>>>> >> >> >>> >> Change set attached for a minimal implementation.
>>>>>>>> >> >> >>> >>
>>>>>>>> >> >> >>> >> Anyone with Etoys knowledge care to help? I do not
>>>>>>>> >> >> >>> >> know
>>>>>>>> >> >> >>> >> enough
>>>>>>>> >> >> >>> >> about
>>>>>>>> >> >> >>> >> Etoys
>>>>>>>> >> >> >>> >> to fill in the rest of the initialization that will be
>>>>>>>> >> >> >>> >> required,
>>>>>>>> >> >> >>> >> but
>>>>>>>> >> >> >>> >> it
>>>>>>>> >> >> >>> >> should not be hard to do.
>>>>>>>> >> >> >>> >>
>>>>>>>> >> >> >>> >> Dave
>>>>>>>> >> >> >>> >>
>>>>>>>> >> >> >>> >>
>>>>>>>> >> >> >>> >
>>>>>>>> >> >> >>>
>>>>>>>> >> >> >>>
>>>>>>>> >> >> >>>
>>>>>>>> >> >> >>>
>>>>>>>> >> >> >>>
>>>>>>>> >> >> >>
>>>>>>>> >> >> >
>>>>>>>> >> >
>>>>>>>> >> >
>>>>>>>> >> >>
>>>>>>>> >> >
>>>>>>>> >> >
>>>>>>>> >> >
>>>>>>>> >>
>>>>>>>> >
>>>>>>>> >
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

Hannes Hirzel
#fixUponLoad:seg:

as called in  (see mark *******)


ProjectLoading class

loadImageSegment: morphOrList  fromDirectory: aDirectoryOrNil
withProjectView: existingView numberOfFontSubstitutes:
numberOfFontSubstitutes substituteFont: substituteFont mgr: mgr

        | proj projectsToBeDeleted ef f |

        (f := (Flaps globalFlapTabWithID: 'Navigator' translated)) ifNotNil:
[f hideFlap].
        proj := morphOrList arrayOfRoots
                        detect: [:mm | mm isKindOf: Project]
                        ifNone: [^ nil].
        numberOfFontSubstitutes > 0 ifTrue: [
                proj projectParameterAt: #substitutedFont put: substituteFont].
        ef := proj projectParameterAt: #eToysFont.
        (ef isNil or: [ef ~= substituteFont familySizeFace]) ifTrue: [
                proj projectParameterAt: #substitutedFont put: substituteFont.
        ].

        proj projectParameters at: #MultiSymbolInWrongPlace put: false.
                "Yoshiki did not put MultiSymbols into outPointers in older images!"

        morphOrList arrayOfRoots do: [:obj |
                obj fixUponLoad: proj seg: morphOrList "imageSegment  ******* "].

        (proj projectParameters at: #MultiSymbolInWrongPlace) ifTrue: [
                morphOrList arrayOfRoots do: [:obj | (obj isKindOf: Set) ifTrue:
[obj rehash]]].

        proj resourceManager: mgr.
        "proj versionFrom: preStream."
        proj lastDirectory: aDirectoryOrNil.
        proj setParent: Project current.
        projectsToBeDeleted := OrderedCollection new.
        existingView == #none ifFalse: [
                self makeExistingView: existingView project: proj
projectsToBeDeleted: projectsToBeDeleted].
        ChangeSorter allChangeSets add: proj changeSet.
        Project current projectParameters
                at: #deleteWhenEnteringNewProject
                ifPresent: [ :ignored |
                        projectsToBeDeleted add: Project current.
                        Project current removeParameter: #deleteWhenEnteringNewProject.
                ].
        projectsToBeDeleted isEmpty ifFalse: [
                proj projectParameters
                        at: #projectsToBeDeleted
                        put: projectsToBeDeleted.
        ].
        proj removeParameter: #eToysFont.
        ^ proj

On 10/5/17, H. Hirzel <[hidden email]> wrote:

> To adapt
>
> #fixUponLoad:seg:
>
> is the issue here if we want to change MorphicProjects to
> EtoysProjects when loading old Etoys pr projects.
>
> As
>     MorphicProject subclass: #EtoysProject
> holds an now new instance variables the changes should be minimal.
> Have all objects from aMorphicProject added to a new EtoysProject and
> then a become:
>
> Comments?
>
>
>
> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>> Later on in
>>
>>
>> ProjectLoading class>>loadImageSegment: morphOrList  fromDirectory:
>> aDirectoryOrNil withProjectView: existingView numberOfFontSubstitutes:
>> numberOfFontSubstitutes substituteFont: substituteFont mgr: mgr
>>
>>
>>
>> | proj projectsToBeDeleted ef f |
>> (f := (Flaps globalFlapTabWithID: 'Navigator' translated)) ifNotNil:
>> [f hideFlap].
>> proj := morphOrList arrayOfRoots
>> detect: [:mm | mm isKindOf: Project]
>> ifNone: [^ nil].
>>
>>
>> The project 'proj' is read which is a MorphicProject.
>>
>> We need to convert this into an EtoysProject if we want to follow the
>> path of upgrading MorphicProjects to EtoysProjects.
>>
>> Probably a good idea but a matter of discussion.
>>
>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>> If you drop
>>>
>>>     http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>>>
>>> on to the desktop Squeak asks you for a replacement for
>>> 'MultiNewParagraph' as this class was removed in April (The Trunk:
>>> EToys-nice.292.mcz)
>>>
>>> Answer 'NewParagraph'. Then the Etoys project loads and gives some
>>> error messages. Some are related to preferences. An issue to fix
>>> first.
>>>
>>> Another issue is that actually a MorphicProject is created instead of
>>> the new #EtoysProject type we want.
>>>
>>> I do not now yet where to do this.
>>> The call chain passes through
>>>
>>> MultiByteBinaryOrTextStream>>fileInObjectAndCodeForProject [1]
>>>
>>> The stream [2] has code and an  object to be read by a SmartRefStream.
>>>
>>> More investigation needed.
>>>
>>> --Hannes
>>>
>>>
>>>
>>>
>>>
>>>
>>> [1] MultiByteBinaryOrTextStream>>fileInObjectAndCodeForProject
>>>
>>> fileInObjectAndCodeForProject
>>> "This file may contain:
>>> 1) a fileIn of code
>>> 2) just an object in SmartReferenceStream format
>>> 3) both code and an object.
>>> File it in and return the object.  Note that self must be a
>>> FileStream or RWBinaryOrTextStream.  Maybe ReadWriteStream incorporate
>>> RWBinaryOrTextStream?"
>>> | refStream object |
>>> self halt.
>>> self text.
>>> self peek asciiValue = 4
>>> ifTrue: [  "pure object file"
>>> self binary.
>>> refStream := SmartRefStream on: self.
>>> object := refStream nextAndClose]
>>> ifFalse: [  "objects mixed with a fileIn"
>>> self fileInProject.  "reads code and objects, then closes the file"
>>> self binary.
>>> object := SmartRefStream scannedObject]. "set by side effect of one
>>> of the chunks"
>>> SmartRefStream scannedObject: nil.  "clear scannedObject"
>>> ^ object
>>>
>>>
>>>
>>>
>>>
>>>
>>> [2] Content of the Etoys pr file readstream
>>>
>>> '''From etoys4.0 of 9 October 2008 [latest update: #2319] on 18
>>> September 2009 at 3:39:18 pm''!
>>>  | cont | (Smalltalk includesKey: #MorphExtensionPlus) ifFalse: [self
>>> inform: ''This project cannot be loaded into an older system.\Please
>>> use an OLPC Etoys compatible image.'' translated withCRs.
>>> cont _ thisContext.
>>> [cont notNil] whileTrue: [
>>> cont selector == #handleEvent: ifTrue: [cont return: nil].
>>> cont _ cont sender.
>>> ]]!
>>>
>>> !ObjectScanner new initialize!
>>>
>>>
>>>
>>> !self smartRefStream!
>>>
>>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>>> This later on goes to
>>>>
>>>>
>>>> ProjectLoading class>>
>>>>
>>>> openName: aFileName stream: preStream fromDirectory: aDirectoryOrNil
>>>> withProjectView: existingView clearOriginFlag: clearOriginFlag
>>>> "Reconstitute a Morph from the selected file, presumed to
>>>> represent a Morph saved via the SmartRefStream mechanism, and open it
>>>> in an appropriate Morphic world."
>>>>
>>>>     | morphOrList archive mgr substituteFont numberOfFontSubstitutes
>>>> resultArray anObject project manifests dict |
>>>> (self checkStream: preStream) ifTrue: [^ self].
>>>> ProgressNotification signal: '0.2'.
>>>> archive := preStream isZipArchive
>>>> ifTrue:[ZipArchive new readFrom: preStream]
>>>> ifFalse:[nil].
>>>> archive ifNotNil:[
>>>> manifests := (archive membersMatching: '*manifest').
>>>> (manifests size = 1 and: [((dict := self parseManifest: manifests
>>>> first contents) at: 'Project-Format' ifAbsent: []) = 'S-Expression'])
>>>> ifTrue: [
>>>> ^ (self respondsTo:
>>>> #openSexpProjectDict:stream:fromDirectory:withProjectView:)
>>>> ifTrue: [self openSexpProjectDict: dict stream: preStream
>>>> fromDirectory: aDirectoryOrNil withProjectView: existingView]
>>>> ifFalse: [self inform: 'Cannot load S-Expression format projects
>>>> without Etoys' translated]]].
>>>>
>>>> morphOrList := self morphOrList: aFileName stream: preStream
>>>> fromDirectory: aDirectoryOrNil archive: archive.
>>>> morphOrList ifNil: [^ self].
>>>> ProgressNotification  signal: '0.4'.
>>>> resultArray := self fileInName: aFileName archive: archive
>>>> morphOrList: morphOrList.
>>>> anObject := resultArray first.
>>>> numberOfFontSubstitutes := resultArray second.
>>>> substituteFont := resultArray third.
>>>> mgr := resultArray fourth.
>>>> preStream close.
>>>> ProgressNotification  signal: '0.7'.
>>>> "the hard part is over"
>>>> (anObject isKindOf: ImageSegment) ifTrue: [
>>>> project := self loadImageSegment: anObject
>>>> fromDirectory: aDirectoryOrNil
>>>> withProjectView: existingView
>>>> numberOfFontSubstitutes: numberOfFontSubstitutes
>>>> substituteFont: substituteFont
>>>> mgr: mgr.
>>>> project noteManifestDetailsIn: dict.
>>>> project removeParameter: #sugarProperties.
>>>> Smalltalk at: #SugarPropertiesNotification ifPresent: [:sp |
>>>> sp signal ifNotNil: [:props |
>>>> project keepSugarProperties: props monitor: true]].
>>>> clearOriginFlag ifTrue: [project forgetExistingURL].
>>>> ProgressNotification  signal: '0.8'.
>>>> ^ project
>>>> ifNil: [self inform: 'No project found in this file' translated]
>>>> ifNotNil: [ProjectEntryNotification signal: project]].
>>>> Project current openViewAndEnter: anObject
>>>>
>>>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>>>> A few steps more: when I drop a project file onto the desktop the
>>>>> following methods are called
>>>>>
>>>>> PasteUpMorph handleDroppedItem: anItem event: anEvent
>>>>> ExternalDropHandler lookupExternalDropHandler: anItem
>>>>> ExternalDropHandler handle: dropStream in: pasteUp dropEvent: anEvent
>>>>> ExternalDropHandler class defaultProjectHandler
>>>>>
>>>>> ProjectLoading openOn: aMultiByteFileStream:
>>>>> "'/home/user/Downloads/CarAndPen.014(2).pr'"
>>>>>
>>>>> So we have to fix ProjectLoading
>>>>>
>>>>>
>>>>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>>>>> Note: MorphWithGrid does not really make sense unless you have a
>>>>>> superclass MorphWithDnD (Drag and Drop) which handles the morph
>>>>>> droped
>>>>>> and makes them 'sticky'.
>>>>>>
>>>>>> Though refactoring PastUpMorph by inserting superclasses is an issue
>>>>>> I
>>>>>> suggest to put this on the backburner at the moment and focus on
>>>>>> getting the Etoys setting straight as Dave suggests in the initial
>>>>>> mail.
>>>>>>
>>>>>> A use case to follow: What happens when you drop  the exapme project
>>>>>>
>>>>>>     http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>>>>>>
>>>>>> on to the desktop.
>>>>>>
>>>>>> ExternalDropHandler>>handleDroppedItem:event:  [21]
>>>>>>
>>>>>> is called in this case and then dispatches to do the necessary things
>>>>>> to deal with the
>>>>>>     ExampleEtoys/CarAndPen.014.pr
>>>>>> file.
>>>>>>
>>>>>> There is a message box which needs attention.
>>>>>>
>>>>>> And I assume that in the course of these events some settings are
>>>>>> necessary. Most prominently to choose EtoysProject and no longer
>>>>>> MorphicProject
>>>>>>
>>>>>> --Hannes
>>>>>>
>>>>>> [21] http://wiki.squeak.org/squeak/4283
>>>>>>
>>>>>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>>>>>> I added a demo file Morphic-hjh.1354 [11] to the repository
>>>>>>>
>>>>>>> MCHttpRepository
>>>>>>> location: 'http://www.squeaksource.com/EtoysProject'
>>>>>>> user: ''
>>>>>>> password: ''
>>>>>>>
>>>>>>> This file should be loaded into a fully updated trunk test image.
>>>>>>>
>>>>>>> I agree with what Tobias noted earlier in this thread that it is
>>>>>>> probably better to avoid renaming PasteUpMorph. I see as a solution
>>>>>>> to
>>>>>>> easier deal with PasteUpMorph functions the insertion of
>>>>>>> superclasses
>>>>>>> of PasteUpMorph (and thus subclasses of BorderedMorph) [12]
>>>>>>>
>>>>>>> The next thing I will come up with is a class
>>>>>>>     MorphWithDnD
>>>>>>>
>>>>>>> a morph class which supports drag and drop.
>>>>>>> As a superclass of MorphWithGrid
>>>>>>>
>>>>>>> A third class would be PlayField which contains all the Etoys
>>>>>>> selectors.
>>>>>>> In an image without Etoys that class would then be just empty.
>>>>>>>
>>>>>>> --Hannes
>>>>>>>
>>>>>>>
>>>>>>> --------------------
>>>>>>>
>>>>>>> [11]
>>>>>>> Name: Morphic-hjh.1354
>>>>>>> Author: hjh
>>>>>>> Time: 5 October 2017, 11:51:21.903338 am
>>>>>>> UUID: e96d5a46-453f-418c-b95f-26f1674ca329
>>>>>>> Ancestors: Morphic-hjh.1353
>>>>>>>
>>>>>>> Demo which shows how to remove selectors from PasteUpMorph and
>>>>>>> insert
>>>>>>> them into a newy created superclass
>>>>>>>
>>>>>>> Inserted
>>>>>>>      MorphWithGrid
>>>>>>> as a subclass of BorderedMorph and superclass of
>>>>>>>     PasteUpMorph
>>>>>>>
>>>>>>> gridding protocol was moved from
>>>>>>>     PasteUpMorph
>>>>>>> to
>>>>>>>     MorphWithGrid
>>>>>>>
>>>>>>>
>>>>>>> Morphic-hjh.1353:
>>>>>>> Ancestors: Morphic-hjh.1352
>>>>>>>
>>>>>>> Note: I tried to save this update several times. That accounts for
>>>>>>> the
>>>>>>> empty updates in between.
>>>>>>>
>>>>>>>
>>>>>>> ---------
>>>>>>> [12]
>>>>>>> After filing in Morphic-hjh.1354
>>>>>>> PasteUpMorph printHierarchy '
>>>>>>> ProtoObject #()
>>>>>>> Object #()
>>>>>>> Morph #()
>>>>>>> BorderedMorph #()
>>>>>>> MorphWithGrid #(''griddingOn'')
>>>>>>> PasteUpMorph #(...)
>>>>>>> ComponentLayout #(...)
>>>>>>> EventTimeline #(...)
>>>>>>> GeeBookPageMorph #(...)
>>>>>>> IndexTabs #(...)
>>>>>>> MouseEventEditor #(...)
>>>>>>> PartsBin #(...)
>>>>>>> QuickGuideHolderMorph #(...)
>>>>>>> SyntaxTestMethods #(...)
>>>>>>> TetrisBoard #(...)
>>>>>>> TextPlusPasteUpMorph #(...)
>>>>>>> WiWPasteUpMorph #(...)
>>>>>>> MVCWiWPasteUpMorph #(...)
>>>>>>> Worldlet #(...)
>>>>>>> ZASMScriptMorph #(...)
>>>>>>> ZoomAndScrollMorph #(...)'
>>>>>>>
>>>>>>> On 10/5/17, Marcel Taeumel <[hidden email]> wrote:
>>>>>>>> Done. :)
>>>>>>>>
>>>>>>>> Best,
>>>>>>>> Marcel
>>>>>>>> Am 05.10.2017 06:21:44 schrieb David T. Lewis
>>>>>>>> <[hidden email]>:
>>>>>>>> We did have a problem on squeaksource.com, but I think it is mostly
>>>>>>>> resolved
>>>>>>>> now.
>>>>>>>>
>>>>>>>> Hannes,
>>>>>>>>
>>>>>>>> The password reset for your HJH account was lost, so I set it back
>>>>>>>> to
>>>>>>>> the
>>>>>>>> new password that I sent to you earlier in private email. Hopefully
>>>>>>>> your
>>>>>>>> access is working again now.
>>>>>>>>
>>>>>>>> Marcel,
>>>>>>>>
>>>>>>>> Your new account disappeared when squeaksource recovered from some
>>>>>>>> internal
>>>>>>>> problem. Sorry, I do not know the cause. But could I ask you to
>>>>>>>> please
>>>>>>>> register
>>>>>>>> again on squeaksource.com, and I will then add you back to
>>>>>>>> EtoysProject?
>>>>>>>>
>>>>>>>> Sorry for the disruption,
>>>>>>>> Dave
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Oct 05, 2017 at 02:03:47AM +0200, H. Hirzel wrote:
>>>>>>>>> Dave
>>>>>>>>>
>>>>>>>>> Earlier today login worked. Currently it does not.
>>>>>>>>>
>>>>>>>>> --Hannes
>>>>>>>>>
>>>>>>>>> On 10/5/17, David T. Lewis wrote:
>>>>>>>>> > Hannes,
>>>>>>>>> >
>>>>>>>>> > You did not cause the problem. It may have been me, I saved the
>>>>>>>>> > squeaksource.com
>>>>>>>>> > image from a VNC session (because I wanted to make an up to date
>>>>>>>>> > backup
>>>>>>>>> > of
>>>>>>>>> > it),
>>>>>>>>> > and I am now unable to log in to squeaksource. Maybe I triggered
>>>>>>>>> > a
>>>>>>>>> > bug
>>>>>>>>> > :-/
>>>>>>>>> >
>>>>>>>>> > Can you please tell me if you are able to log in to your
>>>>>>>>> > http://squeaksource.com
>>>>>>>>> > page? I am getting authorization errors, and I suspect it is a
>>>>>>>>> > problem
>>>>>>>>> > that
>>>>>>>>> > affects
>>>>>>>>> > everyone.
>>>>>>>>> >
>>>>>>>>> > Thanks,
>>>>>>>>> > Dave
>>>>>>>>> >
>>>>>>>>> > On Thu, Oct 05, 2017 at 01:52:35AM +0200, H. Hirzel wrote:
>>>>>>>>> >> Dave,
>>>>>>>>> >>
>>>>>>>>> >> Yes, I encounter problems. They might be related to what I just
>>>>>>>>> >> tried
>>>>>>>>> >> to
>>>>>>>>> >> do:
>>>>>>>>> >>
>>>>>>>>> >> I wanted to save an updated version of Morphic to the
>>>>>>>>> >> ProjectEtoys
>>>>>>>>> >> repository but by mistake I tried to commit it to the trunk. As
>>>>>>>>> >> I
>>>>>>>>> >> do
>>>>>>>>> >> not have commit rights to trunk this prevented me from changing
>>>>>>>>> >> it
>>>>>>>>> >> inadvertently. Later on I wanted to commit that version to
>>>>>>>>> >> ProjectEtoys. It did not work.
>>>>>>>>> >>
>>>>>>>>> >> --Hannes
>>>>>>>>> >>
>>>>>>>>> >>
>>>>>>>>> >>
>>>>>>>>> >> On 10/5/17, David T. Lewis wrote:
>>>>>>>>> >> > I'm seeing problems with SqueakSource right now, trying to
>>>>>>>>> >> > figure
>>>>>>>>> >> > out
>>>>>>>>> >> > what is wrong. So the project may not be accessible right now
>>>>>>>>> >> > :-/
>>>>>>>>> >> >
>>>>>>>>> >> > Dave
>>>>>>>>> >> >
>>>>>>>>> >> >
>>>>>>>>> >> > On Thu, Oct 05, 2017 at 01:17:58AM +0200, H. Hirzel wrote:
>>>>>>>>> >> >> Karl,
>>>>>>>>> >> >>
>>>>>>>>> >> >> So far entering and existing the Etoys project works
>>>>>>>>> >> >> smoothly.
>>>>>>>>> >> >>
>>>>>>>>> >> >> Load mcz from into current Squeak 6.0a
>>>>>>>>> >> >>
>>>>>>>>> >> >> MCHttpRepository
>>>>>>>>> >> >> location: 'http://www.squeaksource.com/EtoysProject'
>>>>>>>>> >> >> user: ''
>>>>>>>>> >> >> password: ''
>>>>>>>>> >> >>
>>>>>>>>> >> >> The issue is about providing more settings when entering.
>>>>>>>>> >> >>
>>>>>>>>> >> >> Karl, do you want to be added to the list of developers?
>>>>>>>>> >> >>
>>>>>>>>> >> >> --HH
>>>>>>>>> >> >>
>>>>>>>>> >> >> On 10/5/17, H. Hirzel wrote:
>>>>>>>>> >> >> > PasteUpMorph is useful and the functions have to be
>>>>>>>>> >> >> > maintained.
>>>>>>>>> >> >> >
>>>>>>>>> >> >> > However adding more functions to Morph does not make
>>>>>>>>> >> >> > sense.
>>>>>>>>> >> >> >
>>>>>>>>> >> >> > Squeak 6.0a
>>>>>>>>> >> >> > Morph selectors size 1345
>>>>>>>>> >> >> > PasteUpMorph selectors size 530
>>>>>>>>> >> >> >
>>>>>>>>> >> >> > --Hannes
>>>>>>>>> >> >> >
>>>>>>>>> >> >> > On 10/4/17, karl ramberg wrote:
>>>>>>>>> >> >> >> I'm not sure anybody uses Etoys anymore, but PasteUpMorph
>>>>>>>>> >> >> >> is
>>>>>>>>> >> >> >> very
>>>>>>>>> >> >> >> useful
>>>>>>>>> >> >> >> in
>>>>>>>>> >> >> >> direct manipulation because of it's various layout and
>>>>>>>>> >> >> >> event
>>>>>>>>> >> >> >> handling
>>>>>>>>> >> >> >> options. It also act as a container of other morphs, with
>>>>>>>>> >> >> >> automatic
>>>>>>>>> >> >> >> layout, enumeration etc.
>>>>>>>>> >> >> >> I'm sure most of this could be refactored into Morph
>>>>>>>>> >> >> >> class
>>>>>>>>> >> >> >> or
>>>>>>>>> >> >> >> another
>>>>>>>>> >> >> >> class.
>>>>>>>>> >> >> >>
>>>>>>>>> >> >> >> Best,
>>>>>>>>> >> >> >> Karl
>>>>>>>>> >> >> >>
>>>>>>>>> >> >> >> On Tue, Oct 3, 2017 at 3:03 PM, Marcel Taeumel
>>>>>>>>> >> >> >>
>>>>>>>>> >> >> >> wrote:
>>>>>>>>> >> >> >>
>>>>>>>>> >> >> >>> +1 :)
>>>>>>>>> >> >> >>>
>>>>>>>>> >> >> >>> And then later: Rename PasteUpMorph to WorldMorph, and
>>>>>>>>> >> >> >>> keep
>>>>>>>>> >> >> >>> an
>>>>>>>>> >> >> >>> empty
>>>>>>>>> >> >> >>> PasteUpMorph subclass around for compatibility reasons.
>>>>>>>>> >> >> >>> So
>>>>>>>>> >> >> >>> many
>>>>>>>>> >> >> >>> ideas
>>>>>>>>> >> >> >>> have
>>>>>>>>> >> >> >>> been ported down to Morph class over the past years. New
>>>>>>>>> >> >> >>> applications
>>>>>>>>> >> >> >>> have
>>>>>>>>> >> >> >>> no reason to ever use other instances of PasteUpMorph.
>>>>>>>>> >> >> >>>
>>>>>>>>> >> >> >>> Best,
>>>>>>>>> >> >> >>> Marcel
>>>>>>>>> >> >> >>>
>>>>>>>>> >> >> >>> Am 03.10.2017 14:57:55 schrieb H. Hirzel :
>>>>>>>>> >> >> >>> On 10/3/17, H. Hirzel wrote:
>>>>>>>>> >> >> >>> > Dave
>>>>>>>>> >> >> >>> >
>>>>>>>>> >> >> >>> > your change set contains the class EtoysProject with
>>>>>>>>> >> >> >>> >
>>>>>>>>> >> >> >>> > EtoysProject selectors
>>>>>>>>> >> >> >>> >
>>>>>>>>> >> >> >>> > #(#finalEnterActions: #restoreGlobalPreferences
>>>>>>>>> >> >> >>> > #saveGlobalPreferences
>>>>>>>>> >> >> >>> > #initializeProjectPreferences #configureOnFirstEntry
>>>>>>>>> >> >> >>> > #finalExitActions:)
>>>>>>>>> >> >> >>> >
>>>>>>>>> >> >> >>> > For complete configuration of a EtoysProject it might
>>>>>>>>> >> >> >>> > be
>>>>>>>>> >> >> >>> > necessary
>>>>>>>>> >> >> >>> > to
>>>>>>>>> >> >> >>> > do
>>>>>>>>> >> >> >>> >
>>>>>>>>> >> >> >>> > PasteUpMorph subclass: EtoysPasteUpMorph
>>>>>>>>> >> >> >>> >
>>>>>>>>> >> >> >>> > as well. http://wiki.squeak.org/squeak/6461
>>>>>>>>> >> >> >>> >
>>>>>>>>> >> >> >>> > Then Etoys related methods may be pushed down to
>>>>>>>>> >> >> >>> > EtoysPasteUpMorph.
>>>>>>>>> >> >> >>>
>>>>>>>>> >> >> >>> See screen shot attached.
>>>>>>>>> >> >> >>>
>>>>>>>>> >> >> >>> > And probably an Etoys specific subclass of WorldMenu
>>>>>>>>> >> >> >>> > would
>>>>>>>>> >> >> >>> > be
>>>>>>>>> >> >> >>> > fine
>>>>>>>>> >> >> >>> > as
>>>>>>>>> >> >> >>> well
>>>>>>>>> >> >> >>> > http://wiki.squeak.org/squeak/6461
>>>>>>>>> >> >> >>> >
>>>>>>>>> >> >> >>> >
>>>>>>>>> >> >> >>> > there is a test project [2] and some more information
>>>>>>>>> >> >> >>> > about
>>>>>>>>> >> >> >>> > adaptions
>>>>>>>>> >> >> >>> > needed because of the UI changes in the thread 'Etoys
>>>>>>>>> >> >> >>> > in
>>>>>>>>> >> >> >>> > 2017?' -
>>>>>>>>> >> >> >>> > UI
>>>>>>>>> >> >> >>> > preferences [3]. And it would be good to have Etoys
>>>>>>>>> >> >> >>> > methods
>>>>>>>>> >> >> >>> > /
>>>>>>>>> >> >> >>> > configuration separate [4].
>>>>>>>>> >> >> >>> >
>>>>>>>>> >> >> >>> > I suggest that you start go ahead and start
>>>>>>>>> >> >> >>> > implementing
>>>>>>>>> >> >> >>> > this
>>>>>>>>> >> >> >>> > while
>>>>>>>>> >> >> >>> > using a test Etoys project dropped onto the desktop.
>>>>>>>>> >> >> >>> >
>>>>>>>>> >> >> >>> > --Hannes
>>>>>>>>> >> >> >>> >
>>>>>>>>> >> >> >>> >
>>>>>>>>> >> >> >>> > [2] > You simply drop it in. E.g. download this
>>>>>>>>> >> >> >>> > project
>>>>>>>>> >> >> >>> >> http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>>>>>>>>> >> >> >>> >
>>>>>>>>> >> >> >>> > [3] Hannes Hirzel, 'Etoys in 2017?' mail, Wed, Feb 22,
>>>>>>>>> >> >> >>> > 2017
>>>>>>>>> >> >> >>> > at
>>>>>>>>> >> >> >>> > 11:01
>>>>>>>>> >> >> >>> > AM
>>>>>>>>> >> >> >>> >
>>>>>>>>> >> >> >>> > [4] David T. Lewis, Sep 4, 2016 at 3:34 PM
>>>>>>>>> >> >> >>> > "I think it would be great if both Etoys and Scratch
>>>>>>>>> >> >> >>> > were
>>>>>>>>> >> >> >>> > easily
>>>>>>>>> >> >> >>> > loadable and unloadable in trunk."
>>>>>>>>> >> >> >>> >
>>>>>>>>> >> >> >>> > On 10/2/17, David T. Lewis wrote:
>>>>>>>>> >> >> >>> >> An EtoysProject is a project that is configured for
>>>>>>>>> >> >> >>> >> running
>>>>>>>>> >> >> >>> >> Etoys.
>>>>>>>>> >> >> >>> >> On
>>>>>>>>> >> >> >>> >> first entry to a new EtoysProject, the playground and
>>>>>>>>> >> >> >>> >> project
>>>>>>>>> >> >> >>> preferences
>>>>>>>>> >> >> >>> >> are initialized to provide an environment similar to
>>>>>>>>> >> >> >>> >> that
>>>>>>>>> >> >> >>> >> of
>>>>>>>>> >> >> >>> >> a
>>>>>>>>> >> >> >>> >> traditional
>>>>>>>>> >> >> >>> >> standalone Etoys image.
>>>>>>>>> >> >> >>> >>
>>>>>>>>> >> >> >>> >> Certain preferences that are required for Etoys are
>>>>>>>>> >> >> >>> >> initialized
>>>>>>>>> >> >> >>> >> on
>>>>>>>>> >> >> >>> >> project
>>>>>>>>> >> >> >>> >> entry, overriding their global preference values
>>>>>>>>> >> >> >>> >> while
>>>>>>>>> >> >> >>> >> this
>>>>>>>>> >> >> >>> EtoysProject
>>>>>>>>> >> >> >>> >> is active. On leaving the project, these preferences
>>>>>>>>> >> >> >>> >> are
>>>>>>>>> >> >> >>> >> restored
>>>>>>>>> >> >> >>> >> to
>>>>>>>>> >> >> >>> >> their
>>>>>>>>> >> >> >>> >> previous values.
>>>>>>>>> >> >> >>> >>
>>>>>>>>> >> >> >>> >> "ProjectViewMorph openOn: EtoysProject new"
>>>>>>>>> >> >> >>> >>
>>>>>>>>> >> >> >>> >> Change set attached for a minimal implementation.
>>>>>>>>> >> >> >>> >>
>>>>>>>>> >> >> >>> >> Anyone with Etoys knowledge care to help? I do not
>>>>>>>>> >> >> >>> >> know
>>>>>>>>> >> >> >>> >> enough
>>>>>>>>> >> >> >>> >> about
>>>>>>>>> >> >> >>> >> Etoys
>>>>>>>>> >> >> >>> >> to fill in the rest of the initialization that will
>>>>>>>>> >> >> >>> >> be
>>>>>>>>> >> >> >>> >> required,
>>>>>>>>> >> >> >>> >> but
>>>>>>>>> >> >> >>> >> it
>>>>>>>>> >> >> >>> >> should not be hard to do.
>>>>>>>>> >> >> >>> >>
>>>>>>>>> >> >> >>> >> Dave
>>>>>>>>> >> >> >>> >>
>>>>>>>>> >> >> >>> >>
>>>>>>>>> >> >> >>> >
>>>>>>>>> >> >> >>>
>>>>>>>>> >> >> >>>
>>>>>>>>> >> >> >>>
>>>>>>>>> >> >> >>>
>>>>>>>>> >> >> >>>
>>>>>>>>> >> >> >>
>>>>>>>>> >> >> >
>>>>>>>>> >> >
>>>>>>>>> >> >
>>>>>>>>> >> >>
>>>>>>>>> >> >
>>>>>>>>> >> >
>>>>>>>>> >> >
>>>>>>>>> >>
>>>>>>>>> >
>>>>>>>>> >
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

Hannes Hirzel
On 10/5/17, H. Hirzel <[hidden email]> wrote:

> #fixUponLoad:seg:
>
> as called in  (see mark *******)
>
>
> ProjectLoading class
>
> loadImageSegment: morphOrList  fromDirectory: aDirectoryOrNil
> withProjectView: existingView numberOfFontSubstitutes:
> numberOfFontSubstitutes substituteFont: substituteFont mgr: mgr
>
> | proj projectsToBeDeleted ef f |
>
> (f := (Flaps globalFlapTabWithID: 'Navigator' translated)) ifNotNil:
> [f hideFlap].
> proj := morphOrList arrayOfRoots
> detect: [:mm | mm isKindOf: Project]
> ifNone: [^ nil].
> numberOfFontSubstitutes > 0 ifTrue: [
> proj projectParameterAt: #substitutedFont put: substituteFont].
> ef := proj projectParameterAt: #eToysFont.
> (ef isNil or: [ef ~= substituteFont familySizeFace]) ifTrue: [
> proj projectParameterAt: #substitutedFont put: substituteFont.
> ].
>
> proj projectParameters at: #MultiSymbolInWrongPlace put: false.
> "Yoshiki did not put MultiSymbols into outPointers in older images!"
>
> morphOrList arrayOfRoots do: [:obj |
> obj fixUponLoad: proj seg: morphOrList "imageSegment  ******* "].
>
> (proj projectParameters at: #MultiSymbolInWrongPlace) ifTrue: [
> morphOrList arrayOfRoots do: [:obj | (obj isKindOf: Set) ifTrue:
> [obj rehash]]].
>
> proj resourceManager: mgr.
> "proj versionFrom: preStream."
> proj lastDirectory: aDirectoryOrNil.
> proj setParent: Project current.
> projectsToBeDeleted := OrderedCollection new.
> existingView == #none ifFalse: [
> self makeExistingView: existingView project: proj
> projectsToBeDeleted: projectsToBeDeleted].
> ChangeSorter allChangeSets add: proj changeSet.
> Project current projectParameters
> at: #deleteWhenEnteringNewProject
> ifPresent: [ :ignored |
> projectsToBeDeleted add: Project current.
> Project current removeParameter: #deleteWhenEnteringNewProject.
> ].
> projectsToBeDeleted isEmpty ifFalse: [
> proj projectParameters
> at: #projectsToBeDeleted
> put: projectsToBeDeleted.
> ].
> proj removeParameter: #eToysFont.
> ^ proj
>
> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>> To adapt
>>
>> #fixUponLoad:seg:
>>
>> is the issue here if we want to change MorphicProjects to
>> EtoysProjects when loading old Etoys pr projects.
>>
>> As
>>     MorphicProject subclass: #EtoysProject
>> holds an now new instance variables the changes should be minimal.
>> Have all objects from aMorphicProject added to a new EtoysProject and
>> then a become:
>>
>> Comments?
>>
>>
>>
>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>> Later on in
>>>
>>>
>>> ProjectLoading class>>loadImageSegment: morphOrList  fromDirectory:
>>> aDirectoryOrNil withProjectView: existingView numberOfFontSubstitutes:
>>> numberOfFontSubstitutes substituteFont: substituteFont mgr: mgr
>>>
>>>
>>>
>>> | proj projectsToBeDeleted ef f |
>>> (f := (Flaps globalFlapTabWithID: 'Navigator' translated)) ifNotNil:
>>> [f hideFlap].
>>> proj := morphOrList arrayOfRoots
>>> detect: [:mm | mm isKindOf: Project]
>>> ifNone: [^ nil].
>>>
>>>
>>> The project 'proj' is read which is a MorphicProject.
>>>
>>> We need to convert this into an EtoysProject if we want to follow the
>>> path of upgrading MorphicProjects to EtoysProjects.
>>>
>>> Probably a good idea but a matter of discussion.
>>>
>>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>>> If you drop
>>>>
>>>>     http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>>>>
>>>> on to the desktop Squeak asks you for a replacement for
>>>> 'MultiNewParagraph' as this class was removed in April (The Trunk:
>>>> EToys-nice.292.mcz)
>>>>
>>>> Answer 'NewParagraph'. Then the Etoys project loads and gives some
>>>> error messages. Some are related to preferences. An issue to fix
>>>> first.
>>>>
>>>> Another issue is that actually a MorphicProject is created instead of
>>>> the new #EtoysProject type we want.
>>>>
>>>> I do not now yet where to do this.
>>>> The call chain passes through
>>>>
>>>> MultiByteBinaryOrTextStream>>fileInObjectAndCodeForProject [1]
>>>>
>>>> The stream [2] has code and an  object to be read by a SmartRefStream.
>>>>
>>>> More investigation needed.
>>>>
>>>> --Hannes
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> [1] MultiByteBinaryOrTextStream>>fileInObjectAndCodeForProject
>>>>
>>>> fileInObjectAndCodeForProject
>>>> "This file may contain:
>>>> 1) a fileIn of code
>>>> 2) just an object in SmartReferenceStream format
>>>> 3) both code and an object.
>>>> File it in and return the object.  Note that self must be a
>>>> FileStream or RWBinaryOrTextStream.  Maybe ReadWriteStream incorporate
>>>> RWBinaryOrTextStream?"
>>>> | refStream object |
>>>> self halt.
>>>> self text.
>>>> self peek asciiValue = 4
>>>> ifTrue: [  "pure object file"
>>>> self binary.
>>>> refStream := SmartRefStream on: self.
>>>> object := refStream nextAndClose]
>>>> ifFalse: [  "objects mixed with a fileIn"
>>>> self fileInProject.  "reads code and objects, then closes the file"
>>>> self binary.
>>>> object := SmartRefStream scannedObject]. "set by side effect of one
>>>> of the chunks"
>>>> SmartRefStream scannedObject: nil.  "clear scannedObject"
>>>> ^ object
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> [2] Content of the Etoys pr file readstream
>>>>
>>>> '''From etoys4.0 of 9 October 2008 [latest update: #2319] on 18
>>>> September 2009 at 3:39:18 pm''!
>>>>  | cont | (Smalltalk includesKey: #MorphExtensionPlus) ifFalse: [self
>>>> inform: ''This project cannot be loaded into an older system.\Please
>>>> use an OLPC Etoys compatible image.'' translated withCRs.
>>>> cont _ thisContext.
>>>> [cont notNil] whileTrue: [
>>>> cont selector == #handleEvent: ifTrue: [cont return: nil].
>>>> cont _ cont sender.
>>>> ]]!
>>>>
>>>> !ObjectScanner new initialize!
>>>>
>>>>
>>>>
>>>> !self smartRefStream!
>>>>
>>>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>>>> This later on goes to
>>>>>
>>>>>
>>>>> ProjectLoading class>>
>>>>>
>>>>> openName: aFileName stream: preStream fromDirectory: aDirectoryOrNil
>>>>> withProjectView: existingView clearOriginFlag: clearOriginFlag
>>>>> "Reconstitute a Morph from the selected file, presumed to
>>>>> represent a Morph saved via the SmartRefStream mechanism, and open it
>>>>> in an appropriate Morphic world."
>>>>>
>>>>>     | morphOrList archive mgr substituteFont numberOfFontSubstitutes
>>>>> resultArray anObject project manifests dict |
>>>>> (self checkStream: preStream) ifTrue: [^ self].
>>>>> ProgressNotification signal: '0.2'.
>>>>> archive := preStream isZipArchive
>>>>> ifTrue:[ZipArchive new readFrom: preStream]
>>>>> ifFalse:[nil].
>>>>> archive ifNotNil:[
>>>>> manifests := (archive membersMatching: '*manifest').
>>>>> (manifests size = 1 and: [((dict := self parseManifest: manifests
>>>>> first contents) at: 'Project-Format' ifAbsent: []) = 'S-Expression'])
>>>>> ifTrue: [
>>>>> ^ (self respondsTo:
>>>>> #openSexpProjectDict:stream:fromDirectory:withProjectView:)
>>>>> ifTrue: [self openSexpProjectDict: dict stream: preStream
>>>>> fromDirectory: aDirectoryOrNil withProjectView: existingView]
>>>>> ifFalse: [self inform: 'Cannot load S-Expression format projects
>>>>> without Etoys' translated]]].
>>>>>
>>>>> morphOrList := self morphOrList: aFileName stream: preStream
>>>>> fromDirectory: aDirectoryOrNil archive: archive.
>>>>> morphOrList ifNil: [^ self].
>>>>> ProgressNotification  signal: '0.4'.
>>>>> resultArray := self fileInName: aFileName archive: archive
>>>>> morphOrList: morphOrList.
>>>>> anObject := resultArray first.
>>>>> numberOfFontSubstitutes := resultArray second.
>>>>> substituteFont := resultArray third.
>>>>> mgr := resultArray fourth.
>>>>> preStream close.
>>>>> ProgressNotification  signal: '0.7'.
>>>>> "the hard part is over"
>>>>> (anObject isKindOf: ImageSegment) ifTrue: [
>>>>> project := self loadImageSegment: anObject
>>>>> fromDirectory: aDirectoryOrNil
>>>>> withProjectView: existingView
>>>>> numberOfFontSubstitutes: numberOfFontSubstitutes
>>>>> substituteFont: substituteFont
>>>>> mgr: mgr.
>>>>> project noteManifestDetailsIn: dict.
>>>>> project removeParameter: #sugarProperties.
>>>>> Smalltalk at: #SugarPropertiesNotification ifPresent: [:sp |
>>>>> sp signal ifNotNil: [:props |
>>>>> project keepSugarProperties: props monitor: true]].
>>>>> clearOriginFlag ifTrue: [project forgetExistingURL].
>>>>> ProgressNotification  signal: '0.8'.
>>>>> ^ project
>>>>> ifNil: [self inform: 'No project found in this file' translated]
>>>>> ifNotNil: [ProjectEntryNotification signal: project]].
>>>>> Project current openViewAndEnter: anObject
>>>>>
>>>>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>>>>> A few steps more: when I drop a project file onto the desktop the
>>>>>> following methods are called
>>>>>>
>>>>>> PasteUpMorph handleDroppedItem: anItem event: anEvent
>>>>>> ExternalDropHandler lookupExternalDropHandler: anItem
>>>>>> ExternalDropHandler handle: dropStream in: pasteUp dropEvent: anEvent
>>>>>> ExternalDropHandler class defaultProjectHandler
>>>>>>
>>>>>> ProjectLoading openOn: aMultiByteFileStream:
>>>>>> "'/home/user/Downloads/CarAndPen.014(2).pr'"
>>>>>>
>>>>>> So we have to fix ProjectLoading
>>>>>>
>>>>>>
>>>>>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>>>>>> Note: MorphWithGrid does not really make sense unless you have a
>>>>>>> superclass MorphWithDnD (Drag and Drop) which handles the morph
>>>>>>> droped
>>>>>>> and makes them 'sticky'.
>>>>>>>
>>>>>>> Though refactoring PastUpMorph by inserting superclasses is an issue
>>>>>>> I
>>>>>>> suggest to put this on the backburner at the moment and focus on
>>>>>>> getting the Etoys setting straight as Dave suggests in the initial
>>>>>>> mail.
>>>>>>>
>>>>>>> A use case to follow: What happens when you drop  the exapme project
>>>>>>>
>>>>>>>
>>>>>>> http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>>>>>>>
>>>>>>> on to the desktop.
>>>>>>>
>>>>>>> ExternalDropHandler>>handleDroppedItem:event:  [21]
>>>>>>>
>>>>>>> is called in this case and then dispatches to do the necessary
>>>>>>> things
>>>>>>> to deal with the
>>>>>>>     ExampleEtoys/CarAndPen.014.pr
>>>>>>> file.
>>>>>>>
>>>>>>> There is a message box which needs attention.
>>>>>>>
>>>>>>> And I assume that in the course of these events some settings are
>>>>>>> necessary. Most prominently to choose EtoysProject and no longer
>>>>>>> MorphicProject
>>>>>>>
>>>>>>> --Hannes
>>>>>>>
>>>>>>> [21] http://wiki.squeak.org/squeak/4283
>>>>>>>
>>>>>>> On 10/5/17, H. Hirzel <[hidden email]> wrote:
>>>>>>>> I added a demo file Morphic-hjh.1354 [11] to the repository
>>>>>>>>
>>>>>>>> MCHttpRepository
>>>>>>>> location: 'http://www.squeaksource.com/EtoysProject'
>>>>>>>> user: ''
>>>>>>>> password: ''
>>>>>>>>
>>>>>>>> This file should be loaded into a fully updated trunk test image.
>>>>>>>>
>>>>>>>> I agree with what Tobias noted earlier in this thread that it is
>>>>>>>> probably better to avoid renaming PasteUpMorph. I see as a solution
>>>>>>>> to
>>>>>>>> easier deal with PasteUpMorph functions the insertion of
>>>>>>>> superclasses
>>>>>>>> of PasteUpMorph (and thus subclasses of BorderedMorph) [12]
>>>>>>>>
>>>>>>>> The next thing I will come up with is a class
>>>>>>>>     MorphWithDnD
>>>>>>>>
>>>>>>>> a morph class which supports drag and drop.
>>>>>>>> As a superclass of MorphWithGrid
>>>>>>>>
>>>>>>>> A third class would be PlayField which contains all the Etoys
>>>>>>>> selectors.
>>>>>>>> In an image without Etoys that class would then be just empty.
>>>>>>>>
>>>>>>>> --Hannes
>>>>>>>>
>>>>>>>>
>>>>>>>> --------------------
>>>>>>>>
>>>>>>>> [11]
>>>>>>>> Name: Morphic-hjh.1354
>>>>>>>> Author: hjh
>>>>>>>> Time: 5 October 2017, 11:51:21.903338 am
>>>>>>>> UUID: e96d5a46-453f-418c-b95f-26f1674ca329
>>>>>>>> Ancestors: Morphic-hjh.1353
>>>>>>>>
>>>>>>>> Demo which shows how to remove selectors from PasteUpMorph and
>>>>>>>> insert
>>>>>>>> them into a newy created superclass
>>>>>>>>
>>>>>>>> Inserted
>>>>>>>>      MorphWithGrid
>>>>>>>> as a subclass of BorderedMorph and superclass of
>>>>>>>>     PasteUpMorph
>>>>>>>>
>>>>>>>> gridding protocol was moved from
>>>>>>>>     PasteUpMorph
>>>>>>>> to
>>>>>>>>     MorphWithGrid
>>>>>>>>
>>>>>>>>
>>>>>>>> Morphic-hjh.1353:
>>>>>>>> Ancestors: Morphic-hjh.1352
>>>>>>>>
>>>>>>>> Note: I tried to save this update several times. That accounts for
>>>>>>>> the
>>>>>>>> empty updates in between.
>>>>>>>>
>>>>>>>>
>>>>>>>> ---------
>>>>>>>> [12]
>>>>>>>> After filing in Morphic-hjh.1354
>>>>>>>> PasteUpMorph printHierarchy '
>>>>>>>> ProtoObject #()
>>>>>>>> Object #()
>>>>>>>> Morph #()
>>>>>>>> BorderedMorph #()
>>>>>>>> MorphWithGrid #(''griddingOn'')
>>>>>>>> PasteUpMorph #(...)
>>>>>>>> ComponentLayout #(...)
>>>>>>>> EventTimeline #(...)
>>>>>>>> GeeBookPageMorph #(...)
>>>>>>>> IndexTabs #(...)
>>>>>>>> MouseEventEditor #(...)
>>>>>>>> PartsBin #(...)
>>>>>>>> QuickGuideHolderMorph #(...)
>>>>>>>> SyntaxTestMethods #(...)
>>>>>>>> TetrisBoard #(...)
>>>>>>>> TextPlusPasteUpMorph #(...)
>>>>>>>> WiWPasteUpMorph #(...)
>>>>>>>> MVCWiWPasteUpMorph #(...)
>>>>>>>> Worldlet #(...)
>>>>>>>> ZASMScriptMorph #(...)
>>>>>>>> ZoomAndScrollMorph #(...)'
>>>>>>>>
>>>>>>>> On 10/5/17, Marcel Taeumel <[hidden email]> wrote:
>>>>>>>>> Done. :)
>>>>>>>>>
>>>>>>>>> Best,
>>>>>>>>> Marcel
>>>>>>>>> Am 05.10.2017 06:21:44 schrieb David T. Lewis
>>>>>>>>> <[hidden email]>:
>>>>>>>>> We did have a problem on squeaksource.com, but I think it is
>>>>>>>>> mostly
>>>>>>>>> resolved
>>>>>>>>> now.
>>>>>>>>>
>>>>>>>>> Hannes,
>>>>>>>>>
>>>>>>>>> The password reset for your HJH account was lost, so I set it back
>>>>>>>>> to
>>>>>>>>> the
>>>>>>>>> new password that I sent to you earlier in private email.
>>>>>>>>> Hopefully
>>>>>>>>> your
>>>>>>>>> access is working again now.
>>>>>>>>>
>>>>>>>>> Marcel,
>>>>>>>>>
>>>>>>>>> Your new account disappeared when squeaksource recovered from some
>>>>>>>>> internal
>>>>>>>>> problem. Sorry, I do not know the cause. But could I ask you to
>>>>>>>>> please
>>>>>>>>> register
>>>>>>>>> again on squeaksource.com, and I will then add you back to
>>>>>>>>> EtoysProject?
>>>>>>>>>
>>>>>>>>> Sorry for the disruption,
>>>>>>>>> Dave
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Thu, Oct 05, 2017 at 02:03:47AM +0200, H. Hirzel wrote:
>>>>>>>>>> Dave
>>>>>>>>>>
>>>>>>>>>> Earlier today login worked. Currently it does not.
>>>>>>>>>>
>>>>>>>>>> --Hannes
>>>>>>>>>>
>>>>>>>>>> On 10/5/17, David T. Lewis wrote:
>>>>>>>>>> > Hannes,
>>>>>>>>>> >
>>>>>>>>>> > You did not cause the problem. It may have been me, I saved the
>>>>>>>>>> > squeaksource.com
>>>>>>>>>> > image from a VNC session (because I wanted to make an up to
>>>>>>>>>> > date
>>>>>>>>>> > backup
>>>>>>>>>> > of
>>>>>>>>>> > it),
>>>>>>>>>> > and I am now unable to log in to squeaksource. Maybe I
>>>>>>>>>> > triggered
>>>>>>>>>> > a
>>>>>>>>>> > bug
>>>>>>>>>> > :-/
>>>>>>>>>> >
>>>>>>>>>> > Can you please tell me if you are able to log in to your
>>>>>>>>>> > http://squeaksource.com
>>>>>>>>>> > page? I am getting authorization errors, and I suspect it is a
>>>>>>>>>> > problem
>>>>>>>>>> > that
>>>>>>>>>> > affects
>>>>>>>>>> > everyone.
>>>>>>>>>> >
>>>>>>>>>> > Thanks,
>>>>>>>>>> > Dave
>>>>>>>>>> >
>>>>>>>>>> > On Thu, Oct 05, 2017 at 01:52:35AM +0200, H. Hirzel wrote:
>>>>>>>>>> >> Dave,
>>>>>>>>>> >>
>>>>>>>>>> >> Yes, I encounter problems. They might be related to what I
>>>>>>>>>> >> just
>>>>>>>>>> >> tried
>>>>>>>>>> >> to
>>>>>>>>>> >> do:
>>>>>>>>>> >>
>>>>>>>>>> >> I wanted to save an updated version of Morphic to the
>>>>>>>>>> >> ProjectEtoys
>>>>>>>>>> >> repository but by mistake I tried to commit it to the trunk.
>>>>>>>>>> >> As
>>>>>>>>>> >> I
>>>>>>>>>> >> do
>>>>>>>>>> >> not have commit rights to trunk this prevented me from
>>>>>>>>>> >> changing
>>>>>>>>>> >> it
>>>>>>>>>> >> inadvertently. Later on I wanted to commit that version to
>>>>>>>>>> >> ProjectEtoys. It did not work.
>>>>>>>>>> >>
>>>>>>>>>> >> --Hannes
>>>>>>>>>> >>
>>>>>>>>>> >>
>>>>>>>>>> >>
>>>>>>>>>> >> On 10/5/17, David T. Lewis wrote:
>>>>>>>>>> >> > I'm seeing problems with SqueakSource right now, trying to
>>>>>>>>>> >> > figure
>>>>>>>>>> >> > out
>>>>>>>>>> >> > what is wrong. So the project may not be accessible right
>>>>>>>>>> >> > now
>>>>>>>>>> >> > :-/
>>>>>>>>>> >> >
>>>>>>>>>> >> > Dave
>>>>>>>>>> >> >
>>>>>>>>>> >> >
>>>>>>>>>> >> > On Thu, Oct 05, 2017 at 01:17:58AM +0200, H. Hirzel wrote:
>>>>>>>>>> >> >> Karl,
>>>>>>>>>> >> >>
>>>>>>>>>> >> >> So far entering and existing the Etoys project works
>>>>>>>>>> >> >> smoothly.
>>>>>>>>>> >> >>
>>>>>>>>>> >> >> Load mcz from into current Squeak 6.0a
>>>>>>>>>> >> >>
>>>>>>>>>> >> >> MCHttpRepository
>>>>>>>>>> >> >> location: 'http://www.squeaksource.com/EtoysProject'
>>>>>>>>>> >> >> user: ''
>>>>>>>>>> >> >> password: ''
>>>>>>>>>> >> >>
>>>>>>>>>> >> >> The issue is about providing more settings when entering.
>>>>>>>>>> >> >>
>>>>>>>>>> >> >> Karl, do you want to be added to the list of developers?
>>>>>>>>>> >> >>
>>>>>>>>>> >> >> --HH
>>>>>>>>>> >> >>
>>>>>>>>>> >> >> On 10/5/17, H. Hirzel wrote:
>>>>>>>>>> >> >> > PasteUpMorph is useful and the functions have to be
>>>>>>>>>> >> >> > maintained.
>>>>>>>>>> >> >> >
>>>>>>>>>> >> >> > However adding more functions to Morph does not make
>>>>>>>>>> >> >> > sense.
>>>>>>>>>> >> >> >
>>>>>>>>>> >> >> > Squeak 6.0a
>>>>>>>>>> >> >> > Morph selectors size 1345
>>>>>>>>>> >> >> > PasteUpMorph selectors size 530
>>>>>>>>>> >> >> >
>>>>>>>>>> >> >> > --Hannes
>>>>>>>>>> >> >> >
>>>>>>>>>> >> >> > On 10/4/17, karl ramberg wrote:
>>>>>>>>>> >> >> >> I'm not sure anybody uses Etoys anymore, but
>>>>>>>>>> >> >> >> PasteUpMorph
>>>>>>>>>> >> >> >> is
>>>>>>>>>> >> >> >> very
>>>>>>>>>> >> >> >> useful
>>>>>>>>>> >> >> >> in
>>>>>>>>>> >> >> >> direct manipulation because of it's various layout and
>>>>>>>>>> >> >> >> event
>>>>>>>>>> >> >> >> handling
>>>>>>>>>> >> >> >> options. It also act as a container of other morphs,
>>>>>>>>>> >> >> >> with
>>>>>>>>>> >> >> >> automatic
>>>>>>>>>> >> >> >> layout, enumeration etc.
>>>>>>>>>> >> >> >> I'm sure most of this could be refactored into Morph
>>>>>>>>>> >> >> >> class
>>>>>>>>>> >> >> >> or
>>>>>>>>>> >> >> >> another
>>>>>>>>>> >> >> >> class.
>>>>>>>>>> >> >> >>
>>>>>>>>>> >> >> >> Best,
>>>>>>>>>> >> >> >> Karl
>>>>>>>>>> >> >> >>
>>>>>>>>>> >> >> >> On Tue, Oct 3, 2017 at 3:03 PM, Marcel Taeumel
>>>>>>>>>> >> >> >>
>>>>>>>>>> >> >> >> wrote:
>>>>>>>>>> >> >> >>
>>>>>>>>>> >> >> >>> +1 :)
>>>>>>>>>> >> >> >>>
>>>>>>>>>> >> >> >>> And then later: Rename PasteUpMorph to WorldMorph, and
>>>>>>>>>> >> >> >>> keep
>>>>>>>>>> >> >> >>> an
>>>>>>>>>> >> >> >>> empty
>>>>>>>>>> >> >> >>> PasteUpMorph subclass around for compatibility reasons.
>>>>>>>>>> >> >> >>> So
>>>>>>>>>> >> >> >>> many
>>>>>>>>>> >> >> >>> ideas
>>>>>>>>>> >> >> >>> have
>>>>>>>>>> >> >> >>> been ported down to Morph class over the past years.
>>>>>>>>>> >> >> >>> New
>>>>>>>>>> >> >> >>> applications
>>>>>>>>>> >> >> >>> have
>>>>>>>>>> >> >> >>> no reason to ever use other instances of PasteUpMorph.
>>>>>>>>>> >> >> >>>
>>>>>>>>>> >> >> >>> Best,
>>>>>>>>>> >> >> >>> Marcel
>>>>>>>>>> >> >> >>>
>>>>>>>>>> >> >> >>> Am 03.10.2017 14:57:55 schrieb H. Hirzel :
>>>>>>>>>> >> >> >>> On 10/3/17, H. Hirzel wrote:
>>>>>>>>>> >> >> >>> > Dave
>>>>>>>>>> >> >> >>> >
>>>>>>>>>> >> >> >>> > your change set contains the class EtoysProject with
>>>>>>>>>> >> >> >>> >
>>>>>>>>>> >> >> >>> > EtoysProject selectors
>>>>>>>>>> >> >> >>> >
>>>>>>>>>> >> >> >>> > #(#finalEnterActions: #restoreGlobalPreferences
>>>>>>>>>> >> >> >>> > #saveGlobalPreferences
>>>>>>>>>> >> >> >>> > #initializeProjectPreferences #configureOnFirstEntry
>>>>>>>>>> >> >> >>> > #finalExitActions:)
>>>>>>>>>> >> >> >>> >
>>>>>>>>>> >> >> >>> > For complete configuration of a EtoysProject it might
>>>>>>>>>> >> >> >>> > be
>>>>>>>>>> >> >> >>> > necessary
>>>>>>>>>> >> >> >>> > to
>>>>>>>>>> >> >> >>> > do
>>>>>>>>>> >> >> >>> >
>>>>>>>>>> >> >> >>> > PasteUpMorph subclass: EtoysPasteUpMorph
>>>>>>>>>> >> >> >>> >
>>>>>>>>>> >> >> >>> > as well. http://wiki.squeak.org/squeak/6461
>>>>>>>>>> >> >> >>> >
>>>>>>>>>> >> >> >>> > Then Etoys related methods may be pushed down to
>>>>>>>>>> >> >> >>> > EtoysPasteUpMorph.
>>>>>>>>>> >> >> >>>
>>>>>>>>>> >> >> >>> See screen shot attached.
>>>>>>>>>> >> >> >>>
>>>>>>>>>> >> >> >>> > And probably an Etoys specific subclass of WorldMenu
>>>>>>>>>> >> >> >>> > would
>>>>>>>>>> >> >> >>> > be
>>>>>>>>>> >> >> >>> > fine
>>>>>>>>>> >> >> >>> > as
>>>>>>>>>> >> >> >>> well
>>>>>>>>>> >> >> >>> > http://wiki.squeak.org/squeak/6461
>>>>>>>>>> >> >> >>> >
>>>>>>>>>> >> >> >>> >
>>>>>>>>>> >> >> >>> > there is a test project [2] and some more information
>>>>>>>>>> >> >> >>> > about
>>>>>>>>>> >> >> >>> > adaptions
>>>>>>>>>> >> >> >>> > needed because of the UI changes in the thread 'Etoys
>>>>>>>>>> >> >> >>> > in
>>>>>>>>>> >> >> >>> > 2017?' -
>>>>>>>>>> >> >> >>> > UI
>>>>>>>>>> >> >> >>> > preferences [3]. And it would be good to have Etoys
>>>>>>>>>> >> >> >>> > methods
>>>>>>>>>> >> >> >>> > /
>>>>>>>>>> >> >> >>> > configuration separate [4].
>>>>>>>>>> >> >> >>> >
>>>>>>>>>> >> >> >>> > I suggest that you start go ahead and start
>>>>>>>>>> >> >> >>> > implementing
>>>>>>>>>> >> >> >>> > this
>>>>>>>>>> >> >> >>> > while
>>>>>>>>>> >> >> >>> > using a test Etoys project dropped onto the desktop.
>>>>>>>>>> >> >> >>> >
>>>>>>>>>> >> >> >>> > --Hannes
>>>>>>>>>> >> >> >>> >
>>>>>>>>>> >> >> >>> >
>>>>>>>>>> >> >> >>> > [2] > You simply drop it in. E.g. download this
>>>>>>>>>> >> >> >>> > project
>>>>>>>>>> >> >> >>> >> http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>>>>>>>>>> >> >> >>> >
>>>>>>>>>> >> >> >>> > [3] Hannes Hirzel, 'Etoys in 2017?' mail, Wed, Feb
>>>>>>>>>> >> >> >>> > 22,
>>>>>>>>>> >> >> >>> > 2017
>>>>>>>>>> >> >> >>> > at
>>>>>>>>>> >> >> >>> > 11:01
>>>>>>>>>> >> >> >>> > AM
>>>>>>>>>> >> >> >>> >
>>>>>>>>>> >> >> >>> > [4] David T. Lewis, Sep 4, 2016 at 3:34 PM
>>>>>>>>>> >> >> >>> > "I think it would be great if both Etoys and Scratch
>>>>>>>>>> >> >> >>> > were
>>>>>>>>>> >> >> >>> > easily
>>>>>>>>>> >> >> >>> > loadable and unloadable in trunk."
>>>>>>>>>> >> >> >>> >
>>>>>>>>>> >> >> >>> > On 10/2/17, David T. Lewis wrote:
>>>>>>>>>> >> >> >>> >> An EtoysProject is a project that is configured for
>>>>>>>>>> >> >> >>> >> running
>>>>>>>>>> >> >> >>> >> Etoys.
>>>>>>>>>> >> >> >>> >> On
>>>>>>>>>> >> >> >>> >> first entry to a new EtoysProject, the playground
>>>>>>>>>> >> >> >>> >> and
>>>>>>>>>> >> >> >>> >> project
>>>>>>>>>> >> >> >>> preferences
>>>>>>>>>> >> >> >>> >> are initialized to provide an environment similar to
>>>>>>>>>> >> >> >>> >> that
>>>>>>>>>> >> >> >>> >> of
>>>>>>>>>> >> >> >>> >> a
>>>>>>>>>> >> >> >>> >> traditional
>>>>>>>>>> >> >> >>> >> standalone Etoys image.
>>>>>>>>>> >> >> >>> >>
>>>>>>>>>> >> >> >>> >> Certain preferences that are required for Etoys are
>>>>>>>>>> >> >> >>> >> initialized
>>>>>>>>>> >> >> >>> >> on
>>>>>>>>>> >> >> >>> >> project
>>>>>>>>>> >> >> >>> >> entry, overriding their global preference values
>>>>>>>>>> >> >> >>> >> while
>>>>>>>>>> >> >> >>> >> this
>>>>>>>>>> >> >> >>> EtoysProject
>>>>>>>>>> >> >> >>> >> is active. On leaving the project, these preferences
>>>>>>>>>> >> >> >>> >> are
>>>>>>>>>> >> >> >>> >> restored
>>>>>>>>>> >> >> >>> >> to
>>>>>>>>>> >> >> >>> >> their
>>>>>>>>>> >> >> >>> >> previous values.
>>>>>>>>>> >> >> >>> >>
>>>>>>>>>> >> >> >>> >> "ProjectViewMorph openOn: EtoysProject new"
>>>>>>>>>> >> >> >>> >>
>>>>>>>>>> >> >> >>> >> Change set attached for a minimal implementation.
>>>>>>>>>> >> >> >>> >>
>>>>>>>>>> >> >> >>> >> Anyone with Etoys knowledge care to help? I do not
>>>>>>>>>> >> >> >>> >> know
>>>>>>>>>> >> >> >>> >> enough
>>>>>>>>>> >> >> >>> >> about
>>>>>>>>>> >> >> >>> >> Etoys
>>>>>>>>>> >> >> >>> >> to fill in the rest of the initialization that will
>>>>>>>>>> >> >> >>> >> be
>>>>>>>>>> >> >> >>> >> required,
>>>>>>>>>> >> >> >>> >> but
>>>>>>>>>> >> >> >>> >> it
>>>>>>>>>> >> >> >>> >> should not be hard to do.
>>>>>>>>>> >> >> >>> >>
>>>>>>>>>> >> >> >>> >> Dave
>>>>>>>>>> >> >> >>> >>
>>>>>>>>>> >> >> >>> >>
>>>>>>>>>> >> >> >>> >
>>>>>>>>>> >> >> >>>
>>>>>>>>>> >> >> >>>
>>>>>>>>>> >> >> >>>
>>>>>>>>>> >> >> >>>
>>>>>>>>>> >> >> >>>
>>>>>>>>>> >> >> >>
>>>>>>>>>> >> >> >
>>>>>>>>>> >> >
>>>>>>>>>> >> >
>>>>>>>>>> >> >>
>>>>>>>>>> >> >
>>>>>>>>>> >> >
>>>>>>>>>> >> >
>>>>>>>>>> >>
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>



Loading_a_Etoys_Project_Screenshot_2017-10-05.png (310K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

Bert Freudenberg
In reply to this post by Hannes Hirzel
On Thu, Oct 5, 2017 at 9:25 PM, H. Hirzel <[hidden email]> wrote:
If you drop

    http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr

on to the desktop Squeak asks you for a replacement for
'MultiNewParagraph' as this class was removed in April (The Trunk:
EToys-nice.292.mcz)

Answer 'NewParagraph'. Then the Etoys project loads and gives some
error messages. Some are related to preferences. An issue to fix
first.

Another issue is that actually a MorphicProject is created instead of
the new #EtoysProject type we want.

I do not now yet where to do this.

​I can't tell you from memory where exactly to fix this, but the project loading mechanism was designed to be flexible enough to allow all kinds of class changes. It's awesome you're looking into this :)

- Bert -​


Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

Hannes Hirzel
On 10/6/17, Bert Freudenberg <[hidden email]> wrote:

> On Thu, Oct 5, 2017 at 9:25 PM, H. Hirzel <[hidden email]> wrote:
>
>> If you drop
>>
>>     http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>>
>> on to the desktop Squeak asks you for a replacement for
>> 'MultiNewParagraph' as this class was removed in April (The Trunk:
>> EToys-nice.292.mcz)
>>
>> Answer 'NewParagraph'. Then the Etoys project loads and gives some
>> error messages. Some are related to preferences. An issue to fix
>> first.
>>
>> Another issue is that actually a MorphicProject is created instead of
>> the new #EtoysProject type we want.
>>
>> I do not now yet where to do this.
>>
>
> ​I can't tell you from memory where exactly to fix this, but the project
> loading mechanism was designed to be flexible enough to allow all kinds of
> class changes.

Good to know.

In particular

- we get a MorphicProject when reading the *.pr project file.
- we need to convert it to an EtoysProject

Some more investigation needed.

> It's awesome you're looking into this :)
>
> - Bert -​
>

Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

David T. Lewis
On Fri, Oct 06, 2017 at 02:15:41PM +0200, H. Hirzel wrote:

> On 10/6/17, Bert Freudenberg <[hidden email]> wrote:
> > On Thu, Oct 5, 2017 at 9:25 PM, H. Hirzel <[hidden email]> wrote:
> >
> >> If you drop
> >>
> >>     http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
> >>
> >> on to the desktop Squeak asks you for a replacement for
> >> 'MultiNewParagraph' as this class was removed in April (The Trunk:
> >> EToys-nice.292.mcz)
> >>
> >> Answer 'NewParagraph'. Then the Etoys project loads and gives some
> >> error messages. Some are related to preferences. An issue to fix
> >> first.
> >>
> >> Another issue is that actually a MorphicProject is created instead of
> >> the new #EtoysProject type we want.
> >>
> >> I do not now yet where to do this.
> >>
> >
> > ???I can't tell you from memory where exactly to fix this, but the project
> > loading mechanism was designed to be flexible enough to allow all kinds of
> > class changes.
>
> Good to know.
>
> In particular
>
> - we get a MorphicProject when reading the *.pr project file.
> - we need to convert it to an EtoysProject
>
> Some more investigation needed.

I think this makes sense (I am still trying to wrap my head around how this
stuff works in Etoys, I am an Etoys newbie).

So we might have some kind of rule in project loading that says "if
the current project is an EtoysProject, and if I am loading a *.pr for
a MorphicProject, then make it an EtoysProject". And perhaps when saving
a project, we could reverse the rule and always save a project as
MorphicProject, because we know that a loader in EtoysProject will know
how to do the right thing with it.

I can see now that I misunderstood one important thing. I was assuming that
a new EtoysProject would open up with a playfield like the one I see when
I first start a normal Etoys image. But I see now this is wrong, an Etoys
project should initially have an empty playfield, but perhaps there is a
one-time setup that happens the very first time that I enter a new EtoysProject
from the world of "normal Squeak". So maybe if I enter a new EtoysProject
from a MorphicProject or MVCProject, it will automatically load some
initial project that sets up the welcoming playfield with a car driving
around, but when I load or create new EtoysProjects from there, the new
projects would just start with empty playfields.

Am I guessing right?

Dave


>
> > It's awesome you're looking into this :)
> >
> > - Bert -???
> >
>

Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

Bert Freudenberg
On Fri, Oct 6, 2017 at 2:44 PM, David T. Lewis <[hidden email]> wrote:

So we might have some kind of rule in project loading that says "if
the current project is an EtoysProject, and if I am loading a *.pr for
a MorphicProject, then make it an EtoysProject". And perhaps when saving
a project, we could reverse the rule and always save a project as
MorphicProject, because we know that a loader in EtoysProject will know
how to do the right thing with it.

​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.

​The logic is mostly in SmartRefStream, in this case, #initKnownRenames.

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.

I can see now that I misunderstood one important thing. I was assuming that
a new EtoysProject would open up with a playfield like the one I see when
I first start a normal Etoys image. But I see now this is wrong, an Etoys
project should initially have an empty playfield, but perhaps there is a
one-time setup that happens the very first time that I enter a new EtoysProject
from the world of "normal Squeak". So maybe if I enter a new EtoysProject
from a MorphicProject or MVCProject, it will automatically load some
initial project that sets up the welcoming playfield with a car driving
around, but when I load or create new EtoysProjects from there, the new
projects would just start with empty playfields.

Am I guessing right?

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.

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.

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.

- Bert -​


Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

David T. Lewis
In reply to this post by Hannes Hirzel
On Thu, Oct 05, 2017 at 03:16:41PM +0200, H. Hirzel wrote:
> Note: MorphWithGrid does not really make sense unless you have a
> superclass MorphWithDnD (Drag and Drop) which handles the morph droped
> and makes them 'sticky'.
>
> Though refactoring PastUpMorph by inserting superclasses is an issue I
> suggest to put this on the backburner at the moment and focus on
> getting the Etoys setting straight as Dave suggests in the initial
> mail.

I just tried loading your MorphWithGrid, and it does illustrate your point,
thank you.

Probably we will can think about it later though once we get some other
things working better.

Dave

>
> A use case to follow: What happens when you drop  the exapme project
>
>     http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
>
> on to the desktop.
>
> ExternalDropHandler>>handleDroppedItem:event:  [21]
>
> is called in this case and then dispatches to do the necessary things
> to deal with the
>     ExampleEtoys/CarAndPen.014.pr
> file.
>
> There is a message box which needs attention.
>
> And I assume that in the course of these events some settings are
> necessary. Most prominently to choose EtoysProject and no longer
> MorphicProject
>
> --Hannes
>
> [21] http://wiki.squeak.org/squeak/4283
>
> On 10/5/17, H. Hirzel <[hidden email]> wrote:
> > I added a demo file Morphic-hjh.1354 [11] to the repository
> >
> > MCHttpRepository
> > location: 'http://www.squeaksource.com/EtoysProject'
> > user: ''
> > password: ''
> >
> > This file should be loaded into a fully updated trunk test image.
> >
> > I agree with what Tobias noted earlier in this thread that it is
> > probably better to avoid renaming PasteUpMorph. I see as a solution to
> > easier deal with PasteUpMorph functions the insertion of superclasses
> > of PasteUpMorph (and thus subclasses of BorderedMorph) [12]
> >
> > The next thing I will come up with is a class
> >     MorphWithDnD
> >
> > a morph class which supports drag and drop.
> > As a superclass of MorphWithGrid
> >
> > A third class would be PlayField which contains all the Etoys selectors.
> > In an image without Etoys that class would then be just empty.
> >
> > --Hannes
> >
> >
> > --------------------
> >
> > [11]
> > Name: Morphic-hjh.1354
> > Author: hjh
> > Time: 5 October 2017, 11:51:21.903338 am
> > UUID: e96d5a46-453f-418c-b95f-26f1674ca329
> > Ancestors: Morphic-hjh.1353
> >
> > Demo which shows how to remove selectors from PasteUpMorph and insert
> > them into a newy created superclass
> >
> > Inserted
> >      MorphWithGrid
> > as a subclass of BorderedMorph and superclass of
> >     PasteUpMorph
> >
> > gridding protocol was moved from
> >     PasteUpMorph
> > to
> >     MorphWithGrid
> >
> >
> > Morphic-hjh.1353:
> > Ancestors: Morphic-hjh.1352
> >
> > Note: I tried to save this update several times. That accounts for the
> > empty updates in between.
> >
> >
> > ---------
> > [12]
> > After filing in Morphic-hjh.1354
> > PasteUpMorph printHierarchy '
> > ProtoObject #()
> > Object #()
> > Morph #()
> > BorderedMorph #()
> > MorphWithGrid #(''griddingOn'')
> > PasteUpMorph #(...)
> > ComponentLayout #(...)
> > EventTimeline #(...)
> > GeeBookPageMorph #(...)
> > IndexTabs #(...)
> > MouseEventEditor #(...)
> > PartsBin #(...)
> > QuickGuideHolderMorph #(...)
> > SyntaxTestMethods #(...)
> > TetrisBoard #(...)
> > TextPlusPasteUpMorph #(...)
> > WiWPasteUpMorph #(...)
> > MVCWiWPasteUpMorph #(...)
> > Worldlet #(...)
> > ZASMScriptMorph #(...)
> > ZoomAndScrollMorph #(...)'
> >
> > On 10/5/17, Marcel Taeumel <[hidden email]> wrote:
> >> Done. :)
> >>
> >> Best,
> >> Marcel
> >> Am 05.10.2017 06:21:44 schrieb David T. Lewis <[hidden email]>:
> >> We did have a problem on squeaksource.com, but I think it is mostly
> >> resolved
> >> now.
> >>
> >> Hannes,
> >>
> >> The password reset for your HJH account was lost, so I set it back to the
> >> new password that I sent to you earlier in private email. Hopefully your
> >> access is working again now.
> >>
> >> Marcel,
> >>
> >> Your new account disappeared when squeaksource recovered from some
> >> internal
> >> problem. Sorry, I do not know the cause. But could I ask you to please
> >> register
> >> again on squeaksource.com, and I will then add you back to EtoysProject?
> >>
> >> Sorry for the disruption,
> >> Dave
> >>
> >>
> >> On Thu, Oct 05, 2017 at 02:03:47AM +0200, H. Hirzel wrote:
> >>> Dave
> >>>
> >>> Earlier today login worked. Currently it does not.
> >>>
> >>> --Hannes
> >>>
> >>> On 10/5/17, David T. Lewis wrote:
> >>> > Hannes,
> >>> >
> >>> > You did not cause the problem. It may have been me, I saved the
> >>> > squeaksource.com
> >>> > image from a VNC session (because I wanted to make an up to date
> >>> > backup
> >>> > of
> >>> > it),
> >>> > and I am now unable to log in to squeaksource. Maybe I triggered a bug
> >>> > :-/
> >>> >
> >>> > Can you please tell me if you are able to log in to your
> >>> > http://squeaksource.com
> >>> > page? I am getting authorization errors, and I suspect it is a problem
> >>> > that
> >>> > affects
> >>> > everyone.
> >>> >
> >>> > Thanks,
> >>> > Dave
> >>> >
> >>> > On Thu, Oct 05, 2017 at 01:52:35AM +0200, H. Hirzel wrote:
> >>> >> Dave,
> >>> >>
> >>> >> Yes, I encounter problems. They might be related to what I just tried
> >>> >> to
> >>> >> do:
> >>> >>
> >>> >> I wanted to save an updated version of Morphic to the ProjectEtoys
> >>> >> repository but by mistake I tried to commit it to the trunk. As I do
> >>> >> not have commit rights to trunk this prevented me from changing it
> >>> >> inadvertently. Later on I wanted to commit that version to
> >>> >> ProjectEtoys. It did not work.
> >>> >>
> >>> >> --Hannes
> >>> >>
> >>> >>
> >>> >>
> >>> >> On 10/5/17, David T. Lewis wrote:
> >>> >> > I'm seeing problems with SqueakSource right now, trying to figure
> >>> >> > out
> >>> >> > what is wrong. So the project may not be accessible right now :-/
> >>> >> >
> >>> >> > Dave
> >>> >> >
> >>> >> >
> >>> >> > On Thu, Oct 05, 2017 at 01:17:58AM +0200, H. Hirzel wrote:
> >>> >> >> Karl,
> >>> >> >>
> >>> >> >> So far entering and existing the Etoys project works smoothly.
> >>> >> >>
> >>> >> >> Load mcz from into current Squeak 6.0a
> >>> >> >>
> >>> >> >> MCHttpRepository
> >>> >> >> location: 'http://www.squeaksource.com/EtoysProject'
> >>> >> >> user: ''
> >>> >> >> password: ''
> >>> >> >>
> >>> >> >> The issue is about providing more settings when entering.
> >>> >> >>
> >>> >> >> Karl, do you want to be added to the list of developers?
> >>> >> >>
> >>> >> >> --HH
> >>> >> >>
> >>> >> >> On 10/5/17, H. Hirzel wrote:
> >>> >> >> > PasteUpMorph is useful and the functions have to be maintained.
> >>> >> >> >
> >>> >> >> > However adding more functions to Morph does not make sense.
> >>> >> >> >
> >>> >> >> > Squeak 6.0a
> >>> >> >> > Morph selectors size 1345
> >>> >> >> > PasteUpMorph selectors size 530
> >>> >> >> >
> >>> >> >> > --Hannes
> >>> >> >> >
> >>> >> >> > On 10/4/17, karl ramberg wrote:
> >>> >> >> >> I'm not sure anybody uses Etoys anymore, but PasteUpMorph is
> >>> >> >> >> very
> >>> >> >> >> useful
> >>> >> >> >> in
> >>> >> >> >> direct manipulation because of it's various layout and event
> >>> >> >> >> handling
> >>> >> >> >> options. It also act as a container of other morphs, with
> >>> >> >> >> automatic
> >>> >> >> >> layout, enumeration etc.
> >>> >> >> >> I'm sure most of this could be refactored into Morph class or
> >>> >> >> >> another
> >>> >> >> >> class.
> >>> >> >> >>
> >>> >> >> >> Best,
> >>> >> >> >> Karl
> >>> >> >> >>
> >>> >> >> >> On Tue, Oct 3, 2017 at 3:03 PM, Marcel Taeumel
> >>> >> >> >>
> >>> >> >> >> wrote:
> >>> >> >> >>
> >>> >> >> >>> +1 :)
> >>> >> >> >>>
> >>> >> >> >>> And then later: Rename PasteUpMorph to WorldMorph, and keep an
> >>> >> >> >>> empty
> >>> >> >> >>> PasteUpMorph subclass around for compatibility reasons. So
> >>> >> >> >>> many
> >>> >> >> >>> ideas
> >>> >> >> >>> have
> >>> >> >> >>> been ported down to Morph class over the past years. New
> >>> >> >> >>> applications
> >>> >> >> >>> have
> >>> >> >> >>> no reason to ever use other instances of PasteUpMorph.
> >>> >> >> >>>
> >>> >> >> >>> Best,
> >>> >> >> >>> Marcel
> >>> >> >> >>>
> >>> >> >> >>> Am 03.10.2017 14:57:55 schrieb H. Hirzel :
> >>> >> >> >>> On 10/3/17, H. Hirzel wrote:
> >>> >> >> >>> > Dave
> >>> >> >> >>> >
> >>> >> >> >>> > your change set contains the class EtoysProject with
> >>> >> >> >>> >
> >>> >> >> >>> > EtoysProject selectors
> >>> >> >> >>> >
> >>> >> >> >>> > #(#finalEnterActions: #restoreGlobalPreferences
> >>> >> >> >>> > #saveGlobalPreferences
> >>> >> >> >>> > #initializeProjectPreferences #configureOnFirstEntry
> >>> >> >> >>> > #finalExitActions:)
> >>> >> >> >>> >
> >>> >> >> >>> > For complete configuration of a EtoysProject it might be
> >>> >> >> >>> > necessary
> >>> >> >> >>> > to
> >>> >> >> >>> > do
> >>> >> >> >>> >
> >>> >> >> >>> > PasteUpMorph subclass: EtoysPasteUpMorph
> >>> >> >> >>> >
> >>> >> >> >>> > as well. http://wiki.squeak.org/squeak/6461
> >>> >> >> >>> >
> >>> >> >> >>> > Then Etoys related methods may be pushed down to
> >>> >> >> >>> > EtoysPasteUpMorph.
> >>> >> >> >>>
> >>> >> >> >>> See screen shot attached.
> >>> >> >> >>>
> >>> >> >> >>> > And probably an Etoys specific subclass of WorldMenu would
> >>> >> >> >>> > be
> >>> >> >> >>> > fine
> >>> >> >> >>> > as
> >>> >> >> >>> well
> >>> >> >> >>> > http://wiki.squeak.org/squeak/6461
> >>> >> >> >>> >
> >>> >> >> >>> >
> >>> >> >> >>> > there is a test project [2] and some more information about
> >>> >> >> >>> > adaptions
> >>> >> >> >>> > needed because of the UI changes in the thread 'Etoys in
> >>> >> >> >>> > 2017?' -
> >>> >> >> >>> > UI
> >>> >> >> >>> > preferences [3]. And it would be good to have Etoys methods
> >>> >> >> >>> > /
> >>> >> >> >>> > configuration separate [4].
> >>> >> >> >>> >
> >>> >> >> >>> > I suggest that you start go ahead and start implementing
> >>> >> >> >>> > this
> >>> >> >> >>> > while
> >>> >> >> >>> > using a test Etoys project dropped onto the desktop.
> >>> >> >> >>> >
> >>> >> >> >>> > --Hannes
> >>> >> >> >>> >
> >>> >> >> >>> >
> >>> >> >> >>> > [2] > You simply drop it in. E.g. download this project
> >>> >> >> >>> >> http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
> >>> >> >> >>> >
> >>> >> >> >>> > [3] Hannes Hirzel, 'Etoys in 2017?' mail, Wed, Feb 22, 2017
> >>> >> >> >>> > at
> >>> >> >> >>> > 11:01
> >>> >> >> >>> > AM
> >>> >> >> >>> >
> >>> >> >> >>> > [4] David T. Lewis, Sep 4, 2016 at 3:34 PM
> >>> >> >> >>> > "I think it would be great if both Etoys and Scratch were
> >>> >> >> >>> > easily
> >>> >> >> >>> > loadable and unloadable in trunk."
> >>> >> >> >>> >
> >>> >> >> >>> > On 10/2/17, David T. Lewis wrote:
> >>> >> >> >>> >> An EtoysProject is a project that is configured for running
> >>> >> >> >>> >> Etoys.
> >>> >> >> >>> >> On
> >>> >> >> >>> >> first entry to a new EtoysProject, the playground and
> >>> >> >> >>> >> project
> >>> >> >> >>> preferences
> >>> >> >> >>> >> are initialized to provide an environment similar to that
> >>> >> >> >>> >> of
> >>> >> >> >>> >> a
> >>> >> >> >>> >> traditional
> >>> >> >> >>> >> standalone Etoys image.
> >>> >> >> >>> >>
> >>> >> >> >>> >> Certain preferences that are required for Etoys are
> >>> >> >> >>> >> initialized
> >>> >> >> >>> >> on
> >>> >> >> >>> >> project
> >>> >> >> >>> >> entry, overriding their global preference values while this
> >>> >> >> >>> EtoysProject
> >>> >> >> >>> >> is active. On leaving the project, these preferences are
> >>> >> >> >>> >> restored
> >>> >> >> >>> >> to
> >>> >> >> >>> >> their
> >>> >> >> >>> >> previous values.
> >>> >> >> >>> >>
> >>> >> >> >>> >> "ProjectViewMorph openOn: EtoysProject new"
> >>> >> >> >>> >>
> >>> >> >> >>> >> Change set attached for a minimal implementation.
> >>> >> >> >>> >>
> >>> >> >> >>> >> Anyone with Etoys knowledge care to help? I do not know
> >>> >> >> >>> >> enough
> >>> >> >> >>> >> about
> >>> >> >> >>> >> Etoys
> >>> >> >> >>> >> to fill in the rest of the initialization that will be
> >>> >> >> >>> >> required,
> >>> >> >> >>> >> but
> >>> >> >> >>> >> it
> >>> >> >> >>> >> should not be hard to do.
> >>> >> >> >>> >>
> >>> >> >> >>> >> Dave
> >>> >> >> >>> >>
> >>> >> >> >>> >>
> >>> >> >> >>> >
> >>> >> >> >>>
> >>> >> >> >>>
> >>> >> >> >>>
> >>> >> >> >>>
> >>> >> >> >>>
> >>> >> >> >>
> >>> >> >> >
> >>> >> >
> >>> >> >
> >>> >> >>
> >>> >> >
> >>> >> >
> >>> >> >
> >>> >>
> >>> >
> >>> >
> >>>
> >>
> >>
> >


>


Reply | Threaded
Open this post in threaded view
|

Re: MorphicProject subclass: #EtoysProject

David T. Lewis
In reply to this post by Bert Freudenberg
On Fri, Oct 06, 2017 at 03:48:56PM +0200, Bert Freudenberg wrote:

> On Fri, Oct 6, 2017 at 2:44 PM, David T. Lewis <[hidden email]> wrote:
>
> >
> > So we might have some kind of rule in project loading that says "if
> > the current project is an EtoysProject, and if I am loading a *.pr for
> > a MorphicProject, then make it an EtoysProject". And perhaps when saving
> > a project, we could reverse the rule and always save a project as
> > MorphicProject, because we know that a loader in EtoysProject will know
> > how to do the right thing with it.
> >
>
> ???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.
>
> ???The logic is mostly in SmartRefStream, in this case, #initKnownRenames.

Oh, that's good, I did not know about the renaming mechanism. Completely off
topic for Etoys, but a similar issue, in UTCDateAndTime I implemented #storeDataOn:
and #readDataFrom:size: in DateAndTime so that the serialized objects are always
in the old format, and converted back to the new class structure when read back.
I do like the idea of projects saved to an "old" serialized format for
compatibility, and making anyone who invents a new format be responsible for
implementing the conversion. This should work with Etoys projects too (I hope).

>
> 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?

>
> I can see now that I misunderstood one important thing. I was assuming that
> > a new EtoysProject would open up with a playfield like the one I see when
> > I first start a normal Etoys image. But I see now this is wrong, an Etoys
> > project should initially have an empty playfield, but perhaps there is a
> > one-time setup that happens the very first time that I enter a new
> > EtoysProject
> > from the world of "normal Squeak". So maybe if I enter a new EtoysProject
> > from a MorphicProject or MVCProject, it will automatically load some
> > initial project that sets up the welcoming playfield with a car driving
> > around, but when I load or create new EtoysProjects from there, the new
> > projects would just start with empty playfields.
> >
> > Am I guessing right?
> >
>
> 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.

It might not turn out to be useful at all, and if so we can throw it away.
But it least it seems to be helping us talk about how to make it work. Or
maybe it's just helping me, but I think I'm starting to understand how
things work :-)

>
> 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.

Dave

>
> 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.
>
> - Bert -???
>

1234