Sun, 06 Mar 2022 19:53:19 +0100
General
- added capability to upgrade eric from within eric
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 | |
8972 | 16 | from EricGui.EricOverrideCursor import EricOverrideCursor |
17 | from EricWidgets.EricApplication import ericApp | |
18 | from EricWidgets import EricMessageBox | |
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 | """ |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | 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
|
28 | """ |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | Constructor |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | @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
|
32 | @type UserInterface |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | @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
|
34 | @type str |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | @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
|
36 | @type str |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | """ |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | 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
|
39 | self.setupUi(self) |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | 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
|
42 | icon = QGuiApplication.windowIcon().pixmap(64, 64) |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | 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
|
45 | 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
|
46 | self.textLabel.setText(text) |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | |
8972 | 48 | self.__checkUpdateButton = self.buttonBox.addButton( |
49 | self.tr("Check for Upgrades..."), | |
50 | 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) |
8970
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | |
8971
0a846d71f27c
Fixed the initial focus and default button of the new versions dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8970
diff
changeset
|
54 | self.buttonBox.button( |
0a846d71f27c
Fixed the initial focus and default button of the new versions dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8970
diff
changeset
|
55 | QDialogButtonBox.StandardButton.Ok).setDefault(True) |
0a846d71f27c
Fixed the initial focus and default button of the new versions dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8970
diff
changeset
|
56 | self.buttonBox.button( |
0a846d71f27c
Fixed the initial focus and default button of the new versions dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8970
diff
changeset
|
57 | QDialogButtonBox.StandardButton.Ok).setFocus( |
0a846d71f27c
Fixed the initial focus and default button of the new versions dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8970
diff
changeset
|
58 | Qt.FocusReason.OtherFocusReason) |
0a846d71f27c
Fixed the initial focus and default button of the new versions dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8970
diff
changeset
|
59 | |
8970
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | 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
|
61 | self.resize(max(self.width(), msh.width()), msh.height()) |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | |
188ff9ce8657
Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | self.exec() |
8972 | 64 | |
65 | @pyqtSlot() | |
66 | def __checkForUpdate(self): | |
67 | """ | |
68 | Private slot to check, if updates of PyQt6 packages or the eric-ide | |
69 | package are available. | |
70 | """ | |
71 | msg = "" | |
72 | ||
73 | pip = ericApp().getObject("Pip") | |
74 | venvManager = ericApp().getObject("VirtualEnvManager") | |
75 | ||
76 | environmentName = ( | |
77 | venvManager.environmentForInterpreter(sys.executable)[0] | |
78 | # just the name is needed | |
79 | ) | |
80 | ||
81 | if environmentName: | |
82 | with EricOverrideCursor(): | |
83 | pyqtUpdateAvailable = pip.checkPackageOutdated( | |
84 | "pyqt6", environmentName)[0] | |
85 | ericUpdateAvailable = pip.checkPackageOutdated( | |
86 | "eric-ide", environmentName)[0] | |
87 | ||
88 | if pyqtUpdateAvailable or ericUpdateAvailable: | |
89 | self.buttonBox.removeButton(self.__checkUpdateButton) | |
90 | self.__checkUpdateButton = None | |
91 | else: | |
92 | msg = self.tr("No upgrades available.") | |
93 | ||
94 | if ericUpdateAvailable: | |
95 | self.__upgradeEricButton = self.buttonBox.addButton( | |
96 | self.tr("Upgrade eric7..."), | |
97 | QDialogButtonBox.ButtonRole.ActionRole | |
98 | ) | |
99 | self.__upgradeEricButton.clicked.connect(self.__ui.upgradeEric) | |
100 | msg += self.tr( | |
101 | "<p>An upgrade of <b>eric7</b> is available.</p>") | |
102 | ||
103 | if pyqtUpdateAvailable: | |
104 | self.__upgradePyQtButton = self.buttonBox.addButton( | |
105 | self.tr("Upgrade PyQt6..."), | |
106 | QDialogButtonBox.ButtonRole.ActionRole | |
107 | ) | |
108 | self.__upgradePyQtButton.clicked.connect(self.__ui.upgradePyQt) | |
109 | msg += self.tr( | |
110 | "<p>An upgrade of <b>PyQt6</b> is available.</p>") | |
111 | ||
112 | if ericUpdateAvailable and pyqtUpdateAvailable: | |
113 | self.__upgradeBothButton = self.buttonBox.addButton( | |
114 | self.tr("Upgrade Both..."), | |
115 | QDialogButtonBox.ButtonRole.ActionRole | |
116 | ) | |
117 | self.__upgradeBothButton.clicked.connect( | |
118 | self.__ui.upgradeEricPyQt) | |
119 | ||
120 | self.buttonBox.button( | |
121 | QDialogButtonBox.StandardButton.Ok).setDefault(True) | |
122 | self.buttonBox.button( | |
123 | QDialogButtonBox.StandardButton.Ok).setFocus( | |
124 | Qt.FocusReason.OtherFocusReason) | |
125 | ||
126 | EricMessageBox.information( | |
127 | self, | |
128 | self.tr("Check for Upgrades"), | |
129 | msg | |
130 | ) |