[squeak-dev] The Trunk: Morphic-mt.1904.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Feb 21 15:27:57 UTC 2022


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

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

Name: Morphic-mt.1904
Author: mt
Time: 21 February 2022, 4:27:51.232875 pm
UUID: 46a193b0-46ff-b04b-9114-ed54b892efa8
Ancestors: Morphic-mt.1903

Improves FontChooserTool to support not-yet-installed fonts.

In change-style dialog (in text fields) do not show aliased styles such as our current ComicSansMS. And whenever a TextMorph gets a new text style, it must want to be redrawn, not just releasing its paragraph and hoping for somebody else to tell the environment. :-)

=============== Diff against Morphic-mt.1903 ===============

Item was changed:
  ----- Method: FontChooserTool>>fontList (in category 'font list') -----
  fontList
  	"List of available font family names. Avoid StrikeFonts if PPI is not 96.0."
  	
  	fontList ifNotNil: [^ fontList].
  		
  	fontList := TextStyle knownTextStylesWithoutDefault.
+ 	self getFontFromRequestor ifNotNil: [:font |
+ 		(fontList includes: font familyName) ifFalse: [
+ 			fontList := (fontList, {font familyName}) sorted]].
  	TextStyle pixelsPerInch = 96.0 ifFalse: [
  		fontList := fontList select: [:styleName | (TextStyle named: styleName) isTTCStyle]].
  	^ fontList!

Item was changed:
  ----- Method: FontChooserTool>>fontListIconAt: (in category 'font list') -----
  fontListIconAt: index
  
