src/eric7/MicroPython/MipPackageDialog.py

Fri, 03 Mar 2023 19:03:33 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 03 Mar 2023 19:03:33 +0100
branch
eric7
changeset 9844
2f3d623f7617
child 9979
dbafba79461d
permissions
-rw-r--r--

MicroPython
- Added functionality to install packages using `mip` or `upip`.

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
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de>
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
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from .Ui_MipPackageDialog import Ui_MipPackageDialog
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 class MipPackageDialog(QDialog, Ui_MipPackageDialog):
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 """
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 Class implementing a dialog to enter the package data for 'mip'.
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 """
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 def __init__(self, parent=None):
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 """
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 Constructor
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 @param parent reference to the parent widget (defaults to None)
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 @type QWidget (optional)
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 super().__init__(parent)
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 self.setupUi(self)
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 self.packageEdit.textChanged.connect(self.__updateOk)
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 self.versionEdit.textChanged.connect(self.__updateOk)
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 self.__updateOk()
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 msh = self.minimumSizeHint()
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 self.resize(max(self.width(), msh.width()), msh.height())
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @pyqtSlot()
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 def __updateOk(self):
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 """
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 Private slot to set the enabled state of the OK button.
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 """
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 enable = bool(self.packageEdit.text())
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 version = self.versionEdit.text()
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 if version:
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 enable &= VersionInfo.isvalid(version)
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(enable)
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 def getData(self):
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 """
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 Public method to get the entered package installation data.
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 @return tuple containing the package name, package version and a flag,
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 indicating to install the package as '.mpy ' files
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 @rtype tuple of (str, str, bool)
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 """
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 return (
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.packageEdit.text(),
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 self.versionEdit.text(),
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 self.mpyCheckBox.isChecked(),
2f3d623f7617 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 )

eric ide

mercurial