The Trunk: EToys-mt.326.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: EToys-mt.326.mcz

commits-2
Marcel Taeumel uploaded a new version of EToys to project The Trunk:
http://source.squeak.org/trunk/EToys-mt.326.mcz

==================== Summary ====================

Name: EToys-mt.326
Author: mt
Time: 6 May 2018, 3:18:35.522836 pm
UUID: 95d9813d-1659-9b4f-9cc6-d290709bf39a
Ancestors: EToys-tpr.325

Supplement to refactoring in Morphic-mt.1427.

=============== Diff against EToys-tpr.325 ===============

Item was changed:
  ----- Method: AnonymousSoundMorph>>sound:interimName: (in category 'initialization') -----
  sound: aSampledSound interimName: anInterimName
  "Establish the sound object and an interim name."
 
  | aStringMorph |
  self removeAllMorphs.
  self hResizing: #shrinkWrap; vResizing: #shrinkWrap.
+ self borderWidth: 2.
- borderWidth := 2.
  self listDirection: #topToBottom.
  sound := aSampledSound.
  interimName := anInterimName.
 
  aStringMorph := StringMorph contents: interimName font: ScriptingSystem fontForEToyButtons.
  self addMorphBack: aStringMorph.
  self addButtonRow.
 
  self balloonTextSelector: #soundMorphHelpString.
  self setNameTo: interimName!

Item was changed:
  ----- Method: CalendarMorph>>newButtonWithContents: (in category 'building') -----
  newButtonWithContents: aByteString
  ^SimpleButtonMorph new
  label: aByteString;
  color: (self color mixed: 0.5 with: Color gray);
+ borderStyle: (BorderStyle raised width: 2)!
- borderColor: #raised;
- borderWidth: 2!

Item was changed:
  ----- Method: CalendarMorph>>newDateButtonWithContents: (in category 'building') -----
  newDateButtonWithContents: aByteString
  ^SimpleButtonMorph new
  label: aByteString;
  cornerStyle: #square;
  color: self color muchLighter;
+ borderStyle: (BorderStyle raised width: 2);
- borderColor: #raised;
- borderWidth: 2;
  width: 30!

Item was changed:
  ----- Method: ChessMorph>>addButtonRow (in category 'initialize') -----
  addButtonRow
 
  | r m |
  r := AlignmentMorph newRow hResizing: #shrinkWrap; vResizing: #shrinkWrap; color: Color transparent.
