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