more morphic questions...

Dan Ingalls Dan.Ingalls at disney.com
Sun Oct 24 06:53:30 UTC 1999


David Farber <dfarber at numenor.com> wrote...
>
>1) why does
>
>  (PasteUpMorph newWorldForProject: nil) openWithTitle: 'NewWorld'
>
>work in MVC (it brings up a new morpic world in a window) but does not work
>if i am already in a morphic world?

Because we have not made it work yet.  This is an active SC project.

>2) if i have a morphic world open in MVC and i pick something up with the
>cursor (or hand) what happens that causes my cursor to be confined to the
>morph-land? (eg, open Play With Me - 2 and try to drag any of the morphs
>out of the Play With Me - 2 window)

In morphic, the cursor is more than just a cursor -- it is a Hand, and it may in turn be carrying other morphs.  There is no mechanism in MVC to extend this behavior outside the morphic window.  However this could be supported with the morphic window in a morphic world that you ask about in (1).

>3) what is the difference (in morphic) between a World, a project, and a
>PasteUpMorph?

A PasteUpMorph is what is generally used as a backdrop on which to lay out a bunch or morphs.  They provide a number of "module"-like properties -- if you rotate or scale them it applies to all their submorphs, they handle drag and drop nicely, cmd-drag is limited at their boundaries, they can record pen trails, etc, etc.  They can be maid down anywhere in an existing world, they can be pages of a book, and they can be opened as a world themselves.

A World is simply a pasteUpMorph that is "active" in the sense that a morphic world is active -- it is receiving an update pulse (doOneCycle), its steppable submorphs are being stepped at that time, their display damage is being recorded, and their display canvas is being repainted correspondingly.  The state for managing this activity resides in the ancillary worldState object, though the associated code has not yet all been migrated appropriately.

A Project holds the further state associated with a morphic world (or an MVC world) being embedded in Squeak:
	world -- the world
	changeSet -- the changeSet to capture code changes when in that project
	transcript -- the transcript on which to register Transcript messages
	parentProject -- project navigation structure
	previousProject -- ditto
	nextProject -- ditto
	displayDepth -- color depth to use for this project
	activeProcess -- a path to the activeProject when this project is active
	exitFlag -- causes an exit if set
	guards -- associated with entry/exit
	viewSize
	thumbnail -- allows shared thumbnail views for iconic project links
	projectParameters -- more state, some experimental
	inForce -- true when this project is active
	isolatedHead -- state associated with the "isolated projects" experiment
	classArray -- ditto
	methodDictArrayy -- ditto
	orgArray y -- ditto

Great questions, David!  Hope this helps.

We're currently working to make Morphic World windows work in Morphic, and also to merge the isolated projects experiment with the nascent NameSpace/Package project.

	- Dan





More information about the Squeak-dev mailing list