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