PseudoV.st
author claus
Mon, 06 Feb 1995 01:38:04 +0100
changeset 89 ea2bf46eb669
parent 85 32687feafcc1
child 93 92f1ec8b419e
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
"
6
7ee0cfde237d *** empty log message ***
claus
parents: 5
diff changeset
     2
 COPYRIGHT (c) 1992 by Claus Gittinger
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
     3
	      All Rights Reserved
0
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
DeviceDrawable subclass:#PseudoView
48194c26a46c Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:'viewBackground 
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
    15
			      cursor eventMask
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
    16
			      middleButtonMenu
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
    17
			      keyCommands 
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
    18
			      gotExpose exposePending
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
    19
			      backed saveUnder delegate'
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    20
       classVariableNames:''
48194c26a46c Initial revision
claus
parents:
diff changeset
    21
       poolDictionaries:''
48194c26a46c Initial revision
claus
parents:
diff changeset
    22
       category:'Views-Basic'
48194c26a46c Initial revision
claus
parents:
diff changeset
    23
!
48194c26a46c Initial revision
claus
parents:
diff changeset
    24
48194c26a46c Initial revision
claus
parents:
diff changeset
    25
PseudoView comment:'
6
7ee0cfde237d *** empty log message ***
claus
parents: 5
diff changeset
    26
COPYRIGHT (c) 1992 by Claus Gittinger
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
    27
	      All Rights Reserved
54
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
    28
89
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
    29
$Header: /cvs/stx/stx/libview/Attic/PseudoV.st,v 1.22 1995-02-06 00:37:41 claus Exp $
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    30
'!
48194c26a46c Initial revision
claus
parents:
diff changeset
    31
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
    32
!PseudoView class methodsFor:'documentation'!
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
    33
46
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
    34
copyright
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
    35
"
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
    36
 COPYRIGHT (c) 1992 by Claus Gittinger
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
    37
	      All Rights Reserved
46
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
    38
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
    39
 This software is furnished under a license and may be used
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
    40
 only in accordance with the terms of that license and with the
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
    41
 inclusion of the above copyright notice.   This software may not
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
    42
 be provided or otherwise made available to, or used by, any
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
    43
 other person.  No title to or ownership of the software is
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
    44
 hereby transferred.
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
    45
"
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
    46
!
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
    47
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
    48
version
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
    49
"
89
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
    50
$Header: /cvs/stx/stx/libview/Attic/PseudoV.st,v 1.22 1995-02-06 00:37:41 claus Exp $
46
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
    51
"
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
    52
!
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
    53
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
    54
documentation
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
    55
"
59
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    56
    this abstract class describes stuff common to any Window on a display 
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    57
    device. i.e. RootWindow, TopWindows, PopUps and Subwindows.
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    58
    That is, they have a viewBackground, cursor etc. and especially events.
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    59
    A special feature is the delegate field, which allows key- and button 
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    60
    events to be stolen from a view. 
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    61
    If the delegate is non-nil, these events will be sent to it instead.
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    62
    So you can change a views behavior even if it was not initially designed 
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    63
    for it. Also, controller functionality could be simulated using delegates.
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    64
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    65
    instance variables:
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    66
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
    67
	viewBackground  <Color|Form|Image>      the views background
59
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    68
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
    69
	cursor          <Cursor>                the cursor
59
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    70
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
    71
	eventMask                               mask specifying the enabled
59
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    72
						events.
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    73
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
    74
	middleButtonMenu                        a popup menu for the middle
59
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    75
						button.
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    76
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
    77
	keyCommands                             not yet supported
59
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    78
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
    79
	gotExpose                               for exposure handling after
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
    80
	exposePending                           after a scroll
59
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    81
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
    82
	backed                                  true if backing store for that
59
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    83
						view is enabled
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    84
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
    85
	saveUnder                               true if saveunder store for 
59
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    86
						that view is enabled
d83c23755711 *** empty log message ***
claus
parents: 54
diff changeset
    87
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
    88
	delegate                                for event delegation
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
    89
"
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
    90
! !
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
    91
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    92
!PseudoView methodsFor:'initialize / release'!
48194c26a46c Initial revision
claus
parents:
diff changeset
    93
48194c26a46c Initial revision
claus
parents:
diff changeset
    94
initialize
48194c26a46c Initial revision
claus
parents:
diff changeset
    95
    "initialize defaults"
48194c26a46c Initial revision
claus
parents:
diff changeset
    96
48194c26a46c Initial revision
claus
parents:
diff changeset
    97
    super initialize.
48194c26a46c Initial revision
claus
parents:
diff changeset
    98
    eventMask := 0.
48194c26a46c Initial revision
claus
parents:
diff changeset
    99
    viewBackground := background.
48194c26a46c Initial revision
claus
parents:
diff changeset
   100
    backed := false.
48194c26a46c Initial revision
claus
parents:
diff changeset
   101
    saveUnder := false.
48194c26a46c Initial revision
claus
parents:
diff changeset
   102
    exposePending := false.
48194c26a46c Initial revision
claus
parents:
diff changeset
   103
    self initCursor
48194c26a46c Initial revision
claus
parents:
diff changeset
   104
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   105
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   106
initStyle
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   107
    "nothing done here"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   108
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   109
    ^ self
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   110
!
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   111
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   112
initCursor
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   113
    "default cursor for all views"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   114
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   115
    cursor := Cursor arrow
48194c26a46c Initial revision
claus
parents:
diff changeset
   116
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   117
    
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   118
reinitStyle
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   119
    "nothing done here"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   120
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   121
    ^ self
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   122
!
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   123
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   124
recreate
48194c26a46c Initial revision
claus
parents:
diff changeset
   125
    "recreate (i.e. tell X about me) after a snapin"
48194c26a46c Initial revision
claus
parents:
diff changeset
   126
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   127
    viewBackground isColor ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   128
	viewBackground := viewBackground on:device
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   129
    ].
46
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
   130
    super recreate.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   131
    cursor := cursor on:device.
48194c26a46c Initial revision
claus
parents:
diff changeset
   132
    exposePending := false
48194c26a46c Initial revision
claus
parents:
diff changeset
   133
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   134
48194c26a46c Initial revision
claus
parents:
diff changeset
   135
destroy
48194c26a46c Initial revision
claus
parents:
diff changeset
   136
    "view is about to be destroyed -
48194c26a46c Initial revision
claus
parents:
diff changeset
   137
     first destroy menu if there is one and also destroy the GC.
48194c26a46c Initial revision
claus
parents:
diff changeset
   138
     then the view is physically destroyed."
48194c26a46c Initial revision
claus
parents:
diff changeset
   139
     
48194c26a46c Initial revision
claus
parents:
diff changeset
   140
    middleButtonMenu notNil ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   141
	middleButtonMenu destroy.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   142
	middleButtonMenu := nil
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   143
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   144
    keyCommands := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
   145
    gcId notNil ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   146
	device destroyGC:gcId.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   147
	gcId := nil
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   148
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   149
    drawableId notNil ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   150
	device destroyView:self withId:drawableId.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   151
	drawableId := nil
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   152
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   153
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   154
48194c26a46c Initial revision
claus
parents:
diff changeset
   155
destroyed
48194c26a46c Initial revision
claus
parents:
diff changeset
   156
    "view has been destroyed by someone else"
48194c26a46c Initial revision
claus
parents:
diff changeset
   157
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   158
    drawableId notNil ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   159
	device removeKnownView:self.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   160
	drawableId := nil.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   161
	realized := false. 
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   162
    ].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   163
    self destroy
48194c26a46c Initial revision
claus
parents:
diff changeset
   164
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   165
48194c26a46c Initial revision
claus
parents:
diff changeset
   166
reAdjustGeometry
48194c26a46c Initial revision
claus
parents:
diff changeset
   167
    "sent late during snapin processing, nothing done here"
48194c26a46c Initial revision
claus
parents:
diff changeset
   168
48194c26a46c Initial revision
claus
parents:
diff changeset
   169
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
   170
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   171
48194c26a46c Initial revision
claus
parents:
diff changeset
   172
!PseudoView methodsFor:'accessing'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   173
48194c26a46c Initial revision
claus
parents:
diff changeset
   174
