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
|