Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py

changeset 4060
6dc9821fc9c8
parent 4059
15b78ac687fb
child 4080
d4ba5fab5557
equal deleted inserted replaced
4059:15b78ac687fb 4060:6dc9821fc9c8
94 self.modeComboBox.addItem(self.tr("Filter"), "filter") 94 self.modeComboBox.addItem(self.tr("Filter"), "filter")
95 95
96 self.fieldCombo.addItem(self.tr("Revision"), "revision") 96 self.fieldCombo.addItem(self.tr("Revision"), "revision")
97 self.fieldCombo.addItem(self.tr("Author"), "author") 97 self.fieldCombo.addItem(self.tr("Author"), "author")
98 self.fieldCombo.addItem(self.tr("Message"), "message") 98 self.fieldCombo.addItem(self.tr("Message"), "message")
99 self.fieldCombo.addItem(self.tr("File"), "file")
99 100
100 self.vcs = vcs 101 self.vcs = vcs
101 if mode in ("log", "incoming", "outgoing"): 102 if mode in ("log", "incoming", "outgoing"):
102 self.commandMode = mode 103 self.commandMode = mode
103 self.initialCommandMode = mode 104 self.initialCommandMode = mode
1426 if self.__filterLogsEnabled: 1427 if self.__filterLogsEnabled:
1427 from_ = self.fromDate.date().toString("yyyy-MM-dd") 1428 from_ = self.fromDate.date().toString("yyyy-MM-dd")
1428 to_ = self.toDate.date().addDays(1).toString("yyyy-MM-dd") 1429 to_ = self.toDate.date().addDays(1).toString("yyyy-MM-dd")
1429 branch = self.branchCombo.currentText() 1430 branch = self.branchCombo.currentText()
1430 closedBranch = branch + '--' 1431 closedBranch = branch + '--'
1431 fieldIndex, searchRx = self.__prepareFieldSearch() 1432 fieldIndex, searchRx, indexIsRole = self.__prepareFieldSearch()
1432 1433
1433 ## txt = self.fieldCombo.currentText()
1434 ## if txt == self.tr("Author"):
1435 ## fieldIndex = self.AuthorColumn
1436 ## searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive)
1437 ## elif txt == self.tr("Revision"):
1438 ## fieldIndex = self.RevisionColumn
1439 ## txt = self.rxEdit.text()
1440 ## if txt.startswith("^"):
1441 ## searchRx = QRegExp("^\s*{0}".format(txt[1:]),
1442 ## Qt.CaseInsensitive)
1443 ## else:
1444 ## searchRx = QRegExp(txt, Qt.CaseInsensitive)
1445 ## else:
1446 ## fieldIndex = self.MessageColumn
1447 ## searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive)
1448 ##
1449 visibleItemCount = self.logTree.topLevelItemCount() 1434 visibleItemCount = self.logTree.topLevelItemCount()
1450 currentItem = self.logTree.currentItem() 1435 currentItem = self.logTree.currentItem()
1451 for topIndex in range(self.logTree.topLevelItemCount()): 1436 for topIndex in range(self.logTree.topLevelItemCount()):
1452 topItem = self.logTree.topLevelItem(topIndex) 1437 topItem = self.logTree.topLevelItem(topIndex)
1453 if fieldIndex == self.MessageColumn: 1438 if indexIsRole:
1454 # Find based on complete message text 1439 if fieldIndex == self.__changesRole:
1455 txt = "\n".join(topItem.data(0, self.__messageRole)) 1440 changes = topItem.data(0, self.__changesRole)
1441 txt = "\n".join(
1442 [c["path"] for c in changes] +
1443 [c["copyfrom"] for c in changes]
1444 )
1445 else:
1446 # Find based on complete message text
1447 txt = "\n".join(topItem.data(0, self.__messageRole))
1456 else: 1448 else:
1457 txt = topItem.text(fieldIndex) 1449 txt = topItem.text(fieldIndex)
1458 if topItem.text(self.DateColumn) <= to_ and \ 1450 if topItem.text(self.DateColumn) <= to_ and \
1459 topItem.text(self.DateColumn) >= from_ and \ 1451 topItem.text(self.DateColumn) >= from_ and \
1460 (branch == self.__allBranchesFilter or 1452 (branch == self.__allBranchesFilter or
1476 1468
1477 def __prepareFieldSearch(self): 1469 def __prepareFieldSearch(self):
1478 """ 1470 """
1479 Private slot to prepare the filed search data. 1471 Private slot to prepare the filed search data.
1480 1472
1481 @return tuple of field index and search expression (integer, string) 1473 @return tuple of field index, search expression and flag indicating
1482 """ 1474 that the field index is a data role (integer, string, boolean)
1475 """
1476 indexIsRole = False
1483 txt = self.fieldCombo.itemData(self.fieldCombo.currentIndex()) 1477 txt = self.fieldCombo.itemData(self.fieldCombo.currentIndex())
1484 if txt == "author": 1478 if txt == "author":
1485 fieldIndex = self.AuthorColumn 1479 fieldIndex = self.AuthorColumn
1486 searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive) 1480 searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive)
1487 elif txt == "revision": 1481 elif txt == "revision":
1490 if txt.startswith("^"): 1484 if txt.startswith("^"):
1491 searchRx = QRegExp("^\s*{0}".format(txt[1:]), 1485 searchRx = QRegExp("^\s*{0}".format(txt[1:]),
1492 Qt.CaseInsensitive) 1486 Qt.CaseInsensitive)
1493 else: 1487 else:
1494 searchRx = QRegExp(txt, Qt.CaseInsensitive) 1488 searchRx = QRegExp(txt, Qt.CaseInsensitive)
1495 else: 1489 elif txt == "file":
1496 fieldIndex = self.MessageColumn 1490 fieldIndex = self.__changesRole
1497 searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive) 1491 searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive)
1498 1492 indexIsRole = True
1499 return fieldIndex, searchRx 1493 else:
1494 fieldIndex = self.__messageRole
1495 searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive)
1496 indexIsRole = True
1497
1498 return fieldIndex, searchRx, indexIsRole
1500 1499
1501 @pyqtSlot(bool) 1500 @pyqtSlot(bool)
1502 def on_stopCheckBox_clicked(self, checked): 1501 def on_stopCheckBox_clicked(self, checked):
1503 """ 1502 """
1504 Private slot called, when the stop on copy/move checkbox is clicked. 1503 Private slot called, when the stop on copy/move checkbox is clicked.
1749 @param backwards flag indicating to search backwards (boolean) 1748 @param backwards flag indicating to search backwards (boolean)
1750 @param interactive flag indicating an interactive search (boolean) 1749 @param interactive flag indicating an interactive search (boolean)
1751 """ 1750 """
1752 self.__findBackwards = backwards 1751 self.__findBackwards = backwards
1753 1752
1754 fieldIndex, searchRx = self.__prepareFieldSearch() 1753 fieldIndex, searchRx, indexIsRole = self.__prepareFieldSearch()
1755 currentIndex = self.logTree.indexOfTopLevelItem( 1754 currentIndex = self.logTree.indexOfTopLevelItem(
1756 self.logTree.currentItem()) 1755 self.logTree.currentItem())
1757 if backwards: 1756 if backwards:
1758 if interactive: 1757 if interactive:
1759 indexes = range(currentIndex, -1, -1) 1758 indexes = range(currentIndex, -1, -1)
1766 indexes = range(currentIndex + 1, 1765 indexes = range(currentIndex + 1,
1767 self.logTree.topLevelItemCount()) 1766 self.logTree.topLevelItemCount())
1768 1767
1769 for index in indexes: 1768 for index in indexes:
1770 topItem = self.logTree.topLevelItem(index) 1769 topItem = self.logTree.topLevelItem(index)
1771 if fieldIndex == self.MessageColumn: 1770 if indexIsRole:
1772 # Find based on complete message text 1771 if fieldIndex == self.__changesRole:
1773 txt = "\n".join(topItem.data(0, self.__messageRole)) 1772 changes = topItem.data(0, self.__changesRole)
1773 txt = "\n".join(
1774 [c["path"] for c in changes] +
1775 [c["copyfrom"] for c in changes]
1776 )
1777 else:
1778 # Find based on complete message text
1779 txt = "\n".join(topItem.data(0, self.__messageRole))
1774 else: 1780 else:
1775 txt = topItem.text(fieldIndex) 1781 txt = topItem.text(fieldIndex)
1776 if searchRx.indexIn(txt) > -1: 1782 if searchRx.indexIn(txt) > -1:
1777 self.logTree.setCurrentItem(self.logTree.topLevelItem(index)) 1783 self.logTree.setCurrentItem(self.logTree.topLevelItem(index))
1778 break 1784 break

eric ide

mercurial