eric7/UI/VersionsDialog.py

Sun, 06 Mar 2022 19:53:19 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 06 Mar 2022 19:53:19 +0100
branch
eric7
changeset 8972
54816b8f740f
parent 8971
0a846d71f27c
permissions
-rw-r--r--

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
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
10 import sys
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
11
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
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
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
16 from EricGui.EricOverrideCursor import EricOverrideCursor
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
17 from EricWidgets.EricApplication import ericApp
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
18 from EricWidgets import EricMessageBox
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
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
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
48 self.__checkUpdateButton = self.buttonBox.addButton(
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
49 self.tr("Check for Upgrades..."),
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
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
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
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
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
64
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
65 @pyqtSlot()
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
66 def __checkForUpdate(self):
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
67 """
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
68 Private slot to check, if updates of PyQt6 packages or the eric-ide
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
69 package are available.
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
70 """
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
71 msg = ""
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
72
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
73 pip = ericApp().getObject("Pip")
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
74 venvManager = ericApp().getObject("VirtualEnvManager")
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
75
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
76 environmentName = (
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
77 venvManager.environmentForInterpreter(sys.executable)[0]
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
78 # just the name is needed
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
79 )
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
80
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
81 if environmentName:
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
82 with EricOverrideCursor():
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
83 pyqtUpdateAvailable = pip.checkPackageOutdated(
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
84 "pyqt6", environmentName)[0]
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
85 ericUpdateAvailable = pip.checkPackageOutdated(
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
86 "eric-ide", environmentName)[0]
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
87
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
88 if pyqtUpdateAvailable or ericUpdateAvailable:
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
89 self.buttonBox.removeButton(self.__checkUpdateButton)
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
90 self.__checkUpdateButton = None
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
91 else:
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
92 msg = self.tr("No upgrades available.")
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
93
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
94 if ericUpdateAvailable:
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
95 self.__upgradeEricButton = self.buttonBox.addButton(
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
96 self.tr("Upgrade eric7..."),
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
97 QDialogButtonBox.ButtonRole.ActionRole
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
98 )
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
99 self.__upgradeEricButton.clicked.connect(self.__ui.upgradeEric)
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
100 msg += self.tr(
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
101 "<p>An upgrade of <b>eric7</b> is available.</p>")
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
102
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
103 if pyqtUpdateAvailable:
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
104 self.__upgradePyQtButton = self.buttonBox.addButton(
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
105 self.tr("Upgrade PyQt6..."),
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
106 QDialogButtonBox.ButtonRole.ActionRole
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
107 )
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
108 self.__upgradePyQtButton.clicked.connect(self.__ui.upgradePyQt)
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
109 msg += self.tr(
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
110 "<p>An upgrade of <b>PyQt6</b> is available.</p>")
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
111
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
112 if ericUpdateAvailable and pyqtUpdateAvailable:
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
113 self.__upgradeBothButton = self.buttonBox.addButton(
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
114 self.tr("Upgrade Both..."),
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
115 QDialogButtonBox.ButtonRole.ActionRole
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
116 )
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
117 self.__upgradeBothButton.clicked.connect(
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
118 self.__ui.upgradeEricPyQt)
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
119
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
120 self.buttonBox.button(
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
121 QDialogButtonBox.StandardButton.Ok).setDefault(True)
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
122 self.buttonBox.button(
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
123 QDialogButtonBox.StandardButton.Ok).setFocus(
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
124 Qt.FocusReason.OtherFocusReason)
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
125
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
126 EricMessageBox.information(
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
127 self,
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
128 self.tr("Check for Upgrades"),
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
129 msg
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
130 )

eric ide

mercurial