144 ShowProcessGeneralMode = 0 |
144 ShowProcessGeneralMode = 0 |
145 ShowProcessClassifiersMode = 1 |
145 ShowProcessClassifiersMode = 1 |
146 ShowProcessEntryPointsMode = 2 |
146 ShowProcessEntryPointsMode = 2 |
147 ShowProcessFilesListMode = 3 |
147 ShowProcessFilesListMode = 3 |
148 |
148 |
149 SearchVersionRole = Qt.UserRole + 1 |
149 SearchVersionRole = Qt.ItemDataRole.UserRole + 1 |
150 |
150 |
151 def __init__(self, pip, parent=None): |
151 def __init__(self, pip, parent=None): |
152 """ |
152 """ |
153 Constructor |
153 Constructor |
154 |
154 |
162 |
162 |
163 self.pipMenuButton.setObjectName( |
163 self.pipMenuButton.setObjectName( |
164 "pip_supermenu_button") |
164 "pip_supermenu_button") |
165 self.pipMenuButton.setIcon(UI.PixmapCache.getIcon("superMenu")) |
165 self.pipMenuButton.setIcon(UI.PixmapCache.getIcon("superMenu")) |
166 self.pipMenuButton.setToolTip(self.tr("pip Menu")) |
166 self.pipMenuButton.setToolTip(self.tr("pip Menu")) |
167 self.pipMenuButton.setPopupMode(QToolButton.InstantPopup) |
167 self.pipMenuButton.setPopupMode( |
168 self.pipMenuButton.setToolButtonStyle(Qt.ToolButtonIconOnly) |
168 QToolButton.ToolButtonPopupMode.InstantPopup) |
169 self.pipMenuButton.setFocusPolicy(Qt.NoFocus) |
169 self.pipMenuButton.setToolButtonStyle( |
|
170 Qt.ToolButtonStyle.ToolButtonIconOnly) |
|
171 self.pipMenuButton.setFocusPolicy(Qt.FocusPolicy.NoFocus) |
170 self.pipMenuButton.setAutoRaise(True) |
172 self.pipMenuButton.setAutoRaise(True) |
171 self.pipMenuButton.setShowMenuInside(True) |
173 self.pipMenuButton.setShowMenuInside(True) |
172 |
174 |
173 self.refreshButton.setIcon(UI.PixmapCache.getIcon("reload")) |
175 self.refreshButton.setIcon(UI.PixmapCache.getIcon("reload")) |
174 self.upgradeButton.setIcon(UI.PixmapCache.getIcon("1uparrow")) |
176 self.upgradeButton.setIcon(UI.PixmapCache.getIcon("1uparrow")) |
181 self.installUserSiteButton.setIcon(UI.PixmapCache.getIcon("addUser")) |
183 self.installUserSiteButton.setIcon(UI.PixmapCache.getIcon("addUser")) |
182 self.showDetailsButton.setIcon(UI.PixmapCache.getIcon("info")) |
184 self.showDetailsButton.setIcon(UI.PixmapCache.getIcon("info")) |
183 |
185 |
184 self.__pip = pip |
186 self.__pip = pip |
185 |
187 |
186 self.packagesList.header().setSortIndicator(0, Qt.AscendingOrder) |
188 self.packagesList.header().setSortIndicator( |
|
189 0, Qt.SortOrder.AscendingOrder) |
187 |
190 |
188 self.__infoLabels = { |
191 self.__infoLabels = { |
189 "name": self.tr("Name:"), |
192 "name": self.tr("Name:"), |
190 "version": self.tr("Version:"), |
193 "version": self.tr("Version:"), |
191 "location": self.tr("Location:"), |
194 "location": self.tr("Location:"), |
271 """ |
278 """ |
272 pipVersionTuple = (0, 0, 0) |
279 pipVersionTuple = (0, 0, 0) |
273 venvName = self.environmentsComboBox.currentText() |
280 venvName = self.environmentsComboBox.currentText() |
274 if venvName: |
281 if venvName: |
275 pipList = self.packagesList.findItems( |
282 pipList = self.packagesList.findItems( |
276 "pip", Qt.MatchExactly | Qt.MatchCaseSensitive) |
283 "pip", |
|
284 Qt.MatchFlag.MatchExactly | Qt.MatchFlag.MatchCaseSensitive |
|
285 ) |
277 if len(pipList) > 0: |
286 if len(pipList) > 0: |
278 pipVersionTuple = Globals.versionToTuple(pipList[0].text(1)) |
287 pipVersionTuple = Globals.versionToTuple(pipList[0].text(1)) |
279 |
288 |
280 return pipVersionTuple |
289 return pipVersionTuple |
281 |
290 |
375 notRequired=self.notRequiredCheckBox.isChecked(), |
384 notRequired=self.notRequiredCheckBox.isChecked(), |
376 usersite=self.userCheckBox.isChecked(), |
385 usersite=self.userCheckBox.isChecked(), |
377 ) |
386 ) |
378 for package, _version, latest in outdatedPackages: |
387 for package, _version, latest in outdatedPackages: |
379 items = self.packagesList.findItems( |
388 items = self.packagesList.findItems( |
380 package, Qt.MatchExactly | Qt.MatchCaseSensitive) |
389 package, |
|
390 Qt.MatchFlag.MatchExactly | |
|
391 Qt.MatchFlag.MatchCaseSensitive |
|
392 ) |
381 if items: |
393 if items: |
382 itm = items[0] |
394 itm = items[0] |
383 itm.setText(2, latest) |
395 itm.setText(2, latest) |
384 |
396 |
385 self.packagesList.sortItems(0, Qt.AscendingOrder) |
397 self.packagesList.sortItems(0, Qt.SortOrder.AscendingOrder) |
386 for col in range(self.packagesList.columnCount()): |
398 for col in range(self.packagesList.columnCount()): |
387 self.packagesList.resizeColumnToContents(col) |
399 self.packagesList.resizeColumnToContents(col) |
388 self.packagesList.setUpdatesEnabled(True) |
400 self.packagesList.setUpdatesEnabled(True) |
389 self.statusLabel.hide() |
401 self.statusLabel.hide() |
390 |
402 |
488 mode = self.ShowProcessEntryPointsMode |
500 mode = self.ShowProcessEntryPointsMode |
489 self.infoWidget.scrollToTop() |
501 self.infoWidget.scrollToTop() |
490 |
502 |
491 header = self.infoWidget.header() |
503 header = self.infoWidget.header() |
492 header.setStretchLastSection(False) |
504 header.setStretchLastSection(False) |
493 header.resizeSections(QHeaderView.ResizeToContents) |
505 header.resizeSections(QHeaderView.ResizeMode.ResizeToContents) |
494 if ( |
506 if ( |
495 header.sectionSize(0) + header.sectionSize(1) < |
507 header.sectionSize(0) + header.sectionSize(1) < |
496 header.width() |
508 header.width() |
497 ): |
509 ): |
498 header.setStretchLastSection(True) |
510 header.setStretchLastSection(True) |
557 |
569 |
558 with E5OverrideCursor(): |
570 with E5OverrideCursor(): |
559 self.__populateEnvironments() |
571 self.__populateEnvironments() |
560 |
572 |
561 index = self.environmentsComboBox.findText( |
573 index = self.environmentsComboBox.findText( |
562 currentEnvironment, Qt.MatchExactly | Qt.MatchCaseSensitive) |
574 currentEnvironment, |
|
575 Qt.MatchFlag.MatchExactly | Qt.MatchFlag.MatchCaseSensitive |
|
576 ) |
563 if index != -1: |
577 if index != -1: |
564 self.environmentsComboBox.setCurrentIndex(index) |
578 self.environmentsComboBox.setCurrentIndex(index) |
565 |
579 |
566 self.__updateActionButtons() |
580 self.__updateActionButtons() |
567 |
581 |
675 @type bool |
689 @type bool |
676 """ |
690 """ |
677 self.searchWidget.setVisible(checked) |
691 self.searchWidget.setVisible(checked) |
678 |
692 |
679 if checked: |
693 if checked: |
680 self.searchEditName.setFocus(Qt.OtherFocusReason) |
694 self.searchEditName.setFocus(Qt.FocusReason.OtherFocusReason) |
681 self.searchEditName.selectAll() |
695 self.searchEditName.selectAll() |
682 |
696 |
683 self.__updateSearchActionButtons() |
697 self.__updateSearchActionButtons() |
684 self.__updateSearchButton() |
698 self.__updateSearchButton() |
685 |
699 |
733 urlQuery.addQueryItem("q", searchTerm) |
747 urlQuery.addQueryItem("q", searchTerm) |
734 url = QUrl(self.__pip.getIndexUrlSearch()) |
748 url = QUrl(self.__pip.getIndexUrlSearch()) |
735 url.setQuery(urlQuery) |
749 url.setQuery(urlQuery) |
736 |
750 |
737 request = QNetworkRequest(QUrl(url)) |
751 request = QNetworkRequest(QUrl(url)) |
738 request.setAttribute(QNetworkRequest.CacheLoadControlAttribute, |
752 request.setAttribute( |
739 QNetworkRequest.AlwaysNetwork) |
753 QNetworkRequest.Attribute.CacheLoadControlAttribute, |
|
754 QNetworkRequest.CacheLoadControl.AlwaysNetwork) |
740 reply = self.__pip.getNetworkAccessManager().get(request) |
755 reply = self.__pip.getNetworkAccessManager().get(request) |
741 reply.finished.connect( |
756 reply.finished.connect( |
742 lambda: self.__searchResponse(reply)) |
757 lambda: self.__searchResponse(reply)) |
743 self.__replies.append(reply) |
758 self.__replies.append(reply) |
744 |
759 |
753 self.__replies.remove(reply) |
768 self.__replies.remove(reply) |
754 |
769 |
755 urlQuery = QUrlQuery(reply.url()) |
770 urlQuery = QUrlQuery(reply.url()) |
756 searchTerm = urlQuery.queryItemValue("q") |
771 searchTerm = urlQuery.queryItemValue("q") |
757 |
772 |
758 if reply.error() != QNetworkReply.NoError: |
773 if reply.error() != QNetworkReply.NetworkError.NoError: |
759 E5MessageBox.warning( |
774 E5MessageBox.warning( |
760 None, |
775 None, |
761 self.tr("Search PyPI"), |
776 self.tr("Search PyPI"), |
762 self.tr( |
777 self.tr( |
763 "<p>Received an error while searching for <b>{0}</b>.</p>" |
778 "<p>Received an error while searching for <b>{0}</b>.</p>" |
803 ]) |
818 ]) |
804 itm.setData(0, self.SearchVersionRole, result['version']) |
819 itm.setData(0, self.SearchVersionRole, result['version']) |
805 |
820 |
806 header = self.searchResultList.header() |
821 header = self.searchResultList.header() |
807 header.setStretchLastSection(False) |
822 header.setStretchLastSection(False) |
808 header.resizeSections(QHeaderView.ResizeToContents) |
823 header.resizeSections(QHeaderView.ResizeMode.ResizeToContents) |
809 headerSize = 0 |
824 headerSize = 0 |
810 for col in range(header.count()): |
825 for col in range(header.count()): |
811 headerSize += header.sectionSize(col) |
826 headerSize += header.sectionSize(col) |
812 if headerSize < header.width(): |
827 if headerSize < header.width(): |
813 header.setStretchLastSection(True) |
828 header.setStretchLastSection(True) |
819 Private slot performing the search finishing actions. |
834 Private slot performing the search finishing actions. |
820 """ |
835 """ |
821 self.__updateSearchActionButtons() |
836 self.__updateSearchActionButtons() |
822 self.__updateSearchButton() |
837 self.__updateSearchButton() |
823 |
838 |
824 self.searchEditName.setFocus(Qt.OtherFocusReason) |
839 self.searchEditName.setFocus(Qt.FocusReason.OtherFocusReason) |
825 |
840 |
826 @pyqtSlot() |
841 @pyqtSlot() |
827 def on_installButton_clicked(self): |
842 def on_installButton_clicked(self): |
828 """ |
843 """ |
829 Private slot to handle pressing the Install button.. |
844 Private slot to handle pressing the Install button.. |
1079 """ |
1094 """ |
1080 venvName = self.environmentsComboBox.currentText() |
1095 venvName = self.environmentsComboBox.currentText() |
1081 if venvName: |
1096 if venvName: |
1082 from .PipPackagesInputDialog import PipPackagesInputDialog |
1097 from .PipPackagesInputDialog import PipPackagesInputDialog |
1083 dlg = PipPackagesInputDialog(self, self.tr("Install Packages")) |
1098 dlg = PipPackagesInputDialog(self, self.tr("Install Packages")) |
1084 if dlg.exec() == QDialog.Accepted: |
1099 if dlg.exec() == QDialog.DialogCode.Accepted: |
1085 packages, user = dlg.getData() |
1100 packages, user = dlg.getData() |
1086 self.executeInstallPackages(packages, userSite=user) |
1101 self.executeInstallPackages(packages, userSite=user) |
1087 |
1102 |
1088 @pyqtSlot() |
1103 @pyqtSlot() |
1089 def __installLocalPackage(self): |
1104 def __installLocalPackage(self): |
1092 """ |
1107 """ |
1093 venvName = self.environmentsComboBox.currentText() |
1108 venvName = self.environmentsComboBox.currentText() |
1094 if venvName: |
1109 if venvName: |
1095 from .PipFileSelectionDialog import PipFileSelectionDialog |
1110 from .PipFileSelectionDialog import PipFileSelectionDialog |
1096 dlg = PipFileSelectionDialog(self, "package") |
1111 dlg = PipFileSelectionDialog(self, "package") |
1097 if dlg.exec() == QDialog.Accepted: |
1112 if dlg.exec() == QDialog.DialogCode.Accepted: |
1098 package, user = dlg.getData() |
1113 package, user = dlg.getData() |
1099 if package and os.path.exists(package): |
1114 if package and os.path.exists(package): |
1100 self.executeInstallPackages([package], userSite=user) |
1115 self.executeInstallPackages([package], userSite=user) |
1101 |
1116 |
1102 @pyqtSlot() |
1117 @pyqtSlot() |