src/eric7/PipInterface/PipPackagesWidget.py

branch
eric7
changeset 11128
04a9579c9c54
parent 11113
2e03383143e3
child 11148
15e30f0c76a8
equal deleted inserted replaced
11127:1bbaf3add61a 11128:04a9579c9c54
11 import enum 11 import enum
12 import os 12 import os
13 13
14 from packaging.specifiers import InvalidSpecifier, SpecifierSet 14 from packaging.specifiers import InvalidSpecifier, SpecifierSet
15 from PyQt6.QtCore import Qt, QUrl, QUrlQuery, pyqtSlot 15 from PyQt6.QtCore import Qt, QUrl, QUrlQuery, pyqtSlot
16 from PyQt6.QtGui import QDesktopServices, QIcon 16 from PyQt6.QtGui import QBrush, QDesktopServices, QIcon
17 from PyQt6.QtWidgets import ( 17 from PyQt6.QtWidgets import (
18 QDialog, 18 QDialog,
19 QHeaderView, 19 QHeaderView,
20 QMenu, 20 QMenu,
21 QToolButton, 21 QToolButton,
412 ) 412 )
413 else: 413 else:
414 self.environmentPathLabel.setPath("") 414 self.environmentPathLabel.setPath("")
415 if self.__packageDetailsDialog is not None: 415 if self.__packageDetailsDialog is not None:
416 self.__packageDetailsDialog.close() 416 self.__packageDetailsDialog.close()
417
418 self.packageSearchEdit.clear()
417 419
418 if self.viewToggleButton.isChecked(): 420 if self.viewToggleButton.isChecked():
419 self.__refreshDependencyTree() 421 self.__refreshDependencyTree()
420 else: 422 else:
421 self.__refreshPackagesList() 423 self.__refreshPackagesList()
1528 self.dependenciesList.resizeColumnToContents(col) 1530 self.dependenciesList.resizeColumnToContents(col)
1529 self.dependenciesList.setUpdatesEnabled(True) 1531 self.dependenciesList.setUpdatesEnabled(True)
1530 1532
1531 self.__updateDepActionButtons() 1533 self.__updateDepActionButtons()
1532 1534
1535 self.packageSearchEdit.setEnabled(
1536 bool(self.dependenciesList.topLevelItemCount())
1537 )
1538 self.on_packageSearchEdit_textChanged(self.packageSearchEdit.text())
1539
1533 def __addDependency(self, dependency, parent): 1540 def __addDependency(self, dependency, parent):
1534 """ 1541 """
1535 Private method to add a dependency branch to a given parent. 1542 Private method to add a dependency branch to a given parent.
1536 1543
1537 @param dependency dependency to be added 1544 @param dependency dependency to be added
1734 venvName=venvName, 1741 venvName=venvName,
1735 userSite=self.userDepCheckBox.isChecked(), 1742 userSite=self.userDepCheckBox.isChecked(),
1736 ) 1743 )
1737 self.on_refreshDependenciesButton_clicked() 1744 self.on_refreshDependenciesButton_clicked()
1738 1745
1746 @pyqtSlot(str)
1747 def on_packageSearchEdit_textChanged(self, package):
1748 """
1749 Private slot to search packages in the dependencies tree.
1750
1751 @param package package text to search for
1752 @type str
1753 """
1754 self.__resetPackageSearchHighlights()
1755
1756 foundItems = (
1757 self.dependenciesList.findItems(
1758 package,
1759 Qt.MatchFlag.MatchContains
1760 | Qt.MatchFlag.MatchRecursive
1761 | Qt.MatchFlag.MatchWrap,
1762 )
1763 if package
1764 else []
1765 )
1766 self.__setPackageSearchHighlights(foundItems)
1767
1768 def __resetPackageSearchHighlights(self, parent=None):
1769 """
1770 Private method to reset the package search markers.
1771
1772 @param parent reference to the parent item (defaults to None)
1773 @type QTreeWidgetItem (optional)
1774 """
1775 if parent is None:
1776 for index in range(self.dependenciesList.topLevelItemCount()):
1777 itm = self.dependenciesList.topLevelItem(index)
1778 self.__resetPackageSearchHighlight(itm)
1779 else:
1780 for index in range(parent.childCount()):
1781 itm = parent.child(index)
1782 self.__resetPackageSearchHighlight(itm)
1783
1784 def __resetPackageSearchHighlight(self, packageItem):
1785 """
1786 Private method to reset the package search marker of an individual item.
1787
1788 @param packageItem reference to the package item
1789 @type QTreeWidgetItem
1790 """
1791 for column in range(self.dependenciesList.columnCount()):
1792 packageItem.setBackground(column, QBrush())
1793 if packageItem.childCount():
1794 self.__resetPackageSearchHighlights(parent=packageItem)
1795
1796 def __setPackageSearchHighlights(self, packageItems):
1797 """
1798 Private method to highlight the given package items.
1799
1800 @param packageItems list of package dependency items to be highlighted
1801 @type list of QTreeWidgetItem
1802 """
1803 for packageItem in packageItems:
1804 for column in range(self.dependenciesList.columnCount()):
1805 packageItem.setBackground(
1806 column, QBrush(Preferences.getPip("DependencyHighlightColor"))
1807 )
1808
1739 ################################################################## 1809 ##################################################################
1740 ## Interface to show the licenses dialog below 1810 ## Interface to show the licenses dialog below
1741 ################################################################## 1811 ##################################################################
1742 1812
1743 @pyqtSlot() 1813 @pyqtSlot()
1789 # only if status changes because it is an expensive operation 1859 # only if status changes because it is an expensive operation
1790 if self.vulnerabilityCheckBox.isChecked(): 1860 if self.vulnerabilityCheckBox.isChecked():
1791 self.__updateVulnerabilityData(clearFirst=True) 1861 self.__updateVulnerabilityData(clearFirst=True)
1792 else: 1862 else:
1793 self.__clearVulnerabilityInfo() 1863 self.__clearVulnerabilityInfo()
1864
1865 self.on_packageSearchEdit_textChanged(self.packageSearchEdit.text())

eric ide

mercurial