eric6/Plugins/VcsPlugins/vcsGit/GitDiffGenerator.py

changeset 7771
787a6b3f8c9f
parent 7628
f904d0eef264
child 7779
757334671130
equal deleted inserted replaced
7770:49f3377aebf1 7771:787a6b3f8c9f
11 11
12 import os 12 import os
13 13
14 from PyQt5.QtCore import pyqtSignal, QProcess, QTimer, QObject 14 from PyQt5.QtCore import pyqtSignal, QProcess, QTimer, QObject
15 15
16 from E5Gui.E5OverrideCursor import E5OverrideCursorProcess
17
16 import Preferences 18 import Preferences
17 19
18 20
19 class GitDiffGenerator(QObject): 21 class GitDiffGenerator(QObject):
20 """ 22 """
33 """ 35 """
34 super(GitDiffGenerator, self).__init__(parent) 36 super(GitDiffGenerator, self).__init__(parent)
35 37
36 self.vcs = vcs 38 self.vcs = vcs
37 39
38 self.process = QProcess() 40 self.__process = E5OverrideCursorProcess()
39 self.process.finished.connect(self.__procFinished) 41 self.__process.finished.connect(self.__procFinished)
40 self.process.readyReadStandardOutput.connect( 42 self.__process.readyReadStandardOutput.connect(
41 lambda: self.__readStdout(self.process)) 43 lambda: self.__readStdout(self.__process))
42 self.process.readyReadStandardError.connect( 44 self.__process.readyReadStandardError.connect(
43 lambda: self.__readStderr(self.process)) 45 lambda: self.__readStderr(self.__process))
44 46
45 self.process2 = QProcess() 47 self.__process2 = E5OverrideCursorProcess()
46 self.process2.finished.connect(self.__procFinished) 48 self.__process2.finished.connect(self.__procFinished)
47 self.process2.readyReadStandardOutput.connect( 49 self.__process2.readyReadStandardOutput.connect(
48 lambda: self.__readStdout(self.process2)) 50 lambda: self.__readStdout(self.__process2))
49 self.process2.readyReadStandardError.connect( 51 self.__process2.readyReadStandardError.connect(
50 lambda: self.__readStderr(self.process2)) 52 lambda: self.__readStderr(self.__process2))
51 53
52 def stopProcesses(self): 54 def stopProcesses(self):
53 """ 55 """
54 Public slot to stop the diff processes. 56 Public slot to stop the diff processes.
55 """ 57 """
56 for process in [self.process, self.process2]: 58 for process in [self.__process, self.__process2]:
57 if ( 59 if (
58 process is not None and 60 process is not None and
59 process.state() != QProcess.NotRunning 61 process.state() != QProcess.NotRunning
60 ): 62 ):
61 process.terminate() 63 process.terminate()
137 while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)): 139 while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)):
138 repodir = os.path.dirname(repodir) 140 repodir = os.path.dirname(repodir)
139 if os.path.splitdrive(repodir)[1] == os.sep: 141 if os.path.splitdrive(repodir)[1] == os.sep:
140 return False 142 return False
141 143
142 self.process.kill() 144 self.__process.kill()
143 self.process.setWorkingDirectory(repodir) 145 self.__process.setWorkingDirectory(repodir)
144 self.process.start('git', args) 146 self.__process.start('git', args)
145 procStarted = self.process.waitForStarted(5000) 147 procStarted = self.__process.waitForStarted(5000)
146 if not procStarted: 148 if not procStarted:
147 return False 149 return False
148 150
149 if diffMode == "work2stage2repo": 151 if diffMode == "work2stage2repo":
150 self.process2.kill() 152 self.__process2.kill()
151 self.process2.setWorkingDirectory(repodir) 153 self.__process2.setWorkingDirectory(repodir)
152 self.process2.start('git', args2) 154 self.__process2.start('git', args2)
153 procStarted = self.process2.waitForStarted(5000) 155 procStarted = self.__process2.waitForStarted(5000)
154 if not procStarted: 156 if not procStarted:
155 return False 157 return False
156 158
157 return True 159 return True
158 160
162 164
163 @param exitCode exit code of the process (integer) 165 @param exitCode exit code of the process (integer)
164 @param exitStatus exit status of the process (QProcess.ExitStatus) 166 @param exitStatus exit status of the process (QProcess.ExitStatus)
165 """ 167 """
166 if ( 168 if (
167 self.process.state() == QProcess.NotRunning and 169 self.__process.state() == QProcess.NotRunning and
168 self.process2.state() == QProcess.NotRunning 170 self.__process2.state() == QProcess.NotRunning
169 ): 171 ):
170 self.finished.emit() 172 self.finished.emit()
171 173
172 def getResult(self): 174 def getResult(self):
173 """ 175 """
224 @param process reference to the process providing output 226 @param process reference to the process providing output
225 @type QProcess 227 @type QProcess
226 """ 228 """
227 process.setReadChannel(QProcess.StandardOutput) 229 process.setReadChannel(QProcess.StandardOutput)
228 230
229 isTopDiff = process == self.process 231 isTopDiff = process == self.__process
230 232
231 while process.canReadLine(): 233 while process.canReadLine():
232 line = str(process.readLine(), self.__ioEncoding, 234 line = str(process.readLine(), self.__ioEncoding,
233 'replace') 235 'replace')
234 self.__processLine(line, isTopDiff) 236 self.__processLine(line, isTopDiff)

eric ide

mercurial