src/eric7/MicroPython/MicrobitDevices.py

branch
eric7
changeset 9752
2b9546c0cbd9
parent 9751
606ac0e26533
diff -r 606ac0e26533 -r 2b9546c0cbd9 src/eric7/MicroPython/MicrobitDevices.py
--- 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):
         """

eric ide

mercurial