--- 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): """