viewOrigin
48194c26a46c Initial revision
claus
parents:
diff changeset
   175
    "0@0 here, since by default we cannot be scrolled"
48194c26a46c Initial revision
claus
parents:
diff changeset
   176
48194c26a46c Initial revision
claus
parents:
diff changeset
   177
    ^ 0 @ 0
48194c26a46c Initial revision
claus
parents:
diff changeset
   178
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   179
48194c26a46c Initial revision
claus
parents:
diff changeset
   180
viewGravity
48194c26a46c Initial revision
claus
parents:
diff changeset
   181
    "return the views gravity"
48194c26a46c Initial revision
claus
parents:
diff changeset
   182
48194c26a46c Initial revision
claus
parents:
diff changeset
   183
    ^ #NorthWest
48194c26a46c Initial revision
claus
parents:
diff changeset
   184
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   185
48194c26a46c Initial revision
claus
parents:
diff changeset
   186
depth
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   187
    "return the depth in pixels of the view.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   188
     Notice, that this is currently the devices depth, 
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   189
     but support for mixed depth views is being prepared.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   190
     (especially useful on SGI, with 24bit view)"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   191
48194c26a46c Initial revision
claus
parents:
diff changeset
   192
    ^ device depth
48194c26a46c Initial revision
claus
parents:
diff changeset
   193
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   194
48194c26a46c Initial revision
claus
parents:
diff changeset
   195
viewBackground
48194c26a46c Initial revision
claus
parents:
diff changeset
   196
    "return the viewBackground"
48194c26a46c Initial revision
claus
parents:
diff changeset
   197
48194c26a46c Initial revision
claus
parents:
diff changeset
   198
    ^ viewBackground
48194c26a46c Initial revision
claus
parents:
diff changeset
   199
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   200
48194c26a46c Initial revision
claus
parents:
diff changeset
   201
viewBackground:something
89
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   202
    "set the viewBackground to something, a color, image or form.
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   203
     The viewBackground is the color or pattern with which exposed
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   204
     regions are filled - do not confuse this with the drawing background
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   205
     color, which is used with opaque drawing."
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   206
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   207
    viewBackground ~~ something ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   208
	viewBackground := something.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   209
	drawableId notNil ifTrue:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   210
	    self setViewBackground
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   211
	]
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   212
    ]
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   213
!
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   214
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   215
setViewBackground
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   216
    "install the viewBackground for the receiver on the device"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   217
48194c26a46c Initial revision
claus
parents:
diff changeset
   218
    |id devBgPixmap bgPixmap w h colors|
48194c26a46c Initial revision
claus
parents:
diff changeset
   219
48194c26a46c Initial revision
claus
parents:
diff changeset
   220
    drawableId notNil ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   221
	viewBackground isColor ifTrue:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   222
	    viewBackground := viewBackground on:device.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   223
	    id := viewBackground colorId.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   224
	    "
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   225
	     a real color (i.e. one supported by the device) ?
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   226
	    "
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   227
	    id notNil ifTrue:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   228
		device setWindowBackground:id in:drawableId.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   229
		^ self
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   230
	    ].
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   231
	    "
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   232
	     no, a dithered one - must have a dither-pattern
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   233
	     (which is ready for the device, since viewBackground
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   234
	      is already assigned to the device)
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   235
	    "
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   236
	    bgPixmap := viewBackground ditherForm.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   237
	] ifFalse:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   238
	    "
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   239
	     assume, it can convert itself to a form
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   240
	    "
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   241
	    bgPixmap := viewBackground asFormOn:device
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   242
	].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   243
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   244
	"
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   245
	 must now have:
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   246
	 a dithered color or bitmap or pixmap
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   247
	"
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   248
	bgPixmap isNil ifTrue:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   249
	    'background not convertable - ignored' errorPrintNewline.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   250
	    ^ self
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   251
	].
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   252
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   253
	w := bgPixmap width.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   254
	h := bgPixmap height.
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   255
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   256
	(bgPixmap depth ~~ device depth) ifTrue:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   257
	    (bgPixmap depth ~~ 1) ifTrue:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   258
		self error:'bad dither depth'.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   259
		^ self
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   260
	    ].
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   261
	    "
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   262
	     convert it into a deep form
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   263
	    "
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   264
	    colors := bgPixmap colorMap.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   265
	    devBgPixmap := Form width:w height:h depth:(device depth) on:device.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   266
	    devBgPixmap paint:(colors at:1).
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   267
	    devBgPixmap fillRectangleX:0 y:0 width:w height:h.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   268
	    devBgPixmap foreground:(colors at:2) background:(colors at:1).
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   269
	    devBgPixmap copyPlaneFrom:bgPixmap x:0 y:0 toX:0 y:0 width:w height:h.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   270
	    bgPixmap := devBgPixmap.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   271
	] ifFalse:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   272
	    (bgPixmap depth == 1) ifTrue:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   273
		"
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   274
		 although depth matches,
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   275
		 values in the dither are to be interpreted via the ditherForms
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   276
		 colormap, which is not always the same as blackpixel/whitepixel ...
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   277
		"
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   278
		(bgPixmap colorMap at:1) colorId == device whitepixel ifTrue:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   279
		    (bgPixmap colorMap at:2) colorId == device blackpixel ifTrue:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   280
			"
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   281
			 ok, can use it
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   282
			"
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   283
			device setWindowBackgroundPixmap:(bgPixmap id) in:drawableId.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   284
			^ self
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   285
		    ]
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   286
		].
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   287
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   288
		"
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   289
		 no, must invert it
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   290
		"
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   291
		devBgPixmap := Form width:w height:h depth:(device depth) on:device.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   292
		devBgPixmap paint:(bgPixmap colorMap at:2) on:(bgPixmap colorMap at:1).
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   293
		devBgPixmap copyPlaneFrom:bgPixmap x:0 y:0 toX:0 y:0 width:w height:h.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   294
		bgPixmap := devBgPixmap.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   295
	    ]
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   296
	].
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   297
	device setWindowBackgroundPixmap:(bgPixmap id) in:drawableId.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   298
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   299
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   300
48194c26a46c Initial revision
claus
parents:
diff changeset
   301
insideColor:aColor
48194c26a46c Initial revision
claus
parents:
diff changeset
   302
    "set the views background color - ST-80 compatibility"
48194c26a46c Initial revision
claus
parents:
diff changeset
   303
48194c26a46c Initial revision
claus
parents:
diff changeset
   304
    self viewBackground:aColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
   305
    self background:aColor
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   306
! !
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   307
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   308
!PseudoView methodsFor:'accessing-cursor'!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   309
48194c26a46c Initial revision
claus
parents:
diff changeset
   310
cursor
48194c26a46c Initial revision
claus
parents:
diff changeset
   311
    "return the views cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   312
48194c26a46c Initial revision
claus
parents:
diff changeset
   313
    ^ cursor
48194c26a46c Initial revision
claus
parents:
diff changeset
   314
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   315
48194c26a46c Initial revision
claus
parents:
diff changeset
   316
cursor:aCursor
48194c26a46c Initial revision
claus
parents:
diff changeset
   317
    "set the views cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   318
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   319
    |id|
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   320
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   321
    aCursor notNil ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   322
	(aCursor ~~ cursor) ifTrue:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   323
	    cursor := aCursor.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   324
	    drawableId notNil ifTrue:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   325
		cursor := cursor on:device.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   326
		id := cursor id.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   327
		id isNil ifTrue:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   328
		    'nil cursorId shape=' errorPrint. cursor shape errorPrintNewline.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   329
		    ^ self
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   330
		].
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   331
		device setCursor:id in:drawableId.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   332
		realized ifTrue:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   333
		    "flush, to make cursor immediately visible"
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   334
		    device synchronizeOutput
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   335
		]
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   336
	    ]
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   337
	]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   338
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   339
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   340
48194c26a46c Initial revision
claus
parents:
diff changeset
   341
withCursor:aCursor do:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
   342
    "evaluate aBlock showing aCursor until ready; then restore old cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   343
48194c26a46c Initial revision
claus
parents:
diff changeset
   344
    |savedCursor|
48194c26a46c Initial revision
claus
parents:
diff changeset
   345
