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 > <[email protected]> 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" >
