src/eric7/PipInterface/PipPackageDetailsDialog.py

branch
eric7
changeset 9676
9edcc7302ac4
parent 9659
3152923264c2
child 10105
5765f4c8543f
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:

eric ide

mercurial