PipxInterface/PipxPackagesInputDialog.py

Thu, 27 Jun 2024 17:50:51 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 27 Jun 2024 17:50:51 +0200
changeset 12
a09f763d5e1f
parent 9
2ab7d3ac8283
child 13
e0359a1339fe
permissions
-rw-r--r--

Added functionality to reinstall single or all pipx managed packages.

9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2024 Detlev Offenbach <detlev@die-offenbachs.de>
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to enter package specifications.
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 from PyQt6.QtCore import pyqtSlot
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 from PyQt6.QtWidgets import QDialog, QDialogButtonBox
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from .Ui_PipxPackagesInputDialog import Ui_PipxPackagesInputDialog
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 class PipxPackagesInputDialog(QDialog, Ui_PipxPackagesInputDialog):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 Class implementing a dialog to enter package specifications and installation
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 options.
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 def __init__(self, title, install=True, parent=None):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 Constructor
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 @param title dialog title
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 @type str
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 @param install flag indicating an install action
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 @type bool
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 @param parent reference to the parent widget
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 @type QWidget
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 super().__init__(parent)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 self.setupUi(self)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 self.setWindowTitle(title)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(False)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 msh = self.minimumSizeHint()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 self.resize(max(self.width(), msh.width()), msh.height())
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @pyqtSlot(str)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 def on_packagesEdit_textChanged(self, txt):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 Private slot handling entering package names.
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 @param txt name of the requirements file
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 @type str
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(bool(txt))
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 def getData(self):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 Public method to get the entered data.
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 @return tuple with the list of package specifications, the desired Python
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 interpreter version, a flag indicating to fetch a missing interpreter
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 from GitHub, a flag indicating to force the installation and a flag
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 indicating to give access to the system site-packages directory.
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 @rtype tuple of (list of str, str, bool, bool, bool)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 return (
12
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
64 [p.strip() for p in self.packagesEdit.text().split()],
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 self.interpreterVersionEdit.text().strip(),
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.fetchMissingCheckBox.isChecked(),
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 self.forceCheckBox.isChecked(),
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.systemSitePackagesCheckBox.isChecked(),
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 )

eric ide

mercurial