Source code for camelot.view.action_steps.update_progress

#  ============================================================================
#
#  Copyright (C) 2007-2013 Conceptive Engineering bvba. All rights reserved.
#  www.conceptive.be / info@conceptive.be
#
#  This file is part of the Camelot Library.
#
#  This file may be used under the terms of the GNU General Public
#  License version 2.0 as published by the Free Software Foundation
#  and appearing in the file license.txt included in the packaging of
#  this file.  Please review this information to ensure GNU
#  General Public Licensing requirements will be met.
#
#  If you are unsure which license is appropriate for your use, please
#  visit www.python-camelot.com or contact info@conceptive.be
#
#  This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
#  WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
#  For use of this library in commercial applications, please contact
#  info@conceptive.be
#
#  ============================================================================

from camelot.admin.action import ActionStep
from camelot.core.exception import CancelRequest

[docs]class UpdateProgress( ActionStep ): """ Inform the user about the progress the application is making while executing an action. This ActionStep is not blocking. So it can be used inside transactions and will result in a minimum of delay when yielded. Each time an object is yielded, the progress dialog will be updated. .. image:: /_static/controls/progress_dialog.png :param value: the current step :param maximum: the maximum number of steps that will be executed. set it to 0 to display a busy indicator instead of a progres bar :param text: the text to be displayed inside the progres bar :param detail: the text to be displayed below the progres bar, this text is appended to the text already there :param clear_details: clear the details text already there before putting the new detail text. """ blocking = False def __init__( self, value=0, maximum=0, text=None, detail=None, clear_details=False ): super(UpdateProgress, self).__init__() self._value = value self._maximum = maximum self._text = text self._detail = detail self._clear_details = clear_details def __unicode__( self ): return u'Update Progress {0._value:03d}/{0._maximum:03d} {0._text}'.format( self )
[docs] def gui_run( self, gui_context ): """This method will update the progress dialog, if such dialog exists within the GuiContext :param gui_context: a :class:`camelot.admin.action.GuiContext` instance """ progress_dialog = gui_context.progress_dialog if progress_dialog: if progress_dialog.wasCanceled(): progress_dialog.reset() raise CancelRequest() progress_dialog.setMaximum( self._maximum ) progress_dialog.setValue( self._value ) if self._text != None: progress_dialog.setLabelText( unicode(self._text) )