I think you missed my p.s. :) Doru On Fri, Jul 27, 2012 at 2:21 PM, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
On Jul 27, 2012, at 1:06 PM, Tudor Girba wrote:
I checked in Pharo 2.0, and it looks ... well, how should I put it: it's confusing. You took a clear piece of code that could be printed on a nice A4 paper, and transformed it into a myriad of delegations.
I think you are just too afraid of if-statements. Clearly, a better solution would have been to just use caseOf:.
I did not check the code but using blocks as objects was a bad idea.
Doru
p.s. :)
On Thu, Jul 26, 2012 at 8:55 PM, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
And I removed the strip behavior. In 2.0 it is not there.
Stef
On Jul 25, 2012, at 4:47 PM, Tudor Girba wrote:
Just for fun read the below piece of code :)
SystemProgressMorph>>label: shortDescription min: startMinValue max: startMaxValue "Answer the block that updates the progress bar."
"some fun stuff added (by kph)
- bar value: #label. - tell me my current label. - bar value: 'newLabel'. - enable changing the label from within the workBlock - bar value: #increment. - enable progress by one without keeping a counter - bar value: #decrement. - go backwards (if you really have to, useful for an abort, or rollback)!
- bar value: newBigNum. - change the max on the fly - when you find there is more to do. - bar value: (bar value: #setMax) + 20 - change the max on the fly - when you find there is more/less to do. - bar value: (bar value: #setMin) - 20 - change the min on the fly - not sure why you would want to. " | slot range barSize lastRefresh maxValue minValue bar| maxValue := startMaxValue. minValue := startMinValue. ((range := maxValue - minValue) <= 0 or: [(slot := self nextSlotFor: shortDescription) = 0]) ifTrue: [^[:barVal| 0 ]]. self recenter. self openInWorld. barSize := -1. "Enforces a inital draw of the morph" lastRefresh := Time millisecondClockValue. bar := bars at: slot. ^[:barValArg | | barVal return newBarSize | barVal := barValArg. return := nil. bar := bars at: slot. "new fun stuff here" barVal == #current ifTrue: [ return := barSize ]. barVal == #label ifTrue:[ return := (labels at: slot) contents ]. barVal == #setMax ifTrue: [ return := maxValue. maxValue := minValue ]. barVal == #setMin ifTrue: [ return := minValue. minValue := maxValue ]. barVal == #increment ifTrue: [return := barVal := barSize + 1]. barVal == #decrement ifTrue: [ return := barVal := barSize - 1]. (barVal isString and: [barVal isSymbol not]) ifTrue: [ (labels at: slot) contents: barVal. barVal := #refresh]. barVal == #refresh ifTrue: [self currentWorld displayWorld. return := true]. (barVal == SmallInteger maxVal or: [ barVal == #finished ]) ifTrue: [return := slot]. return ifNil: [ barVal > maxValue ifTrue: [return := maxValue := barVal]. barVal < minValue ifTrue: [return := minValue := barVal]. (barVal between: minValue and: maxValue) ifTrue: [newBarSize := (barVal - minValue / range * BarWidth) truncated. newBarSize = barSize ifFalse: [barSize := newBarSize. (Time millisecondsSince: lastRefresh) > 25 ifTrue: [barVal := #refresh ]]]. barVal == #refresh ifTrue: [ ((bar valueOfProperty: #useStripes) ifNil: [false]) ifTrue: [bar fillStyle origin: bar position - ((Time millisecondClockValue // 50 \\ 30) @ 0)]. bar barSize: barSize. self currentWorld displayWorld. lastRefresh := Time millisecondClockValue]]. return]
Cheers, Doru
-- www.tudorgirba.com
"Every thing has its own flow"
-- www.tudorgirba.com
"Every thing has its own flow"
-- www.tudorgirba.com "Every thing has its own flow"