Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py

changeset 5512
f148796813d4
parent 5506
9482a0ded319
child 5513
2ccfb5077dd6
equal deleted inserted replaced
5511:54632671aa3b 5512:f148796813d4
1296 1296
1297 self.__resizeColumnsLog() 1297 self.__resizeColumnsLog()
1298 1298
1299 if self.__started: 1299 if self.__started:
1300 if self.__selectedRevisions: 1300 if self.__selectedRevisions:
1301 self.logTree.setCurrentItem(self.logTree.findItems( 1301 foundItems = self.logTree.findItems(
1302 self.__selectedRevisions[0], Qt.MatchExactly, 1302 self.__selectedRevisions[0], Qt.MatchExactly,
1303 self.RevisionColumn)[0]) 1303 self.RevisionColumn)
1304 if foundItems:
1305 self.logTree.setCurrentItem(foundItems[0])
1306 else:
1307 self.logTree.setCurrentItem(self.logTree.topLevelItem(0))
1304 else: 1308 else:
1305 self.logTree.setCurrentItem(self.logTree.topLevelItem(0)) 1309 self.logTree.setCurrentItem(self.logTree.topLevelItem(0))
1306 self.__started = False 1310 self.__started = False
1307 1311
1308 if self.commandMode in ("incoming", "outgoing"): 1312 if self.commandMode in ("incoming", "outgoing"):
1441 """ 1445 """
1442 Private slot to update the status of the tool menu actions and 1446 Private slot to update the status of the tool menu actions and
1443 the tool menu button. 1447 the tool menu button.
1444 """ 1448 """
1445 if self.initialCommandMode == "log" and self.projectMode: 1449 if self.initialCommandMode == "log" and self.projectMode:
1446 if self.__phaseAct is not None: 1450 # do the phase action
1447 # step 1: count entries with changeable phases 1451 # step 1: count entries with changeable phases
1448 secret = 0 1452 secret = 0
1449 draft = 0 1453 draft = 0
1450 public = 0 1454 public = 0
1451 for itm in self.logTree.selectedItems(): 1455 for itm in self.logTree.selectedItems():
1452 phase = itm.text(self.PhaseColumn) 1456 phase = itm.text(self.PhaseColumn)
1453 if phase == self.phases["draft"]: 1457 if phase == self.phases["draft"]:
1454 draft += 1 1458 draft += 1
1455 elif phase == self.phases["secret"]: 1459 elif phase == self.phases["secret"]:
1456 secret += 1 1460 secret += 1
1457 else:
1458 public += 1
1459
1460 # step 2: set the status of the phase action
1461 if public == 0 and \
1462 ((secret > 0 and draft == 0) or
1463 (secret == 0 and draft > 0)):
1464 self.__phaseAct.setEnabled(True)
1465 else: 1461 else:
1466 self.__phaseAct.setEnabled(False) 1462 public += 1
1467 1463
1468 if self.__graftAct is not None: 1464 # step 2: set the status of the phase action
1469 # step 1: count selected entries not belonging to the 1465 if public == 0 and \
1470 # current branch 1466 ((secret > 0 and draft == 0) or
1471 otherBranches = 0 1467 (secret == 0 and draft > 0)):
1472 for itm in self.logTree.selectedItems(): 1468 self.__phaseAct.setEnabled(True)
1473 branch = itm.text(self.BranchColumn) 1469 else:
1474 if branch != self.__projectBranch: 1470 self.__phaseAct.setEnabled(False)
1475 otherBranches += 1 1471
1476 1472 # do the graft action
1477 # step 2: set the status of the graft action 1473 # step 1: count selected entries not belonging to the
1478 self.__graftAct.setEnabled(otherBranches > 0) 1474 # current branch
1475 otherBranches = 0
1476 for itm in self.logTree.selectedItems():
1477 branch = itm.text(self.BranchColumn)
1478 if branch != self.__projectBranch:
1479 otherBranches += 1
1480
1481 # step 2: set the status of the graft action
1482 self.__graftAct.setEnabled(otherBranches > 0)
1479 1483
1480 selectedItemsCount = len(self.logTree.selectedItems()) 1484 selectedItemsCount = len(self.logTree.selectedItems())
1481 self.__mergeAct.setEnabled(selectedItemsCount == 1) 1485 self.__mergeAct.setEnabled(selectedItemsCount == 1)
1482 self.__tagAct.setEnabled(selectedItemsCount == 1) 1486 self.__tagAct.setEnabled(selectedItemsCount == 1)
1483 self.__switchAct.setEnabled(selectedItemsCount == 1) 1487 self.__switchAct.setEnabled(selectedItemsCount == 1)
1484 self.__bookmarkAct.setEnabled(selectedItemsCount == 1) 1488 self.__bookmarkAct.setEnabled(selectedItemsCount == 1)
1485 self.__bookmarkMoveAct.setEnabled(selectedItemsCount == 1) 1489 self.__bookmarkMoveAct.setEnabled(selectedItemsCount == 1)
1486 1490
1491 self.__pullAct.setText(self.tr("Pull Changes"))
1492 self.__fetchAct.setText(self.tr("Fetch Changes"))
1487 if self.vcs.canPull(): 1493 if self.vcs.canPull():
1488 self.__pullAct.setEnabled(True) 1494 self.__pullAct.setEnabled(True)
1489 self.__lfPullAct.setEnabled( 1495 self.__lfPullAct.setEnabled(
1490 self.vcs.isExtensionActive("largefiles") and 1496 self.vcs.isExtensionActive("largefiles") and
1491 selectedItemsCount > 0) 1497 selectedItemsCount > 0)
1516 self.vcs.isExtensionActive("gpg") and 1522 self.vcs.isExtensionActive("gpg") and
1517 selectedItemsCount > 0) 1523 selectedItemsCount > 0)
1518 self.__gpgVerifyAct.setEnabled( 1524 self.__gpgVerifyAct.setEnabled(
1519 self.vcs.isExtensionActive("gpg") and 1525 self.vcs.isExtensionActive("gpg") and
1520 selectedItemsCount == 1) 1526 selectedItemsCount == 1)
1527
1528 self.actionsButton.setEnabled(True)
1529 elif self.initialCommandMode == "incoming" and self.projectMode:
1530 for act in [self.__phaseAct, self.__graftAct, self.__mergeAct,
1531 self.__tagAct, self.__switchAct, self.__bookmarkAct,
1532 self.__bookmarkMoveAct, self.__pushAct,
1533 self.__pushAllAct, self.__stripAct, self.__bundleAct,
1534 self.__gpgSignAct, self.__gpgVerifyAct]:
1535 act.setEnabled(False)
1536
1537 self.__pullAct.setText(self.tr("Pull Selected Changes"))
1538 self.__fetchAct.setText(self.tr("Fetch Selected Changes"))
1539 if self.vcs.canPull():
1540 # step 1: determine number of selected draft changesets
1541 # i.e. those that can be pulled
1542 selectedDraftItemsCount = 0
1543 for itm in self.logTree.selectedItems():
1544 phase = itm.text(self.PhaseColumn)
1545 if phase == self.phases["draft"]:
1546 selectedDraftItemsCount += 1
1547 self.__pullAct.setEnabled(selectedDraftItemsCount > 0)
1548 self.__lfPullAct.setEnabled(
1549 self.vcs.isExtensionActive("largefiles") and
1550 selectedItemsCount > 0)
1551 self.__fetchAct.setEnabled(
1552 self.vcs.isExtensionActive("fetch") and
1553 selectedDraftItemsCount > 0)
1554 else:
1555 self.__pullAct.setEnabled(False)
1556 self.__lfPullAct.setEnabled(False)
1557 self.__fetchAct.setEnabled(False)
1521 1558
1522 self.actionsButton.setEnabled(True) 1559 self.actionsButton.setEnabled(True)
1523 else: 1560 else:
1524 self.actionsButton.setEnabled(False) 1561 self.actionsButton.setEnabled(False)
1525 # TODO: add code to enable menu in incoming / outgoing mode as well 1562 # TODO: add code to enable menu in incoming / outgoing mode as well
2108 @pyqtSlot() 2145 @pyqtSlot()
2109 def __fetchActTriggered(self): 2146 def __fetchActTriggered(self):
2110 """ 2147 """
2111 Private slot to fetch changes from a remote repository. 2148 Private slot to fetch changes from a remote repository.
2112 """ 2149 """
2113 shouldReopen = self.vcs.getExtensionObject("fetch").hgFetch( 2150 shouldReopen = False
2114 self.repodir) 2151 refresh = False
2152
2153 if self.initialCommandMode == "log":
2154 shouldReopen = self.vcs.getExtensionObject("fetch").hgFetch(
2155 self.repodir)
2156 refresh = True
2157 elif self.initialCommandMode == "incoming":
2158 revs = []
2159 for itm in self.logTree.selectedItems():
2160 rev = itm.text(self.RevisionColumn).split(":")[1].strip()
2161 phase = itm.text(self.PhaseColumn).strip()
2162 if rev and phase == self.phases["draft"]:
2163 revs.append(rev)
2164 if revs:
2165 shouldReopen = self.vcs.getExtensionObject("fetch").hgFetch(
2166 self.repodir, )
2167 refresh = True
2115 if shouldReopen: 2168 if shouldReopen:
2116 res = E5MessageBox.yesNo( 2169 res = E5MessageBox.yesNo(
2117 None, 2170 None,
2118 self.tr("Fetch Changes"), 2171 self.tr("Fetch Changes"),
2119 self.tr( 2172 self.tr(
2121 yesDefault=True) 2174 yesDefault=True)
2122 if res: 2175 if res:
2123 e5App().getObject("Project").reopenProject() 2176 e5App().getObject("Project").reopenProject()
2124 return 2177 return
2125 2178
2126 self.on_refreshButton_clicked() 2179 if refresh:
2180 self.on_refreshButton_clicked()
2127 2181
2128 @pyqtSlot() 2182 @pyqtSlot()
2129 def __pullActTriggered(self): 2183 def __pullActTriggered(self):
2130 """ 2184 """
2131 Private slot to pull changes from a remote repository. 2185 Private slot to pull changes from a remote repository.
2132 """ 2186 """
2133 shouldReopen = self.vcs.hgPull(self.repodir) 2187 shouldReopen = False
2188 refresh = False
2189
2190 if self.initialCommandMode == "log":
2191 shouldReopen = self.vcs.hgPull(self.repodir)
2192 refresh = True
2193 elif self.initialCommandMode == "incoming":
2194 revs = []
2195 for itm in self.logTree.selectedItems():
2196 rev = itm.text(self.RevisionColumn).split(":")[1].strip()
2197 phase = itm.text(self.PhaseColumn).strip()
2198 if rev and phase == self.phases["draft"]:
2199 revs.append(rev)
2200 if revs:
2201 shouldReopen = self.vcs.hgPull(self.repodir, revisions=revs)
2202 refresh = True
2203
2134 if shouldReopen: 2204 if shouldReopen:
2135 res = E5MessageBox.yesNo( 2205 res = E5MessageBox.yesNo(
2136 None, 2206 None,
2137 self.tr("Pull Changes"), 2207 self.tr("Pull Changes"),
2138 self.tr( 2208 self.tr(
2140 yesDefault=True) 2210 yesDefault=True)
2141 if res: 2211 if res:
2142 e5App().getObject("Project").reopenProject() 2212 e5App().getObject("Project").reopenProject()
2143 return 2213 return
2144 2214
2145 self.on_refreshButton_clicked() 2215 if refresh:
2216 self.on_refreshButton_clicked()
2146 2217
2147 @pyqtSlot() 2218 @pyqtSlot()
2148 def __pushActTriggered(self): 2219 def __pushActTriggered(self):
2149 """ 2220 """
2150 Private slot to push changes to a remote repository up to a selected 2221 Private slot to push changes to a remote repository up to a selected

eric ide

mercurial