diff -r 92f73a6f168d -r 9edcc7302ac4 src/eric7/PipInterface/PipPackageDetailsDialog.py --- a/src/eric7/PipInterface/PipPackageDetailsDialog.py Wed Jan 04 16:45:57 2023 +0100 +++ b/src/eric7/PipInterface/PipPackageDetailsDialog.py Wed Jan 04 16:49:13 2023 +0100 @@ -76,6 +76,7 @@ self.__populateDetails(detailsData["info"]) self.__populateDownloadUrls(detailsData["urls"]) + self.__populateProjectUrls(detailsData["info"]["project_urls"]) self.__populateRequiresProvides(detailsData["info"]) self.__populateVulnerabilities(vulnerabilities) @@ -113,7 +114,12 @@ self.platformLabel.setText(self.__sanitize(detailsData["platform"])) self.homePageLabel.setText( '<a href="{0}">{0}</a>'.format( - self.__sanitize(detailsData["home_page"], forUrl=True) + self.__sanitize( + detailsData["project_urls"]["Homepage"] + if "Homepage" in detailsData["project_urls"] + else detailsData["home_page"], + forUrl=True, + ) ) ) self.packageUrlLabel.setText( @@ -128,7 +134,12 @@ ) self.docsUrlLabel.setText( '<a href="{0}">{0}</a>'.format( - self.__sanitize(detailsData["docs_url"], forUrl=True) + self.__sanitize( + detailsData["project_urls"]["Documentation"] + if "Documentation" in detailsData["project_urls"] + else detailsData["docs_url"], + forUrl=True, + ) ) ) self.classifiersList.addItems(detailsData["classifiers"]) @@ -183,9 +194,34 @@ self.downloadUrlsList.setItemWidget(itm, 0, urlLabel) header = self.downloadUrlsList.header() header.resizeSections(QHeaderView.ResizeMode.ResizeToContents) + header.setStretchLastSection(True) else: self.infoWidget.setTabVisible(index, False) + def __populateProjectUrls(self, urls): + """ + Private method to populate the 'Project URLs' tab. + + @param urls dictionary containing the defined project URLs + @type dict + """ + index = self.infoWidget.indexOf(self.projectUrls) + if urls: + self.infoWidget.setTabVisible(index, True) + for url in urls: + itm = QTreeWidgetItem(self.projectUrlsList, [url, ""]) + urlLabel = QLabel('<a href="{0}">{0}</a>'.format(urls[url])) + urlLabel.setTextInteractionFlags( + Qt.TextInteractionFlag.LinksAccessibleByMouse + ) + urlLabel.setOpenExternalLinks(True) + self.projectUrlsList.setItemWidget(itm, 1, urlLabel) + header = self.projectUrlsList.header() + header.resizeSections(QHeaderView.ResizeMode.ResizeToContents) + header.setStretchLastSection(True) + else: + self.infoWidget.setTabVisible(index, True) + def __populateRequiresProvides(self, detailsData): """ Private method to populate the requires/provides tab. @@ -243,7 +279,7 @@ Utilities.html_encode(vulnerability.advisory).replace( "\r\n", "<br/>" ) - ) + ), ), ) else: