When the UI thread is really busy, updating the UI can be problematic. An extra fork seems to help: (FileLocator temp / 'PharoV30.sources') ensureDelete. [ [ :bar | bar title: 'Downloading Sources...'. [ ZnClient new url: 'http://files.pharo.org/sources/PharoV30.sources'; signalProgress: true; downloadTo: FileLocator temp ] on: HTTPProgress do: [ :progress | progress isEmpty ifFalse: [ bar current: progress percentage ]. progress resume ] ] asJob run ] fork.
On 13 May 2016, at 01:00, Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com> wrote:
Hi Sven,
Thanks for your quick answer. I tried both approaches but I'm missing something. See my last attempt at http://ws.stfx.eu/KBVBAP72IWOO with the last one. I get a progress bar message, but not the advancements on it. What I'm missing?
Cheers,
Offray
ps: The file I'm trying to download is covered by the Open Data Base License.
On 12/05/16 17:24, Sven Van Caekenberghe wrote:
Hi Offray,
The actual implementation of #saveContentsToFile: can be found in ZnHttpSaveContentsToFile>>#performOperation where you can see how ZnClient is invoked. Just copy that with signalProgress: true added and you should be good.
Alternatively, you could wrap the first expression as follows:
ZnSignalProgress value: true during: [ myUrl asUrl saveContentsToFile: file ]
ZnSignalProgress is a DynamicVariable that is used by ZnClient to figure out if progress should be signalled. It takes precedence over the option #signalProgress. See #withProgressDo: if you are interested.
HTH,
Sven
On 13 May 2016, at 00:14, Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com> wrote:
Hi,
I'm using
myUrl asUrl saveContentsToFile: file
to download large files and is working fine. But I would like to add a progress bar to show the progress to the user. Previously I used
=============== [: bar | bar title: aString. [ "A classical ZnClient download with signalProgress: true;" ] on: HTTPProgress do: [ :progress | progress isEmpty ifFalse: [ bar current: progress percentage ]. progress resume ]. ] asJob run. ===============
but I don't know how to signal progress with "saveContentsToFile".
Any hints?
Thanks,
Offray