Cursor.st
author claus
Tue, 16 May 1995 19:17:11 +0200
changeset 144 cf645a1ebbb3
parent 133 ca8ce3916382
child 145 ac7088b0aee5
permissions -rw-r--r--
.
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: 3
diff changeset
     2
 COPYRIGHT (c) 1992 by Claus Gittinger
80
eb8373679a9f *** empty log message ***
claus
parents: 71
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
Object subclass:#Cursor
48194c26a46c Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:'shape sourceForm maskForm hotX hotY
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    15
			      device cursorId'
23
4a7e02de7b72 *** empty log message ***
claus
parents: 12
diff changeset
    16
       classVariableNames:   'Lobby
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    17
			      DefaultFgColor DefaultBgColor
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    18
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    19
			      NormalCursor HandCursor ArrowCursor
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    20
			      WaitCursor CrossHairCursor OriginCursor
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    21
			      CornerCursor SquareCursor FourWayCursor
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    22
			      UpDownArrowCursor LeftRightArrowCursor'
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    23
       poolDictionaries:''
48194c26a46c Initial revision
claus
parents:
diff changeset
    24
       category:'Graphics-Support'
48194c26a46c Initial revision
claus
parents:
diff changeset
    25
!
48194c26a46c Initial revision
claus
parents:
diff changeset
    26
48194c26a46c Initial revision
claus
parents:
diff changeset
    27
Cursor comment:'
6
7ee0cfde237d *** empty log message ***
claus
parents: 3
diff changeset
    28
COPYRIGHT (c) 1992 by Claus Gittinger
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    29
	     All Rights Reserved
54
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
    30
144
claus
parents: 133
diff changeset
    31
$Header: /cvs/stx/stx/libview/Cursor.st,v 1.17 1995-05-16 17:12:35 claus Exp $
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    32
'!
48194c26a46c Initial revision
claus
parents:
diff changeset
    33
48194c26a46c Initial revision
claus
parents:
diff changeset
    34
!Cursor class methodsFor:'documentation'!
48194c26a46c Initial revision
claus
parents:
diff changeset
    35
46
7b331e9012fd *** empty log message ***
claus
parents: 38
diff changeset
    36
copyright
7b331e9012fd *** empty log message ***
claus
parents: 38
diff changeset
    37
"
7b331e9012fd *** empty log message ***
claus
parents: 38
diff changeset
    38
 COPYRIGHT (c) 1992 by Claus Gittinger
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    39
	      All Rights Reserved
46
7b331e9012fd *** empty log message ***
claus
parents: 38
diff changeset
    40
7b331e9012fd *** empty log message ***
claus
parents: 38
diff changeset
    41
 This software is furnished under a license and may be used
7b331e9012fd *** empty log message ***
claus
parents: 38
diff changeset
    42
 only in accordance with the terms of that license and with the
7b331e9012fd *** empty log message ***
claus
parents: 38
diff changeset
    43
 inclusion of the above copyright notice.   This software may not
7b331e9012fd *** empty log message ***
claus
parents: 38
diff changeset
    44
 be provided or otherwise made available to, or used by, any
7b331e9012fd *** empty log message ***
claus
parents: 38
diff changeset
    45
 other person.  No title to or ownership of the software is
7b331e9012fd *** empty log message ***
claus
parents: 38
diff changeset
    46
 hereby transferred.
7b331e9012fd *** empty log message ***
claus
parents: 38
diff changeset
    47
"
7b331e9012fd *** empty log message ***
claus
parents: 38
diff changeset
    48
!
7b331e9012fd *** empty log message ***
claus
parents: 38
diff changeset
    49
7b331e9012fd *** empty log message ***
claus
parents: 38
diff changeset
    50
version
7b331e9012fd *** empty log message ***
claus
parents: 38
diff changeset
    51
"
144
claus
parents: 133
diff changeset
    52
$Header: /cvs/stx/stx/libview/Cursor.st,v 1.17 1995-05-16 17:12:35 claus Exp $
46
7b331e9012fd *** empty log message ***
claus
parents: 38
diff changeset
    53
"
7b331e9012fd *** empty log message ***
claus
parents: 38
diff changeset
    54
!
7b331e9012fd *** empty log message ***
claus
parents: 38
diff changeset
    55
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    56
documentation
38
2652fc96e660 *** empty log message ***
claus
parents: 35
diff changeset
    57
"
2652fc96e660 *** empty log message ***
claus
parents: 35
diff changeset
    58
    I represents cursors in a device independent manner.
144
claus
parents: 133
diff changeset
    59
    Normally, cursors are defined at view creation time,
claus
parents: 133
diff changeset
    60
    via 'aView cursor:aCursor'.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    61
38
2652fc96e660 *** empty log message ***
claus
parents: 35
diff changeset
    62
    Instance variables:
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    63
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    64
	shape           <Symbol>        a shape (i.e. #arrow, #hand, ...) or nil
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    65
	sourceForm      <Form>          if shape is nil, the source bits
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    66
	maskForm        <Form>          if shape is nil, the mask bits
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    67
	hotX            <SmallInteger>  if shape is nil, the hotSpot x of the cursor
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    68
	hotY            <SmallInteger>  if shape is nil, the hotSpot y of the cursor
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    69
	device          <aDevice>       the device, if associated to one
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    70
	cursorId        <anObject>      the device-specific id if device is nonNil
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    71
38
2652fc96e660 *** empty log message ***
claus
parents: 35
diff changeset
    72
    class variables:
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    73
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    74
	Lobby           <Registry>      keeps track of known device cursors
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    75
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    76
	DefaultFgColor  <Color>         default foreground color for cursors (usually black)
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    77
	DefaultBgColor  <Color>         default background color for cursors (usually white)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    78
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    79
	NormalCursor    <Cursor>        cached instance of normal (arrow) cursor
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
    80
	 ...
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    81
38
2652fc96e660 *** empty log message ***
claus
parents: 35
diff changeset
    82
"
144
claus
parents: 133
diff changeset
    83
!
claus
parents: 133
diff changeset
    84
claus
parents: 133
diff changeset
    85
examples
claus
parents: 133
diff changeset
    86
"
claus
parents: 133
diff changeset
    87
    get a standard cursor:
claus
parents: 133
diff changeset
    88
claus
parents: 133
diff changeset
    89
	Cursor wait
claus
parents: 133
diff changeset
    90
	Cursor stop
claus
parents: 133
diff changeset
    91
	Cursor normal
claus
parents: 133
diff changeset
    92
claus
parents: 133
diff changeset
    93
    create a custom cursor:
claus
parents: 133
diff changeset
    94
claus
parents: 133
diff changeset
    95
	Cursor extent:16@16 
claus
parents: 133
diff changeset
    96
	       fromArray:#[ 2r00000000 2r00000000
claus
parents: 133
diff changeset
    97
			    2r00000000 2r00000000
claus
parents: 133
diff changeset
    98
			    2r00000000 2r00000000
claus
parents: 133
diff changeset
    99
			    2r11111111 2r11111111
claus
parents: 133
diff changeset
   100
			    2r11111111 2r11111111
claus
parents: 133
diff changeset
   101
			    2r00000000 2r00000000
claus
parents: 133
diff changeset
   102
			    2r00000000 2r00000000
claus
parents: 133
diff changeset
   103
			    2r11111111 2r11111111
claus
parents: 133
diff changeset
   104
			    2r11111111 2r11111111
claus
parents: 133
diff changeset
   105
			    2r00000000 2r00000000
claus
parents: 133
diff changeset
   106
			    2r00000000 2r00000000
claus
parents: 133
diff changeset
   107
			    2r11111111 2r11111111
claus
parents: 133
diff changeset
   108
			    2r11111111 2r11111111
claus
parents: 133
diff changeset
   109
			    2r00000000 2r00000000
claus
parents: 133
diff changeset
   110
			    2r00000000 2r00000000
claus
parents: 133
diff changeset
   111
			    2r00000000 2r00000000]
