Sat, 11 Feb 2023 19:52:53 +0100
Moved the MicroPython board specific functions to a separate submenu.
--- a/src/eric7/MicroPython/CircuitPythonDevices.py Sat Feb 11 16:59:50 2023 +0100 +++ b/src/eric7/MicroPython/CircuitPythonDevices.py Sat Feb 11 19:52:53 2023 +0100 @@ -58,6 +58,8 @@ "teensy": self.__flashTeensy, } + self.__createCPyMenu() + def setButtons(self): """ Public method to enable the supported action buttons. @@ -240,6 +242,27 @@ self.__workspace = self.__findWorkspace(silent=silent) return self.__workspace + def __createCPyMenu(self): + """ + Private method to create the CircuitPython submenu. + """ + self.__libraryMenu = QMenu(self.tr("Library Management")) + self.__libraryMenu.aboutToShow.connect(self.__aboutToShowLibraryMenu) + self.__libraryMenu.setTearOffEnabled(True) + + self.__cpyMenu = QMenu(self.tr("CircuitPython Functions")) + + self.__cpyMenu.addAction( + self.tr("Show CircuitPython Versions"), self.__showCircuitPythonVersions + ) + self.__cpyMenu.addSeparator() + self.__flashCpyAct = self.__cpyMenu.addAction( + self.tr("Flash CircuitPython Firmware"), self.__flashCircuitPython + ) + self.__cpyMenu.addSeparator() + self.__cpyMenu.addMenu(self.__libraryMenu) + + def addDeviceMenuEntries(self, menu): """ Public method to add device specific entries to the given menu. @@ -249,19 +272,9 @@ """ linkConnected = self.microPython.isLinkConnected() - self.__libraryMenu = QMenu(self.tr("Library Management")) - self.__libraryMenu.aboutToShow.connect(self.__aboutToShowLibraryMenu) - self.__libraryMenu.setTearOffEnabled(True) + self.__flashCpyAct.setEnabled(not linkConnected) - menu.addAction( - self.tr("Show CircuitPython Versions"), self.__showCircuitPythonVersions - ) - act = menu.addAction( - self.tr("Flash CircuitPython Firmware"), self.__flashCircuitPython - ) - act.setEnabled(not linkConnected) - menu.addSeparator() - menu.addMenu(self.__libraryMenu) + menu.addMenu(self.__cpyMenu) @pyqtSlot() def __aboutToShowLibraryMenu(self):
--- a/src/eric7/MicroPython/EspDevices.py Sat Feb 11 16:59:50 2023 +0100 +++ b/src/eric7/MicroPython/EspDevices.py Sat Feb 11 19:52:53 2023 +0100 @@ -10,7 +10,7 @@ from PyQt6.QtCore import QProcess, QUrl, pyqtSlot from PyQt6.QtNetwork import QNetworkRequest -from PyQt6.QtWidgets import QDialog +from PyQt6.QtWidgets import QDialog, QMenu from eric7 import Globals, Preferences from eric7.EricWidgets import EricMessageBox @@ -40,6 +40,8 @@ """ super().__init__(microPythonWidget, deviceType, parent) + self.__createEsp32Submenu() + def setButtons(self): """ Public method to enable the supported action buttons. @@ -118,6 +120,50 @@ """ return True, "" + def __createEsp32Submenu(self): + """ + Private method to create the ESP32 submenu. + """ + self.__espMenu = QMenu(self.tr("ESP32 Functions")) + + self.__showMpyAct = self.__espMenu.addAction( + self.tr("Show MicroPython Versions"), self.__showFirmwareVersions + ) + self.__espMenu.addSeparator() + self.__eraseFlashAct = self.__espMenu.addAction( + self.tr("Erase Flash"), self.__eraseFlash + ) + self.__flashMpyAct = self.__espMenu.addAction( + self.tr("Flash MicroPython Firmware"), self.__flashMicroPython + ) + self.__espMenu.addSeparator() + self.__flashAdditionalAct = self.__espMenu.addAction( + self.tr("Flash Additional Firmware"), self.__flashAddons + ) + self.__espMenu.addSeparator() + self.__backupAct = self.__espMenu.addAction( + self.tr("Backup Firmware"), self.__backupFlash + ) + self.__restoreAct = self.__espMenu.addAction( + self.tr("Restore Firmware"), self.__restoreFlash + ) + self.__espMenu.addSeparator() + self.__chipIdAct = self.__espMenu.addAction( + self.tr("Show Chip ID"), self.__showChipID + ) + self.__flashIdAct = self.__espMenu.addAction( + self.tr("Show Flash ID"), self.__showFlashID + ) + self.__macAddressAct = self.__espMenu.addAction( + self.tr("Show MAC Address"), self.__showMACAddress + ) + self.__espMenu.addSeparator() + self.__resetAct = self.__espMenu.addAction( + self.tr("Reset Device"), self.__resetDevice + ) + self.__espMenu.addSeparator() + self.__espMenu.addAction(self.tr("Install 'esptool.py'"), self.__installEspTool) + def addDeviceMenuEntries(self, menu): """ Public method to add device specific entries to the given menu. @@ -128,42 +174,18 @@ connected = self.microPython.isConnected() linkConnected = self.microPython.isLinkConnected() - menu.addAction( - self.tr("Show MicroPython Versions"), self.__showFirmwareVersions - ).setEnabled(connected) - menu.addAction(self.tr("Erase Flash"), self.__eraseFlash).setEnabled( - not linkConnected - ) - menu.addAction( - self.tr("Flash MicroPython Firmware"), self.__flashMicroPython - ).setEnabled(not linkConnected) - menu.addSeparator() - menu.addAction( - self.tr("Flash Additional Firmware"), self.__flashAddons - ).setEnabled(not linkConnected) - menu.addSeparator() - menu.addAction(self.tr("Backup Firmware"), self.__backupFlash).setEnabled( - not linkConnected - ) - menu.addAction(self.tr("Restore Firmware"), self.__restoreFlash).setEnabled( - not linkConnected - ) - menu.addSeparator() - menu.addAction(self.tr("Show Chip ID"), self.__showChipID).setEnabled( - not linkConnected - ) - menu.addAction(self.tr("Show Flash ID"), self.__showFlashID).setEnabled( - not linkConnected - ) - menu.addAction(self.tr("Show MAC Address"), self.__showMACAddress).setEnabled( - not linkConnected - ) - menu.addSeparator() - menu.addAction(self.tr("Reset Device"), self.__resetDevice).setEnabled( - connected or not linkConnected - ) - menu.addSeparator() - menu.addAction(self.tr("Install 'esptool.py'"), self.__installEspTool) + self.__showMpyAct.setEnabled(connected) + self.__eraseFlashAct.setEnabled(not linkConnected) + self.__flashMpyAct.setEnabled(not linkConnected) + self.__flashAdditionalAct.setEnabled(not linkConnected) + self.__backupAct.setEnabled(not linkConnected) + self.__restoreAct.setEnabled(not linkConnected) + self.__chipIdAct.setEnabled(not linkConnected) + self.__flashIdAct.setEnabled(not linkConnected) + self.__macAddressAct.setEnabled(not linkConnected) + self.__resetAct.setEnabled(connected or not linkConnected) + + menu.addMenu(self.__espMenu) def hasFlashMenuEntry(self): """
--- a/src/eric7/MicroPython/MicroPythonWidget.py Sat Feb 11 16:59:50 2023 +0100 +++ b/src/eric7/MicroPython/MicroPythonWidget.py Sat Feb 11 19:52:53 2023 +0100 @@ -1511,7 +1511,6 @@ self.tr("Show Documentation"), self.__showDocumentation ).setEnabled(self.__device.hasDocumentationUrl()) self.__superMenu.addSeparator() - ##if self.__device is not None and not self.__device.hasFlashMenuEntry(): if bool(UF2FlashDialog.getFoundDevices()): self.__superMenu.addAction(self.tr("Flash UF2 Device"), self.__flashUF2) self.__superMenu.addSeparator()
--- a/src/eric7/MicroPython/MicrobitDevices.py Sat Feb 11 16:59:50 2023 +0100 +++ b/src/eric7/MicroPython/MicrobitDevices.py Sat Feb 11 19:52:53 2023 +0100 @@ -14,7 +14,7 @@ from PyQt6.QtCore import QStandardPaths, QUrl, pyqtSlot from PyQt6.QtNetwork import QNetworkRequest -from PyQt6.QtWidgets import QInputDialog, QLineEdit +from PyQt6.QtWidgets import QInputDialog, QLineEdit, QMenu from eric7 import Globals, Preferences from eric7.EricWidgets import EricFileDialog, EricMessageBox @@ -50,6 +50,8 @@ with contextlib.suppress(ValueError): self.__boardId = int(serialNumber[:4], 16) + self.__createMicrobitMenu() + def setButtons(self): """ Public method to enable the supported action buttons. @@ -178,6 +180,40 @@ """ return self.__boardId in (0x12A0,) + def __createMicrobitMenu(self): + """ + Private method to create the microbit submenu. + """ + self.__microbitMenu = QMenu(self.tr("BBC micro:bit/Calliope Functions")) + + self.__showMpyAct = self.__microbitMenu.addAction( + self.tr("Show MicroPython Versions"), self.__showFirmwareVersions + ) + self.__microbitMenu.addSeparator() + self.__flashMpyAct = self.__microbitMenu.addAction( + self.tr("Flash MicroPython"), self.__flashMicroPython + ) + self.__flashDAPLinkAct = self.__microbitMenu.addAction( + self.tr("Flash Firmware"), lambda: self.__flashMicroPython(firmware=True) + ) + self.__microbitMenu.addSeparator() + self.__saveScripAct = self.__microbitMenu.addAction( + self.tr("Save Script"), self.__saveScriptToDevice + ) + self.__saveScripAct.setToolTip( + self.tr("Save the current script to the selected device") + ) + self.__saveMainScriptAct = self.__microbitMenu.addAction( + self.tr("Save Script as 'main.py'"), self.__saveMain + ) + self.__saveMainScriptAct.setToolTip( + self.tr("Save the current script as 'main.py' on the connected device") + ) + self.__microbitMenu.addSeparator() + self.__resetAct = self.__microbitMenu.addAction( + self.tr("Reset {0}").format(self.deviceName()), self.__resetDevice + ) + def addDeviceMenuEntries(self, menu): """ Public method to add device specific entries to the given menu. @@ -188,28 +224,14 @@ connected = self.microPython.isConnected() linkConnected = self.microPython.isLinkConnected() - menu.addAction( - self.tr("Show MicroPython Versions"), self.__showFirmwareVersions - ).setEnabled(connected and self.getDeviceType() != "calliope") - menu.addAction( - self.tr("Flash MicroPython"), self.__flashMicroPython - ).setEnabled(not linkConnected) - menu.addAction( - self.tr("Flash Firmware"), lambda: self.__flashMicroPython(firmware=True) - ).setEnabled(not linkConnected) - menu.addSeparator() - act = menu.addAction(self.tr("Save Script"), self.__saveScriptToDevice) - act.setToolTip(self.tr("Save the current script to the selected device")) - act.setEnabled(connected) - act = menu.addAction(self.tr("Save Script as 'main.py'"), self.__saveMain) - act.setToolTip( - self.tr("Save the current script as 'main.py' on the connected device") - ) - act.setEnabled(connected) - menu.addSeparator() - menu.addAction( - self.tr("Reset {0}").format(self.deviceName()), self.__resetDevice - ).setEnabled(connected) + self.__showMpyAct.setEnabled(connected and self.getDeviceType() != "calliope") + self.__flashMpyAct.setEnabled(not linkConnected) + self.__flashDAPLinkAct.setEnabled(not linkConnected) + self.__saveScripAct.setEnabled(connected) + self.__saveMainScriptAct.setEnabled(connected) + self.__resetAct.setEnabled(connected) + + menu.addMenu(self.__microbitMenu) def hasFlashMenuEntry(self): """
--- a/src/eric7/MicroPython/PyBoardDevices.py Sat Feb 11 16:59:50 2023 +0100 +++ b/src/eric7/MicroPython/PyBoardDevices.py Sat Feb 11 19:52:53 2023 +0100 @@ -11,6 +11,7 @@ from PyQt6.QtCore import QStandardPaths, QUrl, pyqtSlot from PyQt6.QtNetwork import QNetworkRequest +from PyQt6.QtWidgets import QMenu from eric7 import Globals, Preferences from eric7.EricWidgets import EricFileDialog, EricMessageBox @@ -48,6 +49,8 @@ self.__workspace = self.__findWorkspace() + self.__createPyboardMenu() + def setButtons(self): """ Public method to enable the supported action buttons. @@ -221,6 +224,30 @@ """ return Preferences.getMicroPython("MicroPythonFirmwareUrl") + def __createPyboardMenu(self): + """ + Private method to create the pyboard submenu. + """ + self.__pyboardMenu = QMenu(self.tr("PyBoard Functions")) + + self.__showMpyAct = self.__pyboardMenu.addAction( + self.tr("Show MicroPython Versions"), self.__showFirmwareVersions + ) + self.__pyboardMenu.addSeparator() + self.__bootloaderAct = self.__pyboardMenu.addAction( + self.tr("Activate Bootloader"), self.__activateBootloader + ) + self.__dfuAct = self.__pyboardMenu.addAction( + self.tr("List DFU-capable Devices"), self.__listDfuCapableDevices + ) + self.__pyboardMenu.addSeparator() + self.__flashMpyAct = self.__pyboardMenu.addAction( + self.tr("Flash MicroPython Firmware"), self.__flashMicroPython + ) + self.__pyboardMenu.addAction( + self.tr("MicroPython Flash Instructions"), self.__showFlashInstructions + ) + def addDeviceMenuEntries(self, menu): """ Public method to add device specific entries to the given menu. @@ -231,22 +258,12 @@ connected = self.microPython.isConnected() linkConnected = self.microPython.isLinkConnected() - menu.addAction( - self.tr("Activate Bootloader"), self.__activateBootloader - ).setEnabled(connected) - menu.addAction( - self.tr("List DFU-capable Devices"), self.__listDfuCapableDevices - ).setEnabled(not linkConnected) - menu.addSeparator() - menu.addAction( - self.tr("Show MicroPython Versions"), self.__showFirmwareVersions - ).setEnabled(connected) - menu.addAction( - self.tr("Flash MicroPython Firmware"), self.__flashMicroPython - ).setEnabled(not linkConnected) - menu.addAction( - self.tr("MicroPython Flash Instructions"), self.__showFlashInstructions - ) + self.__bootloaderAct.setEnabled(connected) + self.__dfuAct.setEnabled(not linkConnected) + self.__showMpyAct.setEnabled(connected) + self.__flashMpyAct.setEnabled(not linkConnected) + + menu.addMenu(self.__pyboardMenu) def hasFlashMenuEntry(self): """
--- a/src/eric7/MicroPython/RP2040Devices.py Sat Feb 11 16:59:50 2023 +0100 +++ b/src/eric7/MicroPython/RP2040Devices.py Sat Feb 11 19:52:53 2023 +0100 @@ -10,6 +10,7 @@ from PyQt6.QtCore import QUrl, pyqtSlot from PyQt6.QtNetwork import QNetworkRequest +from PyQt6.QtWidgets import QMenu from eric7 import Globals, Preferences from eric7.EricWidgets import EricMessageBox @@ -37,6 +38,8 @@ """ super().__init__(microPythonWidget, deviceType, parent) + self.__createRP2040Menu() + def setButtons(self): """ Public method to enable the supported action buttons. @@ -115,6 +118,23 @@ """ return True, "" + def __createRP2040Menu(self): + """ + Private method to create the microbit submenu. + """ + self.__rp2040Menu = QMenu(self.tr("RP2040 Functions")) + + self.__showMpyAct = self.__rp2040Menu.addAction( + self.tr("Show MicroPython Versions"), self.__showFirmwareVersions + ) + self.__rp2040Menu.addSeparator() + self.__bootloaderAct = self.__rp2040Menu.addAction( + self.tr("Activate Bootloader"), self.__activateBootloader + ) + self.__flashMpyAct = self.__rp2040Menu.addAction( + self.tr("Flash MicroPython Firmware"), self.__flashPython + ) + def addDeviceMenuEntries(self, menu): """ Public method to add device specific entries to the given menu. @@ -125,15 +145,11 @@ connected = self.microPython.isConnected() linkConnected = self.microPython.isLinkConnected() - menu.addAction( - self.tr("Show MicroPython Versions"), self.__showFirmwareVersions - ).setEnabled(connected) - menu.addAction( - self.tr("Activate Bootloader"), self.__activateBootloader - ).setEnabled(connected) - menu.addAction( - self.tr("Flash MicroPython Firmware"), self.__flashPython - ).setEnabled(not linkConnected) + self.__showMpyAct.setEnabled(connected) + self.__bootloaderAct.setEnabled(connected) + self.__flashMpyAct.setEnabled(not linkConnected) + + menu.addMenu(self.__rp2040Menu) def hasFlashMenuEntry(self): """