DeviceWorkstation.st
author claus
Wed, 13 Oct 1993 01:32:53 +0100
changeset 2 b35336ab0de3
parent 0 48194c26a46c
child 5 e5942fea6925
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
48194c26a46c Initial revision
claus
parents:
diff changeset
     1
"
48194c26a46c Initial revision
claus
parents:
diff changeset
     2
COPYRIGHT (c) 1993 by Claus Gittinger
48194c26a46c Initial revision
claus
parents:
diff changeset
     3
              All Rights Reserved
48194c26a46c Initial revision
claus
parents:
diff changeset
     4
48194c26a46c Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
48194c26a46c Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
48194c26a46c Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
48194c26a46c Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
48194c26a46c Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
48194c26a46c Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
48194c26a46c Initial revision
claus
parents:
diff changeset
    11
"
48194c26a46c Initial revision
claus
parents:
diff changeset
    12
48194c26a46c Initial revision
claus
parents:
diff changeset
    13
Object subclass:#DeviceWorkstation
48194c26a46c Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:'displayId
48194c26a46c Initial revision
claus
parents:
diff changeset
    15
                              visualType monitorType
48194c26a46c Initial revision
claus
parents:
diff changeset
    16
                              depth ncells bitsPerRGB
48194c26a46c Initial revision
claus
parents:
diff changeset
    17
                              hasColors hasGreyscales 
48194c26a46c Initial revision
claus
parents:
diff changeset
    18
                              width height widthMM heightMM resolutionHor resolutionVer
48194c26a46c Initial revision
claus
parents:
diff changeset
    19
                              knownViews knownIds knownBitmaps knownBitmapIds
48194c26a46c Initial revision
claus
parents:
diff changeset
    20
                              dispatching
48194c26a46c Initial revision
claus
parents:
diff changeset
    21
                              idleBlocks 
48194c26a46c Initial revision
claus
parents:
diff changeset
    22
                              controlDown shiftDown metaDown altDown
48194c26a46c Initial revision
claus
parents:
diff changeset
    23
                              ignoreBackingStore motionEventCompression
48194c26a46c Initial revision
claus
parents:
diff changeset
    24
                              timeOutBlocks timeOutTimes
48194c26a46c Initial revision
claus
parents:
diff changeset
    25
                              lastId lastView
48194c26a46c Initial revision
claus
parents:
diff changeset
    26
                              keyboardMap'
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    27
       classVariableNames:   'ButtonTranslation MultiClickTimeDelta
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    28
                              DeviceErrorSignal'
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    29
       poolDictionaries:''
48194c26a46c Initial revision
claus
parents:
diff changeset
    30
       category:'Interface-Graphics'
48194c26a46c Initial revision
claus
parents:
diff changeset
    31
!
48194c26a46c Initial revision
claus
parents:
diff changeset
    32
48194c26a46c Initial revision
claus
parents:
diff changeset
    33
DeviceWorkstation comment:'
48194c26a46c Initial revision
claus
parents:
diff changeset
    34
48194c26a46c Initial revision
claus
parents:
diff changeset
    35
COPYRIGHT (c) 1993 by Claus Gittinger
48194c26a46c Initial revision
claus
parents:
diff changeset
    36
              All Rights Reserved
48194c26a46c Initial revision
claus
parents:
diff changeset
    37
48194c26a46c Initial revision
claus
parents:
diff changeset
    38
%W% %E%
48194c26a46c Initial revision
claus
parents:
diff changeset
    39
written jan 93 by claus
48194c26a46c Initial revision
claus
parents:
diff changeset
    40
'!
48194c26a46c Initial revision
claus
parents:
diff changeset
    41
48194c26a46c Initial revision
claus
parents:
diff changeset
    42
!DeviceWorkstation class methodsFor:'documentation'!
48194c26a46c Initial revision
claus
parents:
diff changeset
    43
48194c26a46c Initial revision
claus
parents:
diff changeset
    44
documentation
48194c26a46c Initial revision
claus
parents:
diff changeset
    45
"
48194c26a46c Initial revision
claus
parents:
diff changeset
    46
this abstract class defines common protocol to all Display types.
48194c26a46c Initial revision
claus
parents:
diff changeset
    47
48194c26a46c Initial revision
claus
parents:
diff changeset
    48
instance variables:
48194c26a46c Initial revision
claus
parents:
diff changeset
    49
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    50
displayId       <Number>        the device id of the display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    51
visualType      <Symbol>        one of #StaticGray, #PseudoColor, ... #TrueColor
48194c26a46c Initial revision
claus
parents:
diff changeset
    52
monitorType     <Symbol>        one of #monochrome, #color, #unknown
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    53
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    54
depth           <Integer>       bits per color
48194c26a46c Initial revision
claus
parents:
diff changeset
    55
ncells          <Integer>       number of colors (i.e. colormap size; not always == 2^depth)
48194c26a46c Initial revision
claus
parents:
diff changeset
    56
bitsPerRGB      <Integer>       number of valid bits per rgb component
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    57
                                (actual number taken in A/D converter; not all devices report the true value)
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    58
hasColors       <Boolean>       true, if display supports colors
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    59
hasGreyscales   <Boolean>       true, if display supports grey-scales (i.e is not b/w display)
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    60
width           <Integer>       number of horizontal pixels
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    61
height          <Integer>       number of vertical pixels 
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    62
heightMM        <Number>        screen height in millimeter
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    63
widthMM         <Number>        screen width in millimeter
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    64
resolutionHor   <Number>        pixels per horizontal millimeter
48194c26a46c Initial revision
claus
parents:
diff changeset
    65
resolutionVer   <Number>        pixels per vertical millimeter
48194c26a46c Initial revision
claus
parents:
diff changeset
    66
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    67
knownViews      <Collection>    all views known
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    68
knownIds        <Collection>    corresponding device-view ids
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    69
knownBitmaps    <Collection>    all known device bitmaps
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    70
knownBitmapIds  <Collection>    corresponding device-bitmap ids
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    71
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    72
dispatching     <Boolean>       true, if currently in dispatch loop
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    73
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    74
idleBlocks      <Collection>    blocks to evaluate, when no events are pending
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    75
48194c26a46c Initial revision
claus
parents:
diff changeset
    76
controlDown     <Boolean>       control key currently pressed
48194c26a46c Initial revision
claus
parents:
diff changeset
    77
shiftDown       <Boolean>       shift key currently pressed
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    78
metaDown        <Boolean>
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    79
altDown         <Boolean>
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    80
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    81
ignoreBackingStore
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    82
motionEventCompression
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    83
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    84
timeOutBlocks   <Collection>
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    85
timeOutTimes    <Collection>
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    86
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    87
lastId          <Number>
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    88
lastView        <View>
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    89
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    90
keyboardMap     <KeyBdMap>      mapping for keys
48194c26a46c Initial revision
claus
parents:
diff changeset
    91
48194c26a46c Initial revision
claus
parents:
diff changeset
    92
"
48194c26a46c Initial revision
claus
parents:
diff changeset
    93
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
    94
48194c26a46c Initial revision
claus
parents:
diff changeset
    95
!DeviceWorkstation class methodsFor:'initialization'!
48194c26a46c Initial revision
claus
parents:
diff changeset
    96
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    97
initialize
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    98
    DeviceErrorSignal isNil ifTrue:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    99
        DeviceErrorSignal := (Signal new) mayProceed:true.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   100
        DeviceErrorSignal notifierString:'device error'.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   101
    ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   102
!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   103
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   104
initializeConstants
48194c26a46c Initial revision
claus
parents:
diff changeset
   105
    "initialize some (soft) constants"
48194c26a46c Initial revision
claus
parents:
diff changeset
   106
48194c26a46c Initial revision
claus
parents:
diff changeset
   107
    MultiClickTimeDelta := 300.
48194c26a46c Initial revision
claus
parents:
diff changeset
   108
    ButtonTranslation := #(1 2 3)     "identity translation"
48194c26a46c Initial revision
claus
parents:
diff changeset
   109
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   110
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   111
!DeviceWorkstation class methodsFor:'signal access'!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   112
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   113
deviceErrorSignal
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   114
    "return the signal used for device error reporting"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   115
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   116
    ^ DeviceErrorSignal
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   117
! !
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   118
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   119
!DeviceWorkstation class methodsFor:'accessing'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   120
48194c26a46c Initial revision
claus
parents:
diff changeset
   121
buttonTranslation:anArray
48194c26a46c Initial revision
claus
parents:
diff changeset
   122
    "set the button translation, #(1 2 3) is no-translation,
48194c26a46c Initial revision
claus
parents:
diff changeset
   123
     #(3 2 1) is ok for left-handers"
48194c26a46c Initial revision
claus
parents:
diff changeset
   124
48194c26a46c Initial revision
claus
parents:
diff changeset
   125
    ButtonTranslation := anArray
48194c26a46c Initial revision
claus
parents:
diff changeset
   126
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   127
48194c26a46c Initial revision
claus
parents:
diff changeset
   128
!DeviceWorkstation methodsFor:'initialize / release'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   129
48194c26a46c Initial revision
claus
parents:
diff changeset
   130
initialize
48194c26a46c Initial revision
claus
parents:
diff changeset
   131
    "initialize the receiver for a connection to the default display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   132
48194c26a46c Initial revision
claus
parents:
diff changeset
   133
    ^ self initializeFor:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   134
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   135
48194c26a46c Initial revision
claus
parents:
diff changeset
   136
initializeFor:aDisplayOrNilForAny
48194c26a46c Initial revision
claus
parents:
diff changeset
   137
    "initialize the receiver for a connection to a display. If the
48194c26a46c Initial revision
claus
parents:
diff changeset
   138
     argument is non-nil, it should specify which workstation should be
48194c26a46c Initial revision
claus
parents:
diff changeset
   139
     connected to (in a device specific manner). For X displays, this is
48194c26a46c Initial revision
claus
parents:
diff changeset
   140
     to be the display-string i.e. hostname:displayNr.
48194c26a46c Initial revision
claus
parents:
diff changeset
   141
     If the argument is nil,  connect to the default display."
48194c26a46c Initial revision
claus
parents:
diff changeset
   142
48194c26a46c Initial revision
claus
parents:
diff changeset
   143
    self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
   144
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   145
48194c26a46c Initial revision
claus
parents:
diff changeset
   146
close
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   147
    "close down connection to Display - usually never done"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   148
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   149
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
   150
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   151
48194c26a46c Initial revision
claus
parents:
diff changeset
   152
reinitialize
48194c26a46c Initial revision
claus
parents:
diff changeset
   153
    "reinit after snapin"
48194c26a46c Initial revision
claus
parents:
diff changeset
   154
48194c26a46c Initial revision
claus
parents:
diff changeset
   155
    |prevKnownViews|
48194c26a46c Initial revision
claus
parents:
diff changeset
   156
48194c26a46c Initial revision
claus
parents:
diff changeset
   157
    displayId := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
   158
    prevKnownViews := knownViews.
48194c26a46c Initial revision
claus
parents:
diff changeset
   159
    knownViews := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
   160
    knownIds := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
   161
48194c26a46c Initial revision
claus
parents:
diff changeset
   162
    self initializeFor:nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
   163
48194c26a46c Initial revision
claus
parents:
diff changeset
   164
    "now, all Forms must be recreated"
48194c26a46c Initial revision
claus
parents:
diff changeset
   165
48194c26a46c Initial revision
claus
parents:
diff changeset
   166
    Form reinitializeAllOn:self.
48194c26a46c Initial revision
claus
parents:
diff changeset
   167
48194c26a46c Initial revision
claus
parents:
diff changeset
   168
    prevKnownViews notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   169
        "
48194c26a46c Initial revision
claus
parents:
diff changeset
   170
         first round: flush all device specific stuff
48194c26a46c Initial revision
claus
parents:
diff changeset
   171
        "