48194c26a46c Initial revision
claus
parents:
diff changeset
   346
    savedCursor := cursor.
48194c26a46c Initial revision
claus
parents:
diff changeset
   347
    self cursor:aCursor.
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   348
    aBlock valueNowOrOnUnwindDo:[self cursor:savedCursor]
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   349
! !
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   350
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   351
!PseudoView methodsFor:'accessing-hierarchy'!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   352
48194c26a46c Initial revision
claus
parents:
diff changeset
   353
superView
48194c26a46c Initial revision
claus
parents:
diff changeset
   354
    "return the superView - nil here"
48194c26a46c Initial revision
claus
parents:
diff changeset
   355
48194c26a46c Initial revision
claus
parents:
diff changeset
   356
    ^ nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   357
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   358
48194c26a46c Initial revision
claus
parents:
diff changeset
   359
topView
48194c26a46c Initial revision
claus
parents:
diff changeset
   360
    "return the topView - that the one with no superview"
48194c26a46c Initial revision
claus
parents:
diff changeset
   361
48194c26a46c Initial revision
claus
parents:
diff changeset
   362
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
   363
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   364
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   365
delegate
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   366
    "return the delegate - thats the one getting keyboard and button events"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   367
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   368
    ^ delegate
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   369
!
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   370
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   371
delegate:someOne
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   372
    "set the delegate"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   373
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   374
    delegate := someOne
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   375
! !
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   376
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   377
!PseudoView methodsFor:'accessing-names'!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   378
48194c26a46c Initial revision
claus
parents:
diff changeset
   379
label
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   380
    "return the views label - this is nil here.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   381
     Only standardSystemViews support labels and icons."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   382
48194c26a46c Initial revision
claus
parents:
diff changeset
   383
    ^ nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   384
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   385
48194c26a46c Initial revision
claus
parents:
diff changeset
   386
label:aLabel
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   387
    "set the views label - ignored here.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   388
     Only standardSystemViews support labels and icons."
0
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
24
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   393
iconLabel
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   394
    "return the views icon label - this is nil here.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   395
     Only standardSystemViews support labels and icons."
24
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   396
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   397
    ^ nil
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   398
!
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   399
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   400
iconLabel:aLabel
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   401
    "set the views icon label - ignored here.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   402
     Only standardSystemViews support labels and icons."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   403
48194c26a46c Initial revision
claus
parents:
diff changeset
   404
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
   405
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   406
48194c26a46c Initial revision
claus
parents:
diff changeset
   407
iconView
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   408
    "return the views iconView - this is nil here.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   409
     Only standardSystemViews support labels and icons."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   410
48194c26a46c Initial revision
claus
parents:
diff changeset
   411
    ^ nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   412
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   413
24
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   414
iconView:aView
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   415
    "set the views icon view - ignored here.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   416
     Only standardSystemViews support labels and icons."
24
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   417
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   418
    ^ self
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   419
!
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   420
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   421
icon
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   422
    "return the views icon - this is nil here.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   423
     Only standardSystemViews support labels and icons."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   424
48194c26a46c Initial revision
claus
parents:
diff changeset
   425
    ^ nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   426
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   427
24
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   428
icon:aBitmap
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   429
    "set the views icon - ignored here.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   430
     Only standardSystemViews support labels and icons."
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   431
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   432
    ^ self
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   433
! !
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   434
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   435
!PseudoView methodsFor:'queries-contents'!
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   436
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   437
heightOfContents
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   438
    "return the height of the contents in pixels.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   439
     Since we dont know here, just return the views size.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   440
     This will make your scrollbars show 100%-visible.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   441
     Must be redefined in subviews to make scrollbars really work."
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   442
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   443
    ^ self height
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   444
!
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   445
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   446
widthOfContents
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   447
    "return the width of the contents in pixels.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   448
     Since we dont know here, just return the views size.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   449
     This will make your scrollbars show 100%-visible.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   450
     Must be redefined in subviews to make scrollbars really work."
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   451
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   452
    ^ self width
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   453
!
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   454
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   455
yOriginOfContents
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   456
    "return the y-origin of the contents in pixels.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   457
     Since we dont know here, just return 0 for top.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   458
     Must be redefined in subviews to make scrollbars really work."
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   459
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   460
    ^ 0
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   461
!
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   462
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   463
xOriginOfContents
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   464
    "return the x-origin of the contents in pixels.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   465
     Since we dont know here, just return 0 for left.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   466
     Must be redefined in subviews to make scrollbars really work."
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   467
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   468
    ^ 0
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   469
! !
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   470
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   471
!PseudoView methodsFor:'accessing-limits'!
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   472
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   473
minExtent:extent
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   474
    "set the views minimum extent - ignored here.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   475
     Only standardSystemViews support this."
24
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   476
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   477
    ^ self
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   478
!
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   479
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   480
minExtent
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   481
    "return the views minimum extent - this is nil here.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   482
     Only standardSystemViews support this."
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   483
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   484
    ^ nil
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   485
!
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   486
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   487
maxExtent:extent
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   488
    "set the views maximum extent - ignored here.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   489
     Only standardSystemViews support this."
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   490
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   491
    ^ self
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   492
!
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   493
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   494
maxExtent
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   495
    "return the views maximum extent - this is nil here.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   496
     Only standardSystemViews support this."
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   497
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   498
    ^ nil
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   499
! !
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   500
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   501
!PseudoView methodsFor:'accessing-misc'!
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   502
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   503
realized
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   504
    "return true, if the receiver is realized"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   505
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   506
    ^ realized
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   507
!
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   508
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   509
inputOnly
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   510
    "return true, if the receiver is an input only view - that is: 
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   511
     the view will realize as a transparent view, into which you cannot
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   512
     draw, but get events as usual. Thich can be used to catch events away from 
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   513
     others, which where never meant to work in such a setup.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   514
     (for example, if you want to manipulate views in some DrawTool-like manner).
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   515
     This uses a special X feature, which might not be supported in the near future
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   516
     or on other plattforms."
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   517
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   518
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   519
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   520
89
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   521
getKeyboardFocus
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   522
    "tell the Display to assign keyboard focus to the receiver"
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   523
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   524
    device setInputFocusTo:drawableId.
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   525
!
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   526
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   527
eventMask
48194c26a46c Initial revision
claus
parents:
diff changeset
   528
    "return a (numeric) mask of allowed events -
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   529
     this is X-specific and will be removed / replaced by symbolic values)"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   530
    
48194c26a46c Initial revision
claus
parents:
diff changeset
   531
    ^ eventMask
48194c26a46c Initial revision
claus
parents:
diff changeset
   532
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   533
48194c26a46c Initial revision
claus
parents:
diff changeset
   534
eventMask:aMask
48194c26a46c Initial revision
claus
parents:
diff changeset
   535
    "set a (numeric) mask of allowed events -
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   536
     this is X-specific and will be removed / replaced by symbolic values)"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   537
     
48194c26a46c Initial revision
claus
parents:
diff changeset
   538
    eventMask := aMask
48194c26a46c Initial revision
claus
parents:
diff changeset
   539
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   540
48194c26a46c Initial revision
claus
parents:
diff changeset
   541
clipByChildren
48194c26a46c Initial revision
claus
parents:
diff changeset
   542
    "drawing shall be done into my view only (default)"
48194c26a46c Initial revision
claus
parents:
diff changeset
   543
48194c26a46c Initial revision
claus
parents:
diff changeset
   544
    gcId isNil ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   545
	self initGC
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   546
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   547
    device setClipByChildren:true in:gcId
48194c26a46c Initial revision
claus
parents:
diff changeset
   548
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   549
48194c26a46c Initial revision
claus
parents:
diff changeset
   550
noClipByChildren
48194c26a46c Initial revision
claus
parents:
diff changeset
   551
    "drawing shall also be done into subviews"
48194c26a46c Initial revision
claus
parents:
diff changeset
   552
48194c26a46c Initial revision
claus
parents:
diff changeset
   553
    gcId isNil ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   554
	self initGC
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   555
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   556
    device setClipByChildren:false in:gcId
48194c26a46c Initial revision
claus
parents:
diff changeset
   557
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   558
48194c26a46c Initial revision
claus
parents:
diff changeset
   559
