[squeak-dev] The Inbox: Morphic-dtl.1365.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Nov 16 01:21:04 UTC 2017
David T. Lewis uploaded a new version of Morphic to project The Inbox:
http://source.squeak.org/inbox/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 at lists.squeakfoundation.org
From: Bob Arning <arning315 at 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.!
More information about the Squeak-dev
mailing list
|