--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/RefactoringRope/RopeProgressDialog.py Thu Sep 14 19:39:11 2017 +0200 @@ -0,0 +1,67 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2017 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a TaskHandle class with a progress dialog. +""" + +from __future__ import unicode_literals + +from PyQt5.QtCore import QCoreApplication +from PyQt5.QtWidgets import QLabel + +from E5Gui.E5ProgressDialog import E5ProgressDialog + + +class RopeProgressDialog(E5ProgressDialog): + """ + Class implementing TaskHandle with a progress dialog. + """ + def __init__(self, server, title, interruptable=True, parent=None): + """ + Constructor + + @param server reference to the JSON server + @type JsonServer + @param title title for the dialog + @type str + @param interruptable flag indicating, that the task may be + interrupted + @type bool + @param parent reference to the parent widget + @type QWidget + """ + if interruptable: + cancelLabel = self.tr("Interrupt") + else: + cancelLabel = "" + barFormat = self.tr("%v/%m files") + super(RopeProgressDialog, self).__init__("", cancelLabel, 0, 1, + barFormat, parent) + label = QLabel("") + label.setWordWrap(True) + self.setLabel(label) + self.setWindowTitle(self.tr("eric6 - {0}").format(title)) + + self.__server = server + + def updateProgress(self, params): + """ + Public slot to handle the task progress. + + @param params dictionary containing the data to be set + @type dict + """ + if params: + self.setLabelText(params["Text"]) + if "Maximum" in params: + # these are always sent together + self.setMaximum(params["Maximum"]) + self.setValue(params["Value"]) + + QCoreApplication.processEvents() + + if self.wasCanceled(): + self.__server.sendJson("AbortAction", {})