saveUnder:aBoolean
48194c26a46c Initial revision
claus
parents:
diff changeset
   560
    "turn on/off saveUnder (saving pixels under myself)
48194c26a46c Initial revision
claus
parents:
diff changeset
   561
     - used for temporary views (i.e. PopUps and ModalBoxes)"
48194c26a46c Initial revision
claus
parents:
diff changeset
   562
48194c26a46c Initial revision
claus
parents:
diff changeset
   563
    saveUnder := aBoolean.
48194c26a46c Initial revision
claus
parents:
diff changeset
   564
    drawableId notNil ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   565
	device setSaveUnder:aBoolean in:drawableId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   566
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   567
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   568
48194c26a46c Initial revision
claus
parents:
diff changeset
   569
backingStore:how
48194c26a46c Initial revision
claus
parents:
diff changeset
   570
    "turn on/off backingStore (saving my pixels)
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   571
     how may true/false, but also #always, #whenMapped or #never."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   572
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   573
    how ~~ backed ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   574
	backed := how.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   575
	drawableId notNil ifTrue:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   576
	    device setBackingStore:how in:drawableId
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   577
	]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   578
    ]
24
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   579
!
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   580
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   581
preferedVisual
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   582
    "return a non nil id, if a specific visual is wanted in this view.
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   583
     Return nil if we do not care (i.e. the displays default is wanted). 
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   584
     This is experimental and may change/vanish - do not use it."
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   585
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   586
    ^ nil
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   587
!
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   588
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   589
preferedDepth
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   590
    "return a non nil integer, if a specific depth is wanted in this view.
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   591
     Return nil if we do not care (i.e. the displays default is wanted).
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   592
     This is experimental and may change/vanish - do not use it."
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   593
e810b1be068b *** empty log message ***
claus
parents: 21
diff changeset
   594
    ^ nil
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   595
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   596
48194c26a46c Initial revision
claus
parents:
diff changeset
   597
!PseudoView methodsFor:'drawing'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   598
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   599
redraw
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   600
    "nothing done here"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   601
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   602
    ^ self
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   603
!
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   604
81
4ba554473294 *** empty log message ***
claus
parents: 77
diff changeset
   605
clearDeviceRectangleX:x y:y width:w height:h
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   606
    "clear a rectangular area to viewBackground -
48194c26a46c Initial revision
claus
parents:
diff changeset
   607
     redefined since DisplayMedium fills with background
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   608
     - not viewBackground as we want here."
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   609
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   610
    |oldPaint|
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   611
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   612
    oldPaint := paint.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   613
    self paint:viewBackground.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   614
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   615
    viewBackground isColor ifFalse:[
89
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   616
	gcId notNil ifTrue:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   617
	    device setMaskOriginX:self viewOrigin x rounded negated
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   618
				y:self viewOrigin y rounded negated
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   619
			       in:gcId
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   620
	].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   621
    ].
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   622
    "
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   623
     fill in device coordinates - not logical coordinates
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   624
    "
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   625
    self fillDeviceRectangleX:x y:y width:w height:h "with:viewBackground".
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   626
    self paint:oldPaint
81
4ba554473294 *** empty log message ***
claus
parents: 77
diff changeset
   627
!
4ba554473294 *** empty log message ***
claus
parents: 77
diff changeset
   628
4ba554473294 *** empty log message ***
claus
parents: 77
diff changeset
   629
clearRectangleX:x y:y width:w height:h
4ba554473294 *** empty log message ***
claus
parents: 77
diff changeset
   630
    "clear a rectangular area to viewBackground -
4ba554473294 *** empty log message ***
claus
parents: 77
diff changeset
   631
     redefined since DisplayMedium fills with background
4ba554473294 *** empty log message ***
claus
parents: 77
diff changeset
   632
     - not viewBackground as we want here."
4ba554473294 *** empty log message ***
claus
parents: 77
diff changeset
   633
4ba554473294 *** empty log message ***
claus
parents: 77
diff changeset
   634
    |oldPaint|
4ba554473294 *** empty log message ***
claus
parents: 77
diff changeset
   635
4ba554473294 *** empty log message ***
claus
parents: 77
diff changeset
   636
    oldPaint := paint.
4ba554473294 *** empty log message ***
claus
parents: 77
diff changeset
   637
    self paint:viewBackground.
4ba554473294 *** empty log message ***
claus
parents: 77
diff changeset
   638
4ba554473294 *** empty log message ***
claus
parents: 77
diff changeset
   639
    viewBackground isColor ifFalse:[
89
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   640
	gcId notNil ifTrue:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   641
	    device setMaskOriginX:self viewOrigin x rounded negated
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   642
				y:self viewOrigin y rounded negated
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   643
			       in:gcId
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   644
	].
81
4ba554473294 *** empty log message ***
claus
parents: 77
diff changeset
   645
    ].
4ba554473294 *** empty log message ***
claus
parents: 77
diff changeset
   646
    self fillRectangleX:x y:y width:w height:h.
4ba554473294 *** empty log message ***
claus
parents: 77
diff changeset
   647
    self paint:oldPaint
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   648
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   649
48194c26a46c Initial revision
claus
parents:
diff changeset
   650
!PseudoView methodsFor:'keyboard commands'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   651
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   652
addActionForKey:aKey action:aBlock
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   653
    "define a keyboard command function"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   654
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   655
    keyCommands isNil ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   656
	keyCommands := IdentityDictionary new
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   657
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   658
    keyCommands at:aKey put:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
   659
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   660
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   661
removeActionForKey:aKey
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   662
    keyCommands notNil ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   663
	keyCommands removeKey:aKey ifAbsent:[]
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   664
    ]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   665
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   666
48194c26a46c Initial revision
claus
parents:
diff changeset
   667
!PseudoView methodsFor:'button menus'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   668
48194c26a46c Initial revision
claus
parents:
diff changeset
   669
middleButtonMenu
48194c26a46c Initial revision
claus
parents:
diff changeset
   670
    "return the menu associated with the middle mouse button"
48194c26a46c Initial revision
claus
parents:
diff changeset
   671
48194c26a46c Initial revision
claus
parents:
diff changeset
   672
    ^ middleButtonMenu
48194c26a46c Initial revision
claus
parents:
diff changeset
   673
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   674
48194c26a46c Initial revision
claus
parents:
diff changeset
   675
middleButtonMenu:aMenu
48194c26a46c Initial revision
claus
parents:
diff changeset
   676
    "associate aMenu with the middle mouse button"
48194c26a46c Initial revision
claus
parents:
diff changeset
   677
48194c26a46c Initial revision
claus
parents:
diff changeset
   678
    middleButtonMenu notNil ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   679
	middleButtonMenu destroy
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   680
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   681
    middleButtonMenu := aMenu.
48194c26a46c Initial revision
claus
parents:
diff changeset
   682
    self enableButtonEvents
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   683
!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   684
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   685
setMiddleButtonMenu:aMenu
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   686
    "associate aMenu with the middle mouse button.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   687
     Do not destroy old menu if any"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   688
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   689
    middleButtonMenu := aMenu.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   690
    self enableButtonEvents
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   691
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   692
48194c26a46c Initial revision
claus
parents:
diff changeset
   693
!PseudoView methodsFor:'enable/disable events'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   694
48194c26a46c Initial revision
claus
parents:
diff changeset
   695
enableEvent:anEventSymbol
48194c26a46c Initial revision
claus
parents:
diff changeset
   696
    "enable an event -
48194c26a46c Initial revision
claus
parents:
diff changeset
   697
     this is a private (internal) method not to be used externally.
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   698
     for a list of allowed event symbols see Workstation class"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   699
    
48194c26a46c Initial revision
claus
parents:
diff changeset
   700
    eventMask := eventMask bitOr:(device eventMaskFor:anEventSymbol).
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   701
    drawableId notNil ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   702
	device setEventMask:eventMask in:drawableId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   703
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   704
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   705
48194c26a46c Initial revision
claus
parents:
diff changeset
   706
disableEvent:anEventSymbol
48194c26a46c Initial revision
claus
parents:
diff changeset
   707
    "disable an event -
