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" >
