A new version of EToys was added to project The Inbox: http://source.squeak.org/inbox/EToys-kfr.487.mcz
==================== Summary ====================
Name: EToys-kfr.487 Author: kfr Time: 14 December 2022, 4:52:54.725958 pm UUID: 9e4ab847-85fd-dc47-a79a-e6f6388e33e2 Ancestors: EToys-ct.486
MineGame scale to HD Display
=============== Diff against EToys-ct.486 ===============
Item was changed: ----- Method: Mines>>defaultBorderWidth (in category 'initialization') ----- defaultBorderWidth "answer the default border width for the receiver" + ^ 2 px! - ^ 2!
Item was changed: ----- Method: Mines>>initialize (in category 'initialization') ----- initialize "initialize the state of the receiver"
super initialize. level := 1. self listDirection: #topToBottom; wrapCentering: #center; cellPositioning: #topCenter; vResizing: #shrinkWrap; hResizing: #shrinkWrap; + layoutInset: 3 px; - layoutInset: 3; addMorph: self makeControls; addMorph: self board. helpText := nil. self newGame!
Item was changed: ----- Method: Mines>>makeControls (in category 'initialize') ----- makeControls | row | row := AlignmentMorph newRow color: color; + borderWidth: 2 px; + layoutInset: 3 px. - borderWidth: 2; - layoutInset: 3. row borderStyle: BorderStyle inset. row hResizing: #spaceFill; vResizing: #shrinkWrap; wrapCentering: #center; cellPositioning: #leftCenter; + extent: 5 px @ 5 px. - extent: 5 @ 5. row addMorph: (self buildButton: SimpleSwitchMorph new target: self label: ' Help ' translated selector: #help:). row addMorph: (self buildButton: (levelButton := SimpleButtonMorph new) target: self label: level asString translated selector: #nextLevel). row addMorph: (self buildButton: SimpleButtonMorph new target: self label: ' Quit ' translated selector: #delete). "row addMorph: (self buildButton: SimpleButtonMorph new target: self label: ' Hint ' translated selector: #hint)." row addMorph: (self buildButton: SimpleButtonMorph new target: self label: ' New game ' translated selector: #newGame). minesDisplay := LedMorph new digits: 2; + extent: 2 * 10 px @ 15 px. - extent: 2 * 10 @ 15. row addMorph: (self wrapPanel: minesDisplay label: 'Mines:' translated). + timeDisplay := LedTimerMorph new digits: 3; extent: 3 * 10 px @ 15 px. - timeDisplay := LedTimerMorph new digits: 3; extent: 3 * 10 @ 15. row addMorph: (self wrapPanel: timeDisplay label: 'Time:' translated). + hiScoreDisplay := LedMorph new digits: 3; extent: 3 * 10 px@ 15 px. - hiScoreDisplay := LedMorph new digits: 3; extent: 3 * 10 @ 15. row addMorph: (self wrapPanel: hiScoreDisplay label: 'Hi Score:' translated). ^ row!
Item was changed: ----- Method: Mines>>wrapPanel:label: (in category 'initialize') ----- wrapPanel: anLedPanel label: aLabel "wrap an LED panel in an alignmentMorph with a label to its left"
| a | a := AlignmentMorph newRow wrapCentering: #center; cellPositioning: #leftCenter; hResizing: #shrinkWrap; vResizing: #shrinkWrap; borderWidth: 0; + layoutInset: 3 px; - layoutInset: 3; color: color lighter. a addMorph: anLedPanel. a addMorph: (StringMorph contents: aLabel). ^ a !
Item was changed: ----- Method: MinesBoard>>defaultBorderWidth (in category 'initialization') ----- defaultBorderWidth "answer the default border width for the receiver" + ^ 2 px! - ^ 2!
Item was changed: ----- Method: MinesTile>>drawOn: (in category 'drawing') ----- drawOn: aCanvas "Draw a rectangle with a solid, inset, or raised border. Note: the raised border color *and* the inset border color are generated from the receiver's own color, instead of having the inset border color generated from the owner's color, as in BorderedMorph."
| font rct | super drawOn: aCanvas. self borderStyle style == #inset ifTrue: [ self isMine ifTrue: [ + font := StrikeFont familyName: 'Atlanta' size: 22 px emphasized: 1. + rct := self bounds insetBy: ((self bounds width) - (font widthOfString: '*'))/2 @0. - font := StrikeFont familyName: 'Atlanta' size: 22 emphasized: 1. - rct := self bounds insetBy: ((self bounds width) - (font widthOfString: '*'))/2@0. rct := rct top: rct top + 1. aCanvas drawString: '*' in: (rct translateBy: 1@1) font: font color: Color black. ^ aCanvas drawString: '*' in: rct font: font color: Color red .]. self nearMines > 0 ifTrue: [ + font := StrikeFont familyName: 'ComicBold' size: 22 px emphasized: 1. + rct := self bounds insetBy: ((self bounds width) - (font widthOfString: nearMines asString))/2 @0. - font := StrikeFont familyName: 'ComicBold' size: 22 emphasized: 1. - rct := self bounds insetBy: ((self bounds width) - (font widthOfString: nearMines asString))/2@0. rct := rct top: rct top + 1. aCanvas drawString: nearMines asString in: (rct translateBy: 1@1) font: font color: Color black. ^ aCanvas drawString: nearMines asString in: rct font: font color: ((palette at: nearMines) ) .]].!
Item was changed: ----- Method: MinesTile>>initialize (in category 'initialization') ----- initialize
super initialize. self label: ''. + self borderWidth: 3 px. + bounds := 0@0 corner: 20 px@20 px. - self borderWidth: 3. - bounds := 0@0 corner: 20@20. offColor := self preferredColor. onColor := self preferredColor. switchState := false. oldSwitchState := false. disabled := false. isMine := false. nearMines := 0. self useSquareCorners. palette := (Color wheel: 8) asOrderedCollection reverse. " flashColor := palette removeLast." !
Hi Karl,
On 2022-12-14T15:54:17+00:00, commits@source.squeak.org wrote:
A new version of EToys was added to project The Inbox: http://source.squeak.org/inbox/EToys-kfr.487.mcz
==================== Summary ====================
Name: EToys-kfr.487 Author: kfr Time: 14 December 2022, 4:52:54.725958 pm UUID: 9e4ab847-85fd-dc47-a79a-e6f6388e33e2 Ancestors: EToys-ct.486
MineGame scale to HD Display
=============== Diff against EToys-ct.486 ===============
Item was changed: ----- Method: Mines>>defaultBorderWidth (in category 'initialization') ----- defaultBorderWidth "answer the default border width for the receiver"
- ^ 2 px!
- ^ 2!
Item was changed: ----- Method: Mines>>initialize (in category 'initialization') ----- initialize "initialize the state of the receiver"
super initialize. level := 1. self listDirection: #topToBottom; wrapCentering: #center; cellPositioning: #topCenter; vResizing: #shrinkWrap; hResizing: #shrinkWrap;
- layoutInset: 3 px;
- layoutInset: 3; addMorph: self makeControls; addMorph: self board. helpText := nil. self newGame!
Item was changed: ----- Method: Mines>>makeControls (in category 'initialize') ----- makeControls | row | row := AlignmentMorph newRow color: color;
- borderWidth: 2 px;
- layoutInset: 3 px.
- borderWidth: 2;
- layoutInset: 3. row borderStyle: BorderStyle inset. row hResizing: #spaceFill; vResizing: #shrinkWrap; wrapCentering: #center; cellPositioning: #leftCenter;
- extent: 5 px @ 5 px.
- extent: 5 @ 5. row addMorph: (self buildButton: SimpleSwitchMorph new target: self label: ' Help ' translated selector: #help:). row addMorph: (self buildButton: (levelButton := SimpleButtonMorph new) target: self label: level asString translated selector: #nextLevel). row addMorph: (self buildButton: SimpleButtonMorph new target: self label: ' Quit ' translated selector: #delete). "row addMorph: (self buildButton: SimpleButtonMorph new target: self label: ' Hint ' translated selector: #hint)." row addMorph: (self buildButton: SimpleButtonMorph new target: self label: ' New game ' translated selector: #newGame). minesDisplay := LedMorph new digits: 2;
- extent: 2 * 10 px @ 15 px.
- extent: 2 * 10 @ 15. row addMorph: (self wrapPanel: minesDisplay label: 'Mines:' translated).
- timeDisplay := LedTimerMorph new digits: 3; extent: 3 * 10 px @ 15 px.
- timeDisplay := LedTimerMorph new digits: 3; extent: 3 * 10 @ 15. row addMorph: (self wrapPanel: timeDisplay label: 'Time:' translated).
- hiScoreDisplay := LedMorph new digits: 3; extent: 3 * 10 px@ 15 px.
- hiScoreDisplay := LedMorph new digits: 3; extent: 3 * 10 @ 15. row addMorph: (self wrapPanel: hiScoreDisplay label: 'Hi Score:' translated). ^ row!
Item was changed: ----- Method: Mines>>wrapPanel:label: (in category 'initialize') ----- wrapPanel: anLedPanel label: aLabel "wrap an LED panel in an alignmentMorph with a label to its left"
| a | a := AlignmentMorph newRow wrapCentering: #center; cellPositioning: #leftCenter; hResizing: #shrinkWrap; vResizing: #shrinkWrap; borderWidth: 0;
- layoutInset: 3 px;
- layoutInset: 3; color: color lighter. a addMorph: anLedPanel. a addMorph: (StringMorph contents: aLabel). ^ a !
Item was changed: ----- Method: MinesBoard>>defaultBorderWidth (in category 'initialization') ----- defaultBorderWidth "answer the default border width for the receiver"
- ^ 2 px!
- ^ 2!
Item was changed: ----- Method: MinesTile>>drawOn: (in category 'drawing') ----- drawOn: aCanvas "Draw a rectangle with a solid, inset, or raised border. Note: the raised border color *and* the inset border color are generated from the receiver's own color, instead of having the inset border color generated from the owner's color, as in BorderedMorph."
| font rct | super drawOn: aCanvas. self borderStyle style == #inset ifTrue: [ self isMine ifTrue: [
- font := StrikeFont familyName: 'Atlanta' size: 22 px emphasized: 1.
- rct := self bounds insetBy: ((self bounds width) - (font widthOfString: '*'))/2 @0.
- font := StrikeFont familyName: 'Atlanta' size: 22 emphasized: 1.
- rct := self bounds insetBy: ((self bounds width) - (font widthOfString: '*'))/2 at 0. rct := rct top: rct top + 1. aCanvas drawString: '*' in: (rct translateBy: 1 at 1) font: font color: Color black. ^ aCanvas drawString: '*' in: rct font: font color: Color red .]. self nearMines > 0 ifTrue: [
- font := StrikeFont familyName: 'ComicBold' size: 22 px emphasized: 1.
- rct := self bounds insetBy: ((self bounds width) - (font widthOfString: nearMines asString))/2 @0.
- font := StrikeFont familyName: 'ComicBold' size: 22 emphasized: 1.
- rct := self bounds insetBy: ((self bounds width) - (font widthOfString: nearMines asString))/2 at 0. rct := rct top: rct top + 1. aCanvas drawString: nearMines asString in: (rct translateBy: 1 at 1) font: font color: Color black. ^ aCanvas drawString: nearMines asString in: rct font: font color: ((palette at: nearMines) ) .]].!
not sure whether the use of fontSize + #px is idiomatic. Maybe Marcel can help with that?
Otherwise, LGTM. Thanks! :-)
Best, Christoph
Item was changed: ----- Method: MinesTile>>initialize (in category 'initialization') ----- initialize
super initialize. self label: ''.
- self borderWidth: 3 px.
- bounds := 0 at 0 corner: 20 px at 20 px.
- self borderWidth: 3.
- bounds := 0 at 0 corner: 20 at 20. offColor := self preferredColor. onColor := self preferredColor. switchState := false. oldSwitchState := false. disabled := false. isMine := false. nearMines := 0. self useSquareCorners. palette := (Color wheel: 8) asOrderedCollection reverse. " flashColor := palette removeLast." !
--- Sent from Squeak Inbox Talk
Yes, the fallback for StrikeFonts was not great here. Not sure how to fix it
Best, Karl
On Sun, Dec 18, 2022 at 8:26 PM christoph.thiede@student.hpi.uni-potsdam.de wrote:
Hi Karl,
On 2022-12-14T15:54:17+00:00, commits@source.squeak.org wrote:
A new version of EToys was added to project The Inbox: http://source.squeak.org/inbox/EToys-kfr.487.mcz
==================== Summary ====================
Name: EToys-kfr.487 Author: kfr Time: 14 December 2022, 4:52:54.725958 pm UUID: 9e4ab847-85fd-dc47-a79a-e6f6388e33e2 Ancestors: EToys-ct.486
MineGame scale to HD Display
=============== Diff against EToys-ct.486 ===============
Item was changed: ----- Method: Mines>>defaultBorderWidth (in category 'initialization')
defaultBorderWidth "answer the default border width for the receiver"
^ 2 px!
^ 2!
Item was changed: ----- Method: Mines>>initialize (in category 'initialization') ----- initialize "initialize the state of the receiver"
super initialize.
level := 1. self listDirection: #topToBottom; wrapCentering: #center; cellPositioning: #topCenter; vResizing: #shrinkWrap; hResizing: #shrinkWrap;
layoutInset: 3 px;
layoutInset: 3;
addMorph: self makeControls; addMorph: self board. helpText := nil.
self newGame!
Item was changed: ----- Method: Mines>>makeControls (in category 'initialize') ----- makeControls | row | row := AlignmentMorph newRow color: color;
borderWidth: 2 px;
layoutInset: 3 px.
borderWidth: 2;
row borderStyle: BorderStyle inset. row hResizing: #spaceFill; vResizing: #shrinkWrap; wrapCentering: #center; cellPositioning: #leftCenter;layoutInset: 3.
extent: 5 px @ 5 px.
row addMorph: (self buildButton: SimpleSwitchMorph new target: self label: ' Help ' translated selector: #help:). row addMorph: (self buildButton: (levelButton := SimpleButtonMorph new) target: self label: level asString translated selector: #nextLevel). row addMorph: (self buildButton: SimpleButtonMorph new target: self label: ' Quit ' translated selector: #delete). "row addMorph: (self buildButton: SimpleButtonMorph new target: self label: ' Hint ' translated selector: #hint)." row addMorph: (self buildButton: SimpleButtonMorph new target: self label: ' New game ' translated selector: #newGame). minesDisplay := LedMorph new digits: 2;extent: 5 @ 5.
extent: 2 * 10 px @ 15 px.
row addMorph: (self wrapPanel: minesDisplay label: 'Mines:'extent: 2 * 10 @ 15.
translated).
timeDisplay := LedTimerMorph new digits: 3; extent: 3 * 10 px @ 15
px.
timeDisplay := LedTimerMorph new digits: 3; extent: 3 * 10 @ 15.
row addMorph: (self wrapPanel: timeDisplay label: 'Time:'
translated).
hiScoreDisplay := LedMorph new digits: 3; extent: 3 * 10 px@ 15
px.
row addMorph: (self wrapPanel: hiScoreDisplay label: 'Hi Score:'hiScoreDisplay := LedMorph new digits: 3; extent: 3 * 10 @ 15.
translated).
^ row!
Item was changed: ----- Method: Mines>>wrapPanel:label: (in category 'initialize') ----- wrapPanel: anLedPanel label: aLabel "wrap an LED panel in an alignmentMorph with a label to its left"
| a | a := AlignmentMorph newRow wrapCentering: #center; cellPositioning: #leftCenter; hResizing: #shrinkWrap; vResizing: #shrinkWrap; borderWidth: 0;
layoutInset: 3 px;
a addMorph: anLedPanel. a addMorph: (StringMorph contents: aLabel). ^ alayoutInset: 3; color: color lighter.
!
Item was changed: ----- Method: MinesBoard>>defaultBorderWidth (in category
'initialization') -----
defaultBorderWidth "answer the default border width for the receiver"
^ 2 px!
^ 2!
Item was changed: ----- Method: MinesTile>>drawOn: (in category 'drawing') ----- drawOn: aCanvas "Draw a rectangle with a solid, inset, or raised border. Note: the raised border color *and* the inset border color are
generated
from the receiver's own color, instead of having the inset border
color
generated from the owner's color, as in BorderedMorph." | font rct | super drawOn: aCanvas. self borderStyle style == #inset ifTrue: [ self isMine ifTrue: [
font := StrikeFont familyName: 'Atlanta' size: 22 px
emphasized: 1.
rct := self bounds insetBy: ((self bounds width) - (font
widthOfString: '*'))/2 @0.
font := StrikeFont familyName: 'Atlanta' size: 22
emphasized: 1.
rct := self bounds insetBy: ((self bounds width) - (font
widthOfString: '*'))/2 at 0.
rct := rct top: rct top + 1. aCanvas drawString: '*' in: (rct translateBy: 1 at 1) font:
font color: Color black.
^ aCanvas drawString: '*' in: rct font: font color: Color
red .].
self nearMines > 0 ifTrue: [
font := StrikeFont familyName: 'ComicBold' size: 22 px
emphasized: 1.
rct := self bounds insetBy: ((self bounds width) - (font
widthOfString: nearMines asString))/2 @0.
font := StrikeFont familyName: 'ComicBold' size: 22
emphasized: 1.
rct := self bounds insetBy: ((self bounds width) - (font
widthOfString: nearMines asString))/2 at 0.
rct := rct top: rct top + 1. aCanvas drawString: nearMines asString in: (rct translateBy:
1 at 1) font: font color: Color black.
^ aCanvas drawString: nearMines asString in: rct font: font
color: ((palette at: nearMines) ) .]].!
not sure whether the use of fontSize + #px is idiomatic. Maybe Marcel can help with that?
Otherwise, LGTM. Thanks! :-)
Best, Christoph
Item was changed: ----- Method: MinesTile>>initialize (in category 'initialization') ----- initialize
super initialize. self label: ''.
self borderWidth: 3 px.
bounds := 0 at 0 corner: 20 px at 20 px.
self borderWidth: 3.
offColor := self preferredColor. onColor := self preferredColor. switchState := false. oldSwitchState := false. disabled := false. isMine := false. nearMines := 0. self useSquareCorners. palette := (Color wheel: 8) asOrderedCollection reverse.bounds := 0 at 0 corner: 20 at 20.
" flashColor := palette removeLast." !
*Sent from **Squeak Inbox Talk https://github.com/hpi-swa-lab/squeak-inbox-talk*
Hi Karl --
Try using just "TextStyle defaultFont", maybe "TextStyle defaultTTFont". There is no family "ComicBold" in default Squeak.
You could also fallback to UI fonts: Preferences standardDefaultTextFont. Preferences standardButtonFont. Preferences standardBalloonHelpFont.
Hope this helps! Happy squeaking!
Best, Marcel
Am 18.12.2022 20:34:22 schrieb karl ramberg karlramberg@gmail.com:
Yes, the fallback for StrikeFonts was not great here. Not sure how to fix it
Best, Karl
On Sun, Dec 18, 2022 at 8:26 PM <christoph.thiede@student.hpi.uni-potsdam.demailto:christoph.thiede@student.hpi.uni-potsdam.de> wrote: Hi Karl,
On 2022-12-14T15:54:17+00:00, commits@source.squeak.orgmailto:commits@source.squeak.org wrote:
A new version of EToys was added to project The Inbox: http://source.squeak.org/inbox/EToys-kfr.487.mcz
==================== Summary ====================
Name: EToys-kfr.487 Author: kfr Time: 14 December 2022, 4:52:54.725958 pm UUID: 9e4ab847-85fd-dc47-a79a-e6f6388e33e2 Ancestors: EToys-ct.486
MineGame scale to HD Display
=============== Diff against EToys-ct.486 ===============
Item was changed: ----- Method: Mines>>defaultBorderWidth (in category 'initialization') ----- defaultBorderWidth "answer the default border width for the receiver"
^ 2 px!
^ 2!
Item was changed: ----- Method: Mines>>initialize (in category 'initialization') ----- initialize "initialize the state of the receiver"
super initialize.
level := 1. self listDirection: #topToBottom; wrapCentering: #center; cellPositioning: #topCenter; vResizing: #shrinkWrap; hResizing: #shrinkWrap;
layoutInset: 3 px;
layoutInset: 3;
addMorph: self makeControls; addMorph: self board. helpText := nil.
self newGame!
Item was changed: ----- Method: Mines>>makeControls (in category 'initialize') ----- makeControls | row | row := AlignmentMorph newRow color: color;
borderWidth: 2 px;
layoutInset: 3 px.
borderWidth: 2;
row borderStyle: BorderStyle inset. row hResizing: #spaceFill; vResizing: #shrinkWrap; wrapCentering: #center; cellPositioning: #leftCenter;layoutInset: 3.
extent: 5 px @ 5 px.
row addMorph: (self buildButton: SimpleSwitchMorph new target: self label: ' Help ' translated selector: #help:). row addMorph: (self buildButton: (levelButton := SimpleButtonMorph new) target: self label: level asString translated selector: #nextLevel). row addMorph: (self buildButton: SimpleButtonMorph new target: self label: ' Quit ' translated selector: #delete). "row addMorph: (self buildButton: SimpleButtonMorph new target: self label: ' Hint ' translated selector: #hint)." row addMorph: (self buildButton: SimpleButtonMorph new target: self label: ' New game ' translated selector: #newGame). minesDisplay := LedMorph new digits: 2;extent: 5 @ 5.
extent: 2 * 10 px @ 15 px.
row addMorph: (self wrapPanel: minesDisplay label: 'Mines:' translated).extent: 2 * 10 @ 15.
timeDisplay := LedTimerMorph new digits: 3; extent: 3 * 10 px @ 15 px.
timeDisplay := LedTimerMorph new digits: 3; extent: 3 * 10 @ 15.
row addMorph: (self wrapPanel: timeDisplay label: 'Time:' translated).
hiScoreDisplay := LedMorph new digits: 3; extent: 3 * 10 px@ 15 px.
row addMorph: (self wrapPanel: hiScoreDisplay label: 'Hi Score:' translated). ^ row!hiScoreDisplay := LedMorph new digits: 3; extent: 3 * 10 @ 15.
Item was changed: ----- Method: Mines>>wrapPanel:label: (in category 'initialize') ----- wrapPanel: anLedPanel label: aLabel "wrap an LED panel in an alignmentMorph with a label to its left"
| a | a := AlignmentMorph newRow wrapCentering: #center; cellPositioning: #leftCenter; hResizing: #shrinkWrap; vResizing: #shrinkWrap; borderWidth: 0;
layoutInset: 3 px;
a addMorph: anLedPanel. a addMorph: (StringMorph contents: aLabel). ^ alayoutInset: 3; color: color lighter.
!
Item was changed: ----- Method: MinesBoard>>defaultBorderWidth (in category 'initialization') ----- defaultBorderWidth "answer the default border width for the receiver"
^ 2 px!
^ 2!
Item was changed: ----- Method: MinesTile>>drawOn: (in category 'drawing') ----- drawOn: aCanvas "Draw a rectangle with a solid, inset, or raised border. Note: the raised border color *and* the inset border color are generated from the receiver's own color, instead of having the inset border color generated from the owner's color, as in BorderedMorph."
| font rct | super drawOn: aCanvas. self borderStyle style == #inset ifTrue: [ self isMine ifTrue: [
font := StrikeFont familyName: 'Atlanta' size: 22 px emphasized: 1.
rct := self bounds insetBy: ((self bounds width) - (font widthOfString: '*'))/2 @0.
font := StrikeFont familyName: 'Atlanta' size: 22 emphasized: 1.
rct := self bounds insetBy: ((self bounds width) - (font widthOfString: '*'))/2 at 0. rct := rct top: rct top + 1. aCanvas drawString: '*' in: (rct translateBy: 1 at 1) font: font color: Color black. ^ aCanvas drawString: '*' in: rct font: font color: Color red .]. self nearMines > 0 ifTrue: [
font := StrikeFont familyName: 'ComicBold' size: 22 px emphasized: 1.
rct := self bounds insetBy: ((self bounds width) - (font widthOfString: nearMines asString))/2 @0.
font := StrikeFont familyName: 'ComicBold' size: 22 emphasized: 1.
rct := self bounds insetBy: ((self bounds width) - (font widthOfString: nearMines asString))/2 at 0. rct := rct top: rct top + 1. aCanvas drawString: nearMines asString in: (rct translateBy: 1 at 1) font: font color: Color black. ^ aCanvas drawString: nearMines asString in: rct font: font color: ((palette at: nearMines) ) .]].!
not sure whether the use of fontSize + #px is idiomatic. Maybe Marcel can help with that?
Otherwise, LGTM. Thanks! :-)
Best, Christoph
Item was changed: ----- Method: MinesTile>>initialize (in category 'initialization') ----- initialize
super initialize. self label: ''.
self borderWidth: 3 px.
bounds := 0 at 0 corner: 20 px at 20 px.
self borderWidth: 3.
offColor := self preferredColor. onColor := self preferredColor. switchState := false. oldSwitchState := false. disabled := false. isMine := false. nearMines := 0. self useSquareCorners. palette := (Color wheel: 8) asOrderedCollection reverse.bounds := 0 at 0 corner: 20 at 20.
" flashColor := palette removeLast." !
--- Sent from Squeak Inbox Talkhttps://github.com/hpi-swa-lab/squeak-inbox-talk
squeak-dev@lists.squeakfoundation.org