56 |
56 |
57 self.__urlRole = Qt.UserRole |
57 self.__urlRole = Qt.UserRole |
58 self.__ignoreExpand = False |
58 self.__ignoreExpand = False |
59 self.intercept = False |
59 self.intercept = False |
60 |
60 |
61 self.__rx_dir = \ |
61 self.__rx_dir = QRegExp( |
62 QRegExp(r"""\s*([0-9]+)\s+(\w+)\s+((?:\w+\s+\d+|[0-9.]+\s+\w+)\s+[0-9:]+)\s+(.+)\s*""") |
62 r"""\s*([0-9]+)\s+(\w+)\s+""" |
63 self.__rx_file = \ |
63 r"""((?:\w+\s+\d+|[0-9.]+\s+\w+)\s+[0-9:]+)\s+(.+)\s*""") |
64 QRegExp(r"""\s*([0-9]+)\s+(\w+)\s+([0-9]+)\s((?:\w+\s+\d+|[0-9.]+\s+\w+)\s+[0-9:]+)\s+(.+)\s*""") |
64 self.__rx_file = QRegExp( |
|
65 r"""\s*([0-9]+)\s+(\w+)\s+([0-9]+)\s""" |
|
66 r"""((?:\w+\s+\d+|[0-9.]+\s+\w+)\s+[0-9:]+)\s+(.+)\s*""") |
65 |
67 |
66 def closeEvent(self, e): |
68 def closeEvent(self, e): |
67 """ |
69 """ |
68 Private slot implementing a close event handler. |
70 Private slot implementing a close event handler. |
69 |
71 |
161 procStarted = process.waitForStarted(5000) |
163 procStarted = process.waitForStarted(5000) |
162 if procStarted: |
164 if procStarted: |
163 finished = process.waitForFinished(30000) |
165 finished = process.waitForFinished(30000) |
164 if finished: |
166 if finished: |
165 if process.exitCode() == 0: |
167 if process.exitCode() == 0: |
166 output = str(process.readAllStandardOutput(), ioEncoding, 'replace') |
168 output = str(process.readAllStandardOutput(), ioEncoding, |
|
169 'replace') |
167 for line in output.splitlines(): |
170 for line in output.splitlines(): |
168 line = line.strip() |
171 line = line.strip() |
169 if line.startswith('<root>'): |
172 if line.startswith('<root>'): |
170 repoRoot = line.replace('<root>', '').replace('</root>', '') |
173 repoRoot = line.replace('<root>', '')\ |
|
174 .replace('</root>', '') |
171 break |
175 break |
172 else: |
176 else: |
173 error = str(process.readAllStandardError(), |
177 error = str(process.readAllStandardError(), |
174 Preferences.getSystem("IOEncoding"), |
178 Preferences.getSystem("IOEncoding"), |
175 'replace') |
179 'replace') |
207 repoRoot = self.__repoRoot(url) |
211 repoRoot = self.__repoRoot(url) |
208 if repoRoot is None: |
212 if repoRoot is None: |
209 self.__finish() |
213 self.__finish() |
210 return |
214 return |
211 self.__ignoreExpand = True |
215 self.__ignoreExpand = True |
212 itm = self.__generateItem(repoRoot, "", "", "", "", "dir", repoRoot) |
216 itm = self.__generateItem( |
|
217 repoRoot, "", "", "", "", "dir", repoRoot) |
213 itm.setExpanded(True) |
218 itm.setExpanded(True) |
214 self.parentItem = itm |
219 self.parentItem = itm |
215 urlPart = repoRoot |
220 urlPart = repoRoot |
216 for element in url.replace(repoRoot, "").split("/"): |
221 for element in url.replace(repoRoot, "").split("/"): |
217 if element: |
222 if element: |
218 urlPart = "{0}/{1}".format(urlPart, element) |
223 urlPart = "{0}/{1}".format(urlPart, element) |
219 itm = self.__generateItem(element, "", "", "", "", "dir", urlPart) |
224 itm = self.__generateItem( |
|
225 element, "", "", "", "", "dir", urlPart) |
220 itm.setExpanded(True) |
226 itm.setExpanded(True) |
221 self.parentItem = itm |
227 self.parentItem = itm |
222 itm.setExpanded(False) |
228 itm.setExpanded(False) |
223 self.__ignoreExpand = False |
229 self.__ignoreExpand = False |
224 self.__finish() |
230 self.__finish() |
341 else: |
347 else: |
342 return "" |
348 return "" |
343 |
349 |
344 def __finish(self): |
350 def __finish(self): |
345 """ |
351 """ |
346 Private slot called when the process finished or the user pressed the button. |
352 Private slot called when the process finished or the user pressed the |
|
353 button. |
347 """ |
354 """ |
348 if self.process is not None and \ |
355 if self.process is not None and \ |
349 self.process.state() != QProcess.NotRunning: |
356 self.process.state() != QProcess.NotRunning: |
350 self.process.terminate() |
357 self.process.terminate() |
351 QTimer.singleShot(2000, self.process.kill) |
358 QTimer.singleShot(2000, self.process.kill) |
398 name = self.__rx_file.cap(5).strip() |
405 name = self.__rx_file.cap(5).strip() |
399 nodekind = "file" |
406 nodekind = "file" |
400 else: |
407 else: |
401 continue |
408 continue |
402 url = "{0}/{1}".format(self.repoUrl, name) |
409 url = "{0}/{1}".format(self.repoUrl, name) |
403 self.__generateItem(name, revision, author, size, date, nodekind, url) |
410 self.__generateItem( |
|
411 name, revision, author, size, date, nodekind, url) |
404 |
412 |
405 def __readStderr(self): |
413 def __readStderr(self): |
406 """ |
414 """ |
407 Private slot to handle the readyReadStandardError signal. |
415 Private slot to handle the readyReadStandardError signal. |
408 |
416 |