FontPanel.st
author claus
Wed, 10 May 1995 04:30:46 +0200
changeset 126 40228f4fd66b
parent 110 eb59f6e31e84
child 128 06a050529335
permissions -rw-r--r--
.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     1
"
5
claus
parents: 3
diff changeset
     2
 COPYRIGHT (c) 1991 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
     3
	      All Rights Reserved
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     4
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    11
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    12
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    13
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    14
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    15
'From Smalltalk/X, Version:2.10.4 on 28-dec-1994 at 9:11:51 pm'!
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    16
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    17
DialogBox subclass:#FontPanel
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    18
	 instanceVariableNames:'previewField familyList faceList sizeList revertButton
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    19
		currentFamily currentFace currentStyle currentFaceAndStyle
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    20
		currentSize'
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    21
	 classVariableNames:''
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    22
	 poolDictionaries:''
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    23
	 category:'Views-DialogBoxes'
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    24
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    25
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    26
!FontPanel class methodsFor:'documentation'!
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    27
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    28
version
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    29
"
110
eb59f6e31e84 *** empty log message ***
claus
parents: 101
diff changeset
    30
$Header: /cvs/stx/stx/libwidg/FontPanel.st,v 1.9 1995-03-25 22:20:15 claus Exp $
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    31
"
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    32
!
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    33
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    34
documentation
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    35
"
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    36
    this class implements a font chooser.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    37
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    38
    usage:
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    39
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    40
	|panel|
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    41
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    42
	panel := FontPanel new.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    43
	panel action:[:aFont | Transcript showCR:'the font is' , aFont printString].
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    44
	panel show
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    45
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    46
    or simply:
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    47
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    48
	font := FontPanel fontFromUser
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    49
"
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    50
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    51
!
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    52
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    53
copyright
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    54
"
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    55
 COPYRIGHT (c) 1991 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    56
	      All Rights Reserved
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    57
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    58
 This software is furnished under a license and may be used
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    59
 only in accordance with the terms of that license and with the
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    60
 inclusion of the above copyright notice.   This software may not
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    61
 be provided or otherwise made available to, or used by, any
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    62
 other person.  No title to or ownership of the software is
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    63
 hereby transferred.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    64
"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    65
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    66
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    67
! !
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    68
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    69
!FontPanel class methodsFor:'defaults'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    70
110
eb59f6e31e84 *** empty log message ***
claus
parents: 101
diff changeset
    71
defaultSampleString
eb59f6e31e84 *** empty log message ***
claus
parents: 101
diff changeset
    72
    ^ 'The quick brown fox
eb59f6e31e84 *** empty log message ***
claus
parents: 101
diff changeset
    73
jumps over the lazy dog
eb59f6e31e84 *** empty log message ***
claus
parents: 101
diff changeset
    74
1234567890
eb59f6e31e84 *** empty log message ***
claus
parents: 101
diff changeset
    75
!!@#$%^&*(){}[]:"~;,./<>?
eb59f6e31e84 *** empty log message ***
claus
parents: 101
diff changeset
    76
' , 
eb59f6e31e84 *** empty log message ***
claus
parents: 101
diff changeset
    77
(Character value:16rE4) asString ,
eb59f6e31e84 *** empty log message ***
claus
parents: 101
diff changeset
    78
(Character value:16rF6) asString ,
eb59f6e31e84 *** empty log message ***
claus
parents: 101
diff changeset
    79
(Character value:16rFC) asString ,
eb59f6e31e84 *** empty log message ***
claus
parents: 101
diff changeset
    80
(Character value:16rC4) asString ,
eb59f6e31e84 *** empty log message ***
claus
parents: 101
diff changeset
    81
(Character value:16rD6) asString ,
eb59f6e31e84 *** empty log message ***
claus
parents: 101
diff changeset
    82
(Character value:16rDC) asString ,
eb59f6e31e84 *** empty log message ***
claus
parents: 101
diff changeset
    83
(Character value:16rDF) asString 
eb59f6e31e84 *** empty log message ***
claus
parents: 101
diff changeset
    84
