eric6/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py

branch
maintenance
changeset 8043
0acf98cd089a
parent 7924
8a96736d465e
parent 7971
ff2971513d6d
child 8176
31965986ecd1
equal deleted inserted replaced
7991:866adc8c315b 8043:0acf98cd089a
592 592
593 self.__revs = nextRevs 593 self.__revs = nextRevs
594 return col, color, edges 594 return col, color, edges
595 595
596 def __generateIcon(self, column, color, bottomedges, topedges, dotColor, 596 def __generateIcon(self, column, color, bottomedges, topedges, dotColor,
597 currentRev, closed, isDraft): 597 currentRev, closed, isPushableDraft):
598 """ 598 """
599 Private method to generate an icon containing the revision tree for the 599 Private method to generate an icon containing the revision tree for the
600 given data. 600 given data.
601 601
602 @param column column index of the revision 602 @param column column index of the revision
613 current revision 613 current revision
614 @type bool 614 @type bool
615 @param closed flag indicating to draw an icon for a closed 615 @param closed flag indicating to draw an icon for a closed
616 branch 616 branch
617 @type bool 617 @type bool
618 @param isDraft flag indicating an entry of phase 'draft' 618 @param isPushableDraft flag indicating an entry of phase 'draft',
619 that can by pushed
619 @type bool 620 @type bool
620 @return icon for the node 621 @return icon for the node
621 @rtype QIcon 622 @rtype QIcon
622 """ 623 """
623 def col2x(col, radius): 624 def col2x(col, radius):
690 QPoint(dot_x + offset, dot_y), 691 QPoint(dot_x + offset, dot_y),
691 QPoint(dot_x, dot_y + 2 * offset), 692 QPoint(dot_x, dot_y + 2 * offset),
692 QPoint(dot_x + 2 * offset, dot_y + 2 * offset) 693 QPoint(dot_x + 2 * offset, dot_y + 2 * offset)
693 ) 694 )
694 else: 695 else:
695 if isDraft: 696 if isPushableDraft:
696 # 'draft' phase: draw an up arrow like outgoing 697 # 'draft' phase: draw an up arrow like outgoing,
698 # if it can be pushed
697 offset = radius // 2 699 offset = radius // 2
698 painter.drawConvexPolygon( 700 painter.drawConvexPolygon(
699 QPoint(dot_x + offset, dot_y), 701 QPoint(dot_x + offset, dot_y),
700 QPoint(dot_x, dot_y + 2 * offset), 702 QPoint(dot_x, dot_y + 2 * offset),
701 QPoint(dot_x + 2 * offset, dot_y + 2 * offset) 703 QPoint(dot_x + 2 * offset, dot_y + 2 * offset)
857 859
858 return res 860 return res
859 861
860 def __generateLogItem(self, author, date, message, revision, changedPaths, 862 def __generateLogItem(self, author, date, message, revision, changedPaths,
861 parents, branches, tags, phase, bookmarks, 863 parents, branches, tags, phase, bookmarks,
862 latestTag): 864 latestTag, canPush=False):
863 """ 865 """
864 Private method to generate a log tree entry. 866 Private method to generate a log tree entry.
865 867
866 @param author author info (string) 868 @param author author info
867 @param date date info (string) 869 @type str
868 @param message text of the log message (list of strings) 870 @param date date info
869 @param revision revision info (string) 871 @type str
872 @param message text of the log message
873 @type list of str
874 @param revision revision info
875 @type str
870 @param changedPaths list of dictionary objects containing 876 @param changedPaths list of dictionary objects containing
871 info about the changed files/directories 877 info about the changed files/directories
872 @param parents list of parent revisions (list of integers) 878 @type dict
873 @param branches list of branches (list of strings) 879 @param parents list of parent revisions
874 @param tags list of tags (string) 880 @type list of int
875 @param phase phase of the entry (string) 881 @param branches list of branches
876 @param bookmarks list of bookmarks (string) 882 @type list of str
883 @param tags list of tags
884 @type str
885 @param phase phase of the entry
886 @type str
887 @param bookmarks list of bookmarks
888 @type str
877 @param latestTag the latest tag(s) reachable from the changeset 889 @param latestTag the latest tag(s) reachable from the changeset
878 (list of strings) 890 @type list of str
879 @return reference to the generated item (QTreeWidgetItem) 891 @param canPush flag indicating that changesets can be pushed
892 @type bool
893 @return reference to the generated item
894 @rtype QTreeWidgetItem
880 """ 895 """
881 logMessageColumnWidth = self.vcs.getPlugin().getPreferences( 896 logMessageColumnWidth = self.vcs.getPlugin().getPreferences(
882 "LogMessageColumnWidth") 897 "LogMessageColumnWidth")
883 msgtxt = "" 898 msgtxt = ""
884 for line in message: 899 for line in message:
943 958
944 icon = self.__generateIcon(column, color, edges, topedges, 959 icon = self.__generateIcon(column, color, edges, topedges,
945 QColor(self.__branchColor(branches[0])), 960 QColor(self.__branchColor(branches[0])),
946 rev in self.__projectWorkingDirParents, 961 rev in self.__projectWorkingDirParents,
947 rev in self.__closedBranchesRevs, 962 rev in self.__closedBranchesRevs,
948 phase == "draft") 963 phase == "draft" and canPush)
949 itm.setIcon(0, icon) 964 itm.setIcon(0, icon)
950 965
951 try: 966 try:
952 self.__lastRev = int(revision.split(":")[0]) 967 self.__lastRev = int(revision.split(":")[0])
953 except ValueError: 968 except ValueError:
958 def __getLogEntries(self, startRev=None, noEntries=0): 973 def __getLogEntries(self, startRev=None, noEntries=0):
959 """ 974 """
960 Private method to retrieve log entries from the repository. 975 Private method to retrieve log entries from the repository.
961 976
962 @param startRev revision number to start from (integer, string) 977 @param startRev revision number to start from (integer, string)
963 @keyparam noEntries number of entries to get (0 = default) (int) 978 @param noEntries number of entries to get (0 = default) (int)
964 """ 979 """
965 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False) 980 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False)
966 self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(True) 981 self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(True)
967 self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True) 982 self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True)
968 QApplication.processEvents() 983 QApplication.processEvents()
989 if startRev is not None: 1004 if startRev is not None:
990 args.append('--rev') 1005 args.append('--rev')
991 args.append('{0}:0'.format(startRev)) 1006 args.append('{0}:0'.format(startRev))
992 if ( 1007 if (
993 not self.projectMode and 1008 not self.projectMode and
994 not self.fname == "." and
995 not self.stopCheckBox.isChecked() 1009 not self.stopCheckBox.isChecked()
996 ): 1010 ):
997 args.append('--follow') 1011 args.append('--follow')
998 if self.commandMode == "log": 1012 if self.commandMode == "log":
999 args.append('--copies') 1013 args.append('--copies')
1048 ): 1062 ):
1049 # no incoming changesets, just switch to log mode 1063 # no incoming changesets, just switch to log mode
1050 self.commandMode = "log" 1064 self.commandMode = "log"
1051 self.__finish() 1065 self.__finish()
1052 1066
1053 def start(self, fn, bundle=None, isFile=False, noEntries=0): 1067 def start(self, name=None, bundle=None, isFile=False, noEntries=0):
1054 """ 1068 """
1055 Public slot to start the hg log command. 1069 Public slot to start the hg log command.
1056 1070
1057 @param fn filename to show the log for (string) 1071 @param name file/directory name to show the log for
1058 @keyparam bundle name of a bundle file (string) 1072 @type str
1059 @keyparam isFile flag indicating log for a file is to be shown 1073 @param bundle name of a bundle file
1060 (boolean) 1074 @type str
1061 @keyparam noEntries number of entries to get (0 = default) (int) 1075 @param isFile flag indicating log for a file is to be shown
1076 @type bool
1077 @param noEntries number of entries to get (0 = default)
1078 @type int
1062 """ 1079 """
1063 self.__bundle = bundle 1080 self.__bundle = bundle
1064 self.__isFile = isFile 1081 self.__isFile = isFile
1065 1082
1066 if self.initialCommandMode == "full_log": 1083 if self.initialCommandMode == "full_log":
1077 self.errors.clear() 1094 self.errors.clear()
1078 QApplication.processEvents() 1095 QApplication.processEvents()
1079 1096
1080 self.__initData() 1097 self.__initData()
1081 1098
1082 self.__filename = fn 1099 self.__filename = name
1083 self.dname, self.fname = self.vcs.splitPath(fn) 1100
1084 1101 self.projectMode = name is None
1085 # find the root of the repo 1102 self.stopCheckBox.setDisabled(self.projectMode)
1086 self.repodir = self.dname
1087 while not os.path.isdir(os.path.join(self.repodir, self.vcs.adminDir)):
1088 self.repodir = os.path.dirname(self.repodir)
1089 if os.path.splitdrive(self.repodir)[1] == os.sep:
1090 return
1091
1092 self.projectMode = (self.fname == "." and self.dname == self.repodir)
1093 self.stopCheckBox.setDisabled(self.projectMode or self.fname == ".")
1094 self.activateWindow() 1103 self.activateWindow()
1095 self.raise_() 1104 self.raise_()
1096 1105
1097 self.logTree.clear() 1106 self.logTree.clear()
1098 self.__started = True 1107 self.__started = True
1135 noEntries = 0 1144 noEntries = 0
1136 log = {"message": [], "bookmarks": None, "phase": ""} 1145 log = {"message": [], "bookmarks": None, "phase": ""}
1137 changedPaths = [] 1146 changedPaths = []
1138 initialText = True 1147 initialText = True
1139 fileCopies = {} 1148 fileCopies = {}
1149 canPush = self.vcs.canPush()
1140 for s in self.buf: 1150 for s in self.buf:
1141 if s != "@@@\n": 1151 if s != "@@@\n":
1142 try: 1152 try:
1143 key, value = s.split("|", 1) 1153 key, value = s.split("|", 1)
1144 except ValueError: 1154 except ValueError:
1224 if len(log) > 1: 1234 if len(log) > 1:
1225 self.__generateLogItem( 1235 self.__generateLogItem(
1226 log["author"], log["date"], 1236 log["author"], log["date"],
1227 log["message"], log["revision"], changedPaths, 1237 log["message"], log["revision"], changedPaths,
1228 log["parents"], log["branches"], log["tags"], 1238 log["parents"], log["branches"], log["tags"],
1229 log["phase"], log["bookmarks"], log["latesttag"]) 1239 log["phase"], log["bookmarks"], log["latesttag"],
1240 canPush=canPush)
1230 dt = QDate.fromString(log["date"], Qt.ISODate) 1241 dt = QDate.fromString(log["date"], Qt.ISODate)
1231 if ( 1242 if (
1232 not self.__maxDate.isValid() and 1243 not self.__maxDate.isValid() and
1233 not self.__minDate.isValid() 1244 not self.__minDate.isValid()
1234 ): 1245 ):
1959 newPhase = self.phases["secret"] 1970 newPhase = self.phases["secret"]
1960 data = (revs, "s", True) 1971 data = (revs, "s", True)
1961 else: 1972 else:
1962 newPhase = self.phases["draft"] 1973 newPhase = self.phases["draft"]
1963 data = (revs, "d", False) 1974 data = (revs, "d", False)
1964 res = self.vcs.hgPhase(self.repodir, data) 1975 res = self.vcs.hgPhase(data)
1965 if res: 1976 if res:
1966 for itm in self.logTree.selectedItems(): 1977 for itm in self.logTree.selectedItems():
1967 itm.setText(self.PhaseColumn, newPhase) 1978 itm.setText(self.PhaseColumn, newPhase)
1968 1979
1969 @pyqtSlot() 1980 @pyqtSlot()
1979 if branch != self.__projectBranch: 1990 if branch != self.__projectBranch:
1980 revs.append( 1991 revs.append(
1981 itm.text(self.RevisionColumn).strip().split(":", 1)[0]) 1992 itm.text(self.RevisionColumn).strip().split(":", 1)[0])
1982 1993
1983 if revs: 1994 if revs:
1984 shouldReopen = self.vcs.hgGraft(self.repodir, revs) 1995 shouldReopen = self.vcs.hgGraft(revs)
1985 if shouldReopen: 1996 if shouldReopen:
1986 res = E5MessageBox.yesNo( 1997 res = E5MessageBox.yesNo(
1987 None, 1998 None,
1988 self.tr("Copy Changesets"), 1999 self.tr("Copy Changesets"),
1989 self.tr( 2000 self.tr(
2003 if len([itm for itm in self.logTree.selectedItems() 2014 if len([itm for itm in self.logTree.selectedItems()
2004 if not itm.data(0, self.__incomingRole)]) == 1: 2015 if not itm.data(0, self.__incomingRole)]) == 1:
2005 itm = self.logTree.selectedItems()[0] 2016 itm = self.logTree.selectedItems()[0]
2006 rev = itm.text(self.RevisionColumn).strip().split(":", 1)[0] 2017 rev = itm.text(self.RevisionColumn).strip().split(":", 1)[0]
2007 tag = itm.text(self.TagsColumn).strip().split(", ", 1)[0] 2018 tag = itm.text(self.TagsColumn).strip().split(", ", 1)[0]
2008 res = self.vcs.vcsTag(self.repodir, revision=rev, tagName=tag) 2019 res = self.vcs.vcsTag(revision=rev, tagName=tag)
2009 if res: 2020 if res:
2010 self.on_refreshButton_clicked() 2021 self.on_refreshButton_clicked()
2011 2022
2012 @pyqtSlot() 2023 @pyqtSlot()
2013 def __closeHeadsActTriggered(self): 2024 def __closeHeadsActTriggered(self):
2020 if not itm.data(0, self.__incomingRole)] 2031 if not itm.data(0, self.__incomingRole)]
2021 revs = [rev for rev in revs if rev in self.__headRevisions] 2032 revs = [rev for rev in revs if rev in self.__headRevisions]
2022 if revs: 2033 if revs:
2023 closeheadExtension = self.vcs.getExtensionObject("closehead") 2034 closeheadExtension = self.vcs.getExtensionObject("closehead")
2024 if closeheadExtension is not None: 2035 if closeheadExtension is not None:
2025 closeheadExtension.hgCloseheads( 2036 closeheadExtension.hgCloseheads(revisions=revs)
2026 self.repodir, revisions=revs)
2027 2037
2028 self.on_refreshButton_clicked() 2038 self.on_refreshButton_clicked()
2029 2039
2030 @pyqtSlot() 2040 @pyqtSlot()
2031 def __switchActTriggered(self): 2041 def __switchActTriggered(self):
2051 if not ok: 2061 if not ok:
2052 return 2062 return
2053 if bookmark: 2063 if bookmark:
2054 rev = bookmark 2064 rev = bookmark
2055 if rev: 2065 if rev:
2056 shouldReopen = self.vcs.vcsUpdate(self.repodir, revision=rev) 2066 shouldReopen = self.vcs.vcsUpdate(revision=rev)
2057 if shouldReopen: 2067 if shouldReopen:
2058 res = E5MessageBox.yesNo( 2068 res = E5MessageBox.yesNo(
2059 None, 2069 None,
2060 self.tr("Switch"), 2070 self.tr("Switch"),
2061 self.tr( 2071 self.tr(
2084 self.tr('Enter bookmark name for changeset "{0}":').format( 2094 self.tr('Enter bookmark name for changeset "{0}":').format(
2085 changeset), 2095 changeset),
2086 QLineEdit.Normal) 2096 QLineEdit.Normal)
2087 if ok and bool(bookmark): 2097 if ok and bool(bookmark):
2088 self.vcs.hgBookmarkDefine( 2098 self.vcs.hgBookmarkDefine(
2089 self.repodir, revision="rev({0})".format(rev), 2099 revision="rev({0})".format(rev),
2090 bookmark=bookmark) 2100 bookmark=bookmark)
2091 self.on_refreshButton_clicked() 2101 self.on_refreshButton_clicked()
2092 2102
2093 @pyqtSlot() 2103 @pyqtSlot()
2094 def __bookmarkMoveActTriggered(self): 2104 def __bookmarkMoveActTriggered(self):
2099 if not itm.data(0, self.__incomingRole)]) == 1: 2109 if not itm.data(0, self.__incomingRole)]) == 1:
2100 itm = self.logTree.selectedItems()[0] 2110 itm = self.logTree.selectedItems()[0]
2101 rev, changeset = ( 2111 rev, changeset = (
2102 itm.text(self.RevisionColumn).strip().split(":", 1) 2112 itm.text(self.RevisionColumn).strip().split(":", 1)
2103 ) 2113 )
2104 bookmarksList = self.vcs.hgGetBookmarksList(self.repodir) 2114 bookmarksList = self.vcs.hgGetBookmarksList()
2105 bookmark, ok = QInputDialog.getItem( 2115 bookmark, ok = QInputDialog.getItem(
2106 self, 2116 self,
2107 self.tr("Move Bookmark"), 2117 self.tr("Move Bookmark"),
2108 self.tr('Select the bookmark to be moved to changeset' 2118 self.tr('Select the bookmark to be moved to changeset'
2109 ' "{0}":').format(changeset), 2119 ' "{0}":').format(changeset),
2110 [""] + bookmarksList, 2120 [""] + bookmarksList,
2111 0, False) 2121 0, False)
2112 if ok and bool(bookmark): 2122 if ok and bool(bookmark):
2113 self.vcs.hgBookmarkMove( 2123 self.vcs.hgBookmarkMove(
2114 self.repodir, revision="rev({0})".format(rev), 2124 revision="rev({0})".format(rev),
2115 bookmark=bookmark) 2125 bookmark=bookmark)
2116 self.on_refreshButton_clicked() 2126 self.on_refreshButton_clicked()
2117 2127
2118 @pyqtSlot() 2128 @pyqtSlot()
2119 def __lfPullActTriggered(self): 2129 def __lfPullActTriggered(self):
2126 rev = itm.text(self.RevisionColumn).strip().split(":", 1)[0] 2136 rev = itm.text(self.RevisionColumn).strip().split(":", 1)[0]
2127 if rev: 2137 if rev:
2128 revs.append(rev) 2138 revs.append(rev)
2129 2139
2130 if revs: 2140 if revs:
2131 self.vcs.getExtensionObject("largefiles").hgLfPull( 2141 self.vcs.getExtensionObject("largefiles").hgLfPull(revisions=revs)
2132 self.repodir, revisions=revs)
2133 2142
2134 @pyqtSlot() 2143 @pyqtSlot()
2135 def __pullActTriggered(self): 2144 def __pullActTriggered(self):
2136 """ 2145 """
2137 Private slot to pull changes from a remote repository. 2146 Private slot to pull changes from a remote repository.
2145 for itm in [item for item in self.logTree.selectedItems() 2154 for itm in [item for item in self.logTree.selectedItems()
2146 if item.data(0, self.__incomingRole)]: 2155 if item.data(0, self.__incomingRole)]:
2147 rev = itm.text(self.RevisionColumn).split(":")[1].strip() 2156 rev = itm.text(self.RevisionColumn).split(":")[1].strip()
2148 if rev: 2157 if rev:
2149 revs.append(rev) 2158 revs.append(rev)
2150 shouldReopen = self.vcs.hgPull(self.repodir, revisions=revs) 2159 shouldReopen = self.vcs.hgPull(revisions=revs)
2151 refresh = True 2160 refresh = True
2152 if self.initialCommandMode == "incoming": 2161 if self.initialCommandMode == "incoming":
2153 addNext = True 2162 addNext = True
2154 2163
2155 if shouldReopen: 2164 if shouldReopen:
2174 """ 2183 """
2175 itm = self.logTree.selectedItems()[0] 2184 itm = self.logTree.selectedItems()[0]
2176 if not itm.data(0, self.__incomingRole): 2185 if not itm.data(0, self.__incomingRole):
2177 rev = itm.text(self.RevisionColumn).strip().split(":", 1)[0] 2186 rev = itm.text(self.RevisionColumn).strip().split(":", 1)[0]
2178 if rev: 2187 if rev:
2179 self.vcs.hgPush(self.repodir, rev=rev) 2188 self.vcs.hgPush(rev=rev)
2180 self.on_refreshButton_clicked( 2189 self.on_refreshButton_clicked(
2181 addNext=self.initialCommandMode == "outgoing") 2190 addNext=self.initialCommandMode == "outgoing")
2182 2191
2183 @pyqtSlot() 2192 @pyqtSlot()
2184 def __pushAllActTriggered(self): 2193 def __pushAllActTriggered(self):
2185 """ 2194 """
2186 Private slot to push all changes to a remote repository. 2195 Private slot to push all changes to a remote repository.
2187 """ 2196 """
2188 self.vcs.hgPush(self.repodir) 2197 self.vcs.hgPush()
2189 self.on_refreshButton_clicked() 2198 self.on_refreshButton_clicked()
2190 2199
2191 @pyqtSlot() 2200 @pyqtSlot()
2192 def __stripActTriggered(self): 2201 def __stripActTriggered(self):
2193 """ 2202 """
2195 """ 2204 """
2196 itm = self.logTree.selectedItems()[0] 2205 itm = self.logTree.selectedItems()[0]
2197 if not itm.data(0, self.__incomingRole): 2206 if not itm.data(0, self.__incomingRole):
2198 rev = itm.text(self.RevisionColumn).strip().split(":", 1)[1] 2207 rev = itm.text(self.RevisionColumn).strip().split(":", 1)[1]
2199 shouldReopen = self.vcs.getExtensionObject("strip").hgStrip( 2208 shouldReopen = self.vcs.getExtensionObject("strip").hgStrip(
2200 self.repodir, rev=rev) 2209 rev=rev)
2201 if shouldReopen: 2210 if shouldReopen:
2202 res = E5MessageBox.yesNo( 2211 res = E5MessageBox.yesNo(
2203 None, 2212 None,
2204 self.tr("Strip Changesets"), 2213 self.tr("Strip Changesets"),
2205 self.tr( 2214 self.tr(
2219 """ 2228 """
2220 itm = self.logTree.selectedItems()[0] 2229 itm = self.logTree.selectedItems()[0]
2221 if not itm.data(0, self.__incomingRole): 2230 if not itm.data(0, self.__incomingRole):
2222 rev = "rev({0})".format( 2231 rev = "rev({0})".format(
2223 itm.text(self.RevisionColumn).strip().split(":", 1)[0]) 2232 itm.text(self.RevisionColumn).strip().split(":", 1)[0])
2224 self.vcs.vcsMerge(self.repodir, rev=rev) 2233 self.vcs.vcsMerge("", rev=rev)
2225 2234
2226 @pyqtSlot() 2235 @pyqtSlot()
2227 def __bundleActTriggered(self): 2236 def __bundleActTriggered(self):
2228 """ 2237 """
2229 Private slot to create a changegroup file. 2238 Private slot to create a changegroup file.
2278 "revs": revs, 2287 "revs": revs,
2279 "base": "", 2288 "base": "",
2280 "all": False, 2289 "all": False,
2281 } 2290 }
2282 2291
2283 self.vcs.hgBundle(self.repodir, bundleData=bundleData) 2292 self.vcs.hgBundle(bundleData=bundleData)
2284 2293
2285 @pyqtSlot() 2294 @pyqtSlot()
2286 def __unbundleActTriggered(self): 2295 def __unbundleActTriggered(self):
2287 """ 2296 """
2288 Private slot to apply the currently previewed bundle file. 2297 Private slot to apply the currently previewed bundle file.
2289 """ 2298 """
2290 if self.initialCommandMode == "incoming" and bool(self.__bundle): 2299 if self.initialCommandMode == "incoming" and bool(self.__bundle):
2291 shouldReopen = self.vcs.hgUnbundle(self.repodir, 2300 shouldReopen = self.vcs.hgUnbundle(files=[self.__bundle])
2292 files=[self.__bundle])
2293 if shouldReopen: 2301 if shouldReopen:
2294 res = E5MessageBox.yesNo( 2302 res = E5MessageBox.yesNo(
2295 None, 2303 None,
2296 self.tr("Apply Changegroup"), 2304 self.tr("Apply Changegroup"),
2297 self.tr("""The project should be reread. Do this now?"""), 2305 self.tr("""The project should be reread. Do this now?"""),
2298 yesDefault=True) 2306 yesDefault=True)
2299 if res: 2307 if res:
2300 e5App().getObject("Project").reopenProject() 2308 e5App().getObject("Project").reopenProject()
2301 return 2309 return
2302 2310
2303 self.vcs.vcsLogBrowser(self.repodir) 2311 self.vcs.vcsLogBrowser()
2304 self.close() 2312 self.close()
2305 2313
2306 @pyqtSlot() 2314 @pyqtSlot()
2307 def __gpgSignActTriggered(self): 2315 def __gpgSignActTriggered(self):
2308 """ 2316 """
2314 rev = itm.text(self.RevisionColumn).split(":", 1)[0].strip() 2322 rev = itm.text(self.RevisionColumn).split(":", 1)[0].strip()
2315 if rev: 2323 if rev:
2316 revs.append(rev) 2324 revs.append(rev)
2317 2325
2318 if revs: 2326 if revs:
2319 self.vcs.getExtensionObject("gpg").hgGpgSign( 2327 self.vcs.getExtensionObject("gpg").hgGpgSign(revisions=revs)
2320 self.repodir, revisions=revs)
2321 2328
2322 @pyqtSlot() 2329 @pyqtSlot()
2323 def __gpgVerifyActTriggered(self): 2330 def __gpgVerifyActTriggered(self):
2324 """ 2331 """
2325 Private slot to verify the signatures of a selected revisions. 2332 Private slot to verify the signatures of a selected revisions.
2327 itm = self.logTree.selectedItems()[0] 2334 itm = self.logTree.selectedItems()[0]
2328 if not itm.data(0, self.__incomingRole): 2335 if not itm.data(0, self.__incomingRole):
2329 rev = itm.text(self.RevisionColumn).split(":", 1)[0].strip() 2336 rev = itm.text(self.RevisionColumn).split(":", 1)[0].strip()
2330 if rev: 2337 if rev:
2331 self.vcs.getExtensionObject("gpg").hgGpgVerifySignatures( 2338 self.vcs.getExtensionObject("gpg").hgGpgVerifySignatures(
2332 self.repodir, rev=rev) 2339 rev=rev)
2333 2340
2334 def __selectAllActTriggered(self, select=True): 2341 def __selectAllActTriggered(self, select=True):
2335 """ 2342 """
2336 Private method to select or unselect all log entries. 2343 Private method to select or unselect all log entries.
2337 2344
2683 Private slot to handle selection of a side-by-side link. 2690 Private slot to handle selection of a side-by-side link.
2684 2691
2685 @param link text of the selected link 2692 @param link text of the selected link
2686 @type str 2693 @type str
2687 """ 2694 """
2688 if ":" in link: 2695 if ":" in link and self.__filename is not None:
2689 scheme, path = link.split(":", 1) 2696 scheme, path = link.split(":", 1)
2690 if scheme == "sbsdiff" and "_" in path: 2697 if scheme == "sbsdiff" and "_" in path:
2691 rev1, rev2 = path.split("_", 1) 2698 rev1, rev2 = path.split("_", 1)
2692 self.vcs.hgSbsDiff(self.__filename, revisions=(rev1, rev2)) 2699 self.vcs.hgSbsDiff(self.__filename, revisions=(rev1, rev2))

eric ide

mercurial