FontPanel.st
author claus
Wed, 13 Oct 1993 03:49:56 +0100
changeset 5 7b4fb1b170e5
parent 3 9d7eefb5e69f
child 7 15a9291b9bd0
permissions -rw-r--r--
(none)
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
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     3
              All Rights Reserved
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
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    13
ModalBox subclass:#FontPanel
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    14
         instanceVariableNames:'previewField familyList faceList sizeList
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    15
                                applyButton abortButton
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    16
                                revertButton okAction abortAction
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    17
                                currentFamily currentFace
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    18
                                currentStyle currentFaceAndStyle currentSize'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    19
         classVariableNames:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    20
         poolDictionaries:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    21
         category:'Views-Interactors'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    22
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    23
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    24
FontPanel comment:'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    25
5
claus
parents: 3
diff changeset
    26
COPYRIGHT (c) 1991 by Claus Gittinger
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    27
              All Rights Reserved
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    28
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    29
this class implements a font chooser
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    30
5
claus
parents: 3
diff changeset
    31
$Header: /cvs/stx/stx/libwidg/FontPanel.st,v 1.3 1993-10-13 02:47:47 claus Exp $
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    32
written fall 91 by claus
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    33
'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    34
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    35
!FontPanel class methodsFor:'defaults'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    36
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    37
defaultExtent
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    38
    ^ (Display pixelPerMillimeter * (120 @ 100)) rounded
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    39
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    40
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    41
!FontPanel class methodsFor:'startup'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    42
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    43
fontFromUser
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    44
    |fontPanel|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    45
    fontPanel := FontPanel new.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    46
    fontPanel action:[:family :face :style :size |
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    47
        ^ (Font family:family
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    48
                  face:face
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    49
                  style:style
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    50
                   size:size)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    51
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    52
    fontPanel showAtPointer.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    53
    ^ nil
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    54
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    55
    "FontPanel fontFromUser"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    56
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    57
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    58
!FontPanel methodsFor:'initializing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    59
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    60
initialize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    61
    |buttonWidth buttonHeight space2 space3 space4 innerWidth
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    62
     familyLabel faceLabel sizeLabel bw|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    63
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    64
    super initialize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    65
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    66
    space2 := ViewSpacing * 2.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    67
    space3 := ViewSpacing * 3.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    68
    space4 := ViewSpacing * 4.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    69
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    70
    previewField := EditField in:self.
3
claus
parents: 0
diff changeset
    71
    previewField contents:'The quick brown fox\jumps over the lazy dog\1234567890\!!@#$%^&*(){}[]:"~;,./<>?' withCRs.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    72
    bw := previewField borderWidth.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    73
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    74
    innerWidth := width - space2.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    75
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    76
    previewField origin:(ViewSpacing @ ViewSpacing)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    77
                 extent:((innerWidth - (2 * bw)) @ (height // 4)).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    78
    previewField origin:(ViewSpacing @ ViewSpacing)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    79
                 extent:[(width - space2 - (2 * bw)) @ (height // 4)].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    80
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    81
    familyLabel := Label in:self.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    82
    familyLabel origin:(ViewSpacing
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    83
                       @ 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    84
                       (previewField origin y +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    85
                        previewField height +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    86
                        ViewSpacing))
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    87
               extent:(((width - space4) // 5 * 2)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    88
                       @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    89
                       (familyLabel height)).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    90
    familyLabel origin:[ViewSpacing
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    91
                       @ 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    92
                       (previewField origin y +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    93
                        previewField height +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    94
                        ViewSpacing)]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    95
               extent:[((width - space4) // 5 * 2)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    96
                       @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    97
                       (familyLabel height)].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    98
    familyLabel label:'Family'.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    99
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   100
    familyList := ScrollableView for:SelectionInListView in:self.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   101
    familyList origin:(ViewSpacing
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   102
                       @ 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   103
                       (familyLabel origin y + familyLabel height + ViewSpacing))
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   104
               extent:(((width - space4) // 5 * 2)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   105
                       @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   106
                       (height // 2)).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   107
    familyList origin:[ViewSpacing
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   108
                       @ 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   109
                       (familyLabel origin y + familyLabel height + ViewSpacing)]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   110
               extent:[((width - space4) // 5 * 2)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   111
                       @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   112
                       (height // 2)].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   113
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   114
    faceLabel := Label in:self.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   115
    faceLabel origin:((familyList origin x +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   116
                      familyList width +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   117
                      ViewSpacing)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   118
                     @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   119
                     (previewField origin y +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   120
                      previewField height +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   121
                      ViewSpacing))
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   122
               extent:(((width - space4) // 5 * 2) @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   123
                       (faceLabel height)).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   124
    faceLabel origin:[(familyList origin x +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   125
                      familyList width +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   126
                      ViewSpacing)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   127
                     @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   128
                     (previewField origin y +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   129
                      previewField height +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   130
                      ViewSpacing)]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   131
               extent:[((width - space4) // 5 * 2) @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   132
                       (faceLabel height)].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   133
    faceLabel label:'Typeface'.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   134
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   135
    faceList := ScrollableView for:SelectionInListView in:self.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   136
    faceList origin:((faceLabel origin x)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   137
                     @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   138
                     (faceLabel origin y + faceLabel height + ViewSpacing))
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   139
               extent:(((width - space4) // 5 * 2) @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   140
                       (height // 2)).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   141
    faceList origin:[(faceLabel origin x)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   142
                     @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   143
                     (faceLabel origin y + faceLabel height + ViewSpacing)]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   144
               extent:[((width - space4) // 5 * 2) @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   145
                       (height // 2)].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   146
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   147
    sizeLabel := Label in:self.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   148
    sizeLabel origin:((faceList origin x +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   149
                      faceList width +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   150
                      ViewSpacing)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   151
                     @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   152
                     (previewField origin y +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   153
                      previewField height +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   154
                      ViewSpacing))
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   155
               extent:(((width - space4) // 5 - sizeLabel borderWidth) @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   156
                       (sizeLabel height)).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   157
    sizeLabel origin:[(faceList origin x +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   158
                      faceList width +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   159
                      ViewSpacing)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   160
                     @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   161
                     (previewField origin y +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   162
                      previewField height +
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   163
                      ViewSpacing)]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   164
               extent:[((width - space4) // 5 - sizeLabel borderWidth) @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   165
                       (sizeLabel height)].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   166
    sizeLabel label:'Size'.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   167
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   168
    sizeList := ScrollableView for:SelectionInListView in:self.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   169
    sizeList origin:((sizeLabel origin x)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   170
                     @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   171
                     (sizeLabel origin y + sizeLabel height + ViewSpacing))
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   172
               extent:(((width - space4) // 5 - sizeList borderWidth) @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   173
                       (height // 2)).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   174
    sizeList origin:[(sizeLabel origin x)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   175
                     @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   176
                     (sizeLabel origin y + sizeLabel height + ViewSpacing)]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   177
               extent:[((width - space4) // 5 - sizeList borderWidth) @
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   178
                       (height // 2)].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   179
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   180
    applyButton := Button label:(resources at:'ok')
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   181
                      action:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   182
                                applyButton turnOffWithoutRedraw.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   183
                                self okPressed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   184
                             ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   185
                          in:self.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   186
    applyButton isReturnButton:true.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   187
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   188
    abortButton := Button label:(resources at:'abort')
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   189
                         action:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   190
                                    abortButton turnOffWithoutRedraw.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   191
                                    self abortPressed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   192
                                ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   193
                          in:self.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   194
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   195
    buttonHeight := abortButton height.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   196
    buttonWidth := (width - space3) // 2.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   197
    abortButton extent:(buttonWidth @ buttonHeight).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   198
    abortButton origin:[ViewSpacing @ (height - buttonHeight - space2)]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   199
                extent:[((width - space3) // 2) @ buttonHeight].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   200
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   201
    applyButton extent:(buttonWidth @ buttonHeight).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   202
    applyButton origin:[((width + ViewSpacing) // 2) @ (height - buttonHeight - space2)]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   203
             extent:[((width - space3) // 2) @ buttonHeight].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   204
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   205
    familyList action:[:lineNr | self familySelected:(familyList selectionValue)].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   206
    faceList action:[:lineNr | self faceSelected:(faceList selectionValue)].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   207
    sizeList action:[:lineNr | self sizeSelected:(sizeList selectionValue)].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   208
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   209
    familyList list:(device fontFamilies asOrderedCollection)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   210
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   211
    "FontPanel new showAtPointer"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   212
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   213
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   214
realize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   215
    "kludge for sco - xlsfont fails sometimes - try again here"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   216
    familyList list isNil ifTrue:[familyList list:(device fontFamilies)].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   217
    super realize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   218
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   219
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   220
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   221
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   222
!FontPanel methodsFor:'user interaction'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   223
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   224
okPressed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   225
    self hide.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   226
    okAction notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   227
        okAction value:currentFamily
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   228
                 value:currentFace
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   229
                 value:currentStyle
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   230
                 value:currentSize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   231
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   232
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   233
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   234
abortPressed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   235
    self hide
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   236
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   237
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   238
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   239
familySelected:aFamilyName
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   240
    |faces styles list|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   241
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   242
    familyList selectElement:aFamilyName.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   243
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   244
    list := Text new.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   245
    currentFamily := aFamilyName.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   246
    faces := device facesInFamily:aFamilyName.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   247
    faces do:[:aFace |
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   248
        styles := device stylesInFamily:aFamilyName face:aFace.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   249
        styles do:[:aStyle |
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   250
            list add:(aFace , '-' , aStyle)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   251
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   252
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   253
    faceList list:list.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   254
    currentFaceAndStyle notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   255
        (list includes:currentFaceAndStyle) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   256
            faceList selectElement:currentFaceAndStyle.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   257
            self faceSelected:currentFaceAndStyle.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   258
            ^ self
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   259
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   260
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   261
    sizeList list:nil
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   262
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   263
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   264
faceSelected:aFaceAndStyleName
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   265
    |sizes|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   266
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   267
    sizes := Text new.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   268
    self extractFaceAndStyleFrom:aFaceAndStyleName.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   269
    sizes := device sizesInFamily:currentFamily face:currentFace style:currentStyle.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   270
    sizes := sizes asOrderedCollection.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   271
    sizes sort.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   272
    sizeList list:sizes.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   273
    currentSize notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   274
        (sizes includes:(currentSize printString)) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   275
            sizeList selectElement:currentSize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   276
            self showPreview
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   277
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   278
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   279
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   280
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   281
sizeSelected:aNumberOrString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   282
    (aNumberOrString isKindOf:Number) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   283
        currentSize := aNumberOrString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   284
    ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   285
        currentSize := Number readFromString:aNumberOrString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   286
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   287
    self showPreview
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   288
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   289
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   290
!FontPanel methodsFor:'accessing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   291
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   292
initialFont:aFont
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   293
    |family face style size|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   294
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   295
    family := aFont family.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   296
    face := aFont face.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   297
    style := aFont style.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   298
    size := aFont size.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   299
    family notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   300
        self familySelected:family.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   301
        face notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   302
            style notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   303
                self faceSelected:(face , '-' , style).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   304
                size notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   305
                    self sizeSelected:size
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   306
                ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   307
            ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   308
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   309
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   310
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   311
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   312
action:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   313
    okAction := aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   314
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   315
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   316
!FontPanel methodsFor:'private'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   317
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   318
showPreview
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   319
    previewField font:(Font family:currentFamily
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   320
                              face:currentFace
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   321
                             style:currentStyle
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   322
                              size:currentSize)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   323
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   324
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   325
extractFaceAndStyleFrom:aString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   326
    |index|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   327
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   328
    index := aString indexOf:$-.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   329
    (index ~~ 0) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   330
        currentFaceAndStyle := aString.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   331
        currentFace := aString copyFrom:1 to:(index - 1).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   332
        currentStyle := aString copyFrom:(index + 1)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   333
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   334
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   335
! !