Moved the MicroPython board specific functions to a separate submenu. eric7

Sat, 11 Feb 2023 19:52:53 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 11 Feb 2023 19:52:53 +0100
branch
eric7
changeset 9752
2b9546c0cbd9
parent 9751
606ac0e26533
child 9753
a774e75a45ca

Moved the MicroPython board specific functions to a separate submenu.

src/eric7/MicroPython/CircuitPythonDevices.py file | annotate | diff | comparison | revisions
src/eric7/MicroPython/EspDevices.py file | annotate | diff | comparison | revisions
src/eric7/MicroPython/MicroPythonWidget.py file | annotate | diff | comparison | revisions
src/eric7/MicroPython/MicrobitDevices.py file | annotate | diff | comparison | revisions
src/eric7/MicroPython/PyBoardDevices.py file | annotate | diff | comparison | revisions
src/eric7/MicroPython/RP2040Devices.py file | annotate | diff | comparison | revisions
--- 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):
         """

eric ide

mercurial