!
eb59f6e31e84 *** empty log message ***
claus
parents: 101
diff changeset
    85
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    86
defaultExtent
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    87
    ^ (Display pixelPerMillimeter * (120 @ 100)) rounded
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    88
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    89
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    90
!FontPanel class methodsFor:'startup'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    91
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    92
fontFromUser
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    93
    "open a fontPanel and return the selected font, or nil
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    94
     if abort is pressed"
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    95
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    96
    |fontPanel|
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    97
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    98
    fontPanel := FontPanel new.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    99
    fontPanel action:[:family :face :style :size |
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   100
	^ (Font family:family
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   101
		  face:face
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   102
		  style:style
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   103
		   size:size)
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   104
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   105
    fontPanel showAtPointer.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   106
    ^ nil
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   107
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   108
    "
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   109
     FontPanel fontFromUser
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   110
    "
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   111
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   112
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   113
!FontPanel methodsFor:'accessing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   114
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   115
initialFont:aFont
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   116
    |family face style size|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   117
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   118
    family := aFont family.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   119
    face := aFont face.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   120
    style := aFont style.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   121
    size := aFont size.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   122
    family notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   123
	self familySelected:family.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   124
	face notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   125
	    style notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   126
		self faceSelected:(face , '-' , style).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   127
		size notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   128
		    self sizeSelected:size
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   129
		]
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   130
	    ]
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   131
	]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   132
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   133
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   134
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   135
action:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   136
    okAction := aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   137
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   138
101
88e7faeda854 *** empty log message ***
claus
parents: 77
diff changeset
   139
!FontPanel methodsFor:'queries'!
88e7faeda854 *** empty log message ***
claus
parents: 77
diff changeset
   140
88e7faeda854 *** empty log message ***
claus
parents: 77
diff changeset
   141
preferedExtent
88e7faeda854 *** empty log message ***
claus
parents: 77
diff changeset
   142
    ^ 400@350
88e7faeda854 *** empty log message ***
claus
parents: 77
diff changeset
   143
! !
88e7faeda854 *** empty log message ***
claus
parents: 77
diff changeset
   144
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   145
!FontPanel methodsFor:'initialization'!
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   146
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   147
realize
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   148
    "kludge for sco - xlsfont fails sometimes - try again here"
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   149
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   150
    |families|
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   151
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   152
    familyList list isNil ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   153
	families := device fontFamilies.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   154
	families notNil ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   155
	    families := families asOrderedCollection
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   156
	].
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   157
	familyList list:families
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   158
    ].
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   159
    super realize
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   160
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   161
!
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   162
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   163
initialize
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   164
    |familyLabel faceLabel sizeLabel panel fontBrowserView v1 v2 v3|
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   165
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   166
    super initialize.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   167
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   168
    self addAbortButton.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   169
    self addOkButton.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   170
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   171
    panel := View origin:0.0@0.0 corner:1.0@1.0
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   172
		  in:self.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   173
    panel bottomInset:(buttonPanel preferedExtent y + (ViewSpacing*3)).
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   174
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   175
    label := 'Font dialog'.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   176
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   177
    previewField := TextView origin:0.0@0.0 corner:1.0@0.3 in:panel.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   178
    previewField inset:ViewSpacing.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   179