+ 	^ ToolIcons iconNamed: ( ((TextStyle named: (self fontList at: index))
+ 		ifNil: [self getFontFromRequestor ifNotNil: [:font | TextStyle fontArray: {font} "Not yet installed" ]])
+ 			ifNil: [#blank16]
+ 			ifNotNil: [:style | style isTTCStyle ifTrue: [#font] ifFalse: [#blank16]] )!
- 	^ ToolIcons iconNamed: ((TextStyle named: (self fontList at: index))
- 		ifNil: [#blank16]
- 		ifNotNil: [:style | style isTTCStyle ifTrue: [#font] ifFalse: [#blank16]])!

Item was added:
+ ----- Method: FontChooserTool>>getFontFromRequestor (in category 'updating') -----
+ getFontFromRequestor
+ 
+ 	^ (getSelector isSymbol and:[target notNil])
+ 		ifTrue:[target perform: getSelector]
+ 		ifFalse:[getSelector]!

Item was changed:
  ----- Method: FontChooserTool>>getSelector: (in category 'accessing') -----
  getSelector: aSelectorSymbolOrFont
  	"Set the value of getSelector"
  
+ 	getSelector := aSelectorSymbolOrFont.
+ 	self updateFromRequestor.!
- 	getSelector := aSelectorSymbolOrFont!

Item was changed:
  ----- Method: FontChooserTool>>pointSize: (in category 'point size') -----
  pointSize: aNumber
  
  	pointSize := aNumber.
  
  	self changed: #selectedFontTextStyle.
  	self changed: #contents.
  	
  	self changed: #pointSizeList.
+ 	self changed: #selectedPointSizeIndex.
+ 	self changed: #pointSizeInput.!
- 	self changed: #selectedPointSizeIndex.!

Item was changed:
  ----- Method: FontChooserTool>>selectedFont (in category 'font list') -----
  selectedFont
  	"Generate missing pointSIze only if TrueType font."
  
+ 	| style |
+ 	^ (style := self selectedTextStyle) isTTCStyle
+ 		ifTrue: [ style fontArray size = 1 "Font not yet installed..."
+ 			ifTrue: [style defaultFont]
+ 			ifFalse: [TTCFont familyName: self selectedFontFamily pointSize: pointSize emphasized: emphasis]]
- 	^ self selectedTextStyle isTTCStyle
- 		ifTrue: [TTCFont familyName: self selectedFontFamily pointSize: pointSize emphasized: emphasis]
  		ifFalse: [
  			| font |
+ 			font := (style fontOfPointSize: pointSize) emphasized: emphasis.
+ 			pointSize := font pointSize. "Can be different for StrikeFont."
- 			font := (self selectedTextStyle fontOfPointSize: pointSize) emphasized: emphasis.
- 			pointSize := font pointSize. "Can be different."
  			self changed: #selectedPointSizeIndex.
  			font]!

Item was changed:
  ----- Method: FontChooserTool>>selectedFontIndex (in category 'font list') -----
  selectedFontIndex
+ 
+ 	^ selectedFontIndex ifNil: [0]!
- 	| font textStyleName family |
- 	selectedFontIndex ifNotNil: [^selectedFontIndex].
- 	selectedFontIndex := 0.
- 	font := (getSelector isSymbol and:[target notNil])
- 		ifTrue:[target perform: getSelector]
- 		ifFalse:[getSelector].
- 	font ifNotNil:[
- 		emphasis := font emphasis.
- 		pointSize := font pointSize.
- 		textStyleName := font textStyleName.
- 		family := self fontList detect:[:f | f = textStyleName] ifNone:[].
- 	].
- 	selectedFontIndex := self fontList indexOf: family.
- 	self selectedFontIndex: selectedFontIndex.
- 	^selectedFontIndex!

Item was changed:
  ----- Method: FontChooserTool>>selectedPointSizeIndex (in category 'point size') -----
  selectedPointSizeIndex
+ 	
+ 	^ pointSize
+ 		ifNil: [0]
+ 		ifNotNil: [self pointSizeList indexOf: (pointSize printShowingDecimalPlaces: 1)]!
- 	^self pointSizeList indexOf: (pointSize printShowingDecimalPlaces: 1), '   '!

Item was changed:
  ----- Method: FontChooserTool>>selectedTextStyle (in category 'font list') -----
  selectedTextStyle
  
+ 	^ (TextStyle named: self selectedFontFamily)
+ 		ifNil: [ self getFontFromRequestor
+ 			ifNil: [ TextStyle default ]
+ 			ifNotNil: [:font | TextStyle fontArray: {font} "Not yet installed" ]].!
- 	^TextStyle named: (self selectedFontFamily ifNil:[^TextStyle default]).!

Item was added:
+ ----- Method: FontChooserTool>>updateFromRequestor (in category 'updating') -----
+ updateFromRequestor
+ 
+ 
+ 	self getFontFromRequestor ifNotNil: [ :font |
+ 		| textStyleName |
+ 		textStyleName := font textStyleName.
+ 		self fontList
+ 			detect: [:f | f = textStyleName]
+ 			ifFound: [:family | self selectedFontIndex: (self fontList indexOf: family)].
+ 		self selectedFontStyleIndex: font emphasis + 1.
+ 		self pointSize: font pointSize].!

Item was changed:
  ----- Method: TextEditor>>changeStyle (in category 'attributes') -----
  changeStyle
  	"Let user change styles for the current text pane."
  
  	| known knownTTCStyles knownLegacyStyles defaultStyles
  	newStyle current currentName menuList |
  	current := morph textStyle.
  	currentName := current defaultFamilyName.
  	
+ 	knownTTCStyles := ((TextStyle actualTextStyles
+ 		select: [:ea | ea isTTCStyle
+ 			"No aliased text styles here..."
+ 			and: [(TextStyle named: ea defaultFamilyName) == ea]])
- 	knownTTCStyles := ((TextStyle actualTextStyles select: [:ea | ea isTTCStyle])
  		sorted: [:a :b | a defaultFamilyName <= b defaultFamilyName])
  		collect: [:ea | ea defaultFamilyName -> ea] as: OrderedDictionary.
  	knownLegacyStyles := ((TextStyle actualTextStyles reject: [:ea | ea isTTCStyle])
  		sorted: [:a :b | a defaultFamilyName <= b defaultFamilyName])
  		collect: [:ea | ea defaultFamilyName -> ea] as: OrderedDictionary.
  	defaultStyles := ((TextStyle defaultFamilyNames
  		collect: [:ea | ea -> (TextStyle named: ea)] as: OrderedDictionary)
  		reject: [:ea | ea isNil "undefined default styles"])
  		sorted: [:a :b | a key <= b key].
  	
  	known := defaultStyles, {'---' -> nil}, knownTTCStyles, {'--- ' -> nil}, knownLegacyStyles.
  	menuList := Array streamContents: [:s |
  		known keysAndValuesDo: [ :knownName :knownStyle |
  			s nextPut: (((knownStyle notNil and: [knownStyle defaultFamilyName = currentName])
  				ifTrue: [ (' > ', knownName, ' (current)' translated) asText ]
  				ifFalse: [ knownName asText ]) addAttribute: (TextFontReference toFont: (knownStyle ifNil: [TextStyle default])defaultFont); yourself)]].
  	known := known values.
  	newStyle := Project uiManager chooseFrom: menuList values: known.
  	newStyle ifNotNil: [morph textStyle: newStyle copy].
  	^ true!

Item was changed:
  ----- Method: TextMorph>>textStyle: (in category 'accessing') -----
  textStyle: aTextStyle
  	"Change the receiver's set of fonts to aTextStyle. You can access those fonts via the TextFontChange text attribute. If you want to enfore a specific font face or point size, use #font: instead. NOTE THAT you must provide either a freshly created instance of TextStyle or a copy of an existing one. NEVER use, for example, TextStyle class >> #default directly. Also see senders and implementors of #asNewTextStyle."
  
  	textStyle := aTextStyle.
+ 	self releaseParagraph; changed.!
- 	self releaseParagraph.!



More information about the Squeak-dev mailing list