claus
parents: 133
diff changeset
   112
		offset:-8@-8   
claus
parents: 133
diff changeset
   113
claus
parents: 133
diff changeset
   114
    define a cursor for a view:
claus
parents: 133
diff changeset
   115
claus
parents: 133
diff changeset
   116
	|v|
claus
parents: 133
diff changeset
   117
claus
parents: 133
diff changeset
   118
	v := View new.
claus
parents: 133
diff changeset
   119
	v cursor:Cursor stop.
claus
parents: 133
diff changeset
   120
	v open.
claus
parents: 133
diff changeset
   121
claus
parents: 133
diff changeset
   122
      with above custom cursor:
claus
parents: 133
diff changeset
   123
claus
parents: 133
diff changeset
   124
	|v|
claus
parents: 133
diff changeset
   125
claus
parents: 133
diff changeset
   126
	v := View new.
claus
parents: 133
diff changeset
   127
	v cursor:(
claus
parents: 133
diff changeset
   128
	    Cursor extent:16@16 
claus
parents: 133
diff changeset
   129
	       fromArray:#[ 2r00000000 2r00000000
claus
parents: 133
diff changeset
   130
			    2r00000000 2r00000000
claus
parents: 133
diff changeset
   131
			    2r00000000 2r00000000
claus
parents: 133
diff changeset
   132
			    2r11111111 2r11111111
claus
parents: 133
diff changeset
   133
			    2r11111111 2r11111111
claus
parents: 133
diff changeset
   134
			    2r00000000 2r00000000
claus
parents: 133
diff changeset
   135
			    2r00000000 2r00000000
claus
parents: 133
diff changeset
   136
			    2r11111111 2r11111111
claus
parents: 133
diff changeset
   137
			    2r11111111 2r11111111
claus
parents: 133
diff changeset
   138
			    2r00000000 2r00000000
claus
parents: 133
diff changeset
   139
			    2r00000000 2r00000000
claus
parents: 133
diff changeset
   140
			    2r11111111 2r11111111
claus
parents: 133
diff changeset
   141
			    2r11111111 2r11111111
claus
parents: 133
diff changeset
   142
			    2r00000000 2r00000000
claus
parents: 133
diff changeset
   143
			    2r00000000 2r00000000
claus
parents: 133
diff changeset
   144
			    2r00000000 2r00000000]
claus
parents: 133
diff changeset
   145
		offset:-8@-8).   
claus
parents: 133
diff changeset
   146
	v open.
claus
parents: 133
diff changeset
   147
claus
parents: 133
diff changeset
   148
      with multiple views:
claus
parents: 133
diff changeset
   149
claus
parents: 133
diff changeset
   150
	|v1 v2 top|
claus
parents: 133
diff changeset
   151
claus
parents: 133
diff changeset
   152
	top := StandardSystemView new.
claus
parents: 133
diff changeset
   153
	top extent:300@300.
claus
parents: 133
diff changeset
   154
	v1 := View origin:0.0@0.0 corner:1.0@0.5 in:top.
claus
parents: 133
diff changeset
   155
	v1 viewBackground:(Color grey:75).
claus
parents: 133
diff changeset
   156
	v1 cursor:Cursor thumbsUp.
claus
parents: 133
diff changeset
   157
	v2 := View origin:0.0@0.5 corner:1.0@1.0 in:top.
claus
parents: 133
diff changeset
   158
	v2 viewBackground:(Color white).
claus
parents: 133
diff changeset
   159
	v2 cursor:Cursor wait.
claus
parents: 133
diff changeset
   160
	top open.
claus
parents: 133
diff changeset
   161
claus
parents: 133
diff changeset
   162
claus
parents: 133
diff changeset
   163
    show a cursor in ALL ST/X views for a while:
claus
parents: 133
diff changeset
   164
        
claus
parents: 133
diff changeset
   165
	Cursor wait 
claus
parents: 133
diff changeset
   166
	    showWhile:[
claus
parents: 133
diff changeset
   167
		(Delay forSeconds:5) wait
claus
parents: 133
diff changeset
   168
	    ]
claus
parents: 133
diff changeset
   169
claus
parents: 133
diff changeset
   170
claus
parents: 133
diff changeset
   171
    show a cursor in a single view for a while:
claus
parents: 133
diff changeset
   172
claus
parents: 133
diff changeset
   173
	|v1 v2 top|
claus
parents: 133
diff changeset
   174
claus
parents: 133
diff changeset
   175
	top := StandardSystemView new.
claus
parents: 133
diff changeset
   176
	top extent:300@300.
claus
parents: 133
diff changeset
   177
	v1 := View origin:0.0@0.0 corner:1.0@0.5 in:top.
claus
parents: 133
diff changeset
   178
	v1 viewBackground:(Color grey:75).
claus
parents: 133
diff changeset
   179
	v2 := View origin:0.0@0.5 corner:1.0@1.0 in:top.
claus
parents: 133
diff changeset
   180
	v2 viewBackground:(Color white).
claus
parents: 133
diff changeset
   181
	top open.
claus
parents: 133
diff changeset
   182
claus
parents: 133
diff changeset
   183
	v1 withCursor:Cursor wait 
