1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
# (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
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.
# ------------------------------------------------------------------------
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.
"""
def change_message(self, message):
""" Change the displayed message in the progress dialog
Parameters
----------
message : str or unicode
The new message to display.
"""
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.
# ------------------------------------------------------------------------
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.
# ------------------------------------------------------------------------
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()
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
|