48194c26a46c Initial revision
claus
parents:
diff changeset
   708
     this is a private (internal) method not to be used externally.
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   709
     for a list of allowed event symbols see Workstation class"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   710
     
48194c26a46c Initial revision
claus
parents:
diff changeset
   711
    eventMask := eventMask bitAnd:
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   712
			       (device eventMaskFor:anEventSymbol) bitInvert.
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   713
    drawableId notNil ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
   714
	device setEventMask:eventMask in:drawableId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   715
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   716
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   717
54
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
   718
enableKeyEvents
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
   719
    "this is a compatibility leftover - 
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
   720
     starting with 2.10.3, keyPress is always enabled to allow 
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
   721
     ^C processing."
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
   722
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
   723
!
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
   724
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   725
enableKeyPressEvents
54
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
   726
    "this is a compatibility leftover - 
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
   727
     starting with 2.10.3, keyPress is always enabled to allow 
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
   728
     ^C processing."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   729
    
48194c26a46c Initial revision
claus
parents:
diff changeset
   730
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   731
48194c26a46c Initial revision
claus
parents:
diff changeset
   732
enableKeyReleaseEvents
48194c26a46c Initial revision
claus
parents:
diff changeset
   733
    "enable key release events"
48194c26a46c Initial revision
claus
parents:
diff changeset
   734
    
48194c26a46c Initial revision
claus
parents:
diff changeset
   735
    self enableEvent:#keyRelease
48194c26a46c Initial revision
claus
parents:
diff changeset
   736
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   737
48194c26a46c Initial revision
claus
parents:
diff changeset
   738
enableButtonPressEvents
48194c26a46c Initial revision
claus
parents:
diff changeset
   739
    "enable mouse button press events"
48194c26a46c Initial revision
claus
parents:
diff changeset
   740
    
48194c26a46c Initial revision
claus
parents:
diff changeset
   741
    self enableEvent:#buttonPress
48194c26a46c Initial revision
claus
parents:
diff changeset
   742
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   743
48194c26a46c Initial revision
claus
parents:
diff changeset
   744
enableButtonReleaseEvents
48194c26a46c Initial revision
claus
parents:
diff changeset
   745
    "enable mouse button release events"
48194c26a46c Initial revision
claus
parents:
diff changeset
   746
    
48194c26a46c Initial revision
claus
parents:
diff changeset
   747
    self enableEvent:#buttonRelease
48194c26a46c Initial revision
claus
parents:
diff changeset
   748
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   749
48194c26a46c Initial revision
claus
parents:
diff changeset
   750
enableButtonEvents
48194c26a46c Initial revision
claus
parents:
diff changeset
   751
    "enable both mouse button press and release events"
48194c26a46c Initial revision
claus
parents:
diff changeset
   752
    
48194c26a46c Initial revision
claus
parents:
diff changeset
   753
    self enableEvent:#buttonPress.
48194c26a46c Initial revision
claus
parents:
diff changeset
   754
    self enableEvent:#buttonRelease
48194c26a46c Initial revision
claus
parents:
diff changeset
   755
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   756
48194c26a46c Initial revision
claus
parents:
diff changeset
   757
enableEnterEvents
48194c26a46c Initial revision
claus
parents:
diff changeset
   758
    "enable mouse-pointer enter events"
48194c26a46c Initial revision
claus
parents:
diff changeset
   759
    
48194c26a46c Initial revision
claus
parents:
diff changeset
   760
    self enableEvent:#enter
48194c26a46c Initial revision
claus
parents:
diff changeset
   761
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   762
48194c26a46c Initial revision
claus
parents:
diff changeset
   763
enableLeaveEvents
48194c26a46c Initial revision
claus
parents:
diff changeset
   764
    "enable mouse-pointer leave events"
48194c26a46c Initial revision
claus
parents:
diff changeset
   765
    
48194c26a46c Initial revision
claus
parents:
diff changeset
   766
    self enableEvent:#leave
48194c26a46c Initial revision
claus
parents:
diff changeset
   767
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   768
48194c26a46c Initial revision
claus
parents:
diff changeset
   769
enableEnterLeaveEvents
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   770
    "enable both mouse-pointer enter and leave events"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   771
    
48194c26a46c Initial revision
claus
parents:
diff changeset
   772
    self enableEvent:#enter.
48194c26a46c Initial revision
claus
parents:
diff changeset
   773
    self enableEvent:#leave
48194c26a46c Initial revision
claus
parents:
diff changeset
   774
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   775
48194c26a46c Initial revision
claus
parents:
diff changeset
   776
enableMotionEvents
48194c26a46c Initial revision
claus
parents:
diff changeset
   777
    "enable mouse-pointer motion events"
48194c26a46c Initial revision
claus
parents:
diff changeset
   778
    
48194c26a46c Initial revision
claus
parents:
diff changeset
   779
    self enableEvent:#pointerMotion
48194c26a46c Initial revision
claus
parents:
diff changeset
   780
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   781
21
7b3da079729d *** empty log message ***
claus
parents: 12
diff changeset
   782
compressMotionEvents:aBoolean
7b3da079729d *** empty log message ***
claus
parents: 12
diff changeset
   783
    "enable/disable motion event compression
7b3da079729d *** empty log message ***
claus
parents: 12
diff changeset
   784
     (i.e. replacing all motion events by the last one).
7b3da079729d *** empty log message ***
claus
parents: 12
diff changeset
   785
     Compression makes almost always sense, except when
7b3da079729d *** empty log message ***
claus
parents: 12
diff changeset
   786
     doing things like freehand drawing"
7b3da079729d *** empty log message ***
claus
parents: 12
diff changeset
   787
85
32687feafcc1 *** empty log message ***
claus
parents: 83
diff changeset
   788
    |s|
32687feafcc1 *** empty log message ***
claus
parents: 83
diff changeset
   789
32687feafcc1 *** empty log message ***
claus
parents: 83
diff changeset
   790
    (s := self sensor) notNil ifTrue:[
32687feafcc1 *** empty log message ***
claus
parents: 83
diff changeset
   791
	s compressMotionEvents:aBoolean
32687feafcc1 *** empty log message ***
claus
parents: 83
diff changeset
   792
    ]
21
7b3da079729d *** empty log message ***
claus
parents: 12
diff changeset
   793
!
7b3da079729d *** empty log message ***
claus
parents: 12
diff changeset
   794
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   795
enableButtonMotionEvents
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   796
    "enable mouse-pointer motion-while-button-is-pressed events"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   797
    
48194c26a46c Initial revision
claus
parents:
diff changeset
   798
    self enableEvent:#buttonMotion
48194c26a46c Initial revision
claus
parents:
diff changeset
   799
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   800
48194c26a46c Initial revision
claus
parents:
diff changeset
   801
enableFocusEvents
48194c26a46c Initial revision
claus
parents:
diff changeset
   802
    "enable keyboard focus change events"
48194c26a46c Initial revision
claus
parents:
diff changeset
   803
    
48194c26a46c Initial revision
claus
parents:
diff changeset
   804
    self enableEvent:#focusChange
48194c26a46c Initial revision
claus
parents:
diff changeset
   805
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   806
48194c26a46c Initial revision
claus
parents:
diff changeset
   807
disableButtonPressEvents
48194c26a46c Initial revision
claus
parents:
diff changeset
   808
    "disable button press events"
48194c26a46c Initial revision
claus
parents:
diff changeset
   809
48194c26a46c Initial revision
claus
parents:
diff changeset
   810
    self disableEvent:#buttonPress
48194c26a46c Initial revision
claus
parents:
diff changeset
   811
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   812
48194c26a46c Initial revision
claus
parents:
diff changeset
   813
disableButtonReleaseEvents
48194c26a46c Initial revision
claus
parents:
diff changeset
   814
    "disable button release events"
48194c26a46c Initial revision
claus
parents:
diff changeset
   815
48194c26a46c Initial revision
claus
parents:
diff changeset
   816
    self disableEvent:#buttonRelease
48194c26a46c Initial revision
claus
parents:
diff changeset
   817
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   818
48194c26a46c Initial revision
claus
parents:
diff changeset
   819
disableButtonEvents
48194c26a46c Initial revision
claus
parents:
diff changeset
   820
    "disable all button events"
