PipxInterface/PipxWidget.py

Sun, 29 Dec 2024 14:56:04 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 29 Dec 2024 14:56:04 +0100
changeset 121
8deb7d8d9b86
parent 116
0f49bfab0768
permissions
-rw-r--r--

Prepared a new release.

2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
104
45c88e73e3dd Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
3 # Copyright (c) 2024 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the pipx management widget.
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
47
b898d1a77ab0 New release with a bug fix.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
10 import contextlib
10
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
11 import os
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
12
31
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
13 import psutil
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
14
44
e5e923c6a6db Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
15 from PyQt6.QtCore import Qt, QTimer, pyqtSlot
36
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
16 from PyQt6.QtGui import QIcon
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
17 from PyQt6.QtWidgets import QDialog, QMenu, QTreeWidgetItem, QWidget
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from eric7.EricGui import EricPixmapCache
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
20 from eric7.EricGui.EricOverrideCursor import EricOverrideCursor
10
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
21 from eric7.EricWidgets import EricFileDialog, EricMessageBox
16
c06fb4cb120e Implemented the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
22 from eric7.EricWidgets.EricApplication import ericApp
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 from .Pipx import Pipx
4
097a06104774 Implemented two foundational dialogs for executing pipx commands and running applications from the list.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
25 from .PipxAppStartDialog import PipxAppStartDialog
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
26 from .PipxDependenciesDialog import PipxDependenciesDialog
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 from .Ui_PipxWidget import Ui_PipxWidget
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 class PipxWidget(QWidget, Ui_PipxWidget):
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
78
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
32 Class implementing the pipx management widget.
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 PackageColumn = 0
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 VersionColumn = 1
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 PythonVersionColumn = 2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 AppPathRole = Qt.ItemDataRole.UserRole
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
40 VersionRole = Qt.ItemDataRole.UserRole + 1
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
41 LatestVersionRole = Qt.ItemDataRole.UserRole + 2
32
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
42 OutdatedDependenciesRole = Qt.ItemDataRole.UserRole + 3
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 def __init__(self, plugin, fromEric=True, parent=None):
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 Constructor
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 @param plugin reference to the plug-in object
59
a5e7feb2310c Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
49 @type PluginPipxInterface
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 @param fromEric flag indicating the eric-ide mode (defaults to True)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 (True = eric-ide mode, False = application mode)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 @type bool (optional)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 @param parent reference to the parent widget (defaults to None)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 @type QWidget (optional)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 super().__init__(parent)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 self.setupUi(self)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
7
9a98f7260372 Modified the application execution dialog to allow the selection of a working directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
59 self.__plugin = plugin
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.__pipx = Pipx(self)
78
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
61 self.__pipx.outdatedPackage.connect(self.__handleOutdatedPackage)
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 if fromEric:
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 self.layout().setContentsMargins(0, 3, 0, 0)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 else:
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.layout().setContentsMargins(0, 0, 0, 0)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67
106
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
68 iconSuffix = "-dark" if ericApp().usesDarkPalette() else "-light"
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
69
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.pipxMenuButton.setIcon(EricPixmapCache.getIcon("superMenu"))
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 self.refreshButton.setIcon(EricPixmapCache.getIcon("reload"))
10
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
72 self.installButton.setIcon(EricPixmapCache.getIcon("plus"))
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
73 self.outdatedButton.setIcon(EricPixmapCache.getIcon("question"))
10
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
74 self.upgradeButton.setIcon(EricPixmapCache.getIcon("upgrade"))
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
75 self.uninstallButton.setIcon(EricPixmapCache.getIcon("minus"))
106
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
76 self.showOutdatedDependenciesButton.setIcon(
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
77 EricPixmapCache.getIcon(
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
78 os.path.join(
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
79 "PipxInterface", "icons", "dependency{0}".format(iconSuffix)
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
80 )
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
81 )
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
82 )
111
8ace016a3eee Added a shortcut button to repair broken dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
83 self.repairDependenciesButton.setIcon(
8ace016a3eee Added a shortcut button to repair broken dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
84 EricPixmapCache.getIcon(
116
0f49bfab0768 Corrected some f-string related issues, removed some obsolete (commented) code and corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 111
diff changeset
85 os.path.join("PipxInterface", "icons", "repair{0}".format(iconSuffix))
111
8ace016a3eee Added a shortcut button to repair broken dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
86 )
8ace016a3eee Added a shortcut button to repair broken dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
87 )
10
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
88
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
89 self.installButton.clicked.connect(self.__installPackages)
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
90 self.outdatedButton.clicked.connect(self.__checkOutdatedPackages)
11
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
91 self.upgradeButton.clicked.connect(self.__upgradePackage)
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
92 self.uninstallButton.clicked.connect(self.__uninstallPackage)
106
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
93 self.showOutdatedDependenciesButton.clicked.connect(
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
94 self.__showOutdatedDependencies
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
95 )
111
8ace016a3eee Added a shortcut button to repair broken dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
96 self.repairDependenciesButton.clicked.connect(self.__repairBrokenDependencies)
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
98 self.pipxMenuButton.setShowMenuInside(True)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
99
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 self.packagesList.header().setSortIndicator(
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 PipxWidget.PackageColumn, Qt.SortOrder.AscendingOrder
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 )
69
b46e8595155a - bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
103 self.packagesList.itemCollapsed.connect(self.__resizePackagesColumns)
b46e8595155a - bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
104 self.packagesList.itemExpanded.connect(self.__resizePackagesColumns)
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
106 self.__initPipxMenu()
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 self.__showPipxVersion()
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 pipxPaths = self.__pipx.getPipxStrPaths()
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 self.venvsPathEdit.setText(pipxPaths["venvsPath"])
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 self.applicationsPathEdit.setText(pipxPaths["appsPath"])
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 self.manPagesPathEdit.setText(pipxPaths["manPath"])
8
02b45cd11e64 Added the display of the path standalone Python interpreters are installed to.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
113 self.interpretersPathEdit.setText(pipxPaths["pythonPath"])
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114
43
2ef4c1f1adea Added code to indicate the existence of outdated packages or dependencies in the icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
115 QTimer.singleShot(0, self.__populatePackages)
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116
83
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
117 self.__outdatedCheckTimer = QTimer(self)
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
118 self.__outdatedCheckTimer.timeout.connect(self.__checkOutdatedPackages)
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
119
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
120 self.__plugin.preferencesChanged.connect(self.__setOutdatedCheckTimer)
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
121 QTimer.singleShot(10, self.__setOutdatedCheckTimer)
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
122
81
b6280afecc83 Added code to kill running async processes when shutting down the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 78
diff changeset
123 @pyqtSlot()
b6280afecc83 Added code to kill running async processes when shutting down the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 78
diff changeset
124 def shutdown(self):
b6280afecc83 Added code to kill running async processes when shutting down the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 78
diff changeset
125 """
b6280afecc83 Added code to kill running async processes when shutting down the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 78
diff changeset
126 Public slot to perform shutdown actions.
b6280afecc83 Added code to kill running async processes when shutting down the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 78
diff changeset
127 """
b6280afecc83 Added code to kill running async processes when shutting down the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 78
diff changeset
128 self.__pipx.shutdown()
b6280afecc83 Added code to kill running async processes when shutting down the eric IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 78
diff changeset
129
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
130 #######################################################################
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
131 ## Menu related methods below
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
132 #######################################################################
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
133
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
134 def __initPipxMenu(self):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
135 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
136 Private method to create the super menu and attach it to the super
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
137 menu button.
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
138 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
139 ###################################################################
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
140 ## Menu with install related actions
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
141 ###################################################################
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
142
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
143 self.__installSubmenu = QMenu(self.tr("Install"))
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
144 self.__installPackagesAct = self.__installSubmenu.addAction(
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
145 self.tr("Install Packages"), self.__installPackages
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
146 )
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
147 self.__installAllPackagesAct = self.__installSubmenu.addAction(
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
148 self.tr("Install All Packages"), self.__installAllPackages
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
149 )
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
150 self.__installSubmenu.addSeparator()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
151 self.__reinstallPackagesAct = self.__installSubmenu.addAction(
12
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
152 self.tr("Re-Install Selected Package"), self.__reinstallPackage
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
153 )
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
154 self.__reinstallAllPackagesAct = self.__installSubmenu.addAction(
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
155 self.tr("Re-Install All Packages"), self.__reinstallAllPackages
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
156 )
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
157 self.__installSubmenu.addSeparator()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
158 self.__createSpecMetadataAct = self.__installSubmenu.addAction(
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
159 self.tr("Create Spec Metadata File"), self.__createSpecMetadataFile
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
160 )
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
161
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
162 ###################################################################
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
163 ## Menu with upgrade related actions
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
164 ###################################################################
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
165
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
166 self.__upgradeSubmenu = QMenu(self.tr("Upgrade"))
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
167 self.__checkOutdatedPackagesAct = self.__upgradeSubmenu.addAction(
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
168 self.tr("Check Outdated Packages"), self.__checkOutdatedPackages
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
169 )
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
170 self.__upgradeSubmenu.addSeparator()
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
171 self.__upgradePackagesAct = self.__upgradeSubmenu.addAction(
11
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
172 self.tr("Upgrade Selected Package"), self.__upgradePackage
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
173 )
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
174 self.__upgradeAllPackagesAct = self.__upgradeSubmenu.addAction(
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
175 self.tr("Upgrade All Packages"), self.__upgradeAllPackages
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
176 )
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
177 self.__upgradeSubmenu.addSeparator()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
178 self.__upgradeSharedLibsAct = self.__upgradeSubmenu.addAction(
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
179 self.tr("Upgrade Shared Libraries"), self.__upgradeSharedLibs
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
180 )
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
181
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
182 ###################################################################
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
183 ## Menu with uninstall related actions
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
184 ###################################################################
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
185
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
186 self.__uninstallSubmenu = QMenu(self.tr("Uninstall"))
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
187 self.__uninstallPackagesAct = self.__uninstallSubmenu.addAction(
11
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
188 self.tr("Uninstall Selected Package"), self.__uninstallPackage
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
189 )
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
190 self.__uninstallAllPackagesAct = self.__uninstallSubmenu.addAction(
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
191 self.tr("Uninstall All Packages"), self.__uninstallAllPackages
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
192 )
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
193
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
194 ###################################################################
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
195 ## Menu with dependencies related actions
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
196 ###################################################################
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
197
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
198 self.__dependenciseSubmenu = QMenu(self.tr("Dependencies"))
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
199 self.__showDependenciesAct = self.__dependenciseSubmenu.addAction(
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
200 self.tr("Show All Dependencies"), self.__showDependencies
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
201 )
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
202 self.__showOutdatedDependenciesAct = self.__dependenciseSubmenu.addAction(
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
203 self.tr("Show Outdated Dependencies"), self.__showOutdatedDependencies
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
204 )
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
205 self.__showUptodateDependenciesAct = self.__dependenciseSubmenu.addAction(
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
206 self.tr("Show Up-to-date Dependencies"), self.__showUptodateDependencies
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
207 )
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
208 self.__dependenciseSubmenu.addSeparator()
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
209 self.__upgradeDependenciesAct = self.__dependenciseSubmenu.addAction(
106
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
210 self.tr("Upgrade All Dependencies"), self.__upgradeDependencies
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
211 )
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
212
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
213 ###################################################################
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
214 ## Main menu
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
215 ###################################################################
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
216
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
217 self.__pipxMenu = QMenu()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
218 self.__installSubmenuAct = self.__pipxMenu.addMenu(self.__installSubmenu)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
219 self.__pipxMenu.addSeparator()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
220 self.__upgradeSubmenuAct = self.__pipxMenu.addMenu(self.__upgradeSubmenu)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
221 self.__pipxMenu.addSeparator()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
222 self.__uninstallSubmenuAct = self.__pipxMenu.addMenu(self.__uninstallSubmenu)
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
223 self.__pipxMenu.addSeparator()
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
224 self.__dependenciseSubmenuAct = self.__pipxMenu.addMenu(
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
225 self.__dependenciseSubmenu
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
226 )
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
227 self.__pipxMenu.addSeparator()
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
228 self.__pipxMenu.addAction(
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
229 self.tr("Standalone Interpreters"), self.__showInterpreters
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
230 )
16
c06fb4cb120e Implemented the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
231 self.__pipxMenu.addSeparator()
23
4c18addf12b2 Added an interface to the `pipx ensurepath` command.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
232 self.__pipxMenu.addAction(
4c18addf12b2 Added an interface to the `pipx ensurepath` command.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
233 self.tr("Ensure PATH Modifications"), self.__ensurePath
4c18addf12b2 Added an interface to the `pipx ensurepath` command.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
234 )
4c18addf12b2 Added an interface to the `pipx ensurepath` command.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
235 self.__pipxMenu.addSeparator()
16
c06fb4cb120e Implemented the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
236 self.__pipxMenu.addAction(self.tr("Configure..."), self.__pipxConfigure)
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
237
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
238 self.__pipxMenu.aboutToShow.connect(self.__aboutToShowPipxMenu)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
239
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
240 self.pipxMenuButton.setMenu(self.__pipxMenu)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
241
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
242 @pyqtSlot()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
243 def __aboutToShowPipxMenu(self):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
244 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
245 Private slot to set the action enabled status.
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
246 """
61
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
247 selectedPackageItems = self.__selectedPackageItems()
10
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
248
61
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
249 self.__reinstallPackagesAct.setEnabled(len(selectedPackageItems) == 1)
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
250 self.__upgradePackagesAct.setEnabled(
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
251 len(selectedPackageItems) == 1
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
252 and bool(selectedPackageItems[0].data(0, PipxWidget.LatestVersionRole))
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
253 )
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
254 self.__uninstallPackagesAct.setEnabled(len(selectedPackageItems) == 1)
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
255 self.__dependenciseSubmenuAct.setEnabled(len(selectedPackageItems) == 1)
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
256 self.__showOutdatedDependenciesAct.setEnabled(
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
257 len(selectedPackageItems) == 1
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
258 and bool(
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
259 selectedPackageItems[0].data(0, PipxWidget.OutdatedDependenciesRole)
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
260 )
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
261 )
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
262 self.__upgradeDependenciesAct.setEnabled(
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
263 len(selectedPackageItems) == 1
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
264 and bool(
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
265 selectedPackageItems[0].data(0, PipxWidget.OutdatedDependenciesRole)
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
266 )
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
267 )
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
268
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
269 @pyqtSlot()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
270 def __installPackages(self):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
271 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
272 Private slot to install packages to be given by the user.
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
273 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
274 from .PipxPackagesInputDialog import PipxPackagesInputDialog
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
275
95
6d594ca518a7 Changed code to ensure proper parent relationship for modal dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
276 dlg = PipxPackagesInputDialog(self.tr("Install Packages"), parent=self)
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
277 if dlg.exec() == QDialog.DialogCode.Accepted:
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
278 packages, pyVersion, fetchMissing, force, systemSitePackages = dlg.getData()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
279 self.__pipx.installPackages(
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
280 packages,
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
281 interpreterVersion=pyVersion,
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
282 fetchMissingInterpreter=fetchMissing,
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
283 forceVenvModification=force,
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
284 systemSitePackages=systemSitePackages,
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
285 )
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
286 self.on_refreshButton_clicked()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
287
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
288 @pyqtSlot()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
289 def __installAllPackages(self):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
290 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
291 Private slot to install all packages listed in a specification file.
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
292 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
293 from .PipxSpecInputDialog import PipxSpecInputDialog
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
294
95
6d594ca518a7 Changed code to ensure proper parent relationship for modal dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
295 dlg = PipxSpecInputDialog(self.tr("Install All Packages"), parent=self)
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
296 if dlg.exec() == QDialog.DialogCode.Accepted:
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
297 specFile, pyVersion, fetchMissing, force, systemSitePackages = dlg.getData()
10
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
298 self.__pipx.installAllPackages(
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
299 specFile,
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
300 interpreterVersion=pyVersion,
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
301 fetchMissingInterpreter=fetchMissing,
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
302 forceVenvModification=force,
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
303 systemSitePackages=systemSitePackages,
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
304 )
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
305 self.on_refreshButton_clicked()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
306
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
307 @pyqtSlot()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
308 def __createSpecMetadataFile(self):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
309 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
310 Private slot to create a spec metadata file needed by 'pipx install-all'.
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
311 """
10
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
312 specFile, selectedFilter = EricFileDialog.getSaveFileNameAndFilter(
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
313 self,
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
314 self.tr("Create Spec Metadata File"),
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
315 "",
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
316 self.tr("JSON Files (*.json);;All Files (*)"),
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
317 self.tr("JSON Files (*.json)"),
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
318 EricFileDialog.DontConfirmOverwrite,
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
319 )
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
320 if specFile:
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
321 ext = os.path.splitext(specFile)[1]
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
322 if not ext:
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
323 ex = selectedFilter.split("(*")[1].split(")")[0]
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
324 if ex:
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
325 specFile += ex
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
326
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
327 if os.path.exists(specFile):
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
328 ok = EricMessageBox.yesNo(
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
329 self,
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
330 self.tr("Create Spec Metadata File"),
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
331 self.tr(
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
332 "<p>The file <b>{0}</b> exists already. Overwrite it?</p>"
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
333 ).format(specFile),
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
334 )
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
335 if not ok:
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
336 return
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
337
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
338 ok, message = self.__pipx.createSpecMetadataFile(specFile=specFile)
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
339 if ok:
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
340 EricMessageBox.information(
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
341 self,
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
342 self.tr("Create Spec Metadata File"),
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
343 self.tr(
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
344 "<p>The spec metadata file <b>{0}</b> was created"
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
345 " successfully.</p>"
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
346 ).format(specFile),
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
347 )
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
348 else:
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
349 EricMessageBox.critical(
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
350 self,
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
351 self.tr("Create Spec Metadata File"),
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
352 self.tr(
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
353 "<p>The spec metadata file <b>{0}</b> could not be created.</p>"
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
354 "<p>Reason: {1}</p>"
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
355 ).format(specFile, message),
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
356 )
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
357
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
358 @pyqtSlot()
12
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
359 def __reinstallPackage(self):
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
360 """
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
361 Private slot to force a re-installation of the selected package.
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
362 """
12
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
363 from .PipxReinstallDialog import PipxReinstallDialog
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
364
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
365 package = self.__selectedPackages()[0]
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
366 yes = EricMessageBox.yesNo(
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
367 self,
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
368 self.tr("Re-Install Package"),
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
369 self.tr(
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
370 "<p>Shall the package <b>{0}</b> really be reinstalled?</p>"
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
371 ).format(package),
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
372 )
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
373 if yes:
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
374 dlg = PipxReinstallDialog(reinstallAll=False, parent=self)
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
375 if dlg.exec() == QDialog.DialogCode.Accepted:
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
376 pyVersion, fetchMissing, _ = dlg.getData()
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
377 self.__pipx.reinstallPackage(
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
378 package,
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
379 interpreterVersion=pyVersion,
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
380 fetchMissingInterpreter=fetchMissing,
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
381 )
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
382 self.on_refreshButton_clicked()
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
383
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
384 @pyqtSlot()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
385 def __reinstallAllPackages(self):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
386 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
387 Private slot to force a re-installation of all packages.
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
388 """
12
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
389 from .PipxReinstallDialog import PipxReinstallDialog
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
390
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
391 yes = EricMessageBox.yesNo(
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
392 self,
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
393 self.tr("Re-Install All Packages"),
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
394 self.tr("""Do you really want to reinstall all packages?"""),
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
395 )
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
396 if yes:
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
397 dlg = PipxReinstallDialog(reinstallAll=True, parent=self)
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
398 if dlg.exec() == QDialog.DialogCode.Accepted:
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
399 pyVersion, fetchMissing, skipList = dlg.getData()
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
400 self.__pipx.reinstallAllPackages(
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
401 interpreterVersion=pyVersion,
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
402 fetchMissingInterpreter=fetchMissing,
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
403 skipPackages=skipList,
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
404 )
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
405 self.on_refreshButton_clicked()
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
406
61
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
407 def __checkPackageOutdated(self, itm):
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
408 """
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
409 Private method to check, if a package item is outdated or has outdated
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
410 dependencies.
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
411
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
412 @param itm reference to the package item
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
413 @type QTreeWidgetItem
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
414 """
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
415 package = itm.text(PipxWidget.PackageColumn)
78
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
416 self.__pipx.checkPackageOutdated(package)
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
417
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
418 @pyqtSlot(str, str, bool)
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
419 def __handleOutdatedPackage(self, package, latestVersion, outdatedDependencies):
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
420 """
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
421 Private slot to handle the pipx client reporting an outdated package or a
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
422 package with outdated dependencies.
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
423
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
424 @param package name of the package
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
425 @type str
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
426 @param latestVersion latest available version in case outdated
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
427 @type str
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
428 @param outdatedDependencies flag indicating outdated dependencies
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
429 @type bool
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
430 """
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
431 itm = self.__getItemForPackage(package=package)
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
432 if latestVersion:
61
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
433 self.__markPackageOutdated(itm, latestVersion, outdatedDependencies)
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
434 elif (
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
435 self.__plugin.getPreferences("IncludeOutdatedDependencies")
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
436 and outdatedDependencies
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
437 ):
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
438 self.__markPackageDependenciesOutdated(itm)
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
439 else:
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
440 self.__markPackageClean(itm)
78
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
441
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
442 self.__resizePackagesColumns()
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
443 self.__plugin.setOutdatedIndicator(self.__hasOutdatedItems())
61
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
444
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
445 @pyqtSlot()
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
446 def __checkOutdatedPackages(self):
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
447 """
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
448 Private slot to check, if there are any outdated packages.
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
449 """
78
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
450 for row in range(self.packagesList.topLevelItemCount()):
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
451 itm = self.packagesList.topLevelItem(row)
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
452 self.__checkPackageOutdated(itm)
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
453
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
454 @pyqtSlot()
83
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
455 def __setOutdatedCheckTimer(self):
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
456 """
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
457 Private slot to configure the periodic outdated packages check.
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
458 """
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
459 interval = self.__plugin.getPreferences("PeriodicOutdatedCheckInterval")
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
460 # interval is in hours
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
461 if interval:
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
462 self.__outdatedCheckTimer.setInterval(
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
463 interval * 3_600_000 # interval in ms
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
464 )
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
465 self.__outdatedCheckTimer.start()
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
466 else:
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
467 self.__outdatedCheckTimer.stop()
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
468
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
469 self.__plugin.setOutdatedIndicator(self.__hasOutdatedItems())
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
470
d841c572a465 Added the capability to perform a periodic check for outdated packages or packages with outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 81
diff changeset
471 @pyqtSlot()
11
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
472 def __upgradePackage(self):
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
473 """
11
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
474 Private slot to upgrade the selected package.
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
475 """
31
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
476 packageItem = self.__selectedPackageItems()[0]
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
477 runningApps = self.__getRunningApps(self.__packageApps(packageItem))
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
478 if runningApps:
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
479 EricMessageBox.warning(
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
480 self,
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
481 self.tr("Upgrade Selected Package"),
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
482 self.tr(
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
483 "<p>The selected package cannot be upgraded because some of its"
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
484 " apps are running.</p><ul><li>{0}</li></ul><p>Stop these apps"
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
485 " and try again.</p>"
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
486 ).format("</li><li>".join(runningApps)),
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
487 )
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
488 else:
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
489 package = packageItem.text(PipxWidget.PackageColumn)
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
490 self.__pipx.upgradePackage(package)
78
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
491 self.__checkPackageVersion(packageItem)
67
e73ea3ec62cc Fixed a bug causing the update info not being updated after a package or dependency upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
492 self.__checkPackageOutdated(packageItem)
61
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
493
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
494 self.__resizePackagesColumns()
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
495 self.__plugin.setOutdatedIndicator(self.__hasOutdatedItems())
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
496
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
497 @pyqtSlot()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
498 def __upgradeAllPackages(self):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
499 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
500 Private slot to upgrade all packages.
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
501 """
31
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
502 runningApps = self.__getAllRunningApps()
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
503 if runningApps:
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
504 EricMessageBox.warning(
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
505 self,
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
506 self.tr("Upgrade All Packages"),
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
507 self.tr(
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
508 "<p>The packages cannot be upgraded because some of their apps are"
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
509 " running.</p><ul><li>{0}</li></ul><p>Stop these apps and try"
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
510 " again.</p>"
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
511 ).format("</li><li>".join(runningApps)),
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
512 )
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
513 else:
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
514 self.__pipx.upgradeAllPackages()
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
515 self.on_refreshButton_clicked()
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
516
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
517 @pyqtSlot()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
518 def __upgradeSharedLibs(self):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
519 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
520 Private slot to upgrade the shared libraries.
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
521 """
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
522 self.__pipx.upgradeSharedLibraries()
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
523
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
524 @pyqtSlot()
11
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
525 def __uninstallPackage(self):
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
526 """
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
527 Private slot to uninstall the selected package.
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
528 """
11
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
529 package = self.__selectedPackages()[0]
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
530 yes = EricMessageBox.yesNo(
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
531 self,
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
532 self.tr("Uninstall Package"),
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
533 self.tr(
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
534 "<p>Shall the package <b>{0}</b> really be uninstalled?</p>"
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
535 ).format(package),
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
536 )
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
537 if yes:
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
538 self.__pipx.uninstallPackage(package)
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
539 self.on_refreshButton_clicked()
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
540
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
541 @pyqtSlot()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
542 def __uninstallAllPackages(self):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
543 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
544 Private slot to uninstall all packages.
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
545 """
11
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
546 yes = EricMessageBox.yesNo(
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
547 self,
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
548 self.tr("Uninstall All Packages"),
15
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
549 self.tr("<p>Do you really want to uninstall <b>ALL</b> packages?</p>"),
11
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
550 )
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
551 if yes:
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
552 self.__pipx.uninstallAllPackages()
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
553 self.on_refreshButton_clicked()
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
554
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
555 @pyqtSlot()
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
556 def __showInterpreters(self):
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
557 """
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
558 Private slot to show a list of standalone Python interpreters.
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
559 """
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
560 from .PipxInterpretersDialog import PipxInterpretersDialog
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
561
95
6d594ca518a7 Changed code to ensure proper parent relationship for modal dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
562 dlg = PipxInterpretersDialog(self.__pipx, parent=self)
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
563 dlg.exec()
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
564
16
c06fb4cb120e Implemented the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
565 @pyqtSlot()
c06fb4cb120e Implemented the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
566 def __pipxConfigure(self):
c06fb4cb120e Implemented the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
567 """
c06fb4cb120e Implemented the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
568 Private slot to show the pipx configuration page.
c06fb4cb120e Implemented the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
569 """
c06fb4cb120e Implemented the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
570 ericApp().getObject("UserInterface").showPreferences("pipxPage")
c06fb4cb120e Implemented the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
571
23
4c18addf12b2 Added an interface to the `pipx ensurepath` command.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
572 @pyqtSlot()
4c18addf12b2 Added an interface to the `pipx ensurepath` command.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
573 def __ensurePath(self):
4c18addf12b2 Added an interface to the `pipx ensurepath` command.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
574 """
4c18addf12b2 Added an interface to the `pipx ensurepath` command.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
575 Private slot to ensure that the directory where pipx stores apps is
4c18addf12b2 Added an interface to the `pipx ensurepath` command.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
576 in your PATH environment variable.
4c18addf12b2 Added an interface to the `pipx ensurepath` command.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
577 """
4c18addf12b2 Added an interface to the `pipx ensurepath` command.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
578 self.__pipx.ensurePath()
4c18addf12b2 Added an interface to the `pipx ensurepath` command.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
579
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
580 @pyqtSlot()
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
581 def __showDependencies(self):
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
582 """
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
583 Private slot to show a dialog with the dependencies of the selected package.
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
584 """
78
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
585 with EricOverrideCursor():
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
586 package = self.__selectedPackages()[0]
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
587 dependencies = self.__pipx.getAllPackageDependencies(package=package)
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
588
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
589 dlg = PipxDependenciesDialog(
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
590 package=package,
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
591 dependencies=dependencies,
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
592 mode=PipxDependenciesDialog.AllMode,
95
6d594ca518a7 Changed code to ensure proper parent relationship for modal dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
593 parent=self,
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
594 )
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
595 dlg.exec()
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
596
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
597 @pyqtSlot()
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
598 def __showOutdatedDependencies(self):
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
599 """
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
600 Private slot to show a dialog with the outdated dependencies of the selected
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
601 package.
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
602 """
78
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
603 with EricOverrideCursor():
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
604 package = self.__selectedPackages()[0]
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
605 dependencies = self.__pipx.getOutdatedPackageDependencies(package=package)
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
606
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
607 dlg = PipxDependenciesDialog(
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
608 package=package,
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
609 dependencies=dependencies,
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
610 mode=PipxDependenciesDialog.OutdatedMode,
95
6d594ca518a7 Changed code to ensure proper parent relationship for modal dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
611 parent=self,
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
612 )
90
0949844ea0e3 Added an 'Upgrade Dependencies' button to the dialog showing outdated dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 83
diff changeset
613 result = dlg.exec()
106
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
614 if result == PipxDependenciesDialog.UpgradeAllDependenciesAction:
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
615 # 'Upgrade All Dependencies' clicked
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
616 dependencies = dlg.getDependencies(selectedOnly=False)
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
617 self.__upgradeDependencies(dependencies=dependencies)
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
618 elif result == PipxDependenciesDialog.UpgradeSelectedDependenciesAction:
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
619 # 'Upgrade Selected Dependencies' clicked
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
620 dependencies = dlg.getDependencies(selectedOnly=True)
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
621 self.__upgradeDependencies(dependencies=dependencies)
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
622
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
623 @pyqtSlot()
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
624 def __showUptodateDependencies(self):
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
625 """
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
626 Private slot to show a dialog with the up-to-date dependencies of the selected
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
627 package.
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
628 """
78
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
629 with EricOverrideCursor():
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
630 package = self.__selectedPackages()[0]
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
631 dependencies = self.__pipx.getUptodatePackageDependencies(package=package)
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
632
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
633 dlg = PipxDependenciesDialog(
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
634 package=package,
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
635 dependencies=dependencies,
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
636 mode=PipxDependenciesDialog.UptodateMode,
95
6d594ca518a7 Changed code to ensure proper parent relationship for modal dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
637 parent=self,
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
638 )
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
639 dlg.exec()
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
640
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
641 @pyqtSlot()
106
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
642 def __upgradeDependencies(self, dependencies=None):
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
643 """
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
644 Private slot to upgrade the outdated dependencies of the selected package.
106
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
645
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
646 @param dependencies list of dependencies to be upgraded or None to
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
647 upgrade all outdated dependencies (defaults to None)
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
648 @type list of str or None (optional)
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
649 """
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
650 package = self.__selectedPackages()[0]
106
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
651 self.__pipx.upgradePackageDependencies(
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
652 package=package, dependencies=dependencies
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
653 )
61
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
654 packageItem = self.__getItemForPackage(package)
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
655 if packageItem:
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
656 self.__checkPackageOutdated(packageItem)
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
657
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
658 self.__resizePackagesColumns()
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
659 self.__plugin.setOutdatedIndicator(self.__hasOutdatedItems())
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
660
111
8ace016a3eee Added a shortcut button to repair broken dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
661 @pyqtSlot()
8ace016a3eee Added a shortcut button to repair broken dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
662 def __repairBrokenDependencies(self):
8ace016a3eee Added a shortcut button to repair broken dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
663 """
8ace016a3eee Added a shortcut button to repair broken dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
664 Private slot to repair broken (unmet) dependencies.
116
0f49bfab0768 Corrected some f-string related issues, removed some obsolete (commented) code and corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 111
diff changeset
665
111
8ace016a3eee Added a shortcut button to repair broken dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
666 Note: This could be necessary after a dependencies upgrade. pip will tell you.
8ace016a3eee Added a shortcut button to repair broken dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
667 """
8ace016a3eee Added a shortcut button to repair broken dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
668 package = self.__selectedPackages()[0]
8ace016a3eee Added a shortcut button to repair broken dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
669 self.__pipx.repairBrokenDependencies(package)
8ace016a3eee Added a shortcut button to repair broken dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
670
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
671 #######################################################################
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
672 ## Main widget related methods below
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
673 #######################################################################
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
674
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
675 def __showPipxVersion(self):
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
676 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
677 Private method to show the pipx version in the widget header.
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
678 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
679 self.pipxVersionLabel.setText(
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
680 self.tr("<b>pipx Version {0}</b>").format(self.__pipx.getPipxVersion())
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
681 )
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
682
69
b46e8595155a - bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
683 @pyqtSlot()
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
684 def __resizePackagesColumns(self):
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
685 """
69
b46e8595155a - bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
686 Private slot to resize the columns of the packages list.
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
687 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
688 self.packagesList.header().setStretchLastSection(True)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
689 self.packagesList.resizeColumnToContents(PipxWidget.PackageColumn)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
690 self.packagesList.resizeColumnToContents(PipxWidget.VersionColumn)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
691 self.packagesList.resizeColumnToContents(PipxWidget.PythonVersionColumn)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
692
32
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
693 def __markPackageOutdated(self, item, latestVersion, outdatedDependencies):
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
694 """
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
695 Private method to mark the given package item as outdated.
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
696
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
697 @param item reference to the outdated package item
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
698 @type QTreeWidgetItem
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
699 @param latestVersion latest version of the package
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
700 @type str
36
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
701 @param outdatedDependencies flag indicating the existence of outdated
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
702 dependencies
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
703 @type bool
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
704 """
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
705 version = item.data(0, PipxWidget.VersionRole)
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
706 item.setData(0, PipxWidget.LatestVersionRole, latestVersion)
32
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
707 item.setData(0, PipxWidget.OutdatedDependenciesRole, outdatedDependencies)
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
708 item.setText(
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
709 PipxWidget.VersionColumn,
15
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
710 self.tr("{0} ({1})", "current version, latest version").format(
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
711 version, latestVersion
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
712 ),
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
713 )
31
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
714 item.setIcon(PipxWidget.VersionColumn, EricPixmapCache.getIcon("upgrade"))
69
b46e8595155a - bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
715 if outdatedDependencies:
b46e8595155a - bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
716 item.setToolTip(
b46e8595155a - bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
717 PipxWidget.VersionColumn,
b46e8595155a - bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
718 self.tr("package and some dependencies outdated"),
b46e8595155a - bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
719 )
b46e8595155a - bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
720 else:
b46e8595155a - bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
721 item.setToolTip(PipxWidget.VersionColumn, self.tr("package outdated"))
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
722
32
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
723 def __markPackageDependenciesOutdated(self, item):
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
724 """
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
725 Private method to mark the given package item as having outdated dependencies.
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
726
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
727 @param item reference to the outdated package item
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
728 @type QTreeWidgetItem
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
729 """
67
e73ea3ec62cc Fixed a bug causing the update info not being updated after a package or dependency upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
730 version = item.data(0, PipxWidget.VersionRole)
e73ea3ec62cc Fixed a bug causing the update info not being updated after a package or dependency upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
731 item.setData(0, PipxWidget.LatestVersionRole, "")
32
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
732 item.setData(0, PipxWidget.OutdatedDependenciesRole, True)
67
e73ea3ec62cc Fixed a bug causing the update info not being updated after a package or dependency upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
733 item.setText(PipxWidget.VersionColumn, version)
32
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
734 item.setIcon(PipxWidget.VersionColumn, EricPixmapCache.getIcon("upgrade"))
69
b46e8595155a - bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
735 item.setToolTip(PipxWidget.VersionColumn, self.tr("some dependencies outdated"))
32
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
736
36
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
737 def __markPackageClean(self, item):
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
738 """
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
739 Private method to mark the given package item as clean (i.e. not outdated nor
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
740 having outdated dependencies).
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
741
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
742 @param item reference to the outdated package item
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
743 @type QTreeWidgetItem
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
744 """
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
745 version = item.data(0, PipxWidget.VersionRole)
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
746 item.setData(0, PipxWidget.LatestVersionRole, "")
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
747 item.setData(0, PipxWidget.OutdatedDependenciesRole, False)
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
748 item.setText(PipxWidget.VersionColumn, version)
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
749 item.setIcon(PipxWidget.VersionColumn, QIcon())
69
b46e8595155a - bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 67
diff changeset
750 item.setToolTip(PipxWidget.VersionColumn, self.tr("everything up-to-date"))
36
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
751
78
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
752 def __checkPackageVersion(self, itm):
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
753 """
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
754 Private method to check the version of a package.
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
755
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
756 @param itm reference to the package item
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
757 @type QTreeWidgetItem
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
758 """
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
759 package = itm.text(PipxWidget.PackageColumn)
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
760 version = self.__pipx.getPackageVersion(package)
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
761 itm.setText(PipxWidget.VersionColumn, version)
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
762 itm.setData(0, PipxWidget.VersionRole, version)
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
763
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
764 def __populatePackages(self):
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
765 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
766 Private method to populate the packages list.
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
767 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
768 self.packagesList.clear()
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
769
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
770 packages = self.__pipx.getInstalledPackages()
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
771 for package in packages:
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
772 topItem = QTreeWidgetItem(
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
773 self.packagesList,
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
774 [
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
775 package["name"],
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
776 package["version"],
15
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
777 self.tr("{0}{1}", "Python version, standalone indicator").format(
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
778 package["python"],
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
779 self.tr(" (standalone)") if package["is_standalone"] else "",
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
780 ),
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
781 ],
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
782 )
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
783 topItem.setData(0, PipxWidget.VersionRole, package["version"])
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
784 for app, appPath in package["apps"]:
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
785 itm = QTreeWidgetItem(topItem, [app])
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
786 itm.setData(0, PipxWidget.AppPathRole, appPath)
32
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
787
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
788 if self.__plugin.getPreferences("AutoCheckOutdated"):
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
789 self.__checkOutdatedPackages()
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
790
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
791 self.__resizePackagesColumns()
43
2ef4c1f1adea Added code to indicate the existence of outdated packages or dependencies in the icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
792 self.on_packagesList_itemSelectionChanged()
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
793
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
794 @pyqtSlot()
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
795 def on_refreshButton_clicked(self):
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
796 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
797 Private slot to refresh the packages list.
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
798 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
799 self.__showPipxVersion()
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
800
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
801 expandedPackages = []
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
802 outdatedPackages = {}
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
803 for row in range(self.packagesList.topLevelItemCount()):
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
804 itm = self.packagesList.topLevelItem(row)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
805 if itm.isExpanded():
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
806 expandedPackages.append(itm.text(PipxWidget.PackageColumn))
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
807 latestVersion = itm.data(0, PipxWidget.LatestVersionRole)
78
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
808 if not self.__plugin.getPreferences("AutoCheckOutdated"):
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
809 outdatedDependencies = itm.data(0, PipxWidget.OutdatedDependenciesRole)
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
810 if latestVersion or outdatedDependencies:
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
811 outdatedPackages[itm.text(PipxWidget.PackageColumn)] = (
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
812 latestVersion,
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
813 outdatedDependencies,
5efcdee9c170 Changed the long running "outdated" actions to use an asynchronous process with timeout.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 69
diff changeset
814 )
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
815
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
816 self.__populatePackages()
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
817
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
818 for row in range(self.packagesList.topLevelItemCount()):
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
819 itm = self.packagesList.topLevelItem(row)
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
820 package = itm.text(PipxWidget.PackageColumn)
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
821 if package in expandedPackages:
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
822 itm.setExpanded(True)
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
823
47
b898d1a77ab0 New release with a bug fix.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
824 with contextlib.suppress(KeyError):
32
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
825 latestVersion, outdatedDependencies = outdatedPackages[package]
47
b898d1a77ab0 New release with a bug fix.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
826 if (
b898d1a77ab0 New release with a bug fix.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
827 latestVersion is not None
b898d1a77ab0 New release with a bug fix.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
828 and itm.data(0, PipxWidget.VersionRole) != latestVersion
b898d1a77ab0 New release with a bug fix.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
829 ):
32
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
830 self.__markPackageOutdated(itm, latestVersion, outdatedDependencies)
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
831 elif (
47
b898d1a77ab0 New release with a bug fix.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
832 outdatedDependencies is not None
b898d1a77ab0 New release with a bug fix.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
833 and itm.data(0, PipxWidget.OutdatedDependenciesRole)
32
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
834 != outdatedDependencies
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
835 and outdatedDependencies
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
836 ):
59
a5e7feb2310c Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
837 self.__markPackageDependenciesOutdated(itm)
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
838
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
839 self.__resizePackagesColumns()
61
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
840 self.__plugin.setOutdatedIndicator(bool(outdatedPackages))
4
097a06104774 Implemented two foundational dialogs for executing pipx commands and running applications from the list.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
841
097a06104774 Implemented two foundational dialogs for executing pipx commands and running applications from the list.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
842 @pyqtSlot(QTreeWidgetItem, int)
097a06104774 Implemented two foundational dialogs for executing pipx commands and running applications from the list.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
843 def on_packagesList_itemActivated(self, item, column):
097a06104774 Implemented two foundational dialogs for executing pipx commands and running applications from the list.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
844 """
15
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
845 Private slot to start the activated item, if it is not a top level one.
4
097a06104774 Implemented two foundational dialogs for executing pipx commands and running applications from the list.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
846
097a06104774 Implemented two foundational dialogs for executing pipx commands and running applications from the list.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
847 @param item reference to the activated item
097a06104774 Implemented two foundational dialogs for executing pipx commands and running applications from the list.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
848 @type QTreeWidgetItem
097a06104774 Implemented two foundational dialogs for executing pipx commands and running applications from the list.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
849 @param column column number of the activation
097a06104774 Implemented two foundational dialogs for executing pipx commands and running applications from the list.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
850 @type int
097a06104774 Implemented two foundational dialogs for executing pipx commands and running applications from the list.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
851 """
097a06104774 Implemented two foundational dialogs for executing pipx commands and running applications from the list.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
852 if item.parent() is not None:
097a06104774 Implemented two foundational dialogs for executing pipx commands and running applications from the list.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
853 app = item.data(0, PipxWidget.AppPathRole)
7
9a98f7260372 Modified the application execution dialog to allow the selection of a working directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
854 dlg = PipxAppStartDialog(app, self.__plugin, self)
4
097a06104774 Implemented two foundational dialogs for executing pipx commands and running applications from the list.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
855 dlg.show()
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
856
10
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
857 @pyqtSlot()
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
858 def on_packagesList_itemSelectionChanged(self):
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
859 """
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
860 Private slot to handle a change of selected packages and apps.
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
861 """
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
862 selectedPackageItems = self.__selectedPackageItems()
10
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
863
61
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
864 self.upgradeButton.setEnabled(
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
865 len(selectedPackageItems) == 1
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
866 and bool(selectedPackageItems[0].data(0, PipxWidget.LatestVersionRole))
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
867 )
61
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
868 self.uninstallButton.setEnabled(len(selectedPackageItems) == 1)
49
ec976c5b88ae Implemented actions to show the dependencies of a package and upgrade them using 'runpip' because 'pipx' doesn't upgrade them when upgrading the package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
869
106
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
870 self.showOutdatedDependenciesButton.setEnabled(
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
871 len(selectedPackageItems) == 1
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
872 and bool(
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
873 selectedPackageItems[0].data(0, PipxWidget.OutdatedDependenciesRole)
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
874 )
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
875 )
111
8ace016a3eee Added a shortcut button to repair broken dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
876 self.repairDependenciesButton.setEnabled(len(selectedPackageItems) == 1)
106
dcc8d6b448fa - Added a shortcut button to show the outdated dependencies of the selected package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
877
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
878 def __selectedPackages(self):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
879 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
880 Private method to determine the list of selected packages.
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
881
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
882 @return list of selected packages
31
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
883 @rtype list of str
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
884 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
885 packages = []
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
886
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
887 for row in range(self.packagesList.topLevelItemCount()):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
888 itm = self.packagesList.topLevelItem(row)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
889 if itm.isSelected():
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
890 packages.append(itm.text(PipxWidget.PackageColumn))
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
891
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
892 return packages
31
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
893
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
894 def __selectedPackageItems(self):
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
895 """
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
896 Private method to determine the list of selected package items.
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
897
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
898 @return list of selected package items
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
899 @rtype list of QTreeWidgetItem
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
900 """
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
901 packageItems = []
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
902
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
903 for row in range(self.packagesList.topLevelItemCount()):
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
904 itm = self.packagesList.topLevelItem(row)
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
905 if itm.isSelected():
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
906 packageItems.append(itm)
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
907
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
908 return packageItems
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
909
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
910 def __packageApps(self, packageItem):
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
911 """
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
912 Private method to determine the apps belonging to a package item.
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
913
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
914 @param packageItem reference to the package item
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
915 @type QTreeWidgetItem
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
916 @return list of app names
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
917 @rtype list of str
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
918 """
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
919 apps = []
36
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
920
31
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
921 for row in range(packageItem.childCount()):
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
922 apps.append(packageItem.child(row).text(0))
36
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
923
31
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
924 return apps
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
925
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
926 def __getRunningApps(self, apps):
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
927 """
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
928 Private method to determine, which app of the given list of apps is running.
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
929
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
930 @param apps list of apps to check
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
931 @type str
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
932 @return set of running apps
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
933 @rtype set of str
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
934 """
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
935 runningApps = set()
32
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
936 venvs = self.venvsPathEdit.text()
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
937 for proc in psutil.process_iter(["name", "cmdline"]):
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
938 if (
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
939 proc.info["name"] in apps
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
940 and proc.info["cmdline"]
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
941 and proc.info["cmdline"][0].startswith(venvs)
b7a3ae7519ba - Implemented some enhancements related to indicating outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
942 ):
31
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
943 runningApps.add(proc.info["name"])
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
944
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
945 return runningApps
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
946
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
947 def __getAllRunningApps(self):
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
948 """
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
949 Private method to determine all running pipx managed apps.
36
5b9bc68ef028 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
950
31
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
951 @return set of running apps
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
952 @rtype set of str
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
953 """
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
954 allApps = []
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
955
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
956 for topRow in range(self.packagesList.topLevelItemCount()):
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
957 topItm = self.packagesList.topLevelItem(topRow)
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
958 allApps.extend(self.__packageApps(topItm))
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
959
17e37d4ebe42 Changed the upgrade actions to first check for running applications of packages to be upgraded because this situation causes issues during the upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
960 return self.__getRunningApps(allApps)
61
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
961
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
962 def __getItemForPackage(self, package):
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
963 """
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
964 Private method to get a reference to the item of a given package.
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
965
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
966 @param package package name
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
967 @type str
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
968 @return reference to the associated item
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
969 @rtype QTreeWidgetItem
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
970 """
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
971 for row in range(self.packagesList.topLevelItemCount()):
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
972 itm = self.packagesList.topLevelItem(row)
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
973 if itm.text(PipxWidget.PackageColumn) == package:
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
974 return itm
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
975
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
976 return None
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
977
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
978 def __hasOutdatedItems(self):
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
979 """
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
980 Private method to check, if the list of packages contains any entries
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
981 which is outdated or has outdated dependencies.
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
982
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
983 @return flag indicating outdated items
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
984 @rtype bool
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
985 """
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
986 for row in range(self.packagesList.topLevelItemCount()):
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
987 itm = self.packagesList.topLevelItem(row)
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
988 if itm.data(0, PipxWidget.LatestVersionRole) or itm.data(
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
989 0, PipxWidget.OutdatedDependenciesRole
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
990 ):
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
991 return True
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
992
163461aefed6 Fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
993 return False

eric ide

mercurial