[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