claus
parents: 133
diff changeset
   184
	   do:[
claus
parents: 133
diff changeset
   185
		  (Delay forSeconds:10) wait
claus
parents: 133
diff changeset
   186
	      ]
claus
parents: 133
diff changeset
   187
claus
parents: 133
diff changeset
   188
claus
parents: 133
diff changeset
   189
    show a cursor in all views belonging to a windowGroup:
claus
parents: 133
diff changeset
   190
    (have to wait until top is visible to access windowGroup)
claus
parents: 133
diff changeset
   191
claus
parents: 133
diff changeset
   192
	|v1 v2 top|
claus
parents: 133
diff changeset
   193
claus
parents: 133
diff changeset
   194
	top := StandardSystemView new.
claus
parents: 133
diff changeset
   195
	top extent:300@300.
claus
parents: 133
diff changeset
   196
	v1 := View origin:0.0@0.0 corner:1.0@0.5 in:top.
claus
parents: 133
diff changeset
   197
	v1 viewBackground:(Color grey:75).
claus
parents: 133
diff changeset
   198
	v2 := View origin:0.0@0.5 corner:1.0@1.0 in:top.
claus
parents: 133
diff changeset
   199
	v2 viewBackground:(Color white).
claus
parents: 133
diff changeset
   200
	top open.
claus
parents: 133
diff changeset
   201
claus
parents: 133
diff changeset
   202
	[top shown] whileFalse:[Processor yield].
claus
parents: 133
diff changeset
   203
	top windowGroup
claus
parents: 133
diff changeset
   204
	    withCursor:Cursor wait 
claus
parents: 133
diff changeset
   205
	    do:[
claus
parents: 133
diff changeset
   206
		  (Delay forSeconds:10) wait
claus
parents: 133
diff changeset
   207
	       ]
claus
parents: 133
diff changeset
   208
"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   209
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   210
48194c26a46c Initial revision
claus
parents:
diff changeset
   211
!Cursor class methodsFor:'initialization'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   212
48194c26a46c Initial revision
claus
parents:
diff changeset
   213
initialize
23
4a7e02de7b72 *** empty log message ***
claus
parents: 12
diff changeset
   214
    Lobby isNil ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   215
	Lobby := Registry new.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   216
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   217
	"want to be informed when returning from snapshot"
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   218
	ObjectMemory addDependent:self
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   219
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   220
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   221
48194c26a46c Initial revision
claus
parents:
diff changeset
   222
flushDeviceCursors
48194c26a46c Initial revision
claus
parents:
diff changeset
   223
    "unassign all cursors from their device"
48194c26a46c Initial revision
claus
parents:
diff changeset
   224