110
eb59f6e31e84 *** empty log message ***
claus
parents: 101
diff changeset
   180
    previewField contents:self class defaultSampleString.
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   181
    self is3D ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   182
	previewField level:-1.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   183
    ] ifFalse:[
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   184
	previewField borderWidth:1.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   185
    ].
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   186
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   187
    fontBrowserView := View origin:0.0@0.3 corner:1.0@1.0 in:panel.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   188
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   189
    v1 := View origin:0.0@0.0 corner:0.4@1.0 in:fontBrowserView.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   190
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   191
    familyLabel := Label label:'Family' in:v1.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   192
    familyLabel borderWidth:0.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   193
    familyLabel origin:(0.0 @ 0.0) extent:(1.0 @ nil).
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   194
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   195
    familyList := ScrollableView for:SelectionInListView in:v1.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   196
    familyList origin:(0.0 
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   197
		       @ 
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   198
		       (familyLabel origin y + familyLabel height "+ ViewSpacing"))
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   199
	       corner:(1.0 @ 1.0).
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   200
    familyList inset:ViewSpacing.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   201
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   202
    v2 := View origin:0.4@0.0 corner:0.8@1.0
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   203
		   in:fontBrowserView.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   204
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   205
    faceLabel := Label label:'Typeface' in:v2.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   206
    faceLabel borderWidth:0.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   207
    faceLabel origin:(0.0 @ 0.0) extent:(1.0 @ nil).
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   208
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   209
    faceList := ScrollableView for:SelectionInListView in:v2.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   210
    faceList origin:(0.0 
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   211
		     @
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   212
		     (faceLabel origin y + faceLabel height "+ ViewSpacing"))
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   213
	     corner:(1.0 @ 1.0).
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   214
    faceList inset:ViewSpacing.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   215
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   216
    v3 := View origin:0.8@0.0 corner:1.0@1.0
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   217
		   in:fontBrowserView.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   218
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   219
    sizeLabel := Label label:'Size' in:v3.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   220
    sizeLabel borderWidth:0.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   221
    sizeLabel origin:(0.0 @ 0.0)extent:(1.0 @ nil).
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   222
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   223
    sizeList := ScrollableView for:SelectionInListView in:v3.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   224
    sizeList origin:(0.0 
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   225
		     @
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   226
		     (sizeLabel origin y + sizeLabel height "+ ViewSpacing"))
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   227
	     corner:(1.0 @ 1.0).
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   228
    sizeList inset:ViewSpacing.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   229
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   230
    familyList action:[:lineNr | self familySelected:(familyList selectionValue)].
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   231
    faceList action:[:lineNr | self faceSelected:(faceList selectionValue)].
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   232
    sizeList action:[:lineNr | self sizeSelected:(sizeList selectionValue)].
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   233
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   234
    "
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   235
     FontPanel new showAtPointer
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   236
    "
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   237
!
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   238
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   239
focusSequence
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   240
    |a|
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   241
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   242
    a := Array new:5.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   243
    a at:1 put:familyList.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   244
    a at:2 put:faceList.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   245
    a at:3 put:sizeList.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   246
    a at:4 put:abortButton.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   247
    a at:5 put:okButton.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   248
    ^ a
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   249
! !
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   250
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   251
!FontPanel methodsFor:'private'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   252
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   253
showPreview
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   254
    shown ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   255
	previewField clear.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   256
    ].
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   257
    "
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   258
     show a wait cursor: for some fonts (kanji etc) the
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   259
     X-server needs quites some time to load the font
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   260
    "
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   261
    self withCursor:Cursor wait do:[
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   262
	previewField font:(Font family:currentFamily
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   263
				  face:currentFace
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   264
				 style:currentStyle
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   265
				  size:currentSize).
110
eb59f6e31e84 *** empty log message ***
claus
parents: 101
diff changeset
   266
	previewField contents:self class defaultSampleString.
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   267
    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   268
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   269
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   270
extractFaceAndStyleFrom:aString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   271
    |index|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   272
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   273
    index := aString indexOf:$-.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   274
    (index ~~ 0) ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   275
	currentFaceAndStyle := aString.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   276
	currentFace := aString copyTo:(index - 1).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   277
	currentStyle := aString copyFrom:(index + 1)
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   278
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   279
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   280
! !
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   281
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   282
!FontPanel methodsFor:'user interaction'!
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   283
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   284
familySelected:aFamilyName
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   285
    |faces styles list|
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   286
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   287
    familyList selectElement:aFamilyName.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   288
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   289
    currentFamily := aFamilyName.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   290
    faces := device facesInFamily:aFamilyName.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   291
    (faces isNil or:[faces isEmpty]) ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   292
	currentFace := currentStyle := currentFaceAndStyle := nil.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   293
	faceList list:nil.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   294
	self faceSelected:nil.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   295
	^ self.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   296
    ].
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   297
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   298
    list := OrderedCollection new.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   299
    faces do:[:aFace |
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   300
	styles := device stylesInFamily:aFamilyName face:aFace.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   301
	styles do:[:aStyle |
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   302
	    list add:(aFace , '-' , aStyle)
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   303
	]
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   304
    ].
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   305
    faceList list:list.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   306
    currentFaceAndStyle notNil ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   307
	(list includes:currentFaceAndStyle) ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   308
	    faceList selectElement:currentFaceAndStyle.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   309
	    self faceSelected:currentFaceAndStyle.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   310
	    ^ self
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   311
	]
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   312
    ].
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   313
    sizeList list:nil
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   314
!
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   315
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   316
faceSelected:aFaceAndStyleName
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   317
    |sizes|
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   318
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   319
    aFaceAndStyleName notNil ifTrue:[    
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   320
	self extractFaceAndStyleFrom:aFaceAndStyleName.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   321
    ].
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   322
    sizes := device 
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   323
		 sizesInFamily:currentFamily 
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   324
		 face:currentFace 
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   325
		 style:currentStyle.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   326
    (sizes isNil or:[sizes isEmpty]) ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   327
	sizeList list:nil.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   328
	currentSize := nil.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   329
	self showPreview.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   330
	^ self
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   331
    ].
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   332
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   333
    sizes := sizes asOrderedCollection sort.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   334
    sizeList list:sizes.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   335
    currentSize notNil ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   336
	(sizes includes:(currentSize printString)) ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   337
	    sizeList selectElement:currentSize.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   338
	    self showPreview
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   339
	]
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   340
    ]
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   341
!
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   342
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   343
okPressed
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   344
    self hide.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   345
    okAction notNil ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   346
	okAction value:currentFamily
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   347
		 value:currentFace
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   348
		 value:currentStyle
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   349
		 value:currentSize
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   350
    ]
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   351
!
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   352
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   353
sizeSelected:aNumberOrString
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   354
    aNumberOrString isNumber ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   355
	currentSize := aNumberOrString
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   356
    ] ifFalse:[
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   357
	currentSize := Number readFromString:aNumberOrString
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   358
    ].
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   359
    self showPreview
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   360
! !