David T. Lewis uploaded a new version of Morphic to project The Trunk: http://source.squeak.org/trunk/Morphic-dtl.1365.mcz
==================== Summary ====================
Name: Morphic-dtl.1365 Author: dtl Time: 15 November 2017, 8:20:53.783219 pm UUID: ffd8c20a-fb70-44c5-93c5-cad0f8dcda3d Ancestors: Morphic-dtl.1364
Initial rehabilitation of worlds in worlds. Changes are in Morphic and System packages.
To: squeak-dev@lists.squeakfoundation.org From: Bob Arning arning315@comcast.net Date: Tue, 14 Nov 2017 08:14:07 -0500 Subject: Re: [squeak-dev] ActiveWorld and World globals
Here is a start (squeak 5.1). Not extensively tested, but a FileList in a world in the World was operational.
'From Squeak5.1 of 23 August 2016 [latest update: #16548] on 14 November 2017 at 8:11:28 am'! "Change Set: fixProjectView Date: 14 November 2017 Author: Bob Arning
squeak 5.1...
reinstate 'ENTER ACTIVE' option in menu for ProjectViewMorph "!
=============== Diff against Morphic-dtl.1364 ===============
Item was added: + ----- Method: PasteUpMorph>>installAsActiveSubprojectIn:at:titled: (in category 'WiW support') ----- + installAsActiveSubprojectIn: enclosingWorld at: newBounds titled: aString + | window howToOpen tm boundsForWorld | + howToOpen := self embeddedProjectDisplayMode. + "#scaled may be the only one that works at the moment" + submorphs do: [:ss | ss owner isNil ifTrue: [ss privateOwner: self]]. + "Transcript that was in outPointers and then got deleted." + boundsForWorld := howToOpen == #naked ifTrue: [newBounds] ifFalse: [bounds]. + worldState canvas: nil. + worldState viewBox: boundsForWorld. + self bounds: boundsForWorld. + + "self viewBox: Display boundingBox." + "worldState handsDo: [:h | h initForEvents]." + self installFlaps. + + "SystemWindow noteTopWindowIn: self." + "self displayWorldSafely." + howToOpen == #naked ifTrue: [enclosingWorld addMorphFront: self]. + howToOpen == #window + ifTrue: + [window := (SystemWindow labelled: aString) model: self. + window addMorph: self frame: (0 @ 0 extent: 1.0 @ 1.0). + window openInWorld: enclosingWorld]. + howToOpen == #frame + ifTrue: + [window := (AlignmentMorphBob1 new) + minWidth: 100; + minHeight: 100; + borderWidth: 8; + borderColor: Color green; + bounds: newBounds. + window addMorph: self. + window openInWorld: enclosingWorld]. + howToOpen == #scaled + ifTrue: + [self position: 0 @ 0. + window := (EmbeddedWorldBorderMorph new) + minWidth: 100; + minHeight: 100; + borderWidth: 8; + borderColor: Color green; + bounds: newBounds. + tm := BOBTransformationMorph new. + window addMorph: tm. + tm addMorph: self. + window openInWorld: enclosingWorld. + tm changeWorldBoundsToShow: bounds. + self arrangeToStartSteppingIn: enclosingWorld + "tm scale: (tm width / self width min: tm height / self height) asFloat."]!
Item was added: + ----- Method: PasteUpMorph>>installAsActiveSubprojectIn:titled: (in category 'WiW support') ----- + installAsActiveSubprojectIn: enclosingWorld titled: aString + + | opt newWidth | + + opt := self optimumExtentFromAuthor. + (opt x > (enclosingWorld width * 0.7) or: + [opt y > (enclosingWorld height * 0.7)]) ifTrue: [ + newWidth := enclosingWorld width // 2. + opt := newWidth @ (opt y * newWidth / opt x) truncated + ]. + ^self + installAsActiveSubprojectIn: enclosingWorld + at: (enclosingWorld topLeft + (enclosingWorld extent - opt // 2) extent: opt) + titled: aString!
Item was added: + ----- Method: ProjectViewMorph>>enterAsActiveSubproject (in category 'events') ----- + enterAsActiveSubproject + "Enter my project." + + project class == DiskProxy + ifTrue: + ["When target is not in yet" + + [self enterWhenNotPresent "will bring it in"] on: ProjectEntryNotification + do: [:ex | ^ex projectToEnter enterAsActiveSubprojectWithin: self world]. + project class == DiskProxy ifTrue: [self error: 'Could not find view']]. + (owner isSystemWindow) ifTrue: [project setViewSize: self extent]. + self showMouseState: 3. + project enterAsActiveSubprojectWithin: self world!
Item was changed: ----- Method: ProjectViewMorph>>showMenuForProjectView (in category 'events') ----- showMenuForProjectView | menu | (menu := MenuMorph new) add: 'enter this project' translated action: [^ self enter]; + + add: 'ENTER ACTIVE' translated + action: [self setProperty: #wasOpenedAsSubproject toValue: true. + ^ self enterAsActiveSubproject]; add: 'PUBLISH (also saves a local copy)' translated action: [^ project storeOnServerShowProgressOn: self forgetURL: false]; add: 'PUBLISH to a different server' translated action: [project forgetExistingURL. ^ project storeOnServerShowProgressOn: self forgetURL: true]; add: 'see if server version is more recent' translated action: [^ self checkForNewerVersionAndLoad];
addLine; add: 'expunge this project' translated action: [^ self expungeProject].
menu title: ('Project Named "{1}"' translated withCRs format: {project name}). menu invokeModal.!
packages@lists.squeakfoundation.org