The Inbox: Morphic-dtl.1365.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Inbox: Morphic-dtl.1365.mcz

commits-2
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: [hidden email]
From: Bob Arning <[hidden email]>
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.!