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 |
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) |