36 AuthorColumn = 3 |
36 AuthorColumn = 3 |
37 DateColumn = 4 |
37 DateColumn = 4 |
38 MessageColumn = 5 |
38 MessageColumn = 5 |
39 TagsColumn = 6 |
39 TagsColumn = 6 |
40 |
40 |
41 def __init__(self, vcs, parent = None): |
41 def __init__(self, vcs, mode = "log", parent = None): |
42 """ |
42 """ |
43 Constructor |
43 Constructor |
44 |
44 |
45 @param vcs reference to the vcs object |
45 @param vcs reference to the vcs object |
|
46 @param mode mode of the dialog (string; one of log, incoming, outgoing) |
46 @param parent parent widget (QWidget) |
47 @param parent parent widget (QWidget) |
47 """ |
48 """ |
48 QDialog.__init__(self, parent) |
49 QDialog.__init__(self, parent) |
49 self.setupUi(self) |
50 self.setupUi(self) |
50 |
51 |
53 |
54 |
54 self.filesTree.headerItem().setText(self.filesTree.columnCount(), "") |
55 self.filesTree.headerItem().setText(self.filesTree.columnCount(), "") |
55 self.filesTree.header().setSortIndicator(0, Qt.AscendingOrder) |
56 self.filesTree.header().setSortIndicator(0, Qt.AscendingOrder) |
56 |
57 |
57 self.vcs = vcs |
58 self.vcs = vcs |
|
59 if mode in ("log", "incoming", "outgoing"): |
|
60 self.mode = mode |
|
61 else: |
|
62 self.mode = "log" |
58 |
63 |
59 self.__maxDate = QDate() |
64 self.__maxDate = QDate() |
60 self.__minDate = QDate() |
65 self.__minDate = QDate() |
61 self.__filterLogsEnabled = True |
66 self.__filterLogsEnabled = True |
62 |
67 |
369 self.errors.clear() |
374 self.errors.clear() |
370 |
375 |
371 self.inputGroup.show() |
376 self.inputGroup.show() |
372 |
377 |
373 args = [] |
378 args = [] |
374 args.append('log') |
379 args.append(self.mode) |
375 self.vcs.addArguments(args, self.vcs.options['global']) |
380 self.vcs.addArguments(args, self.vcs.options['global']) |
376 self.vcs.addArguments(args, self.vcs.options['log']) |
381 self.vcs.addArguments(args, self.vcs.options['log']) |
377 args.append('--verbose') |
382 args.append('--verbose') |
378 args.append('--limit') |
383 args.append('--limit') |
379 args.append(str(self.limitSpinBox.value())) |
384 args.append(str(self.limitSpinBox.value())) |
|
385 if self.mode in ("incoming", "outgoing"): |
|
386 args.append("--newest-first") |
380 if startRev is not None: |
387 if startRev is not None: |
381 args.append('--rev') |
388 args.append('--rev') |
382 args.append('{0}:0'.format(startRev)) |
389 args.append('{0}:0'.format(startRev)) |
383 if not self.stopCheckBox.isChecked(): |
390 if not self.stopCheckBox.isChecked(): |
384 args.append('--follow') |
391 args.append('--follow') |
470 Private method to process the buffered output of the svn log command. |
477 Private method to process the buffered output of the svn log command. |
471 """ |
478 """ |
472 noEntries = 0 |
479 noEntries = 0 |
473 log = {"message" : []} |
480 log = {"message" : []} |
474 changedPaths = [] |
481 changedPaths = [] |
|
482 initialText = True |
475 for s in self.buf: |
483 for s in self.buf: |
476 if s != "@@@\n": |
484 if s != "@@@\n": |
477 try: |
485 try: |
478 key, value = s.split("|", 1) |
486 key, value = s.split("|", 1) |
479 except ValueError: |
487 except ValueError: |
480 key = "" |
488 key = "" |
481 value = s |
489 value = s |
482 if key == "change": |
490 if key == "change": |
|
491 initialText = False |
483 log["revision"] = value.strip() |
492 log["revision"] = value.strip() |
484 elif key == "user": |
493 elif key == "user": |
485 log["author"] = value.strip() |
494 log["author"] = value.strip() |
486 elif key == "parents": |
495 elif key == "parents": |
487 log["parents"] = \ |
496 log["parents"] = \ |
517 else: |
526 else: |
518 log["branches"] = ["default"] |
527 log["branches"] = ["default"] |
519 elif key == "tags": |
528 elif key == "tags": |
520 log["tags"] = value.strip().split() |
529 log["tags"] = value.strip().split() |
521 else: |
530 else: |
|
531 if initialText: |
|
532 continue |
522 if value.strip(): |
533 if value.strip(): |
523 log["message"].append(value.strip()) |
534 log["message"].append(value.strip()) |
524 else: |
535 else: |
525 if len(log) > 1: |
536 if len(log) > 1: |
526 self.__generateLogItem(log["author"], log["date"], |
537 self.__generateLogItem(log["author"], log["date"], |