Tue, 18 Oct 2022 16:06:21 +0200
Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
8970
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | # Copyright (c) 2022 Detlev Offenbach <detlev@die-offenbachs.de> |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a dialog to show the versions of various components. |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
8972 | 10 | import sys |
11 | ||
12 | from PyQt6.QtCore import pyqtSlot, Qt | |
8970
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | from PyQt6.QtGui import QGuiApplication |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | from PyQt6.QtWidgets import QDialog, QDialogButtonBox |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | |
9413
80c06d472826
Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9339
diff
changeset
|
16 | from eric7.EricGui.EricOverrideCursor import EricOverrideCursor |
80c06d472826
Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9339
diff
changeset
|
17 | from eric7.EricWidgets.EricApplication import ericApp |
80c06d472826
Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9339
diff
changeset
|
18 | from eric7.EricWidgets import EricMessageBox |
8972 | 19 | |
8970
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | from .Ui_VersionsDialog import Ui_VersionsDialog |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | class VersionsDialog(QDialog, Ui_VersionsDialog): |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | """ |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | Class implementing a dialog to show the versions of various components. |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | """ |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
27 | |
8970
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | def __init__(self, parent, title, text): |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | """ |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | Constructor |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
31 | |
8970
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | @param parent reference to the parent widget |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | @type UserInterface |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | @param title dialog title |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | @type str |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | @param text versions text to be shown |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | @type str |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | """ |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | super().__init__(parent) |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | self.setupUi(self) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
41 | |
8970
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | self.__ui = parent |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | icon = QGuiApplication.windowIcon().pixmap(64, 64) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
44 | |
8970
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | self.setWindowTitle(title) |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | self.iconLabel.setPixmap(icon) |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | self.textLabel.setText(text) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
48 | |
8972 | 49 | self.__checkUpdateButton = self.buttonBox.addButton( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
50 | self.tr("Check for Upgrades..."), QDialogButtonBox.ButtonRole.ActionRole |
8970
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | ) |
8972 | 52 | self.__checkUpdateButton.clicked.connect(self.__checkForUpdate) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
53 | |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
54 | self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setDefault(True) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
55 | self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setFocus( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
56 | Qt.FocusReason.OtherFocusReason |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
57 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
58 | |
8970
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | msh = self.minimumSizeHint() |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | self.resize(max(self.width(), msh.width()), msh.height()) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
61 | |
8970
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | self.exec() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
63 | |
8972 | 64 | @pyqtSlot() |
65 | def __checkForUpdate(self): | |
66 | """ | |
67 | Private slot to check, if updates of PyQt6 packages or the eric-ide | |
68 | package are available. | |
69 | """ | |
9339
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
70 | upgradeButtonTemplate = self.tr("Upgrade {0}...") |
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
71 | headerTemplate = self.tr("<p>An upgrade of <b>{0}</b> is available.</p>") |
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
72 | tableTemplate = self.tr( |
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
73 | "<table>" |
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
74 | "<tr><th>Package</th><th>Installed</th><th>Available</th></tr>{0}" |
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
75 | "</table>" |
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
76 | ) |
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
77 | entryTemplate = self.tr("<tr><td><b>{0}</b></td><td>{1}</td><td>{2}</td></tr>") |
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
78 | |
8972 | 79 | msg = "" |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
80 | |
8972 | 81 | pip = ericApp().getObject("Pip") |
82 | venvManager = ericApp().getObject("VirtualEnvManager") | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
83 | |
8972 | 84 | environmentName = ( |
85 | venvManager.environmentForInterpreter(sys.executable)[0] | |
86 | # just the name is needed | |
87 | ) | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
88 | |
8972 | 89 | if environmentName: |
90 | with EricOverrideCursor(): | |
9308
110d32f96013
Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
91 | pyqtUpdateAvailable, pyqtVersionsData = pip.checkPackageOutdated( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
92 | "pyqt6", environmentName |
9308
110d32f96013
Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
93 | ) |
110d32f96013
Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
94 | ericUpdateAvailable, ericVersionsData = pip.checkPackageOutdated( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
95 | "eric-ide", environmentName |
9308
110d32f96013
Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
96 | ) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
97 | |
8972 | 98 | if pyqtUpdateAvailable or ericUpdateAvailable: |
99 | self.buttonBox.removeButton(self.__checkUpdateButton) | |
100 | self.__checkUpdateButton = None | |
101 | else: | |
102 | msg = self.tr("No upgrades available.") | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
103 | |
8972 | 104 | if ericUpdateAvailable: |
105 | self.__upgradeEricButton = self.buttonBox.addButton( | |
9339
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
106 | upgradeButtonTemplate.format("eric7"), |
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
107 | QDialogButtonBox.ButtonRole.ActionRole, |
8972 | 108 | ) |
109 | self.__upgradeEricButton.clicked.connect(self.__ui.upgradeEric) | |
9339
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
110 | msg += headerTemplate.format("eric7") |
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
111 | msg += tableTemplate.format(entryTemplate.format(*ericVersionsData[0])) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
112 | |
8972 | 113 | if pyqtUpdateAvailable: |
114 | self.__upgradePyQtButton = self.buttonBox.addButton( | |
9339
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
115 | upgradeButtonTemplate.format("PyQt6"), |
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
116 | QDialogButtonBox.ButtonRole.ActionRole, |
8972 | 117 | ) |
118 | self.__upgradePyQtButton.clicked.connect(self.__ui.upgradePyQt) | |
9339
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
119 | msg += headerTemplate.format("PyQt6") |
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
120 | msg += tableTemplate.format( |
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
121 | "".join(entryTemplate.format(*v) for v in pyqtVersionsData) |
9308
110d32f96013
Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
122 | ) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
123 | |
8972 | 124 | if ericUpdateAvailable and pyqtUpdateAvailable: |
125 | self.__upgradeBothButton = self.buttonBox.addButton( | |
9339
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
126 | upgradeButtonTemplate.format(self.tr("Both")), |
41ceec853d3e
Modified the versions dialog to show a clearer update info.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9308
diff
changeset
|
127 | QDialogButtonBox.ButtonRole.ActionRole, |
8972 | 128 | ) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
129 | self.__upgradeBothButton.clicked.connect(self.__ui.upgradeEricPyQt) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
130 | |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
131 | self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setDefault(True) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
132 | self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setFocus( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
133 | Qt.FocusReason.OtherFocusReason |
8972 | 134 | ) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
135 | |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
136 | EricMessageBox.information(self, self.tr("Check for Upgrades"), msg) |