48194c26a46c Initial revision
claus
parents:
diff changeset
   172
        prevKnownViews do:[:aView |
48194c26a46c Initial revision
claus
parents:
diff changeset
   173
            aView notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   174
                aView prepareForReinit
48194c26a46c Initial revision
claus
parents:
diff changeset
   175
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   176
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   177
        "
48194c26a46c Initial revision
claus
parents:
diff changeset
   178
         2nd round: all views should reinstall themself
48194c26a46c Initial revision
claus
parents:
diff changeset
   179
                    on the new display
48194c26a46c Initial revision
claus
parents:
diff changeset
   180
        "
48194c26a46c Initial revision
claus
parents:
diff changeset
   181
        prevKnownViews do:[:aView |
48194c26a46c Initial revision
claus
parents:
diff changeset
   182
            aView notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   183
                "have to re-create the view"
48194c26a46c Initial revision
claus
parents:
diff changeset
   184
                aView reinitialize
48194c26a46c Initial revision
claus
parents:
diff changeset
   185
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   186
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   187
        "
48194c26a46c Initial revision
claus
parents:
diff changeset
   188
         3rd round: all views get a chance to handle
48194c26a46c Initial revision
claus
parents:
diff changeset
   189
                    changed environment (colors, font sizes etc)
48194c26a46c Initial revision
claus
parents:
diff changeset
   190
        "
48194c26a46c Initial revision
claus
parents:
diff changeset
   191
        prevKnownViews do:[:aView |
48194c26a46c Initial revision
claus
parents:
diff changeset
   192
            aView notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   193
                aView reAdjustGeometry
48194c26a46c Initial revision
claus
parents:
diff changeset
   194
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   195
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   196
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   197
    dispatching := false
48194c26a46c Initial revision
claus
parents:
diff changeset
   198
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   199
48194c26a46c Initial revision
claus
parents:
diff changeset
   200
initializeKeyboardMap
48194c26a46c Initial revision
claus
parents:
diff changeset
   201
    "keystrokes from the server are translated via the keyboard map.
48194c26a46c Initial revision
claus
parents:
diff changeset
   202
     Untranslated keystrokes arrive either as characters, or symbols
48194c26a46c Initial revision
claus
parents:
diff changeset
   203
     (which are the keySyms as symbol). The mapping table which is
48194c26a46c Initial revision
claus
parents:
diff changeset
   204
     setup here, is used in sendKeyPress:... later.
48194c26a46c Initial revision
claus
parents:
diff changeset
   205
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   206
48194c26a46c Initial revision
claus
parents:
diff changeset
   207
    keyboardMap := KeyboardMap new.
48194c26a46c Initial revision
claus
parents:
diff changeset
   208
48194c26a46c Initial revision
claus
parents:
diff changeset
   209
    keyboardMap bindValue:#Copy    to:#Cmdc.
48194c26a46c Initial revision
claus
parents:
diff changeset
   210
    keyboardMap bindValue:#Cut     to:#Cmdx.
48194c26a46c Initial revision
claus
parents:
diff changeset
   211
    keyboardMap bindValue:#Paste   to:#Cmdv.
48194c26a46c Initial revision
claus
parents:
diff changeset
   212
    keyboardMap bindValue:#Replace to:#Cmdr.
48194c26a46c Initial revision
claus
parents:
diff changeset
   213
48194c26a46c Initial revision
claus
parents:
diff changeset
   214
    keyboardMap bindValue:#Find     to:#Cmds.
48194c26a46c Initial revision
claus
parents:
diff changeset
   215
    keyboardMap bindValue:#FindNext to:#Cmdf.
48194c26a46c Initial revision
claus
parents:
diff changeset
   216
    keyboardMap bindValue:#FindPrev to:#Cmdb.
48194c26a46c Initial revision
claus
parents:
diff changeset
   217
48194c26a46c Initial revision
claus
parents:
diff changeset
   218
    keyboardMap bindValue:#SelectAll to:#CmdA.
48194c26a46c Initial revision
claus
parents:
diff changeset
   219
48194c26a46c Initial revision
claus
parents:
diff changeset
   220
    (OperatingSystem getSystemType = 'sunos') ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   221
        "
48194c26a46c Initial revision
claus
parents:
diff changeset
   222
         define suns left-function keys
48194c26a46c Initial revision
claus
parents:
diff changeset
   223
         (this really should be done by xmodmap/server)
48194c26a46c Initial revision
claus
parents:
diff changeset
   224
        "
48194c26a46c Initial revision
claus
parents:
diff changeset
   225
        keyboardMap bindValue:#Find  to:#F19.
48194c26a46c Initial revision
claus
parents:
diff changeset
   226
        keyboardMap bindValue:#Cut   to:#F20.
48194c26a46c Initial revision
claus
parents:
diff changeset
   227
        keyboardMap bindValue:#Paste to:#F18.
48194c26a46c Initial revision
claus
parents:
diff changeset
   228
        keyboardMap bindValue:#Open  to:#F17.
48194c26a46c Initial revision
claus
parents:
diff changeset
   229
        keyboardMap bindValue:#Copy  to:#F16.
48194c26a46c Initial revision
claus
parents:
diff changeset
   230
        keyboardMap bindValue:#Undo  to:#F14.
48194c26a46c Initial revision
claus
parents:
diff changeset
   231
        keyboardMap bindValue:#Props to:#F13.
48194c26a46c Initial revision
claus
parents:
diff changeset
   232
        keyboardMap bindValue:#Again to:#F12.
48194c26a46c Initial revision
claus
parents:
diff changeset
   233
        keyboardMap bindValue:#Prior to:#F29.
48194c26a46c Initial revision
claus
parents:
diff changeset
   234
        keyboardMap bindValue:#Next  to:#F35.
48194c26a46c Initial revision
claus
parents:
diff changeset
   235
        keyboardMap bindValue:#Home  to:#F27.
48194c26a46c Initial revision
claus
parents:
diff changeset
   236
        keyboardMap bindValue:#End   to:#R13.
48194c26a46c Initial revision
claus
parents:
diff changeset
   237
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   238
48194c26a46c Initial revision
claus
parents:
diff changeset
   239
    (OperatingSystem getSystemType = 'next') ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   240
        "
48194c26a46c Initial revision
claus
parents:
diff changeset
   241
         kludge for my next server with german keyboard:
48194c26a46c Initial revision
claus
parents:
diff changeset
   242
         the modifier map does not allow me to include alt-key
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   243
         modification - therefore, its done here, which is stupid
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   244
        "
48194c26a46c Initial revision
claus
parents:
diff changeset
   245
        keyboardMap bindValue:$~ to:#Alt1.
48194c26a46c Initial revision
claus
parents:
diff changeset
   246
        keyboardMap bindValue:$< to:#Alt4.
48194c26a46c Initial revision
claus
parents:
diff changeset
   247
        keyboardMap bindValue:$> to:#Alt5.
48194c26a46c Initial revision
claus
parents:
diff changeset
   248
        keyboardMap bindValue:$| to:#Alt6.
48194c26a46c Initial revision
claus
parents:
diff changeset
   249
        keyboardMap bindValue:${ to:#Alt7.
48194c26a46c Initial revision
claus
parents:
diff changeset
   250
        keyboardMap bindValue:$[ to:#Alt8.
48194c26a46c Initial revision
claus
parents:
diff changeset
   251
        keyboardMap bindValue:$] to:#Alt9.
48194c26a46c Initial revision
claus
parents:
diff changeset
   252
        keyboardMap bindValue:$} to:#Alt0.
48194c26a46c Initial revision
claus
parents:
diff changeset
   253
        keyboardMap bindValue:$# to:#'Alt+'.
48194c26a46c Initial revision
claus
parents:
diff changeset
   254
        keyboardMap bindValue:$@ to:#'Alt'''.
48194c26a46c Initial revision
claus
parents:
diff changeset
   255
        keyboardMap bindValue:$^ to:#'Alt`'.
48194c26a46c Initial revision
claus
parents:
diff changeset
   256
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   257
48194c26a46c Initial revision
claus
parents:
diff changeset
   258
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   259
     international characters - map to iso8859 values
48194c26a46c Initial revision
claus
parents:
diff changeset
   260
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   261
    keyboardMap bindValue:(Character value:16rFC) to:#udiaeresis.
48194c26a46c Initial revision
claus
parents:
diff changeset
   262
    keyboardMap bindValue:(Character value:16rE4) to:#adiaeresis.
48194c26a46c Initial revision
claus
parents:
diff changeset
   263
    keyboardMap bindValue:(Character value:16rF6) to:#odiaeresis.
48194c26a46c Initial revision
claus
parents:
diff changeset
   264
    keyboardMap bindValue:(Character value:16rDC) to:#Udiaeresis.
48194c26a46c Initial revision
claus
parents:
diff changeset
   265
    keyboardMap bindValue:(Character value:16rC4) to:#Adiaeresis.
48194c26a46c Initial revision
claus
parents:
diff changeset
   266
    keyboardMap bindValue:(Character value:16rD6) to:#Odiaeresis.
48194c26a46c Initial revision
claus
parents:
diff changeset
   267
    keyboardMap bindValue:(Character value:16rDF) to:#ssharp.
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   268
    "
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   269
     and also the pre-translated characters
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   270
     for those characters which are already translated by
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   271
     modifier map
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   272
    "
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   273
    keyboardMap bindValue:$~ to:#'Cmd~'.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   274
    keyboardMap bindValue:$\ to:#'Cmd\'.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   275
    keyboardMap bindValue:$| to:#'Cmd|'.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   276
    keyboardMap bindValue:${ to:#'Cmd{'.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   277
    keyboardMap bindValue:$[ to:#'Cmd['.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   278
    keyboardMap bindValue:$] to:#'Cmd]'.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   279
    keyboardMap bindValue:$} to:#'Cmd}'.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   280
    keyboardMap bindValue:$@ to:#'Cmd@'.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   281
48194c26a46c Initial revision
claus
parents:
diff changeset
   282
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   283
     more needed, french for example ...
48194c26a46c Initial revision
claus
parents:
diff changeset
   284
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   285
48194c26a46c Initial revision
claus
parents:
diff changeset
   286
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   287
     misc characters
48194c26a46c Initial revision
claus
parents:
diff changeset
   288
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   289
    keyboardMap bindValue:(Character value:16rA7) to:#section.
48194c26a46c Initial revision
claus
parents:
diff changeset
   290
    keyboardMap bindValue:(Character value:16rB0) to:#degree.
48194c26a46c Initial revision
claus
parents:
diff changeset
   291
    keyboardMap bindValue:(Character value:16rB2) to:#twosuperior.
48194c26a46c Initial revision
claus
parents:
diff changeset
   292
    keyboardMap bindValue:(Character value:16rB3) to:#threesuperior.
48194c26a46c Initial revision
claus
parents:
diff changeset
   293
    keyboardMap bindValue:(Character value:16rB5) to:#mu.
48194c26a46c Initial revision
claus
parents:
diff changeset
   294
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   295
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   296
!DeviceWorkstation class methodsFor:'error handling'!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   297
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   298
resourceIdOfLastError
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   299
    "return the resource id responsible for the last error"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   300
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   301
    ^ self subclassResponsibility
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   302
!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   303
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   304
lastError
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   305
    "return a string descibing the last error"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   306
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   307
    ^ self subclassResponsibility
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   308
!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   309
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   310
errorInterrupt
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   311
    "x-error interrupt"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   312
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   313
    |badId badResource|
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   314
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   315
    badId := self resourceIdOfLastError.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   316
    badId ~~ 0 ifTrue:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   317
        badResource := self resourceOfId:badId.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   318
    ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   319
    ^ DeviceErrorSignal
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   320
            raiseRequestWith:badResource
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   321
            errorString: 'Display error: ' , (self lastError)
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   322
!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   323
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   324
resourceOfId:id
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   325
    "search thru all device stuff for a resource.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   326
     Needed for error handling"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   327
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   328
    Form allInstances do:[:f |
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   329
        f id == id ifTrue:[^ f]
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   330
    ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   331
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   332
    self allInstances do:[:aDisplay |
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   333
        |views|
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   334
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   335
        views := aDisplay knownViews.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   336
        views notNil ifTrue:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   337
            views do:[:v |
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   338
                v id == id ifTrue:[^ v].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   339
                v gcId == id ifTrue:[^ v]
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   340
            ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   341
        ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   342
    ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   343
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   344
    Color allInstances do:[:c |
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   345
        c colorId == id ifTrue:[^ c]
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   346
    ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   347
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   348
    Font allInstances do:[:f |
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   349
        f fontId == id ifTrue:[^ f]
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   350
    ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   351
    ^ nil
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   352
! !
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   353
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   354
!DeviceWorkstation methodsFor:'misc'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   355
48194c26a46c Initial revision
claus
parents:
diff changeset
   356
metaDown
48194c26a46c Initial revision
claus
parents:
diff changeset
   357
    "return true, if the meta-key (alt-key on systems without meta)
48194c26a46c Initial revision
claus
parents:
diff changeset
   358
     is currently pressed"
48194c26a46c Initial revision
claus
parents:
diff changeset
   359
48194c26a46c Initial revision
claus
parents:
diff changeset
   360
    ^ metaDown
48194c26a46c Initial revision
claus
parents:
diff changeset
   361
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   362
48194c26a46c Initial revision
claus
parents:
diff changeset
   363
altDown
48194c26a46c Initial revision
claus
parents:
diff changeset
   364
    "return true, if the alt-key is currently pressed"
48194c26a46c Initial revision
claus
parents:
diff changeset
   365
48194c26a46c Initial revision
claus
parents:
diff changeset
   366
    ^ altDown
48194c26a46c Initial revision
claus
parents:
diff changeset
   367
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   368
48194c26a46c Initial revision
claus
parents:
diff changeset
   369
controlDown
48194c26a46c Initial revision
claus
parents:
diff changeset
   370
    "return true, if the control-key is currently pressed"
48194c26a46c Initial revision
claus
parents:
diff changeset
   371
48194c26a46c Initial revision
claus
parents:
diff changeset
   372
    ^ controlDown
48194c26a46c Initial revision
claus
parents:
diff changeset
   373
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   374
48194c26a46c Initial revision
claus
parents:
diff changeset
   375
shiftDown
48194c26a46c Initial revision
claus
parents:
diff changeset
   376
    "return true, if the shift-key is currently pressed"
48194c26a46c Initial revision
claus
parents:
diff changeset
   377
48194c26a46c Initial revision
claus
parents:
diff changeset
   378
    ^ shiftDown
48194c26a46c Initial revision
claus
parents:
diff changeset
   379
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   380
48194c26a46c Initial revision
claus
parents:
diff changeset
   381
unBuffered
48194c26a46c Initial revision
claus
parents:
diff changeset
   382
    "make all drawing be sent immediately to the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   383
48194c26a46c Initial revision
claus
parents:
diff changeset
   384
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
   385
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   386
48194c26a46c Initial revision
claus
parents:
diff changeset
   387
buffered
48194c26a46c Initial revision
claus
parents:
diff changeset
   388
    "buffer drawing - do not send it immediately to the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   389
48194c26a46c Initial revision
claus
parents:
diff changeset
   390
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
   391
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   392
    
48194c26a46c Initial revision
claus
parents:
diff changeset
   393
synchronizeOutput
48194c26a46c Initial revision
claus
parents:
diff changeset
   394
    "send all buffered drawing to the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   395
48194c26a46c Initial revision
claus
parents:
diff changeset
   396
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
   397
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   398
48194c26a46c Initial revision
claus
parents:
diff changeset
   399
compressMotionEvents:aBoolean
48194c26a46c Initial revision
claus
parents:
diff changeset
   400
    "turn on/off motion event compression 
48194c26a46c Initial revision
claus
parents:
diff changeset
   401
     - compressions makes always sense except in free-hand drawing of curves"
48194c26a46c Initial revision
claus
parents:
diff changeset
   402
48194c26a46c Initial revision
claus
parents:
diff changeset
   403
    motionEventCompression := aBoolean
48194c26a46c Initial revision
claus
parents:
diff changeset
   404
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   405
48194c26a46c Initial revision
claus
parents:
diff changeset
   406
hasColors:aBoolean
48194c26a46c Initial revision
claus
parents:
diff changeset
   407
    "set the hasColors flag - needed since some servers dont tell the
48194c26a46c Initial revision
claus
parents:
diff changeset
   408
     truth if a monochrome monitor is connected to a color server"
48194c26a46c Initial revision
claus
parents:
diff changeset
   409
48194c26a46c Initial revision
claus
parents:
diff changeset
   410
    hasColors := aBoolean
48194c26a46c Initial revision
claus
parents:
diff changeset
   411
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   412
48194c26a46c Initial revision
claus
parents:
diff changeset
   413
hasGreyscales:aBoolean
48194c26a46c Initial revision
claus
parents:
diff changeset
   414
    "set the hasGreyscales flag - can be used to simulate b&w behavior"
48194c26a46c Initial revision
claus
parents:
diff changeset
   415
48194c26a46c Initial revision
claus
parents:
diff changeset
   416
    hasGreyscales := aBoolean
48194c26a46c Initial revision
claus
parents:
diff changeset
   417
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   418
48194c26a46c Initial revision
claus
parents:
diff changeset
   419
ignoreBackingStore:aBoolean
48194c26a46c Initial revision
claus
parents:
diff changeset
   420
    "if the argument is true, the views backingStore setting will be ignored, and
48194c26a46c Initial revision
claus
parents:
diff changeset
   421
     no backing store used - this can be used on servers where backing store is
48194c26a46c Initial revision
claus
parents:
diff changeset
   422
     very slow (from rc-file)"
48194c26a46c Initial revision
claus
parents:
diff changeset
   423
48194c26a46c Initial revision
claus
parents:
diff changeset
   424
    ignoreBackingStore := aBoolean
48194c26a46c Initial revision
claus
parents:
diff changeset
   425
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   426
48194c26a46c Initial revision
claus
parents:
diff changeset
   427
beep
48194c26a46c Initial revision
claus
parents:
diff changeset
   428
    "output an audible beep or bell"
48194c26a46c Initial revision
claus
parents:
diff changeset
   429
48194c26a46c Initial revision
claus
parents:
diff changeset
   430
    Stdout nextPut:(Character bell)
48194c26a46c Initial revision
claus
parents:
diff changeset
   431
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   432
48194c26a46c Initial revision
claus
parents:
diff changeset
   433
setInputFocusTo:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
   434
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
   435
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   436
48194c26a46c Initial revision
claus
parents:
diff changeset
   437
!DeviceWorkstation methodsFor:'enumeration'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   438
48194c26a46c Initial revision
claus
parents:
diff changeset
   439
allViewsDo:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
   440
    "evaluate the argument, aBlock for all known views"
48194c26a46c Initial revision
claus
parents:
diff changeset
   441
48194c26a46c Initial revision
claus
parents:
diff changeset
   442
    knownViews notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   443
        knownViews do:[:aView |
48194c26a46c Initial revision
claus
parents:
diff changeset
   444
            aView notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   445
                aBlock value:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   446
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   447
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   448
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   449
48194c26a46c Initial revision
claus
parents:
diff changeset
   450
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   451
     View defaultStyle:#iris.
48194c26a46c Initial revision
claus
parents:
diff changeset
   452
     Display allViewsDo:[:v | v initStyle. v redraw]
48194c26a46c Initial revision
claus
parents:
diff changeset
   453
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   454
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   455
     View defaultStyle:#next.
48194c26a46c Initial revision
claus
parents:
diff changeset
   456
     Display allViewsDo:[:v | v initStyle. v redraw]
48194c26a46c Initial revision
claus
parents:
diff changeset
   457
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   458
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   459
     View defaultStyle:#normal.
48194c26a46c Initial revision
claus
parents:
diff changeset
   460
     Display allViewsDo:[:v | v initStyle. v redraw]
48194c26a46c Initial revision
claus
parents:
diff changeset
   461
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   462
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   463
48194c26a46c Initial revision
claus
parents:
diff changeset
   464
!DeviceWorkstation methodsFor:'accessing & queries'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   465
48194c26a46c Initial revision
claus
parents:
diff changeset
   466
displayFileDescriptor
48194c26a46c Initial revision
claus
parents:
diff changeset
   467
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
   468
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   469
48194c26a46c Initial revision
claus
parents:
diff changeset
   470
serverVendor
48194c26a46c Initial revision
claus
parents:
diff changeset
   471
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
   472
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   473
48194c26a46c Initial revision
claus
parents:
diff changeset
   474
vendorRelease
48194c26a46c Initial revision
claus
parents:
diff changeset
   475
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
   476
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   477
48194c26a46c Initial revision
claus
parents:
diff changeset
   478
protocolVersion
48194c26a46c Initial revision
claus
parents:
diff changeset
   479
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
   480
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   481
48194c26a46c Initial revision
claus
parents:
diff changeset
   482
blackpixel
48194c26a46c Initial revision
claus
parents:
diff changeset
   483
    "return the colorId of black"
48194c26a46c Initial revision
claus
parents:
diff changeset
   484
48194c26a46c Initial revision
claus
parents:
diff changeset
   485
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
   486
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   487
48194c26a46c Initial revision
claus
parents:
diff changeset
   488
whitepixel
48194c26a46c Initial revision
claus
parents:
diff changeset
   489
    "return the colorId of white"
48194c26a46c Initial revision
claus
parents:
diff changeset
   490
48194c26a46c Initial revision
claus
parents:
diff changeset
   491
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
   492
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   493
48194c26a46c Initial revision
claus
parents:
diff changeset
   494
viewIdFromPoint:aPoint in:windowId
48194c26a46c Initial revision
claus
parents:
diff changeset
   495
    "given a point in rootWindow, return the viewId of the subview of windowId
48194c26a46c Initial revision
claus
parents:
diff changeset
   496
     hit by this coordinate.
48194c26a46c Initial revision
claus
parents:
diff changeset
   497
     return nil if no view was hit.
48194c26a46c Initial revision
claus
parents:
diff changeset
   498
     - use to find window to drop objects after a cross-view drag"
48194c26a46c Initial revision
claus
parents:
diff changeset
   499
48194c26a46c Initial revision
claus
parents:
diff changeset
   500
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
   501
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   502
48194c26a46c Initial revision
claus
parents:
diff changeset
   503
translatePoint:aPoint from:windowId1 to:windowId2
48194c26a46c Initial revision
claus
parents:
diff changeset
   504
    "given a point in window1, return the coordinate in window2
48194c26a46c Initial revision
claus
parents:
diff changeset
   505
     - use to xlate points from a window to rootwindow"
48194c26a46c Initial revision
claus
parents:
diff changeset
   506
48194c26a46c Initial revision
claus
parents:
diff changeset
   507
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
   508
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   509
48194c26a46c Initial revision
claus
parents:
diff changeset
   510
id
48194c26a46c Initial revision
claus
parents:
diff changeset
   511
    "return the displayId"
48194c26a46c Initial revision
claus
parents:
diff changeset
   512
48194c26a46c Initial revision
claus
parents:
diff changeset
   513
    ^ displayId
48194c26a46c Initial revision
claus
parents:
diff changeset
   514
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   515
48194c26a46c Initial revision
claus
parents:
diff changeset
   516
ncells
48194c26a46c Initial revision
claus
parents:
diff changeset
   517
    "return the number of color cells, the display has"
48194c26a46c Initial revision
claus
parents:
diff changeset
   518
48194c26a46c Initial revision
claus
parents:
diff changeset
   519
    ^ ncells
48194c26a46c Initial revision
claus
parents:
diff changeset
   520
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   521
48194c26a46c Initial revision
claus
parents:
diff changeset
   522
depth
48194c26a46c Initial revision
claus
parents:
diff changeset
   523
    "return the depth in pixels of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   524
48194c26a46c Initial revision
claus
parents:
diff changeset
   525
    ^ depth
48194c26a46c Initial revision
claus
parents:
diff changeset
   526
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   527
48194c26a46c Initial revision
claus
parents:
diff changeset
   528
bitsPerRGB
48194c26a46c Initial revision
claus
parents:
diff changeset
   529
    "return the number of valid bits per rgb component"
48194c26a46c Initial revision
claus
parents:
diff changeset
   530
48194c26a46c Initial revision
claus
parents:
diff changeset
   531
    ^ bitsPerRGB
48194c26a46c Initial revision
claus
parents:
diff changeset
   532
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   533
48194c26a46c Initial revision
claus
parents:
diff changeset
   534
visualType:aSymbol
48194c26a46c Initial revision
claus
parents:
diff changeset
   535
    "set the visual type. The only situation, where this makes sense,
48194c26a46c Initial revision
claus
parents:
diff changeset
   536
     is with my plasma-display, which ignores the palette and spits out
48194c26a46c Initial revision
claus
parents:
diff changeset
   537
     grey scales independent of LUT definitions. (of which the server
48194c26a46c Initial revision
claus
parents:
diff changeset
   538
     knows nothing)"
48194c26a46c Initial revision
claus
parents:
diff changeset
   539
48194c26a46c Initial revision
claus
parents:
diff changeset
   540
    visualType := aSymbol.
48194c26a46c Initial revision
claus
parents:
diff changeset
   541
    (visualType == #StaticGray or:[visualType == #GrayScale]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   542
        hasColors := false
48194c26a46c Initial revision
claus
parents:
diff changeset
   543
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   544
        hasColors := true
48194c26a46c Initial revision
claus
parents:
diff changeset
   545
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   546
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   547
48194c26a46c Initial revision
claus
parents:
diff changeset
   548
visualType
48194c26a46c Initial revision
claus
parents:
diff changeset
   549
    "return a symbol representing the visual type of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   550
48194c26a46c Initial revision
claus
parents:
diff changeset
   551
    ^ visualType
48194c26a46c Initial revision
claus
parents:
diff changeset
   552
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   553
48194c26a46c Initial revision
claus
parents:
diff changeset
   554
monitorType
48194c26a46c Initial revision
claus
parents:
diff changeset
   555
    "return a symbol representing the monitor type of the display.
48194c26a46c Initial revision
claus
parents:
diff changeset
   556
     It is usually set to #unknown, #color or #monochrome.
48194c26a46c Initial revision
claus
parents:
diff changeset
   557
     But it can be set to any value from the startup file, for later
48194c26a46c Initial revision
claus
parents:
diff changeset
   558
     testing from anywhere. For example the startup for plasma-displays 
48194c26a46c Initial revision
claus
parents:
diff changeset
   559
     can set it to #plasma to later influence the colors used in widgets
48194c26a46c Initial revision
claus
parents:
diff changeset
   560
     (indirectly through the resource file)."
48194c26a46c Initial revision
claus
parents:
diff changeset
   561
48194c26a46c Initial revision
claus
parents:
diff changeset
   562
    ^ monitorType
48194c26a46c Initial revision
claus
parents:
diff changeset
   563
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   564
48194c26a46c Initial revision
claus
parents:
diff changeset
   565
monitorType:aSymbol
48194c26a46c Initial revision
claus
parents:
diff changeset
   566
    "set the monitorType - see comment in DeviceWorkstation>>montorType"
48194c26a46c Initial revision
claus
parents:
diff changeset
   567
48194c26a46c Initial revision
claus
parents:
diff changeset
   568
    monitorType := aSymbol
48194c26a46c Initial revision
claus
parents:
diff changeset
   569
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   570
48194c26a46c Initial revision
claus
parents:
diff changeset
   571
hasColors
48194c26a46c Initial revision
claus
parents:
diff changeset
   572
    "return true, if its a color display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   573
48194c26a46c Initial revision
claus
parents:
diff changeset
   574
    ^ hasColors
48194c26a46c Initial revision
claus
parents:
diff changeset
   575
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   576
48194c26a46c Initial revision
claus
parents:
diff changeset
   577
hasGreyscales
48194c26a46c Initial revision
claus
parents:
diff changeset
   578
    "return true, if this workstation supports greyscales
48194c26a46c Initial revision
claus
parents:
diff changeset
   579
     (also true for color displays)"
48194c26a46c Initial revision
claus
parents:
diff changeset
   580
48194c26a46c Initial revision
claus
parents:
diff changeset
   581
    ^ hasGreyscales
48194c26a46c Initial revision
claus
parents:
diff changeset
   582
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   583
48194c26a46c Initial revision
claus
parents:
diff changeset
   584
hasShape
48194c26a46c Initial revision
claus
parents:
diff changeset
   585
    "return true, if this workstation supports non-rectangular windows"
48194c26a46c Initial revision
claus
parents:
diff changeset
   586
48194c26a46c Initial revision
claus
parents:
diff changeset
   587
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   588
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   589
48194c26a46c Initial revision
claus
parents:
diff changeset
   590
hasShm
48194c26a46c Initial revision
claus
parents:
diff changeset
   591
    "return true, if this workstation supports shared pixmaps"
48194c26a46c Initial revision
claus
parents:
diff changeset
   592
48194c26a46c Initial revision
claus
parents:
diff changeset
   593
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   594
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   595
48194c26a46c Initial revision
claus
parents:
diff changeset
   596
hasFax
48194c26a46c Initial revision
claus
parents:
diff changeset
   597
    "return true, if this workstation supports decompression of fax images"
48194c26a46c Initial revision
claus
parents:
diff changeset
   598
48194c26a46c Initial revision
claus
parents:
diff changeset
   599
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   600
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   601
48194c26a46c Initial revision
claus
parents:
diff changeset
   602
hasDPS
48194c26a46c Initial revision
claus
parents:
diff changeset
   603
    "return true, if the server support postscript output into views"
48194c26a46c Initial revision
claus
parents:
diff changeset
   604
48194c26a46c Initial revision
claus
parents:
diff changeset
   605
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   606
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   607
48194c26a46c Initial revision
claus
parents:
diff changeset
   608
keyboardMap
48194c26a46c Initial revision
claus
parents:
diff changeset
   609
    "return the keyboard map"
48194c26a46c Initial revision
claus
parents:
diff changeset
   610
48194c26a46c Initial revision
claus
parents:
diff changeset
   611
    ^ keyboardMap
48194c26a46c Initial revision
claus
parents:
diff changeset
   612
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   613
48194c26a46c Initial revision
claus
parents:
diff changeset
   614
width
48194c26a46c Initial revision
claus
parents:
diff changeset
   615
    "return the width in pixels of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   616
48194c26a46c Initial revision
claus
parents:
diff changeset
   617
    ^ width
48194c26a46c Initial revision
claus
parents:
diff changeset
   618
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   619
48194c26a46c Initial revision
claus
parents:
diff changeset
   620
height
48194c26a46c Initial revision
claus
parents:
diff changeset
   621
    "return the height in pixels of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   622
48194c26a46c Initial revision
claus
parents:
diff changeset
   623
    ^ height
48194c26a46c Initial revision
claus
parents:
diff changeset
   624
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   625
48194c26a46c Initial revision
claus
parents:
diff changeset
   626
boundingBox
48194c26a46c Initial revision
claus
parents:
diff changeset
   627
    "return width and height as a Point.
48194c26a46c Initial revision
claus
parents:
diff changeset
   628
     Smalltalk-80 compatibility"
48194c26a46c Initial revision
claus
parents:
diff changeset
   629
48194c26a46c Initial revision
claus
parents:
diff changeset
   630
    ^ Rectangle origin:(0 @ 0) extent:(width @ height)
48194c26a46c Initial revision
claus
parents:
diff changeset
   631
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   632
48194c26a46c Initial revision
claus
parents:
diff changeset
   633
widthInMillimeter
48194c26a46c Initial revision
claus
parents:
diff changeset
   634
    "return the width in millimeter of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   635
48194c26a46c Initial revision
claus
parents:
diff changeset
   636
    ^ widthMM
48194c26a46c Initial revision
claus
parents:
diff changeset
   637
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   638
48194c26a46c Initial revision
claus
parents:
diff changeset
   639
heightInMillimeter
48194c26a46c Initial revision
claus
parents:
diff changeset
   640
    "return the height in millimeter of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   641
48194c26a46c Initial revision
claus
parents:
diff changeset
   642
    ^ heightMM
48194c26a46c Initial revision
claus
parents:
diff changeset
   643
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   644
48194c26a46c Initial revision
claus
parents:
diff changeset
   645
widthInMillimeter:aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
   646
    "set the width in millimeter of the display 
48194c26a46c Initial revision
claus
parents:
diff changeset
   647
     - needed since some X-servers do not tell the truth"
48194c26a46c Initial revision
claus
parents:
diff changeset
   648
48194c26a46c Initial revision
claus
parents:
diff changeset
   649
    widthMM := aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
   650
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   651
48194c26a46c Initial revision
claus
parents:
diff changeset
   652
heightInMillimeter:aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
   653
    "set the height in millimeter of the display 
48194c26a46c Initial revision
claus
parents:
diff changeset
   654
     - needed since some X-servers do not tell the truth"
48194c26a46c Initial revision
claus
parents:
diff changeset
   655
48194c26a46c Initial revision
claus
parents:
diff changeset
   656
    heightMM := aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
   657
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   658
48194c26a46c Initial revision
claus
parents:
diff changeset
   659
pixelPerMillimeter
48194c26a46c Initial revision
claus
parents:
diff changeset
   660
    "return the number of horizontal/vertical pixels per millimeter of the display as Point"
48194c26a46c Initial revision
claus
parents:
diff changeset
   661
48194c26a46c Initial revision
claus
parents:
diff changeset
   662
    ^ (width / widthMM) @ (height / heightMM)
48194c26a46c Initial revision
claus
parents:
diff changeset
   663
48194c26a46c Initial revision
claus
parents:
diff changeset
   664
    "Display pixelPerMillimeter"
48194c26a46c Initial revision
claus
parents:
diff changeset
   665
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   666
48194c26a46c Initial revision
claus
parents:
diff changeset
   667
pixelPerInch
48194c26a46c Initial revision
claus
parents:
diff changeset
   668
    "return the number of horizontal/vertical pixels per inch of the display as Point"
48194c26a46c Initial revision
claus
parents:
diff changeset
   669
48194c26a46c Initial revision
claus
parents:
diff changeset
   670
    ^ ((width / widthMM) @ (height / heightMM)) * 25.4
48194c26a46c Initial revision
claus
parents:
diff changeset
   671
48194c26a46c Initial revision
claus
parents:
diff changeset
   672
    "Display pixelPerInch"
48194c26a46c Initial revision
claus
parents:
diff changeset
   673
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   674
48194c26a46c Initial revision
claus
parents:
diff changeset
   675
horizontalPixelPerMillimeter
48194c26a46c Initial revision
claus
parents:
diff changeset
   676
    "return the number of horizontal pixels per millimeter of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   677
48194c26a46c Initial revision
claus
parents:
diff changeset
   678
    ^ width / widthMM
48194c26a46c Initial revision
claus
parents:
diff changeset
   679
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   680
48194c26a46c Initial revision
claus
parents:
diff changeset
   681
verticalPixelPerMillimeter
48194c26a46c Initial revision
claus
parents:
diff changeset
   682
    "return the number of vertical pixels per millimeter of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   683
48194c26a46c Initial revision
claus
parents:
diff changeset
   684
    ^ height / heightMM
48194c26a46c Initial revision
claus
parents:
diff changeset
   685
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   686
48194c26a46c Initial revision
claus
parents:
diff changeset
   687
horizontalPixelPerInch
48194c26a46c Initial revision
claus
parents:
diff changeset
   688
    "return the number of horizontal pixels per inch of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   689
48194c26a46c Initial revision
claus
parents:
diff changeset
   690
    ^ (width / widthMM) * 25.4
48194c26a46c Initial revision
claus
parents:
diff changeset
   691
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   692
48194c26a46c Initial revision
claus
parents:
diff changeset
   693
verticalPixelPerInch
48194c26a46c Initial revision
claus
parents:
diff changeset
   694
    "return the number of vertical pixels per inch of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   695
48194c26a46c Initial revision
claus
parents:
diff changeset
   696
    ^ (height / heightMM) * 25.4
48194c26a46c Initial revision
claus
parents:
diff changeset
   697
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   698
48194c26a46c Initial revision
claus
parents:
diff changeset
   699
center
48194c26a46c Initial revision
claus
parents:
diff changeset
   700
    "return the centerpoint in pixels of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   701
48194c26a46c Initial revision
claus
parents:
diff changeset
   702
    ^ (width // 2) @ (height // 2)
48194c26a46c Initial revision
claus
parents:
diff changeset
   703
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   704
48194c26a46c Initial revision
claus
parents:
diff changeset
   705
knownViews
48194c26a46c Initial revision
claus
parents:
diff changeset
   706
    "return a collection of all known views"
48194c26a46c Initial revision
claus
parents:
diff changeset
   707
48194c26a46c Initial revision
claus
parents:
diff changeset
   708
    ^ knownViews
48194c26a46c Initial revision
claus
parents:
diff changeset
   709
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   710
48194c26a46c Initial revision
claus
parents:
diff changeset
   711
knownViews:aCollection
48194c26a46c Initial revision
claus
parents:
diff changeset
   712
    "set the collection of all known views - take care,
48194c26a46c Initial revision
claus
parents:
diff changeset
   713
     bad use of this will create funny results; use only for snapshot support"
48194c26a46c Initial revision
claus
parents:
diff changeset
   714
48194c26a46c Initial revision
claus
parents:
diff changeset
   715
    knownViews := aCollection
48194c26a46c Initial revision
claus
parents:
diff changeset
   716
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   717
48194c26a46c Initial revision
claus
parents:
diff changeset
   718
timeOutBlocks
48194c26a46c Initial revision
claus
parents:
diff changeset
   719
    "return the collection of timeout blocks"
48194c26a46c Initial revision
claus
parents:
diff changeset
   720
48194c26a46c Initial revision
claus
parents:
diff changeset
   721
    ^ timeOutBlocks
48194c26a46c Initial revision
claus
parents:
diff changeset
   722
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   723
48194c26a46c Initial revision
claus
parents:
diff changeset
   724
timeOutBlocks:aCollection
48194c26a46c Initial revision
claus
parents:
diff changeset
   725
    "set the collection of timeout blocks - dangerous"
48194c26a46c Initial revision
claus
parents:
diff changeset
   726
48194c26a46c Initial revision
claus
parents:
diff changeset
   727
    timeOutBlocks := aCollection
48194c26a46c Initial revision
claus
parents:
diff changeset
   728
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   729
48194c26a46c Initial revision
claus
parents:
diff changeset
   730
idleBlocks
48194c26a46c Initial revision
claus
parents:
diff changeset
   731
    "return the collection of idle blocks"
48194c26a46c Initial revision
claus
parents:
diff changeset
   732
48194c26a46c Initial revision
claus
parents:
diff changeset
   733
    ^ idleBlocks
48194c26a46c Initial revision
claus
parents:
diff changeset
   734
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   735
48194c26a46c Initial revision
claus
parents:
diff changeset
   736
idleBlocks:aCollection
48194c26a46c Initial revision
claus
parents:
diff changeset
   737
    "set the collection of idle blocks - dangerous"
48194c26a46c Initial revision
claus
parents:
diff changeset
   738
48194c26a46c Initial revision
claus
parents:
diff changeset
   739
    idleBlocks := aCollection
48194c26a46c Initial revision
claus
parents:
diff changeset
   740
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   741
48194c26a46c Initial revision
claus
parents:
diff changeset
   742
48194c26a46c Initial revision
claus
parents:
diff changeset
   743
!DeviceWorkstation methodsFor:'keyboard mapping'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   744
48194c26a46c Initial revision
claus
parents:
diff changeset
   745
sendKeyPress:untranslatedKey x:x y:y view:view controller:controller
48194c26a46c Initial revision
claus
parents:
diff changeset
   746
    "forward a key-press event to either controller or view,
48194c26a46c Initial revision
claus
parents:
diff changeset
   747
     the key is translated via the translation table."
48194c26a46c Initial revision
claus
parents:
diff changeset
   748
48194c26a46c Initial revision
claus
parents:
diff changeset
   749
    |key xlatedKey|
48194c26a46c Initial revision
claus
parents:
diff changeset
   750
48194c26a46c Initial revision
claus
parents:
diff changeset
   751
    key := untranslatedKey.
48194c26a46c Initial revision
claus
parents:
diff changeset
   752
    controlDown ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   753
        (key size == 1) ifTrue:[   "a single character"
48194c26a46c Initial revision
claus
parents:
diff changeset
   754
            key := ('Ctrl' , untranslatedKey asString) asSymbol
48194c26a46c Initial revision
claus
parents:
diff changeset
   755
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   756
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   757
    metaDown ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   758
        (untranslatedKey isMemberOf:Character) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   759
            key := ('Cmd' , untranslatedKey asString) asSymbol
48194c26a46c Initial revision
claus
parents:
diff changeset
   760
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   761
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   762
    altDown ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   763
        (untranslatedKey isMemberOf:Character) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   764
            key := ('Alt' , untranslatedKey asString) asSymbol
48194c26a46c Initial revision
claus
parents:
diff changeset
   765
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   766
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   767
48194c26a46c Initial revision
claus
parents:
diff changeset
   768
48194c26a46c Initial revision
claus
parents:
diff changeset
   769
    xlatedKey := keyboardMap valueFor:key.
48194c26a46c Initial revision
claus
parents:
diff changeset
   770
    xlatedKey notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   771
        controller notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   772
            controller keyPress:xlatedKey x:x y:y in:view
48194c26a46c Initial revision
claus
parents:
diff changeset
   773
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   774
            view keyPress:xlatedKey x:x y:y
48194c26a46c Initial revision
claus
parents:
diff changeset
   775
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   776
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   777
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   778
48194c26a46c Initial revision
claus
parents:
diff changeset
   779
!DeviceWorkstation methodsFor:'private'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   780
48194c26a46c Initial revision
claus
parents:
diff changeset
   781
addKnownView:aView withId:aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
   782
    "add the View aView with Id:aNumber to the list of known views/id's"
48194c26a46c Initial revision
claus
parents:
diff changeset
   783
48194c26a46c Initial revision
claus
parents:
diff changeset
   784
    knownViews isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   785
        knownViews := (VariableArray new:100) grow:0.
48194c26a46c Initial revision
claus
parents:
diff changeset
   786
        knownIds := (VariableArray new:100) grow:0
48194c26a46c Initial revision
claus
parents:
diff changeset
   787
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   788
    knownViews add:aView.
48194c26a46c Initial revision
claus
parents:
diff changeset
   789
    knownIds add:aNumber.
48194c26a46c Initial revision
claus
parents:
diff changeset
   790
    lastView := aView.
48194c26a46c Initial revision
claus
parents:
diff changeset
   791
    lastId := aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
   792
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   793
48194c26a46c Initial revision
claus
parents:
diff changeset
   794
removeKnownView:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   795
    "remove aView from the list of known views/id's"
48194c26a46c Initial revision
claus
parents:
diff changeset
   796
48194c26a46c Initial revision
claus
parents:
diff changeset
   797
    |index|
48194c26a46c Initial revision
claus
parents:
diff changeset
   798
48194c26a46c Initial revision
claus
parents:
diff changeset
   799
    knownViews notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   800
        index := knownViews identityIndexOf:aView ifAbsent:[0].
48194c26a46c Initial revision
claus
parents:
diff changeset
   801
        (index == 0) ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   802
            knownViews removeIndex:index.
48194c26a46c Initial revision
claus
parents:
diff changeset
   803
            knownIds removeIndex:index.
48194c26a46c Initial revision
claus
parents:
diff changeset
   804
            lastId := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
   805
            lastView := nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   806
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   807
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   808
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   809
48194c26a46c Initial revision
claus
parents:
diff changeset
   810
viewFromId:aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
   811
    "given an Id, return the corresponding view"
48194c26a46c Initial revision
claus
parents:
diff changeset
   812
48194c26a46c Initial revision
claus
parents:
diff changeset
   813
    |index|
48194c26a46c Initial revision
claus
parents:
diff changeset
   814
48194c26a46c Initial revision
claus
parents:
diff changeset
   815
    (aNumber == lastId) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   816
        ^ lastView
48194c26a46c Initial revision
claus
parents:
diff changeset
   817
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   818
    index := knownIds identityIndexOf:aNumber ifAbsent:[0].
48194c26a46c Initial revision
claus
parents:
diff changeset
   819
    (index == 0) ifTrue:[^ nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
   820
    lastView := knownViews at:index.
48194c26a46c Initial revision
claus
parents:
diff changeset
   821
    lastId := aNumber.
48194c26a46c Initial revision
claus
parents:
diff changeset
   822
    ^ lastView
48194c26a46c Initial revision
claus
parents:
diff changeset
   823
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   824
48194c26a46c Initial revision
claus
parents:
diff changeset
   825
!DeviceWorkstation methodsFor:'font stuff'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   826
48194c26a46c Initial revision
claus
parents:
diff changeset
   827
fontFamilies
48194c26a46c Initial revision
claus
parents:
diff changeset
   828
    "return a set of all available font families on this display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   829
48194c26a46c Initial revision
claus
parents:
diff changeset
   830
    |allFonts families family|
48194c26a46c Initial revision
claus
parents:
diff changeset
   831
48194c26a46c Initial revision
claus
parents:
diff changeset
   832
    allFonts := self listOfAvailableFonts.
48194c26a46c Initial revision
claus
parents:
diff changeset
   833
    allFonts isNil ifTrue:[^ nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
   834
    families := Set new.
48194c26a46c Initial revision
claus
parents:
diff changeset
   835
    allFonts do:[:arr |
48194c26a46c Initial revision
claus
parents:
diff changeset
   836
        family := arr at:1.
48194c26a46c Initial revision
claus
parents:
diff changeset
   837
        family notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   838
            families add:family
48194c26a46c Initial revision
claus
parents:
diff changeset
   839
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   840
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   841
    ^ families
48194c26a46c Initial revision
claus
parents:
diff changeset
   842
48194c26a46c Initial revision
claus
parents:
diff changeset
   843
    "Display fontFamilies"
48194c26a46c Initial revision
claus
parents:
diff changeset
   844
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   845
48194c26a46c Initial revision
claus
parents:
diff changeset
   846
facesInFamily:aFamilyName
48194c26a46c Initial revision
claus
parents:
diff changeset
   847
    "return a set of all available font faces in aFamily on this display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   848
48194c26a46c Initial revision
claus
parents:
diff changeset
   849
    |allFonts faces family face|
48194c26a46c Initial revision
claus
parents:
diff changeset
   850
48194c26a46c Initial revision
claus
parents:
diff changeset
   851
    allFonts := self listOfAvailableFonts.
48194c26a46c Initial revision
claus
parents:
diff changeset
   852
    allFonts isNil ifTrue:[^ nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
   853
    faces := Set new.
48194c26a46c Initial revision
claus
parents:
diff changeset
   854
    allFonts do:[:arr |
48194c26a46c Initial revision
claus
parents:
diff changeset
   855
        family := arr at:1.
48194c26a46c Initial revision
claus
parents:
diff changeset
   856
        (family = aFamilyName) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   857
            face := arr at:2.
48194c26a46c Initial revision
claus
parents:
diff changeset
   858
            faces add:face
48194c26a46c Initial revision
claus
parents:
diff changeset
   859
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   860
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   861
    ^ faces
48194c26a46c Initial revision
claus
parents:
diff changeset
   862
48194c26a46c Initial revision
claus
parents:
diff changeset
   863
    "Display facesInFamily:'times'"
48194c26a46c Initial revision
claus
parents:
diff changeset
   864
    "Display facesInFamily:'fixed'"
48194c26a46c Initial revision
claus
parents:
diff changeset
   865
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   866
48194c26a46c Initial revision
claus
parents:
diff changeset
   867
stylesInFamily:aFamilyName face:aFaceName
48194c26a46c Initial revision
claus
parents:
diff changeset
   868
    "return a set of all available font styles in aFamily/aFace on this display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   869
48194c26a46c Initial revision
claus
parents:
diff changeset
   870
    |allFonts styles family face style|
48194c26a46c Initial revision
claus
parents:
diff changeset
   871
48194c26a46c Initial revision
claus
parents:
diff changeset
   872
    allFonts := self listOfAvailableFonts.
48194c26a46c Initial revision
claus
parents:
diff changeset
   873
    allFonts isNil ifTrue:[^ nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
   874
    styles := Set new.
48194c26a46c Initial revision
claus
parents:
diff changeset
   875
    allFonts do:[:arr |
48194c26a46c Initial revision
claus
parents:
diff changeset
   876
        family := arr at:1.
48194c26a46c Initial revision
claus
parents:
diff changeset
   877
        (family = aFamilyName) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   878
            face := arr at:2.
48194c26a46c Initial revision
claus
parents:
diff changeset
   879
            (face = aFaceName) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   880
                style := arr at:3.
48194c26a46c Initial revision
claus
parents:
diff changeset
   881
                styles add:style
48194c26a46c Initial revision
claus
parents:
diff changeset
   882
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   883
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   884
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   885
    ^ styles
48194c26a46c Initial revision
claus
parents:
diff changeset
   886
48194c26a46c Initial revision
claus
parents:
diff changeset
   887
    "Display stylesInFamily:'times' face:'medium'"
48194c26a46c Initial revision
claus
parents:
diff changeset
   888
    "Display stylesInFamily:'times' face:'bold'"
48194c26a46c Initial revision
claus
parents:
diff changeset
   889
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   890
48194c26a46c Initial revision
claus
parents:
diff changeset
   891
sizesInFamily:aFamilyName face:aFaceName style:aStyleName
48194c26a46c Initial revision
claus
parents:
diff changeset
   892
    "return a set of all available font sizes in aFamily/aFace/aStyle
48194c26a46c Initial revision
claus
parents:
diff changeset
   893
     on this display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   894
48194c26a46c Initial revision
claus
parents:
diff changeset
   895
    |allFonts sizes family face style size|
48194c26a46c Initial revision
claus
parents:
diff changeset
   896
48194c26a46c Initial revision
claus
parents:
diff changeset
   897
    allFonts := self listOfAvailableFonts.
48194c26a46c Initial revision
claus
parents:
diff changeset
   898
    allFonts isNil ifTrue:[^ nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
   899
    sizes := Set new.
48194c26a46c Initial revision
claus
parents:
diff changeset
   900
    allFonts do:[:arr |
48194c26a46c Initial revision
claus
parents:
diff changeset
   901
        family := arr at:1.
48194c26a46c Initial revision
claus
parents:
diff changeset
   902
        (family = aFamilyName) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   903
            face := arr at:2.
48194c26a46c Initial revision
claus
parents:
diff changeset
   904
            (face = aFaceName) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   905
                style := arr at:3.
48194c26a46c Initial revision
claus
parents:
diff changeset
   906
                (style = aStyleName) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   907
                    size := arr at:4.
48194c26a46c Initial revision
claus
parents:
diff changeset
   908
                    sizes add:size
48194c26a46c Initial revision
claus
parents:
diff changeset
   909
                ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   910
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   911
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   912
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   913
    ^ sizes
48194c26a46c Initial revision
claus
parents:
diff changeset
   914
48194c26a46c Initial revision
claus
parents:
diff changeset
   915
    "Display sizesInFamily:'times' face:'medium' style:'italic'"
48194c26a46c Initial revision
claus
parents:
diff changeset
   916
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   917
48194c26a46c Initial revision
claus
parents:
diff changeset
   918
!DeviceWorkstation methodsFor:'window stuff'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   919
48194c26a46c Initial revision
claus
parents:
diff changeset
   920
setCursors:aCursor
48194c26a46c Initial revision
claus
parents:
diff changeset
   921
    "change the cursor of all views to aCursorId"
48194c26a46c Initial revision
claus
parents:
diff changeset
   922
48194c26a46c Initial revision
claus
parents:
diff changeset
   923
    | id |
48194c26a46c Initial revision
claus
parents:
diff changeset
   924
48194c26a46c Initial revision
claus
parents:
diff changeset
   925
    id := (aCursor on:self) id.
48194c26a46c Initial revision
claus
parents:
diff changeset
   926
    id notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   927
        knownViews notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   928
            knownViews do:[:aView |
48194c26a46c Initial revision
claus
parents:
diff changeset
   929
                aView id notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   930
                    self setCursor:id in:(aView id)
48194c26a46c Initial revision
claus
parents:
diff changeset
   931
                ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   932
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   933
            self synchronizeOutput
48194c26a46c Initial revision
claus
parents:
diff changeset
   934
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   935
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   936
48194c26a46c Initial revision
claus
parents:
diff changeset
   937
    "Display setCursors:(Cursor wait"
48194c26a46c Initial revision
claus
parents:
diff changeset
   938
    "Display restoreCursors"
48194c26a46c Initial revision
claus
parents:
diff changeset
   939
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   940
48194c26a46c Initial revision
claus
parents:
diff changeset
   941
restoreCursors
48194c26a46c Initial revision
claus
parents:
diff changeset
   942
    "restore the cursors of all views to their current cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   943
48194c26a46c Initial revision
claus
parents:
diff changeset
   944
    knownViews notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   945
        knownViews do:[:aView |
48194c26a46c Initial revision
claus
parents:
diff changeset
   946
            aView id notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   947
                aView cursor notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   948
                    aView cursor id notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   949
                        self setCursor:(aView cursor id) in:(aView id)
48194c26a46c Initial revision
claus
parents:
diff changeset
   950
                    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   951
                ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   952
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   953
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   954
        self synchronizeOutput
48194c26a46c Initial revision
claus
parents:
diff changeset
   955
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   956
48194c26a46c Initial revision
claus
parents:
diff changeset
   957
    "Display setCursors:(Cursor wait)"
48194c26a46c Initial revision
claus
parents:
diff changeset
   958
    "Display restoreCursors"
48194c26a46c Initial revision
claus
parents:
diff changeset
   959
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   960
48194c26a46c Initial revision
claus
parents:
diff changeset
   961
!DeviceWorkstation methodsFor:'events'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   962
48194c26a46c Initial revision
claus
parents:
diff changeset
   963
addIdleBlock:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
   964
    "add the argument, aBlock to the list of idle-blocks; to be
48194c26a46c Initial revision
claus
parents:
diff changeset
   965
     evaluated whenever no events are pending"
48194c26a46c Initial revision
claus
parents:
diff changeset
   966
48194c26a46c Initial revision
claus
parents:
diff changeset
   967
    idleBlocks isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   968
        idleBlocks := VariableArray new
48194c26a46c Initial revision
claus
parents:
diff changeset
   969
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   970
    idleBlocks add:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
   971
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   972
48194c26a46c Initial revision
claus
parents:
diff changeset
   973
removeIdleBlock:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
   974
    "remove the argument, aBlock from the list of idle-blocks"
48194c26a46c Initial revision
claus
parents:
diff changeset
   975
48194c26a46c Initial revision
claus
parents:
diff changeset
   976
    idleBlocks notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   977
        idleBlocks remove:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
   978
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   979
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   980
48194c26a46c Initial revision
claus
parents:
diff changeset
   981
addTimedBlock:aBlock after:delta
48194c26a46c Initial revision
claus
parents:
diff changeset
   982
    "add the argument, aBlock to the list of time-sceduled-blocks; to be
48194c26a46c Initial revision
claus
parents:
diff changeset
   983
     evaluated after delta seconds; the block will be removed after beeing
48194c26a46c Initial revision
claus
parents:
diff changeset
   984
     evaluated"
48194c26a46c Initial revision
claus
parents:
diff changeset
   985
48194c26a46c Initial revision
claus
parents:
diff changeset
   986
    |now then|
48194c26a46c Initial revision
claus
parents:
diff changeset
   987
48194c26a46c Initial revision
claus
parents:
diff changeset
   988
    now := OperatingSystem getMillisecondTime.
48194c26a46c Initial revision
claus
parents:
diff changeset
   989
    then := OperatingSystem millisecondTimeAdd:now and:(delta * 1000).
48194c26a46c Initial revision
claus
parents:
diff changeset
   990
48194c26a46c Initial revision
claus
parents:
diff changeset
   991
    timeOutBlocks isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   992
        timeOutBlocks := VariableArray with:aBlock.
48194c26a46c Initial revision
claus
parents:
diff changeset
   993
        timeOutTimes := VariableArray with:then
48194c26a46c Initial revision
claus
parents:
diff changeset
   994
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   995
        timeOutBlocks add:aBlock.
48194c26a46c Initial revision
claus
parents:
diff changeset
   996
        timeOutTimes add:then
48194c26a46c Initial revision
claus
parents:
diff changeset
   997
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   998
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   999
48194c26a46c Initial revision
claus
parents:
diff changeset
  1000
removeTimedBlock:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
  1001
    "remove the argument, aBlock from the list of time-sceduled-blocks"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1002
48194c26a46c Initial revision
claus
parents:
diff changeset
  1003
    |index|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1004
48194c26a46c Initial revision
claus
parents:
diff changeset
  1005
    timeOutBlocks notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1006
        index := timeOutBlocks identityIndexOf:aBlock startingAt:1.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1007
        (index ~~ 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1008
            timeOutBlocks removeIndex:index. 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1009
            timeOutTimes removeIndex:index
48194c26a46c Initial revision
claus
parents:
diff changeset
  1010
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1011
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1012
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1013
48194c26a46c Initial revision
claus
parents:
diff changeset
  1014
waitForEventOrTimeoutFor:aViewIdOrNil
48194c26a46c Initial revision
claus
parents:
diff changeset
  1015
    "wait for an event to arrive or the time to next timeout block
48194c26a46c Initial revision
claus
parents:
diff changeset
  1016
     has elepsed - since not all operatingsystems support the select-function
48194c26a46c Initial revision
claus
parents:
diff changeset
  1017
     (correctly) this method may return earlier; this has to be checked in
48194c26a46c Initial revision
claus
parents:
diff changeset
  1018
     the caller"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1019
48194c26a46c Initial revision
claus
parents:
diff changeset
  1020
    |n now thisTime delta minDelta|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1021
48194c26a46c Initial revision
claus
parents:
diff changeset
  1022
    (timeOutBlocks size == 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1023
        ^ self dispatchEventFor:aViewIdOrNil withMask:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
  1024
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1025
48194c26a46c Initial revision
claus
parents:
diff changeset
  1026
    now := OperatingSystem getMillisecondTime.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1027
    thisTime := timeOutTimes at:1.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1028
    (OperatingSystem millisecondTime:thisTime isAfter:now) ifFalse:[^ self].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1029
    minDelta := OperatingSystem millisecondTimeDeltaBetween:thisTime
48194c26a46c Initial revision
claus
parents:
diff changeset
  1030
                                                        and:now.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1031
    n := timeOutBlocks size.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1032
    (n > 1) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1033
        2 to:n do:[:index |
48194c26a46c Initial revision
claus
parents:
diff changeset
  1034
            thisTime := timeOutTimes at:index.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1035
            thisTime == now ifTrue:[^ self].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1036
            (OperatingSystem millisecondTime:thisTime isAfter:now)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1037
            "(thisTime <= now)"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1038
                ifFalse:[^ self].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1039
            "delta := thisTime - now."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1040
            delta := OperatingSystem
48194c26a46c Initial revision
claus
parents:
diff changeset
  1041
                         millisecondTimeDeltaBetween:thisTime
48194c26a46c Initial revision
claus
parents:
diff changeset
  1042
                                                 and:now.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1043
            minDelta := delta min:minDelta
48194c26a46c Initial revision
claus
parents:
diff changeset
  1044
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1045
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1046
    (minDelta > 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1047
        (OperatingSystem getOSType = 'sco') ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1048
            "SCO instant ShitStation has a bug here
48194c26a46c Initial revision
claus
parents:
diff changeset
  1049
             waiting always 1 sec in the select"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1050
48194c26a46c Initial revision
claus
parents:
diff changeset
  1051
            OperatingSystem millisecondDelay:10.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1052
            ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
  1053
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1054
        OperatingSystem selectOn:(self displayFileDescriptor)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1055
                     withTimeOut:(minDelta / 1000)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1056
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1057
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1058
48194c26a46c Initial revision
claus
parents:
diff changeset
  1059
evaluateTimeOutBlocks
48194c26a46c Initial revision
claus
parents:
diff changeset
  1060
    "walk through timeOutBlocks and evaluate those that need to be .."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1061
48194c26a46c Initial revision
claus
parents:
diff changeset
  1062
    |now index endIndex block tBlock blocksToEvaluate|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1063
48194c26a46c Initial revision
claus
parents:
diff changeset
  1064
    endIndex := timeOutBlocks size.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1065
    (endIndex ~~ 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1066
        now := OperatingSystem getMillisecondTime.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1067
        index := 1.
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1068
        blocksToEvaluate := nil.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1069
        [index <= endIndex] whileTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1070
            tBlock := timeOutTimes at:index.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1071
            (OperatingSystem millisecondTime:tBlock isAfter:now) ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1072
                block := timeOutBlocks at:index.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1073
                timeOutTimes removeIndex:index.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1074
                timeOutBlocks removeIndex:index.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1075
                blocksToEvaluate isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1076
                    blocksToEvaluate := OrderedCollection with:block
48194c26a46c Initial revision
claus
parents:
diff changeset
  1077
                ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1078
                    blocksToEvaluate add:block
48194c26a46c Initial revision
claus
parents:
diff changeset
  1079
                ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1080
                "block value. "
48194c26a46c Initial revision
claus
parents:
diff changeset
  1081
                endIndex := endIndex - 1
48194c26a46c Initial revision
claus
parents:
diff changeset
  1082
            ] ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1083
                index := index + 1
48194c26a46c Initial revision
claus
parents:
diff changeset
  1084
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1085
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1086
        blocksToEvaluate notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1087
            blocksToEvaluate do:[:aBlock |
48194c26a46c Initial revision
claus
parents:
diff changeset
  1088
                aBlock value
48194c26a46c Initial revision
claus
parents:
diff changeset
  1089
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1090
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1091
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1092
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1093
48194c26a46c Initial revision
claus
parents:
diff changeset
  1094
dispatch
48194c26a46c Initial revision
claus
parents:
diff changeset
  1095
    "mainloop - fetch event and process - this is done as long as any views
48194c26a46c Initial revision
claus
parents:
diff changeset
  1096
     exist"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1097
48194c26a46c Initial revision
claus
parents:
diff changeset
  1098
    Initializing isNil ifTrue:[ Initializing := false].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1099
    dispatching isNil ifTrue:[ dispatching := false].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1100
48194c26a46c Initial revision
claus
parents:
diff changeset
  1101
    Initializing ifTrue:[^ self].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1102
    dispatching ifTrue:[^ self].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1103
48194c26a46c Initial revision
claus
parents:
diff changeset
  1104
    dispatching := true.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1105
48194c26a46c Initial revision
claus
parents:
diff changeset
  1106
    [dispatching] whileTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1107
        knownViews size == 0 ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1108
            dispatching := false
48194c26a46c Initial revision
claus
parents:
diff changeset
  1109
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1110
            ((knownViews size == 1) and:[(knownViews at:1) == RootView]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1111
                dispatching := false
48194c26a46c Initial revision
claus
parents:
diff changeset
  1112
            ] ifFalse:[
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1113
                self dispatchCheckingIdleAndTimeoutsFor:nil
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1114
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1115
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1116
        Processor yield
48194c26a46c Initial revision
claus
parents:
diff changeset
  1117
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1118
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1119
48194c26a46c Initial revision
claus
parents:
diff changeset
  1120
dispatchWhile:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
  1121
    "get and process next event for any view as long as the argument-block
48194c26a46c Initial revision
claus
parents:
diff changeset
  1122
     evaluates to true"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1123
48194c26a46c Initial revision
claus
parents:
diff changeset
  1124
    self dispatchFor:nil while:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
  1125
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1126
48194c26a46c Initial revision
claus
parents:
diff changeset
  1127
dispatchFor:aViewIdOrNil while:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
  1128
    "get and process next event for aViewId (nil = any) as long as the argument-block
48194c26a46c Initial revision
claus
parents:
diff changeset
  1129
     evaluates to true"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1130
48194c26a46c Initial revision
claus
parents:
diff changeset
  1131
    [aBlock value] whileTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1132
        ((idleBlocks size == 0) and:[timeOutBlocks size == 0]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1133
            self dispatchEventFor:aViewIdOrNil withMask:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
  1134
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1135
            self dispatchCheckingIdleAndTimeoutsFor:aViewIdOrNil
48194c26a46c Initial revision
claus
parents:
diff changeset
  1136
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1137
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1138
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1139
48194c26a46c Initial revision
claus
parents:
diff changeset
  1140
dispatchEvent
48194c26a46c Initial revision
claus
parents:
diff changeset
  1141
    "get and process next event for any view"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1142
48194c26a46c Initial revision
claus
parents:
diff changeset
  1143
    self dispatchEventFor:nil withMask:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
  1144
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1145
48194c26a46c Initial revision
claus
parents:
diff changeset
  1146
dispatchCheckingIdleAndTimeoutsFor:aViewIdOrNil
48194c26a46c Initial revision
claus
parents:
diff changeset
  1147
    "if there is any event pending, process it;
48194c26a46c Initial revision
claus
parents:
diff changeset
  1148
     otherwise evaluate idle blocks (if any)"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1149
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1150
    |limit doingGC|
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1151
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1152
    self eventPendingWithoutSync ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1153
        self dispatchEventFor:aViewIdOrNil withMask:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
  1154
    ] ifFalse:[
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1155
	"no event pending - do background stuff"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1156
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1157
	"if its worth doing, collect a bit of garbage"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1158
	limit := ObjectMemory incrementalGCLimit.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1159
	doingGC := limit notNil and:[ObjectMemory oldSpaceAllocatedSinceLastGC > limit].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1160
	doingGC ifTrue:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1161
	    ObjectMemory gcStep.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1162
	].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1163
        (idleBlocks size ~~ 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1164
            idleBlocks do:[:aBlock |
48194c26a46c Initial revision
claus
parents:
diff changeset
  1165
                aBlock value
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1166
            ].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1167
        ] ifFalse:[
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1168
	    doingGC ifFalse:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1169
                "no idle blocks defined, no event pending;
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1170
                 wait 'til either event arrives or time to next timeoutBlock
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1171
                 has passed ..."
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1172
                self waitForEventOrTimeoutFor:nil
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1173
            ]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1174
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1175
    ].
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1176
    timeOutBlocks size ~~ 0 ifTrue:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1177
        self evaluateTimeOutBlocks
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1178
    ].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1179
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1180
48194c26a46c Initial revision
claus
parents:
diff changeset
  1181
!DeviceWorkstation methodsFor:'bitmap/window creation'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1182
48194c26a46c Initial revision
claus
parents:
diff changeset
  1183
createFaxImageFromArray:data width:w height:h type:type k:k msbFirst:msbFirst
48194c26a46c Initial revision
claus
parents:
diff changeset
  1184
    "create a new faxImage in the workstation
48194c26a46c Initial revision
claus
parents:
diff changeset
  1185
     type: 0 -> uncompressed
48194c26a46c Initial revision
claus
parents:
diff changeset
  1186
           1 -> group3 1D (k is void)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1187
           2 -> group3 2D
48194c26a46c Initial revision
claus
parents:
diff changeset
  1188
           3 -> group4 2D (k is void)"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1189
48194c26a46c Initial revision
claus
parents:
diff changeset
  1190
    ^ nil
48194c26a46c Initial revision
claus
parents:
diff changeset
  1191
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1192
48194c26a46c Initial revision
claus
parents:
diff changeset
  1193
createBitmapWidth:w height:h
48194c26a46c Initial revision
claus
parents:
diff changeset
  1194
    "allocate a bitmap on the Xserver, the contents is undefined
48194c26a46c Initial revision
claus
parents:
diff changeset
  1195
     (i.e. random). Return a bitmap id or nil"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1196
48194c26a46c Initial revision
claus
parents:
diff changeset
  1197
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1198
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1199
48194c26a46c Initial revision
claus
parents:
diff changeset
  1200
createPixmapWidth:w height:h depth:d
48194c26a46c Initial revision
claus
parents:
diff changeset
  1201
    "allocate a pixmap on the Xserver, the contents is undefined
48194c26a46c Initial revision
claus
parents:
diff changeset
  1202
     (i.e. random). Return a bitmap id or nil"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1203
48194c26a46c Initial revision
claus
parents:
diff changeset
  1204
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1205
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1206
48194c26a46c Initial revision
claus
parents:
diff changeset
  1207
createBitmapFromFile:aString for:aForm
48194c26a46c Initial revision
claus
parents:
diff changeset
  1208
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1209
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1210
48194c26a46c Initial revision
claus
parents:
diff changeset
  1211
createBitmapFromArray:anArray width:w height:h
48194c26a46c Initial revision
claus
parents:
diff changeset
  1212
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1213
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1214
48194c26a46c Initial revision
claus
parents:
diff changeset
  1215
destroyPixmap:aDrawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1216
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1217
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1218
48194c26a46c Initial revision
claus
parents:
diff changeset
  1219
destroyFaxImage:aFaxImageId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1220
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1221
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1222
48194c26a46c Initial revision
claus
parents:
diff changeset
  1223
rootWindowFor:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
  1224
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1225
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1226
48194c26a46c Initial revision
claus
parents:
diff changeset
  1227
createWindowFor:aView left:xpos top:ypos width:wwidth height:wheight
48194c26a46c Initial revision
claus
parents:
diff changeset
  1228
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1229
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1230
48194c26a46c Initial revision
claus
parents:
diff changeset
  1231
destroyView:aView withId:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1232
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1233
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1234
48194c26a46c Initial revision
claus
parents:
diff changeset
  1235
destroyGC:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1236
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1237
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1238
48194c26a46c Initial revision
claus
parents:
diff changeset
  1239
gcFor:aDrawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1240
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1241
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1242
48194c26a46c Initial revision
claus
parents:
diff changeset
  1243
!DeviceWorkstation methodsFor:'font stuff'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1244
48194c26a46c Initial revision
claus
parents:
diff changeset
  1245
listOfAvailableFonts
48194c26a46c Initial revision
claus
parents:
diff changeset
  1246
    "return a list with all available font names on this display"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1247
48194c26a46c Initial revision
claus
parents:
diff changeset
  1248
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1249
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1250
48194c26a46c Initial revision
claus
parents:
diff changeset
  1251
getFontWithFamily:familyString face:faceString
48194c26a46c Initial revision
claus
parents:
diff changeset
  1252
               style:styleString size:sizeArg encoding:encodingSym
48194c26a46c Initial revision
claus
parents:
diff changeset
  1253
48194c26a46c Initial revision
claus
parents:
diff changeset
  1254
    "try to get the specified font, if not available, try next smaller
48194c26a46c Initial revision
claus
parents:
diff changeset
  1255
     font"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1256
48194c26a46c Initial revision
claus
parents:
diff changeset
  1257
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1258
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1259
48194c26a46c Initial revision
claus
parents:
diff changeset
  1260
getDefaultFont
48194c26a46c Initial revision
claus
parents:
diff changeset
  1261
    "return a default font id - used when class Font cannot
48194c26a46c Initial revision
claus
parents:
diff changeset
  1262
     find anything usable"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1263
48194c26a46c Initial revision
claus
parents:
diff changeset
  1264
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1265
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1266
48194c26a46c Initial revision
claus
parents:
diff changeset
  1267
releaseFont:aFontId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1268
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1269
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1270
48194c26a46c Initial revision
claus
parents:
diff changeset
  1271
ascentOf:aFontId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1272
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1273
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1274
48194c26a46c Initial revision
claus
parents:
diff changeset
  1275
descentOf:aFontId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1276
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1277
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1278
48194c26a46c Initial revision
claus
parents:
diff changeset
  1279
minWidthOfFont:aFontId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1280
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1281
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1282
48194c26a46c Initial revision
claus
parents:
diff changeset
  1283
maxWidthOfFont:aFontId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1284
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1285
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1286
48194c26a46c Initial revision
claus
parents:
diff changeset
  1287
widthOf:aString inFont:aFontId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1288
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1289
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1290
48194c26a46c Initial revision
claus
parents:
diff changeset
  1291
widthOf:aString from:index1 to:index2 inFont:aFontId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1292
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1293
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1294
48194c26a46c Initial revision
claus
parents:
diff changeset
  1295
!DeviceWorkstation methodsFor:'cursor stuff'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1296
48194c26a46c Initial revision
claus
parents:
diff changeset
  1297
destroyCursor:aCursorId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1298
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1299
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1300
48194c26a46c Initial revision
claus
parents:
diff changeset
  1301
createCursorSourceForm:sourceForm maskForm:maskForm hotX:hx hotY:hy
48194c26a46c Initial revision
claus
parents:
diff changeset
  1302
    "create a cursor given 2 bitmaps (source, mask) and a hotspot"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1303
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1304
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1305
48194c26a46c Initial revision
claus
parents:
diff changeset
  1306
createCursorShape:aShape
48194c26a46c Initial revision
claus
parents:
diff changeset
  1307
    "create a cursor given a shape-symbol"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1308
48194c26a46c Initial revision
claus
parents:
diff changeset
  1309
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1310
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1311
48194c26a46c Initial revision
claus
parents:
diff changeset
  1312
colorCursor:aCursorId foreground:fgColor background:bgColor
48194c26a46c Initial revision
claus
parents:
diff changeset
  1313
    "change a cursors colors"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1314
48194c26a46c Initial revision
claus
parents:
diff changeset
  1315
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1316
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1317
48194c26a46c Initial revision
claus
parents:
diff changeset
  1318
grabKeyboardIn:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1319
    "grab the keyboard - all keyboard input will be sent to aWindow"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1320
48194c26a46c Initial revision
claus
parents:
diff changeset
  1321
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1322
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1323
48194c26a46c Initial revision
claus
parents:
diff changeset
  1324
ungrabKeyboard
48194c26a46c Initial revision
claus
parents:
diff changeset
  1325
    "release the keyboard"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1326
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1327
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1328
48194c26a46c Initial revision
claus
parents:
diff changeset
  1329
grabPointerIn:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1330
    "grap the pointer"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1331
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1332
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1333
48194c26a46c Initial revision
claus
parents:
diff changeset
  1334
ungrabPointer
48194c26a46c Initial revision
claus
parents:
diff changeset
  1335
    "release the pointer"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1336
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1337
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1338
48194c26a46c Initial revision
claus
parents:
diff changeset
  1339
!DeviceWorkstation methodsFor:'color stuff'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1340
48194c26a46c Initial revision
claus
parents:
diff changeset
  1341
listOfAvailableColors
48194c26a46c Initial revision
claus
parents:
diff changeset
  1342
    "return a list of all available colornames;
48194c26a46c Initial revision
claus
parents:
diff changeset
  1343
     This method should not be used, since colornames are
48194c26a46c Initial revision
claus
parents:
diff changeset
  1344
     very X specific."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1345
48194c26a46c Initial revision
claus
parents:
diff changeset
  1346
    ^ #('red' 'green' 'blue' 'yellow' 'magenta' 'cyan' 'white' 'black')
48194c26a46c Initial revision
claus
parents:
diff changeset
  1347
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1348
48194c26a46c Initial revision
claus
parents:
diff changeset
  1349
freeColor:colorIndex
48194c26a46c Initial revision
claus
parents:
diff changeset
  1350
    "free a color on the display, when its no longer needed"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1351
48194c26a46c Initial revision
claus
parents:
diff changeset
  1352
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1353
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1354
48194c26a46c Initial revision
claus
parents:
diff changeset
  1355
colorRed:redVal green:greenVal blue:blueVal
48194c26a46c Initial revision
claus
parents:
diff changeset
  1356
    "allocate a color with rgb values (0..100) - return index"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1357
48194c26a46c Initial revision
claus
parents:
diff changeset
  1358
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1359
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1360
48194c26a46c Initial revision
claus
parents:
diff changeset
  1361
colorNamed:aString
48194c26a46c Initial revision
claus
parents:
diff changeset
  1362
    "allocate a color with color name - return index.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1363
     Colors should not be allocated by name, since most colors
48194c26a46c Initial revision
claus
parents:
diff changeset
  1364
     are X specific - get colors by rgb instead."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1365
48194c26a46c Initial revision
claus
parents:
diff changeset
  1366
    "support some of them ..."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1367
48194c26a46c Initial revision
claus
parents:
diff changeset
  1368
    self getRGBFromName:aString into:[:r :g :b |
48194c26a46c Initial revision
claus
parents:
diff changeset
  1369
        ^ self colorRed:r green:g blue:b
48194c26a46c Initial revision
claus
parents:
diff changeset
  1370
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1371
    ^ nil
48194c26a46c Initial revision
claus
parents:
diff changeset
  1372
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1373
48194c26a46c Initial revision
claus
parents:
diff changeset
  1374
colorCell
48194c26a46c Initial revision
claus
parents:
diff changeset
  1375
    "allocate a color - return index"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1376
48194c26a46c Initial revision
claus
parents:
diff changeset
  1377
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1378
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1379
48194c26a46c Initial revision
claus
parents:
diff changeset
  1380
setColor:index red:redVal green:greenVal blue:blueVal
48194c26a46c Initial revision
claus
parents:
diff changeset
  1381
    "change color in map at:index to rgb (0..100)"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1382
48194c26a46c Initial revision
claus
parents:
diff changeset
  1383
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1384
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1385
48194c26a46c Initial revision
claus
parents:
diff changeset
  1386
getRGBFromName:colorName into:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
  1387
    "get rgb components (0..100) of color named colorName,
48194c26a46c Initial revision
claus
parents:
diff changeset
  1388
     and evaluate the 3-arg block, aBlock with them.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1389
     The method here only handles some often used colors;
48194c26a46c Initial revision
claus
parents:
diff changeset
  1390
     getRGBFromName should not be used, since colorNames other
48194c26a46c Initial revision
claus
parents:
diff changeset
  1391
     than those below are X specific."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1392
48194c26a46c Initial revision
claus
parents:
diff changeset
  1393
    |idx names triple|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1394
48194c26a46c Initial revision
claus
parents:
diff changeset
  1395
    names := #('red' 'green' 'blue' 'yellow' 'magenta' 'cyan' 'white' 'black').
48194c26a46c Initial revision
claus
parents:
diff changeset
  1396
    idx := names indexOf:colorName ifAbsent:[0].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1397
    idx == 0 ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1398
        idx := (names asLowercase) indexOf:colorName ifAbsent:[0].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1399
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1400
    idx == 0 ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1401
        triple := #(
48194c26a46c Initial revision
claus
parents:
diff changeset
  1402
                        (100   0   0)  "red"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1403
                        (  0 100   0)  "green"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1404
                        (  0   0 100)  "blue"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1405
                        (100 100   0)  "yellow"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1406
                        (100   0 100)  "magenta"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1407
                        (  0 100 100)  "cyan"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1408
                        (100 100 100)  "white"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1409
                        (  0   0   0)  "black"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1410
                   ) at:idx.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1411
                        
48194c26a46c Initial revision
claus
parents:
diff changeset
  1412
        ^ aBlock value:(triple at:1)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1413
                 value:(triple at:2)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1414
                 value:(triple at:3)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1415
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1416
    ^ nil
48194c26a46c Initial revision
claus
parents:
diff changeset
  1417
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1418
48194c26a46c Initial revision
claus
parents:
diff changeset
  1419
getRGBFrom:index into:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
  1420
    "get rgb components (0..100) of color in map at:index,
48194c26a46c Initial revision
claus
parents:
diff changeset
  1421
     and evaluate the 3-arg block, aBlock with them"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1422
48194c26a46c Initial revision
claus
parents:
diff changeset
  1423
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1424
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1425
48194c26a46c Initial revision
claus
parents:
diff changeset
  1426
!DeviceWorkstation methodsFor:'window stuff'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1427
48194c26a46c Initial revision
claus
parents:
diff changeset
  1428
setBackingStore:how in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1429
    "turn on/off backing-store for a window"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1430
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1431
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1432
48194c26a46c Initial revision
claus
parents:
diff changeset
  1433
setSaveUnder:yesOrNo in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1434
    "turn on/off save-under for a window"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1435
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1436
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1437
48194c26a46c Initial revision
claus
parents:
diff changeset
  1438
setWindowBackground:aColorIndex in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1439
    "set the windows background color"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1440
48194c26a46c Initial revision
claus
parents:
diff changeset
  1441
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1442
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1443
48194c26a46c Initial revision
claus
parents:
diff changeset
  1444
setWindowBackgroundPixmap:aPixmapId in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1445
    "set the windows background pattern to be a form"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1446
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1447
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1448
48194c26a46c Initial revision
claus
parents:
diff changeset
  1449
setWindowBorderColor:aColorIndex in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1450
    "set the windows border color"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1451
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1452
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1453
48194c26a46c Initial revision
claus
parents:
diff changeset
  1454
setWindowBorderPixmap:aPixmapId in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1455
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1456
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1457
48194c26a46c Initial revision
claus
parents:
diff changeset
  1458
setWindowBorderWidth:aNumber in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1459
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1460
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1461
48194c26a46c Initial revision
claus
parents:
diff changeset
  1462
setWindowBorderShape:aPixmapId in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1463
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1464
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1465
48194c26a46c Initial revision
claus
parents:
diff changeset
  1466
setWindowShape:aPixmapId in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1467
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1468
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1469
48194c26a46c Initial revision
claus
parents:
diff changeset
  1470
setCursor:aCursorId in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1471
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1472
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1473
48194c26a46c Initial revision
claus
parents:
diff changeset
  1474
setWindowName:aString in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1475
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1476
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1477
48194c26a46c Initial revision
claus
parents:
diff changeset
  1478
setIconName:aString in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1479
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1480
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1481
48194c26a46c Initial revision
claus
parents:
diff changeset
  1482
setWindowIcon:aForm in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1483
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1484
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1485
48194c26a46c Initial revision
claus
parents:
diff changeset
  1486
setWindowIconWindow:aView in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1487
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1488
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1489
48194c26a46c Initial revision
claus
parents:
diff changeset
  1490
clearWindow:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1491
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1492
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1493
48194c26a46c Initial revision
claus
parents:
diff changeset
  1494
clearRectangleX:x y:y width:width height:height in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1495
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1496
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1497
48194c26a46c Initial revision
claus
parents:
diff changeset
  1498
mapWindow:aWindowId iconified:aBoolean atX:xPos y:yPos width:w height:h
48194c26a46c Initial revision
claus
parents:
diff changeset
  1499
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1500
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1501
48194c26a46c Initial revision
claus
parents:
diff changeset
  1502
mapWindow:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1503
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1504
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1505
48194c26a46c Initial revision
claus
parents:
diff changeset
  1506
unmapWindow:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1507
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1508
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1509
48194c26a46c Initial revision
claus
parents:
diff changeset
  1510
raiseWindow:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1511
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1512
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1513
48194c26a46c Initial revision
claus
parents:
diff changeset
  1514
lowerWindow:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1515
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1516
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1517
48194c26a46c Initial revision
claus
parents:
diff changeset
  1518
moveWindow:aWindowId x:x y:y
48194c26a46c Initial revision
claus
parents:
diff changeset
  1519
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1520
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1521
48194c26a46c Initial revision
claus
parents:
diff changeset
  1522
resizeWindow:aWindowId width:w height:h
48194c26a46c Initial revision
claus
parents:
diff changeset
  1523
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1524
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1525
48194c26a46c Initial revision
claus
parents:
diff changeset
  1526
moveResizeWindow:aWindowId x:x y:y width:w height:h
48194c26a46c Initial revision
claus
parents:
diff changeset
  1527
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1528
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1529
48194c26a46c Initial revision
claus
parents:
diff changeset
  1530
!DeviceWorkstation methodsFor:'graphic context stuff'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1531
48194c26a46c Initial revision
claus
parents:
diff changeset
  1532
setForeground:fgColorIndex in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1533
    "set foreground color to be drawn with"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1534
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1535
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1536
48194c26a46c Initial revision
claus
parents:
diff changeset
  1537
setBackground:bgColorIndex in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1538
    "set background color to be drawn with"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1539
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1540
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1541
48194c26a46c Initial revision
claus
parents:
diff changeset
  1542
setForeground:fgColorIndex background:bgColorIndex in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1543
    "set foreground and background colors to be drawn with"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1544
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1545
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1546
48194c26a46c Initial revision
claus
parents:
diff changeset
  1547
setForeground:fgColor background:bgColor mask:aBitmapId in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1548
    "set foreground and background colors to be drawn with using mask or
48194c26a46c Initial revision
claus
parents:
diff changeset
  1549
     solid (if aBitmapId is nil)"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1550
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1551
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1552
48194c26a46c Initial revision
claus
parents:
diff changeset
  1553
setLineWidth:aNumber style:lineStyle cap:capStyle join:joinStyle in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1554
    "set line attributes"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1555
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1556
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1557
48194c26a46c Initial revision
claus
parents:
diff changeset
  1558
setForeground:fgColor background:bgColor mask:aBitmapId lineWidth:lw in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1559
    "set foreground and background colors to be drawn with using mask or
48194c26a46c Initial revision
claus
parents:
diff changeset
  1560
     solid (if aBitmapId is nil); also set lineWidth"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1561
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1562
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1563
48194c26a46c Initial revision
claus
parents:
diff changeset
  1564
setFunction:aFunctionSymbol in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1565
    "set alu function to be drawn with"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1566
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1567
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1568
48194c26a46c Initial revision
claus
parents:
diff changeset
  1569
setFont:aFontId in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1570
    "set font to be drawn in"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1571
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1572
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1573
48194c26a46c Initial revision
claus
parents:
diff changeset
  1574
setPixmapMask:aPixmapId in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1575
    "set or clear the drawing mask - a pixmap mask providing full color"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1576
48194c26a46c Initial revision
claus
parents:
diff changeset
  1577
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1578
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1579
48194c26a46c Initial revision
claus
parents:
diff changeset
  1580
setBitmapMask:aBitmapId in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1581
    "set or clear the drawing mask - a bitmap mask using current fg/bg"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1582
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1583
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1584
48194c26a46c Initial revision
claus
parents:
diff changeset
  1585
setMaskOriginX:orgX y:orgY in:aGCid
48194c26a46c Initial revision
claus
parents:
diff changeset
  1586
    "set the mask origin"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1587
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1588
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1589
48194c26a46c Initial revision
claus
parents:
diff changeset
  1590
setClipByChildren:aBool in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1591
    "enable/disable drawing into child views"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1592
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1593
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1594
48194c26a46c Initial revision
claus
parents:
diff changeset
  1595
noClipIn:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1596
    "disable clipping rectangle"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1597
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1598
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1599
48194c26a46c Initial revision
claus
parents:
diff changeset
  1600
setClipX:clipX y:clipY width:clipWidth height:clipHeight in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1601
    "clip to a rectangle"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1602
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1603
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1604
48194c26a46c Initial revision
claus
parents:
diff changeset
  1605
setGraphicsExposures:aBoolean in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1606
    "set or clear the graphics exposures flag"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1607
48194c26a46c Initial revision
claus
parents:
diff changeset
  1608
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1609
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1610
48194c26a46c Initial revision
claus
parents:
diff changeset
  1611
!DeviceWorkstation methodsFor:'retrieving pixels'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1612
48194c26a46c Initial revision
claus
parents:
diff changeset
  1613
getPixelX:x y:y from:aDrawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1614
    "return the pixel value at x/y"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1615
48194c26a46c Initial revision
claus
parents:
diff changeset
  1616
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1617
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1618
48194c26a46c Initial revision
claus
parents:
diff changeset
  1619
!DeviceWorkstation methodsFor:'drawing'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1620
48194c26a46c Initial revision
claus
parents:
diff changeset
  1621
displayString:aString x:x y:y in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1622
    "draw a string - draw foreground only"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1623
48194c26a46c Initial revision
claus
parents:
diff changeset
  1624
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1625
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1626
48194c26a46c Initial revision
claus
parents:
diff changeset
  1627
displayString:aString from:index1 to:index2 x:x y:y in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1628
    "draw part of a string - draw foreground only"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1629
48194c26a46c Initial revision
claus
parents:
diff changeset
  1630
    self displayString:(aString copyFrom:index1 to:index2)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1631
                     x:x y:y in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1632
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1633
48194c26a46c Initial revision
claus
parents:
diff changeset
  1634
displayOpaqueString:aString x:x y:y in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1635
    "draw a string - draw both foreground and background"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1636
48194c26a46c Initial revision
claus
parents:
diff changeset
  1637
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1638
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1639
48194c26a46c Initial revision
claus
parents:
diff changeset
  1640
displayOpaqueString:aString from:index1 to:index2 x:x y:y in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1641
    "draw part of a string - draw both foreground and background"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1642
48194c26a46c Initial revision
claus
parents:
diff changeset
  1643
    self displayOpaqueString:(aString copyFrom:index1 to:index2)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1644
                           x:x y:y in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1645
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1646
48194c26a46c Initial revision
claus
parents:
diff changeset
  1647
drawPointX:x y:y in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1648
    "draw a point"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1649
48194c26a46c Initial revision
claus
parents:
diff changeset
  1650
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1651
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1652
48194c26a46c Initial revision
claus
parents:
diff changeset
  1653
displayLineFromX:x0 y:y0 toX:x1 y:y1 in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1654
    "draw a line"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1655
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1656
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1657
48194c26a46c Initial revision
claus
parents:
diff changeset
  1658
drawRectangleX:x y:y width:width height:height in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1659
    "draw a rectangle"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1660
48194c26a46c Initial revision
claus
parents:
diff changeset
  1661
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1662
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1663
48194c26a46c Initial revision
claus
parents:
diff changeset
  1664
drawPolygon:aPolygon in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1665
    "draw a polygon"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1666
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1667
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1668
48194c26a46c Initial revision
claus
parents:
diff changeset
  1669
copyFromFaxImage:sourceId x:srcX y:srcY to:destId x:dstX y:dstY
48194c26a46c Initial revision
claus
parents:
diff changeset
  1670
                      width:w height:h with:aGCId scaleX:scaleX scaleY:scaleY
48194c26a46c Initial revision
claus
parents:
diff changeset
  1671
    "do a bit-blt"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1672
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1673
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1674
48194c26a46c Initial revision
claus
parents:
diff changeset
  1675
copyFromId:sourceId x:srcX y:srcY to:destId x:dstX y:dstY
48194c26a46c Initial revision
claus
parents:
diff changeset
  1676
                width:w height:h with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1677
    "do a bit-blt"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1678
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1679
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1680
48194c26a46c Initial revision
claus
parents:
diff changeset
  1681
copyPlaneFromId:sourceId x:srcX y:srcY to:destId x:dstX y:dstY
48194c26a46c Initial revision
claus
parents:
diff changeset
  1682
                width:w height:h with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1683
    "do a bit-blt"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1684
48194c26a46c Initial revision
claus
parents:
diff changeset
  1685
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1686
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1687
48194c26a46c Initial revision
claus
parents:
diff changeset
  1688
drawArcX:x y:y w:width h:height from:startAngle angle:angle
48194c26a46c Initial revision
claus
parents:
diff changeset
  1689
               in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1690
    "draw an arc"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1691
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1692
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1693
48194c26a46c Initial revision
claus
parents:
diff changeset
  1694
fillArcX:x y:y w:width h:height from:startAngle angle:angle
48194c26a46c Initial revision
claus
parents:
diff changeset
  1695
               in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1696
    "fill an arc"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1697
48194c26a46c Initial revision
claus
parents:
diff changeset
  1698
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1699
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1700
48194c26a46c Initial revision
claus
parents:
diff changeset
  1701
fillRectangleX:x y:y width:width height:height in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1702
    "fill a rectangle"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1703
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1704
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1705
48194c26a46c Initial revision
claus
parents:
diff changeset
  1706
fillPolygon:aPolygon in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1707
    "fill a polygon"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1708
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1709
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1710
48194c26a46c Initial revision
claus
parents:
diff changeset
  1711
drawBits:imageBits depth:imageDepth width:imageWidth height:imageHeight
48194c26a46c Initial revision
claus
parents:
diff changeset
  1712
                       x:srcx y:srcy
48194c26a46c Initial revision
claus
parents:
diff changeset
  1713
                    into:aDrawableId x:dstx y:dsty width:w height:h with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1714
    "draw a bitimage which has depth id, width iw and height ih into
48194c26a46c Initial revision
claus
parents:
diff changeset
  1715
     the drawable. draw a region of w/h pixels from srcx/srcy to dstx/dsty.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1716
     It has to be checked elsewhere, that server can do it with the given
48194c26a46c Initial revision
claus
parents:
diff changeset
  1717
     depth; also it is assumed, that the colormap is setup correctly"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1718
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1719
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1720
48194c26a46c Initial revision
claus
parents:
diff changeset
  1721
!DeviceWorkstation methodsFor:'events'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1722
48194c26a46c Initial revision
claus
parents:
diff changeset
  1723
eventMaskFor:anEventSymbol
48194c26a46c Initial revision
claus
parents:
diff changeset
  1724
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1725
! 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1726
48194c26a46c Initial revision
claus
parents:
diff changeset
  1727
setEventMask:aMask in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1728
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1729
! 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1730
48194c26a46c Initial revision
claus
parents:
diff changeset
  1731
dispatchEventFor:aViewIdOrNil withMask:eventMask
48194c26a46c Initial revision
claus
parents:
diff changeset
  1732
    "central event handling method:
48194c26a46c Initial revision
claus
parents:
diff changeset
  1733
     get next event and send appropriate message to the view or the controller,
48194c26a46c Initial revision
claus
parents:
diff changeset
  1734
     if the view has one.;
48194c26a46c Initial revision
claus
parents:
diff changeset
  1735
     If the argument aViewIdOrNil is nil, events for any view are processed,
48194c26a46c Initial revision
claus
parents:
diff changeset
  1736
     otherwise only events for the view with given id are processed
48194c26a46c Initial revision
claus
parents:
diff changeset
  1737
     (in this case, nothing is done if no events are pending);
48194c26a46c Initial revision
claus
parents:
diff changeset
  1738
     if the argument aMask is nonNil, only events for this eventMask are
48194c26a46c Initial revision
claus
parents:
diff changeset
  1739
     handled;"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1740
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1741
! 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1742
48194c26a46c Initial revision
claus
parents:
diff changeset
  1743
dispatchExposeEventsFor:aViewId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1744
    "handle all pending exposes until a noExpose or graphicsExpose arrives;
48194c26a46c Initial revision
claus
parents:
diff changeset
  1745
     then exit loop"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1746
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1747
! 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1748
48194c26a46c Initial revision
claus
parents:
diff changeset
  1749
disposeEventsWithMask:aMask for:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1750
    "dispose (throw away) specific events"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1751
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1752
! 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1753
48194c26a46c Initial revision
claus
parents:
diff changeset
  1754
exposeEventsFor:aViewId do:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
  1755
    "for every pending expose event for aViewId evaluate the argument
48194c26a46c Initial revision
claus
parents:
diff changeset
  1756
     aBlock with 4 arguments"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1757
48194c26a46c Initial revision
claus
parents:
diff changeset
  1758
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1759
! 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1760
48194c26a46c Initial revision
claus
parents:
diff changeset
  1761
eventPending
48194c26a46c Initial revision
claus
parents:
diff changeset
  1762
    "return true, if any event is pending"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1763
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1764
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1765
48194c26a46c Initial revision
claus
parents:
diff changeset
  1766
eventPendingWithoutSync
48194c26a46c Initial revision
claus
parents:
diff changeset
  1767
    "return true, if any event is pending"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1768
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1769
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1770
48194c26a46c Initial revision
claus
parents:
diff changeset
  1771
eventsPending:anEventMask for:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1772
    "return true, if any of the masked events is pending"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1773
48194c26a46c Initial revision
claus
parents:
diff changeset
  1774
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1775
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1776
48194c26a46c Initial revision
claus
parents:
diff changeset
  1777
eventPending:anEventSymbol for:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1778
    "return true, if a specific event is pending"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1779
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1780
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1781
48194c26a46c Initial revision
claus
parents:
diff changeset
  1782
nextEventFor:aViewIdOrNil withMask:eventMask sendTo:eventDispatcher
48194c26a46c Initial revision
claus
parents:
diff changeset
  1783
    "get next event and send an appropriate message to eventDispatcher.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1784
     (see below for the 2 exceptions)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1785
     If the argument aViewIdOrNil is nil, events for any view are processed,
48194c26a46c Initial revision
claus
parents:
diff changeset
  1786
     otherwise only events for the view with given id are processed
48194c26a46c Initial revision
claus
parents:
diff changeset
  1787
     (in this case, nothing is done if no events are pending);
48194c26a46c Initial revision
claus
parents:
diff changeset
  1788
     if the argument aMask is nonNil, only events for this eventMask are
48194c26a46c Initial revision
claus
parents:
diff changeset
  1789
     handled.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1790
     GraphicExpose events are sent to the view directly instead of the eventDisp
48194c26a46c Initial revision
claus
parents:
diff changeset
  1791
atcher.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1792
     This must be done since queueing those events does not make sense (they are
48194c26a46c Initial revision
claus
parents:
diff changeset
  1793
 the
48194c26a46c Initial revision
claus
parents:
diff changeset
  1794
     responses to bitBlt operations and must be handled immediately."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1795
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1796
! !