[squeak-dev] The Trunk: PreferenceBrowser-mt.109.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Jan 4 12:15:57 UTC 2021


Marcel Taeumel uploaded a new version of PreferenceBrowser to project The Trunk:
http://source.squeak.org/trunk/PreferenceBrowser-mt.109.mcz

==================== Summary ====================

Name: PreferenceBrowser-mt.109
Author: mt
Time: 4 January 2021, 1:15:55.86444 pm
UUID: 42f005a2-2686-4bda-8d58-486b6881ae54
Ancestors: PreferenceBrowser-mt.108

Speed up preference wizard open about 10x

=============== Diff against PreferenceBrowser-mt.108 ===============

Item was changed:
  ----- Method: PreferenceWizardMorph>>initialize (in category 'initialization') -----
  initialize
  
  	super initialize.
  	
  	isFullScreen := false.
  
  	self hasLowPerformance
  		ifTrue: [self color: self defaultColor]
  		ifFalse: [self color: (self defaultColor alpha: 0.75)].
  		
  	self setProperty: #indicateKeyboardFocus toValue: #never.
  	
- 	Preferences enable: #systemWindowEmbedOK.
- 	
- 	titleMorph := ('Welcome to Squeak' translated asText
- 		addAttribute: (TextColor color: self defaultTextColor);
- 		addAttribute: (TextFontReference toFont: (StrikeFont familyName: 'Darkmap DejaVu Sans' pointSize: 20));
- 		yourself) asMorph lock.
- 	titleMorph margins: (10 at 0 corner: 10 at 10).
- 	titleMorph layoutFrame: (LayoutFrame fractions: (0 @ 0 corner: 1 @ 0) offsets: (0@ 0 corner: 0 @ titleMorph height)).
- 	
  	self
- 		initializePages;
- 		initializeButtons;
- 		initializeControlMorph;
- 		initializePreviewWorld;
- 		initializeForLowPerformance.
- 
- 	self
  		changeProportionalLayout;
  		layoutInset: 20;
  		cellGap: 10;
+ 		cellPositioning: #center.
+ 				
- 		cellPositioning: #center;
- 		addAllMorphs: {titleMorph. buttonRowMorph. controlMorph. previewWorld. startButton. skipButton. lowPerformanceMorph}.
- 		
  	self addKeyboardCaptureFilter: self.!

