src/eric7/MicroPython/MicroPythonWidget.py

branch
mpy_network
changeset 10010
8a68a7a7ab88
parent 10009
61e5fe703818
child 10011
26a7d607b8f6
--- a/src/eric7/MicroPython/MicroPythonWidget.py	Tue May 02 18:01:34 2023 +0200
+++ b/src/eric7/MicroPython/MicroPythonWidget.py	Wed May 03 10:12:03 2023 +0200
@@ -298,6 +298,8 @@
         self.__lastPort = None
         self.__lastDeviceType = None
 
+        self.__lastWebreplUrl = None
+
         self.__interface = None
         self.__device = None
         self.__connected = False
@@ -428,12 +430,13 @@
             self.deviceTypeComboBox.setItemData(
                 index, webreplUrlsDict[name]["url"], self.DeviceWebreplUrlRole
             )
-        if webreplUrlsDict:
-            webreplMessage = self.tr(
+        webreplMessage = (
+            self.tr(
                 "\n%n WebREPL connection(s) defined.", "", len(webreplUrlsDict)
             )
-        else:
-            webreplMessage = ""
+            if webreplUrlsDict
+            else ""
+        )
 
         self.deviceInfoLabel.setText(supportedMessage + unknownMessage + webreplMessage)
 
@@ -527,7 +530,7 @@
         Private slot to configure the list of selectable WebREPL URLs.
         """
         from .MicroPythonWebreplUrlsConfigDialog import (
-            MicroPythonWebreplUrlsConfigDialog
+            MicroPythonWebreplUrlsConfigDialog,
         )
 
         webreplUrlsDict = Preferences.getMicroPython("WebreplUrls")
@@ -808,7 +811,7 @@
         """
         self.replEdit.clear()
         if bool(self.__interface) and self.__interface.isConnected():
-           self.__interface.write(b"\r")
+            self.__interface.write(b"\r")
 
     @pyqtSlot()
     def __paste(self, mode=QClipboard.Mode.Clipboard):
@@ -891,7 +894,7 @@
                 tc.movePosition(QTextCursor.MoveOperation.EndOfLine)
                 self.replEdit.setTextCursor(tc)
             if bool(self.__interface) and self.__interface.isConnected():
-               self.__interface.write(msg)
+                self.__interface.write(msg)
             return True
         else:
             # standard event processing
@@ -1228,6 +1231,9 @@
         @exception ValueError raised to indicate an unsupported interface type
         """
         from .ConnectionSelectionDialog import ConnectionSelectionDialog
+        from .MicroPythonWebreplConnectionDialog import (
+            MicroPythonWebreplConnectionDialog,
+        )
 
         interfaceType = (
             self.deviceTypeComboBox.currentData(self.DeviceInterfaceTypeRole)
@@ -1263,8 +1269,22 @@
         elif interfaceType == "webrepl":
             port = self.deviceTypeComboBox.currentData(self.DeviceWebreplUrlRole)
             if not port:
-                # TODO: implement Webrepl parameter dialog (ws:// URL)
-                return
+                with EricOverridenCursor():
+                    dlg = MicroPythonWebreplConnectionDialog(
+                        self.__lastWebreplUrl, self.__lastDeviceType
+                    )
+                    if dlg.exec() == QDialog.DialogCode.Accepted:
+                        port, deviceType = dlg.getWebreplConnectionParameters()
+
+                        self.deviceIconLabel.setPixmap(
+                            Devices.getDeviceIcon(deviceType, False)
+                        )
+                        self.__device = Devices.getDevice(deviceType, self, None, None)
+
+                        self.__lastWebreplUrl = port
+                        self.__lastDeviceType = deviceType
+                    else:
+                        return
 
             self.__interface = MicroPythonWebreplDeviceInterface(self)
 

eric ide

mercurial