# :stopdoc:
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
#
# This software is released under the MIT license.
# :startdoc:
module Wx
class ProgressDialog
# Updates the dialog, setting the progress bar to the new value and updating the message if new one is specified.
#
# Returns false
if the "Cancel" button has been pressed, true
if neither "Cancel" nor
# "Skip" has been pressed and :skipped
if "Skip" has been pressed.
#
# If false is returned, the application can either immediately destroy the dialog or ask the user for the confirmation
# and if the abort is not confirmed the dialog may be resumed with #resume method.
#
# If value is the maximum value for the dialog, the behaviour of the function depends on whether Wx::PD_AUTO_HIDE was
# used when the dialog was created. If it was, the dialog is hidden and the function returns immediately. If it was
# not, the dialog becomes a modal dialog and waits for the user to dismiss it, meaning that this function does not
# return until this happens.
#
# Notice that if newmsg is longer than the currently shown message, the dialog will be automatically made wider to
# account for it. However if the new message is shorter than the previous one, the dialog doesn't shrink back to
# avoid constant resizes if the message is changed often. To do this and fit the dialog to its current contents you
# may call fit explicitly. An alternative would be to keep the number of lines of text constant in order to avoid
# jarring dialog size changes. You may also want to make the initial message, specified when creating the dialog,
# wide enough to avoid having to resize the dialog later, e.g. by appending a long string of unbreakable spaces
# (wxString(L'\u00a0', 100)) to it.
# @param [Integer] value The new value of the progress meter. It should be less than or equal to the maximum value given to the constructor.
# @param [String] newmsg The new messages for the progress dialog text, if it is empty (which is the default) the message is not changed.
# @return [Boolean,:skipped]
def update(value, newmsg = '') end
# Like #update but makes the gauge control run in indeterminate mode.
#
# In indeterminate mode the remaining and the estimated time labels (if present) are set to "Unknown" or to newmsg
# (if it's non-empty). Each call to this function moves the progress bar a bit to indicate that some progress was done.
# @param [String] newmsg
# @return [Boolean,:skipped]
def pulse(newmsg = '') end
end
end