Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py

changeset 1605
899cb1241de5
parent 1532
df0c2a045c72
child 1608
b6390d242303
equal deleted inserted replaced
1603:78e467568df7 1605:899cb1241de5
36 Class implementing a dialog to browse the log history. 36 Class implementing a dialog to browse the log history.
37 """ 37 """
38 IconColumn = 0 38 IconColumn = 0
39 BranchColumn = 1 39 BranchColumn = 1
40 RevisionColumn = 2 40 RevisionColumn = 2
41 AuthorColumn = 3 41 PhaseColumn = 3
42 DateColumn = 4 42 AuthorColumn = 4
43 MessageColumn = 5 43 DateColumn = 5
44 TagsColumn = 6 44 MessageColumn = 6
45 TagsColumn = 7
45 46
46 def __init__(self, vcs, mode="log", bundle=None, parent=None): 47 def __init__(self, vcs, mode="log", bundle=None, parent=None):
47 """ 48 """
48 Constructor 49 Constructor
49 50
128 self.logTree.setIconSize( 129 self.logTree.setIconSize(
129 QSize(100 * self.__rowHeight, self.__rowHeight)) 130 QSize(100 * self.__rowHeight, self.__rowHeight))
130 if self.vcs.version >= (1, 8): 131 if self.vcs.version >= (1, 8):
131 self.logTree.headerItem().setText(self.logTree.columnCount(), 132 self.logTree.headerItem().setText(self.logTree.columnCount(),
132 self.trUtf8("Bookmarks")) 133 self.trUtf8("Bookmarks"))
134 if self.vcs.version < (2, 1):
135 self.logTree.setColumnHidden(self.PhaseColumn, True)
133 136
134 def __initData(self): 137 def __initData(self):
135 """ 138 """
136 Private method to (re-)initialize some data. 139 Private method to (re-)initialize some data.
137 """ 140 """
503 parts = line.split() 506 parts = line.split()
504 self.__closedBranchesRevs.append( 507 self.__closedBranchesRevs.append(
505 parts[-2].split(":", 1)[0]) 508 parts[-2].split(":", 1)[0])
506 509
507 def __generateLogItem(self, author, date, message, revision, changedPaths, 510 def __generateLogItem(self, author, date, message, revision, changedPaths,
508 parents, branches, tags, bookmarks=None): 511 parents, branches, tags, phase, bookmarks=None):
509 """ 512 """
510 Private method to generate a log tree entry. 513 Private method to generate a log tree entry.
511 514
512 @param author author info (string) 515 @param author author info (string)
513 @param date date info (string) 516 @param date date info (string)
535 msgtxt = "{0}...".format(msgtxt[:30]) 538 msgtxt = "{0}...".format(msgtxt[:30])
536 columnLabels = [ 539 columnLabels = [
537 "", 540 "",
538 branches[0] + closedStr, 541 branches[0] + closedStr,
539 "{0:>7}:{1}".format(rev, node), 542 "{0:>7}:{1}".format(rev, node),
543 phase,
540 author, 544 author,
541 date, 545 date,
542 msgtxt, 546 msgtxt,
543 ", ".join(tags), 547 ", ".join(tags),
544 ] 548 ]
635 not self.stopCheckBox.isChecked(): 639 not self.stopCheckBox.isChecked():
636 args.append('--follow') 640 args.append('--follow')
637 if self.commandMode == "log": 641 if self.commandMode == "log":
638 args.append('--copies') 642 args.append('--copies')
639 args.append('--style') 643 args.append('--style')
640 if self.vcs.version >= (1, 8): 644 if self.vcs.version >= (2, 1):
645 args.append(os.path.join(os.path.dirname(__file__),
646 "styles", "logBrowserBookmarkPhase.style"))
647 elif self.vcs.version >= (1, 8):
641 args.append(os.path.join(os.path.dirname(__file__), 648 args.append(os.path.join(os.path.dirname(__file__),
642 "styles", "logBrowserBookmark.style")) 649 "styles", "logBrowserBookmark.style"))
643 else: 650 else:
644 args.append(os.path.join(os.path.dirname(__file__), 651 args.append(os.path.join(os.path.dirname(__file__),
645 "styles", "logBrowser.style")) 652 "styles", "logBrowser.style"))
749 def __processBuffer(self): 756 def __processBuffer(self):
750 """ 757 """
751 Private method to process the buffered output of the hg log command. 758 Private method to process the buffered output of the hg log command.
752 """ 759 """
753 noEntries = 0 760 noEntries = 0
754 log = {"message": [], "bookmarks": None} 761 log = {"message": [], "bookmarks": None, "phase": ""}
755 changedPaths = [] 762 changedPaths = []
756 initialText = True 763 initialText = True
757 fileCopies = {} 764 fileCopies = {}
758 for s in self.buf: 765 for s in self.buf:
759 if s != "@@@\n": 766 if s != "@@@\n":
818 log["branches"] = ["default"] 825 log["branches"] = ["default"]
819 elif key == "tags": 826 elif key == "tags":
820 log["tags"] = value.strip().split(", ") 827 log["tags"] = value.strip().split(", ")
821 elif key == "bookmarks": 828 elif key == "bookmarks":
822 log["bookmarks"] = value.strip().split(", ") 829 log["bookmarks"] = value.strip().split(", ")
830 elif key == "phase":
831 log["phase"] = value.strip()
823 else: 832 else:
824 if initialText: 833 if initialText:
825 continue 834 continue
826 if value.strip(): 835 if value.strip():
827 log["message"].append(value.strip()) 836 log["message"].append(value.strip())
828 else: 837 else:
829 if len(log) > 1: 838 if len(log) > 1:
830 self.__generateLogItem(log["author"], log["date"], 839 self.__generateLogItem(log["author"], log["date"],
831 log["message"], log["revision"], changedPaths, 840 log["message"], log["revision"], changedPaths,
832 log["parents"], log["branches"], log["tags"], 841 log["parents"], log["branches"], log["tags"],
833 log["bookmarks"]) 842 log["phase"], log["bookmarks"])
834 dt = QDate.fromString(log["date"], Qt.ISODate) 843 dt = QDate.fromString(log["date"], Qt.ISODate)
835 if not self.__maxDate.isValid() and \ 844 if not self.__maxDate.isValid() and \
836 not self.__minDate.isValid(): 845 not self.__minDate.isValid():
837 self.__maxDate = dt 846 self.__maxDate = dt
838 self.__minDate = dt 847 self.__minDate = dt
840 if self.__maxDate < dt: 849 if self.__maxDate < dt:
841 self.__maxDate = dt 850 self.__maxDate = dt
842 if self.__minDate > dt: 851 if self.__minDate > dt:
843 self.__minDate = dt 852 self.__minDate = dt
844 noEntries += 1 853 noEntries += 1
845 log = {"message": [], "bookmarks": None} 854 log = {"message": [], "bookmarks": None, "phase": ""}
846 changedPaths = [] 855 changedPaths = []
847 fileCopies = {} 856 fileCopies = {}
848 857
849 self.__resizeColumnsLog() 858 self.__resizeColumnsLog()
850 859

eric ide

mercurial