48194c26a46c Initial revision
claus
parents:
diff changeset
   821
48194c26a46c Initial revision
claus
parents:
diff changeset
   822
    self disableEvent:#buttonpress.
48194c26a46c Initial revision
claus
parents:
diff changeset
   823
    self disableEvent:#buttonRelease
48194c26a46c Initial revision
claus
parents:
diff changeset
   824
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   825
48194c26a46c Initial revision
claus
parents:
diff changeset
   826
disableMotionEvents
48194c26a46c Initial revision
claus
parents:
diff changeset
   827
    "disable motion events"
48194c26a46c Initial revision
claus
parents:
diff changeset
   828
48194c26a46c Initial revision
claus
parents:
diff changeset
   829
    self disableEvent:#pointerMotion
48194c26a46c Initial revision
claus
parents:
diff changeset
   830
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   831
48194c26a46c Initial revision
claus
parents:
diff changeset
   832
disableButtonMotionEvents
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   833
    "disable button motion-while-button-is-pressed events"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   834
48194c26a46c Initial revision
claus
parents:
diff changeset
   835
    self disableEvent:#buttonMotion
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   836
!
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   837
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   838
disableEnterLeaveEvents
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   839
    "disable both mouse-pointer enter and leave events"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   840
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   841
    self disableEvent:#enter.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   842
    self disableEvent:#leave
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   843
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   844
48194c26a46c Initial revision
claus
parents:
diff changeset
   845
!PseudoView methodsFor:'queries'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   846
89
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   847
isView
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   848
    "return true, if the receiver is a view"
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   849
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   850
    ^ true
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   851
!
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   852
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   853
exposeEventPending
89
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   854
    "return true, if an expose event is pending."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   855
89
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   856
    |sensor|
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   857
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   858
    ((sensor := self sensor) notNil and:[sensor hasDamageFor:self]) ifTrue:[^ true].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   859
    ^ device eventPending:#expose for:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
   860
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   861
48194c26a46c Initial revision
claus
parents:
diff changeset
   862
buttonMotionEventPending
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   863
    "return true, if a button motion event is pending.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   864
     Normally, you dont want to use this, since no polling is needed
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   865
     (not even for mouse-tracking).
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   866
     Dont use it, since it does not honor the windowGroup, but
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   867
     goes directly to the device instead.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   868
     Actually, its a historical leftover"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   869
48194c26a46c Initial revision
claus
parents:
diff changeset
   870
    ^ device eventPending:#buttonMotion for:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
   871
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   872
48194c26a46c Initial revision
claus
parents:
diff changeset
   873
buttonReleaseEventPending
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   874
    "return true, if a button release event is pending.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   875
     Dont use it, since it does not honor the windowGroup, but
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   876
     goes directly to the device instead.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
   877
     Actually, its a historical leftover"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   878
48194c26a46c Initial revision
claus
parents:
diff changeset
   879
    ^ device eventPending:#buttonRelease for:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
   880
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   881
89
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   882
!PseudoView methodsFor:'selection handling '!
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   883
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   884
selectionClear
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   885
    "someone else has the selection"
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   886
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   887
    Smalltalk at:#CopyBuffer put:nil.
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   888
!
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   889
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   890
getSelection
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   891
    "return the object selection - either the local one, or the displays
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   892
     selection buffer."
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   893
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   894
    |sel|
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   895
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   896
    sel := Smalltalk at:#CopyBuffer.
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   897
    sel isNil ifTrue:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   898
	sel := device getSelectionFor:drawableId.
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   899
	sel isNil ifTrue:[^ nil].
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   900
    ].
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   901
    ^ sel
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   902
!
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   903
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   904
getTextSelection
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   905
    "return the text selection - either the local one, or the displays
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   906
     selection buffer."
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   907
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   908
    |sel|
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   909
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   910
    sel := Smalltalk at:#CopyBuffer.
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   911
    sel isNil ifTrue:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   912
	sel := device getTextSelectionFor:drawableId.
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   913
	sel isNil ifTrue:[^ nil].
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   914
    ].
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   915
    ^ sel
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   916
!
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   917
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   918
setTextSelection:something
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   919
    "set the text selection - both the local one, and tell the display
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   920
     that we have changed it."
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   921
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   922
    |s|
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   923
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   924
    Smalltalk at:#CopyBuffer put:something.
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   925
    s := something.
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   926
    s isString ifFalse:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   927
	s := s asStringFrom:1 to:(s size) 
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   928
		       compressTabs:false 
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   929
		       withCR:false
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   930
    ].
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   931
    (device setTextSelection:s owner:drawableId) ifFalse:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   932
	'selection failed' errorPrintNL
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   933
    ]
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   934
!
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   935
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   936
setSelection:something
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   937
    "set the object selection - both the local one, and tell the display
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   938
     that we have changed it."
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   939
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   940
    |s|
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   941
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   942
    Smalltalk at:#CopyBuffer put:something.
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   943
    (device setSelection:something owner:drawableId) ifFalse:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   944
	'selection failed' errorPrintNL
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   945
    ]
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   946
!
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   947
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   948
selectionRequest:propertyID target:targetID selection:selectionID from:windowID
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   949
    "someone asks for our selection"
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   950
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   951
    |o s stream|
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   952
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   953
    o := Smalltalk at:#CopyBuffer.
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   954
    targetID == (device atomIDOf:'STRING') ifTrue:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   955
	s := o.
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   956
	o isString ifFalse:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   957
	    o isNil ifTrue:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   958
		s := ''
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   959
	    ] ifFalse:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   960
		(o isMemberOf:Text) ifTrue:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   961
		    s := o asStringFrom:1 to:(o size) 
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   962
			   compressTabs:false 
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   963
				 withCR:false
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   964
		] ifFalse:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   965
		    s := o storeString
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   966
		]
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   967
	    ]
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   968
	].
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   969
	device 
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   970
	    sendSelection:s 
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   971
	    property:propertyID 
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   972
	    target:targetID 
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   973
	    to:windowID
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   974
    ] ifFalse:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   975
	stream := WriteStream on:(ByteArray new:200).
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   976
	o storeBinaryOn:stream.
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   977
	device 
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   978
	    sendSelection:(stream contents) 
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   979
	    property:propertyID 
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   980
	    target:(device atomIDOf:'ST_OBJECT' create:true) 
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   981
	    to:windowID
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   982
    ]
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   983
!
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   984
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   985
selectionNotify:propertyID target:targetID selection:selectionID from:windowID
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   986
    "this is sent from the server as a reply to a request for a
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   987
     selection. The view should be prepared to paste the received
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   988
     string (it asked for it so that should not be a problem)"
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   989
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   990
    |s|
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   991
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   992
    targetID == (device atomIDOf:'STRING') ifTrue:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   993
	"
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   994
	 a returned string
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   995
	"
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   996
	s := device getTextProperty:propertyID from:windowID.
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   997
	s notNil ifTrue:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   998
	    (s endsWith:Character cr) ifTrue:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
   999
		self paste:(s asText copyWith:'')
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
  1000
	    ] ifFalse:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
  1001
		self paste:s
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
  1002
	    ]
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
  1003
	]
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
  1004
    ] ifFalse:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
  1005
	"
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
  1006
	 a returned object
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
  1007
	"
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
  1008
	s := device getObjectProperty:propertyID from:windowID.
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
  1009
	s notNil ifTrue:[
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
  1010
	    self paste:s
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
  1011
	]
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
  1012
    ]
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
  1013
! !
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
  1014
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1015
!PseudoView methodsFor:'event handling'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1016
28
3879ff2138f1 *** empty log message ***
claus
parents: 27
diff changeset
  1017
catchExpose
54
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
  1018
    "this MUST be sent BEFORE doing a bit-blt copy (i.e. copyFrom...), 
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
  1019
     to tell the sensor that incoming expose events are to be remembered.
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
  1020
     Sometime after the bit-blt, waitForExpose should be sent, to finally
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
  1021
     suspend until the expose/noExpose event arrives. 
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
  1022
     This may be an X speciality and be reimplemented to handle devices
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
  1023
     which do not need this kind of asynchronous bit-blt confirmation.
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
  1024
    "
