PipxInterface/PipxDependenciesDialog.py

changeset 49
ec976c5b88ae
child 90
0949844ea0e3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PipxInterface/PipxDependenciesDialog.py	Tue Jul 30 17:45:46 2024 +0200
@@ -0,0 +1,78 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2024 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to show the package dependencies.
+"""
+
+from PyQt6.QtCore import Qt
+from PyQt6.QtWidgets import QDialog, QTreeWidgetItem
+
+from .Ui_PipxDependenciesDialog import Ui_PipxDependenciesDialog
+
+
+class PipxDependenciesDialog(QDialog, Ui_PipxDependenciesDialog):
+    """
+    Class implementing a dialog to show the package dependencies.
+    """
+
+    AllMode = 0
+    UptodateMode = 1
+    OutdatedMode = 2
+
+    DependencyColumn = 0
+    InstalledVersionColumn = 1
+    AvailableVersionColumn = 2
+
+    def __init__(self, package, dependencies, mode, parent=None):
+        """
+        Constructor
+
+        @param package name of the package
+        @type str
+        @param dependencies list of package dependency data
+        @type list of tuple of (str, str, str) or list of tuple of (str, str)
+        @param mode dialog mode
+        @type int
+        @param parent reference to the parent widget (defaults to None)
+        @type QWidget (optional)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+
+        if mode != PipxDependenciesDialog.OutdatedMode:
+            self.dependenciesList.hideColumn(
+                PipxDependenciesDialog.AvailableVersionColumn
+            )
+
+        if mode == PipxDependenciesDialog.OutdatedMode:
+            headerMsg = self.tr("Outdated Dependencies of package <b>{0}</b>")
+        elif mode == PipxDependenciesDialog.UptodateMode:
+            headerMsg = self.tr("Up-to-date Dependencies of package <b>{0}</b>")
+        else:
+            headerMsg = self.tr("Dependencies of package <b>{0}</b>")
+        self.headerLabel.setText(headerMsg.format(package))
+
+        for dependency in dependencies:
+            QTreeWidgetItem(self.dependenciesList, list(dependency))
+
+        self.dependenciesList.sortItems(
+            PipxDependenciesDialog.DependencyColumn, Qt.SortOrder.AscendingOrder
+        )
+        self.__resizeColumns()
+
+    def __resizeColumns(self):
+        """
+        Private method to resize the columns of the dependencies list.
+        """
+        self.dependenciesList.header().setStretchLastSection(True)
+        self.dependenciesList.resizeColumnToContents(
+            PipxDependenciesDialog.DependencyColumn
+        )
+        self.dependenciesList.resizeColumnToContents(
+            PipxDependenciesDialog.InstalledVersionColumn
+        )
+        self.dependenciesList.resizeColumnToContents(
+            PipxDependenciesDialog.AvailableVersionColumn
+        )

eric ide

mercurial