Item was changed:
+ ----- Method: PreferenceWizardMorph>>initializeButtons (in category 'initialization - playfield') -----
- ----- Method: PreferenceWizardMorph>>initializeButtons (in category 'initialization') -----
  initializeButtons
  
  	buttonRowMorph := Morph new
  		color: Color transparent;
  		changeTableLayout;
  		listDirection: #leftToRight;
  		cellGap: 10;
  		layoutInset: (0 at 20 corner: 0 at 0);
  		vResizing: #shrinkWrap;
  		hResizing: #spaceFill;
  		yourself.
  		
  	buttonRowMorph addAllMorphs: {
  		previousButton := self createButton action: #previous; label: 'Previous' translated.
  		pagesLabel := (self createLabel: '0 / 0') hResizing: #shrinkWrap; margins: (20 at 0 corner: 20 at 0); fullBounds; yourself.
  		nextButton := self createButton action: #next; label: 'Next' translated.
  		self createHorizontalSpacer.
  		self createButton action: #accept; label: 'Done' translated}.
  	
- 	
  	buttonRowMorph fullBounds.
+ 	buttonRowMorph layoutFrame: (LayoutFrame fractions: (0 @ 1 corner: 1 @ 1) offsets: (0@ buttonRowMorph height negated corner: 0 @ 0)).!
- 	buttonRowMorph layoutFrame: (LayoutFrame fractions: (0 @ 1 corner: 1 @ 1) offsets: (0@ buttonRowMorph height negated corner: 0 @ 0)).
- 	
- 	
- 	
- 	startButton := (self createButton action: #showPlayfield; label: 'Configure' translated).
- 	skipButton := (self createButton action: #showSqueak; label: 'Skip' translated).
- 	
- 	(startButton width max: skipButton width) in: [:w |
- 		startButton hResizing: #rigid; width: w.
- 		skipButton hResizing: #rigid; width: w.
- 		
- 		startButton layoutFrame: (LayoutFrame fractions: (0.5 @ 0.6 corner: 0.5 @ 0.6) offsets: (2*w negated @ 0 corner: 0 @ 0)).
- 		skipButton layoutFrame: (LayoutFrame fractions: (0.5 @ 0.6 corner: 0.5 @ 0.6) offsets: (0@ 0 corner: 2*w @ 0))].!

Item was changed:
+ ----- Method: PreferenceWizardMorph>>initializeControlMorph (in category 'initialization - playfield') -----
- ----- Method: PreferenceWizardMorph>>initializeControlMorph (in category 'initialization') -----
  initializeControlMorph
  
  	controlMorph := Morph new
  		color: Color transparent;
  		changeTableLayout;
  		listDirection: #topToBottom;
  		hResizing: #spaceFill;
  		vResizing: #spaceFill;
  		layoutInset: (0 at 0 corner: 10 at 0);
  		layoutFrame: (LayoutFrame fractions: (0.0 @ 0 corner: 0.3 @ 1.0) offsets: (0@ titleMorph height corner: 0 @ buttonRowMorph height negated));
  		yourself.
  	
  	controlMorph addMorph: (self createLabel: 'Please take a few minutes and configure the look-and-feel of the environment. You can always adjust these settings later. You can see the effects of these settings in the live and editable windows to the right.' translated).!

Item was removed:
- ----- Method: PreferenceWizardMorph>>initializeForLowPerformance (in category 'initialization') -----
- initializeForLowPerformance
- 	
- 	lowPerformanceMorph := TextMorph new lock.!

Item was changed:
+ ----- Method: PreferenceWizardMorph>>initializePages (in category 'initialization - playfield') -----
- ----- Method: PreferenceWizardMorph>>initializePages (in category 'initialization') -----
  initializePages
  
  	pages := OrderedCollection new.
  	currentPageIndex := 0.
  
  	self
  		initializePage01Themes;
  		initializePage02Visuals;
  		initializePage02bVisualsMore;
  		initializePage03Interaction;
  		initializePage04InteractionMore;
  		initializePage05Tools.!

Item was added:
+ ----- Method: PreferenceWizardMorph>>initializePlayfield (in category 'initialization') -----
+ initializePlayfield
+ 
+ 	self
+ 		initializePages;
+ 		initializeButtons;
+ 		initializeControlMorph;
+ 		initializePreviewWorld.
+ 		
+ 	self
+ 		addAllMorphs: {titleMorph. buttonRowMorph. controlMorph. previewWorld. startButton. skipButton. lowPerformanceMorph}.!

Item was changed:
+ ----- Method: PreferenceWizardMorph>>initializePreviewWorld (in category 'initialization - playfield') -----
- ----- Method: PreferenceWizardMorph>>initializePreviewWorld (in category 'initialization') -----
  initializePreviewWorld
  
  	| w1 w2 w3 |
+ 	Preferences enable: #systemWindowEmbedOK.
  
  	previewWorld := PasteUpMorph new
  		hResizing: #spaceFill;
  		vResizing: #spaceFill;
  		viewBox: (0 at 0 corner: 500 at 500);
  		layoutFrame: (LayoutFrame fractions: (0.3 @ 0 corner: 1.0 @ 1.0) offsets: (0@ titleMorph height corner: 0 @ buttonRowMorph height negated));
  		fillStyle: Project current world fillStyle;
  		borderWidth: 2;
  		borderColor: Color white;
  		cornerStyle: (self hasLowPerformance ifTrue: [#square] ifFalse: [#rounded]);
  		yourself.
  	
  	w1 := (ToolSet browse: Morph selector: #drawOn:) dependents detect: [:ea | ea isSystemWindow].
  	w2 := ToolSet browseMessageSet: (SystemNavigation default allCallsOn: #negated) name: 'Senders' translated autoSelect: 'negated'.
  	w3 := (Workspace new contents: '3+4 "Select and hit [CMD]+[P]."') openLabel: 'Workspace'.
  	
  	{w1. w2. w3} do: [:ea | 
  		ea makeUnclosable.
  		previewWorld addMorph: ea].
  	
  	self updateWindowBounds.!

Item was added:
+ ----- Method: PreferenceWizardMorph>>initializeWelcome (in category 'initialization') -----
+ initializeWelcome
+ 
+ 	titleMorph := ('Welcome to Squeak' translated asText
+ 		addAttribute: (TextColor color: self defaultTextColor);
+ 		addAttribute: (TextFontReference toFont: (StrikeFont familyName: 'Darkmap DejaVu Sans' pointSize: 20));
+ 		yourself) asMorph lock.
+ 	titleMorph margins: (10 at 0 corner: 10 at 10).
+ 	titleMorph layoutFrame: (LayoutFrame fractions: (0 @ 0 corner: 1 @ 0) offsets: (0@ 0 corner: 0 @ titleMorph height)).
+ 
+ 	startButton := (self createButton action: #showPlayfield; label: 'Configure' translated).
+ 	skipButton := (self createButton action: #showSqueak; label: 'Skip' translated).
+ 	
+ 	(startButton width max: skipButton width) in: [:w |
+ 		startButton hResizing: #rigid; width: w.
+ 		skipButton hResizing: #rigid; width: w.
+ 		
+ 		startButton layoutFrame: (LayoutFrame fractions: (0.5 @ 0.6 corner: 0.5 @ 0.6) offsets: (2*w negated @ 0 corner: 0 @ 0)).
+ 		skipButton layoutFrame: (LayoutFrame fractions: (0.5 @ 0.6 corner: 0.5 @ 0.6) offsets: (0@ 0 corner: 2*w @ 0))].
+ 	
+ 	lowPerformanceMorph := TextMorph new lock.
+ 	
+ 	self addAllMorphs: {titleMorph. startButton. skipButton. lowPerformanceMorph}.!

Item was changed:
  ----- Method: PreferenceWizardMorph>>isInPlayfield (in category 'testing') -----
  isInPlayfield
  
+ 	^ previewWorld notNil and: [previewWorld visible]!
- 	^ previewWorld visible!

Item was changed:
  ----- Method: PreferenceWizardMorph>>showPlayfield (in category 'actions') -----
  showPlayfield
  
+ 	previewWorld ifNil: [self initializePlayfield].
+ 
  	startButton hide.
  	skipButton hide.
  	lowPerformanceMorph hide.
  	isFullScreen := true.
  	self step.
  	
  	titleMorph layoutFrame: (LayoutFrame fractions: (0 @ 0 corner: 1 @ 0) offsets: (0@ 0 corner: 0 @ titleMorph height)).
  	
  	self refreshWorld.
  	500 milliSeconds wait.
  
  	controlMorph show.
  	previewWorld show.
  	buttonRowMorph show.
  
  	self next.
  	self refreshWorld.
  	
  	!

Item was changed:
  ----- Method: PreferenceWizardMorph>>showWelcome (in category 'actions') -----
  showWelcome
  
+ 	self isInPlayfield ifTrue: [^ self "Not possible to go back due to fast-init strategy."].
+ 	titleMorph ifNil: [self initializeWelcome].
+ 
  	titleMorph layoutFrame: (LayoutFrame fractions: (0 @ 0 corner: 1 @ 0.65) offsets: (0 @0 corner: 0 at 0)).
  	isFullScreen := false.
  	self height: titleMorph fullBounds height * 4.
  		
- 	controlMorph hide.
- 	previewWorld hide.
- 	buttonRowMorph hide.
- 	
- 	titleMorph show.
- 	startButton show.
- 	skipButton show.
  	self hasLowPerformance
  		ifFalse: [lowPerformanceMorph hide]
  		ifTrue: [lowPerformanceMorph show].
  
  	self hasLowPerformance
  		ifTrue: [Cursor wait showWhile: [self adjustSettingsForLowPerformance]].
  
  	self refreshWorld.
  	!

Item was changed:
  ----- Method: PreferenceWizardMorph>>updateWindowBounds (in category 'layout') -----
  updateWindowBounds
  
  	| windows offset margin extentToUse pointsToUse |
  	isFullScreen == false ifTrue: [^ self].
+ 	previewWorld ifNil: [^ self].
  	
  	self fullBounds.
  
  	margin := 20 at 20.
  	extentToUse := (previewWorld extent - (margin * 2)) // 3 * (1.8 @ 1.5).
  	pointsToUse := {
  		previewWorld center - (previewWorld extent // (5.5 @ 4.5)).
  		previewWorld center + (previewWorld width // 5.5 @ 0).
  		previewWorld center + (0 @ (previewWorld width // 5))}.
  
  	windows := previewWorld submorphs.
  	offset := 50 at 50.
  	
  	windows reversed withIndexDo: [:ea :i |
  		ea
  			extent: extentToUse;
  			center: (pointsToUse atWrap: i).
  		offset := offset + (50 at 50)].!



More information about the Squeak-dev mailing list