Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py

changeset 181
4af57f97c1bc
parent 180
40ac468c2558
child 185
f002e13c9aed
equal deleted inserted replaced
180:40ac468c2558 181:4af57f97c1bc
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"],

eric ide

mercurial