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