[squeak-dev] MorphicProject subclass: #EtoysProject

H. Hirzel hannes.hirzel at gmail.com
Thu Oct 5 20:44:15 UTC 2017


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 <hannes.hirzel at gmail.com> 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 <hannes.hirzel at gmail.com> 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 <hannes.hirzel at gmail.com> 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 <hannes.hirzel at gmail.com> 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 <hannes.hirzel at gmail.com> 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 <hannes.hirzel at gmail.com> 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 <marcel.taeumel at hpi.de> wrote:
>>>>>>> Done. :)
>>>>>>>
>>>>>>> Best,
>>>>>>> Marcel
>>>>>>> Am 05.10.2017 06:21:44 schrieb David T. Lewis <lewis at mail.msen.com>:
>>>>>>> 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
>>>>>>>> >> >> >>> >>
>>>>>>>> >> >> >>> >>
>>>>>>>> >> >> >>> >
>>>>>>>> >> >> >>>
>>>>>>>> >> >> >>>
>>>>>>>> >> >> >>>
>>>>>>>> >> >> >>>
>>>>>>>> >> >> >>>
>>>>>>>> >> >> >>
>>>>>>>> >> >> >
>>>>>>>> >> >
>>>>>>>> >> >
>>>>>>>> >> >>
>>>>>>>> >> >
>>>>>>>> >> >
>>>>>>>> >> >
>>>>>>>> >>
>>>>>>>> >
>>>>>>>> >
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>


More information about the Squeak-dev mailing list