28
3879ff2138f1 *** empty log message ***
claus
parents: 27
diff changeset
  1025
3879ff2138f1 *** empty log message ***
claus
parents: 27
diff changeset
  1026
    |wg|
3879ff2138f1 *** empty log message ***
claus
parents: 27
diff changeset
  1027
54
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
  1028
    gotExpose := false.
28
3879ff2138f1 *** empty log message ***
claus
parents: 27
diff changeset
  1029
    wg := self windowGroup.
3879ff2138f1 *** empty log message ***
claus
parents: 27
diff changeset
  1030
    wg notNil ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1031
	"
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1032
	 must process eny pending expose events, since
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1033
	 usually the origin is changed soon so that previous
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1034
	 expose events coordinates are invalid 
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1035
	"
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1036
	wg processExposeEvents.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1037
	wg sensor catchExpose
28
3879ff2138f1 *** empty log message ***
claus
parents: 27
diff changeset
  1038
    ]
3879ff2138f1 *** empty log message ***
claus
parents: 27
diff changeset
  1039
!
3879ff2138f1 *** empty log message ***
claus
parents: 27
diff changeset
  1040
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1041
waitForExpose
48194c26a46c Initial revision
claus
parents:
diff changeset
  1042
    "wait until an expose event arrives (to wait for scroll-finish)"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1043
26
ac9f66dc8f53 *** empty log message ***
claus
parents: 24
diff changeset
  1044
    |wg|
ac9f66dc8f53 *** empty log message ***
claus
parents: 24
diff changeset
  1045
ac9f66dc8f53 *** empty log message ***
claus
parents: 24
diff changeset
  1046
    wg := self windowGroup.
54
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
  1047
    wg notNil ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1048
	"
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1049
	 a normal (suspendable) view.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1050
	 wait by doing a real wait
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1051
	"
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1052
	 wg waitForExposeFor:self
54
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
  1053
    ] ifFalse:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1054
	"
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1055
	 a pure event driven view.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1056
	 wait by doing a direct dispatch loop until the event arrives.
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1057
	"
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1058
	[gotExpose] whileFalse:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1059
	    device dispatchExposeEventFor:drawableId
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1060
	].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1061
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1062
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1063
48194c26a46c Initial revision
claus
parents:
diff changeset
  1064
noExpose
54
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
  1065
    "a no expose event after a scroll (event-mode only)"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1066
48194c26a46c Initial revision
claus
parents:
diff changeset
  1067
    exposePending := false.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1068
    gotExpose := true
48194c26a46c Initial revision
claus
parents:
diff changeset
  1069
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1070
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1071
deviceGraphicExposeX:x y:y width:w height:h
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1072
    "this is the low-level (untransformed) event as received
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1073
     from the device (i.e. coordinates are in device coordinates). 
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1074
     If there is a transformation, apply the inverse
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1075
     and send a graphicExpose with the logical coordinates."
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1076
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1077
    |lx ly lw lh|
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1078
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1079
    lx := x.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1080
    ly := y.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1081
    lw := w.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1082
    lh := h.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1083
    transformation notNil ifTrue:[
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1084
	lx := transformation applyInverseToX:lx.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1085
	ly := transformation applyInverseToY:ly.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1086
	lw := transformation applyInverseScaleX:lw.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1087
	lh := transformation applyInverseScaleY:lh.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1088
    ].
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1089
    self graphicExposeX:lx y:ly width:lw height:lh
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1090
!
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1091
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1092
deviceExposeX:x y:y width:w height:h
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1093
    "this is the low-level (untransformed) event as received
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1094
     from the device (i.e. coordinates are in device coordinates). 
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1095
     If there is a transformation, apply the inverse
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1096
     and send an expose with the logical coordinates."
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1097
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1098
    |lx ly lw lh|
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1099
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1100
    lx := x.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1101
    ly := y.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1102
    lw := w.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1103
    lh := h.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1104
    transformation notNil ifTrue:[
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1105
	lx := transformation applyInverseToX:lx.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1106
	ly := transformation applyInverseToY:ly.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1107
	lw := transformation applyInverseScaleX:lw.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1108
	lh := transformation applyInverseScaleY:lh.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1109
    ].
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1110
    self exposeX:lx y:ly width:lw height:lh
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1111
!
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1112
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1113
deviceKeyPress:key x:x y:y
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1114
    "this is the low-level (untransformed) event as received
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1115
     from the device (i.e. coordinates are in device coordinates). 
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1116
     If there is a transformation, apply the inverse
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1117
     and send a keyPress with the logical coordinates."
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1118
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1119
    |lx ly|
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1120
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1121
    lx := x.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1122
    ly := y.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1123
    transformation notNil ifTrue:[
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1124
	lx := transformation applyInverseToX:lx.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1125
	ly := transformation applyInverseToY:ly.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1126
    ].
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1127
    self keyPress:key x:lx y:ly
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1128
!
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1129
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1130
deviceKeyRelease:key x:x y:y
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1131
    "this is the low-level (untransformed) event as received
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1132
     from the device (i.e. coordinates are in device coordinates). 
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1133
     If there is a transformation, apply the inverse
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1134
     and send a keyRelease with the logical coordinates."
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1135
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1136
    |lx ly|
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1137
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1138
    lx := x.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1139
    ly := y.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1140
    transformation notNil ifTrue:[
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1141
	lx := transformation applyInverseToX:lx.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1142
	ly := transformation applyInverseToY:ly.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1143
    ].
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1144
    self keyRelease:key x:lx y:ly
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1145
!
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1146
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1147
deviceButtonPress:butt x:x y:y
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1148
    "this is the low-level (untransformed) event as received
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1149
     from the device (i.e. coordinates are in device coordinates). 
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1150
     If there is a transformation, apply the inverse
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1151
     and send a buttonPress with the logical coordinates."
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1152
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1153
    |lx ly|
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1154
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1155
    lx := x.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1156
    ly := y.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1157
    transformation notNil ifTrue:[
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1158
	lx := transformation applyInverseToX:lx.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1159
	ly := transformation applyInverseToY:ly.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1160
    ].
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1161
    self buttonPress:butt x:lx y:ly
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1162
!
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1163
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1164
deviceButtonRelease:butt x:x y:y
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1165
    "this is the low-level (untransformed) event as received
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1166
     from the device (i.e. coordinates are in device coordinates). 
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1167
     If there is a transformation, apply the inverse
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1168
     and send a buttonRelease with the logical coordinates."
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1169
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1170
    |lx ly|
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1171
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1172
    lx := x.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1173
    ly := y.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1174
    transformation notNil ifTrue:[
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1175
	lx := transformation applyInverseToX:lx.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1176
	ly := transformation applyInverseToY:ly.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1177
    ].
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1178
    self buttonRelease:butt x:lx y:ly
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1179
!
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1180
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1181
deviceButtonShiftPress:butt x:x y:y
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1182
    "this is the low-level (untransformed) event as received
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1183
     from the device (i.e. coordinates are in device coordinates). 
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1184
     If there is a transformation, apply the inverse
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1185
     and send a buttonShiftPress with the logical coordinates."
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1186
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1187
    |lx ly|
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1188
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1189
    lx := x.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1190
    ly := y.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1191
    transformation notNil ifTrue:[
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1192
	lx := transformation applyInverseToX:lx.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1193
	ly := transformation applyInverseToY:ly.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1194
    ].
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1195
    self buttonShiftPress:butt x:lx y:ly
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1196
!
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1197
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1198
deviceButtonMultiPress:butt x:x y:y
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1199
    "this is the low-level (untransformed) event as received
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1200
     from the device (i.e. coordinates are in device coordinates). 
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1201
     If there is a transformation, apply the inverse
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1202
     and send a buttonMultiPress with the logical coordinates."
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1203
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1204
    |lx ly|
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1205
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1206
    lx := x.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1207
    ly := y.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1208
    transformation notNil ifTrue:[
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1209
	lx := transformation applyInverseToX:lx.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1210
	ly := transformation applyInverseToY:ly.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1211
    ].
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1212
    self buttonMultiPress:butt x:lx y:ly
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1213
!
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1214
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1215
deviceButtonMotion:state x:x y:y
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1216
    "this is the low-level (untransformed) event as received
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1217
     from the device (i.e. coordinates are in device coordinates). 
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1218
     If there is a transformation, apply the inverse
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1219
     and send a buttonMotion with the logical coordinates."
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1220
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1221
    |lx ly|
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1222
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1223
    lx := x.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1224
    ly := y.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1225
    transformation notNil ifTrue:[
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1226
	lx := transformation applyInverseToX:lx.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1227
	ly := transformation applyInverseToY:ly.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1228
    ].
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1229
    self buttonMotion:state x:lx y:ly
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1230
!
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1231
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1232
devicePointerEnter:state x:x y:y
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1233
    "this is the low-level (untransformed) event as received
