296 |
296 |
297 self.__unknownPorts = [] |
297 self.__unknownPorts = [] |
298 self.__lastPort = None |
298 self.__lastPort = None |
299 self.__lastDeviceType = None |
299 self.__lastDeviceType = None |
300 |
300 |
|
301 self.__lastWebreplUrl = None |
|
302 |
301 self.__interface = None |
303 self.__interface = None |
302 self.__device = None |
304 self.__device = None |
303 self.__connected = False |
305 self.__connected = False |
304 self.__linkConnected = False |
306 self.__linkConnected = False |
305 self.__setConnected(False) |
307 self.__setConnected(False) |
426 index, "webrepl", self.DeviceInterfaceTypeRole |
428 index, "webrepl", self.DeviceInterfaceTypeRole |
427 ) |
429 ) |
428 self.deviceTypeComboBox.setItemData( |
430 self.deviceTypeComboBox.setItemData( |
429 index, webreplUrlsDict[name]["url"], self.DeviceWebreplUrlRole |
431 index, webreplUrlsDict[name]["url"], self.DeviceWebreplUrlRole |
430 ) |
432 ) |
431 if webreplUrlsDict: |
433 webreplMessage = ( |
432 webreplMessage = self.tr( |
434 self.tr( |
433 "\n%n WebREPL connection(s) defined.", "", len(webreplUrlsDict) |
435 "\n%n WebREPL connection(s) defined.", "", len(webreplUrlsDict) |
434 ) |
436 ) |
435 else: |
437 if webreplUrlsDict |
436 webreplMessage = "" |
438 else "" |
|
439 ) |
437 |
440 |
438 self.deviceInfoLabel.setText(supportedMessage + unknownMessage + webreplMessage) |
441 self.deviceInfoLabel.setText(supportedMessage + unknownMessage + webreplMessage) |
439 |
442 |
440 index = self.deviceTypeComboBox.findText( |
443 index = self.deviceTypeComboBox.findText( |
441 currentDevice, Qt.MatchFlag.MatchExactly |
444 currentDevice, Qt.MatchFlag.MatchExactly |
525 def __configureWebreplUrls(self): |
528 def __configureWebreplUrls(self): |
526 """ |
529 """ |
527 Private slot to configure the list of selectable WebREPL URLs. |
530 Private slot to configure the list of selectable WebREPL URLs. |
528 """ |
531 """ |
529 from .MicroPythonWebreplUrlsConfigDialog import ( |
532 from .MicroPythonWebreplUrlsConfigDialog import ( |
530 MicroPythonWebreplUrlsConfigDialog |
533 MicroPythonWebreplUrlsConfigDialog, |
531 ) |
534 ) |
532 |
535 |
533 webreplUrlsDict = Preferences.getMicroPython("WebreplUrls") |
536 webreplUrlsDict = Preferences.getMicroPython("WebreplUrls") |
534 dlg = MicroPythonWebreplUrlsConfigDialog(webreplUrlsDict) |
537 dlg = MicroPythonWebreplUrlsConfigDialog(webreplUrlsDict) |
535 if dlg.exec() == QDialog.DialogCode.Accepted: |
538 if dlg.exec() == QDialog.DialogCode.Accepted: |
806 """ |
809 """ |
807 Private slot to clear the REPL pane. |
810 Private slot to clear the REPL pane. |
808 """ |
811 """ |
809 self.replEdit.clear() |
812 self.replEdit.clear() |
810 if bool(self.__interface) and self.__interface.isConnected(): |
813 if bool(self.__interface) and self.__interface.isConnected(): |
811 self.__interface.write(b"\r") |
814 self.__interface.write(b"\r") |
812 |
815 |
813 @pyqtSlot() |
816 @pyqtSlot() |
814 def __paste(self, mode=QClipboard.Mode.Clipboard): |
817 def __paste(self, mode=QClipboard.Mode.Clipboard): |
815 """ |
818 """ |
816 Private slot to perform a paste operation. |
819 Private slot to perform a paste operation. |
889 elif key in (Qt.Key.Key_Return, Qt.Key.Key_Enter): |
892 elif key in (Qt.Key.Key_Return, Qt.Key.Key_Enter): |
890 tc = self.replEdit.textCursor() |
893 tc = self.replEdit.textCursor() |
891 tc.movePosition(QTextCursor.MoveOperation.EndOfLine) |
894 tc.movePosition(QTextCursor.MoveOperation.EndOfLine) |
892 self.replEdit.setTextCursor(tc) |
895 self.replEdit.setTextCursor(tc) |
893 if bool(self.__interface) and self.__interface.isConnected(): |
896 if bool(self.__interface) and self.__interface.isConnected(): |
894 self.__interface.write(msg) |
897 self.__interface.write(msg) |
895 return True |
898 return True |
896 else: |
899 else: |
897 # standard event processing |
900 # standard event processing |
898 return super().eventFilter(obj, evt) |
901 return super().eventFilter(obj, evt) |
899 |
902 |
1226 automatically |
1229 automatically |
1227 @type bool |
1230 @type bool |
1228 @exception ValueError raised to indicate an unsupported interface type |
1231 @exception ValueError raised to indicate an unsupported interface type |
1229 """ |
1232 """ |
1230 from .ConnectionSelectionDialog import ConnectionSelectionDialog |
1233 from .ConnectionSelectionDialog import ConnectionSelectionDialog |
|
1234 from .MicroPythonWebreplConnectionDialog import ( |
|
1235 MicroPythonWebreplConnectionDialog, |
|
1236 ) |
1231 |
1237 |
1232 interfaceType = ( |
1238 interfaceType = ( |
1233 self.deviceTypeComboBox.currentData(self.DeviceInterfaceTypeRole) |
1239 self.deviceTypeComboBox.currentData(self.DeviceInterfaceTypeRole) |
1234 or "serial" |
1240 or "serial" |
1235 ) # 'serial' is the default |
1241 ) # 'serial' is the default |
1261 |
1267 |
1262 self.__interface = MicroPythonSerialDeviceInterface(self) |
1268 self.__interface = MicroPythonSerialDeviceInterface(self) |
1263 elif interfaceType == "webrepl": |
1269 elif interfaceType == "webrepl": |
1264 port = self.deviceTypeComboBox.currentData(self.DeviceWebreplUrlRole) |
1270 port = self.deviceTypeComboBox.currentData(self.DeviceWebreplUrlRole) |
1265 if not port: |
1271 if not port: |
1266 # TODO: implement Webrepl parameter dialog (ws:// URL) |
1272 with EricOverridenCursor(): |
1267 return |
1273 dlg = MicroPythonWebreplConnectionDialog( |
|
1274 self.__lastWebreplUrl, self.__lastDeviceType |
|
1275 ) |
|
1276 if dlg.exec() == QDialog.DialogCode.Accepted: |
|
1277 port, deviceType = dlg.getWebreplConnectionParameters() |
|
1278 |
|
1279 self.deviceIconLabel.setPixmap( |
|
1280 Devices.getDeviceIcon(deviceType, False) |
|
1281 ) |
|
1282 self.__device = Devices.getDevice(deviceType, self, None, None) |
|
1283 |
|
1284 self.__lastWebreplUrl = port |
|
1285 self.__lastDeviceType = deviceType |
|
1286 else: |
|
1287 return |
1268 |
1288 |
1269 self.__interface = MicroPythonWebreplDeviceInterface(self) |
1289 self.__interface = MicroPythonWebreplDeviceInterface(self) |
1270 |
1290 |
1271 if self.__interface.connectToDevice(port): |
1291 if self.__interface.connectToDevice(port): |
1272 deviceResponding = self.__interface.probeDevice() |
1292 deviceResponding = self.__interface.probeDevice() |