+ r cellInset: 2.
  r addMorphBack: (self buttonName: '  New  ' translated action: #newGame).
  r addMorphBack: (self buttonName: '  Help  ' translated action: #findBestMove).
  r addMorphBack: (self buttonName: '  Play  ' translated action: #thinkAndMove).
  r addMorphBack: (self buttonName: '  Auto  ' translated action: #autoPlay).
  r addMorphBack: (self buttonName: '  Undo  ' translated action: #undoMove).
  r addMorphBack: (self buttonName: '  Redo  ' translated action: #redoMove).
  r addMorphBack: (self buttonName: '  Quit  ' translated action: #delete).
  r disableTableLayout: true.
  r align: r bounds topLeft with: self layoutBounds topLeft.
  self addMorphFront: r.
  m := UpdatingStringMorph on: self selector: #statusString.
  m useStringFormat.
  m disableTableLayout: true.
  m align: m bounds topLeft with: r fullBounds bottomLeft.
  self addMorphFront: m.!

Item was changed:
  ----- Method: ChessMorph>>buttonName:action: (in category 'initialize') -----
  buttonName: aString action: aSymbol
 
  ^ SimpleButtonMorph new
  target: self;
  label: aString;
  actionSelector: aSymbol;
  color: (Color gray: 0.8);  "old color"
  fillStyle: self buttonFillStyle;
+ borderWidth: 1;
+ borderRaised.
- borderWidth: 0;
- borderColor: #raised.
  !

Item was changed:
  ----- Method: ChessMorph>>defaultBorderColor (in category 'initialization') -----
  defaultBorderColor
+ ^ Color transparent!
- "answer the default border color/fill style for the receiver"
- ^ #raised!

Item was added:
+ ----- Method: ChessMorph>>defaultBorderStyle (in category 'initialization') -----
+ defaultBorderStyle
+ ^ BorderStyle raised!

Item was changed:
  ----- Method: ChessMorph>>initialize (in category 'initialization') -----
  initialize
  "initialize the state of the receiver"
  super initialize.
  ""
  animateMove := false.
  autoPlay := false.
 
+ self cornerStyle: #square.
- self cornerStyle: #rounded.
  self layoutPolicy: TableLayout new.
  self listDirection: #leftToRight;
  wrapDirection: #bottomToTop.
  self addSquares.
  self addButtonRow.
  self newGame!

Item was changed:
  ----- Method: CommandTilesMorph>>initialize (in category 'initialization') -----
  initialize
 
  super initialize.
  self wrapCentering: #center; cellPositioning: #leftCenter.
  self hResizing: #shrinkWrap.
+ self borderWidth: 0.
- borderWidth := 0.
  self layoutInset: 0.
  self extent: 5@5.  "will grow to fit"
  !

Item was changed:
  ----- Method: EToyProjectHistoryMorph>>defaultBorderColor (in category 'initialization') -----
  defaultBorderColor
+ ^ Color transparent!
- "answer the default border color/fill style for the receiver"
- ^ #raised!

Item was added:
+ ----- Method: EToyProjectHistoryMorph>>defaultBorderStyle (in category 'initialization') -----
+ defaultBorderStyle
+ ^ BorderStyle raised!

Item was changed:
  ----- Method: EToyProjectHistoryMorph>>rebuild (in category 'as yet unclassified') -----
  rebuild
 
  | history r1 |
  history := ProjectHistory currentHistory mostRecentCopy.
  changeCounter := ProjectHistory changeCounter.
  self removeAllMorphs.
  self rubberBandCells: false. "enable growing"
  r1 := self addARow: {
  self inAColumn: {
  StringMorph new contents: 'Jump...' translated; lock.
  }.
  }.
  r1 on: #mouseUp send: #jumpToProject to: self.
 
  history do: [ :each |
  (
  self addARow: {
  (self inAColumn: {
  StretchyImageMorph new form: each second; minWidth: 35; minHeight: 35; lock
  }) vResizing: #spaceFill.
  self inAColumn: {
  StringMorph new contents: each first; lock.
  "StringMorph new contents: each fourth first; lock."
  }.
  (self inAColumn: {
  StringMorph new
  color: Color red;
  contents: 'X';
  on: #mouseDown send: #confirmedDelete:evt:from: to: self withValue: each fourth first
  }) hResizing: #rigid.
  }
  )
  color: Color paleYellow;
+ borderStyle: (BorderStyle raised width: 1);
- borderWidth: 1;
- borderColor: #raised;
  vResizing: #spaceFill;
  on: #mouseUp send: #mouseUp:in: to: self;
  on: #mouseDown send: #mouseDown:in: to: self;
  on: #mouseMove send: #mouseMove:in: to: self;
  on: #mouseLeave send: #mouseLeave:in: to: self;
  setProperty: #projectParametersTuple toValue: each;
  setBalloonText: (each third isEmptyOrNil ifTrue: ['not saved'] ifFalse: [each third])
  ].
  "---
  newTuple := {
  aProject name.
  aProject thumbnail.
  aProject url.
  WeakArray with: aProject.
  }.
  ---"!

Item was changed:
  ----- Method: FishEyeMorph>>extent: (in category 'geometry') -----
  extent: aPoint
  "Round to a number divisible by grid.  Note that the superclass has its own implementation."
  | g gridSize |
  gridSize := self gridSizeFor: aPoint.
  "self halt."
+ g := (aPoint - (2 * self borderWidth)) // gridSize.
- g := (aPoint - (2 * borderWidth)) // gridSize.
  srcExtent := g * gridSize.
  gridNum := g.
  ^super extent: self defaultExtent!

Item was changed:
  ----- Method: FreeCell>>buildButton:target:label:selector: (in category 'private') -----
  buildButton: aButton target: aTarget label: aLabel selector: aSelector
  "wrap a button or switch in an alignmentMorph to provide some space around the button"
 
  | a |
  aButton
  target: aTarget;
  label: aLabel;
  actionSelector: aSelector;
+ borderStyle: (BorderStyle raised width: 2);
- borderColor: #raised;
- borderWidth: 2;
  color: Color gray.
  a := AlignmentMorph newColumn
  wrapCentering: #center; cellPositioning: #topCenter;
  hResizing: #shrinkWrap;
  vResizing: #shrinkWrap;
  color: Color transparent;
  layoutInset: 1.
  a addMorph: aButton.
  ^ a
 
  !

Item was changed:
  ----- Method: FreeCell>>makeControlBar (in category 'initialization') -----
  makeControlBar
 
  ^AlignmentMorph newRow
  color: self colorNearBottom;
+ borderStyle: (BorderStyle inset width: 2);
- borderColor: #inset;
- borderWidth: 2;
  layoutInset: 0;
  hResizing: #spaceFill; vResizing: #shrinkWrap; wrapCentering: #center; cellPositioning: #leftCenter;
  yourself.!

Item was changed:
  ----- Method: FreeCellStatistics>>buildButton:target:label:selector: (in category 'user interface') -----
  buildButton: aButton target: aTarget label: aLabel selector: aSelector
  "wrap a button or switch in an alignmentMorph to provide some space around the button"
 
  | a |
  aButton
  target: aTarget;
  label: aLabel;
  actionSelector: aSelector;
+ borderStyle: (BorderStyle raised width: 2);
- borderColor: #raised;
- borderWidth: 2;
  color: Color gray.
  a := AlignmentMorph newColumn
  wrapCentering: #center; cellPositioning: #topCenter;
  hResizing: #spaceFill;
  vResizing: #shrinkWrap;
  color: Color transparent;
  layoutInset: 1.
  a addMorph: aButton.
  ^ a
 
  !

Item was changed:
  ----- Method: FreeCellStatistics>>makeControls (in category 'user interface') -----
  makeControls
  | row |
 
  row := AlignmentMorph newRow.
  row
  wrapCentering: #center; cellPositioning: #leftCenter;
  hResizing: #spaceFill;
  vResizing: #shrinkWrap;
  color: self color;
+ borderStyle: (BorderStyle inset width: 2);
- borderWidth: 2;
- borderColor: #inset;
  addMorphBack: self makeOkButton;
  addMorphBack: self makeResetButton.
  ^row.!

Item was changed:
  ----- Method: FreeCellStatistics>>makeStatistics (in category 'user interface') -----
  makeStatistics
  | row |
 
  row := AlignmentMorph newRow.
  row
  wrapCentering: #center; cellPositioning: #leftCenter;
  hResizing: #spaceFill;
  vResizing: #spaceFill;
  color: self color;
+ borderStyle: (BorderStyle inset width: 2);
- borderWidth: 2;
- borderColor: #inset;
  addMorphBack: (AlignmentMorph newColumn
  wrapCentering: #center; cellPositioning: #topCenter;
  color: self color;
  addMorph: (statsMorph := TextMorph new contents: self statsText)).
  ^row.!

Item was changed:
  ----- Method: HTTPProxyEditor>>updateWidgets (in category 'initialization') -----
  updateWidgets
  "update the receiver's widgets"
  acceptWidget isNil
  ifFalse: [""
  acceptWidget color: Color lightGreen;
+ borderStyle: (BorderStyle raised width: 2)].
- borderWidth: 2;
- borderColor: #raised].
  cancelWidget isNil
  ifFalse: [""
  cancelWidget color: Color lightRed;
+ borderStyle: (BorderStyle raised width: 2)].
- borderWidth: 2;
- borderColor: #raised].
  ""
  serverNameLabelWidget isNil
  ifFalse: [""
  serverNameLabelWidget color: self paneColor lighter;
+ borderStyle: (BorderStyle raised width: serverNameLabelWidget borderWidth)].
- borderColor: #raised].
  portLabelWidget isNil
  ifFalse: [""
  portLabelWidget color: self paneColor lighter;
+ borderStyle: (BorderStyle raised width: portLabelWidget borderWidth)]!
- borderColor: #raised]!

Item was changed:
  ----- Method: IconicButtonWithLabel>>labelGraphic:color:andLabel: (in category 'as yet unclassified') -----
  labelGraphic: aForm color: nonTranslucent andLabel: aStringMorph
  | graphicalMorph labeledItem actualForm |
 
  labeledItem := AlignmentMorph newColumn.
  labeledItem hResizing: #shrinkWrap.
  labeledItem vResizing: #shrinkWrap.
  labeledItem color: nonTranslucent.
  labeledItem borderWidth: 0.
  labeledItem
  layoutInset: 4@0;
  cellPositioning: #center.
 
  self removeAllMorphs.
  actualForm := (Form extent: aForm extent depth: 32) fillColor: nonTranslucent.
  aForm displayOn: actualForm at: 0@0 rule: 34.
  graphicalMorph := SketchMorph withForm: actualForm.
 
  labeledItem addMorph: graphicalMorph.
  labeledItem addMorphBack: (Morph new extent: (4@4)) beTransparent.
  aStringMorph ifNotNil: [
  labeledItem addMorphBack: aStringMorph
  ].
 
  self addMorph: labeledItem.
+ self extent: submorphs first fullBounds extent + (self borderWidth + 6).
- self extent: submorphs first fullBounds extent + (borderWidth + 6).
  labeledItem lock.
  !

Item was changed:
  ----- Method: IconicButtonWithLabel>>labelString: (in category 'as yet unclassified') -----
  labelString: aString
 
  labelMorph ifNotNil: [
  labelMorph contents: aString.
+ self extent: self firstSubmorph fullBounds extent + (self borderWidth + 6).
- self extent: submorphs first fullBounds extent + (borderWidth + 6).
  ].
  !

Item was changed:
  ----- Method: MidiInputMorph>>addChannelControlsFor: (in category 'as yet unclassified') -----
  addChannelControlsFor: channelIndex
 
  | r divider col |
  r := self makeRow
  hResizing: #shrinkWrap;
  vResizing: #shrinkWrap.
  r addMorphBack: (self channelNumAndMuteButtonFor: channelIndex).
  r addMorphBack: (Morph new extent: 10@5; color: color).  "spacer"
  r addMorphBack: (self panAndVolControlsFor: channelIndex).
 
  divider := AlignmentMorph new
  extent: 10@1;
- borderWidth: 1;
  layoutInset: 0;
+ borderStyle: (BorderStyle raised width: 1);
- borderColor: #raised;
  color: color;
  hResizing: #spaceFill;
  vResizing: #rigid.
 
  col := self lastSubmorph.
  col addMorphBack: divider.
  col addMorphBack: r.
  !

Item was changed:
  ----- Method: MidiInputMorph>>makeControls (in category 'as yet unclassified') -----
  makeControls
 
  | bb r reverbSwitch onOffSwitch |
  bb := SimpleButtonMorph new
  target: self;
+ borderStyle: (BorderStyle raised width: 2);
- borderColor: #raised;
- borderWidth: 2;
  color: color.
  r := AlignmentMorph newRow.
  r color: bb color; borderWidth: 0; layoutInset: 0.
  r hResizing: #shrinkWrap; vResizing: #shrinkWrap; extent: 5@5.
  r addMorphBack: (
  bb label: '<>';
  actWhen: #buttonDown;
  actionSelector: #invokeMenu).
  onOffSwitch := SimpleSwitchMorph new
  offColor: color;
  onColor: (Color r: 1.0 g: 0.6 b: 0.6);
  borderWidth: 2;
  label: 'On';
  actionSelector: #toggleOnOff;
  target: self;
  setSwitchState: false.
  r addMorphBack: onOffSwitch.
  reverbSwitch := SimpleSwitchMorph new
  offColor: color;
  onColor: (Color r: 1.0 g: 0.6 b: 0.6);
  borderWidth: 2;
  label: 'Reverb Disable';
  actionSelector: #disableReverb:;
  target: self;
  setSwitchState: SoundPlayer isReverbOn not.
  r addMorphBack: reverbSwitch.
  ^ r
  !

Item was changed:
  ----- Method: Mines>>buildButton:target:label:selector: (in category 'initialize') -----
  buildButton: aButton target: aTarget label: aLabel selector: aSelector
  "wrap a button or switch in an alignmentMorph to allow a row of buttons to fill space"
 
  | a |
  aButton
  target: aTarget;
  label: aLabel;
  actionSelector: aSelector;
+ borderStyle: (BorderStyle raised width: 2);
- borderColor: #raised;
- borderWidth: 2;
  color: color.
  a := AlignmentMorph newColumn
  wrapCentering: #center; cellPositioning: #topCenter;
  hResizing: #spaceFill;
  vResizing: #shrinkWrap;
  color: color.
  a addMorph: aButton.
  ^ a
 
  !

Item was changed:
  ----- Method: Mines>>defaultBorderColor (in category 'initialization') -----
  defaultBorderColor
+ ^ Color transparent!
- "answer the default border color/fill style for the receiver"
- ^ #raised!

Item was added:
+ ----- Method: Mines>>defaultBorderStyle (in category 'initialization') -----
+ defaultBorderStyle
+ ^ BorderStyle raised!

Item was changed:
  ----- Method: Mines>>makeControls (in category 'initialize') -----
  makeControls
  | row |
  row := AlignmentMorph newRow color: color;
  borderWidth: 2;
  layoutInset: 3.
+ row borderStyle: BorderStyle inset.
- row borderColor: #inset.
  row hResizing: #spaceFill;
  vResizing: #shrinkWrap;
  wrapCentering: #center;
  cellPositioning: #leftCenter;
  extent: 5 @ 5.
  row
  addMorph: (self
  buildButton: SimpleSwitchMorph new
  target: self
  label: '  Help  ' translated
  selector: #help:).
  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 @ 15.
  row
  addMorph: (self wrapPanel: minesDisplay label: 'Mines:' translated).
  timeDisplay := LedTimerMorph new digits: 3;
  extent: 3 * 10 @ 15.
  row
  addMorph: (self wrapPanel: timeDisplay label: 'Time:' translated).
  ^ row!

Item was changed:
  ----- Method: MinesBoard>>defaultBorderColor (in category 'initialization') -----
  defaultBorderColor
+ ^ Color transparent!
- "answer the default border color/fill style for the receiver"
- ^ #inset!

Item was added:
+ ----- Method: MinesBoard>>defaultBorderStyle (in category 'initialization') -----
+ defaultBorderStyle
+ ^ BorderStyle inset!

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: [
-
- borderWidth = 0 ifTrue: [  "no border"
- aCanvas fillRectangle: bounds color: color.
- ^ self.].
-
- borderColor == #raised ifTrue: [
- ^ aCanvas frameAndFillRectangle: bounds
- fillColor: color
- borderWidth: borderWidth
- topLeftColor: color lighter lighter
- bottomRightColor: color darker darker darker].
-
- borderColor == #inset ifTrue: [
- aCanvas frameAndFillRectangle: bounds
- fillColor: color
- borderWidth: 1 " borderWidth"
- topLeftColor: (color darker darker darker)
- bottomRightColor: color lighter.
  self isMine ifTrue: [  
  font  := StrikeFont familyName: 'Atlanta' size: 22 emphasized: 1.
+ rct := self bounds insetBy: ((self bounds width) - (font widthOfString: '*'))/2@0.
- rct := bounds insetBy: ((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 emphasized: 1.
+ rct := self bounds insetBy: ((self bounds width) - (font widthOfString: nearMines asString))/2@0.
- rct := bounds insetBy: ((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) ) .]].!
- ^ aCanvas drawString: nearMines asString in: rct font: font color: ((palette at: nearMines) ) .].
- ^self. ].
-
- "solid color border"
- aCanvas frameAndFillRectangle: bounds
- fillColor: color
- borderWidth: borderWidth
- borderColor: borderColor.!

Item was changed:
  ----- Method: MinesTile>>switchState: (in category 'accessing') -----
  switchState: aBoolean
 
  switchState := aBoolean.
  disabled ifFalse:
  [switchState
  ifTrue:[
  "flag ifTrue: [self setFlag]." "if this is a flagged tile, unflag it."
+ self borderStyle: (BorderStyle inset width: 1).
- self borderColor: #inset.
  self color: onColor]
  ifFalse:[
+ self borderStyle: (BorderStyle raised width: 3).
- self borderColor: #raised.
  self color: offColor]]!

Item was changed:
  ----- Method: NewVariableDialogMorph>>buildDecimalPlacesButton (in category 'build') -----
  buildDecimalPlacesButton
  | button |
  button := SimpleButtonMorph new
  labelString: self decimalPlaces asString font: Preferences standardEToysButtonFont;
  color: (Color r: 0.806 g: 1.0 b: 0.645);
  target: self;
  actionSelector: #chooseDecimalPlaces;
  extent: 200 @ (TextStyle defaultFont height + 10);
  cornerStyle: #square;
+ borderStyle: BorderStyle raised;
- borderColor: #raised;
  yourself.
  self addArrowsOn: button.
  ^ button
  !

Item was changed:
  ----- Method: NewVariableDialogMorph>>buildVarTypeButton (in category 'build') -----
  buildVarTypeButton
  | button |
  button := SimpleButtonMorph new
  labelString: self varType translated font: Preferences standardEToysButtonFont;
  color: (Color r: 0.806 g: 1.0 b: 0.645);
  target: self;
  actionSelector: #chooseType;
  extent: 200 @ (TextStyle defaultFont height + 10);
  cornerStyle: #square;
+ borderStyle: BorderStyle raised;
- borderColor: #raised;
  yourself.
  self addArrowsOn: button.
  ^ button
  !

Item was changed:
  ----- Method: PDAClockMorph>>drawOn: (in category 'drawing') -----
  drawOn: aCanvas
 
+ aCanvas frameAndFillRectangle: self bounds fillColor: backgroundColor
+ borderWidth: self borderWidth borderColor: self borderColor.
- aCanvas frameAndFillRectangle: bounds fillColor: backgroundColor
- borderWidth: 1 borderColor: borderColor.
  super drawOn: aCanvas.
  !

Item was changed:
  ----- Method: PlayingCardDeck>>initialize (in category 'initialization') -----
  initialize
  super initialize.
  self cellPositioning: #topLeft.
  self reverseTableCells: true.
  self layout: #grid.
  self hResizing: #shrinkWrap.
  self vResizing: #shrinkWrap.
+ self borderWidth: 0.
- borderWidth := 0.
  self layoutInset: 0.
  stackingPolicy := #stagger.
  stackingOrder := #ascending.
  emptyDropPolicy := #any.
  self newSeed.
  ^self!

Item was changed:
  ----- Method: RecordingControls>>initialize (in category 'initialization') -----
  initialize
  "Initialize the receiver."
 
  | r full |
  super initialize.
  self hResizing: #shrinkWrap; vResizing: #shrinkWrap.
+ self borderWidth: 2.
- borderWidth := 2.
  self listDirection: #topToBottom.
  recorder := SoundRecorder new.
  recordingSaved := false.
  full := self addButtonRows.
  self changeCodec: OggSpeexCodec name: 'Speex'.
 
  "self addRecordLevelSliderIn: full."  "Doesn't work in most or maybe even all platforms..."
 
  r := AlignmentMorph newRow vResizing: #shrinkWrap.
  r addMorphBack: (self makeRecordMeterIn: full).
  self addMorphBack: r.
  self extent: 10@10.  "make minimum size"
  self setButtonEnablement
  !

Item was changed:
  ----- Method: RulerMorph>>drawOn: (in category 'drawing') -----
  drawOn: aCanvas
 
  | s |
  super drawOn: aCanvas.
  s := self width printString, 'x', self height printString.
+ aCanvas drawString: s in: (self bounds insetBy: self borderWidth + 5) font: nil color: Color red.
- aCanvas drawString: s in: (bounds insetBy: borderWidth + 5) font: nil color: Color red.
  !

Item was changed:
  ----- Method: SameGame>>buildButton:target:label:selector: (in category 'initialization') -----
  buildButton: aButton target: aTarget label: aLabel selector: aSelector
  "wrap a button or switch in an alignmentMorph to allow a row of buttons to fill space"
 
  | a |
  aButton
  target: aTarget;
  label: aLabel;
  actionSelector: aSelector;
+ borderStyle: (BorderStyle raised width: 2);
- borderColor: #raised;
- borderWidth: 2;
  color: color.
  a := AlignmentMorph newColumn
  wrapCentering: #center; cellPositioning: #topCenter;
  hResizing: #spaceFill;
  vResizing: #shrinkWrap;
  color: color.
  a addMorph: aButton.
  ^ a
 
  !

Item was changed:
  ----- Method: SameGameTile>>setSwitchState: (in category 'accessing') -----
  setSwitchState: aBoolean
 
  switchState := aBoolean.
  disabled ifFalse:
  [switchState
  ifTrue:
+ [self borderInset.
- [self borderColor: #inset.
  self color: onColor]
  ifFalse:
+ [self borderRaised.
- [self borderColor: #raised.
  self color: offColor]]!

Item was changed:
  ----- Method: ScriptEditorMorph>>extent: (in category 'other') -----
  extent: x
 
  | newExtent tw menu |
  newExtent := x max: self minWidth @ self minHeight.
  (tw := self findA: TwoWayScrollPane) ifNil:
  ["This was the old behavior"
  ^ super extent: newExtent].
 
  (self hasProperty: #autoFitContents) ifTrue: [
  menu := MenuMorph new defaultTarget: self.
  menu addUpdating: #autoFitString target: self action: #autoFitOnOff.
  menu addTitle: 'To resize the script, uncheck the box below' translated.
  menu popUpEvent: nil in: self world .
  ^ self].
 
  "Allow the user to resize to any size"
  tw extent: ((newExtent x max: self firstSubmorph width)
+ @ (newExtent y - self firstSubmorph height)) - (self borderWidth * 2) + (-4 @ -4).  "inset?"
- @ (newExtent y - self firstSubmorph height)) - (borderWidth * 2) + (-4 @ -4).  "inset?"
  ^ super extent: newExtent!

Item was changed:
  ----- Method: ScriptableButton>>label: (in category 'accessing') -----
  label: aString
  "Set the receiver's label as indicated"
 
  | aLabel |
  (aLabel := self findA: StringMorph)
  ifNotNil:
  [aLabel contents: aString]
  ifNil:
  [aLabel := StringMorph contents: aString font: Preferences standardEToysButtonFont.
  self addMorph: aLabel].
 
+ self extent: aLabel extent + (self borderWidth + 6).
- self extent: aLabel extent + (borderWidth + 6).
  aLabel position: self center - (aLabel extent // 2).
 
  aLabel lock!

Item was changed:
  ----- Method: StackMorph>>formatList: (in category 'menu') -----
  formatList: pl
  | rr ff |
  "Turn this plugglable list into a good looking morph."
 
  pl color: Color transparent; borderWidth: 0.
  pl font: ((TextStyle named: #Palatino) fontOfSize: 14).
  pl toggleCornerRounding; width: 252; retractableOrNot; hResizing: #spaceFill.
  rr := (RectangleMorph new) toggleCornerRounding; extent: pl extent + (30@30).
  rr color: self currentPage color; fillStyle: (ff := self currentPage fillStyle copy).
  ff isGradientFill ifTrue: [
  rr fillStyle direction: (ff direction * self currentPage extent / rr extent) rounded.
  rr fillStyle origin: rr bounds origin].
  rr addMorph: pl.
  rr layoutPolicy: TableLayout new.
  rr layoutInset: 10@15; cellInset: 10@15; wrapDirection: #leftToRight.
+ rr listCentering: #center; borderStyle: (BorderStyle raised width: 5).
- rr listCentering: #center; borderWidth: 5; borderColor: #raised.
  "Up and down buttons on left with arrows in a holder."
  "lb := (RectangleMorph new) color: transparent; borderWidth: 0."
  ^ rr!

Item was changed:
  ----- Method: StandardViewer>>addHeaderMorphWithBarHeight:includeDismissButton: (in category 'initialization') -----
  addHeaderMorphWithBarHeight: anInteger includeDismissButton: aBoolean
  "Add the header morph to the receiver, using anInteger as a guide for its height, and if aBoolean is true, include a dismiss buton for it"
 
  | header aButton aTextMorph nail wrpr costs headWrapper |
  header := AlignmentMorph newRow color: Color transparent; wrapCentering: #center; cellPositioning: #leftCenter.
  aBoolean ifTrue:
  [aButton := self tanOButton.
  header addMorph: aButton.
  aButton actionSelector: #dismiss;
  setBalloonText: 'remove this entire Viewer from the screen
  don''t worry -- nothing will be lost!!.' translated.
  header addTransparentSpacerOfSize: 3].
 
  costs := scriptedPlayer costumes.
  costs ifNotNil:
  [(costs size > 1 or: [costs size = 1 and: [costs first ~~ scriptedPlayer costume]]) ifTrue:
  [header addUpDownArrowsFor: self.
  "addArrowsOn: adds the box with two arrow at the front."
  (wrpr := header submorphs first) submorphs second setBalloonText: 'switch to previous costume' translated.
  wrpr submorphs first  setBalloonText: 'switch to next costume' translated].
  header addTransparentSpacerOfSize: 3].
 
  self viewsMorph ifTrue: [scriptedPlayer costume assureExternalName].
  aTextMorph := UpdatingStringMorph new
  useStringFormat;
  target:  scriptedPlayer;
  getSelector: #nameForViewer;
  setNameTo: 'name';
  font: ScriptingSystem fontForNameEditingInScriptor.
  self viewsMorph ifTrue:
  [aTextMorph putSelector: #setName:.
  aTextMorph setProperty: #okToTextEdit toValue: true].
  aTextMorph step.
  header  addMorphBack: aTextMorph.
  aTextMorph setBalloonText: 'Click here to edit the player''s name.' translated.
  header addMorphBack: ((self transparentSpacerOfSize: 0) hResizing: #spaceFill; color: Color red).
 
  aButton := ThreePhaseButtonMorph
  labelSymbol: #AddInstanceVariable
  target: scriptedPlayer
  actionSelector: #addInstanceVariable
  arguments: #().
  aButton setBalloonText: 'click here to add a variable
  to this object.' translated.
  header addMorphBack: aButton.
 
  header addTransparentSpacerOfSize: 3.
 
  nail := (self hasProperty: #noInteriorThumbnail)
  ifFalse:
  [ThumbnailMorph new objectToView: scriptedPlayer viewSelector: #costume]
  ifTrue:
  [ImageMorph new image: (ScriptingSystem formAtKey: #MenuIcon)].
  nail on: #mouseDown send: #offerViewerMenuForEvt:morph: to: scriptedPlayer.
  header addMorphBack: nail.
  nail setBalloonText: 'click here to get a menu
  that will allow you to
  locate this object,
  tear off a tile, etc..' translated.
  (self hasProperty: #noInteriorThumbnail)
  ifFalse:
+ [nail borderStyle: (BorderStyle raised width: 3)].
- [nail borderWidth: 3; borderColor: #raised].
 
  header addTransparentSpacerOfSize: 3.
 
  aButton := ThreePhaseButtonMorph labelSymbol: #AddCategoryViewer.
  aButton
  actWhen: #buttonUp;
  target: self;
  actionSelector: #addCategoryViewer;
  setBalloonText: 'click here to add
  another category pane' translated.
  header addMorphBack: aButton.
 
  header beSticky.
  anInteger > 0
  ifTrue:
  [headWrapper := AlignmentMorph newColumn color: self color.
  headWrapper addTransparentSpacerOfSize: (0 @ anInteger).
  headWrapper addMorphBack: header.
  self addMorph: headWrapper]
  ifFalse:
  [self addMorph: header]!

Item was changed:
  ----- Method: SyntaxMorph>>borderColor: (in category 'accessing') -----
  borderColor: colorOrSymbolOrNil
 
+ self borderColor = colorOrSymbolOrNil ifFalse: [
+ super borderColor: colorOrSymbolOrNil.
- borderColor = colorOrSymbolOrNil ifFalse: [
- borderColor := colorOrSymbolOrNil.
  self bounds area < 40000
  ifTrue: [self invalidRect: self bounds]
  ifFalse: [(self bounds areasOutside: (self bounds insetBy: self borderWidth))
  do: [:r | self invalidRect: r]]].
  !

Item was changed:
  ----- Method: SyntaxMorph>>select (in category 'selection') -----
  select
  self deselect.
  "Outer block is not colored and has no popup"
  (owner isSyntaxMorph and: [owner nodeClassIs: MethodNode])
  ifTrue: [self setDeselectedColor "normal"]
  ifFalse: [self color: Color lightBrown].
+ self borderStyle: (BorderStyle raised width: self borderWidth).
- self borderColor: #raised.
  self offerPopUp.!

Item was changed:
  ----- Method: SyntaxMorph>>trackDropZones (in category 'insertion drop zones') -----
  trackDropZones
  | hand i localPt insertion insHt ii prevBot nxtHt d c1 c2 ht2 spacer1 spacer2 wid ht1 dc each |
  hand := self primaryHand.
  ("hand lastEvent redButtonPressed &" hand hasSubmorphs
  and: [(self hasOwner: hand) not]) ifFalse: [^ self].
 
  insertion := hand firstSubmorph renderedMorph.
  insertion isSyntaxMorph ifFalse: [^ self].
  insertion isNoun ifFalse: [(insertion nodeClassIs: CommentNode) ifFalse: [^ self]].
  localPt := self globalPointToLocal: hand position.
  insHt := insertion height.  "**just use standard line height here"
  self removeDropZones.  "Maybe first check if in right place, then just tweak heights."
  i := (ii := self indexOfMorphAbove: localPt) min: submorphs size-1.
  prevBot := i <= 0 ifTrue: [(self innerBounds) top]
  ifFalse: [(self submorphs at: i) bottom].
  nxtHt := (submorphs isEmpty
  ifTrue: [insertion]
  ifFalse: [self submorphs at: i+1]) height.
  d := ii > i ifTrue: [nxtHt "for consistent behavior at bottom"]
  ifFalse: [0 max: (localPt y - prevBot min: nxtHt)].
 
  "Top and bottom spacer heights cause continuous motion..."
  c1 := Color transparent.  c2 := Color transparent.
  ht2 := d*insHt//nxtHt.  ht1 := insHt - ht2.
+ wid := self width - (2*self borderWidth) - (2*self layoutInset).
- wid := self width - (2*borderWidth) - (2*self layoutInset).
  wid isPoint ifTrue: [wid := wid x].
  (spacer1 := BorderedMorph newBounds: (0@0 extent: wid@ht1)
  color: (ht1 > (insHt//2) ifTrue: [c1] ifFalse: [c2]))
  borderWidth: 1; borderColor: spacer1 color.
  self privateAddMorph: spacer1 atIndex: (i+1 max: 1).
  (spacer2 := BorderedMorph newBounds: (0@0 extent: wid@ht2)
  color: (ht2 > (insHt//2+1) ifTrue: [c1] ifFalse: [c2]))
  borderWidth: 1; borderColor: spacer2 color.
  spacer1 setProperty: #dropZone toValue: true.
  spacer2 setProperty: #dropZone toValue: true.
  self privateAddMorph: spacer2 atIndex: (i+3 min: submorphs size+1).
  self fullBounds.  "Force layout prior to testing for cursor containment"
 
  "Maintain the drop target highlight -- highlight spacer if hand is in it."
  {spacer1. spacer2} do:
  [:spacer | (spacer containsPoint: localPt) ifTrue:
  [spacer color: self dropColor.
  "Ignore border color.  Maybe do it later.
  self borderColor = self dropColor
  ifTrue: [self borderColor: self stdBorderColor]"]].
  "If no submorph (incl spacers) highlighted, then re-highlight the block."
  "Ignore border color.  Maybe do it later.
  ((self wantsDroppedMorph: insertion event: hand lastEvent) and:
  [(self submorphs anySatisfy: [:m | m containsPoint: localPt]) not])
  ifTrue: [self borderColor: self dropColor].
  "
 
  "Dragging a tile within a Block, if beside a tile, color it a dropzone"
  "Transcript show: localPt y printString; space; show: submorphs first top
  printString; space; show: submorphs last top printString; cr."
  dc := self dropColor.
  1 to: ((ii+4 min: submorphs size) max: 1) do: [:ind |
  each := submorphs at: ind.
  each isSyntaxMorph ifTrue: [
  localPt y >= each top
  ifTrue: ["in this one or beyond"
  (localPt y < each bottom)
  ifTrue: [(each submorphs anySatisfy: [:m |
  m containsPoint: localPt])
  ifTrue: [each setDeselectedColor]
  ifFalse: [each color: dc]]
  ifFalse: [each color = dc ifTrue: [each setDeselectedColor]]]
  ifFalse: [each color = dc ifTrue: [each setDeselectedColor]]]].
  !

Item was changed:
  ----- Method: SyntaxMorph>>unhighlight (in category 'highlighting') -----
  unhighlight
 
+ self setDeselectedColor.!
- self setDeselectedColor.
-
-
- false ifTrue: [
- self currentSelectionDo: [:innerMorph :mouseDownLoc :outerMorph |
- self color: ( false
- "(self == outerMorph or: [owner notNil and: [owner isSyntaxMorph not]])"
- ifTrue: [self valueOfProperty: #deselectedBorderColor ifAbsent: [#raised]]
- ifFalse: [self color: Color transparent]
- )
- ]].
- !

Item was changed:
  ----- Method: SyntaxMorph>>unhighlightBorder (in category 'highlighting') -----
  unhighlightBorder
 
  self currentSelectionDo: [:innerMorph :mouseDownLoc :outerMorph |
  self borderColor: (
  (self == outerMorph or: [owner notNil and: [owner isSyntaxMorph not]])
+ ifFalse: [self borderColor: self stdBorderColor]
+ ifTrue: [
+ (self hasProperty: #deselectedBorderColor)
+ ifTrue: [self borderColor: (self valueOfProperty: #deselectedBorderColor)]
+ ifFalse: [self borderStyle: (BorderStyle raised width: self borderWidth)]] )].!
- ifTrue: [self valueOfProperty: #deselectedBorderColor ifAbsent: [#raised]]
- ifFalse: [self stdBorderColor]
- )
- ]
- !

Item was changed:
  ----- Method: Tetris>>buildButtonTarget:label:selector:help: (in category 'initialization') -----
  buildButtonTarget: aTarget label: aLabel selector: aSelector help: aString
 
  ^self rowForButtons
  addMorph: (
  SimpleButtonMorph new
  target: aTarget;
  label: aLabel;
  actionSelector: aSelector;
+ borderStyle: (BorderStyle raised width: 2);
- borderColor: #raised;
- borderWidth: 2;
  color: color
  )
 
  !

Item was changed:
  ----- Method: TileMorph>>typeColor: (in category 'misc') -----
  typeColor: aColor
  "Set the receiver's typeColor"
 
+ self borderColor: ScriptingSystem standardTileBorderColor.
+
- borderColor := ScriptingSystem standardTileBorderColor.
  typeColor := aColor.
  color := ScriptingSystem uniformTileInteriorColor !

Item was changed:
  ----- Method: WatchMorph>>drawOn: (in category 'drawing') -----
  drawOn: aCanvas
  "Draw the watch on the given canvas"
 
  | pHour pMin pSec time centerColor |
  time := Time now.
  pHour := self radius: 0.6 hourAngle: time hours + (time minutes/60.0).
  pMin := self radius: 0.72 hourAngle: (time minutes / 5.0).
  pSec := self radius: 0.8 hourAngle: (time seconds / 5.0).
  centerColor := cColor
  ifNil:
  [Color transparent]
  ifNotNil:
  [time hours < 12
  ifTrue: [cColor muchLighter]
  ifFalse: [cColor]].
 
  antialias ifTrue:
  [aCanvas asBalloonCanvas
  aaLevel: 4;
+ drawOval: (self bounds insetBy: self borderWidth // 2 + 1) color: self fillStyle
+ borderWidth: self borderWidth borderColor: self borderColor;
+ drawOval: (self bounds insetBy: self extent*0.35) color: centerColor
- drawOval: (bounds insetBy: borderWidth // 2 + 1) color: self fillStyle
- borderWidth: borderWidth borderColor: borderColor;
- drawOval: (bounds insetBy: self extent*0.35) color: centerColor
  borderWidth: 0 borderColor: Color black;
  drawPolygon: {self center. pHour}
  color: Color transparent borderWidth: 3 borderColor: handsColor;
  drawPolygon: {self center. pMin}
  color: Color transparent borderWidth: 2 borderColor: handsColor;
  drawPolygon: {self center. pSec}
  color: Color transparent borderWidth: 1 borderColor: handsColor]
  ifFalse:
  [super drawOn: aCanvas.
  aCanvas
+ fillOval: (self bounds insetBy: self extent*0.35) color: centerColor;
- fillOval: (bounds insetBy: self extent*0.35) color: centerColor;
  line: self center to: pHour width: 3 color: handsColor;
  line: self center to: pMin width: 2 color: handsColor;
  line: self center to: pSec width: 1 color: handsColor]
  !