26 QMenu, |
26 QMenu, |
27 QDialog, |
27 QDialog, |
28 QAbstractItemView, |
28 QAbstractItemView, |
29 ) |
29 ) |
30 |
30 |
31 from EricWidgets.EricApplication import ericApp |
31 from eric7.EricWidgets.EricApplication import ericApp |
32 from EricWidgets import EricMessageBox |
32 from eric7.EricWidgets import EricMessageBox |
33 from EricGui.EricOverrideCursor import EricOverrideCursor |
33 from eric7.EricGui.EricOverrideCursor import EricOverrideCursor |
34 |
34 |
35 from .PipVulnerabilityChecker import Package, VulnerabilityCheckError |
35 from .PipVulnerabilityChecker import Package, VulnerabilityCheckError |
36 from .Ui_PipPackagesWidget import Ui_PipPackagesWidget |
36 from .Ui_PipPackagesWidget import Ui_PipPackagesWidget |
37 |
37 |
38 import UI.PixmapCache |
38 from eric7.EricGui import EricPixmapCache |
39 import Globals |
39 from eric7 import Globals, Preferences |
40 import Preferences |
|
41 |
40 |
42 |
41 |
43 class PypiSearchResultsParser(html.parser.HTMLParser): |
42 class PypiSearchResultsParser(html.parser.HTMLParser): |
44 """ |
43 """ |
45 Class implementing the parser for the PyPI search result page. |
44 Class implementing the parser for the PyPI search result page. |
186 super().__init__(parent) |
185 super().__init__(parent) |
187 self.setupUi(self) |
186 self.setupUi(self) |
188 |
187 |
189 self.layout().setContentsMargins(0, 3, 0, 0) |
188 self.layout().setContentsMargins(0, 3, 0, 0) |
190 |
189 |
191 self.viewToggleButton.setIcon(UI.PixmapCache.getIcon("viewListTree")) |
190 self.viewToggleButton.setIcon(EricPixmapCache.getIcon("viewListTree")) |
192 |
191 |
193 self.pipMenuButton.setObjectName("pip_supermenu_button") |
192 self.pipMenuButton.setObjectName("pip_supermenu_button") |
194 self.pipMenuButton.setIcon(UI.PixmapCache.getIcon("superMenu")) |
193 self.pipMenuButton.setIcon(EricPixmapCache.getIcon("superMenu")) |
195 self.pipMenuButton.setToolTip(self.tr("pip Menu")) |
194 self.pipMenuButton.setToolTip(self.tr("pip Menu")) |
196 self.pipMenuButton.setPopupMode(QToolButton.ToolButtonPopupMode.InstantPopup) |
195 self.pipMenuButton.setPopupMode(QToolButton.ToolButtonPopupMode.InstantPopup) |
197 self.pipMenuButton.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonIconOnly) |
196 self.pipMenuButton.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonIconOnly) |
198 self.pipMenuButton.setFocusPolicy(Qt.FocusPolicy.NoFocus) |
197 self.pipMenuButton.setFocusPolicy(Qt.FocusPolicy.NoFocus) |
199 self.pipMenuButton.setAutoRaise(True) |
198 self.pipMenuButton.setAutoRaise(True) |
200 self.pipMenuButton.setShowMenuInside(True) |
199 self.pipMenuButton.setShowMenuInside(True) |
201 |
200 |
202 self.refreshButton.setIcon(UI.PixmapCache.getIcon("reload")) |
201 self.refreshButton.setIcon(EricPixmapCache.getIcon("reload")) |
203 self.upgradeButton.setIcon(UI.PixmapCache.getIcon("1uparrow")) |
202 self.upgradeButton.setIcon(EricPixmapCache.getIcon("1uparrow")) |
204 self.upgradeAllButton.setIcon(UI.PixmapCache.getIcon("2uparrow")) |
203 self.upgradeAllButton.setIcon(EricPixmapCache.getIcon("2uparrow")) |
205 self.uninstallButton.setIcon(UI.PixmapCache.getIcon("minus")) |
204 self.uninstallButton.setIcon(EricPixmapCache.getIcon("minus")) |
206 self.showPackageDetailsButton.setIcon(UI.PixmapCache.getIcon("info")) |
205 self.showPackageDetailsButton.setIcon(EricPixmapCache.getIcon("info")) |
207 self.searchToggleButton.setIcon(UI.PixmapCache.getIcon("find")) |
206 self.searchToggleButton.setIcon(EricPixmapCache.getIcon("find")) |
208 self.searchButton.setIcon(UI.PixmapCache.getIcon("findNext")) |
207 self.searchButton.setIcon(EricPixmapCache.getIcon("findNext")) |
209 self.searchMoreButton.setIcon(UI.PixmapCache.getIcon("plus")) |
208 self.searchMoreButton.setIcon(EricPixmapCache.getIcon("plus")) |
210 self.installButton.setIcon(UI.PixmapCache.getIcon("plus")) |
209 self.installButton.setIcon(EricPixmapCache.getIcon("plus")) |
211 self.installUserSiteButton.setIcon(UI.PixmapCache.getIcon("addUser")) |
210 self.installUserSiteButton.setIcon(EricPixmapCache.getIcon("addUser")) |
212 self.showDetailsButton.setIcon(UI.PixmapCache.getIcon("info")) |
211 self.showDetailsButton.setIcon(EricPixmapCache.getIcon("info")) |
213 |
212 |
214 self.refreshDependenciesButton.setIcon(UI.PixmapCache.getIcon("reload")) |
213 self.refreshDependenciesButton.setIcon(EricPixmapCache.getIcon("reload")) |
215 self.showDepPackageDetailsButton.setIcon(UI.PixmapCache.getIcon("info")) |
214 self.showDepPackageDetailsButton.setIcon(EricPixmapCache.getIcon("info")) |
216 self.dependencyRepairButton.setIcon(UI.PixmapCache.getIcon("repair")) |
215 self.dependencyRepairButton.setIcon(EricPixmapCache.getIcon("repair")) |
217 |
216 |
218 self.__pip = pip |
217 self.__pip = pip |
219 |
218 |
220 self.packagesList.header().setSortIndicator( |
219 self.packagesList.header().setSortIndicator( |
221 PipPackagesWidget.PackageColumn, Qt.SortOrder.AscendingOrder |
220 PipPackagesWidget.PackageColumn, Qt.SortOrder.AscendingOrder |
478 |
480 |
479 @param name name of the selected Python environment |
481 @param name name of the selected Python environment |
480 @type str |
482 @type str |
481 """ |
483 """ |
482 if name != self.__selectedEnvironment: |
484 if name != self.__selectedEnvironment: |
|
485 if not name: |
|
486 self.environmentPathLabel.setPath("") |
|
487 else: |
|
488 self.environmentPathLabel.setPath( |
|
489 self.__pip.getVirtualenvInterpreter(name) |
|
490 ) |
|
491 |
483 if self.viewToggleButton.isChecked(): |
492 if self.viewToggleButton.isChecked(): |
484 self.__refreshDependencyTree() |
493 self.__refreshDependencyTree() |
485 else: |
494 else: |
486 self.__refreshPackagesList() |
495 self.__refreshPackagesList() |
487 self.__selectedEnvironment = name |
496 self.__selectedEnvironment = name |
1596 itm.setText( |
1605 itm.setText( |
1597 PipPackagesWidget.VulnerabilityColumn, ", ".join(affected) |
1606 PipPackagesWidget.VulnerabilityColumn, ", ".join(affected) |
1598 ) |
1607 ) |
1599 itm.setIcon( |
1608 itm.setIcon( |
1600 PipPackagesWidget.VulnerabilityColumn, |
1609 PipPackagesWidget.VulnerabilityColumn, |
1601 UI.PixmapCache.getIcon("securityLow"), |
1610 EricPixmapCache.getIcon("securityLow"), |
1602 ) |
1611 ) |
1603 |
1612 |
1604 elif error in ( |
1613 elif error in ( |
1605 VulnerabilityCheckError.FullDbUnavailable, |
1614 VulnerabilityCheckError.FullDbUnavailable, |
1606 VulnerabilityCheckError.SummaryDbUnavailable, |
1615 VulnerabilityCheckError.SummaryDbUnavailable, |
1772 ) |
1781 ) |
1773 specifierSet = SpecifierSet(specifiers=spec) |
1782 specifierSet = SpecifierSet(specifiers=spec) |
1774 if not specifierSet.contains(dependency["installed_version"]): |
1783 if not specifierSet.contains(dependency["installed_version"]): |
1775 itm.setIcon( |
1784 itm.setIcon( |
1776 PipPackagesWidget.DepRequiredVersionColumn, |
1785 PipPackagesWidget.DepRequiredVersionColumn, |
1777 UI.PixmapCache.getIcon("warning"), |
1786 EricPixmapCache.getIcon("warning"), |
1778 ) |
1787 ) |
1779 |
1788 |
1780 elif dependency["required_version"].lower() == "any": |
1789 elif dependency["required_version"].lower() == "any": |
1781 itm.setText(PipPackagesWidget.DepRequiredVersionColumn, self.tr("any")) |
1790 itm.setText(PipPackagesWidget.DepRequiredVersionColumn, self.tr("any")) |
1782 |
1791 |