Progress Bar Example

Sarah Reichelt sarah.reichelt at gmail.com
Fri Mar 24 16:42:06 EST 2006


On 3/25/06, Jeff Honken <jhonken at x12.info> wrote:
>
> I would like to use a "progress bar" to monitor a "go stack URL".  I'm
> clueless on how to write the code.  Does someone have an example of this
> or can someone please point me in the correct direction. Jeff

I haven't done it using stacks, but I have done it for downloading
pictures from the web and I guess it's much the same. Firstly, you
need to use "load" instead of "go". This is non-blocking and reports
it's status so you can show what's happening.

Here is part of the handler I use to start a download. It sets the
status callback object to a progress bar and then starts loading. When
it is finished, it's going to call the "picDownloaded" handler.


on downloadFile pAddress
  libURLSetStatusCallback "showStatus", the long ID of sb "Progress"
of stack "Download"
  load URL pAddress with message "picDownloaded"
end downloadFile

In the script of the scrollbar, I have this:

on showStatus pURL, pStatus
  if item 1 of pStatus = "loading" then
    put item 2 of pStatus into tNow
    put item 3 of pStatus into tEnd

    if the visible of sb "Progress" = false then
      -- hasn't started yet
      set the endValue of  sb "Progress" to tEnd
      set the thumbPos of  sb "Progress" to tNow
      show  sb "Progress"
    else
      set the thumbPos of  sb "Progress" to tNow
    end if

  else if pStatus = "error" then
    libURLSetStatusCallback
    set the dialogData to empty
    close this stack
   end if
end showStatus

which sets the range of the progress bar and shows it if not already
visible, otherwise it just moves the progress bar. If there is an
error, it gets out.

Back in my download script, I have the handler that gets called after
the download is finished. This is in the same script as the
downloadFile handler:

on picDownloaded pURL, pStatus
    libURLSetStatusCallback
    set the dialogData to URL pURL
    unload URL pURL
 end picDownloaded

This puts the newloy downloaded data into a variable (I'm using the
dialogData as it downloads from a separate dialog stack), and then
unloads the file so that it isn't held in two places of memory at
once.

At this point, you could have a "go to stack pURL" line.

Let me know if this doesn't work or if you have any further questions.

Cheers,
Sarah



More information about the use-livecode mailing list