83
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1234
     from the device (i.e. coordinates are in device coordinates). 
597bdb33e832 *** empty log message ***
claus
parents: 81
diff changeset
  1235
     If there is a transformation, apply the inverse
77
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1236
     and send a pointerEnter with the logical coordinates."
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1237
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1238
    |lx ly|
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1239
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1240
    lx := x.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1241
    ly := y.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1242
    transformation notNil ifTrue:[
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1243
	lx := transformation applyInverseToX:lx.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1244
	ly := transformation applyInverseToY:ly.
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1245
    ].
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1246
    self pointerEnter:state x:lx y:ly
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1247
!
da4678fae5c8 *** empty log message ***
claus
parents: 72
diff changeset
  1248
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1249
graphicExposeX:x y:y width:w height:h
54
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
  1250
    "an expose event after a scroll - do normal redraw processing"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1251
48194c26a46c Initial revision
claus
parents:
diff changeset
  1252
    self exposeX:x y:y width:w height:h
48194c26a46c Initial revision
claus
parents:
diff changeset
  1253
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1254
48194c26a46c Initial revision
claus
parents:
diff changeset
  1255
exposeX:x y:y width:w height:h
48194c26a46c Initial revision
claus
parents:
diff changeset
  1256
    "an expose event - nothing done here"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1257
48194c26a46c Initial revision
claus
parents:
diff changeset
  1258
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
  1259
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1260
48194c26a46c Initial revision
claus
parents:
diff changeset
  1261
keyPress:key x:x y:y
54
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
  1262
    "a key was pressed in this view.
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
  1263
     Here only keyCommands are handled - more action has to
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1264
     be implemented by redefining this method"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1265
      
48194c26a46c Initial revision
claus
parents:
diff changeset
  1266
    |action|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1267
48194c26a46c Initial revision
claus
parents:
diff changeset
  1268
    keyCommands notNil ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1269
	action := keyCommands at:key ifAbsent:[nil].
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1270
	action notNil ifTrue:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1271
	    action value
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1272
	]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1273
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1274
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1275
48194c26a46c Initial revision
claus
parents:
diff changeset
  1276
keyRelease:key x:x y:y
48194c26a46c Initial revision
claus
parents:
diff changeset
  1277
    "default action is to do nothing"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1278
    
48194c26a46c Initial revision
claus
parents:
diff changeset
  1279
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
  1280
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1281
48194c26a46c Initial revision
claus
parents:
diff changeset
  1282
buttonShiftPress:button x:x y:y
48194c26a46c Initial revision
claus
parents:
diff changeset
  1283
    "button was pressed with shift - default to unshift-press action"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1284
48194c26a46c Initial revision
claus
parents:
diff changeset
  1285
    ^ self buttonPress:button x:x y:y
48194c26a46c Initial revision
claus
parents:
diff changeset
  1286
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1287
48194c26a46c Initial revision
claus
parents:
diff changeset
  1288
buttonPress:button x:x y:y
48194c26a46c Initial revision
claus
parents:
diff changeset
  1289
    "button was pressed - if its middle button and there is a menu,
48194c26a46c Initial revision
claus
parents:
diff changeset
  1290
     show it."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1291
46
7b331e9012fd *** empty log message ***
claus
parents: 40
diff changeset
  1292
    ((button == 2) or:[button == #menu]) ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1293
	middleButtonMenu notNil ifTrue:[
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1294
	    middleButtonMenu showAtPointer
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1295
	]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1296
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1297
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1298
48194c26a46c Initial revision
claus
parents:
diff changeset
  1299
buttonMultiPress:button x:x y:y
48194c26a46c Initial revision
claus
parents:
diff changeset
  1300
    "button was pressed fast after previous press - default to press-again"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1301
48194c26a46c Initial revision
claus
parents:
diff changeset
  1302
    ^ self buttonPress:button x:x y:y
48194c26a46c Initial revision
claus
parents:
diff changeset
  1303
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1304
48194c26a46c Initial revision
claus
parents:
diff changeset
  1305
buttonRelease:button x:x y:y
48194c26a46c Initial revision
claus
parents:
diff changeset
  1306
    "button was released - do nothing here"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1307
48194c26a46c Initial revision
claus
parents:
diff changeset
  1308
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
  1309
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1310
48194c26a46c Initial revision
claus
parents:
diff changeset
  1311
buttonMotion:state x:x y:y
48194c26a46c Initial revision
claus
parents:
diff changeset
  1312
    "mouse was moved while button is pressed - do nothing here"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1313
48194c26a46c Initial revision
claus
parents:
diff changeset
  1314
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
  1315
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1316
48194c26a46c Initial revision
claus
parents:
diff changeset
  1317
focusIn
48194c26a46c Initial revision
claus
parents:
diff changeset
  1318
    "got keayboard focus - do nothing here"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1319
48194c26a46c Initial revision
claus
parents:
diff changeset
  1320
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
  1321
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1322
48194c26a46c Initial revision
claus
parents:
diff changeset
  1323
focusOut
48194c26a46c Initial revision
claus
parents:
diff changeset
  1324
    "lost keayboard focus - do nothing here"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1325
48194c26a46c Initial revision
claus
parents:
diff changeset
  1326
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
  1327
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1328
48194c26a46c Initial revision
claus
parents:
diff changeset
  1329
pointerEnter:state x:x y:y
48194c26a46c Initial revision
claus
parents:
diff changeset
  1330
    "mouse cursor entered view - do nothing here"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1331
48194c26a46c Initial revision
claus
parents:
diff changeset
  1332
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
  1333
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1334
48194c26a46c Initial revision
claus
parents:
diff changeset
  1335
pointerLeave:state
48194c26a46c Initial revision
claus
parents:
diff changeset
  1336
    "mouse cursor left view - do nothing here"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1337
48194c26a46c Initial revision
claus
parents:
diff changeset
  1338
    ^ self
31
168c08a3435b *** empty log message ***
claus
parents: 28
diff changeset
  1339
!
168c08a3435b *** empty log message ***
claus
parents: 28
diff changeset
  1340
168c08a3435b *** empty log message ***
claus
parents: 28
diff changeset
  1341
resizeRequest
168c08a3435b *** empty log message ***
claus
parents: 28
diff changeset
  1342
    ^ self
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1343
! !
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1344
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1345
!PseudoView methodsFor: 'binary storage'!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1346
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1347
readBinaryContentsFrom: stream manager: manager
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
  1348
    "tell the newly restored View to recreate itself.
89
ea2bf46eb669 *** empty log message ***
claus
parents: 85
diff changeset
  1349
     Bug: restored view seems to loose its position (if its not an StdSysView)."
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1350
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1351
    super readBinaryContentsFrom: stream manager: manager.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1352
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1353
    gcId := nil.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1354
    drawableId := nil.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1355
    self recreate.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1356
    realized ifTrue:[
72
3e84121988c3 *** empty log message ***
claus
parents: 59
diff changeset
  1357
	self rerealize
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1358
    ]
40
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
  1359
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
  1360
    "
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
  1361
     |s|
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
  1362
     s := 'storedLabel.boss' asFilename writeStream binary.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
  1363
     (Label label:'hello there') realize storeBinaryOn:s.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
  1364
     s close.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
  1365
    "
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
  1366
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
  1367
    "
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
  1368
     |s|
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
  1369
     s := 'storedLabel.boss' asFilename readStream binary.
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
  1370
     (Object readBinaryFrom:s)
ec49fbe65816 *** empty log message ***
claus
parents: 35
diff changeset
  1371
    "
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1372
! !