TrueUpdate 3.9

Miscellaneous

Miscellaneous

This is the first topic This is the last topic  

Miscellaneous

This is the first topic This is the last topic  

ContentsCallback FunctionsExample

Create a Custom Callback Function

If you have an action requiring a status dialog, but the standard status dialog (StatusDlg) is not sufficient, it is possible to create a custom callback function for those actions requiring one.

As an example, we will use a custom callback function to show the progress of a file download:

Add the following code to the Client Script:

 

--ShowStatusWindow shows the status window, and sets the title

function ShowStatusWindow()

   -- Show the Status Dialog

   StatusDlg.Show(MB_ICONINFORMATION, false);

   -- Show the cancel button

   StatusDlg.ShowCancelButton(true, "Stop Download");

end

 

 

 

--DownloadStatus is the callback function to be used.

function DownloadStatus (BytesRead, FileSize, TransferRate, SecondsLeft, SecondsLeftFormat, Message)

   -- Set the status meter's range

   StatusDlg.SetMeterRange(0, Math.Floor(FileSize/1024));

   -- Set the meter position

   StatusDlg.SetMeterPos(Math.Floor(BytesRead/1024));

 

   -- Check if the cancel button was pressed

   if StatusDlg.IsCancelled() then

       -- Cancel button was pressed.  Hide status dialog and terminate download

       StatusDlg.Hide();

       return false;

   else

       -- Cancel button was not pressed, determine message to be displayed

       if FileSize == 0 then

           -- Display 'size unknown' message

           StatusDlg.SetStatusText("Size Unknown (" .. Math.Floor(BytesRead/1024) .. "kb downloaded so far)");

       elseif FileSize > 0 then

           -- Display 'downloaded of total' message

           StatusDlg.SetStatusText("Downloaded " .. Math.Floor(BytesRead/1024) .. " kb of " .. Math.Floor(FileSize/1024) .. " kb");

       end

 

       -- Determine if end of download was reached:

       --   Message will = "", the end of the download is a 'busy' state

       --   BytesRead will be > 0, because more than 1 byte will have been transferred

       --   BytesRead will = FileSize, unless FileSize is unknown (0)

       if (Message == "") and (BytesRead > 0) and (BytesRead == FileSize or FileSize == 0) then

          -- The download has completed, hide the status dialog and display complete message

          StatusDlg.Hide();

          Dialog.Message("Download Complete", Math.Floor(BytesRead/1024) .. " kb have been downloaded");

          return false;

       else

           -- The download has not ended, continue to download

           return true;

       end

   end

end

 

 

 

 

-- Call the ShowStatusWindow() function

ShowStatusWindow();

 

-- Download the file using a callback function

HTTP.Download("http://www.yourdomain.com/download_folder/file.ext", "c:\\file.ext", MODE_BINARY, 20, 80, nil, nil, DownloadStatus);

 

Note:  ShowStatusWindow() shows the status window and sets the title.  DownloadStatus() is the custom callback function, and is called by HTTP.Download.


Learn More: Indigo Rose Software - TrueUpdate - Buy Now - Contact Us