115
1d93fd8c5371 *** empty log message ***
claus
parents: 89
diff changeset
   225
    Lobby do:[:aCursor |
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   226
	aCursor restored.
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   227
	Lobby changed:aCursor
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   228
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   229
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   230
48194c26a46c Initial revision
claus
parents:
diff changeset
   231
update:something
48194c26a46c Initial revision
claus
parents:
diff changeset
   232
    "sent when restarted after a snapIn"
48194c26a46c Initial revision
claus
parents:
diff changeset
   233
48194c26a46c Initial revision
claus
parents:
diff changeset
   234
    (something == #restarted) ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   235
	self flushDeviceCursors
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   236
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   237
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   238
48194c26a46c Initial revision
claus
parents:
diff changeset
   239
!Cursor class methodsFor:'default access'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   240
48194c26a46c Initial revision
claus
parents:
diff changeset
   241
defaultFgColor:fgColor defaultBgColor:bgColor
48194c26a46c Initial revision
claus
parents:
diff changeset
   242
    "set the default colors used for cursors"
48194c26a46c Initial revision
claus
parents:
diff changeset
   243
48194c26a46c Initial revision
claus
parents:
diff changeset
   244
    DefaultFgColor := fgColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
   245
    DefaultBgColor := bgColor
48194c26a46c Initial revision
claus
parents:
diff changeset
   246
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   247
48194c26a46c Initial revision
claus
parents:
diff changeset
   248
!Cursor class methodsFor:'instance creation'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   249
48194c26a46c Initial revision
claus
parents:
diff changeset
   250
extent:extent fromArray:array offset:offset
48194c26a46c Initial revision
claus
parents:
diff changeset
   251
    "create a new bitmap cursor from bits in the array argument
48194c26a46c Initial revision
claus
parents:
diff changeset
   252
     - ST-80 compatibility"
48194c26a46c Initial revision
claus
parents:
diff changeset
   253
48194c26a46c Initial revision
claus
parents:
diff changeset
   254
    |sourceForm|
48194c26a46c Initial revision
claus
parents:
diff changeset
   255
48194c26a46c Initial revision
claus
parents:
diff changeset
   256
    sourceForm := Form extent:extent fromArray:array offset:offset.
48194c26a46c Initial revision
claus
parents:
diff changeset
   257
    ^ self sourceForm:sourceForm maskForm:sourceForm hotSpot:(offset negated)
48194c26a46c Initial revision
claus
parents:
diff changeset
   258
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   259
48194c26a46c Initial revision
claus
parents:
diff changeset
   260
extent:extent sourceArray:sourceArray maskArray:maskArray offset:offset
48194c26a46c Initial revision
claus
parents:
diff changeset
   261
    "create a new bitmap cursor with mask from bits in sourceArray and
48194c26a46c Initial revision
claus
parents:
diff changeset
   262
     maskArray"
48194c26a46c Initial revision
claus
parents:
diff changeset
   263
48194c26a46c Initial revision
claus
parents:
diff changeset
   264
    |sourceForm maskForm|
48194c26a46c Initial revision
claus
parents:
diff changeset
   265
48194c26a46c Initial revision
claus
parents:
diff changeset
   266
    sourceForm := Form extent:extent fromArray:sourceArray offset:offset.
48194c26a46c Initial revision
claus
parents:
diff changeset
   267
    maskForm := Form extent:extent fromArray:maskArray offset:offset.
48194c26a46c Initial revision
claus
parents:
diff changeset
   268
    ^ self sourceForm:sourceForm maskForm:maskForm hotSpot:(offset negated)
48194c26a46c Initial revision
claus
parents:
diff changeset
   269
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   270
48194c26a46c Initial revision
claus
parents:
diff changeset
   271
sourceForm:aForm
48194c26a46c Initial revision
claus
parents:
diff changeset
   272
    "return a new cursor.
48194c26a46c Initial revision
claus
parents:
diff changeset
   273
     Source- and mask-Bits are taken from aForm; hotSpot is center"
48194c26a46c Initial revision
claus
parents:
diff changeset
   274
48194c26a46c Initial revision
claus
parents:
diff changeset
   275
    ^ self sourceForm:aForm
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   276
	     maskForm:aForm
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   277
		 hotX:(aForm width // 2)
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   278
		 hotY:(aForm height // 2)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   279
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   280
48194c26a46c Initial revision
claus
parents:
diff changeset
   281
sourceForm:sourceForm maskForm:maskForm
48194c26a46c Initial revision
claus
parents:
diff changeset
   282
    "return a new cursor. hotSpot is center"
48194c26a46c Initial revision
claus
parents:
diff changeset
   283
48194c26a46c Initial revision
claus
parents:
diff changeset
   284
    ^ self sourceForm:sourceForm
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   285
	     maskForm:maskForm
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   286
		 hotX:(sourceForm width // 2)
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   287
		 hotY:(sourceForm height // 2)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   288
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   289
48194c26a46c Initial revision
claus
parents:
diff changeset
   290
sourceForm:sourceForm maskForm:maskForm hotSpot:aPoint
48194c26a46c Initial revision
claus
parents:
diff changeset
   291
    "return a new cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   292
48194c26a46c Initial revision
claus
parents:
diff changeset
   293
    ^ self sourceForm:sourceForm
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   294
	     maskForm:maskForm
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   295
		 hotX:(aPoint x)
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   296
		 hotY:(aPoint y)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   297
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   298
48194c26a46c Initial revision
claus
parents:
diff changeset
   299
sourceForm:sourceForm maskForm:maskForm hotX:hotX hotY:hotY
48194c26a46c Initial revision
claus
parents:
diff changeset
   300
    "return a new cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   301
48194c26a46c Initial revision
claus
parents:
diff changeset
   302
    |newCursor|
48194c26a46c Initial revision
claus
parents:
diff changeset
   303
48194c26a46c Initial revision
claus
parents:
diff changeset
   304
    "first look if not already known"
115
1d93fd8c5371 *** empty log message ***
claus
parents: 89
diff changeset
   305
    Lobby do:[:aCursor |
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   306
	(aCursor sourceForm == sourceForm) ifTrue:[
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   307
	    (aCursor maskForm == maskForm) ifTrue:[
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   308
		(aCursor hotX == hotX) ifTrue:[
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   309
		    (aCursor hotY == hotY) ifTrue:[
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   310
			^ aCursor
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   311
		    ]
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   312
		]
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   313
	    ]
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   314
	]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   315
    ].
35
f1a194c18429 *** empty log message ***
claus
parents: 23
diff changeset
   316
    (sourceForm isNil or:[maskForm isNil]) ifTrue:[^ nil].
f1a194c18429 *** empty log message ***
claus
parents: 23
diff changeset
   317
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   318
    newCursor := self basicNew setSourceForm:sourceForm 
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   319
				    maskForm:maskForm
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   320
					hotX:hotX
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   321
					hotY:hotY.
23
4a7e02de7b72 *** empty log message ***
claus
parents: 12
diff changeset
   322
    Lobby register:newCursor.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   323
    ^ newCursor
48194c26a46c Initial revision
claus
parents:
diff changeset
   324
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   325
48194c26a46c Initial revision
claus
parents:
diff changeset
   326
shape:aShape 
48194c26a46c Initial revision
claus
parents:
diff changeset
   327
    "return one of the standard cursors.
48194c26a46c Initial revision
claus
parents:
diff changeset
   328
     Each display may offer different shapes - see for example XWorkstation
48194c26a46c Initial revision
claus
parents:
diff changeset
   329
     for details (however a basic minimum set should be supported by all)"
48194c26a46c Initial revision
claus
parents:
diff changeset
   330
48194c26a46c Initial revision
claus
parents:
diff changeset
   331
    |newCursor|
48194c26a46c Initial revision
claus
parents:
diff changeset
   332
48194c26a46c Initial revision
claus
parents:
diff changeset
   333
    "first look if not already known"
115
1d93fd8c5371 *** empty log message ***
claus
parents: 89
diff changeset
   334
    Lobby do:[:aCursor |
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   335
	(aCursor shape == aShape) ifTrue:[
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   336
	    ^ aCursor
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   337
	]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   338
    ].
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   339
    newCursor := self basicNew setShape:aShape.
23
4a7e02de7b72 *** empty log message ***
claus
parents: 12
diff changeset
   340
    Lobby register:newCursor.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   341
    ^ newCursor
48194c26a46c Initial revision
claus
parents:
diff changeset
   342
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   343
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   344
shape:aShape on:aDevice
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   345
    "return one of the standard cursors already associated to aDevice.
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   346
     This is the same as '(Cursor shape:aShape) on:aDevice' but somwehat faster."
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   347
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   348
    |newCursor oldCursor|
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   349
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   350
    "first look if not already known"
115
1d93fd8c5371 *** empty log message ***
claus
parents: 89
diff changeset
   351
    Lobby do:[:aCursor |
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   352
	(aCursor shape == aShape) ifTrue:[
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   353
	    (aCursor device == aDevice) ifTrue:[^ aCursor].
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   354
	    oldCursor := aCursor
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   355
	].
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   356
    ].
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   357
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   358
    "found one with same shape, but different device"
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   359
    oldCursor notNil ifTrue:[
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   360
	^ oldCursor newOn:aDevice
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   361
    ].
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   362
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   363
    newCursor := self basicNew setShape:aShape.
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   364
    Lobby register:newCursor.
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   365
    ^ newCursor
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   366
!
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   367
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   368
fileCursorNamed:cursorName
48194c26a46c Initial revision
claus
parents:
diff changeset
   369
    "return a cursor read from the files 'cursorName_bits.bit' and
48194c26a46c Initial revision
claus
parents:
diff changeset
   370
     'cursorName_mask.bit' - return nil if file does not exist"
48194c26a46c Initial revision
claus
parents:
diff changeset
   371
48194c26a46c Initial revision
claus
parents:
diff changeset
   372
    |cursorBits maskBits|
48194c26a46c Initial revision
claus
parents:
diff changeset
   373
48194c26a46c Initial revision
claus
parents:
diff changeset
   374
    cursorBits := Form fromFile:(cursorName , '_bits.bit').
48194c26a46c Initial revision
claus
parents:
diff changeset
   375
    cursorBits notNil ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   376
	maskBits := Form fromFile:(cursorName , '_mask.bit').
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   377
	maskBits notNil ifTrue:[
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   378
	    ^ self sourceForm:cursorBits maskForm:maskBits
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   379
	]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   380
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   381
    ^ nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   382
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   383
48194c26a46c Initial revision
claus
parents:
diff changeset
   384
!Cursor class methodsFor:'standard cursors'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   385
48194c26a46c Initial revision
claus
parents:
diff changeset
   386
normal
48194c26a46c Initial revision
claus
parents:
diff changeset
   387
    "return the normal cursor; an arrow.
48194c26a46c Initial revision
claus
parents:
diff changeset
   388
     for ST-80 compatibility"
48194c26a46c Initial revision
claus
parents:
diff changeset
   389
48194c26a46c Initial revision
claus
parents:
diff changeset
   390
    NormalCursor isNil ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   391
	NormalCursor := self arrow on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   392
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   393
    ^ NormalCursor
48194c26a46c Initial revision
claus
parents:
diff changeset
   394
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   395
48194c26a46c Initial revision
claus
parents:
diff changeset
   396
hand
48194c26a46c Initial revision
claus
parents:
diff changeset
   397
    "return a hand cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   398
48194c26a46c Initial revision
claus
parents:
diff changeset
   399
    HandCursor isNil ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   400
	HandCursor := self shape:#upRightHand on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   401
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   402
    ^ HandCursor
48194c26a46c Initial revision
claus
parents:
diff changeset
   403
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   404
48194c26a46c Initial revision
claus
parents:
diff changeset
   405
upRightHand
48194c26a46c Initial revision
claus
parents:
diff changeset
   406
    "return an up-right-hand cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   407
48194c26a46c Initial revision
claus
parents:
diff changeset
   408
    ^ self shape:#upRightHand
48194c26a46c Initial revision
claus
parents:
diff changeset
   409
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   410
48194c26a46c Initial revision
claus
parents:
diff changeset
   411
leftHand
48194c26a46c Initial revision
claus
parents:
diff changeset
   412
    "return a left-hand cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   413
48194c26a46c Initial revision
claus
parents:
diff changeset
   414
    ^ self shape:#leftHand
48194c26a46c Initial revision
claus
parents:
diff changeset
   415
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   416
48194c26a46c Initial revision
claus
parents:
diff changeset
   417
upDownArrow
48194c26a46c Initial revision
claus
parents:
diff changeset
   418
    "return an up-down-arrow cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   419
48194c26a46c Initial revision
claus
parents:
diff changeset
   420
    UpDownArrowCursor isNil ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   421
	UpDownArrowCursor := self shape:#upDownArrow on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   422
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   423
    ^ UpDownArrowCursor
48194c26a46c Initial revision
claus
parents:
diff changeset
   424
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   425
48194c26a46c Initial revision
claus
parents:
diff changeset
   426
leftRightArrow
48194c26a46c Initial revision
claus
parents:
diff changeset
   427
    "return a left-right-arrow cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   428
48194c26a46c Initial revision
claus
parents:
diff changeset
   429
    LeftRightArrowCursor isNil ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   430
	LeftRightArrowCursor := self shape:#leftRightArrow on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   431
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   432
    ^ LeftRightArrowCursor
48194c26a46c Initial revision
claus
parents:
diff changeset
   433
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   434
48194c26a46c Initial revision
claus
parents:
diff changeset
   435
upLimitArrow
48194c26a46c Initial revision
claus
parents:
diff changeset
   436
    "return an up-arrow-to-limit cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   437
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   438
    ^ self shape:#upLimitArrow on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   439
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   440
48194c26a46c Initial revision
claus
parents:
diff changeset
   441
downLimitArrow
48194c26a46c Initial revision
claus
parents:
diff changeset
   442
    "return a down-arrow-to-limit cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   443
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   444
    ^ self shape:#downLimitArrow on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   445
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   446
48194c26a46c Initial revision
claus
parents:
diff changeset
   447
leftLimitArrow
48194c26a46c Initial revision
claus
parents:
diff changeset
   448
    "return a left-arrow-to-limit cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   449
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   450
    ^ self shape:#leftLimitArrow on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   451
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   452
48194c26a46c Initial revision
claus
parents:
diff changeset
   453
rightLimitArrowOn
48194c26a46c Initial revision
claus
parents:
diff changeset
   454
    "return a right-arrow-to-limit cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   455
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   456
    ^ self shape:#rightLimitArrow on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   457
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   458
48194c26a46c Initial revision
claus
parents:
diff changeset
   459
text
48194c26a46c Initial revision
claus
parents:
diff changeset
   460
    "return a text-cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   461
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   462
    ^ self shape:#text on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   463
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   464
48194c26a46c Initial revision
claus
parents:
diff changeset
   465
arrow
48194c26a46c Initial revision
claus
parents:
diff changeset
   466
    "return an arrow (up-left-arrow) cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   467
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   468
    ^ self shape:#upLeftArrow on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   469
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   470
48194c26a46c Initial revision
claus
parents:
diff changeset
   471
upLeftArrow
48194c26a46c Initial revision
claus
parents:
diff changeset
   472
    "return an up-right-arrow cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   473
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   474
    ^ self shape:#upLeftArrow on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   475
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   476
48194c26a46c Initial revision
claus
parents:
diff changeset
   477
upRightArrow
48194c26a46c Initial revision
claus
parents:
diff changeset
   478
    "return an up-right-arrow cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   479
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   480
    ^ self shape:#upRightArrow on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   481
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   482
48194c26a46c Initial revision
claus
parents:
diff changeset
   483
questionMark
48194c26a46c Initial revision
claus
parents:
diff changeset
   484
    "return a question-mark cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   485
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   486
    ^ self shape:#questionMark on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   487
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   488
48194c26a46c Initial revision
claus
parents:
diff changeset
   489
cross
48194c26a46c Initial revision
claus
parents:
diff changeset
   490
    "return a cross cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   491
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   492
    ^ self shape:#cross on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   493
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   494
48194c26a46c Initial revision
claus
parents:
diff changeset
   495
origin
48194c26a46c Initial revision
claus
parents:
diff changeset
   496
    "return an origin cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   497
48194c26a46c Initial revision
claus
parents:
diff changeset
   498
    OriginCursor isNil ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   499
	OriginCursor := self shape:#origin on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   500
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   501
    ^ OriginCursor
48194c26a46c Initial revision
claus
parents:
diff changeset
   502
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   503
48194c26a46c Initial revision
claus
parents:
diff changeset
   504
corner 
48194c26a46c Initial revision
claus
parents:
diff changeset
   505
    "return a corner cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   506
48194c26a46c Initial revision
claus
parents:
diff changeset
   507
    CornerCursor isNil ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   508
	CornerCursor := self shape:#corner on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   509
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   510
    ^ CornerCursor
48194c26a46c Initial revision
claus
parents:
diff changeset
   511
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   512
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   513
topRight 
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   514
    "return a top-right corner cursor"
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   515
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   516
    ^ self shape:#topRight on:Display
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   517
!
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   518
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   519
bottomLeft
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   520
    "return a bottom-left corner cursor"
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   521
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   522
    ^ self shape:#bottomLeft on:Display
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   523
!
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   524
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   525
bottomRight
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   526
    "return a bottom-right corner cursor"
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   527
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   528
    ^ self corner
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   529
!
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   530
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   531
topLeft 
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   532
    "return a top-left corner cursor"
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   533
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   534
    ^ self origin
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   535
!
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   536
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   537
crossHair
48194c26a46c Initial revision
claus
parents:
diff changeset
   538
    "return a crossHair cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   539
48194c26a46c Initial revision
claus
parents:
diff changeset
   540
    CrossHairCursor isNil ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   541
	CrossHairCursor := self shape:#crossHair on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   542
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   543
    ^ CrossHairCursor
48194c26a46c Initial revision
claus
parents:
diff changeset
   544
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   545
48194c26a46c Initial revision
claus
parents:
diff changeset
   546
fourWay 
48194c26a46c Initial revision
claus
parents:
diff changeset
   547
    "return a four-way arrow cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   548
48194c26a46c Initial revision
claus
parents:
diff changeset
   549
    FourWayCursor isNil ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   550
	FourWayCursor := self shape:#fourWay on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   551
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   552
    ^ FourWayCursor
48194c26a46c Initial revision
claus
parents:
diff changeset
   553
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   554
54
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
   555
stop
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   556
    "return a stop cursor (the default here is a wait-cursor)"
54
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
   557
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   558
    ^ self wait
54
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
   559
!
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
   560
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   561
wait
48194c26a46c Initial revision
claus
parents:
diff changeset
   562
    "return a wait cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   563
48194c26a46c Initial revision
claus
parents:
diff changeset
   564
    WaitCursor isNil ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   565
	WaitCursor := self shape:#wait on:Display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   566
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   567
    ^ WaitCursor
48194c26a46c Initial revision
claus
parents:
diff changeset
   568
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   569
48194c26a46c Initial revision
claus
parents:
diff changeset
   570
read
48194c26a46c Initial revision
claus
parents:
diff changeset
   571
    "return a reading-file cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   572
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   573
    ^ self wait
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   574
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   575
48194c26a46c Initial revision
claus
parents:
diff changeset
   576
write
48194c26a46c Initial revision
claus
parents:
diff changeset
   577
    "return a writing-file cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   578
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   579
    ^ self wait
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   580
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   581
48194c26a46c Initial revision
claus
parents:
diff changeset
   582
execute
48194c26a46c Initial revision
claus
parents:
diff changeset
   583
    "return a execute cursor - ST-80 compatibility"
48194c26a46c Initial revision
claus
parents:
diff changeset
   584
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   585
    ^ self wait
56
cc69f5a6a51d thumbsUp/Down for compatibility
claus
parents: 54
diff changeset
   586
!
cc69f5a6a51d thumbsUp/Down for compatibility
claus
parents: 54
diff changeset
   587
cc69f5a6a51d thumbsUp/Down for compatibility
claus
parents: 54
diff changeset
   588
thumbsUp
cc69f5a6a51d thumbsUp/Down for compatibility
claus
parents: 54
diff changeset
   589
    "return a hand cursor - ST-80 compatibility"
cc69f5a6a51d thumbsUp/Down for compatibility
claus
parents: 54
diff changeset
   590
cc69f5a6a51d thumbsUp/Down for compatibility
claus
parents: 54
diff changeset
   591
    ^ self hand
cc69f5a6a51d thumbsUp/Down for compatibility
claus
parents: 54
diff changeset
   592
!
cc69f5a6a51d thumbsUp/Down for compatibility
claus
parents: 54
diff changeset
   593
cc69f5a6a51d thumbsUp/Down for compatibility
claus
parents: 54
diff changeset
   594
thumbsDown
cc69f5a6a51d thumbsUp/Down for compatibility
claus
parents: 54
diff changeset
   595
    "return a hand cursor - ST-80 compatibility"
cc69f5a6a51d thumbsUp/Down for compatibility
claus
parents: 54
diff changeset
   596
cc69f5a6a51d thumbsUp/Down for compatibility
claus
parents: 54
diff changeset
   597
    ^ self hand
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   598
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   599
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   600
!Cursor methodsFor:'copying'!
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   601
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   602
postCopy
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   603
    sourceForm := sourceForm copy.
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   604
    maskForm := maskForm copy.
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   605
    device := cursorId := nil
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   606
! !
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   607
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   608
!Cursor methodsFor:'instance release'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   609
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   610
shallowCopyForFinalization
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   611
    ^ self class basicNew setDevice:device id:cursorId
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   612
!
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   613
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   614
disposed
48194c26a46c Initial revision
claus
parents:
diff changeset
   615
    "some Cursor has been collected - tell it to the x-server"
48194c26a46c Initial revision
claus
parents:
diff changeset
   616
48194c26a46c Initial revision
claus
parents:
diff changeset
   617
    cursorId notNil ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   618
	device destroyCursor:cursorId.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   619
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   620
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   621
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   622
!Cursor methodsFor:'private accessing'!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   623
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   624
setShape:aShapeSymbol
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   625
    "set the shape"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   626
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   627
    shape := aShapeSymbol.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   628
!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   629
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   630
setSourceForm:sForm maskForm:mForm hotX:hx hotY:hy
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   631
    "set the forms and hotspot"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   632
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   633
    sourceForm := sForm.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   634
    maskForm := mForm.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   635
    hotX := hx.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   636
    hotY := hy.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   637
!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   638
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   639
setDevice:aDevice id:anId
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   640
    "set the device and deviceId of the receiver"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   641
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   642
    device := aDevice.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   643
    cursorId := anId
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   644
! !
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   645
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   646
!Cursor methodsFor:'accessing'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   647
48194c26a46c Initial revision
claus
parents:
diff changeset
   648
id
48194c26a46c Initial revision
claus
parents:
diff changeset
   649
    "return the cursors deviceId"
48194c26a46c Initial revision
claus
parents:
diff changeset
   650
48194c26a46c Initial revision
claus
parents:
diff changeset
   651
    ^ cursorId
48194c26a46c Initial revision
claus
parents:
diff changeset
   652
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   653
48194c26a46c Initial revision
claus
parents:
diff changeset
   654
device
48194c26a46c Initial revision
claus
parents:
diff changeset
   655
    "return the device I am associated with"
48194c26a46c Initial revision
claus
parents:
diff changeset
   656
48194c26a46c Initial revision
claus
parents:
diff changeset
   657
    ^ device
48194c26a46c Initial revision
claus
parents:
diff changeset
   658
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   659
48194c26a46c Initial revision
claus
parents:
diff changeset
   660
shape
48194c26a46c Initial revision
claus
parents:
diff changeset
   661
    "return the shape"
48194c26a46c Initial revision
claus
parents:
diff changeset
   662
48194c26a46c Initial revision
claus
parents:
diff changeset
   663
    ^ shape
48194c26a46c Initial revision
claus
parents:
diff changeset
   664
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   665
48194c26a46c Initial revision
claus
parents:
diff changeset
   666
sourceForm
48194c26a46c Initial revision
claus
parents:
diff changeset
   667
    "return the source-form of the receiver"
48194c26a46c Initial revision
claus
parents:
diff changeset
   668
48194c26a46c Initial revision
claus
parents:
diff changeset
   669
    ^ sourceForm
48194c26a46c Initial revision
claus
parents:
diff changeset
   670
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   671
48194c26a46c Initial revision
claus
parents:
diff changeset
   672
sourceForm:aForm
48194c26a46c Initial revision
claus
parents:
diff changeset
   673
    "set the source-form of the receiver"
48194c26a46c Initial revision
claus
parents:
diff changeset
   674
48194c26a46c Initial revision
claus
parents:
diff changeset
   675
    sourceForm := aForm
48194c26a46c Initial revision
claus
parents:
diff changeset
   676
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   677
48194c26a46c Initial revision
claus
parents:
diff changeset
   678
maskForm
48194c26a46c Initial revision
claus
parents:
diff changeset
   679
    "return the mask-form of the receiver"
48194c26a46c Initial revision
claus
parents:
diff changeset
   680
48194c26a46c Initial revision
claus
parents:
diff changeset
   681
    ^ maskForm
48194c26a46c Initial revision
claus
parents:
diff changeset
   682
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   683
48194c26a46c Initial revision
claus
parents:
diff changeset
   684
maskForm:aForm
48194c26a46c Initial revision
claus
parents:
diff changeset
   685
    "set the mask-form of the receiver"
48194c26a46c Initial revision
claus
parents:
diff changeset
   686
48194c26a46c Initial revision
claus
parents:
diff changeset
   687
    maskForm := aForm
48194c26a46c Initial revision
claus
parents:
diff changeset
   688
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   689
48194c26a46c Initial revision
claus
parents:
diff changeset
   690
hotX
48194c26a46c Initial revision
claus
parents:
diff changeset
   691
    "return the hotspots x-coordinate of the receiver"
48194c26a46c Initial revision
claus
parents:
diff changeset
   692
48194c26a46c Initial revision
claus
parents:
diff changeset
   693
    ^ hotX
48194c26a46c Initial revision
claus
parents:
diff changeset
   694
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   695
48194c26a46c Initial revision
claus
parents:
diff changeset
   696
hotY
48194c26a46c Initial revision
claus
parents:
diff changeset
   697
    "return the hotspots y-coordinate of the receiver"
48194c26a46c Initial revision
claus
parents:
diff changeset
   698
48194c26a46c Initial revision
claus
parents:
diff changeset
   699
    ^ hotY
48194c26a46c Initial revision
claus
parents:
diff changeset
   700
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   701
48194c26a46c Initial revision
claus
parents:
diff changeset
   702
foreground:fgColor background:bgColor
48194c26a46c Initial revision
claus
parents:
diff changeset
   703
    "set the cursor colors"
48194c26a46c Initial revision
claus
parents:
diff changeset
   704
48194c26a46c Initial revision
claus
parents:
diff changeset
   705
    device colorCursor:cursorId foreground:fgColor background:bgColor
48194c26a46c Initial revision
claus
parents:
diff changeset
   706
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   707
48194c26a46c Initial revision
claus
parents:
diff changeset
   708
!Cursor methodsFor:'creating a device cursor'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   709
48194c26a46c Initial revision
claus
parents:
diff changeset
   710
on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   711
    "create a new Cursor representing the same cursor as
48194c26a46c Initial revision
claus
parents:
diff changeset
   712
     myself on aDevice; if one already exists, return the one"
48194c26a46c Initial revision
claus
parents:
diff changeset
   713
48194c26a46c Initial revision
claus
parents:
diff changeset
   714
    aDevice isNil ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   715
	"this may not happen"
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   716
	self error:'nil device'
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   717
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   718
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   719
    "if I am already assigned to that device ..."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   720
    (device == aDevice) ifTrue:[^ self].
48194c26a46c Initial revision
claus
parents:
diff changeset
   721
48194c26a46c Initial revision
claus
parents:
diff changeset
   722
    "first look if not already there"
115
1d93fd8c5371 *** empty log message ***
claus
parents: 89
diff changeset
   723
    Lobby do:[:aCursor |
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   724
	(aCursor device == aDevice) ifTrue:[
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   725
	    shape notNil ifTrue:[
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   726
		(aCursor shape == shape) ifTrue:[
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   727
		    ^ aCursor
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   728
		]
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   729
	    ] ifFalse:[
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   730
		(aCursor sourceForm == sourceForm) ifTrue:[
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   731
		    (aCursor maskForm == maskForm) ifTrue:[
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   732
			(aCursor hotX == hotX) ifTrue:[
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   733
			    (aCursor hotY == hotY) ifTrue:[
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   734
				^ aCursor
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   735
			    ]
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   736
			]
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   737
		    ]
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   738
		]
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   739
	    ]
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   740
	]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   741
    ].
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   742
    ^ self newOn:aDevice
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   743
! !
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   744
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   745
!Cursor methodsFor:'private'!
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   746
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   747
newOn:aDevice
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   748
    "create a new Cursor representing the same cursor as
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   749
     myself on aDevice. Dont search the lobby."
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   750
133
claus
parents: 115
diff changeset
   751
    |newCursor id sF mF|
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   752
48194c26a46c Initial revision
claus
parents:
diff changeset
   753
    "ask that device for the cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   754
    shape notNil ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   755
	id := aDevice createCursorShape:shape.
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   756
	id isNil ifTrue:[
89
ea2bf46eb669 *** empty log message ***
claus
parents: 80
diff changeset
   757
	    'CURSOR: no cursor with shape:' errorPrint. shape errorPrintNewline.
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   758
	    ^ nil
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   759
	].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   760
    ] ifFalse:[
133
claus
parents: 115
diff changeset
   761
	sourceForm notNil ifTrue:[
claus
parents: 115
diff changeset
   762
	    sF := sourceForm on:aDevice.
claus
parents: 115
diff changeset
   763
	].
claus
parents: 115
diff changeset
   764
	maskForm notNil ifTrue:[
claus
parents: 115
diff changeset
   765
	    mF := maskForm on:aDevice.
claus
parents: 115
diff changeset
   766
	].
claus
parents: 115
diff changeset
   767
	(sF isNil or:[mF isNil]) ifTrue:[
claus
parents: 115
diff changeset
   768
	    'CURSOR: cursor has no form' errorPrintNewline.
claus
parents: 115
diff changeset
   769
	    ^ nil
claus
parents: 115
diff changeset
   770
	].
claus
parents: 115
diff changeset
   771
	sourceForm := sF.
claus
parents: 115
diff changeset
   772
	maskForm := mF.
claus
parents: 115
diff changeset
   773
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   774
	id := aDevice createCursorSourceForm:sourceForm
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   775
				    maskForm:maskForm
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   776
					hotX:hotX
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   777
					hotY:hotY.
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   778
	id isNil ifTrue:[
89
ea2bf46eb669 *** empty log message ***
claus
parents: 80
diff changeset
   779
	    'CURSOR: cannot create pixmap cursor' errorPrintNewline.
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   780
	    ^ nil
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   781
	].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   782
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   783
48194c26a46c Initial revision
claus
parents:
diff changeset
   784
    "goody for IRIXs red cursor"
48194c26a46c Initial revision
claus
parents:
diff changeset
   785
    DefaultFgColor notNil ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   786
	aDevice colorCursor:id foreground:DefaultFgColor
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   787
			       background:DefaultBgColor
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   788
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   789
48194c26a46c Initial revision
claus
parents:
diff changeset
   790
    device isNil ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   791
	"receiver was not associated - do it now"
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   792
	device := aDevice.
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   793
	cursorId := id.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   794
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   795
	"must re-register, the old registration had a nil cursorId in it"
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   796
	Lobby changed:self.
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   797
	^ self
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   798
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   799
48194c26a46c Initial revision
claus
parents:
diff changeset
   800
    "receiver was already associated to another device - need a new cursor"
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   801
    newCursor := self class basicNew.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   802
    shape notNil ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   803
	newCursor setShape:shape.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   804
    ] ifFalse:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   805
	newCursor setSourceForm:sourceForm
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   806
		       maskForm:maskForm
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   807
			   hotX:hotX
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   808
			   hotY:hotY
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   809
    ].
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   810
    newCursor setDevice:aDevice id:id.
23
4a7e02de7b72 *** empty log message ***
claus
parents: 12
diff changeset
   811
    Lobby register:newCursor.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   812
    ^ newCursor
71
6a42b2b115f8 *** empty log message ***
claus
parents: 56
diff changeset
   813
!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   814
48194c26a46c Initial revision
claus
parents:
diff changeset
   815
device:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   816
    device := aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   817
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   818
48194c26a46c Initial revision
claus
parents:
diff changeset
   819
id:anId
48194c26a46c Initial revision
claus
parents:
diff changeset
   820
    "set the cursors deviceId"
48194c26a46c Initial revision
claus
parents:
diff changeset
   821
48194c26a46c Initial revision
claus
parents:
diff changeset
   822
    cursorId := anId
48194c26a46c Initial revision
claus
parents:
diff changeset
   823
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   824
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   825
restored
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   826
    "set both device and id"
48194c26a46c Initial revision
claus
parents:
diff changeset
   827
48194c26a46c Initial revision
claus
parents:
diff changeset
   828
    device := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
   829
    cursorId := nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   830
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   831
48194c26a46c Initial revision
claus
parents:
diff changeset
   832
!Cursor methodsFor:'displaying'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   833
48194c26a46c Initial revision
claus
parents:
diff changeset
   834
showIn:aView 
48194c26a46c Initial revision
claus
parents:
diff changeset
   835
    aView cursor:self
48194c26a46c Initial revision
claus
parents:
diff changeset
   836
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   837
48194c26a46c Initial revision
claus
parents:
diff changeset
   838
showIn:aView while:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
   839
    |savedCursor|
48194c26a46c Initial revision
claus
parents:
diff changeset
   840
48194c26a46c Initial revision
claus
parents:
diff changeset
   841
    savedCursor := aView cursor.
48194c26a46c Initial revision
claus
parents:
diff changeset
   842
    aView cursor:self.
48194c26a46c Initial revision
claus
parents:
diff changeset
   843
    [
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   844
	aBlock value.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   845
    ] valueNowOrOnUnwindDo:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   846
	aView cursor:savedCursor
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   847
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   848
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   849
48194c26a46c Initial revision
claus
parents:
diff changeset
   850
showWhile:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
   851
    "change all views cursors to the receiver.
48194c26a46c Initial revision
claus
parents:
diff changeset
   852
     In X this seems to be very slow"
48194c26a46c Initial revision
claus
parents:
diff changeset
   853
48194c26a46c Initial revision
claus
parents:
diff changeset
   854
    |v|
48194c26a46c Initial revision
claus
parents:
diff changeset
   855
48194c26a46c Initial revision
claus
parents:
diff changeset
   856
    Display setCursors:self.
48194c26a46c Initial revision
claus
parents:
diff changeset
   857
    v := aBlock valueNowOrOnUnwindDo:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   858
	Display restoreCursors.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   859
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   860
    ^ v
48194c26a46c Initial revision
claus
parents:
diff changeset
   861
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   862
48194c26a46c Initial revision
claus
parents:
diff changeset
   863
displayOn:aGC at:origin clippingBox:aRectangle rule:aRule mask:aMask
48194c26a46c Initial revision
claus
parents:
diff changeset
   864
    "ST-80 compatibility;
48194c26a46c Initial revision
claus
parents:
diff changeset
   865
     limited functionality: can only display bitmap cursors (yet)"
48194c26a46c Initial revision
claus
parents:
diff changeset
   866
48194c26a46c Initial revision
claus
parents:
diff changeset
   867
    sourceForm notNil ifTrue:[
80
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   868
	sourceForm displayOn:aGC at:origin clippingBox:aRectangle 
eb8373679a9f *** empty log message ***
claus
parents: 71
diff changeset
   869
			rule:aRule mask:aMask
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   870
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   871
! !