[squeak-dev] The Trunk: Morphic-mt.951.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Apr 30 09:23:17 UTC 2015
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.951.mcz
==================== Summary ====================
Name: Morphic-mt.951
Author: mt
Time: 30 April 2015, 11:22:31.617 am
UUID: cd0add46-eb53-a74e-87aa-c6824f6f2512
Ancestors: Morphic-mt.950
Some layout issues fixed in Font importer tool. Code clean-up, too.
=============== Diff against Morphic-mt.950 ===============
Item was changed:
+ Model subclass: #FontImporterTool
+ instanceVariableNames: 'title allFonts emphasis currentSelection currentParent warningSeen'
- StringHolder subclass: #FontImporterTool
- instanceVariableNames: 'title allFonts emphasis window currentSelection currentParent warningSeen'
classVariableNames: ''
poolDictionaries: ''
category: 'Morphic-Support'!
!FontImporterTool commentStamp: 'topa 3/9/2015 18:56' prior: 0!
A tool to import platform (native) fonts into the image!
Item was removed:
- ----- Method: FontImporterTool class>>default (in category 'accessing') -----
- default
- "Answer the default font imporer tool, ie me
- (polymorphic with font chooser)
- "
- ^ self!
Item was removed:
- ----- Method: FontImporterTool class>>openWithWindowTitle:for:setSelector:getSelector: (in category 'opening') -----
- openWithWindowTitle: titleString for: anObject setSelector: setSelector getSelector: getSelector
- "
- FontChooserTool
- openWithWindowTitle: 'Choose the Menu Font'
- for: Preferences
- setSelector: #setMenuFontTo:
- getSelector: #standardMenuFont.
- "
- ^(self withTitle: titleString for: anObject setSelector: setSelector getSelector: getSelector) open!
Item was removed:
- ----- Method: FontImporterTool class>>windowTitle:for:setSelector:getSelector: (in category 'opening') -----
- windowTitle: titleString for: anObject setSelector: setSelector getSelector: getSelector
- | instance |
-
- instance := self new.
- instance
- title: titleString;
- target: anObject;
- setSelector: setSelector;
- getSelector: getSelector.
- ^instance open!
Item was removed:
- ----- Method: FontImporterTool class>>withTitle:for:setSelector:getSelector: (in category 'opening') -----
- withTitle: titleString for: anObject setSelector: setSelector getSelector: getSelector
- "
- (FontChooserTool
- withTitle: 'Choose the Menu Font'
- for: Preferences
- setSelector: #setMenuFontTo:
- getSelector: #standardMenuFont) open.
- "
- | instance |
- instance := self new.
- instance
- title: titleString;
- target: anObject;
- setSelector: setSelector;
- getSelector: getSelector.
- ^instance!
Item was changed:
----- Method: FontImporterTool>>buildButtonBarWith: (in category 'toolbuilder') -----
buildButtonBarWith: builder
"Build the button bar"
| panelSpec buttonSpec |
panelSpec := builder pluggablePanelSpec new.
+ panelSpec
+ layout: #horizontal;
+ children: OrderedCollection new.
- panelSpec children: OrderedCollection new.
buttonSpec := builder pluggableButtonSpec new
model: self;
+ label: 'Import' translated;
- label: ' Import ' translated;
help: 'Include the font data in the image and provide a TextStyle for the font';
action: #import;
- frame: (0 at 0 corner: 0.5 at 1);
yourself.
panelSpec children addLast: buttonSpec.
buttonSpec := builder pluggableButtonSpec new
model: self;
+ label: 'Close' translated;
- label: ' Close ' translated;
action: #close;
- frame: (0.5 at 0 corner: 1 at 1);
yourself.
panelSpec children addLast: buttonSpec.
^panelSpec!
Item was changed:
----- Method: FontImporterTool>>buildPreviewPaneWith: (in category 'toolbuilder') -----
buildPreviewPaneWith: builder
"Build the preview panel"
^ builder pluggablePanelSpec new
+ wantsResizeHandles: true;
children: {
builder pluggableInputFieldSpec new
model: self;
getText: #filename;
readOnly: true;
indicateUnacceptedChanges: false;
font: self filenameFont;
frame: (LayoutFrame
fractions: (0 at 0 corner: 1 at 0)
offsets: (0 at 0 corner: 0@ self filenameHeight));
yourself.
+ builder pluggableTextSpec new
+ model: self;
+ getText: #previewText;
- (self buildCodePaneWith: builder)
- name: #preview;
askBeforeDiscardingEdits: false;
indicateUnacceptedChanges: false;
+ softLineWrap: false;
frame: (LayoutFrame
fractions: (0 at 0 corner: 1 at 0.75)
offsets: (0@ self filenameHeight corner: 0 at 0));
yourself.
builder pluggableTextSpec new
model: self;
getText: #copyright;
readOnly: true;
indicateUnacceptedChanges: false;
frame: (LayoutFrame
fractions: (0 at 0.75 corner: 1 at 1));
yourself
};
yourself!
Item was added:
+ ----- Method: FontImporterTool>>buildWindowWith:specs: (in category 'toolbuilder') -----
+ buildWindowWith: builder specs: specs
+ | windowSpec |
+ windowSpec := builder pluggableWindowSpec new.
+ windowSpec
+ model: self;
+ label:'Choose a Font to import' translated;
+ extent: self initialExtent;
+ children: OrderedCollection new.
+
+ specs do:[:assoc|
+ | rect action widgetSpec |
+ rect := assoc key.
+ action := assoc value.
+ widgetSpec := action value.
+ widgetSpec ifNotNil:[
+ widgetSpec frame: rect.
+ windowSpec children add: widgetSpec]].
+ ^windowSpec!
Item was changed:
----- Method: FontImporterTool>>buildWith: (in category 'toolbuilder') -----
buildWith: builder
"Create the ui for the browser"
"ToolBuilder open: self"
+
| windowSpec |
windowSpec := self buildWindowWith: builder specs: {
(self fontListFrame) -> [self buildFontListWith: builder].
(self previewFrame) -> [self buildPreviewPaneWith: builder].
(self buttonsFrame) -> [self buildButtonBarWith: builder].
}.
+ ^ builder build: windowSpec!
- windowSpec extent: self initialExtent.
- window := builder build: windowSpec.
- "Yes, that's a hack. But it looks ugly with line breaks."
- (builder widgetAt: #preview) textMorph wrapFlag: false.
- ^window!
Item was changed:
+ ----- Method: FontImporterTool>>buttonHeight (in category 'layout') -----
- ----- Method: FontImporterTool>>buttonHeight (in category 'toolbuilder') -----
buttonHeight
^ Preferences standardButtonFont height * 3!
Item was changed:
+ ----- Method: FontImporterTool>>buttonsFrame (in category 'layout') -----
- ----- Method: FontImporterTool>>buttonsFrame (in category 'toolbuilder') -----
buttonsFrame
^ LayoutFrame
fractions: (0 at 1 corner: 1 at 1)
offsets: (0@ self buttonHeight negated corner: 0 at 0)
!
Item was changed:
----- Method: FontImporterTool>>close (in category 'actions') -----
close
+ self changed: #close.!
- ToolBuilder default close: window.!
Item was removed:
- ----- Method: FontImporterTool>>contents (in category 'toolbuilder') -----
- contents
- | sample i c f |
- sample := WriteStream on: ''.
- f := self selectedFont ifNil:[^Text new].
- (f isSymbolFont or: [(self font: f hasGlyphOf: $a) not]) ifFalse:[
- sample
- nextPutAll: 'the quick brown fox jumps over the lazy dog' ;cr;
- nextPutAll: 'THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG.' ;cr;cr;
- nextPutAll: '0123456789'; cr; cr;
- nextPutAll:
- 'Lorem ipsum dolor sit amet, consectetur adipisicing elit,
- sed do eiusmod tempor incididunt ut labore et dolore
- magna aliqua. Ut enim ad minim veniam, quis nostrud
- exercitation ullamco laboris nisi ut aliquip ex ea commodo
- consequat. Duis aute irure dolor in reprehenderit in voluptate
- velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
- sint occaecat cupidatat non proident, sunt in culpa qui
- officia deserunt mollit anim id est laborum.'
- ] ifTrue:[
- i := 0.
- 33 to: 255 do:[:ci |
- sample nextPut: (c:=Character value: ci).
- i := i + 1.
- (('@Z`z' includes:c) or:[i = 30])
- ifTrue:[i :=0. sample cr]].
- ].
- sample := sample contents asText.
- sample addAttribute: (TextFontReference toFont: f).
- ^sample!
Item was changed:
+ ----- Method: FontImporterTool>>copyright (in category 'model access') -----
- ----- Method: FontImporterTool>>copyright (in category 'toolbuilder') -----
copyright
| f |
f := self selectedFont ifNil:[^ ''].
^ f isTTCFont
ifTrue: [f ttcDescription copyright ifNil: ['']]
ifFalse: ['']!
Item was changed:
+ ----- Method: FontImporterTool>>filename (in category 'model access') -----
- ----- Method: FontImporterTool>>filename (in category 'toolbuilder') -----
filename
^ self currentSelection
ifNil: ['']
ifNotNil: [:sel |
String streamContents: [:stream |
sel allFilenames
do: [:filename | stream nextPutAll: filename]
separatedBy: [stream nextPut: $,;nextPut: $ ]]]!
Item was changed:
+ ----- Method: FontImporterTool>>filenameHeight (in category 'layout') -----
- ----- Method: FontImporterTool>>filenameHeight (in category 'toolbuilder') -----
filenameHeight
+ ^ self filenameFont height * 2!
- ^ (self filenameFont lineGrid * 1.5) truncated!
Item was changed:
+ ----- Method: FontImporterTool>>font:hasGlyphOf: (in category 'helper') -----
- ----- Method: FontImporterTool>>font:hasGlyphOf: (in category 'toolbuilder') -----
font: f hasGlyphOf: aCharacter
| font |
font := f isFontSet ifTrue: [f fontArray first] ifFalse: [f].
^ font isTTCFont
ifFalse: [font hasGlyphOf: aCharacter]
ifTrue: [
" [(f hasGlyphOf: aCharacter) not] does not work, the fallback glyph is always found instead.
So we fake. if aCharacter is the same form as Character null aka 0, we assume absence."
(font characterFormAt: aCharacter) bits ~= font fallbackForm bits]
!
Item was changed:
+ ----- Method: FontImporterTool>>fontListFrame (in category 'layout') -----
- ----- Method: FontImporterTool>>fontListFrame (in category 'toolbuilder') -----
fontListFrame
^ LayoutFrame
fractions: (0 at 0 corner: 0.4 at 1)
+ offsets: (0 at 0 corner: 0@ self buttonHeight negated)!
- offsets: (0 at 0 corner: 0@ self buttonHeight negated + 4)!
Item was changed:
----- Method: FontImporterTool>>initialize (in category 'initialize') -----
initialize
+
super initialize.
- title := 'Choose a Font to import'.
emphasis := 0.
!
Item was changed:
+ ----- Method: FontImporterTool>>labelOf: (in category 'model access') -----
- ----- Method: FontImporterTool>>labelOf: (in category 'accessing') -----
labelOf: aFontDescription
^ aFontDescription fontname
!
Item was changed:
+ ----- Method: FontImporterTool>>open (in category 'initialize') -----
- ----- Method: FontImporterTool>>open (in category 'toolbuilder') -----
open
^ToolBuilder open: self!
Item was changed:
+ ----- Method: FontImporterTool>>previewFrame (in category 'layout') -----
- ----- Method: FontImporterTool>>previewFrame (in category 'toolbuilder') -----
previewFrame
^ LayoutFrame
fractions: (0.4 at 0 corner: 1 at 1)
+ offsets: (0 at 0 corner: 0@ self buttonHeight negated)!
- offsets: (0 at 0 corner: 0@ self buttonHeight negated + 4)!
Item was added:
+ ----- Method: FontImporterTool>>previewText (in category 'model access') -----
+ previewText
+ | sample i c f |
+ sample := WriteStream on: ''.
+ f := self selectedFont ifNil:[^Text new].
+ (f isSymbolFont or: [(self font: f hasGlyphOf: $a) not]) ifFalse:[
+ sample
+ nextPutAll: 'the quick brown fox jumps over the lazy dog' ;cr;
+ nextPutAll: 'THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG.' ;cr;cr;
+ nextPutAll: '0123456789'; cr; cr;
+ nextPutAll:
+ 'Lorem ipsum dolor sit amet, consectetur adipisicing elit,
+ sed do eiusmod tempor incididunt ut labore et dolore
+ magna aliqua. Ut enim ad minim veniam, quis nostrud
+ exercitation ullamco laboris nisi ut aliquip ex ea commodo
+ consequat. Duis aute irure dolor in reprehenderit in voluptate
+ velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
+ sint occaecat cupidatat non proident, sunt in culpa qui
+ officia deserunt mollit anim id est laborum.'
+ ] ifTrue:[
+ i := 0.
+ 33 to: 255 do:[:ci |
+ sample nextPut: (c:=Character value: ci).
+ i := i + 1.
+ (('@Z`z' includes:c) or:[i = 30])
+ ifTrue:[i :=0. sample cr]].
+ ].
+ sample := sample contents asText.
+ sample addAttribute: (TextFontReference toFont: f).
+ ^sample!
Item was changed:
+ ----- Method: FontImporterTool>>textForFamily:subfamily: (in category 'helper') -----
- ----- Method: FontImporterTool>>textForFamily:subfamily: (in category 'accessing') -----
textForFamily: familyName subfamily: subfamilyName
subfamilyName ifNil: [
^ (TextStyle named: familyName)
ifNil: [familyName]
ifNotNil: [:style | style isTTCStyle
ifTrue: ["we are already present "
Text string: familyName attribute: TextEmphasis underlined]
ifFalse: [familyName]]].
" frome here on it is only about subfamilies"
(self isStyleNameSupported: subfamilyName)
ifFalse: [^ Text string: subfamilyName attribute: TextColor gray].
^ (TextStyle named: familyName)
ifNil: ["importable" subfamilyName]
ifNotNil: [:style |
(style isTTCStyle and: [ | regular emph |
regular := style fonts anyOne.
emph := TTCFont indexOfSubfamilyName: subfamilyName.
" detect if this style is already imported "
regular emphasis = emph or: [(regular emphasis: emph) ~= regular]])
ifFalse: ["again importable" subfamilyName]
ifTrue: [Text string: subfamilyName attribute: TextEmphasis underlined]]!
Item was removed:
- ----- Method: FontImporterTool>>title (in category 'accessing') -----
- title
-
- ^ title!
Item was removed:
- ----- Method: FontImporterTool>>title: (in category 'accessing') -----
- title: anObject
- "Set the value of title"
-
- title := anObject!
Item was removed:
- ----- Method: FontImporterTool>>window (in category 'accessing') -----
- window
- ^window!
Item was removed:
- ----- Method: FontImporterTool>>window: (in category 'accessing') -----
- window: anObject
-
- window := anObject!
Item was removed:
- ----- Method: FontImporterTool>>windowTitle (in category 'initialize') -----
- windowTitle
- ^ title translated!
More information about the Squeak-dev
mailing list
|