I didn't mention that my question comes from trying and finding bugs
in the method BlockClosure>>silentlyValue, in Pharo 2.0 (should be in
1.4 also):
silentlyValue
"evaluates the receiver but avoiding progress bar notifications to show
up."
^[ self value ]
on: ProgressInitiationException
do: [ :ex |
ex sendNotificationsTo: [ :min :max :curr |
self traceCr: min printString,' ',max
printString,' ',curr printString; cr
].
].
----> "; cr" has to be removed from code. After this easy fix, the
other bug makes visible: #silentlyValue is not that silently with
nested progress bars. Try:
[
'main task'
displayProgressFrom: 0 to: 5
during: [ :bar |
0 to: 5 do: [:x | bar value: x.
(Delay forMilliseconds: 200) wait.
'nested task ' , x printString
displayProgressFrom: 5 to: 10
during: [ :bar2 |
5 to: 10 do: [:x2 | bar2 value: x2.
(Delay forMilliseconds: 200) wait] ] ] ].
] silentlyValue.
Cheers.
Martín
On Tue, May 8, 2012 at 12:28 AM, Martin Dias <[email protected]> wrote:
> Hi all.
>
> Given the next code, could you explain me why nested progress bars are
> not handled by my #on:do:?
> How can I achieve that?
>
> [
> 'main task'
> displayProgressFrom: 0 to: 5
> during: [ :bar |
> 0 to: 5 do: [:x | bar value: x.
> (Delay forMilliseconds: 200) wait.
>
> 'nested task ' , x printString
> displayProgressFrom: 5 to: 10
> during: [ :bar2 |
> 5 to: 10 do: [:x2 | bar2 value: x2.
> (Delay forMilliseconds: 200) wait] ] ] ]
>
> ] on: ProgressInitiationException
> do: [ :ex |
> ex sendNotificationsTo: [ :min :max :curr |
> self traceCr: curr ] ].
>
>
> Thanks in advance.
> Martín