src/eric7/MicroPython/MipPackageDialog.py

Sun, 16 Mar 2025 12:53:12 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 16 Mar 2025 12:53:12 +0100
branch
eric7
changeset 11170
6d6199d668fb
parent 11090
f5f5f5803935
permissions
-rw-r--r--

Added the Adafruit Feather nRF52840 to the list of known NRF52 boards and changed the list of known CircuitPython boards to be more explicit with respect to Adafruit boards (i.e. VID 0x239A).

9844
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10643
diff changeset
3 # Copyright (c) 2023 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
9844
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to enter the package data for 'mip'.
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 from PyQt6.QtCore import pyqtSlot
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 from PyQt6.QtWidgets import QDialog, QDialogButtonBox
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 from semver import VersionInfo
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
9979
dbafba79461d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9844
diff changeset
14 from .MipLocalInstaller import MicroPythonPackageIndex
9844
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from .Ui_MipPackageDialog import Ui_MipPackageDialog
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 class MipPackageDialog(QDialog, Ui_MipPackageDialog):
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 """
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 Class implementing a dialog to enter the package data for 'mip'.
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 """
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 def __init__(self, parent=None):
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 Constructor
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 @param parent reference to the parent widget (defaults to None)
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 @type QWidget (optional)
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 super().__init__(parent)
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 self.setupUi(self)
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32
9979
dbafba79461d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9844
diff changeset
33 self.indexEdit.setToolTip(
dbafba79461d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9844
diff changeset
34 self.tr(
dbafba79461d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9844
diff changeset
35 "Enter the URL of the package index. Leave empty to use the default"
dbafba79461d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9844
diff changeset
36 " index ({0})."
dbafba79461d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9844
diff changeset
37 ).format(MicroPythonPackageIndex)
dbafba79461d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9844
diff changeset
38 )
dbafba79461d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9844
diff changeset
39
9844
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 self.packageEdit.textChanged.connect(self.__updateOk)
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 self.versionEdit.textChanged.connect(self.__updateOk)
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 self.__updateOk()
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 msh = self.minimumSizeHint()
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 self.resize(max(self.width(), msh.width()), msh.height())
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 @pyqtSlot()
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 def __updateOk(self):
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 """
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 Private slot to set the enabled state of the OK button.
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 """
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 enable = bool(self.packageEdit.text())
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 version = self.versionEdit.text()
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 if version:
10643
08682797bfcd Fixed a 'semver' compatibility issue in the CircuitPython updater and the MIP package dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
56 try:
08682797bfcd Fixed a 'semver' compatibility issue in the CircuitPython updater and the MIP package dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
57 enable &= VersionInfo.is_valid(version)
08682797bfcd Fixed a 'semver' compatibility issue in the CircuitPython updater and the MIP package dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
58 except AttributeError:
08682797bfcd Fixed a 'semver' compatibility issue in the CircuitPython updater and the MIP package dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
59 enable &= VersionInfo.isvalid(version)
9844
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(enable)
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 def getData(self):
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 """
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 Public method to get the entered package installation data.
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66
9979
dbafba79461d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9844
diff changeset
67 @return tuple containing the package name, package version, a flag indicating
dbafba79461d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9844
diff changeset
68 to install the package as '.mpy ' file, the target directory on the device
dbafba79461d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9844
diff changeset
69 and the package index to get the package from
dbafba79461d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9844
diff changeset
70 @rtype tuple of (str, str, bool, str, str)
9844
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 """
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 return (
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 self.packageEdit.text(),
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 self.versionEdit.text(),
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 self.mpyCheckBox.isChecked(),
9979
dbafba79461d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9844
diff changeset
76 self.targetEdit.text(),
dbafba79461d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9844
diff changeset
77 self.indexEdit.text(),
9844
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 )

eric ide

mercurial