Source code for pyface.i_progress_dialog

# (C) Copyright 2005-2023 Enthought, Inc., Austin, TX
# All rights reserved.
#
# This software is provided without warranty under the terms of the BSD
# license included in LICENSE.txt and may be redistributed only under
# the conditions described in the aforementioned license. The license
# is also available online at http://www.enthought.com/licenses/BSD.txt
#
# Thanks for using Enthought open source!

"""The interface for a dialog that allows the user to display progress of an
operation."""


from traits.api import Any, Bool, HasTraits, Int, Str


from pyface.i_dialog import IDialog


[docs]class IProgressDialog(IDialog): """ A simple progress dialog window which allows itself to be updated """ # 'IProgressDialog' interface ---------------------------------# #: The message to display in the dialog message = Str() #: The minimum progress value min = Int() #: The maximum progress value max = Int() #: The margin around the progress bar margin = Int(5) #: Whether the operation can be cancelled can_cancel = Bool(False) #: Whether to show progress times show_time = Bool(False) #: Whether to show progress percent show_percent = Bool(False) #: Label for the 'cancel' button cancel_button_label = Str() # ------------------------------------------------------------------------ # 'IProgressDialog' interface. # ------------------------------------------------------------------------
[docs] def update(self, value): """ Update the progress bar to the desired value If the value is >= the maximum and the progress bar is not contained in another panel the parent window will be closed. Parameters ---------- value : The progress value to set. """
[docs] def change_message(self, message): """ Change the displayed message in the progress dialog Parameters ---------- message : str or unicode The new message to display. """
[docs]class MProgressDialog(HasTraits): """ The mixin class that contains common code for toolkit specific implementations of the IProgressDialog interface. Implements: update() """ #: The progress bar toolkit object # XXX why not the control? progress_bar = Any() # ------------------------------------------------------------------------ # 'IWindow' interface. # ------------------------------------------------------------------------
[docs] def open(self): """ Open the dialog """ if self.max < self.min: msg = "Dialog min ({}) is greater than dialog max ({})." raise AttributeError(msg.format(self.min, self.max)) super().open()
# ------------------------------------------------------------------------ # 'IProgressDialog' interface. # ------------------------------------------------------------------------
[docs] def update(self, value): """ Update the progress bar to the desired value If the value is >= the maximum and the progress bar is not contained in another panel the parent window will be closed. Parameters ---------- value : The progress value to set. """ if self.progress_bar is not None: self.progress_bar.update(value) if value >= self.max: self.close()
[docs] def change_message(self, message): """ Change the displayed message in the progress dialog Parameters ---------- message : str or unicode The new message to display. """ self.message = message