[squeak-dev] The Trunk: Morphic-laza.177.mcz

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

[squeak-dev] The Trunk: Morphic-laza.177.mcz

commits-2
Alexander Lazarević uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-laza.177.mcz

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

Name: Morphic-laza.177
Author: laza
Time: 8 September 2009, 11:46:01 am
UUID: 802c79e0-023a-5d4d-bac1-41ec09851063
Ancestors: Morphic-ar.172

I recognized, that SystemProgressMorph got extended to support changing the label during progress display. This was not fully supported and I changed that. What was also missing was the realignment.
In additon SystemProgressMorph now supports label only display and handles informUserDuring:. See the examples for details.
I also changed the font and some of the look and layout.

1 of 2 step update

=============== Diff against Morphic-ar.172 ===============

Item was changed:
  ----- Method: SystemProgressMorph class>>initialize (in category 'class initialization') -----
  initialize
+ "SystemProgressMorph initialize"
+ BarHeight := 8.
+ BarWidth := 300.
+ self reset!
- "SystemProgressMorph initialize; reset"
- BarHeight := 16.
- BarWidth := 200.!

Item was changed:
  ----- Method: SystemProgressMorph>>nextSlotFor: (in category 'private') -----
  nextSlotFor: shortDescription
  | bar slots label |
  lock critical: [
+ slots := labels size.
- slots := bars size.
  activeSlots = slots ifTrue: [^0].
  activeSlots := activeSlots + 1.
  1 to: slots do: [:index |
+ label := (labels at: index).
+ label ifNil: [
- bar := (bars at: index).
- bar ifNil: [
  bar := bars at: index put: (SystemProgressBarMorph new extent: BarWidth@BarHeight).
  label := labels at: index put: (StringMorph contents: shortDescription font: font).
  self
  addMorphBack: label;
  addMorphBack: bar.
  ^index].
+ label owner ifNil: [
- bar owner ifNil: [
  bar := bars at: index.
  label := labels at: index.
  self
  addMorphBack: (label contents: shortDescription);
  addMorphBack: (bar barSize: 0).
  ^index]]]
  !

Item was changed:
  ----- Method: SystemProgressMorph>>label:min:max: (in category 'private') -----
  label: shortDescription min: minValue max: maxValue
  | slot range newBarSize barSize lastRefresh |
+ ((range := maxValue - minValue) < 0 or: [(slot := self nextSlotFor: shortDescription) = 0])
- ((range := maxValue - minValue) <= 0 or: [(slot := self nextSlotFor: shortDescription) = 0])
  ifTrue: [^[:barVal| 0 ]].
+ range <= 0 ifTrue: [self removeMorph: (bars at: slot)].
+ self recenter.
  self openInWorld.
- self align: self fullBounds center with: Display boundingBox center.
  barSize := -1. "Enforces a inital draw of the morph"
  lastRefresh := 0.
+ ^[:barVal |
+ barVal isString ifTrue: [
+ self setLabel: barVal at: slot.
+ self currentWorld displayWorld].
+ (barVal isNumber and: [barVal between: minValue and: maxValue]) ifTrue: [
- ^[:barVal |
- (barVal between: minValue and: maxValue) ifTrue: [
  newBarSize := (barVal - minValue / range * BarWidth) truncated.
  newBarSize = barSize ifFalse: [
  barSize := newBarSize.
  (bars at: slot) barSize: barSize.
  Time primMillisecondClock - lastRefresh > 25 ifTrue: [
  self currentWorld displayWorld.
  lastRefresh := Time primMillisecondClock]]].
  slot]
  !

Item was added:
+ ----- Method: SystemProgressMorph class>>exampleChangeLabel (in category 'examples') -----
+ exampleChangeLabel
+ "SystemProgressMorph exampleChangeLabel"
+ | classes |
+ classes := Smalltalk allClasses copyFrom: 1 to: 100.
+ 'InitialLabel'
+ displayProgressAt: Display center
+ from: 0 to: classes size
+ during: [:bar | 1 to: classes size do: [:i |
+ bar value: i.
+ bar value: i printString, '/', classes size printString, ' ', (classes at: i) printString.
+ (Delay forMilliseconds: 100) wait]]
+ !

Item was changed:
  ----- Method: SystemProgressMorph>>labelAt:put: (in category 'labelling') -----
  labelAt: progressBlock put: aString
+ "Change the label for the given progressBlock to aString."
+ progressBlock value: aString!
- "Change the label for the given progressBlock to aString.
- Fixme: I don't know how to map from progressBlock to label.
- For now we just use the top-level label since this works just fine."
- labels first ifNotNil:[:lbl| lbl contents: aString].!

Item was added:
+ ----- Method: SystemProgressMorph>>recenter (in category 'private') -----
+ recenter
+ self align: self fullBounds center with: Display boundingBox center.
+ !

Item was changed:
  ----- Method: SystemProgressMorph>>initialize (in category 'initialization') -----
  initialize
  super initialize.
  activeSlots := 0.
  bars := Array new: 10.
  labels := Array new: 10.
+ font := Preferences standardMenuFont.
- font := Preferences windowTitleFont.
  lock := Semaphore forMutualExclusion.
  self setDefaultParameters;
  setProperty: #morphicLayerNumber toValue: self morphicLayerNumber;
  layoutPolicy: TableLayout new;
  listDirection: #topToBottom;
+ cellPositioning: #leftCenter;
- cellPositioning: #topCenter;
  cellInset: 5;
  listCentering: #center;
  hResizing: #shrinkWrap;
  vResizing: #shrinkWrap;
+ layoutInset:30@30;
+ minWidth: 150!
- layoutInset:4@4.!

Item was added:
+ ----- Method: SystemProgressMorph class>>exampleLabelOnly (in category 'examples') -----
+ exampleLabelOnly
+ "SystemProgressMorph exampleLabelOnly"
+ | words |
+ words := #(zero one two three four five six seven eight nine ten) reversed.
+ UIManager default informUserDuring: [:bar |
+ words do: [:each|
+ bar value: 'Countdown: ', each.
+ (Delay forSeconds: 1) wait]].!

Item was changed:
  ----- Method: SystemProgressBarMorph>>drawOn: (in category 'drawing') -----
  drawOn: aCanvas
  | area |
  super drawOn: aCanvas.
 
  barSize > 0 ifTrue: [
  area := self innerBounds.
  area := area origin extent: barSize-2@area extent y.
+ aCanvas fillRectangle: area color: (Preferences menuTitleColor alpha: 1) darker.
- aCanvas fillRectangle: area color: Preferences menuTitleColor.
  ].
  !

Item was added:
+ ----- Method: SystemProgressMorph class>>informUserAt:during: (in category 'instance creation') -----
+ informUserAt: aPoint during: workBlock
+ ProgressInitiationException
+ display: ' '
+ at: aPoint
+ from: 0
+ to: 0
+ during: workBlock!

Item was changed:
  ----- Method: SystemProgressMorph>>freeSlot: (in category 'private') -----
  freeSlot: number
  number > 0 ifTrue: [
  lock critical: [
  (bars at: number) delete.
  (labels at: number) delete.
  activeSlots := activeSlots - 1.
  activeSlots = 0
  ifTrue: [self delete]
+ ifFalse: [self recenter]]]!
- ifFalse: [self align: self fullBounds center with: Display boundingBox center]]]!