eric6/Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py

changeset 7771
787a6b3f8c9f
parent 7628
f904d0eef264
child 7774
9eed155411f0
--- a/eric6/Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py	Fri Oct 09 17:19:29 2020 +0200
+++ b/eric6/Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py	Sat Oct 10 12:20:51 2020 +0200
@@ -14,11 +14,12 @@
 import pysvn
 
 from PyQt5.QtCore import QMutexLocker, QFileInfo, QDateTime, Qt, pyqtSlot
-from PyQt5.QtGui import QCursor, QTextCursor
-from PyQt5.QtWidgets import QWidget, QApplication, QDialogButtonBox
+from PyQt5.QtGui import QTextCursor
+from PyQt5.QtWidgets import QWidget, QDialogButtonBox
 
 from E5Gui.E5Application import e5App
 from E5Gui import E5MessageBox, E5FileDialog
+from E5Gui.E5OverrideCursor import E5OverrideCursor
 
 from .SvnDialogMixin import SvnDialogMixin
 from .Ui_SvnDiffDialog import Ui_SvnDiffDialog
@@ -138,8 +139,6 @@
         self._reset()
         self.errorGroup.hide()
         
-        QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
-        QApplication.processEvents()
         self.filename = fn
         
         self.contents.clear()
@@ -200,67 +199,68 @@
             dname, fname = self.vcs.splitPath(fn)
             fnames = [fname]
         
-        locker = QMutexLocker(self.vcs.vcsExecutionMutex)
-        cwd = os.getcwd()
-        os.chdir(dname)
-        try:
-            dname = e5App().getObject('Project').getRelativePath(dname)
-            if dname:
-                dname += "/"
-            for name in fnames:
-                self.__showError(
-                    self.tr("Processing file '{0}'...\n").format(name))
-                if urls is not None:
-                    url1 = "{0}/{1}{2}".format(urls[0], dname, name)
-                    url2 = "{0}/{1}{2}".format(urls[1], dname, name)
-                    if summary:
-                        diff_summary = self.client.diff_summarize(
-                            url1, revision1=rev1,
-                            url_or_path2=url2, revision2=rev2,
-                            recurse=recurse)
-                        diff_list = []
-                        for diff_sum in diff_summary:
-                            path = diff_sum['path']
-                            diff_list.append("{0} {1}".format(
-                                self.__getDiffSummaryKind(
-                                    diff_sum['summarize_kind']),
-                                path))
-                        diffText = os.linesep.join(diff_list)
+        with E5OverrideCursor():
+            locker = QMutexLocker(self.vcs.vcsExecutionMutex)
+            cwd = os.getcwd()
+            os.chdir(dname)
+            try:
+                dname = e5App().getObject('Project').getRelativePath(dname)
+                if dname:
+                    dname += "/"
+                for name in fnames:
+                    self.__showError(
+                        self.tr("Processing file '{0}'...\n").format(name))
+                    if urls is not None:
+                        url1 = "{0}/{1}{2}".format(urls[0], dname, name)
+                        url2 = "{0}/{1}{2}".format(urls[1], dname, name)
+                        if summary:
+                            diff_summary = self.client.diff_summarize(
+                                url1, revision1=rev1,
+                                url_or_path2=url2, revision2=rev2,
+                                recurse=recurse)
+                            diff_list = []
+                            for diff_sum in diff_summary:
+                                path = diff_sum['path']
+                                diff_list.append("{0} {1}".format(
+                                    self.__getDiffSummaryKind(
+                                        diff_sum['summarize_kind']),
+                                    path))
+                            diffText = os.linesep.join(diff_list)
+                        else:
+                            diffText = self.client.diff(
+                                tmpdir,
+                                url1, revision1=rev1,
+                                url_or_path2=url2, revision2=rev2,
+                                recurse=recurse)
                     else:
-                        diffText = self.client.diff(
-                            tmpdir,
-                            url1, revision1=rev1,
-                            url_or_path2=url2, revision2=rev2,
-                            recurse=recurse)
-                else:
-                    if pegRev is not None:
-                        diffText = self.client.diff_peg(
-                            tmpdir, name,
-                            peg_revision=self.__getVersionArg(pegRev),
-                            revision_start=rev1, revision_end=rev2,
-                            recurse=recurse)
-                    else:
-                        diffText = self.client.diff(
-                            tmpdir, name,
-                            revision1=rev1, revision2=rev2, recurse=recurse)
-                counter = 0
-                for line in diffText.splitlines():
-                    if line.startswith("--- ") or line.startswith("+++ "):
-                        self.__processFileLine(line)
-                    
-                    self.__appendText("{0}{1}".format(line, os.linesep))
-                    counter += 1
-                    if counter == 30:
-                        # check for cancel every 30 lines
-                        counter = 0
-                        if self._clientCancelCallback():
-                            break
-                if self._clientCancelCallback():
-                    break
-        except pysvn.ClientError as e:
-            self.__showError(e.args[0])
-        locker.unlock()
-        os.chdir(cwd)
+                        if pegRev is not None:
+                            diffText = self.client.diff_peg(
+                                tmpdir, name,
+                                peg_revision=self.__getVersionArg(pegRev),
+                                revision_start=rev1, revision_end=rev2,
+                                recurse=recurse)
+                        else:
+                            diffText = self.client.diff(
+                                tmpdir, name,
+                                revision1=rev1, revision2=rev2, recurse=recurse)
+                    counter = 0
+                    for line in diffText.splitlines():
+                        if line.startswith("--- ") or line.startswith("+++ "):
+                            self.__processFileLine(line)
+                        
+                        self.__appendText("{0}{1}".format(line, os.linesep))
+                        counter += 1
+                        if counter == 30:
+                            # check for cancel every 30 lines
+                            counter = 0
+                            if self._clientCancelCallback():
+                                break
+                    if self._clientCancelCallback():
+                        break
+            except pysvn.ClientError as e:
+                self.__showError(e.args[0])
+            locker.unlock()
+            os.chdir(cwd)
         self.__finish()
         
         if self.paras == 0:
@@ -309,8 +309,6 @@
         """
         Private slot called when the user pressed the button.
         """
-        QApplication.restoreOverrideCursor()
-        
         self.refreshButton.setEnabled(True)
         self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(False)
         self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True)

eric ide

mercurial