Hi,
This is the code that finally did it:
http://ws.stfx.eu/458U3WRKXAW1.
I was really puzzled by the progress bar not being updated despite of
the download being made (it took me several days to find what happen!).
The thing is that the total size of the file was not being delivered by
the datahub.io site, so there was no way to put it into the progress
bar. I used an alternative approach reading the actual size against the
total expected size (once you know the cause the solution took me a
couple of hours, mostly learning about SystemProgressBar and
JobProgressBar, the actual script took minutes.).
Thanks Sven and Johan for helping me to figure this out.
Cheers,
Offray
On 13/05/16 00:35, Sven Van Caekenberghe wrote:
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.l...@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.l...@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