RefactoringRope/RopeProgressDialog.py

branch
server_client_variant
changeset 164
121d426d4ed7
child 165
ea41742015af
--- /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", {})

eric ide

mercurial